Bootstrapping Alpine Linux: Difference between revisions
(bootstrap using apk-tools-static) |
m (→References: Remove red wikilink, remove wikilink to an article that is currently obsolete (but it could be updated and readded here....)) |
||
(12 intermediate revisions by 6 users not shown) | |||
Line 8: | Line 8: | ||
=== Prepare === | === Prepare === | ||
<ol> | <ol> | ||
<li>Download apk-tools-static for your architecture.</li> | <li>Download apk-tools-static for your architecture.</li> | ||
<pre>wget | <pre>wget https://gitlab.alpinelinux.org/api/v4/projects/5/packages/generic/v2.14.0/x86_64/apk.static</pre> | ||
<li>Unpack .apk</li> | <li>Unpack .apk</li> | ||
Line 20: | Line 17: | ||
=== Install === | === Install === | ||
<code>sudo ./sbin/apk.static --arch $ | |||
Assuming your alpine rootfs is mounted in '''/tmp/target''' | |||
<code>sudo ./sbin/apk.static --arch $(arch) -X http://dl-cdn.alpinelinux.org/alpine/latest-stable/main/ -U --allow-untrusted --root /tmp/target --initdb add alpine-base</code> | |||
* edit /tmp/target/etc/fstab | |||
* edit /tmp/target/etc/inittab | |||
* edit /tmp/target/etc/resolv.conf | |||
* mount proc/sys/dev | |||
<pre>for a in proc sys dev; do mount -o bind /$a /tmp/target/$a; done</pre> | |||
* chroot into your new installation | |||
<pre>chroot /tmp/target /bin/sh</pre> | |||
* setup hostname | |||
<pre>setup-hostname</pre> | |||
* setup network | |||
<pre>setup-interfaces</pre> | |||
* setup repos | |||
<pre>setup-apkrepos -f</pre> | |||
* add a few base packages | |||
<pre>apk update | |||
apk add linux-lts linux-firmware-none acpi mkinitfs</pre> | |||
* add services to boot | |||
<pre> | |||
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 | |||
</pre> | |||
=== Bootloader === | === Bootloader === | ||
=== Notes === | |||
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: | |||
<code>root=UUID=AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE rw rootfstype=ext4 vfat</code> | |||
== References == | == References == | ||
Line 30: | Line 72: | ||
* [[Replacing non-Alpine Linux with Alpine remotely]] | * [[Replacing non-Alpine Linux with Alpine remotely]] | ||
* [[Install Alpine on Amazon EC2]] | * [[Install Alpine on Amazon EC2]] | ||
* [[Alpine setup scripts]] | * [[Alpine setup scripts]] | ||
* [ | * [https://serverfault.com/questions/98950/how-do-i-chain-boot-from-grub-to-syslinux How do I chain boot from grub to syslinux?] | ||
* [http://uggedal.com/journal/alpine-linux-on-linode/ Alpine Linux on Linode] | * [https://web.archive.org/web/20151008232205/http://uggedal.com/journal/alpine-linux-on-linode/ Alpine Linux on Linode] | ||
* [[Installing Alpine Linux in a chroot]] | * [[Installing Alpine Linux in a chroot]] | ||
[[Category:Installation]] | [[Category:Installation]] | ||
[[Category:Virtualization]] | [[Category:Virtualization]] |
Latest revision as of 09:30, 13 January 2024
VPS
This section is to provide a means to bootstrap Alpine Linux on any VPS.
Process
Prepare
- Download apk-tools-static for your architecture.
- Unpack .apk
wget https://gitlab.alpinelinux.org/api/v4/projects/5/packages/generic/v2.14.0/x86_64/apk.static
tar zxf apk-tools-static-*.apk
Install
Assuming your alpine rootfs is mounted in /tmp/target
sudo ./sbin/apk.static --arch $(arch) -X http://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
Notes
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