Bootstrapping Alpine Linux: Difference between revisions
Msleaveamix (talk | contribs) (removed useless unpacking, update apk-tool-static to apk binary, update URL, add option to "boot into a live ISO") |
Prabuanand (talk | contribs) (fixed wikitags, heading levels and changed some headings) |
||
(3 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
This page provides the instructions to bootstrap Alpine Linux on any [https://en.wikipedia.org/wiki/Virtual_private_server VPS]. | |||
== Prerequisite == | |||
Download apk binary file for your architecture or boot from an Alpine live ISO. {{Cmd|$ wget https://gitlab.alpinelinux.org/api/v4/projects/5/packages/generic/v2.14.6/x86_64/apk.static}} | |||
Assuming your alpine rootfs is mounted in '''/tmp/target''' and you downloaded apk binary (not using the live ISO). | |||
== Installation == | |||
You may want to replace "latest-stable" from the URL by a specific version of Alpine (e.g. v3.20, v3.21). | |||
<code>sudo ./apk.static --arch $(arch) -X https://dl-cdn.alpinelinux.org/alpine/latest-stable/main/ -U --allow-untrusted --root /tmp/target --initdb add alpine-base</code> | |||
<code>sudo . | |||
* edit /tmp/target/etc/fstab | * edit /tmp/target/etc/fstab | ||
Line 55: | Line 49: | ||
</pre> | </pre> | ||
== Bootloader == | |||
If you have bootstrapped Alpine Linux from an existing system in a different partition and intend to boot into it, you should always include the root filesystem type (rootfstype) in the kernel parameter (bootloader option), since by default kernel does not automatically load any filesystem modules for root partition, unless specified. That way mount will not complain about being unable to mount root partition on /sysroot. | If you have bootstrapped Alpine Linux from an existing system in a different partition and intend to boot into it, you should always include the root filesystem type (rootfstype) in the kernel parameter (bootloader option), since by default kernel does not automatically load any filesystem modules for root partition, unless specified. That way mount will not complain about being unable to mount root partition on /sysroot. | ||
Line 64: | Line 57: | ||
<code>root=UUID=AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE rw rootfstype=ext4 vfat</code> | <code>root=UUID=AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE rw rootfstype=ext4 vfat</code> | ||
== | == See also == | ||
* [https://www.linode.com/docs/tools-reference/custom-kernels-distros/running-a-custom-linux-distro-on-a-linode-vps Running a Custom Linux Distribution on a Linode] | * [https://www.linode.com/docs/tools-reference/custom-kernels-distros/running-a-custom-linux-distro-on-a-linode-vps Running a Custom Linux Distribution on a Linode] | ||
* [https://www.linode.com/docs/tools-reference/custom-kernels-distros/run-a-custom-compiled-kernel-with-pvgrub Run a Custom Compiled Kernel with PV-GRUB] | * [https://www.linode.com/docs/tools-reference/custom-kernels-distros/run-a-custom-compiled-kernel-with-pvgrub Run a Custom Compiled Kernel with PV-GRUB] |
Latest revision as of 13:31, 23 February 2025
This page provides the instructions to bootstrap Alpine Linux on any VPS.
Prerequisite
Download apk binary file for your architecture or boot from an Alpine live ISO.
$ wget https://gitlab.alpinelinux.org/api/v4/projects/5/packages/generic/v2.14.6/x86_64/apk.static
Assuming your alpine rootfs is mounted in /tmp/target and you downloaded apk binary (not using the live ISO).
Installation
You may want to replace "latest-stable" from the URL by a specific version of Alpine (e.g. v3.20, v3.21).
sudo ./apk.static --arch $(arch) -X https://dl-cdn.alpinelinux.org/alpine/latest-stable/main/ -U --allow-untrusted --root /tmp/target --initdb add alpine-base
- edit /tmp/target/etc/fstab
- edit /tmp/target/etc/inittab
- edit /tmp/target/etc/resolv.conf
- mount proc/sys/dev
for a in proc sys dev; do mount -o bind /$a /tmp/target/$a; done
- chroot into your new installation
chroot /tmp/target /bin/sh
- setup hostname
setup-hostname
- setup network
setup-interfaces
- setup repos
setup-apkrepos -f
- add a few base packages
apk update apk add linux-lts linux-firmware-none acpi mkinitfs
- add services to boot
rc-update add acpid default rc-update add bootmisc boot rc-update add crond default rc-update add devfs sysinit rc-update add dmesg sysinit rc-update add hostname boot rc-update add hwclock boot rc-update add hwdrivers sysinit rc-update add killprocs shutdown rc-update add mdev sysinit rc-update add modules boot rc-update add mount-ro shutdown rc-update add networking boot rc-update add savecache shutdown rc-update add seedrng boot rc-update add swap boot
Bootloader
If you have bootstrapped Alpine Linux from an existing system in a different partition and intend to boot into it, you should always include the root filesystem type (rootfstype) in the kernel parameter (bootloader option), since by default kernel does not automatically load any filesystem modules for root partition, unless specified. That way mount will not complain about being unable to mount root partition on /sysroot.
Example bootloader option:
root=UUID=AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE rw rootfstype=ext4 vfat