나는 qemu를 사용하여 사용자 정의 Linux 시스템(buildroot를 사용하여 구축)을 에뮬레이트하고 있으며 내 애플리케이션의 디스플레이를 내 호스트 시스템으로 내보내고 싶습니다.
이것은 충분히 간단해 보이지만 문서와 스택 교환 게시물을 읽는 데 며칠 동안 갇혀 있었고 해결책을 찾을 수 없었습니다.
외부 네트워크에 대한 게스트 액세스는 필요하지 않으며 단지 호스트와 게스트가 서로 통신할 수 있기를 원합니다.
qemu 문서에 따라 SLIRP 및 tun/tap 네트워킹을 시도했지만 아무 것도 작동하지 못했습니다.
SSH 포트 포워딩의 "-redir" 옵션도 시도했지만 역시 결과가 없었습니다.
자세한 내용은 다음을 참조하세요. - 호스트는 우분투 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
편집: 또한 아치 리눅스 튜토리얼을 단계별로 따라해 보았습니다. 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가 누락된 또 다른 문제를 해결했습니다.
언젠가는 누군가에게 도움이 되기를 바랍니다. :)