#!/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" <> /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