1

我使用可以使用 sd 卡或 emmc 启动的 imx.6 sabresd 板。我可以使用 u-boot 正确启动 linux,并为 rootfs 提供具有正确位置的适当 bootargs。但是当使用 eMMC 启动 Linux 时,设备名称从插入 sd 卡时的 /dev/mmcblk1 更改为未插入 sd 卡时的 /dev/mmcblk0。

现在,当我不知道要使用哪个设备时,如何使用 bootargs 参数在 u-boot 中给出正确的 root=?

当然,我可以在 u-boot 中进行一些测试以检查是否插入了 sd 卡并更改 bootargs 参数(只是一个想法,但尚未测试)但实际上我希望有一个更优雅的解决方案?有什么建议么?

4

1 回答 1

1

如果您的内核和 rootfs 位于同一设备(sd-card 或 emmc),您可以尝试先从 sd-card 然后从 emmc 依次启动。见想法:

boot_sdcard=setenv bootargs 'root=/dev/mmcblk1 ...'; run load_kernel_sdcard; bootm
boot_emmc=setenv bootargs 'root=/dev/mmcblk0 ...'; run load_kernel_emmc; bootm
bootcmd=run boot_sdcard; run boot_emmc

如果没有 sdcard 和 u-boot continue boot form emmc,内核将无法启动。

于 2016-02-08T15:56:41.040 回答