| 10 Nov 2022 |
@elvishjerricco:matrix.org | linj: to clarify a bit, you want x-initrd.{attach,mount} in the /etc/crypttab and /etc/fstab of stage 2. Their function is to tell systemd two things.
-
In stage 1, when the root fs is mounted at /sysroot, check /sysroot/etc/{crypttab,fstab} for entries with these options by re-running generators and generating stage 1 units for them with /sysroot prefixed for FSes. This is why we have the initrd-root-fs.target and initrd-fs.target sync points; they represent /sysroot being mounted and x-initrd.mount FSes being mounted.
-
They tell the shutdown process not to mess with these things. The shutdown ramfs (if enabled) can attempt to safely unmount and detach them, but the regular shutdown process shouldn't.
So this gets complicated for NixOS. We want these things written in our stage 2 crypttab and fstab files so that shutdown respects them, but the problem is that we can't rely on them existing for stage 1. For instance if you have root on tmpfs, then /sysroot/etc doesn't even exist, let alone contain the necessary crypttab and fstab entries with x-initrd.* options. And even for people whose root is persistent, those files need to be updated by initrd-nixos-activation.service before we can rely on them, which itself already requires all the stage 1 FSes to be mounted.
| 23:58:41 |
@elvishjerricco:matrix.org | So it's...... highly annoying | 23:58:46 |
@elvishjerricco:matrix.org | The solution I kinda want to do is put /sysroot/etc/{crypttab,fstab} in the initramfs lol. Then the initial generators will pick up the x-initrd.* entries, and the real /sysroot will overmount this stupid one | 23:59:30 |
@elvishjerricco:matrix.org | (have tested; it does work) | 23:59:55 |
| 11 Nov 2022 |
@elvishjerricco:matrix.org | oh but all that is to say: We do not want these options in the initramfs's /etc/fstab or /etc/crypttab because they're basically meaningless there (and I think it might even cause the generators to skip them? not sure) | 00:02:20 |
@me:linj.tech | ElvishJerricco: After reading your repl, systemd doc and nixpkgs pr, I have several questions:
- Do we need
/sysroot/etc/{crypttab,fstab}? I think currently we have put FSes needed in /etc/fstab and /etc/crypttab of initrd.
- Is this the shutdown ramfs you mentioned above? Does that pr handles unmounting "root on btrfs raid1 on luks on two disks" correctly? Some FSes is missing in
journalctl -b -1 -g Unmounting. Don't know if that is related though.
| 12:20:40 |
@me:linj.tech | * ElvishJerricco: After reading your reply, systemd doc and nixpkgs pr, I have several questions:
- Do we need
/sysroot/etc/{crypttab,fstab}? I think currently we have put FSes needed in /etc/fstab and /etc/crypttab of initrd.
- Is this the shutdown ramfs you mentioned above? Does that pr handles unmounting "root on btrfs raid1 on luks on two disks" correctly? Some FSes is missing in
journalctl -b -1 -g Unmounting. Don't know if that is related though.
| 12:20:51 |
@me:linj.tech | * ElvishJerricco: After reading your reply, systemd doc and nixpkgs pr, I have several questions:
- Do we need
/sysroot/etc/{crypttab,fstab}? I think currently we have put FSes needed in /etc/fstab and /etc/crypttab of initrd.
- Is this the shutdown ramfs you mentioned above? Does that pr handle unmounting "root on btrfs raid1 on luks on two disks" correctly? Some FSes is missing in
journalctl -b -1 -g Unmounting. Don't know if that is related though.
| 12:21:24 |
@elvishjerricco:matrix.org | linj:
- As I explained, using
/sysroot/etc/{crypttab,fstab} is difficult in nixos, so we currently do it the "wrong" way with /etc.
- That shutdown ramfs is supposed to work, but I'm not sure why it fails for some setups.
| 17:58:22 |
| 15 Nov 2022 |
K900 | Something borked I think | 19:17:37 |
K900 | error: builder for '/nix/store/0yx5gvgw3wfa4r5kl7k1mqrji271dm2c-initrd-bin-env.drv' failed with exit code 1;
last 2 log lines:
> created 454 symlinks in user environment
> ln: failed to create symbolic link '/nix/store/dqzxrnrhav933wywsgs0jx0g75pb7v1s-initrd-bin-env/bin/mount': File exists
For full logs, run 'nix log /nix/store/0yx5gvgw3wfa4r5kl7k1mqrji271dm2c-initrd-bin-env.drv'.
| 19:17:47 |
K900 | This is on just updated unstable-small | 19:17:53 |
@elvishjerricco:matrix.org | uh oh | 19:18:13 |
K900 | I'm not sure what happened there actually | 19:20:06 |
@elvishjerricco:matrix.org | yea, the systmed-initrd-simple.nix test fails | 19:20:20 |
@elvishjerricco:matrix.org | * yea, the systemd-initrd-simple.nix test fails | 19:20:29 |
@elvishjerricco:matrix.org | either buildEnv changed, one of the packages we're using changed, or someone made a code change that I didn't see | 19:21:02 |
K900 | d3ccf64ae14 gh: 2.20.0 -> 2.20.2 [zowoq]
1a24e79270d libsigrokdecode: unpin python dependency [Markus S. Wamser]
e3a720db368 dune_3: 3.5.0 -> 3.6.0 [Vincent Laporte]
8786f80a1c7 ocamlPackages.js_of_ocaml-ocamlbuild: 4.0.0 → 5.0 [Vincent Laporte]
7dd0719b2ff python310Packages.apache-beam: fix for dill 0.3.6 [Theodore Ni]
335b2990e64 python3Packages.pymemcache: mark broken on 32 bit [Martin Weinelt]
2067822b828 got: 0.78 -> 0.79 [Alexis Hildebrandt]
b6239d9b019 lazygit: 0.35 -> 0.36.0 [R. Ryantm]
1671115dbef lazydocker: 0.19.0 -> 0.20.0 [R. Ryantm]
8ca1aba4757 terraform-providers.newrelic: 3.6.1 → 3.7.0 [zowoq]
3ce72808da1 terraform-providers.aiven: 3.8.0 → 3.8.1 [zowoq]
3537f2ccd52 cloudflare-dyndns: remove from python3Packages [Robert Schütz]
b2a6caa5cbb flyctl: 0.0.430 -> 0.0.431 [R. Ryantm]
cebf764e2bf netpbm: 11.0.1 -> 11.0.2 [Jan Tojnar]
81cd6b06f96 nixos/nginx: add default listen port options [Curtis Jiang]
d9b1bde390e nixos: Fix fsck with systemd 251.6 and later [aszlig]
252ee601a3f python310Packages.mitmproxy-wireguard: 0.1.17 -> 0.1.18 [Fabian Affolter]
2832ad57861 python310Packages.mkdocstrings-python: 0.7.1 -> 0.8.0 [Fabian Affolter]
f7161f92ec1 ruff: 0.0.117 -> 0.0.118 [figsoda]
22dafab6506 firefox-esr-102-unwrapped: 102.4.0esr -> 102.5.0esr [Martin Weinelt]
28b268d34b5 firefox-bin-unwrapped: 106.0.5 -> 107.0 [Martin Weinelt]
8ec89ef1b50 firefox{,-bin}, thunderbird{,-bin}: Set meta.changelog [Martin Weinelt]
f3a8bb1ec80 firefox-unwrapped: 106.0.5 -> 107.0 [Martin Weinelt]
376bd0ebe09 python310Packages.griffe: 0.23.0 -> 0.24.0 [Fabian Affolter]
460e838124c python310Packages.growattserver: 1.2.3 -> 1.2.4 [Fabian Affolter]
d3f5b5a608c python310Packages.heatzypy: 2.1.1 -> 2.1.5 [Fabian Affolter]
47c355de3a0 python310Packages.google-nest-sdm: 2.0.0 -> 2.1.0 [Fabian Affolter]
e002041da0c python310Packages.airthings-ble: 0.5.2 -> 0.5.3 [Fabian Affolter]
adb97478318 flightgear: Fix missing libcurl depedency [Ivan Jager]
8d9763d043a mate.caja-extensions: Fix wrong schema path [Bobby Rong]
aa3396dc321 mate.caja-extensions: Fix failed substitution [Bobby Rong]
65967fa684f python310Packages.asyncio-mqtt: enable tests [Fabian Affolter]
d7546e1813c python310Packages.aiomysensors: 0.3.2 -> 0.3.3 [Fabian Affolter]
066bb437c93 python310Packages.asyncio-mqtt: 0.13.0 -> 0.14.0 [Fabian Affolter]
ea58c46e4f1 python310Packages.stevedore: 4.1.0 -> 4.1.1 [Fabian Affolter]
d82962c6927 libfixposix: 0.4.3 -> 0.5.1 [R. Ryantm]
bfdffa623ea baresip: 2.8.2 -> 2.9.0 [R. Ryantm]
8dc7d564aa9 gammu: fix script dependencies on bash and dialog [Markus S. Wamser]
4d19f1f3d42 organicmaps: 2022.09.22-3 -> 2022.11.02-2 [Francesco Gazzetta]
| 19:21:28 |
K900 | Nothing jumps out to me | 19:21:32 |
K900 | Oh wait | 19:21:40 |
K900 | d9b1bde390e | 19:21:54 |
K900 | Yep that adds util-linux to fsPackages | 19:22:05 |
@elvishjerricco:matrix.org | oh uh | 19:22:26 |
K900 | So presumably we're ending up with two util-linux somewhere | 19:22:27 |
@elvishjerricco:matrix.org | that's maybe not so great | 19:22:29 |
K900 | util-linuxen? | 19:22:30 |
K900 | util-linuxes? | 19:22:32 |
@elvishjerricco:matrix.org | we're currently just adding all fsPackages to initrd | 19:22:48 |
@elvishjerricco:matrix.org | well, their bins anyway | 19:23:01 |
K900 | I'm just guessing we have one already | 19:23:04 |