#!/bin/sh . /lib/partman/lib/base.sh set -e cleanup_ro_partitions= mountpoint="$(mktemp -d)" cleanup () { if [ -e $mountpoint ]; then umount -l $mountpoint 2>/dev/null || true rmdir $mountpoint || true fi for p in $cleanup_ro_partitions; do blockdev --setrw $p || true done } trap cleanup EXIT HUP INT QUIT TERM replace= disks= if db_get partman-auto/disk; then disks="$RET" fi for dev in $DEVICES/*; do [ -d $dev ] || continue if [ "$disks" ]; then partman_disk="$(cat "$dev/device")" found=0 for preseed_disk in $disks; do preseed_id=$(mapdevfs $preseed_disk) case " $preseed_id " in *" $partman_disk "*) found=1 ;; *) continue ;; esac done if [ "$found" = "0" ]; then continue fi fi cd $dev open_dialog PARTITIONS while { read_line num id size type fs path name; [ "$id" ]; }; do [ ! "$(echo "$fs" | egrep -s 'free|fat|ntfs|hfs|swap')" ] || continue [ -e "$path" ] || continue part=$dev//$id if [ -n "$fs" ]; then mounted= if type grub-mount >/dev/null 2>&1 && \ grub-mount "$path" "$mountpoint" 2>/dev/null 3>&- 6>&- 7<&-; then mounted=1 else blockdev --setro "$path" || continue cleanup_ro_partitions="$cleanup_ro_partitions $path" if mount -o ro "$path" "$mountpoint" 3>&- 6>&- 7<&-; then mounted=1 fi fi if [ "$mounted" ]; then release="$(grep -s DISTRIB_ID $mountpoint/etc/lsb-release)" || true umount -l "$mountpoint" || true if [ "${release##DISTRIB_ID=}" = "Ubuntu" ]; then db_subst partman-auto/text/replace PARTITION "$(humandev "$path")" db_metaget partman-auto/text/replace description replace="$replace$NL$part$TAB$RET" fi fi fi done for p in $cleanup_ro_partitions; do blockdev --setrw $p || true done close_dialog done if [ "$replace" ]; then printf %s "$replace" fi