Archivo

Archivo para la categoría ‘Sistemas Operativos’

GPU passthrough en Proxmox

lunes, 12 de agosto de 2019 2 comentarios

Después de haber instalado Proxmox en un HP Gen8, mi intención era la de virtualizar LibreElenc para utilizarlo como centro multimedia y un Windows 10 para poder hacer uso de mi biblioteca de Steam. Tras un poco de modding en la pequeña torre e incorporar una GTX 1050Ti (concretamente la Gigabyte GV-N105TOC-4GL) me quedaba por delante configurar Proxmox para permitir dejar paso directo de la tarjeta gráfica a los sistemas virtualizados.

Configuración de la máquina virtual

Para ello la máquina virtual debía incorporar en su fichero de configuración («/etc/pve/qemu-server/100.conf») las siguientes opciones:

  • machine: q35
  • hostpci0: 07:00,pcie=1,x-vga=on

La segunda opción depende de cada equipo y es el resultado de haber obtenido lo siguiente tras lanzar el comando «lspci»:

07:00.0 VGA compatible controller: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] (rev a1)
07:00.1 Audio device: NVIDIA Corporation GP107GL High Definition Audio Controller (rev a1)

Error al arrancar la máquina virtual

Cuando intentemos arrancar la máquina virtual, lo más probable es que nos indique lo siguiente:

vfio: failed to set iommu for container: Operation not permitted

Lo que parece en principio un problema de permisos tiene un trasfondo más complejo que afecta al kernel y que podemos comprobar con el comando «dmesg | grep -e DMAR -e IOMMU» que nos devolverá lo siguiente:

vfio-pci 0000:07:00.1: Device is ineligible for IOMMU domain attach due to platform RMRR requirement. Contact your platform vendor.

Recompilación del kernel

La forma de solucionar el problema es recompilando el kernel tras haber incorporado un pequeño parche al mismo.

Actualizaremos el sistema e instalaremos los paquetes que vamos a necesitar:

  • apt-get update
  • apt-get install git nano screen patch fakeroot build-essential devscripts libncurses5 libncurses5-dev libssl-dev bc flex bison libelf-dev libaudit-dev libgtk2.0-dev libperl-dev libperl-dev asciidoc xmlto gnupg gnupg2 rsync lintian debhelper libibery-dev libdw-dev libnuma-dev libsplang2-dev libiberty-dev libslang2-dev debhelper sphinxdoc-common
  • apt-get install lz4 (si utilizamos los fuentes de Ubuntu EOAN de la versión 5.4 del kernel de Proxmox)
  • apt-get install pve-headers-5.4.24-1-pve (la versión dependerá del kernel que estemos tratando de compilar)

Descargaremos el código fuente del kernel que vamos a recompilar y de aquel de donde sacaremos el parche:

  • cd /usr/src/
  • git clone git://git.proxmox.com/git/pve-kernel.git
  • git clone git://git.proxmox.com/git/mirror_ubuntu-disco-kernel.git
  • mv mirror_ubuntu-disco-kernel ubuntu-disco

Hacemos una copia del parche que necesitamos y lo editamos con nano:

  • cp ubuntu-disco/drivers/iommu/intel-iommu.c ubuntu-disco/drivers/iommu/intel-iommu_new.c
  • nano ubuntu-disco/drivers/iommu/intel-iommu_new.c

En el editor de nano buscaremos con el comando «CTRL+W» el siguiente tecto:

if (device_is_rmrr_locked(dev)) {
dev_warn(dev, «Device is ineligible for IOMMU domain attach due to platform RMRR requirement. Contact your platform vendor.\n»);
return -EPERM;
}

Y lo cambiaremos a lo siguiente (se elimina el «return» y se añade al texto algo que nos haga saber más tarde que se está aplicando nuestro parche) :

if (device_is_rmrr_locked(dev)) {
dev_warn(dev, «Device was ineligible for IOMMU domain attach due to platform RMRR requirement. Parcheado.\n»);
}

De los dos ficheros generaremos un diff:

  • diff -u /usr/src/ubuntu-disco/drivers/iommu/intel-iommu.c /usr/src/ubuntu-disco/drivers/iommu/intel-iommu_new.c > remove_rmrr_check.patch

Habrá que adaptar la cabecera de ese diff generado, quedando de forma similar a este (se cambian las rutas de los ficheros y sus nombres):

— a/drivers/iommu/intel-iommu.c 2019-07-17 15:44:26.908520624 +0200
+++ b/drivers/iommu/intel-iommu.c 2019-07-17 15:48:09.380083344 +0200

Moveremos el diff al lugar donde la recompilación lo buscará:

  • cd /usr/src/pve-kernel/
  • mv ../remove_rmrr_check.patch ./patches/kernel/

Modificaremos un script que busca ficheros con nombres problemáticos:

  • nano debian/scripts/find-firmware.pl

Y comentaremos una de las primeras líneas para que quede más o menos de esta forma:

#die «strange directory name» if $dir !~ m|^(.*/)?(5.0.\d+\-\d+\-pve)(/+)?$|;

Configuraremos el Makefile:

  • nano /usr/src/pve-kernel/Makefile

En él buscaremos «EXTRAVERSION» y lo dejaremos de la siguiente forma:

  • EXTRAVERSION=-${KREL}-pve-removermrr

Y finalmente lanzaremos el make:

  • make

Si todo ha ido bien, nos habrá generado una serie de ficheros «.deb» que instalaremos de la siguiente forma:

  • dpkg -i *.deb

Si nos ha fallado por algún motivo y tenemos que relanzar de nuevo el «make» es posible que no nos deje y tengamos que añadir al fichero «Makefile» la opción «-d» quedando de esta forma:

${LINUX_TOOLS_DEB} ${HDR_DEB}: ${DST_DEB}
${DST_DEB}: ${BUILD_DIR}.prepared
cd ${BUILD_DIR}; dpkg-buildpackage –jobs=auto -b -uc -us -d
lintian ${DST_DEB}
#lintian ${HDR_DEB}
lintian ${LINUX_TOOLS_DEB}

Comprobación de la instalación

Una vez que tengamos el nuevo kernel instaldo mediante los «.deb» anteriores, reiniciaremos la máquina y cuando lancemos nuestra máquina virtual, mediante el comando «dmesg | grep -e DMAR -e IOMMU» obtendremos el mensaje:

vfio-pci 0000:07:00.1: Device is ineligible for IOMMU domain attach due to platform RMRR requirement. Parcheado.

Fuente

Las pautas han sido sacadas de lo que ahora es un pequeño tutorial pero en su día fue un verdadero quebradero de cabeza.

Portátil Dell G7 7790 en Linux

lunes, 12 de agosto de 2019 Sin comentarios

El Dell G7 7790 que he podido configurar incorpora la siguiente configuración hardware:

  • 17″ IPS 144Hz Full HD.
  • i7 8750H.
  • 16 GB de RAM DDR4 ampliado a 32GB.
  • Nvidia GTX 2070 Max-Q.
  • SSD M.2 NVMe de 512MB cambiado por un SSD M.2 NVMe de 2TB de Intel 660P.
  • Batería de 90Wh.

Cambio de RAID a AHCI

Para poder realizar la instalación de alguna distribución Gnu/Linux hay que cambiar, desde la BIOS, las opciones de dispositivos de almacenamiento para que la controladora se comporte como AHCI en vez de como RAID, de lo contrario nuestra distribución no será capaz de detectar los discos duros. Pero si realizamos el cambio sin más y queríamos conservar la partición con Windows 10, este no arrancará. Por lo que tendremos que seguir estos pasos antes:

  1. Abrir un cmd como derechos de administrador.
  2. Ejecutar el siguiente comando: «bcdedit /set {current} safeboot minimal» o de forma alternativa: «bcdedit /set safeboot minimal».
  3. Reiniciar el portátil y entrar en la BIOS.
  4. Cambiar el comportamiento de la controladora de dispositivos de almacenamiento de RAID a AHCI.
  5. Windows arrancará en modo seguro reconociendo los cambios sobre el hardware.
  6. Abrir un cmd como derechos de administrador.
  7. Ejecutar el siguiente comando para deshacer lo anteriormente hecho: «bcdedit /deletevalue {current} safeboot» o de forma alternativa: «bcdedit /deletevalue safeboot «.
  8. Reiniciar el equipo nuevamente y Windows 10 arrancará como normalmente lo hace.

Instalación de OpenSuse

Para lanzar la instalación de OpenSuse Leap es posible que tengamos que incorporar el parámetro «nomodeset» al kernel, de lo contrario la pantalla simplemente aparecerá en negro.

La instalación la podremos realizar sin ninguna pega. Cabe recordar que habrá que definir la partición EFI sobre la ya existente y no formatearla para que puedan convivir tanto Windows como OpenSuse.

Teclas Fn para el control del brillo

Una vez arranque OpenSuse, probablemente no funcionarán las teclas de brillo. Para solucionarlo sólo tendremos que editar el fichero «/usr/share/X11/xorg.conf.d/10-nvidia-brightness.conf» y añadir lo siguiente:

Section «Device»

Identifier «Device0»

Driver «nvidia»

VendorName «NVIDIA Corporation»

BoardName «GTX 2070»

Option «RegistryDwords» «EnableBrightnessControl=1»

EndSection

Podremos reiniciar y comprobar que ya funcionan las teclas de control de brillo. Cierto es que si nada más iniciar la sesión, hacemos uso de dichas teclas puede que no funcionen y nos toque cerrar sesión y volverla abrir, pero no es algo habitual.

Hibernación al cerrar la tapa

Para hacer funcionar la hibernación cuando cerramos la tapa, tendremos que colocar los siguientes parámetros para el kernel:

splash=silent nomodeset resume=/dev/disk/by-id/nvme-INTEL_SSDREKT8_BTN-part7 quiet nouveau.blacklist=1 acpi_rev_override=1 acpi_osi=Linux nouveau.modeset=0 pcie_aspm=force drm.vblankoffdelay=1 scsi_mod.use_blk_mq=1 nouveau.runpm=0 mem_sleep_default=deep

En OpenSuse lo podemos hacer desde Yast -> Boot Loader -> Parámetros del núcleo en la casilla que pone «Parámetro opcional de la línea de comandos del kernel». Hay que tener en cuenta que el dato «/dev/disk/by-id/nvme-INTEL_SSDREKT8_BTN-part7» es diferente en cada equipo y define la partición donde se aloja la swap.

Undervolt y gestión de rendimiento

Sabido es para este tipo de procesadores que un pequeño «undervolt» mejora con creces la temperatura del mismo y evita que se llegue al throttling. Para conseguirlo hago referencia a una entrada que publiqué no hace mucho.

Y para poder gestionar la actuación de los ventiladores y la frecuencia de la CPU publiqué otra entrada muy interesante para este tipo de portátiles.

Huawei Watch 2 con ROM personalizada, Magisk y EdXposed

miércoles, 15 de mayo de 2019 Sin comentarios

El Huawei Watch 2 es un reloj inteligente que incorpora la versión Oreo de Android Wear. Si queremos dotarlo de una versión optimizada y «rooteada» del sistema hay que seguir algunos pasos:

  1. Cargar el recovery de TWRP. No lo instalaremos porque me ha dado problemas al desvincularlo del teléfono.
  2. Instalar la ROM personalizada desde TWRP.
  3. Instalar Magisk desde TWRP.
  4. Instalar Riru-Core v19 desde Magisk.
  5. Instalar el módulo EdXposed para Magisk.
  6. Instalar el administrador de EdXposed.

Precaución

Estos pasos pueden dejar tu reloj inservible (bricked) y borrar todo su contenido, así que procede bajo tu propia responsabilidad.

Recovery de TWRP

  1. En el reloj vamos a «Ajustes->Sistema->Información» y pulsamos sobre «Número de compilación» 7 veces. Eso nos habilitará las opciones de desarrollador.
  2. Vamos a «Ajustes->Opciones para desarrolladores» y activamos «Depuración ADB».
  3. Conectar el reloj al ordenador y abrir un terminal para poner lo siguiente:
    • «adb devices» (nos mostrará nuestro reloj).
    • «adb reboot bootloader» (reiniciará el reloj en un modo que nos permitirá realizar los siguientes pasos).
    • «fastboot devices» (muestra nuestro reloj).
    • «fastboot oem unlock» (desbloquea el arranque del reloj, motivo por el cual, a partir de ahora, cada vez que encendamos el reloj nos saldrá un aviso de tal hecho pero que no afecta al funcionamiento del reloj).
    • Habrá que mantener pulsado el botón según nos lo pida en pantalla para aceptar el desbloqueo del reloj.
    • «fastboot reboot» (reiniciamos).
  4. Procedemos a lanzar el recovery poniendo lo siguiente en un terminal:
    • «adb reboot bootloader» (reiniciará el reloj en un modo que nos permitirá realizar los siguientes pasos).
    • «fastboot boot oreo-recovery.img» (carga el TWRP que podemos descargar desde aquí).
    • Hacemos copia de seguridad de system, boot, etc.
    • «fastboot flash recovery oreo-recovery.img» (en caso de que lo queramos dejar instalado, pero no lo recomiendo).

Nota: si queremos arrancar en «bootloader» manualmente, solo tenemos que apagar el reloj, mantener pulsado el botón de encendido y, cuando vibre, soltamos y volvemos a pulsar una vez más el botón.

Instalar ROM

  1. Habiendo arrancado el TWRP del paso anterior, podemos copiar la ROM correspondiente al reloj que habremos descargado para la versión LTE/4G o la versión BT/Classic y también Magisk.
  2. Desde el menú de TWRP hacemos un «Wipe data» y «Factory reset».
  3. Pulsaremos sobre «Install», buscaremos el fichero .zip que hemos copiado y que contiene la ROM y esperaremos a que finalice el proceso.
  4. Tras lo anterior reiniciaremos de nuevo en TWRP desde las opciones de reinicio que nos ofrece él mismo.
  5. Iremos a la opción «Install» y seleccionaremos el .zip de Magisk.
  6. Reiniciamos el sistema y dejamos que el reloj arranque para realizar la configuración inicial y emparejamiento con el móvil.

Instalar Riru-Core

  1. Desde el reloj abrimos la aplicación de Magisk y desde el menú superior izquierdo podemos acceder a «Descargas».
  2. Arriba a la derecha podremos pulsar sobre la lupa y buscar «Riru».
  3. Instalaremos «Riru – Core» y «Riru – EdXposed (YAHFA o SandHook)». Este último se podría instalar mediante TWRP.
  4. Reiniciamos el reloj.

Instalar EdXposed

  1. En el reloj vamos a «Ajustes->Sistema->Información» y pulsamos sobre «Número de compilación» 7 veces. Eso nos habilitará las opciones de desarrollador.
  2. Vamos a «Ajustes->Opciones para desarrolladores» y activamos «Depuración ADB».
  3. Conectar el reloj al ordenador y abrir un terminal para poner lo siguiente:
    • «adb install EdXposedInstaller_v2.2.5-release.apk» (esto instalará la aplicación para administrar EdXposed y que habremos descargado desde aquí).
  4. Abriremos la aplicación de EdXposed y ya podremos instalar módulos como Xposed Edge.

Es posible que me haya dejado algo, pero básicamente está todo sacado de los enlaces que he puesto arriba de XDA.

Categories: Android Wear Tags: , , , , ,

Sobrescritura con cp sin preguntas

sábado, 4 de mayo de 2019 Sin comentarios

Cuando realizamos copias de ficheros como root en nuestro sistema, dependiendo de la distribución en la que nos encontremos, puede ser que nos veamos saturados de preguntas de confirmación de sobrescritura de ficheros ya existentes y que, por más opciones que busquemos, no nos podemos deshacer de ellas.

Este comportamiento se debe a la configuración incluida en «.bashrc» o «.profile» que incorpora un alias de «cp» como «cp -i». Si ejecutamos «unalias cp», para la sesión vigente podremos hacer uso de «cp» sin la opción «-i» y librarnos de las preguntas de confirmación.

Otra solución hubiese sido hacer uso de la ruta completa del comando: «/bin/cp».

Categories: GNU/Linux Tags: , , , ,

Nohup para procesos ya iniciados

viernes, 3 de mayo de 2019 Sin comentarios

Cuando queremos lanzar un proceso a través del terminal de linux y no queremos que al cerrar la sesión éste se detenga, basta con hacer lo siguiente:

nohup nombreProceso &

Esto hará que nuestro proceso acabe colgando de init y se desvincule de nuestro terminal.

El problema surge cuando queremos hacer eso mismo pero sobre un proceso ya en marcha. Para ello tendremos que abrir otro terminal y escribir lo siguiente:

kill -SIGSTOP pidDeNuestroProceso
kill -SIGCONT pidDeNuestroProceso

El primer comando suspende el proceso y el siguiente lo reanuda pero sin mostrarnos nada en el terminal. Es ahí cuando, en el terminal donde se estaba ejecutando la aplicación en un primer momento, para desvincular el proceso del terminal y así poderlo cerrar sin preocupaciones, ejecutamos lo siguiente:

disown %1

Categories: GNU/Linux Tags: ,

Control de Intel P-state y CPUFreq en KDE

jueves, 2 de mayo de 2019 Sin comentarios

A la hora de gestionar el rendimiento y las capacidades de refrigeración en un portátil, a veces un buen widget para gestionarlo de forma rápida viene bien. Este es el caso del proyecto de Plasma-pstate.

Su instalación es sencilla:

git clone https://github.com/jsalatas/plasma-pstate
cd plasma-pstate
sudo ./install.sh

De lo único que tenemos que asegurarnos es de estar en el sudoers y, en caso de OpenSuse, utilizar la herramienta propia de configuración de sudo por medio de Yast para agregar tu propio usuario para ejecutar como root sin necesidad de contraseña el siguiente script:

/usr/share/plasma/plasmoids/gr.ictpro.jsalatas.plasma.pstate/contents/code/set_prefs.sh

De lo contrario acabaremos con un panel que se despliega de color gris sin nada en su interior.

Controlar el voltaje de la CPU en Linux

sábado, 27 de abril de 2019 Sin comentarios

Sobretodo en portátiles se suele hacer uso de herramientas que limitan el voltaje que le llega a la CPU para así reducir el consumo y sobretodo la temperatura («undervolting», lo que ayuda a evitar el llamado «thermal throttling«.

Para Windows es muy común utilizar ThrottleStop. Para Linux, en cambio, se puede utilizar Undervolt.

Se instala sencillamente con el siguiente comando:

pip install undervolt

Para consultar los parámetros actuales de nuestro sistema:

undervolt –read

temperature target: -0 (100C)
core: 0.0 mV
gpu: 0.0 mV
cache: 0.0 mV
uncore: 0.0 mV
analogio: 0.0 mV

Para modificar el voltaje de un procesador como un i7 8750H podríamos aplicar el siguiente comando:

undervolt –core -125 –cache -125

Cabe resaltar que hay que realizar los cambios con cuidado, porque una excesiva reducción del voltaje puede provocar inestabilidad en el sistema.

Windows Update infinito

lunes, 18 de febrero de 2019 Sin comentarios

Instalas, por ejemplo, Windows 8.1 y ves que cuando se pone a buscar actualizaciones no se detiene, busca y busca en un bucle infinito, por si ya fuese poco lo que tarda cuando funciona.

La solución al problema, en muchos casos, es ir a la página de Microsoft a descargarse la última versión de Windows Update. Para la versión 8.1 tenemos este enlace. Y el secreto radica en, cuando lo tengamos descargado, desconectar la conexión de Internet para evitar que el propio instalador que acabamos de descargar intente buscar de nuevo actualizaciones en línea y se quede enganchado en el proceso. Una vez desconectados, instalamos lo descargado, reiniciamos e iniciamos de nuevo el proceso normal de actualizaciones de Windows.

Descarga de ISO de Windows

sábado, 9 de febrero de 2019 Sin comentarios

Si queremos omitir el uso de la herramienta de Microsoft (Media Creation Tool) para descargar las ISO’s de alguno de sus productos (de forma totalmente legal), podemos recurrir a la web de TechBench. Ésta nos permite seleccionar el producto, la versión, la edición y hasta el idioma justo antes de entregarnos el enlace hacia la descarga de la ISO sin más historias.

Categories: Windows Tags: ,

Utilizar Dropbox en sistemas de ficheros diferentes a Ext4

sábado, 19 de enero de 2019 Sin comentarios

Hace poco me instalé Dropbox en una Debian donde mi discos están formateados en XFS. Al cabo de un par de meses la aplicación de Dropbox empieza a decirme que cambie la carpeta donde se sincronizan los datos a una unidad formateada en Ext4, que por motivos de soporte sólo van a dejar ese formato como válido para centrar sus esfuerzos en él…

El señor dark creó una solución muy sencilla y que hizo pública en su git. Los pasos a seguir son muy sencillos:

sudo apt install git build-essential
git clone https://github.com/dark/dropbox-filesystem-fix.git
cd dropbox-filesystem-fix
make
sudo mv dropbox-filesystem-fix /opt/
sudo chmod +x /opt/dropbox-filesystem-fix/dropbox_start.py
dropbox stop
/opt/dropbox-filesystem-fix/dropbox_start.py

En este punto Dropbox debería arrancar y sincronizar datos sin darnos ningún aviso sobre el sistema de ficheros.

Categories: GNU/Linux Tags: , , ,