Skip to content

Commit f548f64

Browse files
committed
Allow custom variables to be defined as 6th parameter on PART
For example the SWRAIDLEVEL can be changed for different partitions.
1 parent d7805b2 commit f548f64

File tree

1 file changed

+30
-8
lines changed

1 file changed

+30
-8
lines changed

functions.sh

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -802,6 +802,15 @@ if [ -n "$1" ]; then
802802
PART_SIZE[$i]="$(translate_unit "$(echo "$PART_LINE" | awk '{ print $4 }')")"
803803
PART_CRYPT[$i]="$(echo "$PART_LINE" | awk '{print $5}')"
804804
MOUNT_POINT_SIZE[$i]=${PART_SIZE[$i]}
805+
806+
# Print in awk columns from 6 until the end.
807+
EXTRAS="$(echo "$PART_LINE" | awk '{for(i=6;i<=NF;++i)print $i}')"
808+
809+
for extra in $EXTRAS; do
810+
eval "$extra"
811+
PART_EXTRAS[$i]="${PART_EXTRAS[$i]} $extra"
812+
done
813+
805814
#calculate new partition size if software raid is enabled and it is not /boot or swap
806815
if [ "$SWRAID" = "1" ]; then
807816
if [ "${PART_MOUNT[$i]}" != "/boot" ] && [ "${PART_MOUNT[$i]}" != "/boot/efi" ] && [ "${PART_SIZE[$i]}" != "all" ] && [ "${PART_MOUNT[$i]}" != "swap" ]; then
@@ -826,8 +835,8 @@ if [ -n "$1" ]; then
826835
if [ "${PART_MOUNT[$i]}" = "/" ]; then
827836
HASROOT="true"
828837
fi
829-
if [[ -n "${PART_CRYPT[$i]}" ]]; then
830-
CRYPT=1
838+
if [ "${PART_CRYPT[$i]}" = "yes" ]; then
839+
CRYPT="1"
831840
fi
832841
done < /tmp/part_lines.tmp
833842

@@ -2055,7 +2064,7 @@ create_partitions() {
20552064
else
20562065
crypt_part=$(grep "${PART_MOUNT[$i]}" /tmp/part_lines.tmp | grep "crypt" | awk '{print $3}')
20572066
fi
2058-
[ -n "$crypt_part" ] && is_crypted='crypt' || is_crypted=''
2067+
[ -n "$crypt_part" ] && is_crypted='crypt' || is_crypted='no'
20592068

20602069
#create GPT partitions
20612070
if [ $GPT -eq 1 ]; then
@@ -2088,7 +2097,7 @@ create_partitions() {
20882097
fi
20892098
fi
20902099

2091-
make_fstab_entry "$1" "$i" "${PART_MOUNT[$i]}" "${PART_FS[$i]}" "$is_crypted"
2100+
make_fstab_entry "$1" "$i" "${PART_MOUNT[$i]}" "${PART_FS[$i]}" "$is_crypted" "${PART_EXTRAS[$i]}"
20922101

20932102
else
20942103
# part without GPT
@@ -2157,9 +2166,9 @@ create_partitions() {
21572166
fi
21582167

21592168
if [ "$PART_COUNT" -ge "4" -a "$i" -ge "4" ]; then
2160-
make_fstab_entry "$1" "$[$i+1]" "${PART_MOUNT[$i]}" "${PART_FS[$i]}" "$is_crypted"
2169+
make_fstab_entry "$1" "$[$i+1]" "${PART_MOUNT[$i]}" "${PART_FS[$i]}" "$is_crypted" "${PART_EXTRAS[$i]}"
21612170
else
2162-
make_fstab_entry "$1" "$i" "${PART_MOUNT[$i]}" "${PART_FS[$i]}" "$is_crypted"
2171+
make_fstab_entry "$1" "$i" "${PART_MOUNT[$i]}" "${PART_FS[$i]}" "$is_crypted" "${PART_EXTRAS[$i]}"
21632172
fi
21642173
fi
21652174
done
@@ -2209,7 +2218,7 @@ create_partitions() {
22092218
}
22102219

22112220
# create fstab entries
2212-
# make_fstab_entry "DRIVE" "NUMBER" "MOUNTPOINT" "FILESYSTEM" ("crypt")
2221+
# make_fstab_entry "DRIVE" "NUMBER" "MOUNTPOINT" "FILESYSTEM" ("crypt") ("extras")
22132222
make_fstab_entry() {
22142223
if [ "$1" -a "$2" -a "$3" -a "$4" ]; then
22152224
ENTRY=""
@@ -2254,6 +2263,10 @@ make_fstab_entry() {
22542263
fi
22552264
fi
22562265

2266+
if [ -n "$6" ]; then
2267+
ENTRY="$ENTRY # HZ-CFG:$6"
2268+
fi
2269+
22572270
echo $ENTRY >> "$FOLD/fstab"
22582271

22592272
if [ "$3" = "/" ]; then
@@ -2331,6 +2344,16 @@ make_swraid() {
23312344
while read line ; do
23322345
PARTNUM="$(next_partnum $count)"
23332346
echo "Line is: \"$line\"" | debugoutput
2347+
2348+
local array_raidlevel="$SWRAIDLEVEL"
2349+
2350+
OVERRIDES=$(echo $line | sed -n "/HZ-CFG/s/.*# HZ-CFG:\(.*\)$/\1/p")
2351+
if [ -n "$OVERRIDES" ]; then
2352+
for override in $OVERRIDES; do
2353+
eval "$override"
2354+
done
2355+
fi
2356+
23342357
# If multiple ESPs are supported by grub-efi-amd64, a workaround for the fstab is necessary in order to create the RAID array correctly
23352358
if [ -n "$(echo "$line" | grep "/boot/efi")" ] && [ "$IAM" == "ubuntu" -a "$IMG_VERSION" -ge 2004 ] && [ "$UEFI" -eq 1 ]; then
23362359
if [ "$EFIPART" -eq 0 ] && [ -n "$(echo $line | grep $LASTDRIVE)" ]; then
@@ -2367,7 +2390,6 @@ make_swraid() {
23672390
done
23682391

23692392
local array_metadata="$metadata"
2370-
local array_raidlevel="$SWRAIDLEVEL"
23712393
local can_assume_clean=''
23722394
local array_layout=''
23732395

0 commit comments

Comments
 (0)