Danke für dein Feedback.
ROCKPro64 - Anpassen resize_rootfs.sh
-
Nachdem wir nun von der PCIe NVMe SSD booten können, haben wir ein Problem, die Root Partition ist zu klein. Diese muss vergrößert werden.
Macht das bitte erst auf einem Testsystem!!!
rock64@rockpro64:~$ df -h Filesystem Size Used Avail Use% Mounted on udev 960M 0 960M 0% /dev tmpfs 193M 7.7M 185M 4% /run /dev/nvme0n1p7 1.9G 1.1G 669M 62% / tmpfs 963M 0 963M 0% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 963M 0 963M 0% /sys/fs/cgroup /dev/nvme0n1p6 112M 4.0K 112M 1% /boot/efi tmpfs 193M 0 193M 0% /run/user/1000
Kamil hat ein Script mit Namen
resize_rootfs.sh
das liegt in
/usr/local/sbin
Inhalt
#!/bin/bash if [[ "$(id -u)" -ne "0" ]]; then echo "This script requires root." exit 1 fi dev=$(findmnt / -n -o SOURCE) case $dev in /dev/mmcblk*) DISK=${dev:0:12} NAME="sd/emmc" ;; /dev/sd*) DISK=${dev:0:8} NAME="hdd/ssd" ;; *) echo "Unknown disk for $dev" exit 1 ;; esac
Das passen wir jetzt mal für NVMe an
#!/bin/bash if [[ "$(id -u)" -ne "0" ]]; then echo "This script requires root." exit 1 fi dev=$(findmnt / -n -o SOURCE) case $dev in /dev/mmcblk*) DISK=${dev:0:12} NAME="sd/emmc" ;; /dev/sd*) DISK=${dev:0:8} NAME="hdd/ssd" ;; /dev/nvme0n1*) DISK=${dev:0:12} NAME="pcie/nvme" ;; *) echo "Unknown disk for $dev" exit 1 ;; esac echo "Resizing $DISK ($NAME -- $dev)..." set -xe # move GPT alternate header to end of disk sgdisk -e "$DISK" # resize partition 7 to as much as possible echo ",+,,," | sfdisk "${DISK}" -N7 --force # re-read partition table partprobe "$DISK" # online resize filesystem resize2fs "$dev" echo "Resizing $DISK ($NAME -- $dev)..." set -xe # move GPT alternate header to end of disk sgdisk -e "$DISK" # resize partition 7 to as much as possible echo ",+,,," | sfdisk "${DISK}" -N7 --force # re-read partition table partprobe "$DISK" # online resize filesystem resize2fs "$dev"
Den Befehl ausführen
rock64@rockpro64:/usr/local/sbin$ sudo ./resize_rootfs.sh Resizing /dev/nvme0n1 (pcie/nvme -- /dev/nvme0n1p7)... + sgdisk -e /dev/nvme0n1 Warning: The kernel is still using the old partition table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) The operation has completed successfully. + sfdisk /dev/nvme0n1 -N7 --force + echo ,+,,, Checking that no-one is using this disk right now ... FAILED This disk is currently in use - repartitioning is probably a bad idea. Umount all file systems, and swapoff all swap partitions on this disk. Use the --no-reread flag to suppress this check. Disk /dev/nvme0n1: 232.9 GiB, 250059350016 bytes, 488397168 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 4252573B-53A6-4918-89A6-7802D8D8031F Old situation: Device Start End Sectors Size Type /dev/nvme0n1p1 64 8063 8000 3.9M Linux filesystem /dev/nvme0n1p2 8064 8191 128 64K Linux filesystem /dev/nvme0n1p3 8192 16383 8192 4M Linux filesystem /dev/nvme0n1p4 16384 24575 8192 4M Linux filesystem /dev/nvme0n1p5 24576 32767 8192 4M Linux filesystem /dev/nvme0n1p6 32768 262143 229376 112M Microsoft basic data /dev/nvme0n1p7 262144 4186111 3923968 1.9G Linux filesystem /dev/nvme0n1p7: New situation: Disklabel type: gpt Disk identifier: 4252573B-53A6-4918-89A6-7802D8D8031F Device Start End Sectors Size Type /dev/nvme0n1p1 64 8063 8000 3.9M Linux filesystem /dev/nvme0n1p2 8064 8191 128 64K Linux filesystem /dev/nvme0n1p3 8192 16383 8192 4M Linux filesystem /dev/nvme0n1p4 16384 24575 8192 4M Linux filesystem /dev/nvme0n1p5 24576 32767 8192 4M Linux filesystem /dev/nvme0n1p6 32768 262143 229376 112M Microsoft basic data /dev/nvme0n1p7 262144 488397134 488134991 232.8G Linux filesystem The partition table has been altered. Calling ioctl() to re-read partition table. Re-reading the partition table failed.: Device or resource busy The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8). Syncing disks. + partprobe /dev/nvme0n1 + resize2fs /dev/nvme0n1p7 resize2fs 1.44.5 (15-Dec-2018) Filesystem at /dev/nvme0n1p7 is mounted on /; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 30 The filesystem on /dev/nvme0n1p7 is now 61016873 (4k) blocks long.
Vor dem Neustarten mal abwarten bis die LED der SSD aufhört zu blinken! Sicher ist sicher
Neustarten
rock64@rockpro64:~$ df -h Filesystem Size Used Avail Use% Mounted on udev 960M 0 960M 0% /dev tmpfs 193M 5.3M 188M 3% /run /dev/nvme0n1p7 230G 1.1G 219G 1% / tmpfs 963M 0 963M 0% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 963M 0 963M 0% /sys/fs/cgroup /dev/nvme0n1p6 112M 4.0K 112M 1% /boot/efi tmpfs 193M 0 193M 0% /run/user/1000 rock64@rockpro64:~$ cd /usr/local/sbin
Done.
-
Konnte Kamil davon überzeugen, das das eine gute Idee ist. Wir sind ja alle ein wenig faul
Support automated resize of nvme · ayufan-rock64/linux-package@94188b3
Rock64 Linux compatibility package. Contribute to ayufan-rock64/linux-package development by creating an account on GitHub.
GitHub (github.com)
-
Seit Release 0.10.10 ist das automatische Vergrößern der Root Partition mit drin
- 0.10.10: Support automated resize when booting from nvme
Einfach das Image auf die NVMe SSD schreiben, ab in den ROCKPro64 und fertig! Nach dem Booten wird die Partition dann automatisch auf die maximal mögliche Größe erweitert.
Kamil hat das Script auch ein wenig angepasst.
case $dev in /dev/mmcblk?p?) DISK=${dev:0:12} PART=${dev:13} NAME="sd/emmc" ;; /dev/sd??) DISK=${dev:0:8} PART=${dev:8} NAME="hdd/ssd" ;; /dev/nvme?n?p?) DISK=${dev:0:12} PART=${dev:13} NAME="pcie/nvme" ;;
Das Resultat bei einer Samsung 979 EVO mit 500GB Speicher
rock64@rockpro64:~$ df -h Filesystem Size Used Avail Use% Mounted on udev 918M 0 918M 0% /dev tmpfs 192M 5.2M 187M 3% /run /dev/nvme0n1p4 459G 1.2G 439G 1% / tmpfs 957M 0 957M 0% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 957M 0 957M 0% /sys/fs/cgroup /dev/nvme0n1p3 229M 44M 169M 21% /boot /dev/nvme0n1p2 12M 0 12M 0% /boot/efi tmpfs 192M 0 192M 0% /run/user/1000
Perfekt. Danke Kamil!