uboot中,nfs挂载的bootargs

本文介绍了在UBoot中如何设置NFS挂载的bootargs参数,强调了$nfsroot$参数及其对内核的影响,这些参数最终将显示在系统的/proc/mounts文件中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

只需指定root的参数即可

root=/dev/nfs ro nfsroot=$serverip:$rootpath,nolock,tcp


其中:带$号的是uboot的环境变量,也就是pri打印的变量表

nfsroot参数的后面,是要求传递给内核nfs的参数,最终这些参数会出现在/proc/mounts中


### 配置 U-Boot 使用 NFS 挂载文件系统 在嵌入式开发环境中,U-Boot 是常用的引导加载程序之一。为了方便调试和测试目的,通常会配置 U-Boot 通过网络文件系统 (NFS) 来挂载根文件系统。 #### 设置环境变量 设置合适的环境变量对于成功启动 Linux 并挂载 NFS 文件系统至关重要。这些变量定义了内核参数以及如何连接到 NFS 服务器: ```bash setenv bootargs 'console=ttyS0,115200 root=/dev/nfs rw nfsroot=${serverip}:${path},tcp ip=dhcp' ``` 上述命令设置了 `bootargs` 变量来指定控制台端口、波特率、根文件系统的路径以及其他必要的选项[^5]。 其中 `${serverip}` 和 `${path}` 应替换为实际的 NFS 服务器 IP 地址及其共享目录的位置;如果使用 DHCP 获取 IP,则可以直接采用默认值 `dhcp` 对于 `ip=` 参数部分。 #### 加载内核与设备树 接着需要从远程位置获取 Linux 内核镜像及对应的设备树 Blob (DTB),这可以通过 TFTP 协议完成: ```bash tftp ${loadaddr} zImage tftp ${fdt_addr_r} sun7i-a20-cubieboard2.dtb ``` 这里假设已经预先设定了两个地址寄存器 (`${loadaddr}`,`${fdt_addr_r}`),用于存储下载的数据缓冲区起点[^3]。 #### 执行启动指令 最后一步就是调用 `bootm` 命令执行刚刚传送到 RAM 的内核映像,并传递 DTB 给它作为硬件描述信息的一部分: ```bash bootm ${loadaddr} - ${fdt_addr_r} ``` 此操作将会触发 ARM 架构下的 Linux 系统初始化流程,并尝试按照之前设定好的方式去寻找并挂载 NFS 提供的服务作为其根文件系统。 #### 创建必要节点 另外,在某些情况下可能还需要确保目标板上的 `/dev` 下存在一些基本字符型设备节点,比如串行接口或伪终端等。可以在构建 RootFS 映像前手动创建它们,或者借助 BusyBox 工具自动生成所需资源[^4]: ```bash sudo mknod /mnt/rootfs/dev/tty1 c 4 1 sudo mknod /mnt/rootfs/dev/console c 5 1 ... ``` 以上步骤展示了完整的基于 U-Boot 实现 NFS 根文件系统的过程,涵盖了从准备阶段直到最终运行的关键环节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值