From: Daniel Molkentin Date: Fri, 21 Aug 2020 16:03:42 +0000 (+0200) Subject: 35network-wicked: introduce wicked support module X-Git-Tag: 051~15 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ed7ce0d64f6c36459eb5d7d0b925a2ae4b3baaf5;p=thirdparty%2Fdracut.git 35network-wicked: introduce wicked support module --- diff --git a/dracut.spec b/dracut.spec index 450dd5a61..b1a84eb6b 100644 --- a/dracut.spec +++ b/dracut.spec @@ -434,6 +434,7 @@ install -m 0755 51-dracut-rescue-postinst.sh $RPM_BUILD_ROOT%{_sysconfdir}/kerne %{dracutlibdir}/modules.d/02systemd-networkd %{dracutlibdir}/modules.d/35network-manager %{dracutlibdir}/modules.d/35network-legacy +%{dracutlibdir}/modules.d/35network-wicked %{dracutlibdir}/modules.d/40network %{dracutlibdir}/modules.d/45ifcfg %{dracutlibdir}/modules.d/90kernel-network-modules diff --git a/modules.d/35network-wicked/module-setup.sh b/modules.d/35network-wicked/module-setup.sh new file mode 100755 index 000000000..83e5e6cf3 --- /dev/null +++ b/modules.d/35network-wicked/module-setup.sh @@ -0,0 +1,61 @@ +#!/bin/bash + +# called by dracut +check() { + local _program + + require_binaries wicked || return 1 + + # do not add this module by default + return 255 +} + +# called by dracut +depends() { + echo systemd dbus + return 0 +} + +# called by dracut +installkernel() { + return 0 +} + +# called by dracut +install() { + inst_hook cmdline 99 "$moddir/wicked-config.sh" + + # Seems to not execute if in initqueue/settled + inst_hook pre-mount 99 "$moddir/wicked-run.sh" + + inst_dir /etc/wicked/extensions + inst_dir /usr/share/wicked/schema + inst_dir /usr/lib/wicked/bin + inst_dir /var/lib/wicked + + inst_multiple /etc/wicked/*.xml + inst_multiple /etc/wicked/extensions/* + inst_multiple /etc/dbus-1/system.d/org.opensuse.Network* + inst_multiple /usr/share/wicked/schema/* + inst_multiple /usr/lib/wicked/bin/* + inst_multiple /usr/sbin/wicked* + + wicked_units=" + $systemdsystemunitdir/wickedd.service \ + $systemdsystemunitdir/wickedd-auto4.service \ + $systemdsystemunitdir/wickedd-dhcp4.service \ + $systemdsystemunitdir/wickedd-dhcp6.service \ + $systemdsystemunitdir/wickedd-nanny.service" + + inst_multiple $wicked_units + + for unit in $wicked_units; do + sed -i 's/^After=.*/After=dbus.service/g' $initdir/$unit + sed -i 's/^Wants=\(.*\)/Wants=\1 dbus.service/g' $initdir/$unit + sed -i -e \ + '/^\[Unit\]/aDefaultDependencies=no\ + Conflicts=shutdown.target\ + Before=shutdown.target' \ + "$initdir"$unit + done +} diff --git a/modules.d/35network-wicked/wicked-config.sh b/modules.d/35network-wicked/wicked-config.sh new file mode 100755 index 000000000..850c19f06 --- /dev/null +++ b/modules.d/35network-wicked/wicked-config.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +getcmdline > /tmp/cmdline.$$.conf +wicked show-config --ifconfig dracut:cmdline:/tmp/cmdline.$$.conf > /tmp/dracut.xml +rm -f /tmp/cmdline.$$.conf diff --git a/modules.d/35network-wicked/wicked-run.sh b/modules.d/35network-wicked/wicked-run.sh new file mode 100755 index 000000000..7481258bd --- /dev/null +++ b/modules.d/35network-wicked/wicked-run.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +systemctl start wickedd +# detection wrapper around ifup --ifconfig "final xml" all +wicked bootstrap --ifconfig /tmp/dracut.xml all +systemctl stop wickedd