私はqemuを使ってカスタムLinuxシステム(buildrootを使って構築)をエミュレートしています。
これは十分簡単ですが、ドキュメントとスタック交換の記事を読むのに数日間閉じ込められており、解決策が見つかりませんでした。
外部ネットワークへのゲストアクセスは必要なく、ホストとゲストが互いに通信できるようにしたいだけです。
qemuドキュメントに従ってSLIRPとtun / tapネットワークを試しましたが、何も機能しませんでした。
SSHポート転送の「-redir」オプションも試しましたが、結果もありませんでした。
詳細については、次を参照してください。 - ホストはUbuntu 16.04です。 - ifconfig -a、ゲストでは lo および tunl0 インターフェイスが表示されますが、eth0 インターフェイスは表示されません。 「-net none」オプションを使用しても引き続き表示されるため、tunl0が何であるかを理解できません。 - ゲスト用モジュールとしてvirtioドライバを追加しました。
今、私は次の行を使ってqemuを起動しています。
qemu-system-x86_system -kernel bzImage -initrd initrd.gz -drive id=disk,file=image.img,if=none -device ahci,id=ahci -device ide-drive,drive=disk,bus=ahci.0 -m 2048 -net nic -net tap,ifname=tap0,script=no,downscript=no
クリックインターフェースを手動で設定してみました。
tunctl -u $USER
ifconfig tap0 <gateway ip> up
編集:また、Arch Linuxチュートリアルを段階的に試してみました。 https://wiki.archlinux.org/index.php/Network_bridge そして https://wiki.archlinux.org/index.php/QEMU
しかし、まだイーサネットインターフェイスはありません...
答え1
さて、いよいよ問題を発見しました。誰にも興味があれば、これが答えです。
前述のように、Buildrootを使用してLinuxイメージを作成しましたが、カーネルを誤って設定しました。 eth0インターフェイスを使用するには、イーサネットドライバを追加する必要があります。今私はそれが実際に明らかに見えることを知っています。詳しくはこちらをご覧ください。 https://stackoverflow.com/questions/33337062/buildroot-ip-cant-find-device-eth0
また、これは仮想マシンで/etc/resolv.confが見つからない別の問題を解決しました。
いつか誰かに役立つことを願っています。 :)