GuixSD la distro GNU del futuro

Detrás de éste nombre de artículo tan retumbante, GuixSD la distro GNU del futuro, se esconde un proyecto de software libre, que de momento está en fase alfa, patrocinado por el proyecto GNU, y que está desarrollado por voluntarios de todo el mundo. De hecho estoy seguro que dará mucho que hablar.

Guix-System-Distribution-logo-01

Sobre GuixSD

Se trata de una distribución GNU Linux, comprometida con el respeto y la libertad de los usuarios. Por lo tanto está adherida a los compromisos de una distribución libre GNU. Su nombre se pronuncia «Geek» A nivel técnico funciona, a nivel de gestor de paquetes, con actualizaciones transaccionales y roll-backs, junto con entornos de compilación reproducibles. Utiliza el gestor de paquetes GNU Guix y se organizan, los paquetes, en módulos Guile nativos, utilizando extensiones del lenguaje, que facilita que sea fácilmente hackeable. Utiliza un kernel libre Linux. Y también se está trabajando para que pueda funcionar sobre un kernel GNU Hurd. Actualmente el proyecto está liderado y mantenido por Ludovic Courtès. Si nos interesa contactar podemos utilizar las siguientes listas de correo. GuixSD es software libre, utiliza la versión 3 de GPL.

gnu-guix-logo-01

Sobre GNU Guix

Se trata de una herramienta funcional de gestión de paquetes para los sistemas GNU. Está basado en el gestor de paquetes Nix. Se compone de todas las partes necesarias para la construcción de los paquetes fuentes, es decir, todo lo necesario para su construcción, realizando un tiempo de compilación eficiente, la instalación de paquetes en entornos de usuario, realizar actualizaciones a nuevas versiones o retroceder a más antiguas, etcétera.

Cuando se dice que es funcional se refiere a una disciplina específica de gestión de paquetes. En Guix el proceso de construcción e instalación son vistos como una función, en su sentido matemático. La función recoge los inputs, tales como los scripts de construcción, el compilador y las bibliotecas, y devuelve el instalador del paquete o programa. Al tratarse de una función pura, su resultado depende de sus entradas, esto es, no puede hacer referencia a software o scripts que no fueron declaradas explícitamente como entradas. El resultado de la construcción de dichas funciones se almacena en el caché del sistema, en un directorio especial, llamado store, generalmente ubicado en /gnu/store En él tendremos un hash de los inputs utilizados para construir los programas.

Guix se dota de una interfaz de línea de comandos, lo que permite a los usuarios construir, instalar, actualizar y eliminar programas o paquetes, así como una interfaz de programación llamada Scheme.

Si nos interesa cómo distribución podemos acceder a su documentación

Instalación de GuixSD

Para la instalación del sistema debemos ir a su página web oficial y descarganos el fichero de instalación, preparado para usar en un USB, y que está comprimido utilizando la compresión XZ.

guixsd-gnu-001

El recomendable descarga el fichero desde una distribución GNU Linux o similar, ya que tendremos que utilizar los programas xd y dd

Cuando ya tengamos el fichero descargado lo montaremos sobre un USB, recordad que podemos saber la ubicación del dispositivo utilizando el programa df.

Descomprimimos el fichero:

  1. xz -d guixsd-usb-install-0.8.3.system.xz

Realizamos el proceso de montaje:

  1. dd if=guixsd-usb-install-0.8.3.x86_64 of=/dev/sdX

La ubicación del dispositivo debe substituir /dev/sdX

Si todo ha ido bien podemos utilizar el USB para la instalación. Yo he utilizado un portátil Toshiba Satellite que tengo por casa. En la imagen podéis ver la pantalla de bienvenida del menú GRUB

guixsd-gnu-002

Al acceder veremos una serie de procesos en pantalla, que no durarán más de un minuto. Al finalizar nos encontramos en la consola de comandos o shell. Lo primero que haremos es habilitar la red. Para utilizaremos el comando ifconfig para saber como se llama nuestro dispositivo de ethernet. Para ello:

  1. ifconfig -a

Una vez tengamos el nombre del dispositivo lo habilitamos y activamos la búsqueda de IP por DHCP.

  1. ifconfig eno1 up
  2. dhclient eno1

Hecho esto, vamos al siguiente paso.

Utilizamos la herramienta cfdisk para realizar las particiones del disco, esto va a gustos, depende de nuestras necesidades. Yo he creado tres particiones en un disco de 250 GB. La primera /dev/sda1 para el sistema, con 50 GB, otra, la /dev/sda2 para el directorio home, con 192 GB, y por último la partición SWAP con 8 GB, ubicada en /dev/sda3 Lo usaríamos de la sigueinte manera:

  1. cfdisk /dev/sda

Para formatear las particiones utilizamos el programa mkfs. Esta parte es parecida a cuando queremos instalar sistemas como Arch.

Al turrón:

  1. mkfs.ext4 -L root /dev/sda1 
  2. mkfs.ext4 -L home /dev/sda2
  3. mkswap /dev/sda3

Montamos las particiones:

  1. mount -L root /mnt 
  2. mkdir /mnt/home
  3. mount -L home /mnt/home
  4. mkdir /mnt/etc

Ahora activamos el demonio llamado cow-store. De ésta manera los paquetes añadidos durante la fase de instalación se escriben en el disco de destino en vez de en memoria.

  1. deco start cow-store /mnt

Copiamos la plantilla de configuración del escritorio, llamada desktop.scm, después la tendremos que editar.

  1. cp /etc/configuration/desktop.scm /mnt/etc/config.scm

Una vez copiado el fichero lo tenemos que editar. Podéis consultar al configuracón recomendada aquí, o una que he encontrado por Internet, que me parece bastante buena, y ase adapta la instalación que yo estoy realizando, del usuario d4n1

Aquí os dejo mi configuración:

  1. ;; This is an operating system configuration template
  2. ;; for a "desktop" setup with X11.
  3.  
  4. (use-modules (gnu) (gnu system nss))
  5. (use-service-modules desktop)
  6. (use-package-modules xfce wicd avahi xorg certs)
  7.  
  8. (operating-system
  9.   (host-name "guixsd")
  10.   (timezone "America/Madrid")
  11.   (locale "en_US.UTF-8")
  12.  
  13.   ;; Assuming /dev/sdX is the target hard disk, and "root" is
  14.   ;; the label of the target root file system.
  15.   (bootloader (grub-configuration (device "/dev/sda")))
  16.   (file-systems (cons (file-system
  17.                         (device "root")
  18.                         (title 'label)
  19.                         (mount-point "/")
  20.                         (type "ext4"))
  21.                        (cons (file-system
  22.                                (device "home")
  23.                                (title 'label)
  24.                                (mount-point "/home")
  25.                                (type "ext4"))
  26.                       %base-file-systems)))
  27.   (swap-devices '("/dev/sda3"))
  28.  
  29.   (users (list (user-account
  30.                 (name "davidochobits")
  31.                 (comment "david8bits")
  32.                 (group "users")
  33.                 (supplementary-groups '("wheel" "netdev"
  34.                                         "audio" "video"))
  35.                 (home-directory "/home/davidochobits"))))
  36.  
  37.   ;; Add Xfce and Ratpoison; that allows us to choose
  38.   ;; sessions using either of these at the log-in screen.
  39.   (packages (cons* xfce              ;desktop environments
  40.                    wicd avahi        ;useful tools
  41.                    nss-certs         ;for HTTPS access
  42.                    %base-packages))
  43.  
  44.   ;; Use the "desktop" services, which include the X11
  45.   ;; log-in service, networking with Wicd, and more.
  46.   (services %desktop-services)
  47.  
  48.   ;; Allow resolution of '.local' host names with mDNS.
  49.   (name-service-switch %mdns-host-lookup-nss))

La tenéis que adaptar según vuestra localización, particiones, datos personales, etcétera.

Ahora ya podemos iniciar el proceso de instalación:

  1. guix system init /mnt/etc/config.scm /mnt

Si queréis dar un paseo o tomar un café o ver vuestras series favoritas, aprovechad, ya que el proceso es bastante largo, depende también de la capacidad de vuestro equipo y del ancho de banda.

Aquí os dejo un pequeño vídeo:

Al finalizar el proceso ya podemos reiniciar:

  1. reboot

Al iniciar el sistema ya podremos disfrutar de nuestro escritorio XFCE

guixsd-xfce-01

De manera adicional podemos instalar una serie de paquetes que no vienen por defecto, como un navegador web, un editor gráfico o uno de textos.

Instalar los editores emacs y nano:

  1. guix package -i emacs
  2. guix package -i nano

Instalar el navegador web IceCat:

  1. guix package -i icecat

Instalar el editor gráfico Gimp:

  1. guix package -i gimp

Recordad que al ser un proyecto patrocinado por GNU tenemos una larga lista de software disponible, la podéis consultar aquí.

Aunque todavía está en fase de pruebas, Alfa, ni siquiera está en fase Beta, es recomendable para probarlo y testearlo. De hecho, si tenéis conocimientos de programación a nivel de sistemas, o domináis el diseño gráfico o bien tenéis un blog sobre software libre, podéis colaborar de una u motra manera con el proyecto.

Para el artículo me he servido de la documentación oficial extraída de la página oficial, aquí.

Free as in freedom!!