2024-10-25 17:48:08 +08:00
|
|
|
#!/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
|
2025-08-29 10:58:38 +08:00
|
|
|
fi
|