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


Edit - History - Print - Recent Changes - Search
Page last modified on November 10, 2024, at 07:45 PM