41 lines
822 B
Bash
Executable File
41 lines
822 B
Bash
Executable File
#!/bin/sh -e
|
|
|
|
export PATH=/usr/sbin:/usr/bin:/sbin:/bin
|
|
|
|
# shellcheck disable=SC2046
|
|
set -- $(cat /proc/cmdline)
|
|
while [ $# -ge 1 ]; do
|
|
case "$1" in
|
|
root=nbd:*)
|
|
arg=${1#*:}
|
|
name=${arg#*:}
|
|
host=${arg%:*}
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
mkdir -p /proc /run /sys
|
|
mount -t sysfs sysfs /sys
|
|
mount -t proc proc /proc
|
|
mount -t tmpfs tmpfs /run
|
|
|
|
for path in /sys/class/net/*; do
|
|
[ -e "${path}" ] || continue
|
|
ip link set "${path##*/}" up
|
|
done
|
|
sleep 5
|
|
udhcpc -q
|
|
|
|
@bd-client -N "${name}" -R -p "${host}" /dev/nbd0
|
|
mkdir -p /sysroot
|
|
mount -o ro -t squashfs /dev/nbd0 /sysroot || nbd-client -c /dev/nbd0
|
|
|
|
cd /sysroot
|
|
mount --move /proc /sysroot/proc
|
|
mount --move /sys /sysroot/sys
|
|
mount --move /dev /sysroot/dev
|
|
mount --move /run /sysroot/run
|
|
|
|
exec switch_root /sysroot /lib/systemd/systemd
|