给OpenWRT x86扩容磁盘
一般用OpenWRT很少遇到磁盘扩容问题,因为大多数情况磁盘都是不太够用的,除了像这次把OpenWRT安装到了x86平台或者一些性能很好的硬件平台。
这次扩容很有风险,我没有参考官方文档,后果就是,重启后无法使用了。下面是我的操作:
- 用fdisk对sda2分区进行扩容。
- 执行resize2fs失败后重启。
我的openWRT安装后一共有3个分区:
- sda1:boot和efi
- sda2:rootfs
- sda128:不知道做什么用,Type是BIOS boot,虽然名字靠后,但却是磁盘最前面的一个分区
这样看起来,sda2其实是最后一个分区了,我的磁盘是32G, 扩容前,sda2只有几百Mb,用fdisk对其扩容的方法是,先删除sda2,再创建,fdisk默认会把所有空间给新创建的分区,这样就达到了扩容的目的。这一切操作做完后,用fdisk写入。
接下来应该做的事情是:更新GRUB.
因为我没更新GRUB就重启了,系统就引导不起来了,我用了Ubuntu LiveCD,挂上了sda1和sda2,在LiveCD中手动更新了GRUB。
其实更新的是Grub.cfg
中的PARTUUID
,这个UUID因为我对磁盘进行了操作,发生变化,具体应该是多少,可以使用blkid
看到,这个命令在LiveCD中有,在openWRT中木有,可以自己安装:opkg install blkid
/dev/sda2: LABEL="rootfs" UUID="ff313567-e9f1-5a5d-9895-3ba130b4a864" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="b128d07f-4a5c-a446-8031-eeca88264c23"
/dev/sda128: PARTUUID="48795c87-0ae5-eebd-bb4f-47c358486380"
/dev/sda1: SEC_TYPE="msdos" LABEL_FATBOOT="kernel" LABEL="kernel" UUID="1234-ABCD" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="48795c87-0ae5-eebd-bb4f-47c358486301"
这里的sda2的PARTUUID,需要在grub.cfg中出现,例如:
serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1 --rtscts=off
terminal_input console serial; terminal_output console serial
set default="0"
set timeout="0"
search -l kernel -s root
menuentry "OpenWrt" {
linux /boot/vmlinuz root=PARTUUID=b128d07f-4a5c-a446-8031-eeca88264c23 rootwait console=tty0 console=ttyS0,115200n8 noinitrd
}
menuentry "OpenWrt (failsafe)" {
linux /boot/vmlinuz failsafe=true root=PARTUUID=b128d07f-4a5c-a446-8031-eeca88264c23 rootwait console=tty0 console=ttyS0,115200n8 noinitrd
}
更新好grub.cfg之后,重启就能引导系统了。因为之前还缺resize2fs操作,我在LiveCD中做了一下,似乎还需要执行e2fsck,发现一些错误并修复了,希望这个操作不是必要的。