!PSmBFWNKoXmlQBzUQf:helsinki-systems.de

Stage 1 systemd

86 Members
systemd in NixOs's stage 1, replacing the current bash tooling https://github.com/NixOS/nixpkgs/projects/5128 Servers

Load older messages


SenderMessageTime
6 Jun 2023
@oddlama:matrix.orgoddlamaoccurrs exactly once in systemd's source, in networkd.socket :/14:39:59
@oddlama:matrix.orgoddlama * occurs exactly once in systemd's source, in networkd.socket :/14:40:05
@oddlama:matrix.orgoddlama
In reply to @elvishjerricco:matrix.org
but that's weird because in nixos we have a wants relationship from multi-user.target on systemd-networkd.service
where is that relationship defined?
14:42:13
@elvishjerricco:matrix.org@elvishjerricco:matrix.orghttps://github.com/NixOS/nixpkgs/blob/5c31944c1d468476f7827943dd636b34478db22b/nixos/modules/system/boot/networkd.nix#L312914:42:43
@elvishjerricco:matrix.org@elvishjerricco:matrix.org oddlama: Something else kinda weird is that on my system that has networkd enabled in both stage 1 and stage 2, I don't see the same messages from the socket unit about "Incoming traffic" 14:44:21
@elvishjerricco:matrix.org@elvishjerricco:matrix.org your default.target is multi-user.target, right? :P 14:45:03
@oddlama:matrix.orgoddlama
In reply to @elvishjerricco:matrix.org
oddlama: Something else kinda weird is that on my system that has networkd enabled in both stage 1 and stage 2, I don't see the same messages from the socket unit about "Incoming traffic"
Maybe it's also a red herring and just coincidence
14:45:15
@elvishjerricco:matrix.org@elvishjerricco:matrix.orgpossibly14:45:22
@oddlama:matrix.orgoddlama
In reply to @elvishjerricco:matrix.org
your default.target is multi-user.target, right? :P
I didn't change anything in that regard, so I hope so :D
14:45:31
@elvishjerricco:matrix.org@elvishjerricco:matrix.org(please double check, because it is possible to change)14:45:59
@elvishjerricco:matrix.org@elvishjerricco:matrix.org (like, it shouldn't, but systemctl status default.target is easy enough :P) 14:46:34
@oddlama:matrix.orgoddlamaAlready on it14:46:46
@oddlama:matrix.orgoddlamaYep, multi-user.target on both systems.14:46:59
@elvishjerricco:matrix.org@elvishjerricco:matrix.org oddlama: As a sanity check, what's systemctl show -p WantedBy systemd-networkd.service say? 14:48:24
@oddlama:matrix.orgoddlamaJust did a sanity check on the systemd issues14:49:39
@oddlama:matrix.orgoddlamahttps://github.com/systemd/systemd/issues/2771814:49:40
@oddlama:matrix.orgoddlama
In reply to @elvishjerricco:matrix.org
oddlama: As a sanity check, what's systemctl show -p WantedBy systemd-networkd.service say?
WantedBy=multi-user.target on both
14:50:32
@elvishjerricco:matrix.org@elvishjerricco:matrix.org

Interesting tidbit from that issue that I'd like to revisit later:

networkd.service removes some (not all) IP addresses, routes, and friends on stop. Hence, restarting networkd during switching root may disconnect network. So, if the rootfs is backed by a network filesystem, system may fail to boot.

It was my understanding that this is explicitly not the case

14:53:49
@elvishjerricco:matrix.org@elvishjerricco:matrix.orghuh, ok apparently that's only true because we're not actually stopping systemd-networkd.service correctly before switch-root14:56:00
@elvishjerricco:matrix.org@elvishjerricco:matrix.org Ok, looks like we just need Before and Conflicts on initrd-switch-root.target, and that will not only fix the bug, but also change how we need to implement flushBeforeStage2 14:58:18
@elvishjerricco:matrix.org@elvishjerricco:matrix.org because apparently if it's stopped properly, it will flush 14:58:35
@elvishjerricco:matrix.org@elvishjerricco:matrix.org meaning with the current implementation, we won't have a way to do flushBeforeStage2 = false 14:59:16
@elvishjerricco:matrix.org@elvishjerricco:matrix.orgI'm going to cook up a nixpkgs patch15:00:50
@elvishjerricco:matrix.org@elvishjerricco:matrix.org

oddlama: Can you try this in your config and see if it fixes your issue?

boot.initrd.network.flushBeforeStage2 = false;
boot.initrd.systemd = {
  services.systemd-networkd = {
    before = ["initrd-switch-root.target"];
    conflicts = ["initrd-switch-root.target"];
  };
  sockets.systemd-networkd = {
    before = ["initrd-switch-root.target"];
    conflicts = ["initrd-switch-root.target"];
  };
};
15:34:38
@oddlama:matrix.orgoddlamaWill try15:47:33
@oddlama:matrix.orgoddlama
In reply to @elvishjerricco:matrix.org
meaning with the current implementation, we won't have a way to do flushBeforeStage2 = false
What would be the benefit of not flushing?
15:48:17
@oddlama:matrix.orgoddlama
In reply to @elvishjerricco:matrix.org

oddlama: Can you try this in your config and see if it fixes your issue?

boot.initrd.network.flushBeforeStage2 = false;
boot.initrd.systemd = {
  services.systemd-networkd = {
    before = ["initrd-switch-root.target"];
    conflicts = ["initrd-switch-root.target"];
  };
  sockets.systemd-networkd = {
    before = ["initrd-switch-root.target"];
    conflicts = ["initrd-switch-root.target"];
  };
};
Yep this works :)
15:50:16
@oddlama:matrix.orgoddlamaDo you have an idea why it doesn't happen on your system?15:52:42
@elvishjerricco:matrix.org@elvishjerricco:matrix.org
In reply to @oddlama:matrix.org
What would be the benefit of not flushing?
If your rootfs is on a network fs for instance, you need to avoid flushing.
15:53:17
@janne.hess:helsinki-systems.de@janne.hess:helsinki-systems.de
In reply to @oddlama:matrix.org
What would be the benefit of not flushing?
Network mounts
15:53:27

Show newer messages


Back to Room ListRoom Version: 6