环境
Armbian_20.10_Arm-64_bullseye_current_5.9.0.img.xz
Debian 10.9 虚拟机一台
本文的 N1 安装 Armbian,将在之后的文章中提供。
ALert!label=ROOT_EMMC does not exist
描述
N1 U盘引导,成功安装 Armbian,执行 ddrb 备份。
执行 ./install-aml.sh 将 U盘中的 Armbian 系统写入 N1 自带的 Emmc。
执行 poweroff 断电,拔掉 U盘,重新拔插电源,正常引导进入 Emmc 中的 Armbian 系统。
重新拔插电源,无法正常进入 Emmc 中的系统。
引导过程中报错:
Begin: Running /scripts/local-block ... done.
ALert!label=ROOT_EMMC does not exist.
之后进入"(initramfs)"模式。此模式下,好多命令将不可用,其中 ddrb 恢复也不可使用。
尝试插入 U盘,进入 U盘系统。
尝试制作第二个Armbian U盘,重新引导安装 Armbian。
结果均失败,仍就进入 Emmc 中系统引导,并报相同错误。
概括
N1 U盘 Armbian 写入 Emmc 后,第一次能启动,之后不能启动进入 Emmc 中的 Armbian 系统,且无法进入 U盘系统及 U盘引导。
解决
搜索发现,这个偶然事件出现的概率有点大,N多网友遇到这个问题。
而网友给出的方案大致分为两类:U盘启动可用类,U盘启动不可用类。
本方案未采用网友的方案...原因会在网友方案中表述。
本次解决方案,属于 U盘启动不可用类。属于解决思路式方案,理论可用于所有出现该问题的设备,不仅限于 N1。
由于本次使用新 U盘想复现问题...以便测试相关问题...结果并未复现...
步骤
在 N1 的 "(initramfs)"模式中:
首先确认报错中的 label 的值 ROOT_EMMC。
之后,执行 blkid,将会看到类似如下,记住无 LABEL 的 dev。
N1 通常为"/dev/mmcblk1p2"。
/dev/mmcblk1p1: ... LABEL="BOOT_EMMC"...
/dev/mmcblk1p2: PARTUUID="*******"
在 Debian 10.9 虚拟中:
将已写入系统的 U盘(本次使用第二个 U盘,该重新写入的 Armbian 系统的 U盘)连接到虚拟机中,同样执行 blkid,将会看到类似如下:
/dev/sda1: UUID="b450d5d2-b55d-46c4-8b67-b1b00caee86d" TYPE="ext2" PARTUUID="4f9681a5-01"
/dev/sda5: UUID="UOpvUW-0tPn-kC90-PnHi-W0mU-6kw0-N262mC" TYPE="LVM2_member" PARTUUID="4f9681a5-05"
/dev/mapper/debian10--vg-root: UUID="5a494b0a-ed97-4440-93e8-ef1be074092a" TYPE="ext4"
/dev/sdb: UUID="dIV1ow-yCqA-3QJ3-HDmR-vFc7-LZ2P-3quvpI" TYPE="LVM2_member"
/dev/mapper/debian10--vg-swap_1: UUID="2a768c1b-2705-4cd5-8eed-acd36444b051" TYPE="swap"
/dev/mapper/debian10--vg-var: UUID="64a45adb-e44b-4844-97bd-125251019789" TYPE="ext4"
/dev/mapper/debian10--vg-tmp: UUID="f4906b19-e2ad-48f6-a5e9-30b68dce2dd8" TYPE="ext4"
/dev/mapper/debian10--vg-home: UUID="f3afc348-f782-47dc-9b77-e6de95c7ef2c" TYPE="ext4"
/dev/sdc1: LABEL_FATBOOT="BOOT" LABEL="BOOT" UUID="D414-08C4" TYPE="vfat" PARTUUID="42c5b739-01"
/dev/sdc2: LABEL="ROOTFS" UUID="1dc45654-561e-4f35-a95d-99da0c9b1d38" TYPE="ext4" PARTUUID="42c5b739-02"
找到 LABEL 为 ROOTFS 的设备 /dev/sdc2。(通常在最后)
执行如下,需要等一会。
e2label /dev/sdc2 ROOT_EMMC
之后,再次执行 blkid,确认 /dev/sdc2 设备的 LABEL 已经为 ROOT_EMMC。
断开虚拟机与 U盘的连接,并取出。
插入断电的 N1,再将 N1 通电,则会重新安装 Armbian 系统。
安装系统后,再次执行 ./install-aml.sh,写入系统到 Emmc。
测试 poweroff 或强制断电,均未出现该问题。
网友方案
以下所有方案,由于相关原因,个人均未尝试。
U盘启动可用类:
- 插入 U盘,"重新执行写入 Emmc 操作"或"直接重新引导安装"。
- 插入 U盘,更改写入 Emmc 脚本,替换了引导参数。由 Label 类型直接替换成了具体的 dev 类型。该方案在参考 1。
- 此方案基于 2,有网友遇到此问题,未解决,又基于上个方案,写了更改 uEnv.txt 启动参数的方案... 该方案在参考 2。仍就是 Label 类型直接替换成了 dev 类型。
弃用原因
1 以上情况,均需要 U盘可正常引导,进入 U盘系统,方可操作...但是本次情况,无法进入 U盘引导...放弃... 至于为什么无法进入 U盘引导启动...系统版本不一致,脚本参数不一致等等 N多情况,都有可能影响...深入研究就太费时间了...
2 虽然只是处于初步了解 Linux,但是个人非常不建议将引导的 Label 类型替换成 dev 类型。:aru:shutup:: 这个其实占了主要原因...强迫症患者...
U盘不可启动类
大概是抹掉所有,刷官改/安卓/电视系统,再 adb 启动刷 N1 重复。
弃用原因
此方案仅仅是将 Armbian 刷入 N1,理论上解决问题仍然需要使用更改引导的 Label 类型替换成 dev 类型...(实际在复现的过程中,似乎直接重装即可?)
其次,刚接触 N1,连官改/安卓/电视系统是指的什么都不清楚...
个人只是想折腾个 Armbian 而已...由于个人本身就常备 Debian 虚拟机...就懒得去搞那些了...
参考
www.right.com.cn/forum/thread-4050812-14-1.html
www.right.com.cn/forum/thread-4089983-1-1.html
www.reddit.com/r/linuxquestions/comments/j6wa43/need_help_please_failed_to_boot_armbian_on/
终于拯救了我的砖头,太感谢了