add example (but useful) dhcp initrd

This commit is contained in:
Mikaël Cluseau
2026-06-05 14:10:37 +02:00
parent acb8f28ab7
commit 6a8805346f
2 changed files with 99 additions and 0 deletions
+62
View File
@@ -0,0 +1,62 @@
#! /bin/bash
base_initrd=dist/initrd
flavor=dhcp
dir=tmp/$flavor-initrd
dist=dist/$flavor
uki=$dist/bootx64.efi
linux_v=6.18.34
set -ex
mkdir -p tmp/dl $dist
linux=tmp/dl/linux-$linux_v
modules=tmp/dl/modules-$linux_v
[ -e $linux ] || curl -o $linux https://dkl.novit.io/dist/kernels/6.18.34
[ -e $modules ] || curl -o $modules https://dkl.novit.io/dist/layers/modules/6.18.34 # TODO .erofs
rm -fr $dir
mkdir $dir
cpio --quiet --extract --file $base_initrd --directory $dir
cp -rv $flavor/. $dir
cp $modules $dir/modules.fs
(cd $dir && find * |cpio --create -H newc -R 0:0) >$dir.cpio
if cpio -tF $dir.cpio 2>&1 |grep bytes.of.junk; then echo "bad cpio archive"; exit 1; fi
zstd -12 -T0 -vf $dir.cpio &&
mv $dir.cpio.zst $dist/initrd
cp $linux $dist/vmlinuz
ukify build --output $uki --os-release "Direktil DHCP" \
--linux $linux --initrd $dist/initrd --cmdline "console=tty0 console=ttyS0,115200"
MB=$(( 2**20 ))
sz=$(( ( $(stat -c %s $uki) + MB ) / MB + 2 ))
efi=$dist/efi.img
if [ -e $efi ]; then rm $efi; fi
truncate -s ${sz}M $efi
sgdisk -n 1:2048:0 -t 1:ef00 -c 1:"EFI System" $efi
offset=$(( 2048 * 512 ))
export MTOOLSRC=$(mktemp)
trap "rm -f $MTOOLSRC" exit
echo "drive e: file=\"$efi\" offset=$offset" >$MTOOLSRC
args="-i $efi@@$offset"
mformat -F e:
mmd e:EFI e:EFI/BOOT
mcopy $uki e:EFI/BOOT/BOOTX64.EFI
+37
View File
@@ -0,0 +1,37 @@
---
anti_phishing_code: "direktil<3"
modules: /modules.fs
auths:
- name: adm1@novit
sshKey: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICkpbU6sf4t0f6XAv9DuW3XH5iLM0AI5rc8PT2jwea1N
- name: adm2@novit
sshKey: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILIomzqVAIqb7BedauhAo2VgbLqme5Jx/vjGUqZLoJqF
ssh:
listen: "[::]:22"
networks:
- name: loopback
interfaces: [ { var: iface, n: 1, udev: !eq [INTERFACE, lo] } ]
script: |
ip a add 127.0.0.1/8 dev lo
ip a add ::1/128 dev lo
ip li set lo up
- name: main
interfaces:
- var: iface
n: -1
udev: !has ID_NET_NAME_MAC
script: |
ip link add main type bond mode active-backup
for l in $ifaces; do
ip link set $l master main
ip link set $l up
done
ip link set main up
udhcpc -b -i main
bootstrap:
dev: /dev/storage/bootstrap