La aparición de los Chromebook ha permitido que surjan en el mercado portátiles muy atractivos, a precios similares a los que tenían los netbook, pero con un rendimiento muy superior a aquellos. Su otra gran ventaja es la duración de la batería, que puede llegar fácilmente a las 8 horas, en función siempre del uso que se les dé.

Sin embargo que su sistema operativo sea ChromeOS puede disuadir a muchos de comprarlos. No debe ser así a un fan de Linux, ya que en general es posible reemplazar el sistema ChromeOS por otro Linux.

En mi caso, me hice con un HP Chromebook 14 q000ns ‘Falco’, que es un portátil de 14″ cuyas características principales son un microprocesador Intel Celeron 2955U, memoria SDRAM DDR3L de 2 GB 1600 MHz (integrada) y disco duro SSD M.2 de 16GB. Vamos a ver cómo instalar Fedora Linux 20 en éste equipo.

Las siguientes instrucciones están dadas para alguien habituado a instalar Linux, en especial Fedora. Se trata de mostrar los detalles y puntos críticos que diferencian a esta instalación de un procedimiento estándar en un portátil con el disco duro vacío.

  1. Preparar el equipo
  2. Preparar la unidad USB de instalación
  3. Habilitando el modo de arranque SeaBIOS
  4. Instalación de Fedora
  5. Post-instalación
  6. Optimización de la unidad SSD
  7. Referencias

Preparar el equipo.

El primer paso, e indispensable, es hacer una copia de seguridad de tu Chromebook. Si te arrepientes de haber instalado Linux, siempre podrás recuperar el sistema operativo original. Incluso si estás a tiempo, devolverlo a la tienda en su estado original.
Dado que el proceso puede variar con el paso del tiempo, voy a hacer un resumen muy breve:

  • Busca un memoria USB o SD de al menos 4GB. Se usará para hacer una copia de recuperación. El contenido de la memoria será completamente destruido durante el proceso de creación del disco de recuperación.
  • En el Chromebook, localiza la aplicación Chromebook Recovery Utility. Instálala y procede a seguir los pasos que te indique.
  • Opcional: desde otro equipo, graba el disco USB en un fichero imagen a salvo, mediante el comando dd. Puede ser algo así:
    dd bs=128k if=/dev/sdX of=$HOME/chromebook.img

    donde /dev/sdX es el dispositivo que asigne el sistema a la unidad USB.

Preparar la unidad USB de instalación.

Se trata de una de las etapas más complicadas, porque los métodos tradicionales de preparar un USB de arranque no funcionan. Es necesario preparar un USB que arranque mediante GRUB2, y no mediante SYSLINUX, que el bootloader utilizado en CD y memorias USB preparadas desde CDs.

Los pasos a seguir para crear un LiveCD desde la imagen original de Fedora son:

  1. Bajarse la imagen del LiveCD que queremos bajar. Se puede instalar tanto la versión de 32 como la de 64 bits. Supongámos que instalamos la de 64 bits, desde Fedora-Live-Desktop-x86_64-20-1.iso.
  2. Mientras se baja, preparamos un USB de arranque. De nuevo hace falta un USB vacío (si has copiado la imagen) puedes usar el que usaste antes.
    • Formatea el disco como FAT32, y ponle etiqueta de volumen FEDORA20. Asegúrate de activarle la marca de bootable.
    • Se instala GRUB2 en el USB. Desde un equipo con Fedora 20, montamos el disco un directorio (si al enchufarlo se monta sólo, simplemente tomamos nota del directorio de montaje):
      mkdir ~/usb
      mount /dev/sdXX ~/usb -o uid=username,gid=users
      grub2-install --no-floppy --root-directory=~/usb /dev/sdX
    • Editamos el fichero del menú de arranque. En el caso del Fedora 20 LiveCD (32 ó 64 bits), el fichero ~/usb/boot/grub2/grug.cfg será:
      set default="1"
      function load_video {
        insmod efi_gop
        insmod efi_uga
        insmod video_bochs
        insmod video_cirrus
        insmod all_video
      }
      load_video
      set gfxpayload=keep
      insmod gzio
      insmod part_gpt
      insmod ext2
      
      set timeout=10
      
      search --no-floppy --set=root -l 'FEDORA20'
      menuentry 'Start Fedora Live' --class fedora --class gnu-linux --class gnu --class os {
      	linux /isolinux/vmlinuz0 root=live:LABEL=FEDORA20 ro rd.live.image quiet  rhgb 
      	initrd /isolinux/initrd0.img
      }
      menuentry 'Start Fedora Live in basic graphics mode' --class fedora --class gnu-linux --class gnu --class os {
      	linux /isolinux/vmlinuz0 root=live:LABEL=FEDORA20 ro rd.live.image quiet  rhgb nomodeset
      	initrd /isolinux/initrd0.img
      }

      Observa que la etiqueta de volumen que figura en el fichero es FEDORA20. Si has usado otra, debes ponerla en el fichero.

  3. Una vez se ha haya descargado la imagen del LiveCD, la montamos y copiamos los directorios isolinux y LiveOS en el USB:
    mkdir ~/iso
    mount -o loop Fedora-Live-Desktop-x86_64-20-1.iso ~/iso
    cp -avR ~/iso/isolinux ~/iso/LiveOS ~/usb
  4. Una vez terminado, liberamos los puntos de montaje y ya estamos listos para volver al Chromebook:
    umount ~/usb
    umount ~/iso
    eject /dev/sdX
  5. Prueba el USB en un PC o portátil corriente: debe arrancar Fedora en modo Live. Si no arranca, revisa los pasos anteriores a ver qué ha podido ir mal.

Habilitando el modo de arranque SeaBIOS.

Para poder arrancar un sistema operativo que no sea ChromeOS es necesario poner el dispositivo en modo desarrollador. Esto es necesario para habilitar el simulador de BIOS SeaBIOS y así arrancar cualquier sistema operativo aunque no esté firmado por Google.

hp-chromebook-14-falco-640x280-2

Dado que esta operación implica utilizar diferentes combinaciones de teclado, es conveniente tener clara la ubicación y significado de las teclas de función en un Chromebook. Éste es el significado de las teclas en ChromeOS, que en cualquier caso se puede consultar en Chromebook: Funciones del teclado:

[Previous] F1
Ir a la página anterior del historial de navegación.
[Next] F2
Ir a la página siguiente del historial de navegación.
[Refresh] F3
Volver a cargar la página actual.
[FullScreen] F4
Acceder al modo de inmersión, que oculta las pestañas y la barra de aplicaciones (pantalla completa).
[PageFlipper] F5
Acceder al modo de vista general, que muestra todas las ventanas.
[DecreaseLight] F6
Bajar el brillo de la pantalla.
[IncreaseLight] F7
Subir el brillo de la pantalla.
[Mute] F8
Silenciar.
[DecreaseVolume] F9
Bajar el volumen.
[IncreaseVolume] F10
Subir el volumen.
[Search] Super
Buscar en las aplicaciones y en la Web a la vez. En un Chromebook, esta tecla se encuentra en un extremo del teclado, donde suele estar la tecla Bloq Mayús de los ordenadores tradicionales. Si utilizas un teclado común, la tecla de Windows situada entre las teclas Ctrl y Alt funcionará como tecla de búsqueda.
Para activar temporalmente el bloqueo de mayúsculas, pulsa Alt y la tecla de búsqueda.

Durante la siguiente parte nos referiremos a estas teclas como si fueran F1-F10, para simplificar la notación. Se procede de la siguiente manera:

  1. Arrancar el Chromebook a la vez que se mantienen pulsadas las teclas [Esc]+[F3] hasta que arranque. Esto pone el equipo en modo de recuperación.
  2. Pulsar [Ctrl]+[D], y el sistema pedirá confirmación. A partir de este punto se reformateará todo el equipo, perdiendo su contenido e instalando una nueva ‘encarnación’ de ChromeOS que funciona en modo desarrollador.
  3. Cuando termine y se reinicie el sistema mostrará una pantalla para orientarle a volver al modo normal pulsando [Espacio]. Ahí mismo, pulse [Ctrl]+[D] y entraremos en ChromeOS en modo desarrollador. Desde ahí, y sin llegar a dar de alta nuestra cuenta, pulsaremos [Ctrl]+[Alt]+[F2] para abrir un terminal virtual de Linux. Podemos volver al modo gráfico con [Ctrl]+[Alt]+[F1] (sí, como en Linux).
  4. Entramos con la identidad chronos, sin contraseña, y conseguimos acceso como root mediante el comando sudo, para activar el modo legacy y el arranque desde USB:
    sudo -i
    crossystem dev_boot_usb=1 dev_boot_legacy=1

    Reiniciamos y a partir de este momento tenemos disponibles tres opciones al arrancar (que no se muestran en pantalla):

    1. Pulsar [Ctrl]+[L] (de Legacy Mode) para activar SeaBIOS y arrancar desde la USB.
    2. Pulsar [Ctrl]+[D] (de Developer Mode) para entrar en ChromeOS en modo desarrollador.
    3. Pulsar [Espacio] para restaurar ChromeOS en modo norma: vuelve a formatear todo al estado inicial del equipo.

    Cuando instalemos Fedora ya no tendrá sentido la segunda opción, y para volver al modo normal necesitaremos la USB de recuperación. Por ahora, para poder arrancar el USB de instalación necesitaremos pulsar [Ctrl]+[L].

Instalación de Fedora.

Prepara un ratón USB: Fedora 20 no reconoce el touchpad del Chromebook, así que lo necesitarás para manejarte cómodamente. Además ten a mano la contraseña del punto de acceso WiFi para poder conectarte a Internet (podría hacerlo, pero ya configura todo desde aquí).
Si en el arranque has puesto ya la memoria USB con el Fedora Live Desktop, y has pinchado el ratón, sólo tienes que pulsar [Ctrl]+[L] y dejar que el sistema arranque por sí sólo.
Se cargará Fedora de forma normal y entrarás como un usuario de prueba. Revisa que todo vaya bien. Debe funcionar todo menos el touchpad. Las teclas de función no serán tales sino que tendrán el significado de la tecla correspondiente (brillo, volumen, etc.). La WiFi, el Bluetooh, la webcam, el micrófono, los altavoces y el lector de tarjetas SD deben funcionar de serie.
Configura los parámetros básicos: red, hora, zona horaria, idioma y nombre del equipo. Entonces ya pasa a instalar Fedora en el disco duro.
¿Hiciste el USB de recuperación? Entonces formatea el disco duro a tu antojo sin problema. Usa tu esquema de particionamiento favorito, sabiendo que sólo dispones de 16GB. Éste fue el mío:

  • Particionamiento estándar.
  • Partición /boot de 250MB, ext3.
  • Partición swap de 1.5GB.
  • Partición / con el resto del disco duro, ext4.

Al instalar desde un USB a un SSD, el proceso de instalación es bastante rápido. En unos 15-20min ya tienes el sistema instalado en tu Chromebook. Cuando termine, apaga el equipo, saca la memoria USB y vuelve a arrancar.
A partir de ahora, cada vez que arranques el equipo se quedará atascado en la pantalla inicial, pidiendo restaurar el sistema. Pulsa [Ctrl]+[L] e iniciará la secuencia de arranque BIOS, y se cargará el sistema Fedora.
A partir de aquí tendremos que personalizar la instalación para conseguir que funcione de manera adecuada. Los pasos los he dividido en dos bloques:

  • Post-instalación: pasos a realizar para que la relación entre el hardware y el software funcione como se espera.
  • Optimización: adecuación de los parámetros, principalmente del SSD, para optimizar y alargar la vida del equipo.

Post-instalación.

hp-chromebook-14-falco-640x280-3El primer paso es actualizar todo y reiniciar el sistema. Como superusuario escribimos:

yum -y update && reboot

El siguiente paso no lo realizaremos: parchear el kernel para que reconozca el touchpad. Los parches que te puedes encontrar están incorporados en la rama 3.17 del kernel. Actualmente Fedora 20 usa una kernel 3.16 y a principios de diciembre se liberará liberará Fedora 21 con el kernel 3.17 de serie. Personalmente, prefiero aguantar dos meses usando el ratón que parchear el núcleo y recompilar dicho parche cada vez que me actualicen el kernel. Cuando salga Fedora 21 ya os contaré qué pasa.

Adaptar parámetros de arranque.

Se deben introducir una serie de cambios en las opciones de arranque:

  • Desactivar módulos EHCI_PCI y TPM, porque impiden que el equipo entre en modo de suspensión de forma correcta.
  • Reducir el tiempo de espera del menú de inicio del sistema, de 5 a 3 minutos.

Esto lo haremos editando el fichero /etc/default/grub y revisando que contenga las siguiente opciones:

GRUB_TIMEOUT=3
GRUB_CMDLINE_LINUX="$GRUB_CMDLINE_LINUX tpm_tis.interrupts=0 modprobe.blacklist=ehci_pcie"

Y pasamos esta configuración al fichero grub.cfg mediante los siguientes comandos:

cd /boot/grub2
cp -a grub.cfg grub.cfg.bak
grub2-mkconfig -o grub.cfg.new
cp -a grub.cfg.new grub.cfg

He detallado los pasos para remarcar la recomendación de hacer una copia de seguridad del fichero grub.cfg que reemplazamos por si nos equivocamos en algo. Antes de sustituir el fichero grub.cfg es muy recomendable editarlo y revisar que todo esté correcto, o quizá el sistema no arranque de nuevo. Si todo está bien arrancamos el equipo de nuevo.

Modificando el mapa del teclado.

Si bien Fedora 20 mapea por defecto las teclas de forma correspondiente a la leyenda de las teclas, esta distribución no es la más adecuada para un sistema Linux. En concreto me parece recomendable:

  • Habitar al menos un terminal virtual y la posibilidad de cambiar del terminal al modo gráfico. Sin teclas de función esto no es posible.
  • Ajustar alguna tecla a un uso más código de tecla más usado en Linux con un significado similar.

Creamos el fichero /usr/lib/udev/hwdb.d/90-chromebook-keyboard-fix.hwdb con este contenido (ojo con el espacio delante de KEYBOARD_KEY_xx, sin él este fichero no es válido):

a# Chromebook 14 fix
keyboard:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnFalco:pvr*
 KEYBOARD_KEY_3b=f1              # F1
 KEYBOARD_KEY_3c=f2              # F2
 KEYBOARD_KEY_3d=f5              # F5: significa actualizar en la mayor parte de aplicaciones
 KEYBOARD_KEY_3e=f11             # F11 : Tecla habitual en GNOME para entrar en FullScreen
 KEYBOARD_KEY_3f=leftmeta        # Tecla Windows
 KEYBOARD_KEY_db=capslock        # CapsLock

Una vez editado se procesa el fichero y se activan los cambios:

udevadm hwdb --update
udevadm trigger
Comportamiento del apagado y terminales virtuales.

Vamos a cambiar el comportamiento del cierre de pantalla, el botón de apagado. Editamos el fichero /etc/systemd/logind.conf y nos aseguramos que contiene las entradas:

[Login]
NAutoVTs=2
ReserveVT=2
HandlePowerKey=poweroff
HandleHibernateKey=ignore
HandleSuspendKey=ignore
HandleLidSwitch=ignore

Esta secuencia reduce a dos los terminales virtuales, accesibles con [Ctrl]+[Alt]+[F1] y [Ctrl]+[Alt]+[F2]. Mantenemos la posibilidad de apagar con al tecla de apagado, pero se deshabilita la posibilidad de suspender o hibernar el equipo.

Optimización de la unidad SSD.

Es recomendable introducir algunas opciones para alargar la vida del disco SSD.

  • Configurar el algoritmo de planificación de E/S. Por defecto es CFQ, que aporta poco beneficio en un disco SSD donde el tiempo de acceso es el mismo para todos los sectores. Es preferible utilizar otros como NOOP o Deadline.
    Para ello vamos a crear el fichero /etc/udev/rules.d/60-io-schedulers.rules y escribimos

    # set deadline scheduler for non-rotating disks
    ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"

    Podemos ver si la configuración se ha aplicado correctamente reiniciando el equipo y consultando el algoritmo de planificación E/S que está usando el sistema:

    cat /sys/block/sda/queue/scheduler
    noop [deadline] cfq

    Por contra si vemos como opera un disco USB externo, lo pinchamos, le damos un tiempo y escribimos

    cat /sys/block/sdb/queue/scheduler
    noop deadline [cfq]
  • Se debe tomar minimizar el uso de la memoria swap al mínimo posible. Para ello configuramos el fichero /etc/sysctl.d/99-sysctl.conf:
    vm.swappiness=1
    vm.vfs_cache_pressure=50
  • Modificar las opciones de montaje de las particiones para reducir la cantidad de escrituras que se hacen en el disco. Para ello se incluyen las opciones noatime y nodiratime. La importacia de usar la opción noatime es que elimina la necesidad de que el sistema escriba en el sistema de ficheros del cual simplemente se está leyendo.
    Editamos el fichero /etc/fstab para incluir estas opciones, como aquí:

    UUID=xxxxx /     ext4 defaults,noatime,nodiratime,discard 1 1
    UUID=xxxxx /boot ext3 defaults,noatime,nodiratime         1 2
  • Verificamos si la unidad soporta el comando TRIM, que impide que el rendimiento del SSD se degrade con el paso del tiempo. Para ello escribimos:
    hdparm -I /dev/sda | grep TRIM
    * Data Set Management TRIM supported (limit 8 blocks)

    En caso positivo, introducimos la opción discard en los sistemas de ficheros Ext4, Btrfs, JFS, VFAT y XFS, como en el ejemplo anterior.

Referencias.