在qemu中用tun tap裝置與宿主機通訊

2021-07-03 17:03:36 字數 1496 閱讀 4889

在qemu中用tun/tap裝置與宿主機通訊

宿主機軟體的安裝配置。

準備: 安裝必要的工具

$sudo apt-get install bridge-utils uml-utilities

這樣就可以使用brctl, tunctl 命令了。

1. 建立乙個網橋br0,網橋中包括eth0, tap0

由於沒有dhcp 伺服器,這裡採用了靜態分配ip

br0  網橋介面                ip: 192.168.1.1

eth0 是物理網路介面            ip: 192.168.1.100

tap0 是建立出的虛擬網路介面    ip: 192.168.1.101

script 檔案如下:

$cat br_tap.sh

#!/bin/sh

#首先關閉eth0

ifdown eth0

#新增乙個虛擬網橋br0

brctl addbr br0

#在br0 中新增乙個介面eth0

brctl addif br0 eth0

#只有乙個網橋,所以關閉生成樹協議

brctl stp br0 off

#由於沒有dhcp, 為br0,eth0分配乙個靜態ip, 設定混雜模式,並開啟

ifconfig br0 192.168.1.2 promisc up

ifconfig eth0 192.168.1.100 promisc up

#新增預設閘道器

#route add default gw 192.168.0.1

#建立乙個tap0介面,只允許root使用者訪問

tunctl -t tap0 -u root

#讓tap也處於混雜模式,便於客戶機分配ip

ifconfig tap0 192.168.1.101 promisc up

#把tap0 也新增到 網橋中

brctl addif br0 tap0

執行指令碼和檢視結果:

$ sudo ./br_tap.sh

[sudo] password for hjj:

ifdown: inte***ce eth0 not configured

set 'tap0' persistent and owned by uid 0

$ brctl show br0

bridge name    bridge id        stp enabled    inte***ces

br0        8000.74e6e242b01d    no        eth0

tap0

還可以用ifconfig 來檢視 br0, eth0, tap0 的ip位址

模擬機例如:

sudo qemu-system-x86_64 -enable-kvm -hda disk.img -cdrom tinycore-4.3.1.iso -net nic -net tap,ifname=tap0,script=no

在qemu環境中用gdb除錯Linux核心

對使用者態程序,利用gdb除錯 是很方便的手段。而對於核心態的問題,可以利用crash等工具基於coredump檔案進行除錯。其實我們也可以利用一些手段對linux核心 進行gdb除錯,qemu就是一種。qemu是一款完全軟體模擬 binary translation 的虛擬化軟體,在虛擬化的實現中...

QEMU與塊裝置詳解

ceph 塊裝置最常見的用法之一是作為虛擬機器的塊裝置映像。例如,使用者可建立乙個安裝 配置好了作業系統和相關軟體的 標準 映像,然後對此映像做快照,最後再轉殖此快照 通常很多次 基礎映象 快照 轉殖 多次 qemu 命令列要求你指定儲存池名和映像名,還可以指定快照名。qemu 會假設 ceph 配...

qemu中模擬裝置的註冊是在main函式之前

qemu將要模擬的裝置分成了5類 typedef enum module init type define block init function module init function,module init block define opts init function module init...