我无法启动bananapro板,可能是因为SD卡布局

我无法启动bananapro板,可能是因为SD卡布局

感谢 yocto,我成功编译了一个 Linux 发行版。我有 4 个不同的文件,它们是:

bootloader u-boot-sunxi-with-spl.bin-bananapi-2020.01-r0
kernel uImage--5.4.111-r0-bananapi-20230504112433.bin
rootfs core-image-minimal-bananapi-20230504112433.rootfs.ext4 
device tree sun7i-a20-bananapi--5.4.111-r0-bananapi-20230504112433.dtb

我遵循了以下指示https://linux-sunxi.org/Bootable_SD_card

我所做的事情如下:

  1. 我创建了分区并将文件系统设置为分区。这就是SD卡的现状。
label: dos
label-id: 0x65bf9d54
device: /dev/mmcblk0
unit: sectors
/dev/mmcblk0p1 : start=        2048, size=      204800, type=6, bootable
/dev/mmcblk0p2 : start=      206848, size=    60225536, type=83

  1. 根据文档闪烁启动代码是
dd if=u-boot-sunxi-with-spl.bin of=${card} bs=1024 seek=8

我使用以下代码代替上面的代码:

dd if=u-boot-sunxi-with-spl.bin-bananapi-2020.01-r0 of=/dev/mmcblk0 bs=1024 seek=8

这是输出:

965+1 records in
965+1 records out
494399 bytes (494 kB, 483 KiB) copied, 0.117692 s, 4.2 MB/s

问题:我不应该dd把它放到第一个分区(/dev/mmcblk0p1)吗?


  1. 然后我按照文档将内核复制到第一个分区
sudo cp uImage--5.4.111-r0-bananapi-20230504112433.bin /mnt/mmcblk0p1 

  1. 我将设备树复制到第一个分区
sudo cp ~/Documents/shared_with_VB/bananapi/sun7i-a20-bananapi--5.4.111-r0-bananapi-20230504112433.dtb /mnt/mmcblk0p1

  1. 我将 rootfs 复制到第二个分区
sudo cp ~/Documents/shared_with_VB/bananapi/core-image-minimal-bananapi-20230504112433.rootfs.ext4 /mnt/mmcblk0p2

然后我把SD卡放在开发板上并给开发板供电,什么也没发生。

问题:我是否犯了一个错误,或者有人可以建议采取什么步骤或遵循什么?

答案1

回答第一个问题

不会。第一个分区是 FAT 卷,U-Boot 将在其中找到要启动的内核和使用的设备树。但 U-Boot 本身需要放置在其他地方。距离 SD 卡起始位置 8 kByte 的偏移是第一阶段引导加载程序 (SPL?) 可以找到的常见位置。它位于分区表和第一个分区开头之间的未使用区域内。

回答第二个问题

您的 rootfs 文件是 ext4 文件系统映像,因此您需要刷新该映像:

sudo dd if=~/Documents/shared_with_VB/bananapi/core-image-minimal-bananapi-20230504112433.rootfs.ext4 of=/mnt/mmcblk0p2 bs=1M

如果您在串行控制台上观看系统启动,您可能会看到它抱怨一个无聊的 rootfs,只有一个无用的文件(复制的图像而不是dding 它。

相关内容