모듬‎ > ‎가상화‎ > ‎

Passthrough

의미

Direct I/O라고도 한다. 가상화 영역에서는 물리적인 장치를 가상머신에 직접 물려서 쓰는 것을 뜻한다.
인텔 CPU에서는 VT-d 기능이 활성화되어 있어야 하고 AMD CPU에서는 AMD-Vi 기능이 활성화되어 있어야 하며, 메인보드도 그에 상응하는 기능을 제공해야 한다.
다른 명칭으로는 IOMMU라고도 한다.

용도

디스크 입출력이 많은 경우는 RAID 카드를 꽂아서 가상머신에 직접 물려서 쓰기도 하고, 그래픽 카드와 USB를 물려서 가상머신이 아닌 물리적 컴퓨터인 것처럼 쓰는 경우도 흔하다.
CPU에 포함된 내장 그래픽을 쓰는 것은 ESXi에서는 되지 않는 것으로 보이고 Xen에서는 된다는 것 같다.

 ESXiXenKVMVirtualBox
내장 그래픽xoxx
OS X 설치 용이성oxo-
관리 편이성
윈도우 클라이언트 필요


XenServer에 웹 화면도 있지만
기본적으로 콘솔 기반

virsh 같은 GUI가 있다지만
복잡한 옵션은 콘솔 기반 

GUI와 콘솔 모두 있는데
세부 옵션은 알기 어려움
    

ESXi

ESXi 안의 가상머신에 GPU를 물려서 쓰면서 2기가 이상으로 램을 할당하려면 .vmx 파일에 pciHole.start="1200" / pciHole.end = "2200" 이라고 두 줄을 추가하면 된다. (없으면 부팅이 진행되지 않는다) (이 부분이 왜 이렇게 되는지는 확인되지 않았으나 효과가 있다는 것은 확인함)

내장 그래픽은 할당 자체는 가능하나 정상 장치로 동작하지 않는다.

Xen

Xen에서는 다음과 같은 절차로 진행한다. (4.4 기준 - 다른 문서들은 과거의 것을 다루는 게 많아서 기록함)
  1. lspci -k 명령으로 대상으로 할 장치의 장치번호와 현재 연결된 드라이버 확인
  2. xen-pciback이 각 장치를 가로채서 물리적인 장치에서 사용하지 않도록 함
    1. /etc/modprobe.d/xen-pciback.conf 파일 생성
    2. install i915 /sbin/modprobe xen-pciback ; /sbin/modprobe --first-time --ignore-install i915 추가
    3. install radeon /sbin/modprobe xen-pciback ; /sbin/modprobe --first-time --ignore-install radeon 추가
    4. 단, USB 허브는 xhci_hcd, ehci-pci에 연결되어 있는데 모듈이 아니라 커널에 포함되어 있어서, 커널 설정을 모듈로 바꾸고 재컴파일해서 쓰지 않는 이상은 처리가 안 된다. 그냥 /etc/init.d/xendomains의 ..._auto() 안에서 xl pci-assignable-add 00:00.0 식으로 각각 호출해서 쓴다. (/etc/rc.local에서 실행하는 것은 이미 /etc/xen/auto 디렉토리 안에 있는 가상머신이 호출된 다음이므로 의미가 없다)
    5. options xen-pciback hide=(xx:yy.z)(xx:yy.z) 식으로 lspci에서 확인한 장치번호를 모듈에 할당
    6. options xen-pciback passthrough=1
  3. /etc/initramfs-tools/modules 파일에 xen-pciback 추가
  4. update-initramfs -u -k all 명령으로 위에서 바꾼 modules 파일이 부팅시에 적용되도록 준비
  5. reboot
  6. xl pci-assignable-list 명령으로 부팅 직후에 장치가 준비된 것 확인
위와 같이 했을 때 외장 AMD 그래픽 카드는 동작하는 것을 확인했으나 인텔 내장 그래픽(IGD)은 인식까지만 되고 동작을 하지 않는다. 리소스가 부족하다(not enough free resource, code 12)는 오류가 나온다.

Xen에서는 gfx_passthru = 1 옵션을 지정해야 동작하는 것으로 보인다. 위의 code 12 오류가 이 옵션이 없어서가 아닐까 의심된다. qemu-xen-traditional에서만 지원하는 옵션이라고 한다. Xen 4.3부터 traditional이 기본이 아니게 바뀌었으므로 직접 변경해야 한다.
  1. /etc/xen/xxx.cfg 설정 파일을 수정
  2. device_model_version = 'qemu-xen-traditional' 추가
  3. gfx_passthru = 1 추가
  4. pci = [ ... ] 안에 위에서 준비해둔 PCI 장치를 쉼표(,)로 구분하여 나열
  5. xen_platform_pci = 1 추가 (없으면 윈도우 로고 화면에서 진행되지 않음)


여기까지 하고 xl create xxx.cfg 파일로 가상머신을 실행하였을 때, 부팅 직후 꺼졌던 내장 그래픽에 연결된 모니터가 다시 켜지는 것을 확인할 수 있다. 해당 OS에서 적절한 드라이버를 잡아주면 정확히 장치를 인식한다.

2개의 OS를 그래픽 없이 따로 두고 AMD 외장 그래픽을 pci-detach, pci-attach 명령으로 번갈아가며 쓰는 구성은 gfx_passthru=1 설정이 없는 상태에서는 code 12 오류가 나오고, gfx_passthru=1 설정이 있는 상태에서는 그래픽이 있어야 부팅이 진행된다. 따라서, 어느 쪽이든 원활하게 쓰기는 어렵다.


VirtualBox

extpack을 설치하면 pci passthrough를 쓸 수 있다고 나와 있어서 해보았는데, 진짜 VBoxManage modifyvm 옵션 중에 pci-attach와 pci-detach가 있다.

IGD를 대상으로 해보았는데 실행은 되지 않는다. pci-attach 명령 자체는 vbox 설정 파일에 기록하는 것뿐이고, VBoxHeadless -s VMNAME 식으로 실행을 하면  VERR_MAIN_CONFIG_CONSTRUCTOR_COM_ERROR 오류가 나오는데 정확히 무슨 내용인지는 모르겠다.

pci-stub 설정과 IOMMU에 대한 설정이 필요하다고 되어 있어서 우분투 기준으로 /etc/default/grub 파일에서 iommu=hard intel_iommu=on pci-stub.ids=8086:0412 식으로 옵션을 적어주고 update-grub 명령으로 갱신한 다음 부팅했을 때 dmesg에 제대로 설정된 상태로 나오는 것을 확인했다. i915 모듈 때문에 영향이 있을까 해서 /etc/modprobe.d/blacklist-i915.conf 파일을 등록하기도 했지만 여전히 실행은 되지 않았다.

외장 그래픽은 VBoxHeadless로 실행하면 금새 호스트 시스템이 멈춰버려서 뭐가 문제인지 확인할 방법이 없다.

KVM

VirtualBox에서 설정한 pcistub 상태, 즉 해당 장치를 실제 기능이 있는 i915 모듈이 아니라 pcistub 모듈이 차지만 하고 있고 기능은 활성화하지 않는 상태로 만들었을 때는 Device is ineligible for IOMMU domain attach due to platform RMRR requirement.라며 장치를 할당할 수 없다고 나왔다.

pci-stub과 i915에 대한 설정을 되돌린 상태에서 qemu-system-x86_64 -enable-kvm -bios OVMF.fd -cdrom ./macosx.iso -device pci-assign,host=00:02.0 정도로 qemu 실행했을 때 아래와 같이 오류가 나왔다.

qemu-system-x86_64: -device pci-assign,host=00:02.0: Couldn't mmap 0xf7800000!: Resource temporarily unavailable
qemu-system-x86_64: -device pci-assign,host=00:02.0: Device initialization failed.
qemu-system-x86_64: -device pci-assign,host=00:02.0: Device 'kvm-pci-assign' could not be initialized

아마도 ESXi에서 장치가 동작하지 않는 경우나 Xen에서 보았던 리소스 부족 오류와 같지 않을까 짐작된다.

IGD assignment has never worked with KVM.”이라는 말이 2014년 6월에 나왔으니 실제로 내장 그래픽을 어떤 식으로든 KVM에 연결하는 건 당분간은 안 된다고 알고 있으면 되겠다.

vfio-pci kernel module seems to work a type of generic wrapper for devices under pci-stub module. qemu accept -device vfio-pci,... arguments but external GPU didn't show intended screen. http://www.firewing1.com/howtos/fedora-20/create-gaming-virtual-machine-using-vfio-pci-passthrough-kvm introduce how to bind vfio-pci devices.

다음과 같은 스크립트 파일을 만들었다.
  • VGA passthrough
    • vfio-pci 모듈에 연결하는 동작은 vfio-bind라는 이름으로 쓰라고 스크립트가 있는 걸 가져다 쓰고 있다. vfio-pci로 장치를 붙이는 건 쉽지만, 다시 원래의 모듈로 돌려주는 건 그렇게까지 매끄럽진 않은 것 같다. USB 허브 장치는 아주 잘 된다.
    • pci-stub나 blacklist 처리는 없어도 OS X 동작에 지장은 없었다. 해두면 잡다한 에러 로그가 없어지긴 한다.
      • 단, 윈도우에 붙이고 싶으면 반드시 처리를 해야 한다. 특히 -machine q35 에서는 장치에 Code 12 오류 나는 증상이 없어지지 않았고, -machine을 지정하지 않으면 동작했다. https://lists.gnu.org/archive/html/qemu-devel/2014-02/msg00761.html
    • 가상머신이 뜰 때 i915의 X 화면에 색상이 오염되는 증상이 있는데, https://wiki.debian.org/VGAPassthrough 에도 glitches라고만 표현하고 tty 화면에 갔다가 다시 X로 돌아오라만 되어 있다. pci-stub 안 해서 그런가 싶었는데 해도 똑같다.
    • 이렇게 VGA를 직접 붙이면 사실상 qemu 기본 모니터는 필요가 없는데, -vga none 옵션을 주면 아예 qemu에서 VGA 에뮬레이션 자체를 안 하기 때문에 불필요한 가상 디스플레이도 없어진다.
    • -daemonize 옵션을 붙이면 명령행이 즉시 반환되는 것까지는 좋은데 -daemonize와 -nographic 옵션을 같이 쓸 수 없다는 경고가 뜬다. 대신 -serial null -parallel null -monitor none -display none 옵션을 붙여주면 모든 출력이 제거되고 그래픽 카드로만 화면이 잡힌다.
    • 다만, qemu를 통해 접근할 수 있는 모든 수단을 차단해버리기 때문에 OS X가 잠들기 상태가 되었을 때 (살아는 있는 것 같은데) 되살릴 방법이 없는 게 문제다. -monitor을 통하거나 -qmp를 통하는 방법이 있겠지만 아직은 미완
  • vfio에 romfile 옵션을 주면 달라지긴 한다.
    • https://bbs.archlinux.org/viewtopic.php?pid=1469255#p1469255 설명에 의하면 VGA도 EFI의 영향을 받는다고 한다. ROM 내용을 OS가 인식할 수 있는 형태로 제공하는지 아닌지의 영향이 있다고 한다.
    • vfio 없이 pci-assign을 하면 잘못된 ROM 내용이라고 뜨는 경우를 봤다.
    • R9 270x에서 부팅 후에 흰색 화면만 나오는 상태가 있어서 rom 파일을 찾아다 붙여봤는데 흰 화면으로 가지 않고 사과 로딩 화면에서 멈춰있는 차이는 있었다.
  • 키보드와 마우스 인식은 -usbdevice tablet 식으로 하면 된다고 적혀 있지만 이건 아마도 -vga none이 아닐 때의 얘기인지 전혀 쓸모가 없다.
    • 별도 VGA로 쓸 때는 -usbdevice host:... 식으로 lsusb에 나오는 값을 직접 먹여줘야 되는 것 같다. 다만 이렇게 하면 재부팅 등의 상황에서 USB 장치를 해제하지 못한다는 식의 오류가 나오고 작동이 멈추는 것처럼 보여서 qemu 프로세스를 직접 죽여야 한다. libusb: error [_open_sysfs_attr] open /sys/bus/usb/devices/3-10.3/bConfigurationValue failed ret=-1 errno=2
    • 실행할 때 이미 콘솔에 오류가 여러 번 나온다. 아마 이 단계에서부터 어딘가 이상이 있는 모양이다. xhci_hcd 0000:00:14.0: Setup ERROR: setup context command for slot 7. / usb 3-10.3: hub failed to enable device, error -22
  • 소리는 옵션이 여러가지 있다고 한다.
    • -device ich9-intel-hda,bus=pcie.0,addr=1b.0,id=sound0 -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 옵션은 리눅스에서 lspci 명령에도 잡히고 소리도 나는데, OS X에서는 ioreg에서 나오긴 하지만 DPCIManager에서는 장치만 잡히고 코덱이 나오질 않는다. VoodooHDA 설치했을 때 장치는 잡히는데, 정착 qemu 실행될 때 alsa 쪽에서 오류가 나면서 소리가 나오지는 않는 상황이 되었다. 윈도우에서 같은 테스트를 했을 때의 결과도 그렇고 검색해봐도 소리 품질이 관련 환경변수를 조정해봐도 아주 안 좋다는 얘기들이 많아서 그냥 포기했다.
    • -usbdevice host:xxxx:yyyy 옵션으로는 USB 사운드가 잡히긴 하지만 지글거림과 주기적인 틱틱거임이 있는 걸로 봐서 qemu나 kvm의 USB 처리 과정에서 지연 내지 열화가 생기는 걸로 의심된다. 아예 vfio-pci로 USB 컨트롤러 자체를 전달해버렸더니 USB 사운드도 문제가 없어졌다.
    • -device usb-audio 옵션은 lspci에도 안 나온다.
    • -soundhw 옵션으로도 지정하는 게 있다고 하는데 자세히 확인해보진 않았다.
  • USB
    • 키보드 마우스 소리 모두를 USB로 처리하기 때문에 lspci에서 보이는 USB 장치를 vfio-pci로 아예 넘겼더니 잘 된다.
    • USB 3.0에 대응하는 xHCI 컨트롤러만 넘겼고 EHCI 장치는 놔뒀는데, 본체에 붙어있는 포트는 모두 가상머신으로 넘어갔고, 혹시나 했던 메인보드 USB 2.0 핀도 가상머신에서 반응한다. 메인보드 매뉴얼에 명시되어 있는 부분을 찾아보니 "Due to the design of the Intel®8 series chipset, all USB devices connected to theUSB 2.0 and USB 3.0 ports are controlled by the xHCI controller."라고 하여 무조건 xHCI 컨트롤러 관할이 된다고 한다.
    • 혹시나 해서 BIOS에 들어가 찾아봤더니 USB 분류에 Intel xHCI Mode 항목이 있고 끌 수가 있다. 꺼봤더니 lspci에서 xHCI는 없어지고 EHCI 2개는 여전히 남아있다. 둘 중에 하나만 가상머신에 전달했더니, 가상머신과 원래의 리눅스에서 따로 동작한다. 결과적으로 USB 3.0은 포기한 셈이지만, 동시에 양쪽 모두 쓸 수 있다는 점에서 훌륭한 구성이 되었다.
  • 디스크
    • -drive file=/dev/sda,format=raw,media=disk 옵션을 써서 물리 디스크를 직접 물려도 부팅이 된다. cache=none이 같이 들어가면 좋다고 한다.
    • virtio는 게스트에서 드라이버를 지원해주지 않으면 써먹을 수가 없다.
    • dmg 파일도 지원한다고 하고, -cdrom FILENAME 식으로 시도도 해서 에러는 안 나는데 실제로 OS에 장치가 잡히지는 않는 것 같다.
    • qemu raw 형식 이미지는 dd if=rawfile of=/dev/sda 식으로 실제 디스크에 바로 덮어써도 동작한다. 파티션 크기가 안 맞는 건 gparted 정도로 교정할 수 있고. 실시간으로 파티션 크기를 조정할 수도 있기 때문에 사실상 가상 이미지와 실제 디스크에 차이가 없다고 볼 수 있다.
  • 네트워크
    • 기본적으로는 NAT가 잡힌다. 이 상태에서도 그냥 외부로 나가는 접속은 문제가 없다.
      • NAT로는 화면 공유(vnc)나 AirPlay 사용이 안 되었다. 엄밀히는 동일망에 있는 게 아니어서 그럴 거라고 짐작된다.
      • 윈도우 원격 데스크탑(rdp)을 쓰려면 -redir tcp:3389::3389 옵션으로는 안 되고, -net user,hostfwd=tcp::3389-:3389 식으로 써줘야 한다. 뭐가 다르다는 건지 자세히는 모르겠지만.
      • 하지만 원격 데스크탑으로 접속하면 Ahnlab Security Online에 걸려서 키 입력이 안 되는 경우도 있어서, 따로 -vnc :1 식으로 접속할 수단이 있어야 한다.
    • 브릿지 통신을 구성하기 위해 bridge-utils 패키지를 설치하고 /etc/network/interfaces 파일을 손댔다.
      • 원래는 우분투에서 설치한 network-manager가 처리하도록 그냥 두었던 것을 수동 처리하도록 바꾸었다. nm-connection-editor를 써보려고 했으나 구성이 너무 단순해서 어떻게 해야 내가 원하는 구성을 맞출 수 있을지 알 수 없었다.
      • qemu 옵션은 이렇다. -netdev type=tap,ifname=tap0,script=/etc/qemu-ifup,id=net0 -device e1000-82545em,netdev=net0
      • 브릿지가 없을 때는 앞부분이 -netdev user,id=hub0port0 로 간소했다.
      • virtio-net-pci와 vhost-net를 적용하면 성능상 이점이 있다고 한다. http://www.linux-kvm.org/page/UsingVhost 에서 기본형을 가져와서 적용했는데, 실제로는 장치가 잡히지 않았다. https://github.com/pmj/virtio-net-osx/issues/3 설명으로는 10.10부터의 kext 인증 조치 때문에 (kext 패키지가 오래 되어서) 안 됐던 거라고 한다. 10.11에서도 rootless 설정에 걸려서 그냥은 안 되지 싶다.
      • SFTP도 아닌 FTP로 최소한의 부하만 걸리는 상태로 실전송속도를 보니 굳이 성능으로 빠지는 상태가 아니어서 virtio 적용은 차차 해도 될 것으로 결론.
      • 브릿지 구조에서 qemu를 여러 개 띄울 거면 macaddr 속성을 지정해야 IP가 다르게 잡히는 것 같다.
  • UEFI 지원을 위한 OVMF.fd 파일은 직접 빌드한 버전
    • OVMF가 아닌 SeaBIOS의 bios.bin 혹은 bios-mac.bin에 chameleon이나 chimera을 -kernel로 먹여서 쓰는 것도 가능은 하지만 어느 것도 OS X 10.9 이하의 구동에 성공하진 못 했다.
    • q35로 지정하면 플로피만 남고 다른 디스크가 전혀 인식되지 않아서 써먹을 수가 없다. https://lists.gnu.org/archive/html/qemu-discuss/2015-02/msg00033.html 이거랑 같은 상황. 다만, FS1: 식으로 장치 자체는 잡혀 있다. bus=ahci.0 지정해도 마찬가지.
    • Clover EFI를 USB로 만들어둔 걸 -usbdevice host:xxxx:yyyy 로 붙여주면 EFI에 부팅 장치로 잡힌다. 그냥 usb-storage 장치로 이미지를 하나 만들어줘도 똑같이 먹는다.
      • VGA에 클로버 화면이 뜰 때도 있고, 아닐 때도 있는데 조건은 정확히 모르겠다.
      • 클로버 화면에는 OS X 설치본이 부팅 항목으로 잡힌다. 선택하면 화면이 꺼지고 부팅이 진행되지는 않는다. -smp 갯수만큼 CPU 100%을 먹는 것은 확인이 된다.
      • 디스크 인식은 q35가 아니면 일단 사과 부팅까지는 된다. 다만 그 다음 단계에서 -v로 확인해보면 Sill waiting for root device 오류가 남는 것을 볼 수 있는데 아마도 IDE 드라이버가 맥에서 인식이 안 되는 모양. http://clover-wiki.zetam.org/FAQ#Q:-The-system-starts-loading-but-hangs-at-Still-waiting-for-root-device.
    • EFI 상태에서 바로 부팅으로 넘어가지 않고 메뉴 화면이 뜨면 fs0:\efi\ubuntu\grubx64.efi 식으로 EFI 부팅 파일을 직접 호출해줘야 하는 상태가 된 적도 있었다. 초반에는 그냥 됐었는데 뭐가 달라진 건지는 불명. Giving OVMF_CODE.fd and OVMF_VARS.fd with if=pflash has made same result after some reboots.
    • 우분투는 -drive if=virtio,media=cdrom,readonly,file=./ubuntu-14.10-desktop-amd64.iso 줄을 붙여서 우분투 설치 후 iso 없이 구동에 성공했다. 다만, GRUB 화면이 안 뜨고 : no suitable video mode found / : no video mode activated / : no suitable video mode found / Booting in blind mode 라고 나온 뒤에 조금 있으면 VGA에 화면이 뜬다.
    • CentOS 7.0은 화면이 안 뜬다. live iso를 먹여서 EFI 부팅을 넘어 CentOS를 시작하라고 진입하면 하드를 읽는 표시가 나는 걸로 봐서는 화면 표시 쪽이 문제가 있는 걸로 보인다. DVD iso로는 sysv가 진행되고 X startup failed, falling back to text mode 라고 나온 뒤에 프롬프트가 떠서 설치를 진행할 수 있다. 설치하고 fb 화면으로 텍스트가 잡히긴 하지만 startx를 하면 No devices detected. 라는 오류를 로그 파일에 남기고 진행은 안 된다. lsmod에는 radeon이 나오는 걸로 봐서 단순히 CentOS 설정의 문제가 아닐까 생각한다.
  • OS X 10.10
    • Yosemite 이후로는 EFI를 사용하기 때문에 OVMF를 사용하는 편이 자연스럽게 느껴진다. 20151001 기준 ed2k/OvmfPkg 빌드에서 clover 3451을 통해 10.10의 부팅 및 10.11 업데이트 및 부팅을 성공했다.
      • UEFI를 지원하는 그래픽 카드를 쓰면 -vga none 상태에서 OVMF가 바로 모니터에 뜨기 때문에 실제로 물리적인 부팅인 것처럼 쓸 수 있다. 그래픽 카드가 UEFI를 지원하지 않아서 -vga std로 부팅할 경우에는 화면이 깨지면서 부팅이 진행되지 않았다.
      • lspci에 나오는 USB 장치를 vfio-pci로 넘겨도 OVMF 수준에서는 키보드 등이 먹지만 OS X 부팅 후에는 반응이 없다. 시스템 구성을 확인해봐도 USB 장치에 안 잡힌다. 같은 구성으로 윈도우를 부팅해보면 문제 없고 -usbdevice host:xxxx:yyyy 식으로 바꿔도 동작하는 걸로 봐서 OVMF 혹은 clover 어딘가에서 vfio-pci 중에 USB 쪽은 처리가 아직 불완전한 것으로 의심된다.
      • It was successful to set no bus= property to vfio-pci for USB controller, by removing bus=root.1 as for VGA. OVMF+Ubuntu shows USB controller in lspci and all USB devices works well. Removing virtual USB controller like ehci or similar could be helpful.
      • Clover makes things weird again. OS X shows USB controller in system profiling, but none of USB devices works. Just tick from USB sound+speaker on keyboard strokes.
      • Enabling EHCI hand-off from BIOS makes no difference.
      • devices of usb-host or usbdevice only works if odd in sequence. With three devices, first and third one works. Second one shows up as usb device on qemu monitor and OS then works nothing.
    • chimera 4.1을 써서 부팅이 된다. http://kernelpanik.net/running-mac-osx-yosemite-on-kvm/ 설치 단계는 리얼맥을 통해 건너뛴 거라서 불완전하다고 할 순 있고, 실제로 10.11로 업데이트 앱을 실행해도 chimera에서 그냥 정상 부팅만 하고 설치 화면으로 넘겨주질 않는다.
      • echo 1 > /sys/module/kvm/parameters/ignore_msrs 처리는 modprobe.d 안에 options kvm ignore_msrs=1 정도로 파일을 작성해주는 편이 더 깔끔하다.
      • chimera가 chameleon의 변종이기 때문에, 찾아보면 OS X 파티션의 /Extra 디렉토리 안에 설정 파일을 만들어서 Timeout 설정 같은 걸 넣어주는 방법이 나와 있다. 수동으로 엔터를 한 번 쳐줘야 부팅이 진행되는 것을 제거할 수 있다.
      • 10.11 DP1에서 createinstallmedia 명령을 써서 (8GiB USB가 없어서 그냥 qemu-img로 이미지 하나 만들어서) 설치본을 만들었다. chimera 부팅 장치로 잡히긴 하는데 panic(cpu 0 caller 0xffffff800032ffb6): "zone_init:kmem_suballoc failed"@Library/Caches/com.apple.xbs/Sources/xnu/xnu-3216,0,0,1,13/osfmk/kern/zalloc.c:2186 오류가 나면서 부팅이 안 된다. 10.10으로 다시 만들어서는 부팅이 진행된다. http://www.insanelymac.com/forum/topic/231075-chameleon-23svn-official-pkg-installer-binaries/page-152 페이지를 오류 메시지로 찾아서 본 바로는 El Capitan의 메모리 맵이 파악이 안 된 상태여서 그렇다고 한다.
    • 왜인지는 모르겠지만 cdrom 장치는 qemu 자체에는 info block으로 있는 게 확인되는데 OS X에서는 안 잡힌다. iso를 USB 저장장치로 인식시키는 건 된다.

qemu-system-x86_64 \

-enable-kvm \

-bios ./OVMF.fd \

-smbios type=2 \

-m 4G \

-smp 8,cores=2 \

-cpu core2duo \

-machine q35 \

-device isa-applesmc,osk="APPLESMCKEYHERE" \

-usb \

-usbdevice host:04f3:0103 \

-usbdevice host:045e:00cb \

-drive if=virtio,file=./yos_hdd.img \

-boot once=c \

-device ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1 \

-device vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on,romfile=./XFX.R9270X.2048.131122.rom \

-device vfio-pci,host=01:00.1,bus=root.1,addr=00.1 \

-vga none \

-nographic \

$@








Comments