75 lines
1.3 KiB
Bash
Executable File
75 lines
1.3 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# This script removes the lvm flag for partitions whose method is not
|
|
# lvm and sets it for partition whose method is lvm
|
|
|
|
. /lib/partman/lib/base.sh
|
|
|
|
dev=$1
|
|
num=$2
|
|
id=$3
|
|
size=$4
|
|
type=$5
|
|
fs=$6
|
|
path=$7
|
|
|
|
cd $dev
|
|
|
|
if [ $fs = free ]; then
|
|
exit 0
|
|
fi
|
|
|
|
method=
|
|
if [ -f $id/method ]; then
|
|
method=$(cat $id/method)
|
|
fi
|
|
|
|
# Don't fiddle with label on devices where there is no "real" partitioning
|
|
open_dialog GET_LABEL_TYPE
|
|
read_line label
|
|
close_dialog
|
|
if [ "$label" = loop ]; then
|
|
exit 0
|
|
fi
|
|
|
|
has_lvm=no
|
|
flags=''
|
|
open_dialog GET_FLAGS $id
|
|
while { read_line flag; [ "$flag" ]; }; do
|
|
if [ "$flag" != lvm ]; then
|
|
flags="${flags:+$flags$NL}$flag"
|
|
else
|
|
has_lvm=yes
|
|
fi
|
|
done
|
|
close_dialog
|
|
|
|
# Some flags make no sense in combination with lvm
|
|
cleanflags=''
|
|
for flag in $flags; do
|
|
if [ "$flag" = raid ]; then
|
|
continue
|
|
elif [ "$flag" = swap ]; then
|
|
continue
|
|
else
|
|
cleanflags="${cleanflags:+$cleanflags$NL}$flag"
|
|
fi
|
|
done
|
|
|
|
if [ -z "$method" ] && [ "$has_lvm" = yes ]; then
|
|
echo lvm >$dev/$id/method
|
|
rm -f $dev/$id/use_filesystem
|
|
rm -f $dev/$id/format
|
|
elif [ "$method" = lvm ] && [ "$has_lvm" = no ]; then
|
|
open_dialog SET_FLAGS $id
|
|
write_line "$cleanflags"
|
|
write_line lvm
|
|
write_line NO_MORE
|
|
close_dialog
|
|
elif [ "$method" != lvm ] && [ "$has_lvm" = yes ]; then
|
|
open_dialog SET_FLAGS $id
|
|
write_line "$flags"
|
|
write_line NO_MORE
|
|
close_dialog
|
|
fi
|