Archivo

Archivo para la categoría ‘Sistemas Operativos’

Jellyfin como sustituto de Plex

sábado, 9 de noviembre de 2019 Sin comentarios

Jellyfin es un gestor de contenido multimedia que permite hacer streaming de nuestra música, películas, series, etc. Es como un sustituto de Plex y Emby (del cual proviene) de código totalmente abierto y gratuito.

Existe una imagen preparado con él en Turnkey que nos permite tener funcionando el sistema en cuestión de pocos minutos.

Si queremos tener la posibilidad de trascodificar nuestro contenido puede ser que nos salga el siguiente error al querer utilizar, por ejemplo, nuestro navegador:

PlaybackErrorNoCompatibleStream

Para darle solución sólo tendremos que instalar ffmpeg de la siguiente forma:

apt install ffmpeg

Después, desde el panel de control de Jellyfin dentro de la sección de «Reproducción» tendremos que poner la siguiente ruta en «Ruta de FFmpeg:»:

/usr/bin/ffmpeg

Error al crear contenedor en Proxmox

lunes, 21 de octubre de 2019 Sin comentarios

Si al intentar desplegar un template en un container de Proxmox obtenemos los siguientes errores:

tar: ./var/spool/postfix/dev/random: Cannot mknod: Operation not permitted
tar: ./var/spool/postfix/dev/urandom: Cannot mknod: Operation not permitted

Es debido a que, por defecto, los CT se despliegan con la opción marcada de «Unprivileged container» y algunas imágenes necesitan acceso a ciertas zonas como los «random» o «unrandom». Para solucionarlo sólo hay que desmarcar la opción en la primera pantalla de creación del CT.

Categories: Proxmox Tags: ,

Exception setuid y Buffer Overflow en Mldonkey

viernes, 20 de septiembre de 2019 Sin comentarios

Mldonkey es un software con bastantes años a sus espaldas que permite compartir archivos entre múltiples tipos de redes: torrent, edonkey, kadmelia, DC++, etc. Una de sus principales virtudes es que, además de ser multiplataforma, se puede ejecutar sin interfaz gráfica, con lo que el consumo de recursos es bastante moderado.

Si en alguna ocasión decidimos mover su carpeta de instalación (que contiene toda la configuración de puertos, limitaciones de ancho de banda, etc.), es probable que nos encontremos con el siguiente error en su log («/var/log/mldonkey/mldonkey-server.log»):

2008/03/08 19:41:24 [dMain] mldonkey is now running as user mldonkey
2008/03/08 19:41:24 [dMain] Exception setuid failed: Operation not permitted trying to set user_uid [107]

Esto es debido a que el «id» del usuario que ejecuta ahora el servicio de mldonkey ha cambiado. Basta con averiguar el nuevo id de nuestro usuario «mldonkey» con el comando «id -u mldonkey» y actualizar el fichero «downloads.ini» (alojado en «/var/lib/mldonkey/») cambiando el atributo «run_as_userid» y «run_as_user» en caso de haber cambiado también de nombre de usuario.

Por otro lado, si tenemos una conexión a Internet de alta velocidad es probable que nos encontremos con el siguiente error en el log:

[TCP_BS]: BUFFER OVERFLOW 488680+16397> 500000 MESSAGE: [(0)(0)(64)(9)(7)(0)(0)(0)(64)(0)(36)(128)(0)(2)(186)(3)(230)(247)(95)(152)…]

Tendremos por tanto que ampliar la directiva «client_buffer_size» del fichero «download.ini» de 500000 a 5000000

Categories: GNU/Linux Tags:

Configuración de TorGuard

viernes, 20 de septiembre de 2019 Sin comentarios

TorGuard es un servicio de VPN que mantiene la norma de no mantener un registro (log) de la actividad de sus usuarios como forma clara de mantener su privacidad y de ser amigable con el P2P. Dispone de un gran número de servidores repartidos por todo el mundo y mantiene una velocidad bastante buena en comparación con la competencia. La anualidad del servicio sale por unos $59.99 pero gracias al programa de afiliados puedes conseguir descuentos de hasta un 50%. Por ejemplo, yo mismo he generado un cupón ( TORCHRIS ) para la gente de mi entorno.

Si disponemos una máquina sin interfaz gráfica y deseamos que en su arranque inicie OpenVPN para que todo lo posterior vaya a través del túnel sólo tenemos que seguir una pautas sencillas.

sudo apt install openvpn unzip

cd /etc/openvpn

sudo wget https://torguard.net/downloads/OpenVPN-TCP-Linux.zip

sudo unzip OpenVPN-TCP-Linux.zip

sudo cp /etc/openvpn/OpenVPN-TCP/* /etc/openvpn/

rename -v ‘s/\.ovpn/\.conf/’ *.ovpn

Ahora mismo tendríamos un montón de fichero «*.conf» que representan cada una de las zonas en las que tenemos disponible servidores que den servicio. De esta forma podríamos lanzar el comando «openvpn server.conf» y se nos preguntaría el nombre y usuario para la conexión. Como no queremos que pregunte usuario y contraseña, crearemos un fichero que lo contenga con el comando «sudo nano /etc/openvpn/userPass.txt» y que rellenaremos con nuestros datos tal que así:

miusuario@concorreo.com

miContraseña9%Compleja

Copiaremos el fichero de configuración del servidor que nos interesa para hacerle una pequeña modificación:

sudo cp /etc/openvpn/TorGuard.Norway.conf /etc/openvpn/client.conf

Editaremos una línea de dicho fichero «sudo nano /etc/openvpn/client.conf»:

auth-user-pass /etc/openvpn/userPass.txt

Ahora le indicaremos a OpenVPN cuál es el fichero de configuración que tiene que cargar por defecto editando el fichero «sudo nano /etc/default/openvpn»

#AUTOSTART=»all»
#AUTOSTART=»none»
AUTOSTART=»client»

Refrescaremos la configuración y habilitaremos el servicio al inicio de OpenVPN:

sudo systemctl daemon-reload

sudo systemctl enable openvpn

Para comprobar que realmente estamos pasando por el servidor VPN basta con ejecutar el comando «curl ifconfig.me» que nos devolverá nuestra IP pública.

 

Categories: Debian Tags: ,

OpenVPN en Proxmox

viernes, 20 de septiembre de 2019 Sin comentarios

Instalar un cliente VPN en un contenedor de Proxmox (LXC) no debería ser un gran problema, simplemente realizar un «apt install openvpn», configurar la conexión con el servidor VPN y ya está. Pero no, existen problemas con la interfaz de red TUN/TAP a la que intenta tener acceso OpenVPN debido a que no existe:

ERROR: Cannot open TUN/TAP dev /dev/net/tun

Para solucionarlo hay que ir al fichero de configuración del contenedor («/etc/pve/lxc/XXX.conf») y añadir las siguientes líneas:

lxc.cgroup.devices.allow: c 10:200 rwm
lxc.hook.autodev: sh -c «modprobe tun; cd ${LXC_ROOTFS_MOUNT}/dev; mkdir net; mknod net/tun c 10 200; chmod 0666 net/tun»

Esto nos permitirá poder hacer uso de OpenVPN desde que la máquina arranca, ya que generar la estructura en un script de «init.d» o «crontab», a pesar de que funciona si iniciamos a mano OpenVPN, no lo hará de forma no asistida.

A pesar de todo lo anterior, veremos que perdemos cierta conectividad con la máquina y el log del sistema («/var/log/syslog») se nos llenará de mensajes del siguiente tipo:

Dec 21 07:12:11 gateway kernel: martian source 98.187.15.124 from 98.187.15.97, on dev br1

Dec 21 07:12:11 gateway kernel: ll header: ff:ff:ff:ff:ff:ff:00:14:f1:e8:69:db:08:06

Quizás por una mala configuración de interfaces de red por mi parte, pero habiendo sólo una con su IP fija no creo que debiese ser problemático. Al final opté por crear una máquina virtual en vez de un contenedor con una Debian 10 y todo ha ido prácticamente a la primera (salvo lo de montar una unidad NFS al arranque, que necesita de una IP asignada de manera estática, pero eso ya es otro cuento).

Como nota final, cabe tener en cuenta que, para ahorrar consumo de CPU (hasta un 20% de ahorro con un núcleo), existe la necesidad de habilitar las instrucciones extendidas AES del procesador (si las tuviese). Para ello debemos configurar la máquina virtual con un tipo de CPU host y máquina Q35. Para comprobar que la CPU tiene dichas instrucciones sólo hay que lanzar el comando «cpuid | grep -i aes | sort | uniq» que nos devolverá algo como esto:

AES instruction = true
VAES instructions = false

Y comprobar que se carga el módulo correspondiente con el comando «sort -u /proc/crypto | grep module» que debería darnos algo tal que así:

module : aesni_intel
module : aes_x86_64
module : crc32c_generic
module : crc32c_intel
module : crc32_pclmul
module : crct10dif_pclmul
module : cryptd
module : ghash_clmulni_intel
module : kernel

Categories: Proxmox Tags: , , ,

Servidor de arranque en red PXE

jueves, 15 de agosto de 2019 Sin comentarios

Resulta bastante útil tener disponible diversas distribuciones de Linux, herramientas e incluso un instalador de Windows con sólo conectar un equipo a la red. Hoy en día prácticamente cualquier equipo puede arrancar mediante PXE y la única pega es que pueden utilizar un sistema basado en UEFI o en BIOS de toda la vida. Este hecho nos limita las versiones y software que podemos utilizar a la hora de desplegar un servidor que cubra nuestras necesidades.

Syslinux

El primer intento que hice fue utilizando un servidor basado en Dnsmasq + Syslinux y funcionaba muy bien para los equipos con arranque en BIOS, pero para que los que tuviesen UEFI pudieran también arrancar tuve que dar con la versión de syslinux-6.04. Con esta versión podía arrancar los equipos con UEFI.

La configuración del servidor Dnsmasq que convivía con el propio servidor DHCP del router era la siguiente:

# Deshabilita el servidor DNS
port=0

# Se indica el servidor TFTP

dhcp-option=66,»192.168.1.200″

# Habilita la depuración
log-dhcp

# Responderá a las peticiones PXE y actuará de proxy para el otro servidor DHCP
dhcp-range=192.168.1.0,proxy

# Dependiendo de la arquitectura activamos una etiqueta
dhcp-match=x86PC, option:client-arch, 0 #BIOS x86
dhcp-match=BC_EFI, option:client-arch, 7 #EFI x86-64

# Dependiendo de la arquitectura del cliente se carga una imagen diferente
pxe-service=tag:x86PC,X86PC, «Install Linux on x86 legacy BIOS», bios/pxelinux.0
pxe-service=tag:BC_EFI,BC_EFI, «Install Linux on x86-64 UEFI», efi/syslinux.efi,192.168.1.200

# Dependiendo de la etiqueta se da una imagen u otra de arranque
dhcp-boot=tag:x86PC,bios/pxelinux.0 # for Legacy BIOS detected by dhcp-match above
dhcp-boot=tag:BC_EFI,efi/syslinux.efi,192.168.1.200 # for UEFI arch detected by dhcp-match above

# Se habilitar el servidor TFTP incorporado y el directorio donde se almacena todo
enable-tftp
tftp-root=/var/lib/tftpboot

Esto al principio funcionaba para BIOS y UEFI. Parecía que funcionaba bien pero no era así, el soporte de este último en syslinux está todavía poco pulido y no existe alternativa viable para usar Memdisk, una utilidad que nos permite cargar en memoria una ISO para que el equipo en red sea capaz de arrancar con ella. Por lo que el instalador de Windows se nos hacía imposible entre otras cosas.

iPXE

Tras muchas vueltas acabé cambiando el sistema para utilizar Dnsmasq+iPXE que parecía tener mejor proyección. Tuve que leer mucha documentación, muchos foros y realizar muchas pruebas que, debido a la poca posibilidad de depuración de Dnsmasq, se hace tortuoso. Finalmente di con esta configuración que adapté a mi gusto y entorno:

# Deshabilitar servidor DNS
port=0
dhcp-option=66,»192.168.1.204″

# Habilitar depuración de DHCP
log-dhcp

# Habilitar el modo proxy de DHCP
dhcp-range=192.168.1.0,proxy

# Para los equipos que arranquen como iPXE y manda la opción 175
dhcp-match=set:ipxe,175

# Para cada arquitectura se asigna una etiqueta concreta
dhcp-vendorclass=set:bios,PXEClient:Arch:00000
dhcp-vendorclass=set:efi32,PXEClient:Arch:00002
dhcp-vendorclass=set:efi32,PXEClient:Arch:00006
dhcp-vendorclass=set:efi64,PXEClient:Arch:00007
dhcp-vendorclass=set:efi64,PXEClient:Arch:00008
dhcp-vendorclass=set:efi64,PXEClient:Arch:00009

# Para romper el bucle, aquello que llevan la etiqueta ipxe tienen un arranque diferente
tag-if=set:loadbios,tag:!ipxe,tag:bios
tag-if=set:loadefi32,tag:!ipxe,tag:efi32
tag-if=set:loadefi64,tag:!ipxe,tag:efi64

# Para los equipos que siendo de tipo BIOS arrancan con su propio iPXE pero queremos que cojan el nuestro
tag-if=set:loadCombo,tag:ipxe,tag:bios

# Se administra una imagen de arranque particular para cada arquitectura
pxe-service=tag:loadbios,x86PC,»iPXE Network boot (BIOS)»,ipxe/bios/undionly.kpxe
pxe-service=tag:loadCombo,x86PC,»iPXE Network boot (BIOS)»,ipxe/bios/undionly.kpxe
pxe-service=tag:loadefi32,IA32_EFI,»iPXE Network boot (EFI32)»,ipxe/efi/ipxe.efi
pxe-service=tag:loadefi32,BC_EFI,»iPXE Network boot (EFI32)»,ipxe/efi/ipxe.efi
pxe-service=tag:loadefi64,X86-64_EFI,»iPXE Network boot (EFI)»,ipxe/efi/ipxe.efi
pxe-service=tag:loadefi64,IA64_EFI,»iPXE Network boot (EFI)»,ipxe/efi/ipxe.efi

# Para los que ya arrancan en iPXE se les pasa el menú
# Para el loadCombo no hace falta porque la imagen undionly lo lleva compilado dentro
dhcp-boot=tag:ipxe,tag:!loadCombo,http://192.168.1.204/bootMenu.ipxe

# Habilitamos servidor TFTP e indicamos su ruta
enable-tftp
tftp-root=/var/lib/tftpboot

Pero para poder hacer funcionar esta configuración en equipos BIOS con su propio iPXE, debemos compilar una versión propia del cargador de arranque «undionly.kpxe», pues no queda más remedio que incrustar el menú de arranque, aunque también nos deja la puerta abierta para añadir ciertas personalizaciones. Para ello debemos bajarnos el fuente:

  • git clone git://git.ipxe.org/ipxe.git

Y creamos un fichero «ipxe/src/chain.ipxe» con el siguiente contenido:

#!ipxe

dhcp
chain http://192.168.1.200/bootMenu.ipxe

Procedemos a su compilación:

  • make bin/undionly.kpxe EMBED=chain.ipxe

Y copiamos el fichero generado («bin/undionly.kpxe») a su sitio correspondiente dentro del árbol de nuestro servidor TFTP.

A todo esto deberemos tener un servidor web Apache (o similar) que nos pueda ir entregando ciertos fichero como el del «bootMenu.ipxe» que yo he utilizado para cargar un Windows PE:

#!ipxe

kernel wimboot
initrd win10/files/bcd bcd
initrd win10/files/boot.sdi boot.sdi
initrd win10/files/boot.wim boot.wim
boot

La estructura por tanto queda de la siguiente forma dentro de «/var/lib/tftpboot»:

  • /apache2
    • bootMenu.ipxe
    • index.html
    • wimboot
    • /win10
      • /files
        • bcd
        • boot.sdi
        • boot.wim
  • /ipxe
    • /bios
      • undionly.kpxe
    • /efi
      • ipxe.efi

Instalación de Pi-Hole en Proxmox

miércoles, 14 de agosto de 2019 1 comentario

Pi-Hole es un servidor intermediario de DNS que filtra las petición de aquellas URL’s que contienen publicidad, haciendo la navegación más limpia y rápida. Ideal para aquellos dispositivos donde no tenemos acceso de administración como en un teléfono móvil Android o iPhone, porque no tenemos que instalar nada más adicional en estos terminales.

Su instalación se puede hacer en una simple Raspberry Pi o, como es mi caso, un contenedor LXC en Proxmox. Después de desplegar una imagen básica de Debian desde Turnkey, descargaremos el instalador de Pi-Hole:

  • wget -O basic-install.sh https://install.pi-hole.net

Tendremos que realizar una pequeña modificación porque el instalador busca el fichero «/etc/apt/sources.list», cuando nuestro sistema lo tiene en «/etc/apt/sources.list.d/sources.list». Abriremos con «nano basic-install.sh» el instalador, buscaremos (CTRL+W)  el término «APT_SOURCES» y modificaremos su valor para que quede de la siguiente forma:

  • APT_SOURCES=»/etc/apt/sources.list.d/sources.list»

Con eso debería bastar pero, en mi caso, al intentar instalar las dependencias el instalador se me cortó y tuve que instalar una de ellas a mano con el siguiente comando:

  • apt install php-sqlite3

Una vez instalado, sólo tendremos que cambiar las DNS de nuestros dispositivos a la IP de esta instancia.

GPU passthrough en Proxmox

lunes, 12 de agosto de 2019 Sin 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

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)». 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.4-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: , , , , ,