Instalar Parabola GNU/Linux-libre
Índice
- 1. Inicialización
- 2. Preparación en caso de encriptación
- 3. Particionado
- 4. Migrando instalador a Parabola
- 5. Swap
- 6. Instalación
- 7. Finalización
- 8. Hackware-boot tool
- 9. Optimizaciones
- 10. Licencia
Es importante considerar que Parabola es menos estable que Arch debido a que tiene menos usuarios. Si eres un usuario novel no te recomiendo instalarlo, si eres un usuario más avanzado por favor hazlo e involúcrate con su desarrollo y progreso!
1 Inicialización
- Conectar cable de red
- Encender
- Presionar
o
(other boot options) - Presionar
Ctrl+b
- Ingresar
dhcp
- Ingresar
chain https://boot.netboot.xyz
- Cuando aparezca el menú, ir a
Linux Network Installs (64-bit)
->Arch Linux
-> la última revisión.
Esperar a que bootee, y opcionalmente ingresar:
ls /usr/share/kbd/keymaps/**/*.map.gz # listado de distribuciones de teclado loadkeys us-acentos # seleccionar distribución de teclado ls /usr/share/kbd/consolefonts/ # listado de fuentes setfont latarcyrheb-sun32 && reset # seleccionar fuente timedatectl set-ntp true # actualizar hora
2 Preparación en caso de encriptación
Si se desea encriptación del dispositivo de almacenamiento interno, opcionalmente, pero muy recomendado es borrar la información previamente contenida en este llenándola con datos aleatorios. Tomará un tiempo, esperar hasta recibir el error "no space left on device".
cryptsetup open --type plain -d /dev/urandom /dev/sdX to_wipe dd if=/dev/zero of=/dev/mapper/to_wipe status=progress # opcionalmente bs=1M cryptsetup close to_wipe # luego de "no space left on device"
3 Particionado
Si deseas una encriptación completa del almacenamiento intero, incluyendo /boot
, debes saber que Hackware-boot por defecto solo intenta desencriptar la primera partición de cada dispositivo, de modo que la partición de booteo debe ser la primera en la tabla de particiones. Podemos usar una tabla de particiones MBR o GPT, en el caso de GPT querrás crear una partición bios_grub
(parted /dev/sdX set Y bios_grub on
) de 1M para almacenar datos de arranque de GRUB.
Debido a que GRUB no tiene soporte apropiado para LUKS2, lo mejor es crear una partición /boot
separada, y encriptarla con LUKS1 (en caso que se desee).
500MB es un tamaño muy seguro para /boot
en caso de la instalación de uno o dos sistemas operativos, pero si se desea bootear más SO se recomienda aumentar ese tamaño.
Si no se encriptará el almacenamiento, y se desea instalar OpenBSD (u otro sistema unix-like que use swap) además de GNU/Linux, se recomienda crear una partición swap separada. En caso de encriptación es mejor que cada cual tenga su swap por seguridad, el uso de un archivo swap es cómodo para esto.
Para particionar el almacenamiento puedes usar fdisk /dev/sdX
, donde sdX es el medio de almacenamiento a particionar, podemos reconocerlo ejecutando lsblk
.
3.1 /boot
3.1.1 Sin encriptación en /boot
Creamos una partición ext2 para /boot
.
mkfs.ext2 /dev/sdX1
3.1.2 Con encriptación en /boot
Creamos una unidad con encriptación LUKS1 para /boot
.
cryptsetup -v --type luks1 luksFormat /dev/sdX1 cryptsetup open /dev/sdX1 cryptboot mkfs.ext2 /dev/mapper/cryptboot
3.2 /
3.2.1 Sin encriptación en /
Creamos una partición ext4 para /
y montamos junto a /boot
.
mkfs.ext2 /dev/sdXY mount /dev/sdXY /mnt mount --mkdir /dev/sdX1 /mnt/boot
3.2.2 Con encriptación en /
Creamos una unidad con encriptación LUKS2 para /
.
Por seguridad es altamente recomendable escoger una contraseña distinta. Según la instalación sugerida en este tutorial solo deberemos ingresar la de /boot
, pero no debes perder la de /
, pues podría servirte para recuperar el acceso a tus archivos en caso de fallas o compromiso a tu sistema.
cryptsetup -v --type luks2 luksFormat /dev/sdXY cryptsetup open /dev/sdXY cryptroot
En caso de desear la instalación de múltiples distros ahora o posiblemente en el futuro (y/o facilitar la restauración del sistema con snapshots), recomiendo BTRFS. LVM también es una buena opción dependiendo de la necesidad.
De otra manera, lo más sencillo es usar una partición ext4.
-
ext4
mkfs.ext4 /dev/mapper/cryptroot
Monta tu sistema de archivos para Parabola en
/mnt
.mount /dev/mapper/cryptroot /mnt mount --mkdir /dev/mapper/cryptboot /mnt/boot
-
BTRFS
mkfs.btrfs /dev/mapper/cryptroot
Para permitir la instalación de varios sistemas ahora o posibilemente a futuro lo mejor es crear un subvolumen base por cada sistema operativo y luego las particiones de cada cual.
Primero que nada creamos un subvolumen para swap que compartiremos entre todas las distros que instalemos. Necesita no estar sujeto a Copy-on-write (COW) para funcionar apropiadamente. Es un buen lugar para guardar otras cosas que deben estar seguras y disponibles para todos los sistemas, a posterioridad lo montaremos en
/var/safe
.btrfs subvolume create /mnt/safe chattr +C /mnt/safe
Ya que BTRFS es bastante flexible y no limita el tamaño de los volumenes (ya que no son block devices, sino árboles de archivo POSIX) recomiendo crear por lo menos 2 volumenes para cada sistema operativo:
-
@
para la raíz/
-
@home
para/home
mount /dev/mapper/cryptroot /mnt mkdir /mnt/parabola for subvolume in @ @home; do btrfs subvolume create /mnt/parabola/$subvolume done
Existen distintas formas de estructurar un esquema BTRFS, acá usamos una estructrura "flat" para
@
y@home
, y "nested" para@var
en caso de snapshots.Si se desea realizar snapshots para facilitar la restauración del sistema, Snapper con snap-pac y snap-pac-grub son grandes herramientas.
En tal caso es buena idea crear además de un subvolumen para snapshots en
/var/snapshots
, subvolúmenes para espacios a los que no se desea sacar snapshots, como el caché de pacman en/var/cache/pacman
,/var/tmp
,/var/log
y/var/spool
.btrfs subvolume create /mnt/parabola/@var mkdir /mnt/parabola/@var/cache for subvolume in snapshots cache/pacman tmp spool log; do btrfs subvolume create /mnt/parabola/@var/$subvolume done
Ahora desmontamos con
umount /mnt
.Monta tu sistema de archivos para Parabola en
/mnt
. Conforme al esquema presentado antes sería asi:for subvolume in @ @home @var; do mount /dev/mapper/cryptroot --mkdir -o subvol=parabola/$subvolume /mnt/${subvolume#@} done mount /dev/mapper/cryptroot --mkdir -o subvol=safe /mnt/var/safe mount --mkdir /dev/mapper/cryptboot /mnt/boot
-
-
LVM
Pendiente.
4 Migrando instalador a Parabola
Basado en https://wiki.parabola.nu/Migration_from_Arch
En /etc/pacman.conf
setear RemoteFileSigLevel = Never
.
Instalar keyring y mirrorlist de Parabola:
pacman -U https://www.parabola.nu/packages/core/i686/archlinux32-keyring-transition/download pacman -U https://www.parabola.nu/packages/libre/x86_64/parabola-keyring/download pacman -U https://www.parabola.nu/packages/libre/x86_64/pacman-mirrorlist/download
En /etc/pacman.conf
, devolver RemoteFileSigLevel
a su estado original (comentado o seteado RemoteFileSigLevel = Required DatabaseOptional
).
Añadir el repo [libre]
en /etc/pacman.conf
. El orden es importante: [libre]
debe estar sobre todos los repos de Arch (core|extra|community).
... [libre] Include = /etc/pacman.d/mirrorlist ... #[testing] #Include = /etc/pacman.d/mirrorlist ...
Renombrar mirrorlist.pacnew
como mirrorlist
:
cp -vr /etc/pacman.d/mirrorlist.pacnew /etc/pacman.d/mirrorlist
Actualiza la base de datos:
pacman -Syy
Actualiza el keyring. Paciencia, esto tomará un tiempo (aprox 1:30 hrs, sigue leyendo para ver una alternativa).
pacman-key --refresh-keys
Alternativamente puedes importar las llaves con pacman-key --import directory-with-pubring.gpg
. Previamente necesitas haber creado un backup con mkdir backup-dir && pacman-key --export backup-dir/pubring.gpg
(o alguien de confianza te lo tiene que haber pasado).
Instala el pacman
de Parabola y your-freedom
. Acepta todos los reemplazos.
pacman -S pacman your-freedom
5 Swap
Por flexibilidad usaremos un archivo swap en lugar de una partición. Usaremos una Swap de 4GB (1MB*4000), dependiendo de su uso y las características de tu equipo podrías necesitar más o menos.
mkdir -p /mnt/var/safe dd if=/dev/zero of=/mnt/var/safe/swapfile bs=1MB count=4000 status=progress chmod 600 /mnt/var/safe/swapfile mkswap -U clear /mnt/var/safe/swapfile swapon /mnt/var/safe/swapfile
6 Instalación
6.1 Paquetes básicos
Deberás instalar los paquetes básicos para el funcionamiento del sitema: base
, linux
, grub
y dhclient
.
- Si encriptaste tu almacenamiento interno además necesitarás
cryptsetup
. - Si usas BTRFS también necesarás instalar
btrfs-progs
. - Si usas LVM también necesarás instalar
lvm2
. - Adicionalmente podrías desear instalar
base-devel
para compilar cosas,iwd
para manejar tu wi-fi,man-db man-pages texinfo
para obtener ayuda en tu consola,bash-completion
para autocompletación en consola,posix-user-portability
para herramientas básicas POSIX yvim
y/oemacs
como editores.
pacstrap /mnt base linux grub dhclient (..otros..)
6.2 Fstab
Genera un fstab:
genfstab -U /mnt > /mnt/etc/fstab
6.3 Chroot
Posiciónate sobre tu sistema recién instalado en una jaula chroot para comenzar a trabajar desde el:
arch-chroot /mnt
6.4 Zona horaria
Selecciona tu zona horaria:
ln -sf /usr/share/zoneinfo/America/Santiago /etc/localtime hwclock --systohc
6.5 Localización
Para seleccionar tu localización:
- Descomenta tu(s) locale(s) en
/etc/locale.gen
, por ejemploen_US.UTF-8 UTF-8
yes_CL.UTF-8 UTF-8
. - Ingresa la variable
LANG
acorde a tu locale en/etc/locale.conf
, por ejemploLANG=es_CL.UTF-8
. - Corre
locale-gen
.
Setea tu tu keyboard layout en /etc/vconsole.conf
:
KEYMAP=us-acentos
6.6 Hostname
Ingresa tu hostname:
echo 'parabola' > /etc/hostname
6.7 Repos adicionales
Opcionalmente habilita los repos adicionales del proyecto Parabola en /etc/pacman.conf
.
Recomiendo solo habilitar [nonprism]
y [pcr]
para un sistema relativamente estable. Usar [nonsystemd]
requiere más paciencia y capacidades técnicas que la versión que usa systemd, y requiere pasos adicionales o distintos que no están cubiertos en este tutorial.
Si habilitas [nonprism]
instala your-privacy
:
pacman -Sy your-privacy
6.8 Montaje automático de /boot encriptado
Para montar automáticamente /boot
al incio:
dd bs=1 count=512 if=/dev/random of=/var/safe/cryptboot.keyfile iflag=fullblock chmod 600 /var/safe/cryptboot.keyfile cryptsetup -v luksAddKey /dev/sdX1 /var/safe/cryptboot.keyfile
Y añade una línea con cryptboot UUID=<cryptboot-uuid> /var/safe/cryptboot.keyfile
a /etc/crypttab
, donde <cryptboot-uuid>
es el UUID de /dev/sdX1
, puedes averiguarlo con blkid /dev/sdX1
.
6.9 Mkinitcpio
Dependiendo de nuestra instalación, es probable que necesitemos incluir algunos hooks en /etc/mkinitcpio.conf
.
- Si usas encriptación o LVM verifica que esté (o agrega)
udev
después debase
. - Si usas encriptación en /boot necesitarás agregar los hook
encrypt
después deblock
ykeymap
después deautodetect
(verifica o agrega tambiénkeyboard
). - Si usas LVM necesitarás agregar el hook
lvm2
, después deblock
. - Agrega
resume
antes defsck
para soportar la hibernación del sistema.
6.9.1 Ingresar solo una contraseña
En caso de encriptación completa del almacenamiento interno, debido a que tenemos 2 particiones encriptadas, usualmente tendríamos que ingresar 2 contraseñas para poder bootear nuestro sistema. Podemos conseguir que solo nos solicite la contraseña de /boot
si dejamos una llave para el acceso a "cryptroot" en initramfs.
Crea el archivo llave y añádela como llave a tu partición encriptada como "cryptroot":
dd bs=1 count=512 if=/dev/random of=/var/safe/cryptroot.keyfile iflag=fullblock chmod 600 /var/safe/cryptroot.keyfile cryptsetup -v luksAddKey /dev/sdXY /var/safe/cryptroot.keyfile
Añade el archivo de llave a la imagen initramfs editando /etc/mkinitcpio.conf
:
FILES=(/var/safe/cryptroot.keyfile)
6.9.2 Crear initramfs
Una vez editado /etc/mkinitcpio.conf
creamos la imagen initramfs con:
mkinitcpio -P
6.10 GRUB
Dependiendo de nuestra instalación es probable que necesitemos incluir algunos módulos en GRUB, lo hacemos a través del archivo /etc/default/grub
.
- Si usas encriptación:
- Descomenta
GRUB_ENABLE_CRYPTODISK
. - Identifica el
UUID
de tu partición encriptada "cryptroot" conblkid /dev/sdXY
. - Si usas encriptación completa añade
cryptdevice=UUID=<UUID>:cryptroot cryptkey=rootfs:/var/safe/cryptroot.keyfile
aGRUB_CMDLINE_LINUX
(reemplazando <UUID>).
- Descomenta
- Si usas LVM agrega
lvm
aGRUB_PRELOAD_MODULES
.
6.10.1 Hibernación
Para hibernar usando un archivo swap es necesario:
- Agregar
resume=<swap_device>
aGRUB_CMDLINE_LINUX
, donde<swap_device>
es el volumen donde se encuentra la swap. En caso de encriptación/dev/mapper/cryptroot
, en caso de no haber encriptado/dev/sdXY
. - Agregar
resume_offset=<swap_file_offset>
, donde<swap_file_offset>
se puede obtener de distintas formas dependiendo del tipo de formato de la partición que usemos:
-
ext4
filefrag -v /var/safe/swapfile | awk 'NR == 4 { gsub(/\./, "", $4); print $4 }'
-
BTRFS
Es un poco más complicado de determinar. Tendremos que instalar
gcc
al menos temporalmente y luego correr estos comandos:curl -LO https://raw.githubusercontent.com/osandov/osandov-linux/master/scripts/btrfs_map_physical.c gcc -O2 -o btrfs_map_physical btrfs_map_physical.c ./btrfs_map_physical /var/safe/swapfile | awk 'BEGIN{ "getconf PAGESIZE" | getline psize } NR == 2 { print $9/psize }'
Luego de obtener el número e ingresarlo en la configuración de GRUB podemos "limpiar" nuestra instalación borrando los archivos creados con
rm
y eliminando las gcc, si ya no lo usaremos conpacman -Rs
.
6.10.2 Instalar
Una vez editado /etc/default/grub
, instala GRUB con:
grub-install --target=i386-pc --recheck /dev/sdX grub-mkconfig -o /boot/grub/grub.cfg
6.11 Contraseña de root
Cambia la contraseña del usuario root con el comando passwd
.
7 Finalización
Si lo deseas puedes olvidar todos los comandos ingresados para la instalación con history -c && rm /root/.bash_history
.
Ya puedes reiniciar tu sistema ingresando primero exit
y luego reboot
.
8 Hackware-boot tool
Tu instalación ya está completamente encriptada. La encriptación del almacenamiento interno de un equipo protege ante ataques fuera de línea, como el acceso a la información por medio de la sutracción de un equipo o sus medios de almacenamiento. Sin embargo existe el riesgo de un tipo de ataque más sofisticado conocido como evil-maid.
Para protegerse ante este tipo de ataques se recomiendan estas medidas:
- Usar una contraseña diferente para
/boot
y/
. - Proteger el acceso a la configuración de la BIOS y el booteo de medios no apropiadamente identificados con una contraseña.
- Hacer el sistema tamper-evident, por medio de la verificación de los archivos cargados en el inicio temprano del sistema.
Para configurar fácilmente las últimas dos puedes usar la herramienta hwbtool
.
- Instala el paquete
flashrom
. - Copia el binario compilado de la utilidad de coreboot,
cbfstool
(desdecoreboot/util/cbfstool
) a/usr/local/sbin/
. - Copia hwbtool a
/usr/local/sbin/
.
Reinicia agregando el parámetro del kernel iomem=relaxed
a la línea de arranque de GRUB en tu sistema Parabola GNU/Linux-libre:
- Prende o reinicia tu equipo.
- Selecciona
[u] Unlock encrypted boot
o espera 2 segundos luego de que aparece el menú de GRUB. - Ingresa tu contraseña de
/boot
. - Espera unos segundos.
- Verás el menú de booteo de Parabola. Presiona
e
. - En la línea que comienza con
linux
, dirígete al final de ella e ingresaiomem=relaxed
. - Presiona <F10> para bootear Parabola.
- Espera que cargue, luego verás la pantalla de inicio de sesión.
- Presiona <Ctrl>+<Alt>+<F2> para acceder a una terminal.
- Inicia sesión con el usuario
root
.
Ahora podrás ejecutar hwbtool --grub
y seguir las instrucciones.
9 Optimizaciones
9.1 thermald y tlp
Mejoran el consumo energético y la vida útil de la batería. TLP es incompatible con power-profiles-daemon
, que viene activado por defecto en GNOME y tal vez algunos otros sistemas, por lo que probablemente debas deshabilitarlo.
9.1.1 Configuración recomendada Thinkpad
cat << EOF > /etc/tlp.d/10-battery.conf START_CHARGE_THRESH_BAT0=67 STOP_CHARGE_THRESH_BAT0=100 EOF
10 Licencia
CC0. Este documento es libre de copyright.