互換性を確認するために、ビッグエンディアンシステムでいくつかのソフトウェアをテストしようとしています。私の計画は、Ubuntu 12.04でqemuを使用してMIPSシステムをエミュレートすることです。これまでミッションシステムを正常に作成できましたが、ホストシステムとネットワークに接続できませんでした。ゲストシステム(wgetやapt-getなど)から外部の世界にアクセスできますが、Sambaの設定に失敗します。
~によるとこれ、QEmu 1.1以降では、ブリッジアシスタントは追加のスクリプトなしでtun / tapを設定できます。さまざまなバージョンのスクリプトを見たので、それを使用しようとしています。現在の状況はqemu-system-mips -version
次のように報告されます。
QEMU emulator version 1.0.50 (Debian 1.0.50-2012.03-0ubuntu2.1), Copyright (c) 2003-2008 Fabrice Bellard
私は1.4.1ソースでコンパイルして使用しましたapt-get
。どちらも同じ内容を報告しました。-version
私が聞いた内容にもかかわらず、バージョン1.1以降があるとします。とにかく、次のガイドラインは、ネイティブネットワークヘルパーのsetuid属性をオンにすることです。
sudo chmod u+s /usr/local/libexec/qemu-bridge-helper
次に、権限を取得するためにファイルを作成しましたbridge.conf
。ファイルの内容は次のとおりです。/etc/qemu/
/usr/local/etc/qemu
-rw-r--r--
allow br0
次のようにQEmuを起動すると:
qemu-system-mips -M malta -kernel vmlinux-2.6.32-5-4kc-malta -hda disk.img -append "root=/dev/sda1 console=ttyS0" -nographic -net nic -net bridge,br=br0 -smb /home/uli/samba
または
qemu-system-mips -M malta -kernel vmlinux-2.6.32-5-4kc-malta -hda disk.img -append "root=/dev/sda1 console=ttyS0" -nographic -netdev bridge,id=hn0 -device virtio-net-pci,netdev=hn0,id=nic1
または
qemu-system-mips -M malta -kernel vmlinux-2.6.32-5-4kc-malta -hda disk.img -append "root=/dev/sda1 console=ttyS0" -nographic -netdev tap,helper=/usr/local/libexec/qemu-bridge-helper,id=hn0 -device virtio-net-pci,netdev=hn0,id=nic1
次のエラーが発生します。
failed to get mtu of bridge `br0': No such device
failed to launch bridge helper
qemu-system-mips: -net bridge,br=br0: Device 'bridge' could not be initialized
公平に言えば、私はbr0ブリッジを作りませんでした。私は理解していないスクリプトを使って1つを作成しようとしましたが、私の作業MIPS QEmuシステムはもう何も接続されていません。 br0が表示されますが、IPアドレスを取得できません。明らかに私がここで何か間違っているようです。
ifconfig br0 down
brctl delbr br0
ifconfig eth2 0.0.0.0 promisc up
brctl addbr br0
brctl setfd br0 0
brctl addif br0 eth2
echo 1 > /proc/sys/net/ipv4/conf/br0/proxy_arp
echo 1 > /proc/sys/net/ipv4/conf/eth2/proxy_arp
echo 1 > /proc/sys/net/ipv4/ip_forward
dhclient br0
ifconfig br0 up
これを行うより簡単な方法はありますか?個人的には、説明したように\ 10.0.2.4 \ qemuのSMBサーバーを使用します。ここしかし、それは私には効果がありませんでした(共有をマウントしようとしたときに、おそらくネットワークの問題のために115エラーが発生しました)。
修正する
ブリッジを作成すると、ホストのifconfigに次の出力が表示されます。
br0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
inet addr:10.2.32.101 Bcast:10.2.32.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:85 errors:0 dropped:0 overruns:0 frame:0
TX packets:51 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:8235 (8.2 KB) TX bytes:9227 (9.2 KB)
eth2 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:196581 errors:0 dropped:0 overruns:0 frame:0
TX packets:44205 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:139517339 (139.5 MB) TX bytes:3365206 (3.3 MB)
brctl show
出力を確認すると、以下が表示されます。
bridge name bridge id STP enabled interfaces
br0 8000.XXXXXXXXXXXX no eth2
これでQEmuでジョブシステムを起動します。 ifconfigを実行すると、次のようになります。
eth0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:536 errors:1 dropped:51 overruns:0 frame:0
TX packets:13 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:55083 (53.7 KiB) TX bytes:2862 (2.7 KiB)
Interrupt:10 Base address:0x1020
足は次のとおりです。
bridge name bridge id STP enabled interfaces
br0 8000.XXXXXXXXXXXX no eth2
tap0
残念ながら、この設定を使用すると、ジョブシステムは一時的に持っていた制限付き「ユーザーモード」ネットワーキングを失います(たとえば、wgetとapt-getは機能しなくなります)。私が見る唯一のIPアドレスはブリッジのIPアドレスなので、タスクがネットワークにどのように表示されるのかわかりません。ホストはまだbr0と同じIPアドレスで表示されます。
修正する
これは iptables -L の出力です。
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
答え1
ブリッジを実行するときは、ブリッジ(eth2)のメンバーにIPアドレスが割り当てられなくなります。 br0は今IPを取得する必要があります。
はい
これは KVM を使用するシステムの出力です。内部的にはqemu-kvmを使用しているので、必要なものと同様に設定する必要があります。
$ ifconfig -a
br0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2929289877 errors:0 dropped:0 overruns:0 frame:0
TX packets:842023980 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1992305504701 (1.8 TiB) TX bytes:3609403664141 (3.2 TiB)
eth0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3737819958 errors:0 dropped:168 overruns:0 frame:0
TX packets:1233468235 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2735097151685 (2.4 TiB) TX bytes:4313257594064 (3.9 TiB)
Interrupt:177
eth0にIPアドレスがない理由を確認してください。私のbr0デバイスは次のとおりです。
$ brctl show
bridge name bridge id STP enabled interfaces
br0 8000.XXXXXXXXXXXX no vnet2
vnet1
vnet0
eth0
br0デバイスには3つの仮想マシンがあり、物理的な物理システムのようにネットワークに完全に参加できます。これは、Sambaの実行などのサービスを提供できることを意味します。 NATネットワークの背後にSambaを提供できるとは思いません。