此文章仅记录当时的openwrt版本

自己买了一台j4125的cpu,4个2.5g螃蟹网卡的软路由。启动硬盘用nvme硬盘,然后加装了1t的2.5寸sata硬盘。
刷入openwrt系统后、出现下面报错
报错信息

调整bios的硬盘加载顺序、但是没什么用

导致这个问题的原因是openwrt 中的 grub 造成的,因为 grub 会自检所有硬件,而发现某个硬件是非启动盘时,就报错这个设备,导致整个系统都无法启动。

只有一个硬盘则不会出现这个问题

解决办法

办法一

修改/boot/grub/grub.cfg配置文件

set root='(hd0,gpt1)'
改为
set root='(hd1,gpt1)'


这个具体的参数是根据硬盘有关
hd1中的1代表第几块硬盘
gpt1代表分区

办法二

未成功验证、我自己是在pe的模式下

两块u盘出现的情况、

目前解决办法是,在启动时把所有非启动用的 U 盘都拔掉,只留下用于启动 openwrt 的 U 盘。 长久的解决办法是,我个人认为是升级 openwrt 中的 grub,目前多数主流的 linux 发行版都用的是 grub2,所以我猜测如果升级成 grub2 可能会修复这个问题。

修改文件:/boot/grub/grub.cfg

set default="0"
set timeout="0"
set root='(hd0,gpt1)'

menuentry "OpenWrt" {
        linux /boot/vmlinuz root=PARTUUID=652735a3-1ccc-0e03-30e8-37e24b0bed02 rootwait   console=tty0 console=ttyS0,115200n8 noinitrd
}

报错提示来自于第三行的 set root='(hd0,gpt1)',如果启动时插了多个外接磁盘(U盘),那么用于启动 openwrt 的 U 盘并不一定被识别为 hd0,gpt1,因此会报错。

在这行下面增加如下一行设置即可解决问题:

search --no-floppy --part-uuid --set=root 652735a3-1ccc-0e03-30e8-37e24b0bed02


注: 652735a3-1ccc-0e03-30e8-37e24b0bed02 是 UUID,把它替换成你启动分区的 uuid,启动分区的 uuid 可通过 blkid 命令查看,如果提示命令未找到,则执行 opkg install blkid

Last modification:December 20, 2021
如果觉得我的文章对你有用,请随意赞赏