用busybox制作好了文件系统框架之后需要把文件系统制作成yaffs2镜像文件烧写进开发板,然后再用nfs挂载吗。还是不需要那个镜像,直接就开始根文件系统的挂载。
能给出从一个具体的挂载方法吗(从虚拟机到开发板)我原本的方法报错(挂载之前没有烧写yaffs2镜像)。
如果是挂载nfs的根文件系统,只需要uboot支持就可以了;
如果在系统里要挂载nfs的文件夹,就需要在系统里运行mount命令挂载。
具体涉及到嵌入式linux的移植的内容,比较复杂,有兴趣可以私聊。
首先,需要确认mini2440的内核是否支持NFS挂载。如果支持,可以直接在开发板上进行NFS挂载。否则需要重新编译内核并加入NFS支持。接下来的步骤假设内核已经支持NFS挂载。
在开发机上安装NFS服务器:使用sudo apt-get install nfs-kernel-server命令安装NFS服务器。
创建NFS共享目录:在开发机上创建一个目录并设置其权限,用于共享mini2440的根文件系统。例如,创建一个目录/root/nfsroot,并确保该目录对其他用户可读可写可执行(chmod 777 /root/nfsroot)。
拷贝mini2440的根文件系统:将已制作好的文件系统框架拷贝到共享目录中。
配置NFS服务器:编辑/etc/exports文件,添加如下一行: /root/nfsroot *(rw,sync,no_root_squash,no_subtree_check) 这个配置表明将/root/nfsroot目录共享给所有主机,使用rw选项可读可写。no_root_squash表示在客户端使用root权限时不映射到NFS服务器上的nobody用户。
重启NFS服务器:使用sudo /etc/init.d/nfs-kernel-server restart重启NFS服务器。
在开发板上挂载NFS共享目录:使用mount命令挂载共享目录。例如,mount -t nfs 192.168.1.100:/root/nfsroot /mnt/nfsroot,其中192.168.1.100为开发机的IP地址,/root/nfsroot为共享目录在开发机上的路径,/mnt/nfsroot为挂载点在mini2440上的路径。
修改内核启动命令:在mini2440的内核启动命令中加入nfsroot参数,指定NFS共享目录作为根文件系统。例如,在uboot中使用如下命令: setenv bootargs 'console=ttySAC0,115200 root=/dev/nfs nfsroot=192.168.1.100:/root/nfsroot ip=192.168.1.20:192.168.1.100:192.168.1.1:255.255.255.0::eth0:off'
其中,nfsroot参数指定使用NFS共享目录作为根文件系统,ip参数设置板子的网络配置。
至此,NFS挂载mini2440的根文件系统的过程就完成了。关于yaffs2镜像和虚拟机的问题,这里并没有用到,可以忽略。关于nfsvers选项,如果不指定,默认使用nfsvers=3,可以根据需要添加到内核启动命令中。