利用uboot下载引导Kernel(TFTP)以及挂载网络Rootfs(NFS) 配置uboot指定nfs挂载根文件系统

背景:

  在嵌入式开发中,经常需要对系统的各个部分进行修改。倘若每次修改都烧写到板子中,一来浪费时间,其次影响存储介质寿命。

  所以,需要一些手段来避免此类问题。

概览:

  1. 编译uboot
  2. 将uboot写入SD卡,并通过硬件设置从sd卡启动uboot程序
  3. 编译kernel,设置其可以通过NFS挂载根文件系统
  4. 开发环境安装TFTP服务器、NFS服务器
  5. 目标环境设置uboot参数,并进行测试
  6. 制作根文件系统(optional)
  7. 将uboot参数改回,烧写各部分到板子上

第2步不一定是用sd卡,根据硬件特性的差异决定,也可以考虑将uboot写入板子中,再进行此后的操作。

在这里我们重点介绍第三步以及第五步。其他步骤请参考其他资料。第三步以修改bootcmd为主,第五步以修改bootargs为主。

设置uboot,使其通过下载并引导内核

1.确保配置好了tftp服务器,并在tftp服务器指定的根目录下存放kernel镜像

2.明白镜像的运行地址位于何处(第三步中需要用到)

3.在uboot的下载模式中,设置bootcmd

setenv bootcmd 'tftp 0x42000000 kernel;bootm 0x42000000'
saveenv

嵌入式系统Linux内核对nfs文件系统的支持:

这里只做简单的介绍,具体细节可以参考:《配置uboot指定nfs挂载根文件系统

1.进入内核配置页,根据以下参数进行配置

->  Networking support
    ->  Networking options
        [*]   IP: kernel level autoconfiguration
 
-> File systems
    [*] Network File Systems
        <*>   NFS client support
        <*>     NFS client support for NFS  version 3
        [*]       NFS client support for the NFSv3  ACL protocol extension
        [*]   Root file system on NFS
2.uboot修改bootargs(最好是备份好bootargs)
添加下划线部分*其中的ip根据自己的实际情况进行修改
setenv bootargs 'root=/dev/nfs nfsroot=${serverip}:/xxx/fs,v3,tcp rw ip=${ipaddr}:${serverip}:${gatewayip}:${netmask} ::eth0:on init=/linuxrc console=ttyAMA0,115200'
saveenv

这样一来,调试就非常方便而且高效了。

猜你喜欢

转载自www.cnblogs.com/schips/p/12096537.html