Instale GuixSD usando un sistema Linux existente

Instale GuixSD usando un sistema Linux existente

Quiero instalar Guix System Distribution (o GuixSD, o simplemente Guix) junto con otras distribuciones. El problema es que Guix no reconoce los controladores Realtek, que no son gratuitos, por lo que no puedo usar WiFi. Puedo instalar Guix con Ethernet, pero es muy inestable, así que quiero instalarlo con mi instalación existente de Debian (buster) para luego poder agregar el canal Nonguix e instalar los controladores. El problema es que realmente no sé cómo.

Estoy bastante seguro de que incluye instalar Guix en Debian, instalar algunos paquetes y conectar GuixSD a la raíz (al menos, así es como lo hace NixOS, en el que se inspira Guix) o incluye chrooting en la ISO.

Agradecería cualquier ayuda posible.

Información del sistema

# neofetch # some info was filtered

root@deblugo 
--------------- 
OS: Debian GNU/Linux 10 (buster) x86_64 
Host: HP Notebook 
Kernel: 4.19.0-16-amd64 
Packages: 1624 (dpkg) 
Shell: bash 5.0.3  
CPU: Intel Celeron N3060 (2) @ 2.480GHz 
GPU: Intel Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx 
Memory: 1931MiB / 3803MiB 

# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 10 (buster)
Release:    10
Codename:   buster

# uname -a
Linux deblugo 4.19.0-16-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 GNU/Linux

# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

Respuesta1

Instalación en Debian

Del Manual de referencia de GNU Guix,2 Instalación:

Nota
Recomendamos el uso de estescript de instalación del shellpara instalar Guix sobre un sistema GNU/Linux en ejecución, en adelante denominadodistribución extranjera. El script automatiza la descarga, instalación y configuración inicial de Guix. Debe ejecutarse como usuario root.

Aquí hay un bashcomando de una sola línea para instalar Guix en Debian Buster:

bash <(wget -qO- https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh)

Instalación del canal Nonguix

Instrucciones adaptadas delPágina del proyecto Nonguix:

Nonguix se puede instalar comocanal guix. Para hacerlo, agréguelo a ~/.config/guix/channels.scm:

(cons* (channel
        (name 'nonguix)
        (url "https://gitlab.com/nonguix/nonguix")
        ;; Enable signature verification:
        (introduction
         (make-channel-introduction
          "897c1a470da759236cc11798f4e0a5f7d4d59fbc"
          (openpgp-fingerprint
           "2A39 3FFF 68F4 EF7A 3D29  12AF 6F51 20A0 22FB B2D5"))))
       %default-channels)

Entonces corre guix pull.

Uso de firmware y controladores no libres

Para utilizar el sistema Guix con el kernel de Linux estándar y firmware no libre, edite los campos de kernel y firmware de la definición del sistema operativo en config.scm:

;; Import nonfree linux module.
(use-modules (nongnu packages linux)
             (nongnu system linux-initrd))

(operating-system
  (kernel linux)
  (initrd microcode-initrd)
  (firmware (list linux-firmware))
  ...
  )

Si solo necesita firmware para su dispositivo de red Realtek, es posible que pueda ahorrar espacio en disco utilizando un paquete de firmware más pequeño:

(firmware (cons* iwlwifi-firmware
                 %base-firmware))

Luego, por supuesto, ejecute sudo guix system reconfigure /etc/config.scmpara aplicar su configuración.

Imagen de instalación

Como dijiste, la imagen de instalación oficial de Guix no funcionará para tu hardware, por lo que puedes generar una imagen de instalación ejecutando el kernel de Linux y el firmware no libres con el siguiente comando:

guix system image --image-size=7.2GiB /path/to/this/channel/nongnu/system/install.scm

Como se indica a continuación, deberá ejecutar guix pullpara descargar las descripciones del paquete Nonguix. Se requiere algo de espacio libre en su memoria USB para que esta operación se realice correctamente. La opción anterior --image-sizele permite especificar el tamaño de la imagen y, como tal, asignarle espacio libre. El valor dado es puramente indicativo; obviamente depende de la capacidad de su memoria USB.

Luego puedes escribir la imagen del disco generada en una memoria USB con:

Nota
Este ejemplo supone que Linux reconoce su memoria USB como /dev/sdb.
dd if=/path/to/disk-image of=/dev/sdb bs=4M status=progress oflag=sync

Los medios de instalación producidos por el método anterior no configuran automáticamente las especificaciones de sus canales. Debe agregar Nonguix “manualmente” /etc/guix/channels.scmy luego ejecutarlo guix pullpara que Guix conozca las bibliotecas de esquemas de Nonguix. A continuación se muestra el código del esquema Guile para incluir Nonguix en la especificación del canal.

(use-modules (ice-9 pretty-print))
(with-output-to-file "/etc/guix/channels.scm"
  (lambda _
    (pretty-print
     '(cons*
       (channel (name 'nonguix)
        (url "https://gitlab.com/nonguix/nonguix"))
       %default-channels))))

Como se menciona ennúmero 82, los módulos para dispositivos de red Realtek se incluyen desde kernel-linux-5.11:

Los archivos de firmware deben estar en realtek-firmwareel linux-firmwarepaquete. Pero supongo que necesitamos construir el RTW88módulo. Así que tenemos que ponernos manos CONFIG_RTW88=ma la obra upstream guix gnu/packages/aux-files/linux-libre/5.10-x86_64.conf. [Desde] kernel linux-5.11, este módulo en particular ahora debería estar habilitado de forma predeterminada...

información relacionada