forked from mirrors/nixpkgs
systemd: ensure fsck Requires/After links are created in mount units
systemd-fsck-generator only produces these lines if it can find the necessary fsck executable in its PATH. fixes #29139.
This commit is contained in:
parent
69b4f427b6
commit
94a906b59a
|
@ -159,6 +159,6 @@ exec {logOutFd}>&- {logErrFd}>&-
|
||||||
|
|
||||||
# Start systemd.
|
# Start systemd.
|
||||||
echo "starting systemd..."
|
echo "starting systemd..."
|
||||||
PATH=/run/current-system/systemd/lib/systemd \
|
PATH=/run/current-system/systemd/lib/systemd:@fsPackagesPath@ \
|
||||||
LOCALE_ARCHIVE=/run/current-system/sw/lib/locale/locale-archive \
|
LOCALE_ARCHIVE=/run/current-system/sw/lib/locale/locale-archive \
|
||||||
exec systemd
|
exec systemd
|
||||||
|
|
|
@ -17,6 +17,7 @@ let
|
||||||
pkgs.utillinux
|
pkgs.utillinux
|
||||||
pkgs.openresolv
|
pkgs.openresolv
|
||||||
];
|
];
|
||||||
|
fsPackagesPath = lib.makeBinPath config.system.fsPackages;
|
||||||
postBootCommands = pkgs.writeText "local-cmds"
|
postBootCommands = pkgs.writeText "local-cmds"
|
||||||
''
|
''
|
||||||
${config.boot.postBootCommands}
|
${config.boot.postBootCommands}
|
||||||
|
|
|
@ -291,6 +291,7 @@ in rec {
|
||||||
tests.firefox = callTest tests/firefox.nix {};
|
tests.firefox = callTest tests/firefox.nix {};
|
||||||
tests.flatpak = callTest tests/flatpak.nix {};
|
tests.flatpak = callTest tests/flatpak.nix {};
|
||||||
tests.firewall = callTest tests/firewall.nix {};
|
tests.firewall = callTest tests/firewall.nix {};
|
||||||
|
tests.fsck = callTest tests/fsck.nix {};
|
||||||
tests.fwupd = callTest tests/fwupd.nix {};
|
tests.fwupd = callTest tests/fwupd.nix {};
|
||||||
tests.gdk-pixbuf = callTest tests/gdk-pixbuf.nix {};
|
tests.gdk-pixbuf = callTest tests/gdk-pixbuf.nix {};
|
||||||
#tests.gitlab = callTest tests/gitlab.nix {};
|
#tests.gitlab = callTest tests/gitlab.nix {};
|
||||||
|
|
29
nixos/tests/fsck.nix
Normal file
29
nixos/tests/fsck.nix
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
import ./make-test.nix {
|
||||||
|
name = "fsck";
|
||||||
|
|
||||||
|
machine = { lib, ... }: {
|
||||||
|
virtualisation.emptyDiskImages = [ 1 ];
|
||||||
|
|
||||||
|
fileSystems = lib.mkVMOverride {
|
||||||
|
"/mnt" = {
|
||||||
|
device = "/dev/vdb";
|
||||||
|
fsType = "ext4";
|
||||||
|
autoFormat = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = ''
|
||||||
|
$machine->waitForUnit('default.target');
|
||||||
|
|
||||||
|
subtest "root fs is fsckd", sub {
|
||||||
|
$machine->succeed('journalctl -b | grep "fsck.ext4.*/dev/vda"');
|
||||||
|
};
|
||||||
|
|
||||||
|
subtest "mnt fs is fsckd", sub {
|
||||||
|
$machine->succeed('journalctl -b | grep "fsck.*/dev/vdb.*clean"');
|
||||||
|
$machine->succeed('grep "Requires=systemd-fsck@dev-vdb.service" /run/systemd/generator/mnt.mount');
|
||||||
|
$machine->succeed('grep "After=systemd-fsck@dev-vdb.service" /run/systemd/generator/mnt.mount');
|
||||||
|
};
|
||||||
|
'';
|
||||||
|
}
|
Loading…
Reference in a new issue