NFS远程挂载文件系统

目录

0. 前言

1. 搭建局域网

2. bootcmd uboot启动命令

3. bootargs 网络启动参数

4. nfs_rootfs 777

5. 正式使用


0. 前言

一个常用的开发嵌入式Linux的技术就是,使用NFS远程挂载文件系统。也就是说,sd卡上并没有文件系统,而是通过网络挂载远在主机上的nfs_rootfs。这样每次更新了应用程序,只需放入主机上的nfs_rootfs,板子上的Linux立即就可以使用。

软件条件:

  • Uboot,烧录在sd卡上
  • zImage,通过TFTP在开机时下载到板子的DRAM上
  • dtb,通过TFTP在开机时下载到板子的DRAM上
  • rootfs,通过NFS网络实时使用主机上的nfs_rootfs

1. 搭建局域网

笔者大量参考了《正点原子》和《北京迅为》的教程,并且选择真正的Debian主机作为host,正点原子iMX6ULL开发板作为target。host和target必须在同一网段,能互相ping通。(虚拟机作为host必须选择桥接模式)

在板子上uboot里测试好tftp和nfs功能,即能够用 tftp 和 nfs 命令从host下载文件到板子的DRAM。

nfs [loadAddress] [[hostIPaddr:]bootfilename]
nfs 80800000 192.168.1.253:/home/zuozhongkai/linux/nfs/zImage
tftp [loadAddress] [[hostIPaddr:]bootfilename]
tftp 80800000 zImage

我们可以看到,因为运行uboot时,还没有文件系统运作。所以,loadAddress都是具体的16进制DRAM地址。tftp更加智能,不需输入完整的路径名。


2. bootcmd uboot启动命令

我们现在uboot里面设置bootcmd,

setenv bootcmd 'tftp 80800000 zImage; tftp 83800000 imx6ull-14x14-emmc-7-1024x600-c.dtb; bootz 80800000 - 83800000'

那么下次uboot启动时,就会

1. tftp下载zImage 到8080000;

2. tftp下载dtb 到83800000;

3. 根据内核镜像地址 和 设备树地址加载启动 ( bootz   - boot Linux zImage image from memory )


3. bootargs 网络启动参数

setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs rw nfsroot=192.168.1.17:/home/cjh/linux/nfs_rootfs ip=192.168.1.50:192.168.1.17:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc'

bootargs 保存着一些参数,这些参数会传递给Linux 内核。

1. 设置串口终端 console

2. 设置root=/dev/ (暂时还不知道这句话的具体含义,不过都这么写)

3. 设置读写权限

4. 设置nfsroot在主机上的路径

5. 设置一系列网络参数 ( 开发板IP:服务器IP:网关:子网掩码::eth0:off)

6. 设置一个init进程,其他所有的用户进程都直接或间接派生自init进程


4. nfs_rootfs 777

主机上的nfs_rootfs目录下就解压rootfs.tar的内容,即buildroot生成的文件系统。

注意,把nfs_rootfs目录下所有文件和文件夹都开放权限 777

sudo chmod 777 * -R

不然,板子上的系统启动到一半会卡在 permission denied:you can not open/create .......

文件系统虽说是直接使用挂载在主机上的nfs_rootfs,但在启动时会实时写入一些文件。所以板子的身份作为others用户,需要write权限。

另外,buildroot在编译时,不妨使能nfs-utils和rpc-bind。不过,这可能不是必要条件。有待观察。


5. 正式使用

saveenv 后,boot。uboot启动后,就会tftp下载内核镜像和设备树镜像,启动内核。

 然后启动文件系统

 至此,NFS远程挂载文件系统 大功告成!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值