Artifactory/tilo/initrd.sh
misthios aa99d146b8
Some checks failed
build ipxe / make ipxe (push) Failing after 26s
tilo: build the system
2024-03-12 13:08:14 +01:00

64 lines
1.7 KiB
Bash
Executable File

#!/bin/sh
set -e
#extract the version of the compiled busybox :)
busybox_ver="$(find ./src/ -type d -maxdepth 1 -name "busy*" | cut -d- -f2)"
mkdir initrd
cd initrd
mkdir -p bin dev proc sys etc usr
#Add busybox programs
cd bin
cp ../../src/busybox-$busybox_ver/busybox ./
for prog in $(./busybox --list); do
ln -s /bin/busybox ./$prog
done
cd ..
#Create initial init
cat <<EOF >init
#!/bin/sh
mount -t sysfs sysfs /sys
mount -t proc proc /proc
mount -t devtmpfs udev /dev
exec /bin/init
clear
EOF
#Create busybox initrd
echo "tty1::respawn:-/bin/sh" > ./etc/inittab
#Create resolv.conf
echo "nameserver 1.1.1.1" > ./etc/resolv.conf
#Add curl + certificates for tls support
#Add static curl binary
ver="$(curl -s "https://api.github.com/repos/stunnel/static-curl/tags" | jq -r '.[0].name' | tr "_" ".")"
rel="$(curl -s "https://api.github.com/repos/stunnel/static-curl/releases" | jq -r '.[0].name' | tr "_" ".")"
wget "https://github.com/stunnel/static-curl/releases/download/$rel/curl-linux-x86_64-musl-$ver.tar.xz"
tar xf curl-linux-x86_64-musl-$ver.tar.xz -C ./bin/
rm curl-linux-x86_64-musl-$ver.tar.xz
#Add certificates
##very ugly way to extract the certs, but hey it just works :)
container="$(podman run -d alpine:edge /bin/sh -c "apk add ca-certificates && update-ca-certificates && sleep 90")"
sleep 10 #make sure that the cmds are finished (except sleep ofc)
podman cp $container:/etc/ssl/ ./etc/
podman container rm -f $container
#give perms to files, #todo: find a better way someday
#prevents errors like "can't open /dev/tty1: no such file "
chmod -R 777 .
#Add all the files to a img
find . | cpio -o -H newc > ../initrd.img
cd ..