diff --git a/creator_functions.sh b/creator_functions.sh index 32755b5..2f133ff 100644 --- a/creator_functions.sh +++ b/creator_functions.sh @@ -18,21 +18,22 @@ echo_red() { create_dirs() { rm -rf "$ROOT" 2>/dev/null - mkdir -p "$ROOT" "${ROOT}/usr/bin/" - mkdir -p ${ROOT}/usr/bin - mkdir -p ${ROOT}/usr/lib - mkdir -p ${ROOT}/dev - mkdir -p ${ROOT}/proc - mkdir -p ${ROOT}/run - mkdir -p ${ROOT}/tmp - mkdir -p ${ROOT}/var - ln -s usr/bin ${ROOT}/bin - ln -s usr/bin ${ROOT}/sbin - ln -s usr/lib ${ROOT}/lib - ln -s usr/lib ${ROOT}/lib64 - ln -s lib ${ROOT}/usr/lib64 - ln -s bin ${ROOT}/usr/sbin - ln -s ../run ${ROOT}/var/run + mkdir -p "${ROOT}/usr/bin/" + mkdir -p "${ROOT}/usr/bin" + mkdir -p "${ROOT}/usr/lib" + mkdir -p "${ROOT}/dev" + mkdir -p "${ROOT}/etc" + mkdir -p "${ROOT}/proc" + mkdir -p "${ROOT}/run" + mkdir -p "${ROOT}/tmp" + mkdir -p "${ROOT}/var" + ln -s usr/bin "${ROOT}/bin" + ln -s usr/bin "${ROOT}/sbin" + ln -s usr/lib "${ROOT}/lib" + ln -s usr/lib "${ROOT}/lib64" + ln -s lib "${ROOT}/usr/lib64" + ln -s bin "${ROOT}/usr/sbin" + ln -s ../run "${ROOT}/var/run" } # Installs a library. Expects absolute path. diff --git a/init.sh b/init.sh index a5745ef..8578f1e 100755 --- a/init.sh +++ b/init.sh @@ -2,5 +2,6 @@ source /init_functions.sh create_mounts load_modules +setup_network mount_root exec switch_root /mnt /sbin/init "$@" diff --git a/init_functions.sh b/init_functions.sh index 3e50d92..35eb1d3 100644 --- a/init_functions.sh +++ b/init_functions.sh @@ -33,6 +33,25 @@ create_mounts() { ln -sfT /proc/self/fd/2 /dev/stderr } +# expects kernel param in this format: detee_net=192.168.122.140_24_192.168.122.1_1.1.1.1 +setup_network() { + local settings='' ip_addr='' mask='' cidr='' gateway='' nameserver='' + settings=$(cat /proc/cmdline | grep -oE 'detee_net=[0-9a-z\_\:\.]+' | cut -d '=' -f2) + # TODO: replace with exit 0 when you are ready to force a kernel panic + [[ -z "$settings" ]] && return 0 + settings="${settings#detee_net=}" + ip_addr="$( echo ${settings} | cut -d'_' -f1 )" + mask="$( echo ${settings} | cut -d'_' -f2 )" + cidr="${ip_addr}/${mask}" + gateway="$( echo ${settings} | cut -d'_' -f4 )" + nameserver="$( echo ${settings} | cut -d'_' -f5 )" + + ip addr add $cidr dev eth0 + ip link set eth0 up + ip route add default via $gateway + echo nameserver $nameserver > /etc/resolv.conf +} + mount_root() { mkdir /mnt mount /dev/vda3 /mnt