* Mount all file systems in the fileSystems option.

svn path=/nixos/trunk/; revision=7449
This commit is contained in:
Eelco Dolstra 2006-12-21 14:22:40 +00:00
parent c78a1d9781
commit b363fc4c57
2 changed files with 51 additions and 0 deletions

View File

@ -31,6 +31,12 @@ import ../upstart-jobs/gather.nix {
inherit (pkgs) kernel module_init_tools;
})
# Mount file systems.
(import ../upstart-jobs/filesystems.nix {
inherit (pkgs) utillinux;
fileSystems = config.get ["fileSystems"];
})
# Swapping.
(import ../upstart-jobs/swap.nix {
inherit (pkgs) utillinux;

View File

@ -0,0 +1,45 @@
{utillinux, fileSystems}:
let
# !!! use XML
mountPoints = map (fs: fs.mountPoint) fileSystems;
devices = map (fs: fs.device) fileSystems;
in
{
name = "filesystems";
job = "
start on startup
start on new-devices
script
mountPoints=(${toString mountPoints})
devices=(${toString devices})
for ((n = 0; n < \${#mountPoints[*]}; n++)); do
mountPoint=\${mountPoints[$n]}
device=\${devices[$n]}
# If $device is already mounted somewhere else, unmount it first.
prevMountPoint=$(cat /proc/mounts | grep \"^$device \" | sed 's|^[^ ]\\+ \\+\\([^ ]\\+\\).*|\\1|')
if test \"$prevMountPoint\" = \"$mountPoint\"; then continue; fi
if test -n \"$prevMountPoint\"; then
echo \"unmount $device from $prevMountPoint\"
${utillinux}/bin/umount \"$prevMountPoint\" || true
fi
echo \"mounting $device on $mountPoint\"
mkdir -p \"$mountPoint\" || true
${utillinux}/bin/mount \"$device\" \"$mountPoint\" || true
done
end script
";
}