是否有可能:u-boot中的TFTP将根文件系统加载到SD卡?(我不需要 NFS)

Jer*_*rry 4 embedded-linux u-boot

我知道我们可以使用 NFS,但我只是不想使用它。

(不想一直保持与 NFS 服务器的网络连接)。

  • 我知道我们可以在 u-boot 中使用 tftp 来加载内核和设备树!
  • 但是我们可以在u-boot中使用tftp下载根文件系统,并将其放在SD卡的正确分区中并启动吗?
  • 如果是,该怎么做?(我用谷歌搜索,但没有找到答案)

谢谢,杰瑞

Pie*_*ier 5

我在 uboot 中使用 TFTP 在我的内部 eMMC 上刷新我的 rootfs(用于调试目的)。跟你的情况几乎一样。

首先在 RAM 中下载文件系统:

tftpboot ${rootfs_addr} ${tftppath}/${rootfs_file}
Run Code Online (Sandbox Code Playgroud)
  • rootfs_addr是RAM地址,我使用0x10800000。
  • tftppath是 TFTP 路径(取决于您的配置)
  • rootfs_file是 ext4 或 ext3 文件

然后更新mmc设备(可以运行mmc list显示SD u-boot号)

mmc dev 2
Run Code Online (Sandbox Code Playgroud)

这里我将设备设置为数字2,需要根据命令进行对应设置mmc list

然后将RAM的内容写入SD:

setexpr rootfsblksz ${filesize} / 200 
setexpr rootfsblksz ${rootfsblksz} + 1 
mmc write ${rootfs_addr} 6000 ${rootfsblksz}
Run Code Online (Sandbox Code Playgroud)

描述:

  • 我创建了一个rootfsblksz变量,它将下载的字节数转换为块数。filesize当我们使用TFTP时自动设置,它代表最后下载的文件的大小(以字节为单位)。这里我的块是 512Bytes (0x200)
  • 我将+1添加到块大小(确保拥有所有数据)
  • 我将其写入 eMMC(或 SD)的地址 0x6000(以块为单位)-> 24 576 块 -> 12 582 912(以字节为单位)-> 12MB,因为我的 ext 分区偏移量为 12MB

希望能帮助到你!