From fe1be18c425a9f47013950b004819b7321550616 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Wed, 29 Jan 2014 18:40:30 +0100 Subject: [rfs-stage32] Add early trigger script for network targets This service/script will try to trigger the network targets at an early point in time, if network setup succeeded in stage 31 (hostname, dns, default gateway) --- .../systemd/system/early-network-triggers.service | 10 +++++++++ .../early-network-triggers.service | 1 + .../openslx/scripts/systemd-early_network_triggers | 26 ++++++++++++++++++++++ 3 files changed, 37 insertions(+) create mode 100644 remote/rootfs/rootfs-stage32/data/etc/systemd/system/early-network-triggers.service create mode 120000 remote/rootfs/rootfs-stage32/data/etc/systemd/system/sysinit.target.wants/early-network-triggers.service create mode 100755 remote/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-early_network_triggers (limited to 'remote/rootfs') diff --git a/remote/rootfs/rootfs-stage32/data/etc/systemd/system/early-network-triggers.service b/remote/rootfs/rootfs-stage32/data/etc/systemd/system/early-network-triggers.service new file mode 100644 index 00000000..7ed6e2a6 --- /dev/null +++ b/remote/rootfs/rootfs-stage32/data/etc/systemd/system/early-network-triggers.service @@ -0,0 +1,10 @@ +# This will trigger network.target etc. at an early point, +# if network setup happened in stage31 (dhcp...) +[Unit] +Description=Trigger network targets early +DefaultDependencies=no +Before=sysinit.target + +[Service] +Type=oneshot +ExecStart=/opt/openslx/scripts/systemd-early_network_triggers diff --git a/remote/rootfs/rootfs-stage32/data/etc/systemd/system/sysinit.target.wants/early-network-triggers.service b/remote/rootfs/rootfs-stage32/data/etc/systemd/system/sysinit.target.wants/early-network-triggers.service new file mode 120000 index 00000000..8aec0a6d --- /dev/null +++ b/remote/rootfs/rootfs-stage32/data/etc/systemd/system/sysinit.target.wants/early-network-triggers.service @@ -0,0 +1 @@ +../early-network-triggers.service \ No newline at end of file diff --git a/remote/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-early_network_triggers b/remote/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-early_network_triggers new file mode 100755 index 00000000..bc471116 --- /dev/null +++ b/remote/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-early_network_triggers @@ -0,0 +1,26 @@ +#!/bin/ash + +# This script will trigger several network targets if +# applicable at an early point. +# This happens if dhcp/network setup was successful in stage31 + +# Main interface +BRIDGE="br0" + +if [ ! -e "/sys/class/net/${BRIDGE}/operstate" -o "x$(cat "/sys/class/net/${BRIDGE}/operstate")" == "xup" ] && [ -e "/opt/openslx/uniontmp/etc/hostname" -o -e "/opt/openslx/uniontmp/etc/resolv.conf" ]; then + touch "/run/dhcpc/network-ready" + systemctl start network.target & +fi + +if [ -s "/etc/resolv.conf" ] && grep -q "^nameserver" "/etc/resolv.conf"; then + touch "/run/dhcpc/dns-ready" + systemctl start network-dns.target & +fi + +if route -n | grep -q -E '^0\.0\.0\.0.*U.*G'; then + touch "/run/dhcpc/routing-ready" + systemctl start network-gateway.target & +fi + +exit 0 + -- cgit v1.2.3-55-g7522 From b77ffba65617c4001e85a31dc9673d0abe481fb8 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Wed, 29 Jan 2014 21:10:04 +0100 Subject: Trigger network target as soon as possible if network/dhcp has been done in stage31 --- .../dhcpc-busybox/data/etc/systemd/system/dhcpc@.service | 1 + .../system/sysinit.target.wants/udhcpc@br0.service | 1 - .../data/etc/systemd/system/udhcpc@.service | 7 ++----- .../dhcpc-busybox/data/etc/tmpfiles.d/udhcpc.conf | 1 + .../data/opt/openslx/scripts/udhcpc-openslx | 16 ++++++++-------- .../data/etc/systemd/system/network-interface@.service | 4 ++-- .../systemd/data/etc/systemd/system/network.target | 13 ------------- .../systemd/data/usr/lib/systemd/system/network.target | 3 +++ .../systemd/data/usr/lib/udev/rules.d/99-systemd.rules | 7 ++++--- remote/rootfs/rootfs-stage31/data/inc/setup_network | 2 ++ .../etc/systemd/system/early-network-triggers.service | 2 ++ .../data/etc/systemd/system/network-dns.target | 2 +- .../data/etc/systemd/system/network-gateway.target | 3 ++- .../data/etc/systemd/system/ntpdate.service | 1 - .../rootfs-stage32/data/etc/tmpfiles.d/network.conf | 1 + .../opt/openslx/scripts/systemd-early_network_triggers | 6 +++--- 16 files changed, 32 insertions(+), 38 deletions(-) create mode 120000 remote/modules/dhcpc-busybox/data/etc/systemd/system/dhcpc@.service delete mode 120000 remote/modules/dhcpc-busybox/data/etc/systemd/system/sysinit.target.wants/udhcpc@br0.service create mode 100644 remote/modules/dhcpc-busybox/data/etc/tmpfiles.d/udhcpc.conf delete mode 100644 remote/modules/systemd/data/etc/systemd/system/network.target create mode 100644 remote/rootfs/rootfs-stage32/data/etc/tmpfiles.d/network.conf (limited to 'remote/rootfs') diff --git a/remote/modules/dhcpc-busybox/data/etc/systemd/system/dhcpc@.service b/remote/modules/dhcpc-busybox/data/etc/systemd/system/dhcpc@.service new file mode 120000 index 00000000..a2e7487d --- /dev/null +++ b/remote/modules/dhcpc-busybox/data/etc/systemd/system/dhcpc@.service @@ -0,0 +1 @@ +udhcpc@.service \ No newline at end of file diff --git a/remote/modules/dhcpc-busybox/data/etc/systemd/system/sysinit.target.wants/udhcpc@br0.service b/remote/modules/dhcpc-busybox/data/etc/systemd/system/sysinit.target.wants/udhcpc@br0.service deleted file mode 120000 index dff66b14..00000000 --- a/remote/modules/dhcpc-busybox/data/etc/systemd/system/sysinit.target.wants/udhcpc@br0.service +++ /dev/null @@ -1 +0,0 @@ -../udhcpc@.service \ No newline at end of file diff --git a/remote/modules/dhcpc-busybox/data/etc/systemd/system/udhcpc@.service b/remote/modules/dhcpc-busybox/data/etc/systemd/system/udhcpc@.service index 6547de5b..9226f00c 100644 --- a/remote/modules/dhcpc-busybox/data/etc/systemd/system/udhcpc@.service +++ b/remote/modules/dhcpc-busybox/data/etc/systemd/system/udhcpc@.service @@ -1,7 +1,6 @@ [Unit] -Description=DHCP Client -DefaultDependencies=no -Before=sysinit.target +Description=DHCP Client for %i +After=systemd-tmpfiles-setup.service [Service] Type=forking @@ -9,5 +8,3 @@ PIDFile=/run/udhcpc/udhcpc.%I.pid ExecStart=/opt/openslx/scripts/systemd-udhcpc++ %I ExecStopPost=/bin/rm /run/udhcpc/udhcpc.%I.pid -[Install] -WantedBy=multi-user.target diff --git a/remote/modules/dhcpc-busybox/data/etc/tmpfiles.d/udhcpc.conf b/remote/modules/dhcpc-busybox/data/etc/tmpfiles.d/udhcpc.conf new file mode 100644 index 00000000..3f83df3b --- /dev/null +++ b/remote/modules/dhcpc-busybox/data/etc/tmpfiles.d/udhcpc.conf @@ -0,0 +1 @@ +D /run/udhcpc 0755 root root diff --git a/remote/modules/dhcpc-busybox/data/opt/openslx/scripts/udhcpc-openslx b/remote/modules/dhcpc-busybox/data/opt/openslx/scripts/udhcpc-openslx index 546750b9..e43afb33 100755 --- a/remote/modules/dhcpc-busybox/data/opt/openslx/scripts/udhcpc-openslx +++ b/remote/modules/dhcpc-busybox/data/opt/openslx/scripts/udhcpc-openslx @@ -20,12 +20,12 @@ . /opt/openslx/config RESOLV_CONF="/etc/resolv.conf" -THIS_RESOLV="/run/dhcpc/${interface}.resolv" +THIS_RESOLV="/run/network/${interface}.resolv" rebuild_resolv_conf () { # Maybe make this smarter some time, if anyone is using client's that are on multiple networks at once etc... # This is a little braindead but should work most of the time - sort -u /run/dhcpc/*.resolv > "$RESOLV_CONF" 2> /dev/null + sort -u /run/network/*.resolv > "$RESOLV_CONF" 2> /dev/null } escape_search() { @@ -96,7 +96,7 @@ case "$1" in sed -i "s/^\(SLX_PXE_CLIENT_IP=\).*$/\1'$ip'/" /opt/openslx/config # Only if network is not ready yet - if [ ! -e "/run/dhcpc/network-ready" ]; then + if [ ! -e "/run/network/network-ready" ]; then # Update hostname if [ -z "$dns_host" ]; then # fallback to what the dhcp told us @@ -130,7 +130,7 @@ case "$1" in fi # Update /etc/issue for proper spacing /opt/openslx/scripts/openslx-create_issue - touch "/run/dhcpc/network-ready" + touch "/run/network/network-ready" # Mark network target as reached systemctl start network.target & fi # end "network not ready yet" @@ -158,16 +158,16 @@ case "$1" in sed -i -r '/^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\s*$/d' /etc/hosts # "dns ready" target - if [ -n "$dns" ] && [ ! -e "/run/dhcpc/dns-ready" ]; then - touch "/run/dhcpc/dns-ready" + if [ -n "$dns" ] && [ ! -e "/run/network/dns-ready" ]; then + touch "/run/network/dns-ready" # Write to openslx-config echo "# Config written by openslx-dhcp-script (2)" >> /opt/openslx/config echo "SLX_DNS='$dns'" >> /opt/openslx/config systemctl start network-dns.target & fi # "default route exists" target - if [ -n "$router" ] && [ ! -e "/run/dhcpc/routing-ready" ]; then - touch "/run/dhcpc/routing-ready" + if [ -n "$router" ] && [ ! -e "/run/network/gateway-ready" ]; then + touch "/run/network/gateway-ready" # Write to openslx-config echo "# Config written by openslx-dhcp-script (3)" >> /opt/openslx/config echo "SLX_DNS='$dns'" >> /opt/openslx/config diff --git a/remote/modules/systemd/data/etc/systemd/system/network-interface@.service b/remote/modules/systemd/data/etc/systemd/system/network-interface@.service index 73cc6239..ea9cc56e 100644 --- a/remote/modules/systemd/data/etc/systemd/system/network-interface@.service +++ b/remote/modules/systemd/data/etc/systemd/system/network-interface@.service @@ -1,7 +1,7 @@ [Unit] Description=Brings interface %i up -Wants=udhcpc@%i.service -Before=udhcpc@%i.service +Wants=dhcpc@%i.service +Before=dhcpc@%i.service [Service] Type=simple diff --git a/remote/modules/systemd/data/etc/systemd/system/network.target b/remote/modules/systemd/data/etc/systemd/system/network.target deleted file mode 100644 index 0bc2a410..00000000 --- a/remote/modules/systemd/data/etc/systemd/system/network.target +++ /dev/null @@ -1,13 +0,0 @@ -# This file is part of systemd. -# -# systemd is free software; you can redistribute it and/or modify it -# under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation; either version 2.1 of the License, or -# (at your option) any later version. - -[Unit] -Description=Network -Documentation=man:systemd.special(7) -Documentation=http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget -ConditionPathExists=/run/udhcpc/network-ready - diff --git a/remote/modules/systemd/data/usr/lib/systemd/system/network.target b/remote/modules/systemd/data/usr/lib/systemd/system/network.target index 65fc64b0..4186c088 100644 --- a/remote/modules/systemd/data/usr/lib/systemd/system/network.target +++ b/remote/modules/systemd/data/usr/lib/systemd/system/network.target @@ -9,3 +9,6 @@ Description=Network Documentation=man:systemd.special(7) Documentation=http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget +DefaultDependencies=no +ConditionPathExists=/run/network/network-ready + diff --git a/remote/modules/systemd/data/usr/lib/udev/rules.d/99-systemd.rules b/remote/modules/systemd/data/usr/lib/udev/rules.d/99-systemd.rules index c148de7a..99cdf676 100644 --- a/remote/modules/systemd/data/usr/lib/udev/rules.d/99-systemd.rules +++ b/remote/modules/systemd/data/usr/lib/udev/rules.d/99-systemd.rules @@ -31,7 +31,9 @@ SUBSYSTEM=="block", KERNEL!="ram*|loop*", ENV{DM_UUID}=="CRYPT-*", ENV{ID_PART_T # # http://git.kernel.org/?p=linux/hotplug/udev.git;a=blob;f=libudev/libudev-enumerate.c;h=da831449dcaf5e936a14409e8e68ab12d30a98e2;hb=HEAD#l742 -#SUBSYSTEM=="net", KERNEL=="eth*", TAG+="systemd", ENV{SYSTEMD_ALIAS}="/sys/subsystem/net/devices/$name", ENV{SYSTEMD_WANTS}="network-interface@$name.service" +SUBSYSTEM=="net", KERNEL=="eth*", TAG=="openslxignore", GOTO="systemd_end" + +SUBSYSTEM=="net", KERNEL=="br0|eth*", TAG+="systemd", ENV{SYSTEMD_ALIAS}="/sys/subsystem/net/devices/$name", ENV{SYSTEMD_WANTS}="network-interface@$name.service" SUBSYSTEM=="bluetooth", TAG+="systemd", ENV{SYSTEMD_ALIAS}="/sys/subsystem/bluetooth/devices/%k" SUBSYSTEM=="bluetooth", TAG+="systemd", ENV{SYSTEMD_WANTS}="bluetooth.target" @@ -43,8 +45,7 @@ SUBSYSTEM=="usb", KERNEL=="lp*", TAG+="systemd", ENV{SYSTEMD_WANTS}="printer.tar SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:0701??:*", TAG+="systemd", ENV{SYSTEMD_WANTS}="printer.target" # Apply sysctl variables to network devices (and only to those) as they appear. - -#SUBSYSTEM=="net", KERNEL=="eth*", RUN+="/usr/lib/systemd/systemd-sysctl --prefix=/proc/sys/net/ipv4/conf/$name --prefix=/proc/sys/net/ipv4/neigh/$name --prefix=/proc/sys/net/ipv6/conf/$name --prefix=/proc/sys/net/ipv6/neigh/$name" +SUBSYSTEM=="net", KERNEL=="eth*", RUN+="/usr/lib/systemd/systemd-sysctl --prefix=/proc/sys/net/ipv4/conf/$name --prefix=/proc/sys/net/ipv4/neigh/$name --prefix=/proc/sys/net/ipv6/conf/$name --prefix=/proc/sys/net/ipv6/neigh/$name" # Asynchronously mount file systems implemented by these modules as # soon as they are loaded. diff --git a/remote/rootfs/rootfs-stage31/data/inc/setup_network b/remote/rootfs/rootfs-stage31/data/inc/setup_network index ed29050f..9e52cfaa 100755 --- a/remote/rootfs/rootfs-stage31/data/inc/setup_network +++ b/remote/rootfs/rootfs-stage31/data/inc/setup_network @@ -58,6 +58,8 @@ for LINE in $IP_OUT; do else NOIPYET="yes" fi + # Ignore this device later on when systemd handles network interfaces (see hacked 99-systemd.rules in systemd data dir) + echo "SUBSYSTEM==\"net\", ACTION==\"add\", KERNEL==\"eth*\", ATTR{address}==\"$IFMAC\", TAG+=\"openslxignore\"" >> "${FUTURE_ROOT}/etc/udev/rules.d/01-ignore-boot-interface.rules" fi # youdev echo "SUBSYSTEM==\"net\", ACTION==\"add\", DRIVERS==\"?*\", ATTR{address}==\"$IFMAC\", ATTR{dev_id}==\"0x0\", ATTR{type}==\"1\", KERNEL==\"eth*\", NAME=\"$IFACE\"" >> "${FUTURE_ROOT}/etc/udev/rules.d/70-net-boot-nic-name.rules" diff --git a/remote/rootfs/rootfs-stage32/data/etc/systemd/system/early-network-triggers.service b/remote/rootfs/rootfs-stage32/data/etc/systemd/system/early-network-triggers.service index 7ed6e2a6..4713dae1 100644 --- a/remote/rootfs/rootfs-stage32/data/etc/systemd/system/early-network-triggers.service +++ b/remote/rootfs/rootfs-stage32/data/etc/systemd/system/early-network-triggers.service @@ -3,7 +3,9 @@ [Unit] Description=Trigger network targets early DefaultDependencies=no +Wants=systemd-tmpfiles-setup.service Before=sysinit.target +After=systemd-tmpfiles-setup.service [Service] Type=oneshot diff --git a/remote/rootfs/rootfs-stage32/data/etc/systemd/system/network-dns.target b/remote/rootfs/rootfs-stage32/data/etc/systemd/system/network-dns.target index c0b7793b..bc12cd1b 100644 --- a/remote/rootfs/rootfs-stage32/data/etc/systemd/system/network-dns.target +++ b/remote/rootfs/rootfs-stage32/data/etc/systemd/system/network-dns.target @@ -1,4 +1,4 @@ [Unit] - Description=DNS Server available +ConditionPathExists=/run/network/dns-ready diff --git a/remote/rootfs/rootfs-stage32/data/etc/systemd/system/network-gateway.target b/remote/rootfs/rootfs-stage32/data/etc/systemd/system/network-gateway.target index cfeb719c..770eb697 100644 --- a/remote/rootfs/rootfs-stage32/data/etc/systemd/system/network-gateway.target +++ b/remote/rootfs/rootfs-stage32/data/etc/systemd/system/network-gateway.target @@ -1,3 +1,4 @@ [Unit] - Description=Default route configured +ConditionPathExists=/run/network/gateway-ready + diff --git a/remote/rootfs/rootfs-stage32/data/etc/systemd/system/ntpdate.service b/remote/rootfs/rootfs-stage32/data/etc/systemd/system/ntpdate.service index a48375d0..ebaa9afb 100644 --- a/remote/rootfs/rootfs-stage32/data/etc/systemd/system/ntpdate.service +++ b/remote/rootfs/rootfs-stage32/data/etc/systemd/system/ntpdate.service @@ -2,7 +2,6 @@ Description=Update date from local time server After=network.target Requires=network.target -ConditionPathExists=/run/udhcpc/network-ready [Service] Type=oneshot diff --git a/remote/rootfs/rootfs-stage32/data/etc/tmpfiles.d/network.conf b/remote/rootfs/rootfs-stage32/data/etc/tmpfiles.d/network.conf new file mode 100644 index 00000000..dd67e785 --- /dev/null +++ b/remote/rootfs/rootfs-stage32/data/etc/tmpfiles.d/network.conf @@ -0,0 +1 @@ +D /run/network 0755 root root diff --git a/remote/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-early_network_triggers b/remote/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-early_network_triggers index bc471116..dc639535 100755 --- a/remote/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-early_network_triggers +++ b/remote/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-early_network_triggers @@ -8,17 +8,17 @@ BRIDGE="br0" if [ ! -e "/sys/class/net/${BRIDGE}/operstate" -o "x$(cat "/sys/class/net/${BRIDGE}/operstate")" == "xup" ] && [ -e "/opt/openslx/uniontmp/etc/hostname" -o -e "/opt/openslx/uniontmp/etc/resolv.conf" ]; then - touch "/run/dhcpc/network-ready" + touch "/run/network/network-ready" systemctl start network.target & fi if [ -s "/etc/resolv.conf" ] && grep -q "^nameserver" "/etc/resolv.conf"; then - touch "/run/dhcpc/dns-ready" + touch "/run/network/dns-ready" systemctl start network-dns.target & fi if route -n | grep -q -E '^0\.0\.0\.0.*U.*G'; then - touch "/run/dhcpc/routing-ready" + touch "/run/network/gateway-ready" systemctl start network-gateway.target & fi -- cgit v1.2.3-55-g7522 From 3d6c058fc99e17697f7f9dd4cf8eb823eab508db Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Thu, 30 Jan 2014 00:56:43 +0100 Subject: [rfs-stage31] Write DNS and hostname to /opt/openslx/config Also cleaned up and tweaked init a bit --- .../rootfs/rootfs-stage31/data/inc/setup_stage32 | 1 + .../rootfs/rootfs-stage31/data/inc/udhcpc-trigger | 7 ++++- remote/rootfs/rootfs-stage31/data/init | 36 ++++++++-------------- 3 files changed, 19 insertions(+), 25 deletions(-) (limited to 'remote/rootfs') diff --git a/remote/rootfs/rootfs-stage31/data/inc/setup_stage32 b/remote/rootfs/rootfs-stage31/data/inc/setup_stage32 index f0380ece..57ad09e1 100755 --- a/remote/rootfs/rootfs-stage31/data/inc/setup_stage32 +++ b/remote/rootfs/rootfs-stage31/data/inc/setup_stage32 @@ -45,6 +45,7 @@ FUTURE_ROOT="/mnt" # Move network stuff cp /etc/hostname /etc/hosts /etc/resolv.conf "${FUTURE_ROOT}/etc/" +[ -s "/run/config" ] && cat "/run/config" >> "${FUTURE_ROOT}/opt/openslx/config" # "Delete" addon hook-script in aufs view touch "/mnt/opt/openslx/uniontmp/.wh.addon-init" diff --git a/remote/rootfs/rootfs-stage31/data/inc/udhcpc-trigger b/remote/rootfs/rootfs-stage31/data/inc/udhcpc-trigger index ea4d002d..4f9cda68 100755 --- a/remote/rootfs/rootfs-stage31/data/inc/udhcpc-trigger +++ b/remote/rootfs/rootfs-stage31/data/inc/udhcpc-trigger @@ -45,7 +45,11 @@ fi rm -f -- "/etc/resolv.conf" # DNS/domain? -[ -n "$dns" ] && echo "..got DNS.." +if [ -n "$dns" ]; then + echo "..got DNS.." + echo "# From DHCP in stage 3.1" >> "/run/config" + echo "SLX_DNS='$dns'" >> "/run/config" +fi for serv in $dns; do echo "nameserver $serv" >> "/etc/resolv.conf" done @@ -76,5 +80,6 @@ if [ -n "$hostname" ]; then echo "$fqdn" > "/proc/sys/kernel/hostname" echo "$fqdn" > "/etc/hostname" echo "$ip $fqdn $hostname" > "/etc/hosts" + echo "SLX_HOSTNAME='$hostname'" >> "/run/config" fi diff --git a/remote/rootfs/rootfs-stage31/data/init b/remote/rootfs/rootfs-stage31/data/init index ac058591..250767e3 100755 --- a/remote/rootfs/rootfs-stage31/data/init +++ b/remote/rootfs/rootfs-stage31/data/init @@ -41,13 +41,7 @@ setup_gfx () { #echo "Trying to load module $DRM" modprobe "$DRM" 2>/dev/null done - # start plymouth if activated - #if [ $DEBUG -lt 1 ]; then - # echo "Starting plymouth..." - # # link the theming directory from the config to the current root - # ln -sf "${FUTURE_ROOT}/usr/share" /usr/share - # lymouthd --kernel-command-line="splash" --tty=/dev/tty7 && plymouth show-splash - #fi + # start some kind of splash screen if activated } setup_gfx & @@ -57,44 +51,41 @@ mdev -s # read kernel command line for debugging switch DEBUG=0 -read KCL < /proc/cmdline -export KCL +read KCL < "/proc/cmdline" for opts in ${KCL}; do case "${opts}" in debug=*) DEBUG=${opts#debug=} ;; ip=*) # process IP info - export IPINFO=${opts#ip=} ;; + IPINFO=${opts#ip=} ;; nfs=*) - export NFS=${opts#nfs=} - export NFSPATH=${nfs#*:} - export NFSSERVER=${nfs%:/*} + NFS=${opts#nfs=} + NFSPATH=${NFS#*:} + NFSSERVER=${NFS%:/*} ;; BOOTIF=*) - export MAC="$( echo "$opts" | cut -b 11- | tr '-' ':' | tr '[A-Z]' '[a-z]' )" ;; # make mac lowercase for udev (see setup_network) + MAC="$( echo "$opts" | cut -b 11- | tr '-' ':' | tr '[A-Z]' '[a-z]' )" ;; # make mac lowercase for udev (see setup_network) esac done # suppress kernel output if DEBUG is not set [ $DEBUG -ge 1 ] && echo "0" > /proc/sys/kernel/printk || echo "4 4 1 7" >/proc/sys/kernel/printk -[ $DEBUG -ge 5 ] && drop_shell "Requested Debug Shell: before network." +[ $DEBUG -ge 4 ] && drop_shell "Requested Debug Shell: before network." . "/inc/setup_network" || drop_shell "Error setting up network" -[ $DEBUG -ge 4 ] && drop_shell "Requested Debug Shell: after network/before configuring." +[ $DEBUG -ge 3 ] && drop_shell "Requested Debug Shell: after network/before configuring." . "/inc/activate_sysconfig" || drop_shell "Could not source /bin/activate_sysconfig" -[ $DEBUG -ge 3 ] && drop_shell "Requested Debug Shell: after network/before configuring." - [ $DEBUG -ge 2 ] && drop_shell "Requested Debug Shell: after configuration/before stage32." . "/inc/setup_stage32" || drop_shell "Problem setting up stage3.2" # copy files needed for stage3.2 to FUTURE_ROOT -[ $DEBUG -ge 1 ] && echo "Copying busybox etc. to stage32..." +echo "Copying busybox etc. to stage32..." tar -cp "/bin" "/sbin" "/usr/bin" "/usr/sbin" "/etc/functions.inc" | tar -xp -C "${FUTURE_ROOT}/opt/openslx/" # set the SLX_ROOT_PASS if given in config @@ -105,17 +96,14 @@ fi # one last debug shell if activated [ $DEBUG -ge 1 ] && drop_shell "Requested Debug Shell: before switch_root." -# tell plymouth about the immediate rootfs switch -#[ $DEBUG -lt 1 ] && plymouth update-root-fs --new-root-dir=/mnt - # unmount filesystems for mnt in proc sys run ; do - busybox umount -n "$mnt" 2>/dev/null + busybox umount -f -l "/$mnt" 2>/dev/null done echo "Switching root...." # Prepare environment (HOME is needed as a hack for nss_ldap with ssl and no caching) -unset BOOT_IMAGE initrd KCL ip slxbase slxsrv IPINFO vga ip MAC BOOTIF +unset BOOT_IMAGE initrd KCL ip slxbase slxsrv IPINFO vga ip MAC BOOTIF DEBUG export HOME=/ export init="/usr/lib/systemd/systemd" export recovery= -- cgit v1.2.3-55-g7522