Linux开发十九
nfs文件系统
象棋小子 1048272975
nfs即网络文件系统,通过网络,对在不同主机上的文件进行共享。嵌入式开发中,往往需要构建调试文件系统,在主机端以nfs文件系统的方式先调试构建文件系统,将极大地方便开发。
1. nfs文件系统
nfs需要主机端以及板端的nfs服务支持。
1.1. 主机端nfs配置
主机端以/nfs/rootfs目录作为文件共享目录,该目录必须具备读写权限。打开/etc/exports文件加入目录共享。
/nfs/rootfs 192.168.0.*(rw,async,no_root_squash)
关闭防火墙
service iptables stop
重启nfs服务,如果没有nfs服务,需要先安装nfs服务。
service rpcbind start
service nfs restart
配置ip地址,并且自挂载以确认主机nfs服务工作正常。
ifconfig eth0 192.168.0.10 up
mkdir /mnt/nfs
#mount –t nfs 192.168.0.10:/nfs/rootfs /mnt/nfs
1.2. 板端nfs配置
在前面的章节中,Linux内核集成了initramfs根文件系统,也可以直接采用nfs作为根文件系统。Linux内核配置支持nfs文件系统后,可以在initramfs根文件系统启动后,先尝试挂载nfs文件系统,以确定板端及主机端的nfs服务正常。确认正常后,Linux内核可以去掉initramfs根文件系统,bootloader传递挂载nfs根文件系统的启动参数,实现从nfs挂载根文件系统启动。
initramfs根文件系统启动后挂载nfs
mount -t nfs -o nolock 192.168.0.10:/nfs/rootfs /mnt/nfs
bootloader传递启动参数,使nfs作为根文件系统。
const char BootCmd[] = "noinitrd root=/dev/nfs init=/initconsole=ttySAC0 nfsroot=192.168.0.10:/nfs/rootfs,nolock rw ip=192.168.0.20:192.168.0.10:192.168.0.10:255.255.255.0::eth0:off";
2. 内核配置
Linux配置支持nfs文件系统,选中Filesystems->Network File Systems->NFS client support。
3. 主机端构建根文件系统
在主机/nfs/rootfs目录中构建板端根文件系统,把交叉编译工具的加载器以及动态库复制到根文件系统的lib目录。
cp *.so* /nfs/rootfs/lib –d
重新以共享库的方式交叉编译busybox,并把库、配置文件、可执行文件等拷贝到/nfs/rootfs根文件系统中。
减少对flash的读写,把/tmp、/dev目录挂接在tmpfs设备上。打开/etc/fstab文件,加入/tmp、/dev目录的挂载。
tmpfs /tmp tmpfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
etc/init.d/rcS 文件加入mdev的支持,从而不用手动创建设备节点。
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
可以添加/etc/mdev.conf配置文件,实现设备的自动挂载/卸载等。支持nfs文件系统后,就可以在主机端构建配置根文件系统,当验证通过后,再把构建好的根文件系统制作成flash烧录镜像并烧录,可以极大地加快开发的进度。