Add gen_disks.sh script to modify virtual drives
We expect the repo root to contain pre-installed Alpine 3.15.4 in raw drive file 'dummydisk.img'. This then gets copied to output/<machine>/disk.img and the generated files are put into it in order to be used. Beware, this uses hardcoded paths and expects specific disk layout. This relies on how the installation formatted the disk. While the installation procedure is not documented anywhere, it is in essence default setup of Alpine Linux, with minimal tweaks that should not affect behaviour of routing (but still impede reproducibility). The only major difference from default settings is BIRD being pre-installed. Unfortunately, using loop devices and mounting requires root privileges (as far as I know). It should be possible to use some other way, but this is the simplest I know at the moment.master
parent
a1a73c8cd5
commit
ac5850d95e
@ -0,0 +1,30 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Run as root.
|
||||||
|
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
mount="$(mktemp --directory)"
|
||||||
|
trap "rmdir $mount" EXIT
|
||||||
|
|
||||||
|
modprobe loop
|
||||||
|
|
||||||
|
origdir="$(pwd)"
|
||||||
|
|
||||||
|
for dir in output/*/; do
|
||||||
|
pushd $dir
|
||||||
|
cp "$origdir/dummydisk.img" "./disk.img"
|
||||||
|
loop="$(losetup --partscan --show --find ./disk.img)"
|
||||||
|
mount -t ext4 "${loop}p3" "$mount"
|
||||||
|
while read what where; do
|
||||||
|
cp "$what" "$mount$where"
|
||||||
|
done << END
|
||||||
|
bird.conf /etc/bird.conf
|
||||||
|
interfaces /etc/network/interfaces
|
||||||
|
hosts /etc/hosts
|
||||||
|
hostname /etc/hostname
|
||||||
|
END
|
||||||
|
umount "$mount"
|
||||||
|
losetup -d "$loop"
|
||||||
|
popd
|
||||||
|
done
|
Loading…
Reference in New Issue