1.制作根文件系统及nfs烧写
1.1 先解压文件系统,/wok/nfs_root 目录下是已经构造好的各种文件系统:
① fs_mini.tar.bz2 是最小的根文件系统,里面的设备节点是事先建立好的;
② fs_mini_mdev.tar.bz2 是最小的根文件系统,里面的设备节点是等系统启动后使用
mdev 自动建立的;
③ fs_qtopia.tar.bz2 是 JZ2440 使用的支持触摸屏的根文件系统;
④ fs_xwindow.tar.bz2 是书上的基于 X 的根文件系统。
步骤:
cd /work/nfs_root // 进入nfs_root目录
mkdir tmp //新建目录tmp
cp fs_mini_mdev.tar.bz2 tmp/ // 将fs_mini_mdev.tar.bz2文件系统压缩包复制到tmp目录里(这里以fs_mini_mdev.tar.bz2文件系统为例)
cd tmp/ //进入tmp目录
sudo tar xjf fs_mini_mdev.tar.bz2 //使用sudo解压 ( 因为解压出来的 dev 目录下有一些设备节点,生成它们要用到 root 权限)
1.2 解压好后,使用mkyaffs2image 工具进行制作文件系统映象文件
由于该ubuntu里没有mkyaffs2image 工具,所以首先将Windows里的mkyaffs2image 工具复制到linux里的work/tools里,它在光盘里linux/tools 目录下 。
步骤:
cd /work/tools // 进入刚刚复制的位置目录下
sudo cp mkyaffs2image /usr/local/bin //将mkyaffs2image 复制到 /usr/local/bin目录里
注意:bin目录主要存放可执行命令文件,其中bin目录共有4种:
/bin:用来放置根分区/上的程序。
/sbin:用来存放系统管理程序的路径
/usr/bin:用来分发包管理器
/usr/local/bin:用来存放用户自己的程序,不受分发包管理器的控制
sudo chmod +x /usr/local/bin/mkyaffs2image //给mkyaffs2image 添加 执行命令(添加后直接输入mkyaffs2image 就可以查看使用说明)
mkyaffs2image fs_mini_mdev fs.yaffs2 // 将fs_mini_mdev制作成fs.yaffs2 映像文件。
1.3 使用nfs烧写fs.yaffs2 映像文件
步骤:
nfs 30000000 192.168.1.106:/work/nfs_root/tmp/fs.yaffs2 //192.168.1.106指的是虚拟机IP地址
nand erase root // 擦除root分区(root:包含文件系统等,0x30260000~0x3fffffff)
nand write.yaffs 30000000 260000 $(filesize) // 260000:0X30000000偏移地址 $(filesize) :指定烧写的文件大小
2.使用nfs挂载虚拟机目录
步骤:
ls //查看开发板目录,其中mnt(mount)目录就是用来开发板挂载的目录
mount -t nfs -o nolock,vers=2 192.168.1.106:/work/nfs_root /mnt //mount命令将远端虚拟机/work/nfs_root目录挂载到开发板/mnt目录里
//nolock:禁用文件锁 vers=2:nfs版本协议2 192.168.1.106:虚拟机地址
如下图,挂载后,进入mnt后便可以看到虚拟机/work/nfs_root目录下文件了。
如果挂载失败,那么是以下两个原因:
1.确定板子是否与虚拟机位于同一网段
ifconfig eth0 up //开启网关0,连接网线到路由器
ifconfig eth0 192.168.1.107 //设置ip,与虚拟机ip网段一样,
ping 192.168.1.106 //与虚拟机ping一下,是否已通
2.确定虚拟机是否能被挂载目录
要使虚拟机能够被挂载目录,在/etc/exports中添加需要被挂载的目录即可
例如:
sudo vi /etc/exports
添加以下一段内容:
/work/nfs_root *(rw,sync,no_root_squash) //要被挂载的目录:/work/nfs_root
sudo /etc/init.d/nfs-kernel-sever restart //重启nfs服务