호스트(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으로 핑을 보내고 호스트에서 게스트 측의 eth0으로 핑을 보내면 정상적으로 작동합니다.