jueves, 3 de julio de 2014

Funtoo usando ZFS

Unas de las cosas que me pasó hace unos meses, es que me obstiné del KDE y decidí volver a instalar gnome o en su defecto cinnamon, sin embargo, era error tras error, y cada vez que solventaba un error aparecía otro y a parte había dejado de lado un proyecto que tenía que culminar y tenía a los clientes esperando, así que decidí con lagrimas en los ojos abandonar funtoo/gentoo por otra distro que me brindara gnome y fuera un poco más rápida a la hora de configurarla, por lo que inicié mi ardua tarea de probar distros:
  • Red Hat Linux 6 o 7: debido a que la empresa donde trabajo es aliado RH, decidí usar mi usuario para descargarme las versiones RH, sin embargo, la 6 es muy vieja en paqueteria y la 7 es algo más nueva pero igual no me sentí cómodo con las versiones, por lo que asi como la instalé la desinstalé :).
  • Fedora: es una distro que instalé, sin embargo no me hallaba dentro de ella, la forma de configuración, la forma de personalizarla, etc. no eran del todo agradables para mi, por lo que luego de un día la eliminé.
  • Sabayon: Como usuario gentoo, me decidí por sabayon, que supuestamente es mas enfocado a usuario final y de verdad así es, pero los constantes problemas que tenía instalando paquetes usando equo y emerge, hicieron que la dejara de lado.
  • OpenBSD: esta realmente no es un linux, pero quería probar gnome-shell en openbsd, en verdad que hicieron un buen trabajo, pero no logré configurar mi tarjeta de red inalámbrica, por lo que la tuve que dejar, a aparte que no podía instalar algunos paquetes vitales, asi que la tuve que dejar muy a mi pesar.
  • Arch: luego de pensarlo por un rato, decidí usar arch, mi sorpresa es que ya tiene systemd y la instalación fue bastante rápida, se parece un poco a la de gentoo, luego de un corto periodo instalando y configurando tenía un S.O. totalmente funcional, por lo que decidí quedarme con ella para poder realizar un grueso de trabajo que tenía por delante y asi fue un gnome 3.12, un systemd, es una distro rolling release, por lo que me parecía apropiada para mi que me gusta utilizar versiones experimentales y más nuevas de diferentes paquetes. Fue una experiencia agradable, pero tengo que decir que extrañaba la utilización de los flags y de los eselect, a parte que el kernel montaba muchos módulos que no estaba utilizando, por otro lado, los paquetes AUR en algunas ocaciones eran demasiado inestables, el wally no me funcionaba, luego de actualizar el kernel se hacía dificil usar el KVM o el VirtualBox y así algunos detalles que se iban apilando, por lo que luego de culminar mis obligaciones decidí volver a instalar funtoo
Instalación de Funtoo:
    Como había decidido utilizar funtoo, vi que hay soporte nativo para ZFS, por lo que decidí probar usar un ZFS, no voy a hablar aqui sobre zfs y caracteristicas, solo puedo decir que junto con btrfs, es considerado uno de los sitemas de archivos de nueva generación, a parte que luego de leer un poco sobre ambos me incliné por zfs, más que todo porque esta documentada la instalación para funtoo, así que me arremangué las mangas nuevamente, me troné los dedo y me pusé a instalar mi nuevo funtoo.
    Cuando inicié la instalación me percaté que todavía usan OpenRC, esto es una limitante, aún no entiendo la negativa del grupo Gentoo/Funtoo para usar systemd por defecto, pero bueno, también tambien hay que considerar que las personas que contribuyen a gentoo y a funtoo son personas que no cobran por ello y lo hacen porque les gusta, bajo esta premisa, es un poco más comprensible que no hayan hecho la tarea de migración a systemd.
     Bueno dejando eso de lado, me quedo con mi OpenRC, así que me pongo a seguir el manual de zfs para funtoo, la instalación es bastante sencilla y muy parecida a la original, salvo que hay que utilizar los comando de zfs para crear el pool y las unidades zfs, cosa que no tiene mayor complicación, sin embargo lo que si me llama la atención es que utilizan una versión del kernel que se llama bliss-kernel, cosa que instalé sin embargo, me esta dando problemas con la tarjeta de sonido y con la tarjeta gráfica, por lo que decidí compilar el kernel a mano y colocarle las opciones que yo utilizo, para esto seguí un video viejo sobre la instalación del kernel , pero lo que no te dicen, es que luego de que tienes un kernel funcionando y decides actualizar o cambiar a un gentoo-sources o un vanilla-source, tienes que hacer algunas cosas, en mi caso gentoo-sources:
  • entrar en el archivo .config y agregar esta línea CONFIG_CRYPTO_ZLIB=y, para que esta otra funcione CONFIG_ZLIB_DEFLATE=y, porque si no van a tener problemas en siguiente proceso, luego de poner esas dos lineas se recompila el kernel
  • ahora con el kernel recompilado es necesario reinstalar los paquetes zfs zfs-kmod y spl, para que se creen dentro del kernel recien compilado los módulos para el siguiente paso,
  • luego ejecutamos bliss-initramfs para que nos cree el initrd, y el archivo generado lo copiamos dentro de /boot
  • yo siguiendo el manual de funtoo agregué estas líneas a mi /etc/boot.conf
"Funtoo ZFS" {
        kernel vmlinuz[-v]
        initrd initrd[-v]
        params root=tank/funtoo/root quiet
        # If you have an encrypted device with a regular passphrase,
        # you can add the following line
        params += enc_root=/dev/sda3 enc_type=pass
}
        Pero por alguna razón no funcionan con el bliss-kernel, sin embargo las deje allí. luego de los pasos anteriores hice un boot-update y me reconoce mi kernel, por lo que me senté a revisar mi configuración de grub.cfg:
set timeout=3

  insmod part_gpt
  insmod ext2
  set root=(hostdisk//dev/sda,gpt1)
  search --no-floppy --fs-uuid --set d88b1c30-ccec-48d8-8c1f-a7de04564520
if loadfont /grub/unifont.pf2; then
   set gfxmode=text
   insmod gfxterm
   insmod vbe
   terminal_output gfxterm
fi

set menu_color_normal=cyan/blue
set menu_color_highlight=blue/cyan

menuentry "Funtoo ZFS - vmlinuz-3.15.3-gentoo" {
  insmod part_gpt
  insmod ext2
  set root=(hostdisk//dev/sda,gpt1)
  search --no-floppy --fs-uuid --set d88b1c30-ccec-48d8-8c1f-a7de04564520
  linux /vmlinuz-3.15.3-gentoo root=tank/funtoo/root enc_root=/dev/sda3 enc_type=pass quiet
  initrd /initrd-3.15.3-gentoo
  set gfxpayload=text
}
menuentry "FuntooZFS - 3.12.22-KS.01" {
  insmod part_gpt
  insmod ext2
  set root=(hostdisk//dev/sda,gpt1)
  linux /kernels/3.12.22-KS.01/vmlinuz root=tank/funtoo/root enc_root=/dev/sda3 enc_type=pass quiet
  initrd /kernels/3.12.22-KS.01/initrd
}
set default=0

Como se puede ver solo agregúe la línea del initrd y luego agregué por si acaso la línea de el kernel-bliss, de tal manera que pueda seguir realizando arreglos si mi gentoo-sources falla.

Luego de reiniciar, todo anda perfectamente, ahora me voy a dar la tarea de migrar esto a systemd ya que si es mucho  más rápido para iniciar y tiene sus ventajas sobre openrc.