Stage 1 systemd | 83 Members | |
| systemd in NixOs's stage 1, replacing the current bash tooling https://github.com/NixOS/nixpkgs/projects/51 | 27 Servers |
| Sender | Message | Time |
|---|---|---|
| 16 Apr 2023 | ||
| * If system-wide link configs are applied in stage1 that would make my use case for flushing non-existant | 20:28:29 | |
| As far as other netdev settings (like controlling link speeds explicitly, or *{CheckSum,Segmentation}Offload, systemd also pretty much added all these as options | 20:32:53 | |
| * As far as other netdev settings (like controlling link speeds explicitly, or *{CheckSum,Segmentation}Offload, systemd also pretty much added all these as options. I'm not sure how much of that is exposed to be accessible from the module system | 20:33:06 | |
| and when it comes to "having a different IP address in initrd to avoid host key stuff", I'd probably go with a different port, and keep the IP. But in any case, that might be a usecase that could be mentioned in the description | 20:35:18 | |
| 17 Apr 2023 | ||
| ElvishJerricco: sorry for being so pedantic on the networking bits in the PR, but i feel like we need to get the semantics sorted out before too many people end up switching to it, and possibly get angry if we switch semantics and break possibly remote machines. | 21:08:14 | |
| Yep, I totally understand | 21:08:29 | |
| I do really want to get it done before 23.05, but that shouldn't be too hard even with max pedantry :) | 21:08:50 | |
| I'll try to check my notifications more frequently in the coming days :-) | 21:09:30 | |
| Rather than continuing to discuss this tangent on the PR,
| 21:18:09 | |
And fwiw, if I remove the line that adds the link units to systemd stage 1 and enable systemd stage 1 in the nixosTests.networking.rename test, the test doesn't fail even after 20 tries. | 21:19:59 | |
* And fwiw, if I remove the line that adds the link units to systemd stage 1 and enable systemd stage 1 in the nixosTests.networking.networkd.rename test, the test doesn't fail even after 20 tries. | 21:20:16 | |
In reply to @elvishjerricco:matrix.orgYeah I tried it as well and that test seemed perfectly happy renaming in stage2. But I admittedly didn't try it with initrd networking enabled | 21:47:26 | |
| 18 Apr 2023 | ||
| 09:26:29 | ||
In reply to @elvishjerricco:matrix.orgThis is, however, just the design of systemd-repart. Not a decision the module makes: https://www.freedesktop.org/software/systemd/man/systemd-repart.html#--root= systemd-repart is really designed to work with disk images (containing all required data to setup the system, including the root fs). Running systemd-repart in the initrd is then just a matter of running it earlier so that other services that start in stage 2 can already work on the enlarged partitions. Also the module gives the user the choice to run repart either in the initrd or in stage 2. All in all it to mimic the standard behaviour of repart as closely as possible in NixOS. | 09:38:23 | |
In reply to @elvishjerricco:matrix.org* This is, however, just the design of systemd-repart. Not a decision the module makes: https://www.freedesktop.org/software/systemd/man/systemd-repart.html#--root= systemd-repart is really designed to work with disk images (containing all required data to setup the system, including the root fs). Running systemd-repart in the initrd is then just a matter of running it earlier so that other services that start in stage 2 can already work on the enlarged partitions. Also the module gives the user the choice to run repart either in the initrd or in stage 2. All in all it tries to mimic the standard behaviour of repart as closely as possible in NixOS. | 10:02:04 | |
No? The docs say nothing of the sort. The use case for systemd-repart in stage 1 is 100% for formatting and resizing the root fs. This is a major reason why | 16:41:25 | |
There is no use case where systemd-repart alters only non-root disks and cannot be run in stage 2 and ordered before whatever services depend on it. | 16:44:20 | |
And there's absolutely no point in running it in stage 1 if running it requires initrd-fs.target to be reached | 16:46:27 | |
(the nixos module just requires sysroot.mount to be reached but if this is the design we're going with it really should wait for /sysroot/nix/store, and the simplest way is initrd-fs.target) | 16:47:44 | |
| The docs say this is the default: "By default when invoked on the regular system this defaults to the host's root file system /. If invoked from the initrd this defaults to /sysroot/, so that the tool operates on the configuration and machine ID stored in the root file system later transitioned into itself.". I tried to stay as close as possible to the default. systemd-repart actually does not only look into sysusr. It also looks for configs in /sysroot/etc. E.g. see the conditions for the service:
If I understand it correctly, your point is that the nix store might not be on sysroot but instead mounted later (alongside the other partitions marked with I also agree that /sysusr/ is the preferred/ideal way to store the config files in the systemd world. However, I don't see a way to imitate that in NixOS. On the top of my head I can think of at least one solid use case where systemd-repart has to run in the initrd. Imagine you have disk images that only contain the Nix Store on the root fs without even space in the root fs to accomodate the rest of the / subtree created during activation. Repart can then make the space in the root fs after sysroot.mount (or even initrd-fs.target) but before activation. I don't really love baking configuration (i.e. the repart configs) into the initrd if it can be avoided. And again, I think the current module is closer to how systemd-repart operates by default than the alternative of baking the configs into the initrd. But maybe we can give users the option in the module. | 21:22:01 | |
| Sorry for the long ass reply. This was a good exercise to think it all through again :) | 21:22:38 | |
| * The docs say this is the default: "By default when invoked on the regular system this defaults to the host's root file system /. If invoked from the initrd this defaults to /sysroot/, so that the tool operates on the configuration and machine ID stored in the root file system later transitioned into itself.". I tried to stay as close as possible to the default. systemd-repart actually does not only look into sysusr. It also looks for configs in /sysroot/etc. E.g. see the conditions for the service:
If I understand it correctly, your point is that the nix store might not be on sysroot but instead mounted later (alongside the other partitions marked with I also agree that /sysusr/ is the preferred/ideal way to store the config files in the systemd world. However, I don't see a way to imitate that in NixOS. On the top of my head I can think of at least one solid use case where systemd-repart has to run in the initrd. Imagine you have disk images that only contain the Nix Store on the root fs without even space in the root fs to accomodate the rest of the / subtree created during activation. Repart can then make the space in the root fs after sysroot.mount (or even I don't really love baking configuration (i.e. the repart configs) into the initrd if it can be avoided. And again, I think the current module is closer to how systemd-repart operates by default than the alternative of baking the configs into the initrd. But maybe we can give users the option in the module. | 21:25:01 | |
I think you're leaning heavily on this line as the only indication of how the docs want it to work in initrd. But I still think it's a misinterpretation. By defaulting to | 21:39:12 | |
| I'm made more confident about this given a comment I received from poettering suggesting that root fs formatting is the job of repart | 21:40:46 | |
Partitions can often be resized online. e.g. Look at how | 21:45:07 | |
(in fact that's how fileSystems.<name>.autoResize works with systemd initrd enabled) | 21:46:40 | |
I maintain that there is no excuse for mounting the root FS before running systemd-repart in initrd. | 21:47:46 | |
| ah wait I misunderstood the example | 21:49:29 | |
| hmm | 21:49:51 | |
| well that use case would still be taken care of by running systemd-repart before mounting /sysroot | 21:50:39 | |