2006-12-21 15:22:40 +01:00
|
|
|
{utillinux, fileSystems}:
|
|
|
|
|
|
|
|
let
|
|
|
|
|
|
|
|
# !!! use XML
|
|
|
|
mountPoints = map (fs: fs.mountPoint) fileSystems;
|
|
|
|
devices = map (fs: fs.device) fileSystems;
|
2006-12-21 15:44:22 +01:00
|
|
|
fsTypes = map (fs: if fs ? fsType then fs.fsType else "auto") fileSystems;
|
|
|
|
optionss = map (fs: if fs ? options then fs.options else "defaults") fileSystems;
|
2006-12-21 15:22:40 +01:00
|
|
|
|
|
|
|
in
|
|
|
|
|
|
|
|
{
|
|
|
|
name = "filesystems";
|
|
|
|
|
|
|
|
job = "
|
|
|
|
start on startup
|
|
|
|
start on new-devices
|
|
|
|
|
|
|
|
script
|
|
|
|
mountPoints=(${toString mountPoints})
|
|
|
|
devices=(${toString devices})
|
2006-12-21 15:44:22 +01:00
|
|
|
fsTypes=(${toString fsTypes})
|
|
|
|
optionss=(${toString optionss})
|
2006-12-21 15:22:40 +01:00
|
|
|
|
|
|
|
for ((n = 0; n < \${#mountPoints[*]}; n++)); do
|
|
|
|
mountPoint=\${mountPoints[$n]}
|
|
|
|
device=\${devices[$n]}
|
2006-12-21 15:44:22 +01:00
|
|
|
fsType=\${fsTypes[$n]}
|
|
|
|
options=\${optionss[$n]}
|
2006-12-21 15:22:40 +01:00
|
|
|
|
|
|
|
# If $device is already mounted somewhere else, unmount it first.
|
|
|
|
prevMountPoint=$(cat /proc/mounts | grep \"^$device \" | sed 's|^[^ ]\\+ \\+\\([^ ]\\+\\).*|\\1|')
|
|
|
|
|
2006-12-21 15:44:22 +01:00
|
|
|
if test \"$prevMountPoint\" = \"$mountPoint\"; then
|
|
|
|
echo \"remounting $device on $mountPoint\"
|
|
|
|
${utillinux}/bin/mount -t \"$fsType\" -o remount,\"$options\" \"$device\" \"$mountPoint\" || true
|
|
|
|
continue
|
|
|
|
fi
|
2006-12-21 15:22:40 +01:00
|
|
|
|
|
|
|
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
|
2006-12-21 15:44:22 +01:00
|
|
|
${utillinux}/bin/mount -t \"$fsType\" -o \"$options\" \"$device\" \"$mountPoint\" || true
|
2006-12-21 15:22:40 +01:00
|
|
|
done
|
|
|
|
|
|
|
|
end script
|
|
|
|
";
|
|
|
|
|
|
|
|
}
|