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
- 1
- 2
- 3
- 1
- 2
- 3
建立虛擬網絡卡並配置ip
apt-get install uml-utilities //執行tunctl必須的工具
tunctl -u $USER -t tap0
ifconfig tap0 192.168.42.1
- 1
- 2
- 3
- 1
- 2
- 3
帶網路方式啟動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
- 1
- 1
(注意:關閉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
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
之後就能啟動Qtopia,如下圖:
下期將會展示如何獨立編譯移植gdbserver和arm-Linux-gdb,雖然我們編譯的buildroot已經帶有gdb(預設7.41版本),但是由於發現獨立編譯gdb會出現一些奇怪問題,所以還是拿出來和大家分享下獨立編譯可能出現錯誤的經驗,後續文章可以看我的博文。