[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: