Skip to content
This repository was archived by the owner on Aug 2, 2025. It is now read-only.
Open
Show file tree
Hide file tree
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 55 additions & 0 deletions installer/functions
Original file line number Diff line number Diff line change
Expand Up @@ -239,3 +239,58 @@ websocketcommand() {
echo "EError timeout"
fi
}

# Check space requirements on CHROOTS partition
# $1: the partition's minimum size threshold
# $2: the partition's minimum available space threshold
check_space() {
local part="${CHROOTS:-/usr/local}"
df -m $part | awk 'FNR == 2 {print $2,$4}' | {
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

quote $part

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

quoted.

read -r size avail
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

indentation

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done.

if [ "$size" -lt "$1" ]; then
local size_gb="$((${size}/1000))GB"
echo "WARNING: Your CHROOTS partition is rather small (${size_gb})."
echo "WARNING: Usually $((${1}/1000))GB or more is recommended. "
return 1
elif [ "$avail" -lt "$2" ]; then
local avail_gb="$((${avail}/1000))GB"
echo "WARNING: Your available space for CHROOTS is rather small (${avail_gb})."
echo "WARNING: Usually $((${2}/1000))GB or more is needed. "
return 2
else
echo "Your space requirements for CHROOTS have been met."
return 0
fi
}
}

# Check if partition 7 / ROOT-C (dual-boot installs) has been resized
# normally called when space requirements on the CHROOTS partiton aren't met
check_dualboot() {
local disk="$(rootdev -s -d)"
local dualboot_part="$(rootdev -s | sed 's/.$/7/')"
local dualboot_size="$(cgpt show -i7 -s ${disk})"
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

probably should quote $disk

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

quoted.

if [ "$dualboot_size" -gt 1 ]; then
echo "WARNING: Partiton 7, normally used for dual-boot installs, has been resized"
local tmp="`mktemp -d --tmpdir=/tmp 'check-dualboot.XXX'`"
local unmount="umount -l '$tmp' 2>/dev/null && rmdir '$tmp'"
addtrap "$unmount"
mount $dualboot_part "$tmp" 2>/dev/null
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mount -o ro

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

also, quoting on $dualboot_part

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

added 'ro' option and quoted.

df -m "$tmp" | awk 'FNR == 2 {print $2,$3,$4}' | {
read -r size used avail
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

indentation

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done.

local dualboot_size_gb="$((${size}/1000))GB"
local dualboot_used_gb="$((${used}/1000))GB"
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this isn't used

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

removed 'used' from awk output and elsewhere.

local dualboot_avail_gb="$((${avail}/1000))GB"
echo "WARNING: to ${dualboot_size_gb}, with ${dualboot_avail_gb} free."
}
distrib="$(grep 'DISTRIB_DESCRIPTION=' "$tmp/etc/lsb-release" 2>/dev/null | cut -d= -f2)"
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

once you fix the indentation, please make sure all lines are <80 chars wide

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

adjusted line lengths to <80chars 'ish...

if [ -n "$distrib" ]; then
echo "WARNING: (It appears to have $distrib installed.)"
fi
undotrap
eval "$unmount"
return 1
else
return 0
fi
}
11 changes: 11 additions & 0 deletions installer/main.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ INSTALLERDIR="$SCRIPTDIR/installer"
HOSTBINDIR="$SCRIPTDIR/host-bin"
TARGETSDIR="$SCRIPTDIR/targets"
SRCDIR="$SCRIPTDIR/src"
AVAILMIN=2000 # in MB
SIZEMIN=4000 # in MB

ARCH=''
BOOTSTRAP_RELEASE=''
Expand Down Expand Up @@ -366,6 +368,15 @@ addtrap "stty echo 2>/dev/null"
BIN="$PREFIX/bin"
CHROOTS="$PREFIX/chroots"

# Check if space requirements have been met
# if not, check for dualboot
if ! check_space "$SIZEMIN" "$AVAILMIN"; then
sleep 3
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

probably don't want output, delay, more output, more delay.

the other instances we do this, we have extra text that says something like "installation will continue in 5 seconds, or hit ctrl-c to cancel"...copy that text?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed multiple delays and added message that installation will continue after 5s.

if ! check_dualboot; then
sleep 2
fi
fi

if [ -z "$RESTOREBIN" ]; then
# Fix NAME if it was not specified.
CHROOT="$CHROOTS/${NAME:="${RELEASE:-"$DEFAULTRELEASE"}"}"
Expand Down