82 lines
1.8 KiB
Bash
Executable File
82 lines
1.8 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
. /lib/partman/lib/auto-lvm.sh
|
|
. /lib/partman/lib/crypto-base.sh
|
|
|
|
dev="$1"
|
|
method=crypto
|
|
|
|
# Ensure we have no (pre-existing) partitions marked as swap as they'd
|
|
# trigger the unsafe_swap test.
|
|
clean_method
|
|
|
|
auto_lvm_prepare $dev $method || exit $?
|
|
|
|
found=no
|
|
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
|
|
if [ "$fs" != free ]; then
|
|
partitions="$partitions $id"
|
|
fi
|
|
done
|
|
close_dialog
|
|
|
|
for id in $partitions; do
|
|
[ -f $id/method ] || continue
|
|
method=$(cat $id/method)
|
|
[ $method = crypto ] || continue
|
|
|
|
echo dm-crypt > $id/crypto_type
|
|
crypto_prepare_method "$dev/$id" dm-crypt || exit 1
|
|
if [ "$(debconf-get partman-auto-crypto/erase_disks)" = "false" ]; then
|
|
touch $id/skip_erase
|
|
fi
|
|
found=yes
|
|
break
|
|
done
|
|
[ $found = yes ] && break
|
|
done
|
|
|
|
crypto_check_setup || exit 1
|
|
crypto_setup no || exit 1
|
|
|
|
# Fix method on PVs now that the crypto devices have been created
|
|
# ($pv_devices has been properly set by auto_lvm_prepare)
|
|
for pv in $pv_devices; do
|
|
dev="$(dev_to_partman $pv)"
|
|
[ -d "$dev" ] || continue
|
|
[ -f "$dev/crypt_realdev" ] || continue
|
|
[ -f "$dev/device" ] || continue
|
|
|
|
# We should have only one partition, but lets be thorough
|
|
cd $dev
|
|
partitions=
|
|
open_dialog PARTITIONS
|
|
while { read_line num id size type fs path name; [ "$id" ]; }; do
|
|
[ "$fs" != free ] || continue
|
|
partitions="$partitions $id"
|
|
done
|
|
close_dialog
|
|
|
|
for id in $partitions; do
|
|
for file in acting_filesystem filesystem format formatable use_filesystem; do
|
|
rm -f $id/$file
|
|
done
|
|
echo lvm > $id/method
|
|
done
|
|
done
|
|
|
|
auto_lvm_perform || exit 1
|
|
|
|
# partman likes to believe that the virtual devices have a changed
|
|
# partition table
|
|
for dev in $DEVICES/*; do
|
|
cd $dev
|
|
open_dialog DISK_UNCHANGED
|
|
close_dialog
|
|
done
|