Merge pull request #197254 from Atemu/fstab-escape-options
This commit is contained in:
commit
c021df5792
5 changed files with 36 additions and 5 deletions
|
@ -342,6 +342,14 @@ checkFS() {
|
|||
return 0
|
||||
}
|
||||
|
||||
escapeFstab() {
|
||||
local original="$1"
|
||||
|
||||
# Replace space
|
||||
local escaped="${original// /\\040}"
|
||||
# Replace tab
|
||||
echo "${escaped//$'\t'/\\011}"
|
||||
}
|
||||
|
||||
# Function for mounting a file system.
|
||||
mountFS() {
|
||||
|
@ -569,7 +577,7 @@ while read -u 3 mountPoint; do
|
|||
continue
|
||||
fi
|
||||
|
||||
mountFS "$device" "$mountPoint" "$options" "$fsType"
|
||||
mountFS "$device" "$(escapeFstab "$mountPoint")" "$(escapeFstab "$options")" "$fsType"
|
||||
done
|
||||
|
||||
exec 3>&-
|
||||
|
|
|
@ -167,7 +167,7 @@ let
|
|||
else throw "No device specified for mount point ‘${fs.mountPoint}’.")
|
||||
+ " " + escape (rootPrefix + fs.mountPoint)
|
||||
+ " " + fs.fsType
|
||||
+ " " + builtins.concatStringsSep "," (fs.options ++ (extraOpts fs))
|
||||
+ " " + escape (builtins.concatStringsSep "," (fs.options ++ (extraOpts fs)))
|
||||
+ " " + (optionalString (!excludeChecks)
|
||||
("0 " + (if skipCheck fs then "0" else if fs.mountPoint == "/" then "1" else "2")))
|
||||
+ "\n"
|
||||
|
|
|
@ -77,6 +77,7 @@ in rec {
|
|||
(onFullSupported "nixos.tests.i3wm")
|
||||
(onSystems ["x86_64-linux"] "nixos.tests.installer.btrfsSimple")
|
||||
(onSystems ["x86_64-linux"] "nixos.tests.installer.btrfsSubvolDefault")
|
||||
(onSystems ["x86_64-linux"] "nixos.tests.installer.btrfsSubvolEscape")
|
||||
(onSystems ["x86_64-linux"] "nixos.tests.installer.btrfsSubvols")
|
||||
(onSystems ["x86_64-linux"] "nixos.tests.installer.luksroot")
|
||||
(onSystems ["x86_64-linux"] "nixos.tests.installer.lvm")
|
||||
|
|
|
@ -8,9 +8,10 @@
|
|||
# them when fixed.
|
||||
inherit (import ./installer.nix { inherit system config pkgs; systemdStage1 = true; })
|
||||
# bcache
|
||||
# btrfsSimple
|
||||
# btrfsSubvolDefault
|
||||
# btrfsSubvols
|
||||
btrfsSimple
|
||||
btrfsSubvolDefault
|
||||
btrfsSubvolEscape
|
||||
btrfsSubvols
|
||||
# encryptedFSWithKeyfile
|
||||
# grub1
|
||||
# luksroot
|
||||
|
|
|
@ -911,4 +911,25 @@ in {
|
|||
)
|
||||
'';
|
||||
};
|
||||
|
||||
# Test to see if we can deal with subvols that need to be escaped in fstab
|
||||
btrfsSubvolEscape = makeInstallerTest "btrfsSubvolEscape" {
|
||||
createPartitions = ''
|
||||
machine.succeed(
|
||||
"sgdisk -Z /dev/vda",
|
||||
"sgdisk -n 1:0:+1M -n 2:0:+1G -N 3 -t 1:ef02 -t 2:8200 -t 3:8300 -c 3:root /dev/vda",
|
||||
"mkswap /dev/vda2 -L swap",
|
||||
"swapon -L swap",
|
||||
"mkfs.btrfs -L root /dev/vda3",
|
||||
"btrfs device scan",
|
||||
"mount LABEL=root /mnt",
|
||||
"btrfs subvol create '/mnt/nixos in space'",
|
||||
"btrfs subvol create /mnt/boot",
|
||||
"umount /mnt",
|
||||
"mount -o 'defaults,subvol=nixos in space' LABEL=root /mnt",
|
||||
"mkdir /mnt/boot",
|
||||
"mount -o defaults,subvol=boot LABEL=root /mnt/boot",
|
||||
)
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue