我有一个 BeagleBone Black,带有 Debian 8.3、Linux 4.1.15-ti-rt-r43。
编辑:系统安装在内部闪存上。
我修改了 /boot/uEnv.txt 以加载不同的 dtb 文件,显然文件名错误,因此它无法启动到 Linux。
所以我通过我的 PC 上的 J1 引脚/UART0 -> 终端程序连接。我看到 U-Boot 抱怨找不到文件,所以它不会启动 Linux,并给了我 U-Boot 命令。输入“帮助”后列出的内容看起来不是很有用。
使用 U-Boot 命令从我的串行控制台修复 uEnv.txt 是否可能且可行 - 这会起作用......如何?或者,最好的方法是什么?
编辑#2:在这个网站上找到一些有用的碎片,这并不能完全说明问题,但会引导一个有用的方向:https ://www.compulab.co.il/utilite-computer/wiki/index.php/Utilite_U-Boot_User_How -To%27s我发现我实际上可以看到 uEnv.txt 在 U-Boot 控制台中输入:“ls mmc 1 boot”,U-Boot 中的 ls 命令需要设备名 + num,显然我的 SD 卡是 mmc0,内部闪存 mmc1,有趣的命令。唉,U-Boot 没有“猫”,显然更不用说编辑器了。就像一个带着遥控手臂的孩子试图抓住一只毛绒动物换一些硬币,不能完全抓住我的文件,而且它是如此接近,啊!
编辑#3:我看到我在 mmc1 上有一个旧的 uEnv.txt 备份文件。有 U-Boot 命令“加载”,将文件加载到内存中,以及“保存”,以保存文件。您必须指定地址和大小。您从“ls mmc 1 boot”命令看到的文件大小。查看这张幻灯片第 35 页上的内存映射:https ://www.slideshare.net/chrissimmonds/embedded-linux-quick-start-guide,RAM从0x80000000开始。猜测如果只有 U-Boot 在 RAM 中,希望在 384 MB 上什么都没有,我尝试将文件加载到98000000,并从那里保存,但保存返回“无法写入文件”。太糟糕了。
好吧,我放弃了 U-Boot 路线,虽然它会很酷,如果它起作用的话。
我抓住了 BeagleBone Debian 映像的 IoT 变体(仅限控制台,无 GUI,下载速度更快),例如“Stretch IoT(无图形桌面)”: https ://beagleboard.org/latest-images
并按照此处的步骤操作:http: //beagleboard.org/getting-started
有一个如何刷新它的链接,即需要额外的步骤 - 很好,我记错了。担心 sdcard 启动会闪烁内部 emmc,这是我不想要的。
如前所述,当插入 SD 卡时,sdcard mmc 设备编号为 0,内部闪存 (emmc) 为 1。另外,emmc 上的文件系统显然是 ext4。所以你需要安装它:
然后你可以直接进入挂载的 emmc 上的 boot 文件夹:
并使用编辑器或您事先确定的备份修复 uEnv.txt ;)
我稍后再写,但它可以帮助别人。
如果您有 的备份
uEnv.txt
,那么它既快速又简单。如果你有它在你的电脑上的某个地方,那么你可以将它复制到 sd 卡,然后从 sd 到 ram 和从 ram 到 emmc首先,将文件内容复制到 RAM 内存中:
然后将文件内容写入新文件:
注意: ext4write 采用十六进制的字节数。
注意:
mmc 1
是我的rootfs 分区。使用该命令mmc list
查看设置中的分区。