1. 程式人生 > >QEMU模擬Mini2440開發板執行環境(二):NFS掛載根檔案系統

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,如下圖:

Qtopia根檔案系統

下期將會展示如何獨立編譯移植gdbserver和arm-Linux-gdb,雖然我們編譯的buildroot已經帶有gdb(預設7.41版本),但是由於發現獨立編譯gdb會出現一些奇怪問題,所以還是拿出來和大家分享下獨立編譯可能出現錯誤的經驗,後續文章可以看我的博文。