首页 > 解决方案 > uEnv.txt 引导文件与嵌入式 Linux 混淆

问题描述

我正在使用存储在可插拔 SD 卡上的 Debian 映像重新刷新 BeagleBone Green 板上的内部 emmc。

我收到的说明是修改 SD 卡映像中的 /boot/uEnv.txt 文件,该文件必须刷新并取消注释最后一行:cmdline=init=/opt/scripts/tools/eMMC/init-eMMC-flasher -v3.sh

这可以正常工作并按预期闪烁内部存储器。我不明白的是,当我在刷新图像时检查 /boot/uEnv.txt 文件时,该行再次被注释掉。这是什么原因造成的?

另外,我认为 /boot/uEnv.txt 文件是引导加载程序的一部分,而不是内核映像。我在这里真的很困惑。

另一件事,对不起,如果它不止一个问题。如果我想修改 SD 卡镜像上的 uEnv.txt 文件,然后将修改后的镜像发送给其他人,该怎么做?

标签: embedded-linuxbeagleboneblackbootloaderu-bootbeagleboard

解决方案


/boot/uEnv.txt 文件正在被 eMMC flasher 脚本修改,该脚本在您使用包含以下行的 uEnv.txt 文件启动板时执行cmdline=init=/opt/scripts/tools/eMMC/init-eMMC-flasher-v3.sh:该文件中的cmdline参数表示内核命令行,U-Boot 传递到该命令行引导时的 Linux 内核。

因此,使用 uEnv.txt 中的那一行,您基本上是在告诉 U-Boot 告诉内核启动“非常规”应用程序而不是默认的 init 程序(它将“正常”启动系统)。这个在 Linux 下运行的应用程序可以访问整个 SD 卡和 eMMC 内存,包括包含 uEnv.txt 文件的分区,并且可以根据需要更改文件内容。

关于您的最后一个问题,您可以使用该dd工具从 Linux shell 创建一个包含修改后的 SD 卡映像的文件,例如:

dd if=/dev/mmcblk0 of=mySDcard.img

在上述命令中,替换/dev/mmcblk0为插入 SD 卡时在系统中创建的块设备文件(必须不挂载其分区才能正常工作);图像文件将创建为mySDcard.img.


推荐阅读