首页 文章

将内核和uboot复制到sdcard中

提问于
浏览
2

我有一个Freescale I.MX ARM板,我正在准备SD卡上的bootloader,内核和Root文件系统 . 我对我将文件分区并复制到SD卡的顺序感到有点困惑 . 让我们说我有一个4GB大小的空SD卡 . 我用gparted首先把它分成:

Firts将400 MB大小划分为FAT32系统 . 这是我的启动分区第二个分区是该卡的其余部分为ext3 . 这是我的根文件系统分区 .

我们说我的SD卡在/ dev / sdb下 .

现在我看到很多文档在复制启动文件方面略有不同 .

哪种方法正确?

方法1:

(没有挂载sdb分区:sudo dd if = u-boot.bin of = / dev / sdb bs = 512 seek = 2 sudo dd if = uImage of = / dev / sdb bs = 512 seek = 2

挂载用于复制rootfs的sdb2:mount / dev / sdb2 / mnt / rootfs copy rootfs:tar -xf tarfile / mnt / rootfs

方法2:挂载sdb1启动分区:mount / dev / sdb1 / mnt / boot copy uboot和kernel:cp u-boot.bin / mnt / boot / cp uImage / mnt / boot /

然后复制rootfs如上!

哪个是正确的 . 我尝试了两个,但sddcard甚至没有启动 . 当我尝试方法1时,卡启动,直到它说在分区中找不到rootfs . 我删除了卡并插入,发现第一个胖32分区以某种方式“被破坏”,因为它在gparted上显示为“unallocated” .

请帮忙 .

3 回答

  • 0

    您需要将第一个分区标记为可引导 . 检查gparted或disk实用程序中的第一个分区详细信息 .

    从磁盘实用程序中,cab标记分区可引导 . 通过选择特定分区并进入“更多操作”选项 - >“编辑分区类型” .

  • 0

    下面是为我的Arndale OCTA板将二进制文件闪存到SD卡上的脚本 . 您可以看到bootloader二进制文件的位置:

    BL1

    dd iflag = dsync oflag = dsync if = arndale_octa.bl1.bin of = / dev / sde bs = 512 seek = 1

    BL2

    dd iflag = dsync oflag = dsync if = .. / arndale_octa.bl2.bin of = / dev / sde bs = 512 seek = 31

    uboot

    dd iflag = dsync oflag = dsync if = u-boot.bin of = / dev / sde bs = 512 seek = 63

    内核和信任软件,....

    请注意:1)分区表位于SD卡偏移量0(搜索0),然后您必须运行:fdisk / dev / sde并创建不与内核或信任软件所支配的块重叠的分段 . 2)在dd命令中添加“dsync”选项给gaurantee,每个写入的数据立即刷新到SD卡中

  • 0

    在大多数情况下,imx处理器需要0x400偏移量的bootloader . 所以无论你为u-boot做什么都是正确的,你需要使用dd命令 .

    sudo dd if=u-boot.bin of=/dev/sdb bs=512 seek=2
    

    在对SD卡进行分区时,请确保为u-boot映像保留足够的空间 . 所以启动你的第一个可启动分区,假设1 MB偏移量 .

    您只需通过 cp 命令复制uImage和环境变量(uEnv.txt或boot.scr)即可 .

    对于rootfs,您也可以按照与内核相同的步骤进行操作 .

相关问题