ホスト(arch linux)とqemu guest(busybox initramfs linux)を互いに接続しようとしています。ゲストはより広いLANアクセスを必要とせず、ホスト - ゲストネットワークのみが必要です。問題は、内部的にはqemu guestがループバックインターフェイスのみを表示することです。
以下は私が使用する基本命令です。私はその様々なバリエーションを試しました。
qemu-system-x86_64 -enable-kvm -m 1024 -kernel ./vmlinuz -initrd ./initramfs.igz -append "console=ttyS0" -nographic -net nic,vlan=0 -net tap,ifname=tap0,script=no,downscript=no
このコマンドを実行する前に、ホストにTap0タブインターフェイスを作成し、そのユーザーを自分のログインユーザー(whoami
)に設定しました。無差別モードでインターフェイスを呼び出します。
QEMU は、まず netdev に対して -net が使用されなくなったことを警告します。ただし、ループバックインターフェイスのみが表示されます。 DHCPが設定されていないか、他の問題がある可能性があります。しかし、問題がどこにあるかを確認する方法が見つかりません。 qemuロギング用の-dスイッチがありますが、オプションが多く、必要なログタイプにどのオプションを使用するのかわかりません。
あるいは、ホストにブリッジインターフェイスbr0を設定し、tap0をbr0に依存させることができますが、他のものはbr0に依存していないため、それは無意味です。私のラップトップにはwlan0がありますが、ブリッジで制御されていません。 「ジョブがサポートされていません」のため失敗します。また、より広いLANアクセスには興味がありません。
ベストアンサー1
解決するこのフォーラムトピック。ここにその本質があります。
欠けているキーは、ゲストカーネルにキーがないことです。Virtioモジュール。これらのネットワークを実装する方法はいくつかあります。これは:
brctl addbr brkvm
ip addr add 192.168.56.101/24 dev brkvm
ip link set brkvm up
mkdir /etc/qemu
touch /etc/qemu/bridge.conf
echo "allow brkvm" >> /etc/qemu/bridge.conf
qemu-system-x86_64 -enable-kvm -m 1024 -kernel ./vmlinuz -initrd ./initramfs.igz -append "console=ttyS0" -nographic -netdev bridge,id=bridge,br=brkvm -device virtio net-pci,netdev=bridge
その後、eth0 はゲストの内部インターフェイスとして表示されます。 IPアドレスを192.168.56.102/24に設定して起動すれば十分です。その後、ゲストからホスト側の brkvm に ping を送信し、ホストからゲスト側の eth0 に ping を送信すると正常に動作します。