Libere su Arch GNU/Linux 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 Arch.
¿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
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
# 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)
# pacman --root /mnt -Rdd $(pacman --root /mnt -Qqm)
Reemplazar los paquetes de Arch con los de Hyperbola
# 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.
# 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
Instale your-freedom para eliminar paquetes no libres que no tienen reemplazos libres:
# pacman --root /mnt --cachedir /mnt/var/cache/pacman/pkg -S your-freedom
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 no explícitamente
# pacman --root /mnt --cachedir /mnt/var/cache/pacman/pkg -S --asdeps $(pacman --root /mnt -Qqd)
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.
GRUB
# grub-install /dev/sdX
Para que grub regenere su archivo grub.cfg, ejecute:
# grub-mkconfig -o /boot/grub/grub.cfg
Syslinux
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
UEFI
# mkdir /boot/efi
# mount /dev/sdY /boot/efi
# cp -vi initramfs-linux-libre-lts* vmlinuz-linux-libre-lts /boot/efi/efi/hyperbola/
Otros bootloaders
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
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
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
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
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'
$ 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
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
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
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*
# pacman -S xenocara-server
Solución de problemas
¿Encuentra algún hardware que no funciona después de instalar your-freedom? Esto probablemente significa que no hay un controlador o firmware libre disponible para el dispositivo (verifique con dmesg). Es común que las tarjetas Wi-Fi requieran que se cargue un firmware en la tarjeta. Muchas tarjetas no funcionan en absoluto si falta el firmware. El firmware a menudo es privativo, por lo que no lo distribuimos. Es el caso de casi cualquier tarjeta Wi-Fi interna.
La solución habitual al problema es reemplazar la tarjeta o usar un dongle USB Wi-Fi externo. Puede comprar uno con el chipset Atheros (por ejemplo, ath9k_htc para dongle USB externo o ath9k para PCI y PCI- Express para ranuras de expansión) o conjunto de chips RTL818x (por ejemplo, rtl8187 para dongle USB externo o rtl818x_pci para PCI y PCI-Express para ranuras de expansión) ya que hay un firmware libre para estos adaptadores de Wi-Fi. También puede buscar en la base de datos h-node para encontrar adaptadores de Wi-Fi que funcionen bien con software libre o scripts/deblob-$ver para verificar los adaptadores de Wi-Fi incluidos en la lista negra de dispositivos Linux-libre.
Créditos
Este artículo de wiki se basa en ParabolaWiki.