用nfs挂载rootfs

  nfs是一种网络通讯协议,由服务器(提供nfs服务的一套软件)和客户端(通过nfs这种协议来和服务器进行通信来工作的一个软件)构成。利用nfs协议可以做出很多直接性应用,我们这里使用开发板中运行kernel做nfs客户端,来挂载服务器的rootfs。nfs方式启动不用制作rootfs镜像,这种方式一般作为产品开发阶段调试使用。
  1. 主机ubuntu中搭建nfs服务器,搭建完成后在服务器上进行测试
    mount -t nfs -o nolock 服务器IP地址 :存放linuxrc的路径(譬如/home/nfs/rootfs) 挂载路径(譬如/mnt)
    例如:mount -t nfs -o nolock 172.16.104.33:/home/nfs/rootfs /mnt
    cd /mnt 后就能考到/home/nfs/rootfs下内容;(此时在/mnt下创建一个文件,若进入/home/nfs/rootfs后也能看到,就证明挂载成功)

2)进入开发板的uboot设置nfs启动方式的bootargs(IP根据实际使用更改)设置完成后重启。
setenv bootargs root=/dev/nfs nfsroot=服务器IP地址:存放linuxrc的路径譬如/home/nfs/rootfs ip=开发板的IP地址:服务器IP地址:网络网管地址:255.255.255.0::服务器网卡譬如eth0:off initi=linuxrc(linuxrc在/home/nfs/rootfs下) console=控制台使用的串口譬如ttySAC2,115200
例如:setenv bootargs root=/dev/nfs nfsroot=172.16.104.33:/home/nfs/rootfs ip=172.16.104.10:172.16.104.33:172.16.104.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC2,115200

3)配置
用nfs挂载rootfs_第1张图片

4)编译得到新的内核,重启开发板
最好设置bootcmd的参数为tftp下载的方式启动,这样的话重启开发板后,就可以直接下载更新后的内核,直接启动了,非常便于开发中的调试,重启后从打印信息中就能看出是否挂载成功。这种方式内核就“好像在远程服务器上一样“,可以供我们实时下载;而根文件系统却一直在服务器上,当下载到开发板这边的内核启动后通过网线去挂载服务器上的根文件系统(一定要有网线,这个时候的开发板工作时候是离不开服务器的)

5):NFS方式挂在的是文件夹,不用制作rootfs的镜像(rootfs有2种格式:nfs方式启动的文件夹形式的rootfs和用来烧录的镜像形式的rootfs),这种方式一般作为产品开发阶段使用,开发完成后才会把这个根文件系统文件夹里的内容制作成镜像,烧录到产品中去(如烧录到开发板,让其在开发板上挂载启动)。另外若不用的话还要 umount /mnt 卸载掉,省的这个文件夹一直被占用

你可能感兴趣的:(Linux,kernel)