目錄
目的
在ubuntu下運行QEMU,並進行連網。
準備工作
首先要在ubuntu下下載rtt源碼,並使用 qemu-vexpress-a9 BSP。根據官方文檔 https://www.rt-thread.org/document/site/application-note/setup/qemu/ubuntu/an0005-qemu-ubuntu/ 將QEMU運行起來。如下所示。
但是此時的qume不能上網。在qemu中 ping 不通
ifconfig(獲取到的 IP 地址時 10.0.x.x
說明沒有添加啓動參數,詳見下面的 修改qemu.sh 添加參數)
我們通過添加一個虛擬網卡,並將網卡橋接到 PC 上進行上網。以下是詳細的步驟。
ifconfig查看信息
顯示或配置網絡設備(網絡接口卡)。(ens33,172.16.85.128)
添加tap虛擬網卡
添加虛擬網卡有好幾種方法【詳見 https://blog.csdn.net/White_Idiot/article/details/82934338】,這裏我們添加tap虛擬網卡。
添加虛擬網卡TAP,首先請先加載 tun 模塊:modprobe tun
安裝 uml-utilities:
使用 tunctl
添加虛擬網卡: sudo tunctl -b
,該命令會生成一個TAP,後綴會從0開始遞增(如tap0、tap1):
激活創建的TAP:sudo ip link set tap0 up
,之後就可以使用 ifconfig 命令查看 tap網卡的信息了。使用ifconfig後,會發現比之前多了一個tap0網卡。
修改qemu.sh
在qemu.sh文件中追加參數 -net nic -net tap,ifname=tap0
,後保存qemu.sh文件。
-
net nic
這個是必須的參數,表明這是一個網卡的配置 -
-net tap
使用tap模式 -
ifname=tap0
tap網卡名tap0
橋接
新建網橋 br0,將tap0網卡橋接到PC的網卡(ens33,172.16.85.128)上:
- 獲取橋接工具:sudo apt install bridge-utils
- 生成網橋 br0 :sudo brctl addbr br0
- 將 ens33 加入網橋【brctl addif <bridge> <device> add interface to bridge】:sudo brctl addif br0 ens33
- 將 ens33 的 ip 信息配置到br0中:sudo ifconfig br0 172.16.85.128
- 如果是dhcp則使用:sudo dhclient br0
- 將tap0加入到br0中【brctl addif <bridge> <device> add interface to bridge】:sudo brctl addif br0 tap0
運行qemu
執行 sudo ./qemu.sh 運行 QEMU
可以ping通,ifconfig也有ip信息了。