› Foros › PC › Software libre
eric_14 escribió:Pues sí que pinta bien, veremos a ver cómo avanza y a ver si de aquí poco es fácil montarse la máquina virual, aunque si es por drivers igual nvidia actualiza y deja de funcionar.
Directamente es que no entiendo que tenga que tener esta restricción por software, pero que más les da y ahora además que han activado el passthought para las geforce en los últimos drivers, en fin, ojalá de aquí poco quiten eso directamente y se pueda usar aún más fácil.
1985a escribió:Hace tiempo que lo uso asi, y ese modo de nvidia, posiblemente lo pruebe mucho tiempo despues. Mi instalacion funciona muy bien con el fix que la comunidad hizo
ejemplo
Brutico escribió:1985a escribió:Hace tiempo que lo uso asi, y ese modo de nvidia, posiblemente lo pruebe mucho tiempo despues. Mi instalacion funciona muy bien con el fix que la comunidad hizo
ejemplo
Hola que metodo utilizaste? a ver si no depende de systemd
Brutico escribió:@1985a Me interesa que tutorial seguiste?
1985a escribió:Brutico escribió:@1985a Me interesa que tutorial seguiste?
De un yuri alex, no recuerdo bien su nombre.
Esta guia, la vi mucho tiempo despues, y me gusto, todo muy resumido.
https://github.com/joeknock90/Single-GPU-Passthrough
Te paso un blog donde voy anotando todo lo que he ido experimentando con la maquina virtual.
Nota: Algunas cosas no estan muy actualizadas, como la guia single gpu pass, pero pueda ser que te sirva de apoyo.
MIA
Usuario random
1985a escribió:@Brutico
Siempre.
Cuando tengas un tiempo con este metodo, ya no volveras al metodo tradicional y tu Windows se volvera un archivo mas el cual vivira por siempre en tu instalacion de Linux.. Siempre y cuando elijas el metodo de archivo, si utilizas el metodo de disco o particion, la cosa cambia.
Considerando que casi todo es emulado, a excepcion de la GPU y el CPU, no me quejo de ese rendimiento.
Lo que si puedo comentar, es que ahora mismo, tengo rendimiento casi nativo por decirlo de una manera.
Comparacion entre la maquina virtual que tengo y una captura de un usuario random con su sistema nativo
o baremetal como se conoce ingles. Ver spoiler.MIA
Usuario random
Brutico escribió:1985a escribió:@Brutico
Siempre.
Cuando tengas un tiempo con este metodo, ya no volveras al metodo tradicional y tu Windows se volvera un archivo mas el cual vivira por siempre en tu instalacion de Linux.. Siempre y cuando elijas el metodo de archivo, si utilizas el metodo de disco o particion, la cosa cambia.
Considerando que casi todo es emulado, a excepcion de la GPU y el CPU, no me quejo de ese rendimiento.
Lo que si puedo comentar, es que ahora mismo, tengo rendimiento casi nativo por decirlo de una manera.
Comparacion entre la maquina virtual que tengo y una captura de un usuario random con su sistema nativo
o baremetal como se conoce ingles. Ver spoiler.MIA
Usuario random
Vale hay algo que hago mal... creo una máquina virtual normal sin elegir gpu dedicada porque si la elijo no se crea la máquina porque la gpu esta en uso
Brutico escribió:@1985a He volcado mi bios y según lo que leo hay que borrar con un editor hexadecimal justo antes de la letra U que está en la línea Video
Pero a mi la linea empieza por U, es que no me inicia la maquina virtual.
estoy siguiendo este tutorial
https://dennisstanistan.com/blog/716/si ... h-kubuntu/
nvflash --version | grep IFR
dd if=///bios of=/salvada.rom bs=2560 skip=1
eric_14 escribió:pero eso que comentáis no es para la gpu virtual, no? es para el passthough de siempre
[*] Virtualization --->
<M> KVM for AMD processors support
[*] Virtualization --->
<*> Host kernel accelerator for virtio net
Device Drivers --->
[*] Network device support --->
[*] Network core driver support
<*> Universal TUN/TAP device driver support
[*] Networking support --->
Networking options --->
<*> The IPv6 protocol
<*> 802.1d Ethernet Bridging
ebuild R ] app-emulation/qemu-6.0.0::gentoo USE="aio alsa bzip2 caps curl doc fdt filecaps gtk io-uring jpeg multipath ncurses nfs nls opengl oss pin-upstream-blobs plugins png pulseaudio sdl seccomp slirp spice udev usb usbredir vhost-net vhost-user-fs virgl virtfs vnc xattr zstd -accessibility -capstone -debug -glusterfs -gnutls -infiniband -iscsi -jack -jemalloc -lzo -numa -python -rbd -sasl -sdl-image (-selinux) -smartcard -snappy -ssh -static -static-user -systemtap -test -vde -vte -xen -xfs" PYTHON_TARGETS="python3_8 -python3_7 -python3_9" QEMU_SOFTMMU_TARGETS="arm sparc x86_64 -aarch64 -alpha -avr -cris -hppa -i386 -lm32 -m68k -microblaze -microblazeel -mips -mips64 -mips64el -mipsel -moxie -nios2 -or1k -ppc -ppc64 -riscv32 -riscv64 -rx -s390x -sh4 -sh4eb -sparc64 -tricore -unicore32 -xtensa -xtensaeb" QEMU_USER_TARGETS="x86_64 -aarch64 -aarch64_be -alpha -arm -armeb -cris -hexagon -hppa -i386 -m68k -microblaze -microblazeel -mips -mips64 -mips64el -mipsel -mipsn32 -mipsn32el -nios2 -or1k -ppc -ppc64 -ppc64abi32 -ppc64le -riscv32 -riscv64 -s390x -sh4 -sh4eb -sparc -sparc32plus -sparc64 -xtensa -xtensaeb" 0 KiB
<hostdev mode="subsystem" type="pci" managed="yes">
<source>
...
</source>
<rom file="/home/juanpe/Documentos/BIOS.rom"/>
...
</hostdev>
<hostdev mode="subsystem" type="pci" managed="yes">
<source>
...
</source>
<rom file="/home/juanpe/Documentos/BIOS.rom"/>
...
</hostdev>
<features>
...
<hyperv>
...
<vendor_id state="on" value="thissucks"/> <!-- value can be whatever like "hello", maximum of 12 characters-->
</hyperv>
<hidden state="on"/>
...
<ioapic driver="kvm"/>
</features>
sudo mkdir /etc/libvirt/hooks/qemu.d
sudo wget 'https://raw.githubusercontent.com/PassthroughPOST/VFIO-Tools/master/libvirt_hooks/qemu' -O /etc/libvirt/hooks/qemu
sudo chmod +x /etc/libvirt/hooks/qemu
sudo service libvirtd restart
sudo mkdir -pv /etc/libvirt/hooks/qemu.d/win10/prepare/begin
sudo mkdir -pv /etc/libvirt/hooks/qemu.d/win10/release/end
#!/bin/bash
# Original script provided at https://github.com/joeknock90/Single-GPU-Passthrough
# You should only use these scripts as templates and write your own as stated in the repository's readme.
# Helpful to read output when debugging
set -x
# I don't need to call that
#systemctl isolate multi-user.target
# Stop the display manager service
systemctl stop sddm.service
# Stop the pulse audio service
systemctl stop pulseaudio.service
# Terminate KDE
kquitapp5 plasmashell || killall plasmashell
killall kwin_x11
# Unbind VTconsoles
echo 0 > /sys/class/vtconsole/vtcon0/bind
echo 0 > /sys/class/vtconsole/vtcon1/bind
# Unbind EFI-Framebuffer
echo efi-framebuffer.0 > /sys/bus/platform/drivers/efi-framebuffer/unbind
# If you have the beep package installed and your motherboard has a speaker then this can provide you
# with some sort of feedback on what's going on.
#enable pcspkr
#modprobe pcspkr
#beep -l 100 -f 1000
# Avoid a Race condition by waiting 5 seconds. This can be calibrated to be shorter or longer if required for your system
sleep 8
# Unload all Nvidia drivers
modprobe -r nvidia_drm
modprobe -r nvidia_uvm
modprove -r nvidia_modeset
modprobe -r nvidia
# snd_hda_intel is used for the HDMI audio
# snd_hda_intel is blacklisted completely on my system, so I don't really need a call to remove it since it's not loaded.
modprobe -r snd_hda_intel
#beep -l 500 -f 1000
nvProbCount=$(lsmod | grep nvidia | wc -l)
if [ $nvProbCount -gt 0 ]
then
# what the fuck!
# let us know via the pc speaker that something got fucked
# beep -f 300 -l 1000
sleep 1000 # wait a second
virsh destroy {your_vm_name} # error, forcefully shut down the vm
exit 1
fi
## Detach the GPU
virsh nodedev-detach pci_0000_09_00_0 # Change pci_0000_25_00_0 to the appropriate PCI address that your GPU resides on.
virsh nodedev-detach pci_0000_09_00_1 # Change pci_0000_25_00_1 to the appropriate PCI address that your GPU audio controller resides on.
# Load VFIO Kernel Module
modprobe vfio-pci
#beep -l 100 -f 1000
#modprobe -r pcspkr
#!/bin/bash
# Original script provided at https://github.com/joeknock90/Single-GPU-Passthrough
# You should only use these scripts as templates and write your own as stated in the repository's readme.
# Helpful to read output when debugging
set -x
# Unload VFIO-PCI Kernel Driver
modprobe -r vfio-pci
modprobe -r vfio_iommu_type1
modprobe -r vfio
# Re-Bind GPU to Nvidia Driver
virsh nodedev-reattach pci_0000_09_00_1 > /dev/null 2>&1
virsh nodedev-reattach pci_0000_09_00_0 > /dev/null 2>&1
# Rebind VT consoles
echo 1 > /sys/class/vtconsole/vtcon0/bind
# Some machines might have more than 1 virtual console. Add a line for each corresponding VTConsole
echo 1 > /sys/class/vtconsole/vtcon1/bind
# Re-Bind EFI-Framebuffer
nvidia-xconfig --query-gpu-info > /dev/null 2>&1
echo "efi-framebuffer.0" > /sys/bus/platform/drivers/efi-framebuffer/bind
# It's blacklisted on my system, no need for me to enable it back.
#modprobe snd_hda_intel
modprobe nvidia_uvm
modprobe nvidia_drm
modprobe nvidia_modeset
modprobe nvidia
# Restart Display Manager
systemctl start sddm.service
kstart5 plasmashell
Device Drivers --->
[*] IOMMU Hardware Support --->
Generic IOMMU Pagetable Support ----
[*] AMD IOMMU support
<*> AMD IOMMU Version 2 driver
[*] Support for Intel IOMMU using DMA Remapping Devices
[*] Support for Shared Virtual Memory with Intel IOMMU
[*] Enable Intel DMA Remapping Devices by default
[*] Support for Interrupt Remapping
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash iommu=1 amd_iommu=on rd.driver.pre=vfio-pc pcie_acs_override=downstream,multifunction"
git clone https://github.com/feniksa/gentoo_ACS_override_patch.git /etc/portage/patches
sudo virsh --connect qemu:///system define /home/edgar/win10.xml
error: Falló al definir un dominio para /home/edgar/win10.xml
error: error interno: tipo de fuente pci 'alias' desconocido
<domain type='kvm' id='7' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
<name>win10</name>
<uuid>2811c151-b7af-4705-8220-1eac8b8e1656</uuid>
<metadata>
<libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
<libosinfo:os id="http://microsoft.com/win/10"/>
</libosinfo:libosinfo>
</metadata>
<memory unit='KiB'>6291456</memory>
<currentMemory unit='KiB'>6291456</currentMemory>
<vcpu placement='static'>6</vcpu>
<os>
<type arch='x86_64' machine='pc-q35-5.2'>hvm</type>
<loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE_4M.fd</loader>
<nvram>/var/lib/libvirt/qemu/nvram/win10_VARS.fd</nvram>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
<hyperv>
<relaxed state='on'/>
<vapic state='on'/>
<spinlocks state='on' retries='8191'/>
<vendor_id state='on' value='PowerPro'/>
</hyperv>
<vmport state='off'/>
</features>
<cpu mode='host-passthrough' check='none' migratable='on'/>
<clock offset='localtime'>
<timer name='rtc' tickpolicy='catchup'/>
<timer name='pit' tickpolicy='delay'/>
<timer name='hpet' present='no'/>
<timer name='hypervclock' present='yes'/>
</clock>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<pm>
<suspend-to-mem enabled='no'/>
<suspend-to-disk enabled='no'/>
</pm>
<devices>
<emulator>/usr/bin/qemu-system-x86_64</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none'/>
<source file='/var/lib/libvirt/images/win10.qcow2'/>
<target dev='sda' bus='sata'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<source file='/home/edgar/Descargas/Win10_20H2_v2_Spanish(Mexico)_x64.iso'/>
<target dev='sdb' bus='sata'/>
<readonly/>
<address type='drive' controller='0' bus='0' target='0' unit='1'/>
</disk>
<controller type='usb' index='0' model='qemu-xhci' ports='15'>
<address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
</controller>
<controller type='sata' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>
</controller>
<controller type='pci' index='0' model='pcie-root'/>
<controller type='pci' index='1' model='pcie-root-port'>
<model name='pcie-root-port'/>
<target chassis='1' port='0x10'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0' multifunction='on'/>
</controller>
<controller type='pci' index='2' model='pcie-root-port'>
<model name='pcie-root-port'/>
<target chassis='2' port='0x11'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x1'/>
</controller>
<controller type='pci' index='3' model='pcie-root-port'>
<model name='pcie-root-port'/>
<target chassis='3' port='0x12'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x2'/>
</controller>
<controller type='pci' index='4' model='pcie-root-port'>
<model name='pcie-root-port'/>
<target chassis='4' port='0x13'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x3'/>
</controller>
<controller type='pci' index='5' model='pcie-root-port'>
<model name='pcie-root-port'/>
<target chassis='5' port='0x14'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x4'/>
</controller>
<controller type='virtio-serial' index='0'>
<address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
</controller>
<controller type='pci' index='6' model='pcie-root-port'>
<model name='pcie-root-port'/>
<target chassis='6' port='0x15'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x5'/>
</controller>
<interface type='network'>
<mac address='52:54:00:fc:6b:fc'/>
<source network='default'/>
<model type='e1000e'/>
<address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
</interface>
<serial type='pty'>
<target type='isa-serial' port='0'>
<model name='isa-serial'/>
</target>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
</console>
<channel type='spicevmc'>
<target type='virtio' name='com.redhat.spice.0'/>
<address type='virtio-serial' controller='0' bus='0' port='1'/>
</channel>
<input type='tablet' bus='usb'>
<address type='usb' bus='0' port='1'/>
</input>
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
<graphics type='spice' autoport='yes'>
<listen type='address'/>
<image compression='off'/>
</graphics>
<sound model='ich9'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x1b' function='0x0'/>
</sound>
<video>
<model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1' primary='yes'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
</video>
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<alias name='hostdev0'/>
<rom file='/etc/libvirt/hooks/qemu.d/GP106P.rom'/>
<address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
</source>
<address type='pci' domain='0x0000' bus='0x05' slot='0x00' function='0x0'/>
</hostdev>
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x01' slot='0x00' function='0x1'/>
</source>
<address type='pci' domain='0x0000' bus='0x06' slot='0x00' function='0x0'/>
</hostdev>
<redirdev bus='usb' type='spicevmc'>
<address type='usb' bus='0' port='2'/>
</redirdev>
<redirdev bus='usb' type='spicevmc'>
<address type='usb' bus='0' port='3'/>
</redirdev>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
</memballoon>
</devices>
</domain>
sudo dmesg | grep -i -e DMAR -e IOMMU
[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-5.10.0-6-amd64 root=UUID=0a75800f-67e7-42eb-91eb-cb400b53bba0 ro quiet amd_iommu=on iommu=pt
[ 0.043918] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-5.10.0-6-amd64 root=UUID=0a75800f-67e7-42eb-91eb-cb400b53bba0 ro quiet amd_iommu=on iommu=pt
[ 0.069422] AGP: Please enable the IOMMU option in the BIOS setup
[ 0.401153] iommu: Default domain type: Passthrough (set via kernel command line)
[ 1.239860] PCI-DMA: using GART IOMMU.
[ 1.239862] PCI-DMA: Reserving 64MB of IOMMU area in the AGP aperture
[ 1.246256] AMD-Vi: AMD IOMMUv2 driver by Joerg Roedel <jroedel@suse.de>
[ 1.246257] AMD-Vi: AMD IOMMUv2 functionality not available on this system
Cory escribió:@drumtronicpw01011110
Gracias por la ayuda, la placa madre es una gigabyte ga880gm-usb3 y no veo por ningún lado la opción para habilitar IOMMU
Cory escribió:@drumtronicpw01011110
Gracias por la ayuda, la placa madre es una gigabyte ga880gm-usb3 y no veo por ningún lado la opción para habilitar IOMMU
1985a escribió:Cory escribió:@drumtronicpw01011110
Gracias por la ayuda, la placa madre es una gigabyte ga880gm-usb3 y no veo por ningún lado la opción para habilitar IOMMU
De acuerdo al manual de tu mobo, probablemente la opcion sea esta
BIOS Setup- 44 -(Note) This item is present only when you install a CPU that supports this feature
Virtualization
Virtualization allows a platform to run multiple operating systems and applications in independent parti-tions. With virtualization, one computer system can function as multiple virtual systems. (Default: Disabled)
Lo encontraras en las opciones avanzadas del bios.
Cory escribió:@drumtronicpw01011110 @1985a
Gracias a ambos pero al parecer si estoy jodido. La opción de Virtualization ya la tenia activa y lo de https://pve.proxmox.com/wiki/Pci_passthrough#AMD_CPU no funciono
drumtronicpw01011110 escribió:1985a escribió:Cory escribió:@drumtronicpw01011110
Gracias por la ayuda, la placa madre es una gigabyte ga880gm-usb3 y no veo por ningún lado la opción para habilitar IOMMU
De acuerdo al manual de tu mobo, probablemente la opcion sea esta
BIOS Setup- 44 -(Note) This item is present only when you install a CPU that supports this feature
Virtualization
Virtualization allows a platform to run multiple operating systems and applications in independent parti-tions. With virtualization, one computer system can function as multiple virtual systems. (Default: Disabled)
Lo encontraras en las opciones avanzadas del bios.
No no, una cosa es la virtualización (SVM AMD, VT-x Intel) Y otra es el IOMMU/VT-dCory escribió:@drumtronicpw01011110 @1985a
Gracias a ambos pero al parecer si estoy jodido. La opción de Virtualization ya la tenia activa y lo de https://pve.proxmox.com/wiki/Pci_passthrough#AMD_CPU no funciono
Por lo visto, ese chipset no soporta IOMMU según dicen aquí: https://www.phoronix.com/forums/forum/h ... post245750
EDIT: De hecho... https://en.wikipedia.org/wiki/AMD_800_chipset_series
Así que el problema no es la CPU. Es la placa
1985a escribió:
muy cierto y para un mobo del 2011?? no se puede esperar eso.
verdezito escribió:De todas formas estáis hablando de equipos muy antiguos, cosa que para esto no tiene sentido. A un equipo con esa edad no se le puede poner una gráfica a la que merezca la pena hacer el "passthough". En esos equipos sí se puede virtualizar como siempre se ha hecho, lo de pasar la gráfica es para las hornadas "actuales".