volumio / volumio3-os

GNU General Public License v2.0
65 stars 41 forks source link

Migration to NetworkManager? (`dhcpcd` issues on Pi OS) #174

Open ashthespy opened 7 months ago

ashthespy commented 7 months ago

Bookworm normally uses NetworkManager by default instead of dhcpcd. Investigate if we need to move or can continue with dhcpcd.

Giving the timing #76 , I might have had some issues with dhcpcd during initial Bookworm/Sid efforts. Unfortunately, I have forgotten more details, will update if I can recall them.

ashthespy commented 7 months ago

Unfortunately, something in this repo's tree dev/bookworm is not letting dhcpcd receive an IP.

17:08:56 volumio systemd[1]: Starting dhcpcd.service - DHCP Client Daemon on all interfaces...
17:08:56 volumio dhcpcd[1352]: dhcpcd-9.4.1 starting
17:08:56 volumio dhcpcd[1355]: dev: loaded udev
17:08:56 volumio dhcpcd[1355]: DUID 00:01:00:01:2d:00:a0:00:00:a6:32:97:00:a6
17:08:56 volumio systemd[1]: Started dhcpcd.service - DHCP Client Daemon on all interfaces.
17:08:56 volumio dhcpcd[1355]: wlan0: connected to Access Point:
17:08:56 volumio dhcpcd[1355]: eth0: IAID 32:97:00:a6
17:08:56 volumio systemd[1]: dhcpcd.service: Main process exited, code=killed, status=31/SYS
17:08:56 volumio dhcpcd[1355]: ps_ctl_listen: read: Success
17:10:26 volumio systemd[1]: dhcpcd.service: State 'stop-sigterm' timed out. Killing.
17:10:26 volumio systemd[1]: dhcpcd.service: Killing process 1355 (dhcpcd) with signal SIGKILL.
17:10:26 volumio systemd[1]: dhcpcd.service: Killing process 1356 (dhcpcd) with signal SIGKILL.
17:10:26 volumio systemd[1]: dhcpcd.service: Failed with result 'signal'.

Note, this works on my personal (but diverged) tree at ashthespy/volumioOS but with armv8/64bit userpace on the Pi. Will compare and debug later.

foonerd commented 7 months ago

17:08:56 volumio dhcpcd[1355]: DUID 00:01:00:01:2d:00:a0:00:00:a6:32:97:00:a6 We should make a request with clientid (RFC2131), not duid (DUID + IAID = RFC4361). Vast majority consumer grade equipment are non-RFC compliant and as such DHCP servers do not reply with this set.

ashthespy commented 7 months ago

Hmm, don't think that is the problem here. There seems to be something else going on with (the way we setup) the binary from Raspbian repos?

It seems to run into some SECCOMP errors while performing the getrandom syscall.

Might be related: https://forums.raspberrypi.com/viewtopic.php?t=361419

16:45:11 volumio audit[622]: SECCOMP auid=4294967295 uid=101 gid=65534 ses=4294967295 pid=622 comm="dhcpcd" exe="/usr/sbin/dhcpcd" sig=31 arch=40000028 syscall=384 compat=0 ip=0xb6db8330 code=0x0

I have a armhf/raspbian based image working by removing dhcpcd and manually installing dhcpcd-{base} from Debian repos with success (with DUID as well..) I am not super sure what is going on, will probably be something silly, but I haven't debugged.

diff --git a/recipes/devices/pi.sh b/recipes/devices/pi.sh
index f8fb12d..902a139 100644
--- a/recipes/devices/pi.sh
+++ b/recipes/devices/pi.sh
@@ -284,6 +247,15 @@ device_chroot_tweaks_pre() {
        ## Lets update some packages from raspbian repos now
        apt-get update && apt-get -y upgrade

+       ## Quick fix for dhcpcd in Raspbian vs Debian
+       log "Raspbian vs Debian dhcpcd debug "
+       apt-get remove dhcpcd
+       apt-get autoremove
+       wget -nv http://ftp.debian.org/debian/pool/main/d/dhcpcd5/dhcpcd-base_9.4.1-24~deb12u3_armhf.deb
+       wget -nv http://ftp.debian.org/debian/pool/main/d/dhcpcd5/dhcpcd_9.4.1-24~deb12u3_all.deb
+       dpkg -i dhcpcd*.deb
foonerd commented 7 months ago

Tested the dhcpcd5 further. We need the dhcpcd binary only from Debian. Better approach will be to build v10 which has both RFCs (RFC2131 and RFC4361) working as it should.