#!/bin/sh . /usr/share/debconf/confmodule [ -f /target/etc/fstab ] || exit 0 OS=$(udpkg --print-os) escape () { printf %s "$1" | \ sed 's/\\/\\134/g; s/ /\\040/g; s/ /\\011/g; s/\n/\\012/g' } # dev, mountpoint, type, options, dump, pass addfstab () { printf "%-15s %-15s %-7s %-15s %-7s %s\n" \ "$(escape "$1")" "$(escape "$2")" \ "$(escape "$3")" "$(escape "$4")" \ "$5" "$6" } db_get partman/mount_style style="$RET" fstab=$( for i in /lib/partman/fstab.d/*; do [ -x "$i" ] || continue $i done | while read fs mp type options dump pass; do echo $mp $fs $type $options $dump $pass done | sort | while read mp fs type options dump pass; do case "$fs" in (/dev/disk/*|/dev/fd[0-9]*|/dev/mapper/*) addfstab "$(mapdevfs $fs)" "$mp" "$type" "$options" "$dump" "$pass" ;; (/*) dev="/var/lib/partman/devices/$(echo "$fs" | sed 's:/:=:g')" if [ -f "$dev/loop" ]; then loop="$(cat "$dev/loop")" if [ "$options" = defaults ]; then options=loop else options="loop,$options" fi addfstab "$loop" "$mp" "$type" "$options" "$dump" "$pass" else case "$mp" in (/*) desc="$mp" ;; (*) desc="$type" ;; esac if [ "$style" = label ] && \ label="$(block-attr --label $fs)" && \ [ "$label" ]; then printf "# %s was on %s during installation\n" "$desc" "$(mapdevfs $fs)" addfstab "LABEL=$label" "$mp" "$type" "$options" "$dump" "$pass" elif ([ "$style" = label ] || [ "$style" = uuid ]) && \ uuid="$(block-attr --uuid $fs)" && \ [ "$uuid" ]; then printf "# %s was on %s during installation\n" "$desc" "$(mapdevfs $fs)" addfstab "UUID=$uuid" "$mp" "$type" "$options" "$dump" "$pass" else addfstab "$(mapdevfs $fs)" "$mp" "$type" "$options" "$dump" "$pass" fi fi ;; ([a-zA-Z]*/ROOT/*) if [ "$type" = "zfs" -a "$mp" != "/" ]; then # This is definitely a ZFS, it's not the root fs (which is auto mounted # in the initrd). addfstab "$fs" "$mp" "$type" "$options" "$dump" "$pass" fi ;; esac done ) echo "$fstab" >>/target/etc/fstab