Alpine Linux
Create bootable Alpine Linux images (Part 1)
Process described below use Tiny-Cloud [1] method introduced in AlpineLinux v3.18.0.
Most of the scripts below are extracted and or modified from AlpineLinux's wiki-pages, irc or mailing-lists.
How to create alpinelinux boot-able images for virtual or bare machines
Method 1 (RAM install)
Download the following iso file onto your hard-disk.
cd /home/user/
wget https://dl-cdn.alpinelinux.org/alpine/v3.18/releases/x86_64/alpine-extended-3.18.4-x86_64.iso
Create empty image using script given below.
#!/bin/sh
IMG=a.img
dd if=/dev/zero of=$IMG bs=1M count=1024
sudo parted --script $IMG mklabel msdos
sudo parted --script --align=optimal $IMG mkpart primary fat32 1MiB 100%
sudo parted --script $IMG set 1 boot on
Create alpinelinux image using script given below.
#!/bin/sh
echo "hostname: alpine-vm" > meta-data
cat >user-data<<EOF
#alpine-config
apk:
repositories:
- base_url: https://dl-cdn.alpinelinux.org/alpine/
repos: ["main", "community"]
runcmd:
- rm /etc/runlevels/*/tiny-cloud*
- lbu include /root/.ssh /home/alpine/.ssh
- rc-update add cgroups boot
- rc-update add machine-id boot
- rc-update add networking boot
- mkfs.vfat /dev/sda1
- setup-bootable -v /media/cdrom /dev/sda1
- poweroff
EOF
xorrisofs -output seed.iso -volid cidata -joliet -rock meta-data user-data
qemu-system-x86_64 -enable-kvm -m 1024 -hda a.img -hdb seed.iso \
-cdrom alpine-extended-3.18.4-x86_64.iso -boot d
Now lets test the image created using qemu.
qemu-system-x86_64 -enable-kvm -m 1024 -hda a.img
Method 2 (SYS install)
Download the following iso file onto your hard-disk.
cd /home/user/
wget https://dl-cdn.alpinelinux.org/alpine/v3.18/releases/x86_64/alpine-extended-3.18.4-x86_64.iso
Create alpinelinux image using script given below.
#!/bin/sh
echo "hostname: alpine-vm" > meta-data
cat >user-data<<EOF
#alpine-config
apk:
repositories:
- base_url: https://dl-cdn.alpinelinux.org/alpine/
repos: ["main", "community"]
runcmd:
- rm /etc/runlevels/*/tiny-cloud*
- lbu include /root/.ssh /home/alpine/.ssh
- rc-update add cgroups boot
- rc-update add machine-id boot
- rc-update add networking boot
- ERASE_DISKS=/dev/sda setup-disk -s 0 -m sys /dev/sda
- poweroff
EOF
xorrisofs -output seed.iso -volid cidata -joliet -rock meta-data user-data
qemu-img create a.img 1G
# use alpine-extended-3.18.4-x86_64.iso as downloaded above.
qemu-system-x86_64 -enable-kvm -m 1024 -hda a.img -hdb seed.iso \
-cdrom alpine-extended-3.18.4-x86_64.iso -boot d
Now lets test the image created using qemu.
qemu-system-x86_64 -enable-kvm -m 1024 -hda a.img
WIP (work in progress)
- TODO:
Method 3 (DATA install)
Author
V.Krishn
Resources