| 27 Nov 2022 |
@me:linj.tech | In reply to @me:linj.tech
The following service will cause systemd to time out without asking me the password for luks
boot.initrd.systemd.services.pre-device-command = {
description = "pre device command";
wantedBy = [ "cryptsetup.target" ];
wants = [ "cryptsetup-pre.target" ];
before = [ "cryptsetup-pre.target" ];
script = ''
echo pre-device-command-start
echo pre-device-command-end
'';
};
oh, I made a mistake. This service cause a dependency circle and is deleted by systemd to break the circle. If I change to, systemd will time out without asking password. | 22:34:07 |
@me:linj.tech | In reply to @me:linj.tech
The following service will cause systemd to time out without asking me the password for luks
boot.initrd.systemd.services.pre-device-command = {
description = "pre device command";
wantedBy = [ "cryptsetup.target" ];
wants = [ "cryptsetup-pre.target" ];
before = [ "cryptsetup-pre.target" ];
script = ''
echo pre-device-command-start
echo pre-device-command-end
'';
};
* oh, I made a mistake. This service cause a dependency circle and is deleted by systemd to break the circle. If I change wants = [ "cryptsetup-pre.target" ]; to wants = [ "basic.target" ];, systemd will time out without asking password. | 22:34:45 |
@janne.hess:helsinki-systems.de | looking at the bootup man page, basic.target actually seems a bit late | 22:35:46 |
@arianvp:matrix.org | Dont forget Default dependencies=no | 22:36:34 |
@arianvp:matrix.org | Otherwise you'll be ordered after sysinit.target by default | 22:37:20 |
@arianvp:matrix.org | Which is probably too late | 22:37:34 |
@me:linj.tech | In reply to @janne.hess:helsinki-systems.de you probably want cryptsetup.target in that before Mounting /sysroot/nix... is before Reached target Local Encrypted Volumes., so before = [ "cryptsetup.target" ] is not enough I think | 22:39:03 |
@arianvp:matrix.org | `unitConfig.DefaultDependencies=false` | 22:39:09 |
@elvishjerricco:matrix.org | linj: as I understand it, preDeviceCommands in the old initrd basically means pre-udev. That is extremely early. | 22:56:59 |
@me:linj.tech | Arian: your trick works!
pre-device-command = {
description = "pre device command";
wantedBy = [ "cryptsetup.target" ];
wants = [ "cryptsetup-pre.target" ];
before = [ "cryptsetup-pre.target" ];
unitConfig.DefaultDependencies = false;
# serviceConfig = {
# Type = "oneshot";
# RemainAfterExit = true;
# };
script = ''
echo pre-device-command-start
echo pre-device-command-end
'';
};
| 23:01:17 |
@arianvp:matrix.org | Great | 23:01:46 |
@elvishjerricco:matrix.org | linj: I'm very curious what you're trying to achieve | 23:01:51 |
@me:linj.tech | emm, what I want is somewhat weird: generate a keyfile on the fly for luks without storing that keyfile in initrd | 23:03:52 |
@me:linj.tech | on a vps | 23:04:23 |
@me:linj.tech | another question: the before = [ "" ] does not seem to work: 59:50 localhost systemd[1]: Reached target Local Encrypted Volumes (Pre). is before 59:50 localhost systemd[1]: pre-device-command.service: Deactivated successfully. in journal | 23:06:13 |
@me:linj.tech | * another question: the before = [ "cryptsetup-pre.target" ] does not seem to work: 59:50 localhost systemd[1]: Reached target Local Encrypted Volumes (Pre). is before 59:50 localhost systemd[1]: pre-device-command.service: Deactivated successfully. in journal | 23:06:25 |
@me:linj.tech | In reply to @me:linj.tech another question: the before = [ "cryptsetup-pre.target" ] does not seem to work: 59:50 localhost systemd[1]: Reached target Local Encrypted Volumes (Pre). is before 59:50 localhost systemd[1]: pre-device-command.service: Deactivated successfully. in journal oneshot does not change this | 23:06:55 |
@arianvp:matrix.org | there's an easier way to do that I think | 23:10:25 |