1{ systemdStage1, ... }:
2
3{
4 name = "fsck";
5
6 nodes.machine = {
7 virtualisation.emptyDiskImages = [ 1 ];
8
9 virtualisation.fileSystems = {
10 "/mnt" = {
11 device = "/dev/vdb";
12 fsType = "ext4";
13 autoFormat = true;
14 };
15 };
16
17 boot.initrd.systemd.enable = systemdStage1;
18 };
19
20 testScript =
21 { nodes, ... }:
22 let
23 rootDevice = nodes.machine.virtualisation.rootDevice;
24 in
25 ''
26 machine.wait_for_unit("default.target")
27
28 with subtest("root fs is fsckd"):
29 machine.succeed("journalctl -b | grep '${
30 if systemdStage1 then
31 "fsck.*${builtins.baseNameOf rootDevice}.*clean"
32 else
33 "fsck.ext4.*${rootDevice}"
34 }'")
35
36 with subtest("mnt fs is fsckd"):
37 machine.succeed("journalctl -b | grep 'fsck.*vdb.*clean'")
38 machine.succeed(
39 "grep 'Requires=systemd-fsck@dev-vdb.service' /run/systemd/generator/mnt.mount"
40 )
41 machine.succeed(
42 "grep 'After=systemd-fsck@dev-vdb.service' /run/systemd/generator/mnt.mount"
43 )
44 '';
45}