VGA Passthrough
Hola a todos,
Perdon de antemano por este churro pero me he propuesto realizar esta
ardua tarea para dejar de tener 2 sistemas operativos: el de cosas
serias como trabajo, correo, privacidad (debian) y el de juguete
(juegos, windows) y lo describo paso a paso hasta donde me quede
parado, ok?
Y el caso es que esta complicado jeje
Tengo un Acer Predator G3620 tal y como viene de la casa (si ya se que
podria haberme hecho uno a medida y mas barato pero me dio pereza y
compre este...)
La cosa es que tiene un procesador Intel Core i7-3770 LGA Quad Core
que se supone que trae una GPU integrada: Intel HD Graphics 4000
(segun esta pagina:
http://ark.intel.com/es-es/products/65719/Intel-Core-i7-3770-Processor-8M-Cache-up-to-3_90-GHz)
Y luego trae una NVIDIA GeForce GT640 que para lo que yo juego me es
mas que suficiente.
He tratado de seguir estos pasos de la wiki
(https://wiki.debian.org/VGAPassthrough). Y bueno creo que estoy un
poco perdido y necesito ayuda...
A ver:
He hecho una instalacion limpia de debian en una particion de 65 Gb
(XFCE porque me gusta mas) para empezar desde cero (y en otras dos
particiones tengo otro debian y un win).
1.- En esta instalacion no he instalado driver alguno de nvidia, he
instalado hardinfo y lshw para comprobar la info mas claramente:
lshw me dice:
*-display
description: VGA compatible controller
product: GK107 [GeForce GT 640 OEM]
vendor: NVIDIA Corporation
physical id: 0
bus info: pci@0000:01:00.0
version: a1
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress vga_controller
bus_master cap_list rom
configuration: driver=nouveau latency=0
resources: irq:47 memory:f6000000-f6ffffff
memory:e0000000-efffffff memory:f0000000-f1ffffff
ioport:e000(size=128) memory:f7000000-f707ffff
Asi que para meter en blacklist la nouveau y reiniciar ejecuto esto:
echo 'blacklist nouveau' > /etc/modprobe.d/nvidia-installer-disable-nouveau.conf
y reinicio. Ahora y no esta cargada.
2.- En la BIOS he activado el VT (ya que es Intel)
3.- Ejecute segun la wiki de debian:
egrep -q '^flags.*(svm|vmx)' /proc/cpuinfo && echo virtualization
extensions available
y todo bien.
4.- Instale qemu-kvm
apt-get install qemu-kvm
y todo bien (utilizao apt-get en lugar de aptitude, me gusta mas)
5.- Modifique el fichero de grub: /etc/default/grub para dejar esta la
linea asi:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
y ejecute:
update-grub /dev/sda
Al reiniciar compruebo con:
dmesg|grep -e DMAR -e IOMMU
y me da lo siguiente:
[ 0.000000] ACPI: DMAR 0x00000000DDED3FD8 000080 (v01 INTEL SNB
00000001 INTL 00000001)
[ 0.000000] Intel-IOMMU: enabled
[ 0.034388] dmar: IOMMU 0: reg_base_addr fed90000 ver 1:0 cap
c9008020660262 ecap f0105a
[ 0.034461] IOAPIC id 2 under DRHD base 0xfed90000 IOMMU 0
[ 0.463453] DMAR: No ATSR found
[ 0.463467] IOMMU 0 0xfed90000: using Queued invalidation
[ 0.463468] IOMMU: Setting RMRR:
[ 0.463475] IOMMU: Setting identity map for device 0000:00:14.0
[0xdde34000 - 0xdde57fff]
[ 0.463493] IOMMU: Setting identity map for device 0000:00:1a.0
[0xdde34000 - 0xdde57fff]
[ 0.463506] IOMMU: Setting identity map for device 0000:00:1d.0
[0xdde34000 - 0xdde57fff]
[ 0.463514] IOMMU: Prepare 0-16MiB unity mapping for LPC
[ 0.463519] IOMMU: Setting identity map for device 0000:00:1f.0
[0x0 - 0xffffff]
[ 0.471017] AMD IOMMUv2 driver by Joerg Roedel <joerg.roedel@amd.com>
[ 0.471019] AMD IOMMUv2 functionality not available on this system
Parece que esta activo, no?
A estas alturas el otro monitor conectado a la salida VGA de la placa
base aun no muestra nada... no se si va la cosa bien...
6.- Busque los puertos; y numeros de fabricante y vendedor de la GPU
nvidia y la tarjeta de sonido:
lspci -nn|grep -iP "NVIDIA"
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK107
[GeForce GT 640 OEM] [10de:0fc0] (rev a1)
01:00.1 Audio device [0403]: NVIDIA Corporation GK107 HDMI Audio
Controller [10de:0e1b] (rev a1)
7.-siguiendo la wiki de la pagina de debian ejecute lo siguiente:
echo '0000:01:00.0' | tee /sys/bus/pci/devices/0000:01:00.0/driver/unbind
En este momento me quedo con la pantalla en negro xD reinicio como
puedo, y al arrancar ahora ejecuto lo mismo y me dice:
echo '0000:01:00.0' | tee /sys/bus/pci/devices/0000\:01\:00.0/driver/unbind
tee: /sys/bus/pci/devices/0000:01:00.0/driver/unbind: No existe el
fichero o el directorio
0000:01:00.0
8.- Ahora mismo no se si la cosa va como debe ir, pero sigo con la
wiki y dice, ejecutamos:
modprobe vfio vfio_pci
sin salida alguna, lo cual es bueno...
9.- ejecuto despues
echo 10de 0fc0 | tee /sys/bus/pci/drivers/vfio-pci/new_id
echo 10de:0e1b | tee /sys/bus/pci/drivers/vfio-pci/new_id
pero /sys/bus/pci/drivers/vfio-pci no existe y no me deja crearlo
(raro que no venga en la guia...)
cd /sys/bus/pci/drivers/ -> tiene estos
agpgart-intel/ ehci-pci/ mei_me/ xen-platform-pci/
agpgart-sis/ i801_smbus/ pcieport/ xhci_hcd/
agpgart-via/ ie31200_edac/ serial/
ahci/ ioapic/ shpchp/
e1000e/ lpc_ich/ snd_hda_intel/
y aqui estoy... porque luego viene la seccion QEMU arguments (no GUI)
que se supone que abre la maquina virtual pero... solo tengo un
monitor activo! ¿no deberia tener ya los 2 monitores encendidos?
y luego la linea esta..
qemu-system-x86_64 \
-enable-kvm -M q35 -m 1024 -cpu host -smp
4,sockets=1,cores=4,threads=1 \
-bios /usr/share/qemu/bios.bin -vga none \
-device
ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1
\
-device piix4-ide,bus=pcie.0,id=piix4-ide \
-device
vfio-pci,host=01:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on,romfile=$HOME/Asus.HD6850.1024.110616.rom
\
-device vfio-pci,host=01:00.1,bus=pcie.0 \
-usb -usbdevice host:0603:00f2 -usbdevice host:046d:c01b \
-soundhw ac97 \
-drive file=$HOME/win7_rootfs.img,id=disk,format=raw -device
ide-hd,bus=piix4-ide.0,drive=disk \
-drive file=$HOME/win7.iso,id=isocd -device
ide-cd,bus=piix4-ide.1,drive=isocd \
;
no se que es el ioh3420 ni el piix4-ide (no se si debo cambiarlos)..
los puestos de usbdevice los pongo a mi raton y mi teclado: -usb
-usbdevice host:1e7d:30d4 -usbdevice host:046d:c077 \
Y en las lineas de 'drive' pongo lo siguiente para que apunten a
ficheros en mi home (el .iso ya lo tengo descargado):
-drive file=$HOME/VMs/W10/wi10-x64_rootfs.img,id=disk,format=raw
-device ide-hd,bus=piix4-ide.0,drive=disk \
-drive file=$HOME/VMs/windows-10-x64.iso,id=isocd -device
ide-cd,bus=piix4-ide.1,drive=isocd \
y la romfile no la encuentro en
http://www.techpowerup.com/vgabios/index.php?architecture=&manufacturer=&model=GT+640&interface=&memType=&memSize=
porque deberia ser la de MSI GT 640 4096 MB, pero al dar a 'details',
pone 'Device Id: 10DE 0FC1' y la mia es 10de:0fc0, que es la de NVIDIA
GT 640 1024 MB, pero esta pone GDDR5 y la mia es DDR3...
Asi que.-
pregunta 1: ¿porque no se me enciende el monitor conectado a la VGA de
la placa base?
pregunta 2: ¿cual seria la rom correcta para mi grafica?
Muchas gracias sobre todo al que haya llegado hasta aqui leyendo jaja
Y ya si me ayuda se lo agradezco mucho
Un saludo,
SrArcos
Reply to: