Building systemd ================ Install dependencies -------------------- :: apt build-dep systemd Clone and compile systemd ------------------------- :: git clone https://github.com/systemd/systemd cd systemd ./autogen.sh ./configure CFLAGS='-g -O0 -ftrapv' --sysconfdir=/etc --localstatedir=/var --libdir=/usr/lib --with-rootprefix=/ --with-rootlibdir=/lib make -j`nproc` The generated binaries will be in .libs Hacky way to test new systemd-networkd binary --------------------------------------------- Check that the system binary is different to the generated binary:: sha256sum .libs/systemd-networkd /lib/systemd/systemd-networkd To find required library:: ldd .libs/systemd-networkd | grep system To find which declarations are missing:: readelf -Ws /lib/systemd/libsystemd-shared-233.so | grep config_parse_uint readelf -Ws .libs/libsystemd-shared-233.so | grep config_parse_uint Configure network:: cat /etc/systemd/network/20-dhcp.network [Match] Name=en* [Network] DHCP=ipv4 [DHCP] UseAnonymityProfile=true Replace system binaries with the compiled ones: If Network Manager is running, stop it:: systemctl stop NetworkManager Restart:: systemctl restart systemd-networkd To keep it running in the system:: systemctl enable systemd-networkd systemctl enable systemd-resolved systemctl disable NetworkManager To enable wifi interface:: wpa_passphrase MyNetwork SuperSecretPassphrase > /etc/wpa_supplicant/wpa_supplicant-wlan0.conf systemctl enable wpa_supplicant@wlan0.conf To obtain debugging logs, add to the unit:: [Service] Environment=SYSTEMD_LOG_LEVEL=debug The unit in Debian is in ``/lib/systemd/system/systemd-networkd.service`` If other unit is created, it needs to have the correct file system permissions:: touch /etc/systemd/system/name.service chmod 664 /etc/systemd/system/name.service Scan DHCP packages ------------------ :: /usr/sbin/tcpdump -r /tmp/dhcp-before.pcap -X -n Tests ----- :: make -j`nproc` check