Archivo de la categoría: General

Archivo de swap en disco encriptado con Manjaro

Vamos a ver cómo crear un archivo de swap dentro de una partición encriptada que hace de root, para poder hibernar un laptop.

En este caso, lo he hecho en Manjaro Linux versión 21.1.3 (Pahvo). Con encriptación completa y sistema de ficheros Btrfs. El ordenador es un laptop HP x360 modelo 13-4100ns, equipado con 4 Gb de RAM y un procesador Intel i5. Bueno, pues empececemos.

En sistemas Btrfs

En un sistema Btrfs no puedes usar un fichero normal como swap. Primero hay que prepararlo un poco. El motivo es que hay que anular el sistema de copy on write (COW) propio de Btrfs, y además hay que poner el fichero fuera del subvolumen montado como root para que Timeshift no se lie y empiece a hacer snapshots del fichero de swap. Si tienes un sistema ext4, puedes omitir esta parte y pasar a la siguiente desde «Desactivamos nuestra swap».

Primero creamos el subvolumen aparte.

lacofi@rose$ sudo btrfs subvolume create /@swapfile
[sudo] password for lacofi:
Create subvolume '//@swapfile'
lacofi@rose$ __

Ahora vamos a poner nuestro fichero de swap en el subvolumen que hemos creado, es decir, el fichero será /@swapfile/swapfile. Bien, ahora vamos a crear el fichero vacío con el COW anulado.

lacofi@rose$ sudo truncate -s 0 /@swapfile/swapfile
lacofi@rose$ sudo chattr +C /@swapfile/swapfile
lacofi@rose$ sudo btrfs property set /@swapfile/swapfile compression none 
lacofi@rose$ __

Desactivamos nuestro swap

Ahora entramos en materia. Primero comprobamos si tenemos alguna swap activa. Si la hay, la desactivamos para quedarnos sin swap.

lacofi@rose$ sudo swapon -s
Nomfich.      Tipo         Tam.    Util.        Prioridad
/dev/dm-1     partition    4384588     0                   -2
lacofi@rose$ sudo swapoff -a
lacofi@rose$ __

Creamos y activamos nueva swap en nuestro fichero. Respecto al tamaño del fichero, se recomienda un poquito más de lo que tengas de RAM. En mi caso, tengo 4 Gb de RAM, así que vendrían a ser por ejemplo 6 Gb de swap. Pero como me gustan los números redondos vamos a poner 8 Gb, el doble de mi RAM. Como sabes, 8 Gb equivalen a 8*1024=8192 Mb.

lacofi@rose$ sudo dd if=/dev/zero of=/@swapfile/swapfile bs=1M count=8192                                    
8097+0 registros leídos
8097+0 registros escritos
8489271296 bytes (8,5 GB, 7,9 GiB) copied, 94,9865 s, 89,4 MB/s
lacofi@rose$ sudo mkswap /@swapfile/swapfile                                                           
mkswap: /@swapfile/swapfile: permisos 0644 no seguros; se arregla con: chmod 0600 /@swapfile/swapfile
Configurando espacio de intercambio versión 1, tamaño = 7,9 GiB (8489267200 bytes)
sin etiqueta, UUID=e7fd9694-74e9-4bfb-b50c-4a6157345d11
lacofi@rose$ sudo chmod 600 /@swapfile/swapfile                                                                     
lacofi@rose$ sudo swapon /@swapfile/swapfile                                                                        
lacofi@rose$ __                                                                           

Y ya está. Ya tenemos nuestra nueva swap activada y funcionando. Puedes comprobarlo con un «swapon -s».

Hacer estos cambios permanentes

Obviamente, ahora querrás que tu nueva swap se active siempre, en cuanto arranques el ordenador. Para ello tienes que editar tu fichero /etc/fstab y meter la línea que configurará la swap. Si tenías de antes una línea para la vieja swap, coméntala para desactivarla.

#/dev/mapper/luks-blablabla swap swap defaults,noatime  0   0
/@swapfile/swapfile         none swap defaults          0   0

Si quieres, es recomendable comprobar que la nueva línea no da errores haciendo un «sudo mount -a».

Activar la hibernación

Vale, ahora vamos a activar la hibernación en ese swapfile. Hay que tener en cuenta que cuando el ordenador intente recuperarse de la hibernación, va a leer el swapfile lo primerito de todo, antes de cargar el sistema operativo y antes de cargar el sistema de ficheros, así que lo leerá de seguido y sin usar btrfs ni ext4. Por eso es necesario un número que se llama «offset» y que viene a ser el sector concreto del disco duro que es donde tiene que empezar a leer. Para encontrar ese offset tienes que hacer esto:

lacofi@rose$ sudo filefrag -v /@swapfile/swapfile
Filesystem type is: 9123683e
File size of /@swapfile/swapfile is 8489271296 (2072576 blocks of 4096 bytes)
ext: logical_offset:   physical_offset:    length: expected: flags:
0: 0..       259931:   1973504.. 2233435:  259932:
1: 259932..  520581:   2235648.. 2496297:  260650: 2233436:
2: 520582..  534674:   1885765.. 1899857:  14093:  2496298:
3: 534675..  534973:   1866884.. 1867182:  299:    1899858:
4: 534974..  797017:   2497792.. 2759835:  262044: 1867183:
5: 797018..  1309595:  2759936.. 3272513:  512578: 2759836:
6: 1309596.. 1539583:  3284224.. 3514211:  229988: 3272514:

Vale, intimida un poquito, pero en realidad de toda esa retahila solo nos interesa UN número que es el que he marcado en color rojo. Es en la línea 0, el tercer número por la izquierda, que es donde empieza el fichero (offset físico).

Vale, ahora tenemos que editar el fichero /etc/default/grub. Dentro de él, hay una línea que dice GRUB_CMDLINE_LINUX_DEFAULT que es la que hay que cambiar. Fíjate en ella, vamos a analizarla un poquito, que nunca viene mal. Será algo parecido a esto.

GRUB_CMDLINE_LINUX_DEFAULT="quiet cryptdevice=UUID=94d0287f-6c87-4003-aa6b-286993de7e77:luks-94d0287f-6c87-4003-aa6b-28
6993de7e77 root=/dev/mapper/luks-94d0287f-6c87-4003-aa6b-286993de7e77 splash apparmor=1 security=apparmor resume=/dev/m
apper/luks-97668c40-2fdd-43a0-9d2f-7831dfdf69e4 udev.log_priority=3"

Bien, vamos por parte, los argumentos que pone son estos:

quiet

La opción quiet indica al sistema que no muestre los mensajes iniciales.

cryptdevice=UUID=94d0287f-6c87-4003-aa6b-286993de7e77:luks-94d0287f-6c87-4003-aa6b-28 6993de7e77

Esta opción le dice al sistema que cuando arranque tendrá una unidad de disco con UUID 94d0287etc que es una unidad encriptada que tendra un identificador de nombre luks-94d0287etc. Esto le dice al sistema que hay un disco que tiene que desencriptar.

root=/dev/mapper/luks-94d0287f-6c87-4003-aa6b-286993de7e77

Esta opción, le dice al sistema que esa unidad que acaba de desencriptar es la unidad root (es decir, se montará como «/»).

splash apparmor=1 security=apparmor

Las opciones splash, apparmor y security no nos interesan para el tema en el que estamos, así que las ignoraremos y las dejaremos como están.

resume=/dev/mapper/luks-97668c40-2fdd-43a0-9d2f-7831dfdf69e4

Ésta. Esta es la opción que nos interesa. Está apuntando a otra unidad de disco totalmente diferente, en este caso una partición encriptada. Tenemos que cambiar esta opción para que apunte a nuestro fichero de swap. Es decir, tendrá que apuntar a nuestra partición que está montada como root, y luego ir al sector que dice el offset del fichero. Pues eso es lo que hay que poner, la partición root y el offset. Con lo cual esta opción quedará así:

resume=/dev/mapper/luks-94d0287f-6c87-4003-aa6b-286993de7e77 resume_offset=1973504

Con lo cual, la linea GRUB_CMDLINE_LINUX_DEFAULT al final va a quedar así:

GRUB_CMDLINE_LINUX_DEFAULT="quiet cryptdevice=UUID=94d0287f-6c87-4003-aa6b-286993de7e77:luks-94d0287f-6c87-4003-aa6b-28 6993de7e77 root=/dev/mapper/luks-94d0287f-6c87-4003-aa6b-286993de7e77 splash apparmor=1 security=apparmor resume=/dev/mapper/luks-94d0287f-6c87-4003-aa6b-286993de7e77 resume_offset=1973504 udev.log_priority=3"

Y ya está. Ahora hay que hacer un «update-grub» y la hibernación y el swap deberían funcionar sin problemas.

Todo lo que te he contado aquí lo tienes con más detalle explicado en las páginas Use a swap file and enable hibernation on Arch Linux – including on a LUKS root partition de Jay Ta’ala y el Wiki de Manjaro sobre el Swap. Te recomiendo que les hagas una visita porque saben mucho más que yo.

Manjaro Linux en un laptop HP Spectre x360

Recientemente he instalado la distribución Manjaro Linux (21.1.3 Pahvo) en un ordenador portátil Hewlett Packard Spectre x360. Se trata de uno de los primeros modelos de esta serie, concretamente el modelo 13-4100ns, equipado con 4 Gb de RAM y un procesador Intel i5.

Este modelo en concreto venía con el UEFI desactivado por defecto, en modo BIOS. Obviamente, hice un clonado completo del disco duro con CloneDisk para poder dar marcha atrás si algo salía terriblemente mal, algo siempre muy recomendable, obligatorio de hecho salvo que seas un suicida. Después, para poder instalar, desactivé el modo de «arranque seguro» en la BIOS. Y ya estamos listos para empezar.

Bien, no voy a enrollarme con la instalación de Manjaro, porque eso está de sobras disponible en la Web, y de todas formas es bastante automático. En concreto, solo comentaré que instalé la versión Gnome, que es siempre mi preferida. E instalé con borrado completo del disco duro (Manjaro como único sistema operativo), con sistema de archivos BTRFS, encriptación completa (full encryption) y Swap encriptada con hibernación.

Con estos datos, lo principal que quería comentar es que casi todo el hardware de la máquina es soportado inmediatamente por Manjaro directamente y sin hacer nada, out-of-the-box. Esto incluye la webcam, la pantalla touch, el trackpad, el sonido (si, el sonido también), e incluso cosas accesorias externas, como un lápiz dongle 4G de marca Huawei, y un mando para usar con diapositivas marca Targus. El soporte del Hardware de Manjaro solo puedo definirlo como excelente.

Con todo, hay algunas excepciones, todas ella sutilezas. Por ejemplo, no se detecta el modo tablet out of the box ni funcionan los giroscopios. Es decir, la pantalla no girará al cambiar de posición el ordenador, y no detectará el giro de la pantalla para pasarlo a modo tablet. Puede arreglarse y que funcione todo para usarse como ordenador y como tablet de forma automática, pero necesitas instalar algunos paquetes adicionales que te cuento más abajo. Tampoco funcionarán algunas teclas especiales, como las de ajuste de brillo de pantalla. Si quieres cambiar el brillo de la pantalla, lo tienes muy fácil en el menú de Gnome.

Si se quiere afinar aún más el software:

  • Es altamente recomendable la instalación del paquete auto-cpufreq. No lo instala por defecto, pero está en los repositorios oficiales y es muy recomendable si quieres prolongar la duración de tu batería. Hay que instalarlo, y luego activarlo con «sudo systemctl enable auto-cpufreq.service».
  • Timeshift se instala por defecto y queda activado en modo Btrfs, con lo que en cuanto empieces a hacer las primeras actualizaciones, se empezarán a crear los primeros snapshots. Grande, si señor. Sin embargo, grub arrancará en modo quiet y no mostrará ningún menú que permita elegir snapshot en caso de problemas. Hay que activar la aparición de menú, pero es muy fácil cambiando la opción GRUB_TIMEOUT_STYLE de Grub, te lo cuento más abajo.
  • Para la contraseña de la encriptación puedes usar cualquier carácter, no solo números y letras. Pero recuerda que cuando arranque y te pida la contraseña, espera un teclado norteamericano US, así que tendrás que memorizar dónde están las teclas de los caracteres especiales (guiones, interrogantes, asteriscos…) en un teclado US. Si quieres evitarte estos problemas, tienes que meter una contraseña con letras y números solo. Eso si, no se te ocurra poner una eñe ni una vocal acentuada, porque a ver cómo las metes luego con la distribución US del teclado.
  • Cuando cierres la tapa del portátil entrará en suspensión. Correcto. Pero cuando abras por completo la tapa para usarlo como tablet, no será detectado out-of-the-box. La mejor opción que tienes es instalar paquetes AUR y usar opciones experimentales. Si instalas los paquetes «iio-sensor-proxy.git», «tablet-mode» y «detect-tablet-mode», dispondrás de un modo tablet bastante decente y automático: al girar la pantalla para ponerlo en tablet, será detectado, se desactivará el teclado y el trackpad, y cuando escribas aparecerá el teclado en pantalla, todo automático. Si además instalas la extensión de gnome «Screen autorotate» y luego reinicias el ordenador (imprescindible), la pantalla también girará correctamente cuando lo pongas de lado o al revés, así que tendrás un modo tablet bastante correcto. Ojo, el paquete que tienes que instalar es «iio-sensor-proxy.git» y no la versión oficial de los repositorios «iio-sensor-proxy». Solo girará la pantalla con la versión git del AUR.
  • Suspend funciona sin problemas, tanto por tiempo de inactividad como bajando la tapa. También la hibernación, pero solo si la Swap no está encriptada. Cuando instalas en modo Swap encriptada con hibernación, resulta que la hibernación no funciona. No sé todavía por qué, pero sé que puede funcionar porque ha funcionado automáticamente cuando la Swap estaba sin encriptar, así que no es un fallo del hardware sino de la configuración. De momento te diré que he hecho funcionar la hibernación sin problemas, pero usando un archivo de swap dentro del disco encriptado, no la partición. Pero eso te lo contaré en otro post. :-)

Vale, activar el menú del grub es muy fácil. Manjaro no lo cree necesario porque por el tipo de instalación que hice, sabe que es el único sistema operativo de la máquina, pero la verdad es que sí lo necesitas si quieres la posibilidad de cambiar de snapshot si ha habido problemas en la última actualización de software. Para activar el menú del grub solo tienes que editar /etc/default/grub. Tienes que cambiar la línea que pone GRUB_TIMEOUT_STYLE para que ponga GRUB_TIMEOUT_STYLE=menu. Y luego hay que aplicar los cambios con «update-grub». Eso es todo. Después de reiniciar verás como aparece el menú grub con todos los snapshots.

Y si quieres ver todos los mensajes del arranque, también puedes hacerlo. Solo tienes que quitar las opciones «quiet» y «splash» del grub.

He instalado Manjaro encriptado y no puedo entrar

Quien dice Manjaro, dice cualquier sistema Arch, como por ejemplo Garuda. Es muy posible que cualquier sistema linux, no lo he probado. El caso es que si instalas Manjaro con full encription, es posible que luego no puedas arrancar el sistema diciéndote «error: access denied». ¿Por qué?.

El mensaje que te da dice algo así:

Attempting to decrypt master key...
Enter passphrase for hd0, msdos1 (aquí vendría una UUID):
error: access denied.
error: no such cryptodisk found.
error: disk 'cryptouid:aquí viene la UUID' not found.
Entering rescue mode...
grub rescue> _ 

Es un poco complicado encontrar por qué, por eso lo pongo aquí, pero en realidad es una tontería. Tu sistema funciona perfectamente, no es un error de Manjaro. Simplemente no está reconociendo tu contraseña. Es muy posible que ésta incluya algún símbolo especial, como un guión, un interrogante, un asterisco, cualquier cosa que no sea un número o una letra. Y ahí es donde está el problema.

El sistema intenta arrancar tu disco duro. Todavía no se ha cargado el sistema operativo, aún no sabe que tienes un teclado con layout español, a todos los efectos cree que usas un teclado estándar norteamericano. Y la posición de las teclas especiales es totalmente distinta a la de los teclados no americanos. Cuando entres al sistema tendrás que teclear tu contraseña como si tuvieras un teclado US. O bien poner una contraseña que tenga solo números y letras.

Y eso es todo. :-)

Error INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES en Android Studio

Si cambias de computadora es muy posible que te salte este error cuando intentas instalar tu programa Android en tu tablet o teléfono. Es más, te dice que debes desinstalar la aplicación para volver a instalarla. Si buscas por Google todo Dios te dirá que tienes que desinstalarla y que así el error desaparecerá. Si, claro que si, ¡¡pero eso hará que pierdas todos los datos!!.

El problema está en que cuando instalas de cero Android Studio, o Eclipse (habitualmente porque cambias de ordenador), generan una firma digital que utilizarán para autentificar el software que instalan, metiéndola en el APK. Es lo mismo que cuando subes la aplicación a Google Play, te piden una firma digital, solo que en este caso hablamos de una firma provisional para el debug. Así que en el ordenador nuevo intenta instalar tu aplicación y zas, la firma no coincide.

Si desinstalas la aplicación, la firma vieja desaparece con el APK y ya no habrá conflicto, claro. Pero también perderás todos tus datos y puede que te interese conservarlos.

Sólo tienes que ir a tu copia de seguridad y transferir la firma digital del viejo Android Studio al nuevo, para que ambos utilicen la misma y no haya conflicto. La firma está en tu HOME, en la carpeta oculta .android, en un fichero que se llama debug.keystore. Copia ese fichero a tu nuevo ordenador y reinicia Android Studio.

 

 

Nuevo blog (ya son dos)

No me gustaba demasiado que los comentarios de películas se entremezclaran de forma caótica con las cuestiones linuxeras. Así que me he animado y a partir de ahora tienes dos blogs independientes. Uno es este que tienes ante tus ojos, dedicado a cuestiones frikis: linux, ciencia ficción y yo mismo. Puedes considerarlo un blog personal. El otro blog lo tienes en un subdominio, y está dedicado exclusivamente a cine y algo de música.

Así queda todo más ordenadito, ¿no te parece?.

En plena mudanza

Bueno,  esto marcha. En este momento estoy pasando todas las entradas de la vieja web,  una a una (puro copiar y pegar), así que si te fijas seguramente verás que hay ya multitud de ellas con fecha anterior a la de la inauguración. Y más que iré metiendo. Pero de momento todos los enlaces están rotos y apuntan a lacofi.org. Iré arreglando eso poco a poco para que cada enlace apunte solo hacia aquí (va a llevar bastante tiempo, porque tendré que revisar cada entrada: un poco como leerme la web completa).

El mayor problema son las fechas. En mi vieja web, solo empecé a registrar la fecha de cada entrada a partir de enero de 2006. Intento trasladar las entradas con la fecha original pero, como comprenderás, las fechas anteriores a enero de 2006 son una pura estimación, y eso en el mejor de los casos, así que solo el orden es correcto. Una pena, pero hacia el 2002 o 2003 yo no sospechaba siquiera que el sitio pudiese crecer tanto, ni de que un día me preocuparía por la fecha de las entradas. ;-)

Cuando esté terminado, jeanette.es tendrá todos los trucos y comentarios de lacofi.org, pero de momento llevará un poquito de tiempo afinar las cosas. Paciencia.

Y cuando todo eso esté hecho, veré que nuevos gadgets puedo añadir al sitio. :-)

Estamos en obras, perdonen las molestias.

Inauguración oficial

Esta es la primera entrada del nuevo blog. De momento esto está muy vacío, pero poco a poco iré desplazando toda la actividad de lacofi.org a aquí. Toda entrada anterior a ésta, procede de la vieja web. Todo lo nuevo se irá añadiendo a partir de aquí con lo que, con el tiempo, lacofi.org quedará solo abierta por razones historicas y para mantener enlaces. :-)

Respuesta automática por correo electrónico

No estoy hablando del típico mensajito de «estoy de vacaciones», sino de una verdadera respuesta automática a determinados correos, sensible al contexto. Por ejemplo, yo he usado esto para que mi ordenador enviase mis claves públicas GnuPG a demanda. Para ello, bastaba con enviarme un correo poniendo en el Subject (o Asunto del mensaje), las palabras «enviar clave PGP».

Actualmente ya no lo utilizo, porque subo mis claves a un servidor de claves, que es más rápido y limpio.

Por cierto, y a modo de agradecimiento: Este truco es, en realidad, una adaptación mejorada de otro que podeis encontrar en el «Mutt-i, GnuPG, PGP Howto» ;-)

Lo único que hay que hacer, es meter en vuestro fichero .procmailrc las siguientes líneas:

:0 h
* ^Subject:[    ]+\/(|enviar)[  ]+clave PGP\>.*
| metasend -b -t `formail -rtzxTo:` -c lacofi@localhost \
-s "Re: clave publica PGP" \
        -f /home/lacofi/.gnupg/notifica.txt -m text/plain -e base64 -n \
        -f /home/lacofi/.gnupg/llave_publica.txt -m text/plain -e base64 -n \
        -f /home/lacofi/.gnupg/telecable.txt \
        -m text/plain -e base64

Nota: Lo que hay entre los corchetes es un espacio y un tabulador.

Vamos a explicarlo todo un poco. Estas lineas indican a procmail que, cuando se reciba un mensaje con «enviar» y «clave PGP» en el Subject, haga lo siguiente:

Los programas formail y metasend forman la cabecera de un mensaje destinado al que envía la petición, pero también con una copia carbón (campo CC:) para mí mismo. Así sé quién ha pedido mis firmas. En el subject de este mensaje, se pone «Re: clave publica PGP».

A continuación, el programa metasend empaqueta un texto y lo codifica como MIME: será el cuerpo del mensaje, simplemente un texto en el que se indica que los ficheros adjuntos contienen mis claves públicas, y que se trata de una respuesta automática, por lo que el correo del solicitante no ha sido leido.

Luego metasend empaqueta los dos ficheros que contienen mis claves y los codifica como ficheros adjuntos base64. Despues se lo pasa todo a procmail que ejecuta la orden principal: lo envia. ;-)