ubuntu-22.04.3-desktop-amd64/casper/filesystem/usr/lib/partman/check.d/10alignment_ext3

49 lines
1.2 KiB
Bash
Executable File

#!/bin/sh
. /lib/partman/lib/base.sh
bad=
for dev in $DEVICES/*; do
[ -d "$dev" ] || continue
cd "$dev"
partitions=
open_dialog PARTITIONS
while { read_line num id size type fs path name; [ "$id" ]; }; do
[ "$fs" != free ] || continue
partitions="$partitions $id,$path"
done
close_dialog
for part in $partitions; do
id="${part%,*}"
path="${part#*,}"
[ -f "$id/method" ] || continue
[ -f "$id/format" ] || continue
[ -f "$id/acting_filesystem" ] || continue
[ -f "$id/mountpoint" ] || continue
filesystem="$(cat "$id/acting_filesystem")"
mountpoint="$(cat "$id/mountpoint")"
case $filesystem in
ext3|ext4)
if [ -f $id/formatted ] && \
[ $id/formatted -nt $id/method ] && \
([ ! -f $id/filesystem ] || \
[ $id/formatted -nt $id/filesystem ]); then
continue
fi
open_dialog ALIGNMENT_OFFSET $id
read_line offset
close_dialog
if [ "$offset" != 0 ]; then
db_subst partman-ext3/bad_alignment PARTITION "$path"
db_subst partman-ext3/bad_alignment MOUNTPOINT "$mountpoint"
db_subst partman-ext3/bad_alignment OFFSET "$offset"
db_input critical partman-ext3/bad_alignment || true
db_go || true
exit 1
fi
;;
esac
done
done