Migre su Parabola GNU/Linux-libre a Hyperbola GNU/Linux-libre

Dado que Hyperbola migró desde la Jerarquía del sistema de archivos de systemd utilizada por Arch al Estándar de Jerarquía de Sistema de Archivos (FHS en inglés), es necesario que siga este artículo de migración con cuidado y en la secuencia adecuada al migrar desde Parabola.

¿Qué es el estándar de jerarquía del sistema de archivos (FHS)?

El Filesystem Hierarchy Standard (FHS) define los directorios principales y sus contenidos en GNU/Linux y otros sistemas operativos de computadora similares a Unix como HyperbolaBSD. Ver nuestro articulo para mas detalles.

Advertencia

Por favor lea la advertencia completa
Se recomienda hacer una copia de seguridad completa de todos los datos antes de intentar esta migración. Los usuarios también pueden preferir instalar Milky Way v0.3 desde cero en lugar de intentar la migración para garantizar una actualización exitosa y menos invasiva.
Se requiere usar una imagen viva de Milky Way v0.3 para realizar esta migración.
En la mayor medida permitida por las leyes aplicables, Hyperbola Project excluye y niega la responsabilidad por cualquier pérdida y gasto de cualquier naturaleza y de cualquier forma que surja, incluyendo, entre otros, cualquier directa, indirecta, general, especial, punitiva, incidental o consecuente daños y perjuicios; perdida de uso; pérdida de datos; pérdida causada por un virus; pérdida de ingresos o ganancias; pérdida o daño a la propiedad; reclamaciones de terceros u otras pérdidas de cualquier tipo o carácter

Migración

Ejecute la imagen viva y monte su partición root en /mnt. Reemplace /dev/sdX con su partición root actual.

# mount /dev/sdX /mnt
Si está utilizando un sistema de archivos cifrados, primero deberá desbloquearlo y luego montarlo.
# cryptsetup luksOpen /dev/sdX hdd
# mount /dev/mapper/hdd /mnt

Si está utilizando LVM, deberá montar el volumen como partición root.

# mount /dev/mapper/matrix-rootvol /mnt

Si tiene problemas para localizar su partición root, intente usar:

# lsblk

Este comando imprimirá una lista de unidades, particiones y grupos de volúmenes.

Instale Hyperbola keyring y la lista de espejos

Deshabilite la verificación de firma manualmente modificando la línea en /mnt/etc/pacman.conf:

RemoteFileSigLevel = Never

Instale el paquete Hyperbola keyring y la lista espejos para los repositorios de Hyperbola en /mnt/etc/pacman.d/mirrorlist:

# pacman --root /mnt -U https://www.hyperbola.info/packages/core/any/hyperbola-keyring/download/
# pacman --root /mnt -U https://www.hyperbola.info/packages/core/any/pacman-mirrorlist/download/

Rehabilite la verificación de firma en /mnt/etc/pacman.conf:

#RemoteFileSigLevel = Required

Renombre mirrorlist.pacnew como mirrorlist:

# cp -av /mnt/etc/pacman.d/mirrorlist.pacnew /mnt/etc/pacman.d/mirrorlist

Eliminar paquetes personalizados y huérfanos

# pacman --root /mnt -R $(pacman --root /mnt -Qqm)
Si los paquetes [multilib] están instalados, necesitará ejecutar adicionalmente
# pacman --root /mnt -Rdd $(pacman --root /mnt -Qqm)

Eliminar los repositorios de Parabola

Elimine todas las líneas nonprism, libre, pcr en /etc/pacman.conf ya que tenemos nuestros paquetes libres dentro de los repos core, extra, community y multilib. Vea nuestro artículo Repositorios para más información.

Puede usar nuestros archivos predeterminados pacman.conf para i686 y x86_64 como referencias.

Reemplazar los paquetes de Parabola con los de Hyperbola

Si está utilizando [multilib], también debe habilitarlo en la imagen viva:
# nano -w /etc/pacman.conf
-------------------------------------------------------------------------
[multilib]
Include = /etc/pacman.d/mirrorlist

Limpie la base de datos de paquetes del entorno /mnt.

# pacman --root /mnt -Scc

Actualice la base de datos del paquete del entorno de imagen viva:

# pacman -Syy

Actualice la base de datos de paquetes del entorno /mnt.

# pacman --root /mnt -Syy

Arreglar la base de datos de los paquetes

# pacman --root /mnt -D --asdeps $(pacman --root /mnt -Qqe)
# pacman --root /mnt -D --asexplicit $(pacman --root /mnt -Qqtd)

Actualiza filesystem

Filesystem ha cambiado significativamente desde v0.2.9 y requiere una actualización manual.

Es normal tener advertencias de permisos y errores de ejecución más allá de este punto, ya que los cambios de FHS han aumentado la seguridad de nuestros permisos de carpeta desde la versión v0.2.9
# pacman --root /mnt --cachedir /mnt/var/cache/pacman/pkg -S filesystem

Actualiza todos los paquetes

# pacman --root /mnt --cachedir /mnt/var/cache/pacman/pkg -Suu base
Si desea ignorar solicitudes adicionales y aceptar todas las confirmaciones sobre paquetes reemplazados, puede usar opcionalmente –noconfirm
Si algunos de sus paquetes tienen una versión más alta que en los repositorios de Hyperbola, serán degradados a una versión más baja de nuestros paquetes ya que somos una distribución de soporte a largo plazo.
Como Hyperbola es una distribución de soporte a largo plazo, linux-libre-lts es nuestro núcleo predeterminado.
Hyperbola es una distribución de soporte a largo plazo basada en Arch con la estabilidad y seguridad de Debian. No es una distribución de lanzamiento rodante como Arch, porque Hyperbola está usando instantáneas de Arch para sus versiones y la lista negra de Parabola como base para mantenerla 100% libre. Además, Hyperbola está utilizando parches de Debian, por lo que todos los paquetes se están estabilizando con mejoras a través de su desarrollo. Consulte las Pautas de empaquetamiento y Contrato Social para más detalles.

Reinstale todos los paquetes instalados no explícitamente

# pacman --root /mnt --cachedir /mnt/var/cache/pacman/pkg -S --asdeps $(pacman --root /mnt -Qqd)

Reinstale todos los paquetes instalados explícitamente

# pacman --root /mnt --cachedir /mnt/var/cache/pacman/pkg -S $(pacman --root /mnt -Qqe)

Chroot en el sistema instalado

# arch-chroot /mnt

Reinstale todos los paquetes nuevamente

# pacman -S --asdeps $(pacman -Qqd)
# pacman -S $(pacman -Qqe)

Regenerar la imagen del kernel

# mkinitcpio -p linux-libre-lts

Reinstale el cargador de arranque (Bootloader)

Dependiendo de su gestor de arranque instalado, necesitará reinstalarlo para obtener los últimos cambios de v0.3.

No es necesario reinstalar el gestor de arranque para los sistemas LibreBoot ya que GRUB reside en el BIOS y no en la unidad de almacenamiento interna.

GRUB

Nota: Esto solo es necesario para el sistema instalado con GRUB en la unidad interna; consulte el manual de GRUB para obtener más detalles.
# grub-install /dev/sdX

Para que grub regenere su archivo grub.cfg, ejecute:

# grub-mkconfig -o /boot/grub/grub.cfg

Syslinux

Nota: Esto solo es necesario para el sistema instalado con Syslinux en la unidad interna; consulte el manual de Syslinux para obtener más detalles.

Cambie manualmente las siguientes líneas en /boot/syslinux/syslinux.cfg para reflejar el cambio:

  LABEL hyperbola
     MENU LABEL Hyperbola GNU/Linux-libre
     LINUX ../vmlinuz-linux-libre-lts
     ...
     INITRD ../initramfs-linux-libre-lts.img

  LABEL hyperbolafallback
     MENU LABEL Hyperbola GNU/Linux-libre Fallback
     LINUX ../vmlinuz-linux-libre-lts
     ...
     INITRD ../initramfs-linux-libre-lts-fallback.img
Alternativamente, puede eliminar el archivo de configuración y reinstalar syslinux.

UEFI

Esto solo es necesario para el sistema instalado con UEFI, consulte el manual de UEFI para obtener más detalles.
# mkdir /boot/efi
# mount /dev/sdY /boot/efi
# cp -vi initramfs-linux-libre-lts* vmlinuz-linux-libre-lts /boot/efi/efi/hyperbola/

Otros bootloaders

Consulte https://wiki.archlinux.org/index.php/Boot_Loaders para obtener más información.

OpenRC

Como Hyperbola ha anunciado el fin del soporte a systemd, se requiere la migración a OpenRC.

¿Qué es OpenRC?

OpenRC es un sistema init basado en dependencia mantenido por los desarrolladores de Gentoo, que funciona con el programa init proporcionado por el sistema, normalmente SysVinit.

Advertencia

Por favor lea la advertencia completa

netctl funciona solo con systemd, por lo tanto, ya no funcionará desde Milky Way v0.2 ya que OpenRC es el principal sistema de inicio de Hyperbola. Asumiremos que ya tiene una alternativa, en nuestro caso, es netifrc.

Grupos

Antes de que Arch migrara a systemd, los usuarios debían agregarse manualmente a algunos grupos para poder acceder a los dispositivos correspondientes. Lea más sobre aquí.

Asegúrese de que su usuario esté en el grupo de audio, de lo contrario no tendrá sonido:

# gpasswd -a <tu-usuario> audio

En el caso de algunos entornos gráficos, como KDE, deberá editar /etc/pulse/client.conf y eliminar la línea de autospawn = no, y debería verse así:

...
; default-sink =
; default-source =
; default-server =
; default-dbus-server =

; autospawn = yes
; daemon-binary = /usr/bin/pulseaudio
; extra-arguments = --log-target=syslog

; cookie-file =

; enable-shm = yes
; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB

; auto-connect-localhost = no
; auto-connect-display = no
Esto es solo en el caso de que use PulseAudio. Para obtener más información, consulte este tema del foro de Manjaro.
Por razones de seguridad, tenemos planes de usar sndio como reemplazo de PulseAudio. Dado que requiere una transición difícil, se realizará para la próxima versión, también conocida como Milky Way v0.4. Haremos un anuncio cuando esté listo.

Lo mismo para el video, tus juegos podrían ser lentos de lo contrario:

# gpasswd -a <tu-usuario> video

Para redes:

# gpasswd -a <tu-usuario> network

Para webcam:

# gpasswd -a <tu-usuario> optical

También para almacenamiento:

# gpasswd -a <tu-usuario> storage
# gpasswd -a <tu-usuario> disk

y para CUPS:

# gpasswd -a <tu-usuario> sys
Primero pruebe estas funciones antes de agregar su usuario a estos grupos, por ejemplo, en algunos casos puede no ser necesario agregar su usuario al grupo optical.

Migración

Dado que OpenRC está incluido de manera predeterminada y systemd está en la lista negra por your-freedom, uno puede recibir mensajes sobre la migración como:

run 'rc-update add cronie default'
run 'rc-update add haveged default'

La ejecución de este(os) comando(s) agrega los servicios a los niveles de ejecución especificados. Por ejemplo ejecutar:

# rc-update add cronie default

El servicio cronie se agregaría al nivel de ejecución predeterminado y se iniciaría automáticamente al arrancar.

cronie (para cron) y haveged (para recolección de entropía) son algunos servicios comunes que se pueden habilitar.

También debe instalar polkit para obtener suficientes privilegios de escritorio para operaciones como apagar, montar el dispositivo usb:

# pacman -S polkit
Actualmente, NetworkManager y cualquier administrador de pantalla como GDM o LightDM ejecuta el servicio de elogind en Hyperbola automáticamente, sin embargo, si usará el programa xinit para iniciar el servidor X Window System o Weston/Sway para iniciar Wayland y usar netifrc en lugar de NetworkManager, usted necesita agregar el servicio elogind a un nivel de ejecución (por ejemplo, predeterminado) para que se inicie automáticamente en el arranque.
Por razones de seguridad, tenemos planes de usar ConsoleKit como reemplazo de elogind. Dado que requiere una transición difícil, se realizará para la próxima versión, también conocida como Milky Way v0.4. Haremos un anuncio cuando esté listo.

Configuración

Servicios a menudo requeridos

Una vez que migre a OpenRC, es posible que deba agregar lvm2, etc.

Existe el procedimiento para lvm2:

# rc-update add lvm boot

Para cryptsetup:

# rc-update add dmcrypt boot

Para alsa-utils:

# rc-update add alsasound default

Para cronie:

# rc-update add cronie default

En cada paquete que contenga un servicio OpenRC, tendrá este mensaje:

      ==> rc 'rc-update add ... default'
Asegúrese de qué servicios estaba usando en systemd para volver a habilitarlos en OpenRC:
$ ls -ls /etc/systemd/system/multi-user.target.wants/

A veces, hay archivos de destino como remote-fs.target que son inútiles en OpenRC.

Hostname

OpenRC tiene su configuración en /etc/conf.d/, para tener su hostname, edite /etc/conf.d/hostname:

# nano -w /etc/conf.d/hostname

Y reemplace localhost con el nombre que desee:

# Set to the hostname of this machine
hostname="localhost"

Configuración de NetworkManager

Debe habilitar el software en el arranque:

# rc-update add NetworkManager default

Para no cambiar el hostname de la computadora cuando se está conectando a Internet (proporcionado por dhcp), elimine el comentario de la parte [keyfile] en el archivo /etc/NetworkManager/NetworkManager.conf de la siguiente manera:

# Static hostname
[keyfile]
hostname=**Votre hostname**

Para que NetworkManager funcione correctamente en OpenRC, asegúrese de que /etc/hostname tenga el mismo localhost que en /etc/conf.d/hostname. Opcionalmente, puede eliminar de forma segura /etc/hostname

Por razones de seguridad, tenemos planes para eliminar NetworkManager. Dado que requiere una transición difícil, se realizará para la próxima versión, también conocida como Milky Way v0.4. Haremos un anuncio cuando esté listo, por lo que le recomendamos que utilice netifrc como alternativa.

Kepmap

Como hostname, debe configurar el keymaps en el archivo /etc/conf.d/keymaps:

keymap="us"

Si tiene un uso avanzado de su keymaps, puede ver las otras funcionalidades, documentadas en los comentarios. Puede encontrar todos los mapas de teclas disponibles en /usr/share/kbd/keymaps. Entonces ejecute:

# rc-service keymaps restart
Esto solo se aplica a CLI, si está utilizando X11, esto no afectará su entorno gráfico.

Administrador de visualización de Inicio de Sesión

A diferencia de otras distribuciones con soporte OpenRC, el DM se lanza directamente.

Por ejemplo, con lightdm, solo necesita habilitar el servicio.

# rc-update add lightdm default

Adaptación entre systemctl y rc-update

Agregar o eliminar un servicio

Puede agregar un servicio de esta manera:

# rc-update add <service> <runlevel>

Y elimínelo de la siguiente manera:

# rc-update del <service> <runlevel>

Servicios actualmente en ejecución

Para tener un resumen de todos los servicios en ejecución, detenidos, etc., puede ejecutar este comando:

# rc-status --all -v

Detener/Iniciar/Reiniciar un servicio

Para reiniciar un servicio, debe usar rc-service:

# rc-service <service> restart

Solución de problemas

El nombre de dispositivo de red constante no está deshabilitado

Para deshabilitar la asignación de nombres de dispositivos de red consistentes, deshabilite la asignación de nombres fijos, de modo que los nombres de kernel impredecibles se usen nuevamente, enmascarando el archivo de reglas de udev para la política predeterminada. Este “enmascaramiento” se puede hacer haciendo un enlace simbólico a /dev/null. Como root, emita un comando de la siguiente manera:

# ln -s /dev/null /etc/udev/rules.d/80-net-name-slot.rules

Falta Sysctl.conf

Puede encontrar un problema si falta /etc/sysctl.conf. Para solucionar esto, debe crear el archivo:

# touch /etc/sysctl.conf

/usr/libexec/rc/cache no existe

Si tiene este error cuando apaga la computadora:

WARNING: /usr/libexec/rc/cache is not writable!

La solución es crear la carpeta:

# mkdir /usr/libexec/rc/cache

Swap no está habilitado

Systemd se utiliza para montar el swap automáticamente, debe agregarlo manualmente en /etc/fstab de la siguiente manera:

# /dev/sda2
UUID=0c3e9434-bc5c-461c-a5e4-4e9fe5f9a149	swap	swap	sw	0	0

tmpfs no está presente

Como el swap, systemd monta automáticamente los tmpfs. Agregarlo manualmente en /etc/fstab:

tmpfs		/tmp		tmpfs   nodev,nosuid          	0  	0

El sistema no puede apagarse correctamente

Comience con OpenRC 0.28 SysVinit se reemplaza con openrc-init, el apagado se reemplaza con openrc-shutdown. Si usa startx para iniciar su escritorio, también debe modificar ~/.xinitrc para xfce4, reemplace exec ck-launch-session startxfce4 a startxfce4.

Completa la migración

Salir de chroot

# exit
También puede presionar Ctrl+D para salir de un chroot

Desmontar y reiniciar

# umount -l /mnt

Reiniciar el sistema

# reboot

¡Entonces inicie sesión en Hyperbola!

Después de la instalación

¡Bienvenido, ahora estás en Hyperbola!

Independiente de OpenRC, Hyperbola contiene 2 cambios notables:

  • La adopción de LibreSSL como proveedor predeterminado de los protocolos Secure Sockets Layer (SSL) y Transport Layer Security (TLS)
  • La adopción de Xenocara como proveedor predeterminado del servidor de visualización para el sistema X Window

LibreSSL

LibreSSL es una versión de TLS/crypto stack bifurcada de OpenSSL en 2014, con el objetivo de modernizar la base de código, mejorar la seguridad y aplicar procesos de desarrollo de mejores prácticas.

Se bifurcó de OpenSSL en abril de 2014 como respuesta de los desarrolladores de OpenBSD a la vulnerabilidad de seguridad Heartbleed en OpenSSL, con el objetivo de refactorizar el código de OpenSSL para proporcionar una implementación más segura.

Si tiene paquetes vinculados de OpenSSL locales o personalizados, deben ser reconstruidos para LibreSSL. Es probable que haya paquetes rotos.

Incluye paquetes con dependencias directas en:

  • openssl
  • openssl-1.0
  • lib32-openssl
  • lib32-openssl-1.0

También paquetes con enlace a:

  • libssl.so.1.1
  • libssl.so.1.0
  • libcrypto.so.1.1
  • libcrypto.so.1.0

Xenocara

Xenocara proporciona un marco para albergar modificaciones de OpenBSD y automatizar la construcción de los componentes modulares X.Org, incluidos paquetes de terceros y algunos programas mantenidos por los desarrolladores de OpenBSD.

Incluye un servidor X.Org X personalizado que utiliza un usuario _x11 dedicado de forma predeterminada para eliminar privilegios y realizar la separación de privilegios de acuerdo con la política de privilegios mínimos de OpenBSD. Además, Xenocara incluye varios otros proyectos, como cwm, un administrador de ventanas de apilamiento para el sistema X Window.

Si tiene paquetes vinculados X.Org locales o personalizados, deben ser reconstruidos para Xenocara. Es probable que haya paquetes rotos.

Incluye paquetes con dependencias directas en:

  • xorg-*

También paquetes con enlace a:

  • libX*.so*
Si aún no tenía instalado xorg-server durante la migración, puede probar el nuevo Xenocara instalándolo.
# pacman -S xenocara-server
La función realizar separación de privilegios se deshabilitó en Hyperbola GNU/Linux-libre porque requiere llamadas a sistemas específicos de OpenBSD como pledge y unveil, sin embargo, se implementará para HyperbolaBSD, un sistema operativo que está siendo desarrollado por Hyperbola Project.

Créditos

Este artículo de wiki se basa en ParabolaWiki.