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.
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.
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.
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:
xz -d guixsd-usb-install-0.8.3.system.xz
Realizamos el proceso de montaje:
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
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:
ifconfig -a
Una vez tengamos el nombre del dispositivo lo habilitamos y activamos la búsqueda de IP por DHCP.
ifconfig eno1 up
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:
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:
mkfs.ext4 -L root /dev/sda1
mkfs.ext4 -L home /dev/sda2
mkswap /dev/sda3
Montamos las particiones:
mount -L root /mnt
mkdir /mnt/home
mount -L home /mnt/home
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.
deco start cow-store /mnt
Copiamos la plantilla de configuración del escritorio, llamada desktop.scm, después la tendremos que editar.
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:
;; This is an operating system configuration template
;; for a "desktop" setup with X11.
(use-modules (gnu) (gnu system nss))
(use-service-modules desktop)
(use-package-modules xfce wicd avahi xorg certs)
(operating-system
(host-name "guixsd")
(timezone "America/Madrid")
(locale "en_US.UTF-8")
;; Assuming /dev/sdX is the target hard disk, and "root" is
;; the label of the target root file system.
(bootloader (grub-configuration (device "/dev/sda")))
(file-systems (cons (file-system
(device "root")
(title 'label)
(mount-point "/")
(type "ext4"))
(cons (file-system
(device "home")
(title 'label)
(mount-point "/home")
(type "ext4"))
%base-file-systems)))
(swap-devices '("/dev/sda3"))
(users (list (user-account
(name "davidochobits")
(comment "david8bits")
(group "users")
(supplementary-groups '("wheel" "netdev"
"audio" "video"))
(home-directory "/home/davidochobits"))))
;; Add Xfce and Ratpoison; that allows us to choose
;; sessions using either of these at the log-in screen.
(packages (cons* xfce ;desktop environments
wicd avahi ;useful tools
nss-certs ;for HTTPS access
%base-packages))
;; Use the "desktop" services, which include the X11
;; log-in service, networking with Wicd, and more.
(services %desktop-services)
;; Allow resolution of '.local' host names with mDNS.
(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:
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:
reboot
Al iniciar el sistema ya podremos disfrutar de nuestro escritorio XFCE
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:
guix package -i emacs
guix package -i nano
Instalar el navegador web IceCat:
guix package -i icecat
Instalar el editor gráfico Gimp:
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!!