2 May 2023 |
@elvishjerricco:matrix.org | If it does, we really can just wait for /sysroot to be mounted and let it get the backing device from that itself (though, unless we wait for nixos-activation.service , we do still have to find a way to point it at the right definitions files) | 21:43:24 |
@elvishjerricco:matrix.org | Every time I think about this problem I just confuse myself more and more with all the possibilities and all the problems... | 21:44:02 |
Arian | how about we upstream a commit to systemd to support kernel param rd.repart.device=/dev/vda | 21:45:39 |
Arian | if it's not set it checks for /sysroot | 21:45:59 |
Arian | otherwise it uses rd.repart.device | 21:46:06 |
Arian | oh wait that doesn't help | 21:46:32 |
@elvishjerricco:matrix.org | yea I was about to ask :P | 21:47:23 |
@elvishjerricco:matrix.org | (of course, that would be sane anyway; just doesn't help our issues) | 21:47:45 |
Arian | i still dont fully understand how this works upstream | 21:48:55 |
Arian | because systemd-repart runs before sysroot is mounted | 21:49:04 |
Arian | not after | 21:49:08 |
Arian | so how does it know the device of /sysroot? | 21:49:19 |
@elvishjerricco:matrix.org | Well, it can. It can work either way. | 21:49:45 |
Arian | https://github.com/systemd/systemd/blob/main/units/systemd-repart.service.in#L17 | 21:50:03 |
@elvishjerricco:matrix.org | If you don't have a separate /usr partition, then IIRC initrd-usr-fs.target isn't reached until /sysroot is mounted | 21:50:04 |
Arian | aaah | 21:50:12 |
Arian | I see | 21:50:15 |
Arian | and they assume /usr and / on same disk so works out | 21:50:44 |
@elvishjerricco:matrix.org | right | 21:51:20 |
@elvishjerricco:matrix.org | fun fact | 21:51:32 |
@elvishjerricco:matrix.org | there's a slight race condition there | 21:51:37 |
@elvishjerricco:matrix.org | Whether /sysroot is mounted before or after systemd-repart checks that path for definitions files is a race I'm pretty sure | 21:52:09 |
@elvishjerricco:matrix.org | when you have a separate /usr that is | 21:52:19 |
Arian | isn't that handled by Before=initrd-root-fs.target | 21:52:43 |
@elvishjerricco:matrix.org | No. sysroot.mount is Before=initrd-root-fs.target | 21:53:05 |
@elvishjerricco:matrix.org | It's After=initrd-root-device.target , but systemd-repart.service has no ordering with that | 21:53:26 |
Arian | ah yeh that's a bug | 21:54:34 |
@elvishjerricco:matrix.org | tbh there's a lot that's cursed about upstream's initrd stuff due to how heavily they rely on their expectations about /sysroot and /sysusr | 21:55:07 |
@elvishjerricco:matrix.org | https://github.com/NixOS/nixpkgs/issues/229555 | 22:17:28 |
3 May 2023 |
| @mberndt:matrix.org joined the room. | 23:22:21 |