QEMU Aarch64 및 네트워크 연결

QEMU Aarch64 및 네트워크 연결

방금 QEMU를 사용하여 ARM64 이미지를 설정하고 바이너리 내에서 인터넷에 액세스하려고 했습니다. 호스트 운영 체제(Ubuntu)는 eth0인터페이스에서 인터넷을 수신합니다. tap0인터페이스를 설정하고 에 및를 tap0추가 했습니다 .eth0virbr0

$ brctl show virbr0
bridge name bridge id       STP enabled interfaces
virbr0      8000.080027c9997e   yes     eth0
                                        tap0

이제 다음과 같이 가상 머신을 시작하려고 합니다.

sudo qemu-system-aarch64 -machine virt -cpu cortex-a57 -nographic -smp 1 -m 512 \
    -global virtio-blk-device.scsi=off -device virtio-scsi-device,id=scsi \
    -drive file=ubuntu-core-14.04.1-core-arm64.img,id=coreimg,cache=unsafe,if=none -device scsi-hd,drive=coreimg \
    -kernel vmlinuz-3.13.0-55-generic \
    -initrd initrd.img-3.13.0-55-generic \
    -netdev user,id=unet -device virtio-net-device,netdev=unet \
    -net nic -net tap,ifname=tap0,script=no,downscript=no \
    --append "console=ttyAMA0 root=/dev/sda"

호스트에서 ifconfig의 출력은 다음과 같습니다.

$ ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:c9:99:7e
          inet6 addr: fe80::a00:27ff:fec9:997e/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2942 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7889 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:239227 (239.2 KB)  TX bytes:557156 (557.1 KB)

tap0      Link encap:Ethernet  HWaddr 8e:3d:c3:0e:58:36
          inet6 addr: fe80::8c3d:c3ff:fe0e:5836/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:412 errors:0 dropped:427 overruns:0 carrier:0
          collisions:0 txqueuelen:500
          RX bytes:0 (0.0 B)  TX bytes:21432 (21.4 KB)

virbr0    Link encap:Ethernet  HWaddr 08:00:27:c9:99:7e
          inet addr:10.0.2.15  Bcast:0.0.0.0  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2928 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2940 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:195163 (195.1 KB)  TX bytes:236587 (236.5 KB)

가상 머신을 시작한 후 ifconfig의 출력은 다음과 같습니다.

root@localhost:~# ifconfig
eth0      Link encap:Ethernet  HWaddr 52:54:00:12:34:57
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::5054:ff:fe12:3457/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5 errors:0 dropped:0 overruns:0 frame:0
          TX packets:38 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:846 (846.0 B)  TX bytes:3320 (3.3 KB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

그러나 원격 주소(예: 8.8.8.8)에 대해 ping을 수행할 수 없는 것 같습니다. 왜 이런 일이 발생합니까? 이 문제를 어떻게 해결할 수 있나요?

[편집] 가상 머신을 시작할 때 다음과 같은 경고가 나타납니다.

W: /etc/qemu-ifup: no bridge for guest interface found
Warning: hub port hub0port0 has no peer
Warning: vlan 0 with no nics
Warning: netdev hub0port0 has no peer
Warning: requested NIC (anonymous, model unspecified) was not created (not supported by this machine?)

답변1

더 이상 사용되지 않는 옵션을 사용할 때도 동일한 경고를 받았습니다 -net. 그런 다음 이를 다음과 같이 변경했습니다.

-netdev tap,ifname=tap0,script=no,downscript=no,id=my_net_id \
-device driver=virtio-net,netdev=my_net_id

문제가 해결되었습니다.

관련 정보