Dualboot con Guix

Para compartir tips, plantear dudas, sugerir software y todo lo relacionado con la parte técnica del software libre.
Avatar de Usuario
yacaCL
Mensajes: 2
Registrado: Jue Abr 16, 2020 6:43 pm

Dualboot con Guix

Mensaje por yacaCL » Mié Jul 29, 2020 4:34 pm

Ayer llegó mi tarjeta wifi atheros 100% compatible con software libre y me propuse aprovechar de instalar Guix. El proceso no es nada de otro mundo, pero debe ser dualboot ya que:

1) Ya tengo gentoo instalado, con horas y horas invertidas en la instalación para tener un sistema hecho a la medida para el computador (muy rápido por lo demás, 10 seg en prender)

2) Sólo estoy probando Guix

3) Si sólo estoy probando Guix no sería mejor una máquina virtual? El tema va por si es que me gusta. Si lo tengo en máquina virtual y me decido por instalarlo directamente tendria que hacer 2 instalaciones en total, posiblemente sin poder replicar las configuraciones. Pero si hago dualboot ya está todo solucionado.

4) Qué hago si no me gusta? pues elimino la partición de guix y recupero el espacio.

Entonces, creé una partición de unos 80 gb para guix, en donde montaré "/". La otra partición necesaria es la de /boot, en este caso usaré la misma de gentoo.

Ya instalado guix inicia y me muestra grub (en gentoo no usaba grub, booteaba directamente) pero sólo aparece guix. Para arreglarlo basta con editar el archivo config.scm y veremos en este hilo cómo hacerlo.

Recuerda que luego de instalar guix lo primero que debes hacer es:

Código: Seleccionar todo

$ guix pull
$ sudo guix system reconfigure /etc/config.scm
Luego de haber hecho eso ya podemos meterle mano al sistema, de todas formas recomiendo reiniciar para poder empezar limpio. Y pues, editamos el archivo config.scm que debería verse así:

Código: Seleccionar todo

;; This is an operating system configuration generated
;; by the graphical installer.

(use-modules (gnu))
(use-service-modules desktop networking ssh xorg)

(operating-system
  (locale "es_CL.utf8")
  (timezone "America/Santiago")
  (keyboard-layout (keyboard-layout "latam"))
  (host-name "guixpad")
  (users (cons* (user-account
                  (name "nvcr")
                  (comment "")
                  (group "users")
                  (home-directory "/home/nvcr")
                  (supplementary-groups
                    '("wheel" "netdev" "audio" "video")))
                %base-user-accounts))
  (packages
    (append
      (list (specification->package "nss-certs"))
      %base-packages))
  (services
    (append
      (list (service gnome-desktop-service-type)
            (service openssh-service-type)
            (service tor-service-type)
            (set-xorg-configuration
              (xorg-configuration
                (keyboard-layout keyboard-layout))))
      %desktop-services))
  (bootloader
   (bootloader-configuration
     (bootloader grub-efi-bootloader)
     (target "/boot/efi")
     (keyboard-layout keyboard-layout)))
  (file-systems
    (cons* (file-system
             (mount-point "/")
             (device
               (uuid "cee4b5c9-5abf-4d2e-ae3e-23c929ae59f1"
                     'ext4))
             (type "ext4"))
           (file-system
             (mount-point "/boot/efi")
             (device (uuid "C09C-9148" 'fat32))
             (type "vfat"))
           %base-file-systems)))
Según el manual de Guix basta con agregar un menu-entry dentro de menu-entries dentro de bootloader-configuration, pero lo que no dice es cómo hacerlo (mejor dicho, no entrega un ejemplo preciso de como hacerlo). Puedes ver la sección del manual acá. En el siguiente código dejo el ejemplo de cómo lo configuré yo:

Código: Seleccionar todo

;; This is an operating system configuration generated
;; by the graphical installer.

(use-modules (gnu))
(use-service-modules desktop networking ssh xorg)

(operating-system
  (locale "es_CL.utf8")
  (timezone "America/Santiago")
  (keyboard-layout (keyboard-layout "latam"))
  (host-name "guixpad")
  (users (cons* (user-account
                  (name "nvcr")
                  (comment "")
                  (group "users")
                  (home-directory "/home/nvcr")
                  (supplementary-groups
                    '("wheel" "netdev" "audio" "video")))
                %base-user-accounts))
  (packages
    (append
      (list (specification->package "nss-certs"))
      %base-packages))
  (services
    (append
      (list (service gnome-desktop-service-type)
            (service openssh-service-type)
            (service tor-service-type)
            (set-xorg-configuration
              (xorg-configuration
                (keyboard-layout keyboard-layout))))
      %desktop-services))
  (bootloader
   (bootloader-configuration
     (bootloader grub-efi-bootloader)
     (target "/boot/efi")
     (menu-entries
      (list
       (menu-entry
	(label "Gentoo")
	(linux "/vmlinuz-5.4.38-gentoo"))))
     (keyboard-layout keyboard-layout)))
  (file-systems
    (cons* (file-system
             (mount-point "/")
             (device
               (uuid "cee4b5c9-5abf-4d2e-ae3e-23c929ae59f1"
                     'ext4))
             (type "ext4"))
           (file-system
             (mount-point "/boot/efi")
             (device (uuid "C09C-9148" 'fat32))
             (type "vfat"))
           %base-file-systems)))
La clave está debajo de bootloader. He creado una entrada llamada menu-entries, que contiene una lista (list) de menu-entry (las entradas de grub). Las entradas que especificas en esta sección se agregan al grub, sumándose a las por defecto que serían la de guix y guix-old. En menu-entry se debe ingresar el nombre de la entrada con "label", en este caso es "Gentoo". También se debe indicar el kernel que quieres bootear y el initramfs, en mi caso vmlinuz-5.4.38-gentoo es el kernel y no tengo initramfs para gentoo. Este kernel de gentoo lo tengo configurado con la variable root dentro, así que no es necesario pasarle el parámetro root a grub. El código, para verlo más fácil queda así:

Código: Seleccionar todo

 (bootloader
   (bootloader-configuration
     (bootloader grub-efi-bootloader)
     (target "/boot/efi")
     (menu-entries
      (list
       (menu-entry
	(label "Gentoo")
	(linux "/vmlinuz-5.4.38-gentoo"))))
     (keyboard-layout keyboard-layout)))
Luego de modificar el archivo config.scm, guardamos los cambios y hacemos un guix system reconfigure:

Código: Seleccionar todo

$ sudo guix system reconfigure /etc/config.scm
Eso debería agregar la entrada a grub y podemos probar. Pero qué sucede? bueno, el archivo config.scm por defecto asigna un initramfs, y ya vimos que no lo necesito en mi caso... entonces se genera un error al querer iniciar en grub. Para arreglar este problema basta con editar el archivo /boot/grub/grub.cfg y eliminar la línea que se generó automáticamente, esta línea la puedes ver en la siguiente imagen:

Imagen

Eliminada esa línea, ya estamos listos. tan sólo reinicia y notarás la diferencia.
Imagen
Responder