Netbooting Alpine Linux on RAM with iSCSI persisted Storage
Requirements
- iSCSI Server
- NFS Server
- HTTP Server running on same path as NFS Server (Port 6007)
Download Alpine Netboot Images and put on root of NFS and HTTP: vmlinuz-lts, initramfs-lts, modloop-lts Also configure router/DHCP Server to give out iPXE (possibly iPXE compiled with custom script to launch :6007/boot.ipxe)
Guide
- Use iPXE script:
set local_address http://<IP>:6007
set alpine_repo http://dl-cdn.alpinelinux.org/alpine/v3.21/main
kernel ${local_address}/vmlinuz-lts ip=dhcp alpine_repo=${alpine_repo} initrd=initramfs-lts modloop=${local_address}/modloop-lts pkgs=open-iscsi
initrd ${local_address}/initramfs-lts
boot
- setup-alpine, bei Disks Ctrl+C
- apk add nano
- nano /etc/lbu/lbu.conf und BACKUP_DIR=/boot
- add /boot NFS entry to boot server:
- apk add nfs-utils
- 10.10.13.236:/mnt/vault/boot /boot nfs4 rw,_netdev 0 0
- rc-update add nfsmount
- rc-service nfsmount start
- lbu ci
- Final iPXE script:
set local_address http://<ip>:6007
set alpine_repo http://dl-cdn.alpinelinux.org/alpine/v3.21/main
set apkovl ${local_address}/<hostname>.apkovl.tar.gz
kernel ${local_address}/vmlinuz-lts ip=dhcp apkovl=${apkovl} alpine_repo=${alpine_repo} initrd=initramfs-lts modloop=${local_address}/modloop-lts pkgs=open-iscsi
initrd ${local_address}/initramfs-lts
boot
- apk add open-iscsi
- edit /etc/iscsi/initiatorname.iscsi
- rc-service iscsid start
- rc-update add iscsid boot
- nano /etc/init.d/mount-after-iscsi
#!/sbin/openrc-run
description="Mount all filesystems after iSCSI login"
depend() {
need iscsid
after iscsid
before docker # put any services that require the iSCSI mount here
}
start() {
ebegin "Running mount -a"
mount -a
eend $?
}
chmod +x /etc/init.d/mount-after-iscsi
rc-update add mount-after-iscsi
lbu inc /etc/init.d/mount-after-iscsi
iscsiadm --mode discovery --type sendtargets --portal IP_OF_TARGET
iscsiadm --mode node --targetname NAME_OF_TARGET --portal IP_OF_TARGET --login
iscsiadm -m node -T NAME_OF_TARGET -p IP_OF_TARGET --op update -n node.conn[0].startup -v automatic
lbu inc /var/lib/iscsi
lbu ci
Partition the iSCSI disk, add mount points to fstab, lbu ci and reboot