Linux 6.12 ya disponible

Este fin de semana ha salido el kernel Linux versión 6.12. ¿Qué hay de nuevo? Bueno, tienes el anuncio escrito por Torvalds, pero si al igual que la mayoría de nosotros, no lo entiendes, y te has cansado de aparentar como que no pasa nada, este es un resumen de lo más destacado que se ha visto por la lista de correo estas semanas.

Nuevos «pantallazos de la muerte» y soporte para Raspberry Pi 5

El driver gráfico ahora tiene una característica interesante: puede generar códigos QR cuando se produzca un kernel panic, es decir, cuando el sistema operativo deje de funcionar por un error y pida reinicio. Es verdad que no le solemos prestar mucha atención a estos errores (tampoco es que se produzcan muchos, admitámoslo), pero para la gente que desarrolla cosas del núcleo o drivers sí les puede venir bien porque es quien más errores va a ver, y además a menudo en las máquinas virtuales que usa para trabajar.

Como un kernel panic suele ser muy largo y tener muchos números, a menudo no suele caber en pantalla. La solución: ahora Linux podrá generar un código QR que se puede escanear con el móvil para poder copiar de golpe todo el error y así poder buscarlo luego en internet. Muy rollo Windows 11, pero más útil. 😉

Un código QR y un mensaje en pequeño dice "reinicia el ordenador"
Fuente: kdj0c/panic_report en GitHub.

Por otra parte: si tienes una Raspberry Pi 5; lo primero, enhorabuena por la compra. Lo segundo, Linux 6.12 introduce soporte oficial para la Raspberry Pi 5, así que debería funcionar mejor. Sí, evidentemente hasta ahora te ha funcionado, pero se deberá a parches extra que podría estar aplicando la distribución que uses en tu Pi. La diferencia es que ahora esas mejoras y optimizaciones están en mainline, es decir, en el mismo kernel, por lo que ya son universales y no hacen falta parches.

No es el único aparato que ahora funciona mejor con el kernel. Otras tarjetas gráficas y procesadores también van a ver mejorado el soporte. Además, hay mejoras en el stack de red, mejoras en los sistemas de archivos soportados, y mejoras a la hora de virtualizar Linux en servidores. Además, se ha introducido código Rust que facilitará futuros desarrollos y conversiones de partes del núcleo a este lenguaje de programación.

Linux en tiempo real, 20 años después

En cualquier caso, una de las novedades más interesantes de esta versión será de interés de las perosnas que trabajen con sistemas automatizados especializados que necesitan usar lo que se conoce como un sistema operativo en tiempo real. (Si no sabes lo que es esto, tranqui, que en el siguiente párrafo te lo intento presentar.) Hasta ahora, para poder usar el kernel Linux en tiempo real, era necesario usar muchos parches o tirar de otro kernel como RTLinux, pero esa funcionalidad está por fin integrada en mainline.

Pero, ¿qué es un sistema operativo en tiempo real? Para explicar esto, hay que entender que los sistemas operativos modernos basados en multitarea a menudo suelen ser permisivos a la hora de orquestar el ritmo al que el procesador de tu máquina va repartiéndose el trabajo. Y eso puede provocar que a veces, cierto comando o cierta tarea que un programa necesita para poder funcionar, como puede ser enviar un paquete de datos a través de uno de los puertos del ordenador, se demore un poco más de lo normal. Aquí hablamos del rango de los milisegundos, así que tampoco es algo que puedas percibir con la vista, pero es suficiente para crear caos en algunos programas.

Por ejemplo, imagina un ordenador que se esté usando para capturar música de un instrumento durante una sesión de grabación, o el que controla las cámaras con las que se transmite un partido de fútbol. Aquí un microsegundo de latencia de más debido a que el sistema operativo estaba demasiado ocupado atendiendo otros procesos puede suponer microcortes y tener un impacto severo.

O en el caso de un sistema más científico, imagina el ordenador que controla un satélite espacial, lo preciso que debe ser a la hora de llevar a cabo los comandos de los programas que ejecuta. Los sistemas operativos en tiempo real permiten acotar con una precisión nanométrica cuándo los comandos que los programas solicitan al núcleo tienen que ser atendidos, para asegurarse de que los procesos más críticos no llegan tarde.

Lo dicho: hasta ahora para poder hacer esto en GNU/Linux era necesario utilizar un kernel especial para poder obtener algo parecido. Sin embargo, desde Linux 6.12, esta función va a estar disponible directamente con el mismo kernel Linux principal. Esta función llevaba 20 años en desarrollo, y por fin está disponible.

El panorama de Linux 6.13

Se espera que Linux 6.13 sea la primera versión del kernel Linux de 2025. Entre los cambios que hay preparados para ser incluidos en esta versión, continúa la adaptación de más componentes del kernel a Rust para poder integrarlos en drivers hechos en este lenguaje de programación.

Otro de los puntos fuertes de Linux 6.13 será la eliminación del driver para sistemas de archivo de tipo ReiserFS. Este sistema de archivos fue declarado obsoleto hace varios años, y se estableció que 2025 sería el momento en el que se retiraría del núcleo, para dar tiempo a hacer la migración a otro sistema de archivos diferente.

¿Debe la cuenta root de una instalación GNU/Linux tener su propia contraseña?

Hoy en día, lo normal es que el procedimiento de instalación de muchas distribuciones GNU/Linux traten la cuenta que creas durante la instalación, por ejemplo, esa que creas cuando te pregunta cómo te llamas y cuál quieres que sea la contraseña de tu cuenta personal, como una cuenta administradora. Esta cuenta es normal, como cualquier otra, pero tiene permiso para utilizar el comando sudo cuando quiera ejecutar un comando administrativo que sirva para configurar la máquina y que deba ser restringido únicamente para personal autorizado.

Esta es la razón por la que, por lo general, ya no se te pide crear una contraseña para root cuando configuras la máquina. Pocas distribuciones, entre ellas Debian, continúan ofreciendo la posibilidad de establecer una contraseña separada para esta cuenta. Cuando hagas eso, tendrás tu cuenta local para el día a día, pero podrás iniciar sesión como root con la segunda contraseña que has establecido, mediante el uso de la herramienta su para cambiar temporalmente de usuario en una sesión de terminal.

Sin embargo, por lo general hoy en día no se quiere esto. Para empezar, es poco conveniente tener que recordar varias contraseñas. Por otro lado, en un sistema compartido donde se quiera dar permisos de administración a varias personas, todas las personas tendrían que compartir la misma contraseña, algo que nunca se debería hacer.

Por eso, el panorama es mejor cuando son las cuentas locales las que se marcan como administradoras de sistema, para que puedan utilizar el comando sudo y elevar temporalmente sus privilegios durante una sesión de terminal para administrar algo. Te cuento más sobre el funcionamiento de sudo en este artículo que escribí hace un tiempo:

Si tu distribución no te pregunta como paso de instalación que establezcas una contraseña para root, posiblemente te esté haciendo un favor. Esto no quiere decir que no esté prohibido. Si aun así, después de pensarlo bien, decides establecer una contraseña para root y prefieres utilizar su, adelante. Sin embargo, es una complicación más que no deberías plantearte si no lo necesitas.

Existe una razón más para mantener la cuenta de root inactiva y utilizar sudo (o doas, ya puestos en primer lugar), y es la auditoría. Lo normal es que puedas configurar sudo para dejar constancia en algún tipo de log de que has utilizado una elevación de privilegios para hacer una tarea reservada. En sistemas multiusuario, o en sistemas donde haya que aplicar un mínimo de seguridad, como servidores, puede que incluso este log sea obligatorio de recopilar para asegurarse de que no se produce un acceso no autorizado a un recurso restringido o incluso que un usuario autorizado haya decidido hacer una operación cuestionable por la que deba ser preguntado más adelante.

¿Para qué sirve Docker?

Quizá hayas escuchado hablar de Docker alguna vez. Se trata de una tecnología que promete permitir ejecutar aplicaciones y programas de ordenador en un lugar conocido como contenedor. A menudo lo usan para ejecutar aplicaciones de red que se ejecutan en servidores, pero en realidad puedes usarlo en tu propio ordenador personal para instalar programas como bases de datos, o aplicaciones alojadas que tengan interfaz web, de forma rápida y limpia.

Docker facilita el uso de cgroups

Docker se aprovecha de una tecnología presente en el núcleo Linux denominada cgroups. Esta tecnología permite limitar la cantidad de recursos que recibe un proceso en Linux, como el tiempo de CPU que recibe, la cantidad de RAM que puede usar, o incluso directorios de sistema a los que puede entrar.

Lo normal en tu ordenador es que cuando ejecutes un programa, éste tenga acceso a todos los recursos de la máquina. Eso significa que un proceso podría empezar a buscar el último decimal de pi y empezar a consumir un porcentaje importante de CPU que deje hambrientos otros programas en ejecución. O podría reservar suficiente memoria RAM como para dejar tiritando tu sistema. O entrar a cualquier directorio del disco duro para el que tenga permiso y consultar información.

Con cgroups, precisamente puedes aislar un proceso o grupo de procesos para limitar la cantidad máxima de CPU y memoria RAM que van a poder utilizar, e incluso separar la interfaz de red que usan para acceder a internet o cambiar su directorio raíz, de tal forma que sólo vean una porción pequeña del sistema de archivos para impedir que se metan donde no toca. También se puede limitar el uso de ciertas llamadas a sistema, como la posibilidad de que tengan su propia tabla de procesos en ejecución, para que no puedan ver qué procesos tienes en ejecución en tu máquina.

Y Docker precisamente lo que hace es aprovecharse de estas características y crear una forma conveniente de iniciar aplicaciones metidas en uno de esos cgroups. Para ello lo primero que hace es utilizar imágenes de Docker, que puedes ver precisamente como el conjunto de archivos que definirán el sistema de archivos virtual y limitado que verá Docker. Aquí es donde meterás los archivos que permiten funcionar tu programa. Esas imágenes también llevan metadatos, como el usuario con el que se debe ejecutar la imagen, o las variables de entorno a definir al lanzar el programa.

Una vez que tengas una imagen, puedes pedirle a Docker que la lance, creando un contenedor. Un contenedor es una ejecución de una imagen, y se llama así porque, al igual que un contenedor en un barco que transporta mercancías, todo lo que hay dentro de un contenedor está aislado de otros contenedores, y a menudo apilado en un gran sistema lleno de contenedores.

Pero una cosa muy simple que tienes que tener en cuenta es que lanzar un contenedor es simplemente una forma un poco bruta de pedirle a GNU/Linux que ejecute un programa, manteniendo el proceso bajo unas condiciones muy concretas y limitadas como las que contaba antes. La ventaja es que la operación es mucho más simple porque no hay que interactuar con cgroups a mano.

Docker no es virtualización

Es importante diferenciar Docker y cgroups de la virtualización. Cuando virtualizas, lo que haces es usar un programa que simula ser todo un ordenador completo, creando una máquina virtual. Hoy en día las máquinas virtuales son más rápidas gracias al uso de hipervisores y a cierta colaboración que ofrece la CPU del ordenador, pero esencialmente cuando instalas una distribución GNU/Linux en una máquina virtual, estás ejecutando un segundo kernel, simulado dentro de un programa que corres dentro de tu ordenador.

Pero al usar Docker, compartes el kernel de tu ordenador o servidor. En otras palabras, el mismo kernel que atiende las llamadas a sistema en los programas que ejecutas dentro de Docker es el que utilizas en tu máquina. Esta es la razón por la que si pruebas a ejecutar uname dentro de un contenedor de Docker en el que ese comando esté disponible, siempre va a reportar la misma versión del núcleo Linux que la que use tu máquina física, incluso aunque te lleves esa imagen de Docker a otros entornos con otras versiones de núcleo Linux.

Un contenedor de Docker puede pararse y reanudarse mediante operaciones como start y stop. Sin embargo, cuando detienes un contenedor de Docker, no lo estás congelando en el tiempo, que es lo que harías con una máquina virtual si suspendes su ejecución. Cuando detienes un contenedor de Docker verdaderamente detienes todos los procesos en ejecución, que se reanudarán la siguiente vez que se encienda el container.

Los overlays: el punto fuerte de Docker

Uno de los puntos fuertes de Docker es su sistema de overlays. Un overlay es una capa del sistema de archivos que se pone encima de otra, para agregar o quitar cosas.

Por ejemplo, si tienes un sistema de archivos en tu imagen de Docker que contiene 3 archivos, pero luego le pones encima usando un overlay otro sistema de archivos que contiene 2 archivos, al final solaparán y acabarás teniendo una imagen con 5 archivos. Puedes usar los overlays para agregar, modificar y quitar archivos.

Esto es fuerte porque permite crear imágenes reusables. Por ejemplo, existe una imagen de Docker llamada debian:slim, que contiene una instalación pequeña de Debian, con una shell y las herramientas mínimas para usar Docker. Mediante overlay, puedes agregar en otra imagen tus propios archivos de programa a la imagen debian:slim, y el resultado es una imagen que tiene Debian y tus archivos.

Lo normal es que una imagen final de Docker tenga varios overlays, a medida que se usan capas. Por ejemplo, la capa con Debian, la capa con un entorno de ejecución, y la capa con los archivos de programa. A este sistema, se le debe sumar también el volumen que guarda los archivos locales cuando ejecutas una imagen de Docker, para asegurarse de que algunas cosas no se pierdan cuando se detiene la ejecución de una imagen.

¿Por qué se usa tanto Docker?

Docker ha sido adoptado como una tecnología clave moderna para la industria informática y de servidores precisamente por la conveniencia a la hora de fabricar y compartir las imágenes.

Típicamente, instalar un programa en un servidor requería instalarlo a mano y configurarlo. Pero a veces, ese programa depende de paquetes que faltan en el gestor de paquetes del servidor, o pide versiones de una librería que son diferentes de las que aporta el sistema operativo.

Al usar una imagen de Docker, congelamos todo el entorno en el que se va a ejecutar el programa, y eso incluye tanto la distribución, como la versión de la distribución, como otras bibliotecas. Podrías usar la imagen de Docker de Fedora para fabricar una imagen de Docker de un programa que se ejecute sobre Fedora, y como la imagen ya trae todo lo necesario para arrancar el userland de Fedora, luego ejecutarlo en un entorno Docker en Debian, y funcionará de forma transparente.

La secuencia de As y Bs que se convirtió en Linux

Mirando por los mastodones, me encuentro este artículo un poco antiguo de LWN, donde uno de los compañeros de universidad de Linus Torvalds, que estuvo también ahí para ver nacer Linux, comparte cómo eran los primeros días.

Lo que posteriormente se convirtió en Linux nació como un programa pequeño hecho para un primitivo sistema 386. El objetivo era practicar la multitarea, es decir, que el ordenador haga varias cosas a la vez. Una parte del programa mostraría la letra A por pantalla y otra parte la letra B, y esa sucesión de As y Bs es lo que simula la base de un sistema multitarea.

O aquella vez que Torvalds se vio forzado a implementar permisos de archivos luego de confundir su disco duro con un modem:

Un día, Linus intentó usar por accidente su disco duro para conectarse a la universidad, lo que provocó que el cargador de arranque de su disco duro se reemplazase por «ATDT», seguido del número de teléfono del módem de la universidad. Después de recuperarse de esto, agregó permisos de archivo en su núcleo.

ATDT aquí hace referencia a uno de los comandos que los ordenadores tienen que mandar por el cable a un módem para iniciar una llamada telefónica que dispare una conexión de red vía módem. Supongo que cualquier persona que se haya equivocado a la hora de usar uno de los dispositivos del directorio /dev y haya acabado formateando el disco que no tocaba formatear podrá identificarse con esta anécdota.

passwd: todo lo que debes saber

Un tutorial para poder utilizar el comando passwd que puede ayudar a las personas que recién llegan a UNIX.

El post en el que explicaba cómo recuperar la contraseña de Debian me dio la idea de profundizar más en el funcionamiento del comando passwd, ya que tiene varias formas de operar según cómo se llame a este comando.

passwd sirve para cambiar la contraseña de una cuenta. Si ejecutas el comando normal en tu terminal, por ejemplo, passwd, bajo tu propia cuenta de usuario solo podrás cambiar tu propia contraseña. Sin embargo, el auténtico poder de este comando está en invocarlo como superusuario (es decir, como root). Cuando la cuenta root ejecuta este comando, puede cambiar cualquier contraseña: la suya o la de otra cuenta.

Cuando invoques passwd con una cuenta normal, lo primero que hará es pedirte la contraseña actual, y así lo veremos cuando dice Current password. Aquí tenemos que meter la contraseña que tenemos ahora mismo. Esto es una medida de precaución para asegurarse de que un script automatizado no trata de cambiar nuestra contraseña sin permiso.

Ten en cuenta que cuando escribas una contraseña, no la verás por pantalla. Igual que pasa con el comando sudo, no habrá feedback. Ni si quiera unos asteriscos. Cuando empieces a escribir la contraseña, hazlo con determinación y no te detengas a medio de teclearla, para no cometer errores.

Después de escribir la contraseña actual y pulsar Enter, el sistema nos preguntará por la contraseña nueva que queramos establecer. En total la tendremos que escribir dos veces, porque nos pedirá confirmación. Así, si la hemos escrito mal, nos avisará para no bloquear nuestro sistema.

$ passwd
Current password:
New password:
Retype new password:
passwd: password updated successfully

Sobre esto, varias notas extra:

  • La configuración del sistema operativo podría traer reglas adicionales que pueden impedir que se guarde la contraseña. Por ejemplo, es posible que rechace cambiar la contraseña si no tiene un número mínimo de caracteres, o incluso si no junta alguna mayúscula o dígito.
  • Es posible que si pones la misma contraseña como nueva contraseña, te lo rechace y te diga que es la misma contraseña de todos modos.

Por último, el auténtico poder de este comando está en lanzarlo como root. Si lo hacemos podremos cambiar la contraseña de cualquier usuario si lo especificamos como parámetro al lanzar el comando. En este caso, de hecho, passwd no preguntará por la contraseña, lo que le convierte también en el comando ideal para usar si tenemos que recuperar una contraseña en concreto:

# passwd ana
New password:
Retype new password:
passwd: password updated successfully

Flatseal: controla los permisos de tus apps Flatpak

Si utilizas con regularidad aplicaciones Flatpak seguramente ya sepas que muchas de estas aplicaciones vienen por seguridad limitadas para que no tengan acceso más allá de donde realmente les haga falta. De este modo, si una aplicación todo lo que va a hacer es mostrar una página web dentro de algún tipo de ventana Electron, no habría por qué darle permisos para acceder a la carpeta personal (como mucho a la carpeta de descargas) o a los dispositivos de hardware como webcams o micrófonos.

Sin embargo, en algunas ocasiones nos podemos encontrar con aplicaciones que tienen más o menos permisos de lo que consideramos aceptable. ¿Por qué una aplicación de reloj debería tener acceso a internet? O por el lado contrario, si una aplicación de telecomunicaciones no tiene acceso por defecto a la webcam y al micrófono, difícilmente vamos a poder iniciar videollamadas.

Para este tipo de situaciones existen herramientas como Flatseal. Se trata de una aplicación gráfica que todo lo que hace es permitir hacer mediante clics lo que de otro modo tendríamos que hacer desde una terminal con la ayuda del comando flatpak override. Permite modificar los permisos que se le entregan a las aplicaciones instaladas desde Flatpak para así, o agregarle permisos para que puedan acceder a directorios adicionales que no se vieron venir si están provocando problemas de ejecución, o restringir todavía más los permisos de una aplicación si no confiamos del todo en ella.

Hay que tener en cuenta que, si bien algunas distribuciones se preocupan más del software que portan sus gestores de paquetes, Flatpak se ha convertido en el lugar del que descargar clientes gráficos de aplicaciones no tan libres y donde se desconoce del todo su funcionamiento. No estoy diciendo con esto que las aplicaciones de Flatpak sean inseguras, pero en algunos casos no se pierde nada por restringir a una aplicación cloud, como Discord, para que no tenga acceso a nada más que la carpeta de descargas, o para que no pueda ver la lista de procesos en ejecución, por si acaso están compartiendo esa información con terceras personas.

Captura de pantalla de Flatseal ajustando permisos
Flatseal mostrando una ventana de permisos.

La forma de utilizar Flatseal es sencilla. Después de instalarla desde Flathub, la ejecutas. Encontrarás en el panel de la izquierda una lista de las aplicaciones que tienes instaladas en tu equipo. También habrá una opción global arriba que te permitirá ajustar los permisos de todas las aplicaciones.

Una vez tengas marcada una aplicación, el panel de la derecha puede usarse para revocar permisos proporcionados por defecto cuando la aplicación se instala, o para proporcionarle permisos extra. Admisiblemente, no todos los permisos son fáciles de comprender. Esta es la razón por la que Flatseal tiene en su página de GitHub una documentación en forma de manual que te enseña para qué vale cada cosa y qué consecuencias puede tener encender o apagar una opción.

Tienes que tener en cuenta, para acabar, que no todas las aplicaciones van a reaccionar igual de bien a que se le prive de un permiso que da por sentado. Por ejemplo, es posible que algunas aplicaciones empiecen a fallar de formas feas si no tienen permiso para abrir la carpeta de descargas y esperan que puedan. En caso de que una aplicación deje de comportarse como lo normal, siempre puedes utilizar el botón Restablecer que hay en Flatseal para volver a dejarlo todo como estaba.

Cómo cambiar el tamaño de la swap de Linux

Cómo crear un archivo swap para poder cambiar su tamaño una vez que ya hemos formateado el ordenador.

La swap o espacio de intercambio es una zona de memoria extra en disco duro o disco SSD que el kernel Linux se reserva para aumentar la cantidad de memoria virtual disponible para asignar a las aplicaciones. De este modo, cuando un ordenador tiene muchas aplicaciones abiertas, el sistema operativo puede identificar qué zonas son las que menos se están usando en ese instante, y moverlas al disco duro como si fuese una mesa auxiliar en la que dejar lo que no se está usando en ese momento. Esto libera espacio en el chip para que otra aplicación más activa sí pueda utilizar la memoria.

Cuando se instala el sistema operativo, el asistente pregunta a la hora de particionar el disco duro cuánto se quiere asignar a la swap. Cuanto más espacio de swap haya disponible, más fluidez puede adquirir el ordenador porque más grande será la estantería donde el kernel puede depositar los datos en uso por parte de programas poco activos para liberar espacio en RAM para aquellos que sí están más activos. Al contrario, si la swap es limitada (o si prefieres no crer swap), puede ocurrir que se agoten del todo los recursos del sistema, un panorama que provocará que el ordenador funcione de manera poco fluida y que tal vez provoque que algunas aplicaciones se cierren a la fuerza a medida que el kernel cierra cosas para hacer espacio y evitar el colapso de la máquina.

¿Cuánta swap debería tener mi ordenador?

En otros tiempos, la limitación en cuanto a cantidad de memoria RAM del ordenador era un problema importante, que provocaba que existiesen fórmulas precisas tales como «la swap debería ser siempre el doble de grande que la memoria RAM disponible». Sin embargo, hoy en día los ordenadores tienen bastante memoria por lo que hay que tener en cuenta más factores.

Más que considerar «la swap siempre es necesaria» o «la swap ya nunca es necesaria», la respuesta correcta es: ¿qué tipo de cargas de trabajo va a tener mi ordenador? Para un ordenador doméstico que se use para cosas básicas, es probable que, efectivamente, si tienes suficiente memoria RAM no necesites tener una swap. Es espacio en disco duro que se desaprovecha si nunca se llena la memoria RAM. Sin embargo, si vas a estar continuamente ejecutando aplicaciones intensivas en memoria (tales como simulaciones, juegos o programas de edición de vídeo o, en general, programas complicados que ejecuten muchos algoritmos y que trabajen con muchos datos), es posible que incluso aun teniendo 16 o 32 GB de RAM sea recomendable establecer un espacio de intercambio, sobre todo si corres el riesgo de que uno de esos programas verdaderamente sea capaz de consumir toda la memoria RAM disponible.

Algunos fabricantes suelen recomendar sus propias fórmulas. En el caso de Red Hat, por ejemplo, recomiendan hoy en día lo siguiente:

  • Si tienes un ordenador de 2 GB de RAM o menos (como un ordenador viejo), deberías tener una swap que tenga el doble de la cantidad de memoria RAM que tu PC tenga.
  • Si tienes un ordenador de entre 2 y 8 GB de RAM, deberías tener una swap que tenga el mismo tamaño que la cantidad de memoria RAM que tu PC tenga.
  • Si tienes un ordenador de más de 8 GB de RAM, deberías tener una swap de al menos 4 GB en función de las circunstancias.

De nuevo, con la cantidad de memoria RAM que hay hoy en día y con el uso tan diferente que se puede hacer de un ordenador, conviene preguntarse qué se va a hacer con el ordenador, ya que eso puede influenciar que queramos darle una swap más pequeña o incluso no darle swap, sobre todo si es un PC con mucha memoria.

¿Qué hago si necesito más swap una vez he particionado mi PC?

Por lo general, el instalador ofrecerá la posibilidad de formatear una partición extra al instalar GNU/Linux de tipo swap. Con esto, se reserva una zona del disco duro para este propósito. Queda fuera del sistema de archivos principal, por lo que nunca verás la swap para que no moleste.

Si después de instalar el ordenador necesitamos cambiar su tamaño (por ejemplo, porque es un servidor web y nos hemos dado cuenta que en horas pico se queda corta la swap y provoca caídas de sistema), vamos a tener complicado particionar de nuevo.

Por suerte, es posible igualmente utilizar el comando swapon para activar un archivo de disco duro y que se comporte como espacio de intercambio. Para ello, lo primero que tendríamos que hacer es crear un archivo en blanco que tenga el tamaño deseado. Esto lo podemos hacer con dd, aunque yo hoy en día suelo utilizar el programa fallocate(1) porque es más rápido:

$ sudo fallocate -l 4G /swapfile

Esto crea un archivo de 4 GB llamado swapfile en la raíz del disco duro. Por supuesto, tú deberías cambiar ese 4G por el tamaño que quieras que tenga tu RAM, sustituyendo el 4 por la cantidad de gigas correcta, por ejemplo, 2G u 8G para, respectivamente, 2 GB u 8 GB.

Ahora lo que tenemos que hacer es formatear el archivo, es decir, configurarlo para que el kernel se piense que es un área swap normal y corriente. Esto lo podemos conseguir con el comando mkswap:

$ sudo mkswap /swapfile

Opcionalmente, si queremos deshacernos de otras particiones o archivos swap en uso, podríamos retirar toda la swap. Ten en cuenta que esto volcará su contenido en memoria RAM, así que no conviene correr este comando si el ordenador no está tranquilo.

$ sudo swapoff -a

Y finalmente pedirle al sistema que active este archivo que acabamos de crear como un archivo swap:

$ sudo swapon /swapfile

Si ahora usamos una herramienta como htop, deberíamos poder verificar que existe una swap del tamaño solicitado.

Cómo activar la carga de nuestro swapfile en cada arranque

Sorprendentemente, el archivo /etc/fstab también permite introducir rutas a swapfiles que haya en otra partición. De modo que es posible configurar el sistema operativo para que active este swapfile cada vez que se encienda el ordenador.

Para ello, todo lo que hay que hacer es modificar el archivo /etc/fstab como superusuario, y poner al final del archivo la siguiente línea:

/swapfile none swap defaults 0 0

Si el archivo se ha creado con otro nombre, habrá que cambiar la ruta que va al principio de la fila. A partir de ese momento, cuando se reinicie el ordenador debería cargarse automáticamente el swapfile que hemos creado.