home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
-
- . /usr/share/debconf/confmodule
-
- [ -f /target/etc/fstab ] || exit 0
-
- 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/*_crypt)
- 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="$(PATH="/lib/udev:$PATH" vol_id -l $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="$(PATH="/lib/udev:$PATH" vol_id -u $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
- ;;
- esac
- done
- )
-
- echo "$fstab" >>/target/etc/fstab
-