blob: be50973d33c17e584fb07f4dbdcc6d6e70786d09 (
plain) (
tree)
|
|
#!/bin/bash
# shameless hacked version of dracut's systemd-networkd module
# called by dracut
check() {
[[ $mount_needs ]] && return 1
if dracut_module_included "network"; then
derror "The module 'systemd-networkd' conflicts with 'network'. Use either one not both!"
return 1
fi
return 255
}
# called by dracut
depends() {
echo "systemd kernel-network-modules"
}
installkernel() {
return 0
}
# called by dracut
install() {
# need initqueue to get a clean network start
dracut_need_initqueue
# install required systemd units
inst_multiple -o \
$systemdutildir/systemd-networkd \
$systemdutildir/systemd-networkd-wait-online \
$systemdutildir/systemd-resolved \
$systemdsystemunitdir/systemd-networkd-wait-online.service \
$systemdsystemunitdir/systemd-networkd.service \
$systemdsystemunitdir/systemd-networkd.socket \
$systemdsystemunitdir/systemd-resolved.service \
networkctl ip
# active them
for i in \
systemd-networkd-wait-online.service \
systemd-networkd.service \
systemd-networkd.socket \
systemd-resolved.service
do
systemctl --root "$initdir" enable "$i"
done
mkdir $initdir/$systemdsystemunitdir/network.target.wants
ln -s $systemdsystemunitdir/systemd-resolved.service \
$initdir/$systemdsystemunitdir/network.target.wants/systemd-resolved.service
ln -sf /run/systemd/resolve/resolv.conf $initdir/etc/resolv.conf
# create system users needed
for user in \
systemd-network \
systemd-resolve
do
grep "^${user}:" /etc/passwd 2>/dev/null >> "$initdir/etc/passwd"
grep "^${user}:" /etc/group >> "$initdir/etc/group"
done
# install basic dns libs
_arch=$(uname -m)
inst_libdir_file {"tls/$_arch/",tls/,"$_arch/",}"libnss_dns.so.*" \
{"tls/$_arch/",tls/,"$_arch/",}"libnss_mdns4_minimal.so.*" \
{"tls/$_arch/",tls/,"$_arch/",}"libnss_myhostname.so.*" \
{"tls/$_arch/",tls/,"$_arch/",}"libnss_resolve.so.*" \
{"tls/$_arch/",tls/,"$_arch/",}"libresolve.so.*"
# the hook script that will parse the "ip=" kernel command line
# parameter and generate the .link and .network files needed
# by systemd-networkd.
inst_hook cmdline 10 "$moddir/hooks/parse-kcl-for-networkd.sh"
inst_hook pre-pivot 10 "$moddir/hooks/copy-networkd-files-to-newroot.sh"
inst_hook pre-pivot 20 "$moddir/hooks/configure-dhcp-for-newroot.sh"
}
|