SBC-sig/scripts/configs-rpi/extend-root.sh

50 lines
1.4 KiB
Bash
Executable File

#!/bin/bash
# chkconfig: - 99 10
# description: extend root
set -e
extend_root(){
ROOT_PART="$(findmnt / -o source -n)" # /dev/mmcblk0p3
ROOT_DEV="/dev/$(lsblk -no pkname "$ROOT_PART")" # /dev/mmcblk0
PART_NUM="$(echo "$ROOT_PART" | grep -o "[[:digit:]]*$")" # 3
PART_INFO=$(parted "$ROOT_DEV" -ms unit s p)
# BYT;
# /dev/mmcblk0:31116288s:sd/mmc:512:512:msdos:SD SC16G:;
# 1:8192s:593919s:585728s:fat16::boot, lba;
# 2:593920s:1593343s:999424s:linux-swap(v1)::;
# 3:1593344s:31116287s:29522944s:ext4::;
LAST_PART_NUM=$(echo "$PART_INFO" | tail -n 1 | cut -f 1 -d:) # 3
PART_START=$(echo "$PART_INFO" | grep "^${PART_NUM}" | cut -f 2 -d: | sed 's/[^0-9]//g') # 1593344
PART_END=$(echo "$PART_INFO" | grep "^${PART_NUM}" | cut -f 3 -d: | sed 's/[^0-9]//g') # XXXX < 31116288
ROOT_END=$(echo "$PART_INFO" | grep "^/dev"| cut -f 2 -d: | sed 's/[^0-9]//g') # 31116288
((ROOT_END--)) # 31116287
if [ $PART_END -lt $ROOT_END ]; then
fdisk "$ROOT_DEV" <<EOF
p
d
$PART_NUM
n
p
$PART_NUM
$PART_START
p
w
EOF
resize2fs $ROOT_PART
echo "Extend $ROOT_PART finished." >> /var/log/extend-root.log
else
echo "Already the largest! Do not need extend any more!" >> /var/log/extend-root.log
fi
return 0
}
if extend_root; then
rm -f /etc/rc.d/init.d/extend-root.sh
else
echo "Fail to root!" >> /var/log/extend-root.log
fi