QEMU模拟Mini2440开发板运行环境(二):NFS挂载根文件系统

前言

原创文章欢迎转载,请保留出处。
若有任何疑问建议,欢迎回复。
邮箱:[email protected]

紧接着第一篇(http://blog.csdn.net/maxwell_nc/article/details/44279553),我们使用网络文件系统NFS挂载根文件系统,这里我们采用友善之臂提供的带Qtopia的根文件系统(请到mini2440附带的光盘找到rootfs_qtopia_qt4-20140103.tar.gz或者网上下载一份)你也可以使用buildroot生成的根文件系统,甚至可以用busybox自己制作一个。

更新内容

日期:2015年5月27日 发现bootargs语句有错,现已更正。另外修改了一些错别字

NFS挂在根文件系统

首先安装nfs服务
sudo apt-get install nfs-kernel-server
新建nfsroot文件夹
mkdir /nfsroot
然后配置nfs目录
vi /etc/exports
添加一行 /nfsroot *(rw,sync,no_root_squash,no_subtree_check)

然后执行/etc/init.d/nfs-kernel-server restart启动服务。
进入NFS共享目录cd /nfsroot/
修改权限chmod -R 777 ./
解压根文件系统tar xvzf rootfs_qtopia_qt4-20140103.tar.gz

注意:友善之臂提供的qtopia文件系统在挂载时会初始化网卡,但我们是由nfs挂载的文件系统,这会导致nfs连接中断,挂载失败,所以用nfs挂载之前需要把网卡的初始化过程取消,对应的文件是/etc/init.d/if-config,只需把该文件内容删除即可(删除文件也可以)。

cd rootfs_qtopia_qt4
cd etc/init.d/
rm ifconfig-eth0

创建虚拟网卡并配置ip

apt-get install uml-utilities //运行tunctl必须的工具
tunctl -u $USER -t tap0
ifconfig tap0 192.168.42.1

带网络方式启动qemu

qemu-system-arm -M mini2440 -serial stdio -mtdblock nand.bin -usbdevice mouse -kernel uImage -net nic,vlan=0 -net tap,vlan=0,ifname=tap0,script=no,downscript=no

注意:关闭Qemu后用ifconfig tap0 192.168.42.1 down卸载网卡)
启动后进入uboot模式,此时的qemu还不能显示,输入下面指令加载内核和根文件系统。

//2015年5月27日更新,原来这里的bootargs是错的,无法挂载系统
//“MINI2440 #”是操作提示符,不用输入 
MINI2440 # set bootargs noinitrd root=/dev/nfs rw nfsroot=192.168.42.1:/nfsroot/rootfs_qtopia_qt4/,proto=tcp,nfsvers=3,nolock ip=192.168.42.2:192.168.42.1::255.255.255.0 console=ttySAC0,115200
MINI2440 # bootm

之后就能启动Qtopia,如下图:

QEMU模拟Mini2440开发板运行环境(二):NFS挂载根文件系统_第1张图片

下期将会展示如何独立编译移植gdbserver和arm-linux-gdb,虽然我们编译的buildroot已经带有gdb(默认7.41版本),但是由于发现独立编译gdb会出现一些奇怪问题,所以还是拿出来和大家分享下独立编译可能出现错误的经验,后续文章可以看我的博文。

你可能感兴趣的:(linux,qemu,nfs,mini2440,qtopia)