viernes, 25 de diciembre de 2015

¿Cómo instalo Libreboot en mi IBM Thinkpad X60 o Lenovo T60?

Vean señores; por lógica necesidad del actual estado de cosas, el software libre corre normalmente sobre un hardware privativo. Los controladores libres se escriben, las estructuras se consolidan, pero siempre frente a proveedores privativos de hardware.
Si el hardware es privativo y su diseño cerrado, qué otra cosa podemos esperar del software que se integra en él para su funcionamiento. Nos encontramos entonces frente a la paradoja de "lo menos malo": utilizar software libre en hardware cerrado, con firmware privativos.

En nuestro camino de Conducción Orgánica del Movimiento en un ambiente de absoluta libertad, nos topamos entonces con la realidad coyuntural de que en la enorme mayoría de los casos, por mas que instalemos software libre en nuestro sistema, el firmware o la BIOS del mismo suele ser privativa, y sólo dable de modificar por el fabricante... Esto ha de ser remediado, pero son pocos los equipos que cuentan con la posibilidad siquiera de montar BIOS libres.

La BIOS es el sistema básico de entrada/salida de nuestro ordenador, una supramemoria de configuración que actúa al más alto nivel; esto es, siquiera antes que el sistema operativo arranque. Es el cimiento sobre el cual se erige todo sistema computacional moderno. En muchos equipos informáticos complejos, esta BIOS se encuentra escrita en un chip tipo EEPROM alimentado por una pila botón que permite guardar su contenido aunque se apague el sistema.


La historia nos está demostrando  - y cada vez con mayor rapidez - que el hardware libre será, una realidad insoslayable. Hoy contamos con algunos equipos limitados: computadoras en plaqueta de arquitectura ARM, sistemas embebidos de diseño abierto, sistemas en un solo circuito integrado, etc. Con el tiempo no será extraño que cada individuo pueda disponer de arquitecturas abiertas de potencia para desarrollar su informática libre golpeando allí donde más duele al imperialismo: en el bolsillo.

Sin embargo, no todo queda en manos del futuro: existen posibilidades de contar hoy con hardware de aceptable potencia, con BIOS completa y absolutamente libre si nos damos maña con ellos. Tal es el caso de la notebook IBM ThinkPad X60, también comercializada con distinto identificador de hardware y marca, como Lenovo T60. Se trata de un equipo portátil de arquitectura x86_64, antiguo mas no obsoleto, e indudablemente más potente que otras plaquetas utilitarias de arquitectura ARM o MIPSel que podríamos conseguir también. Fundamentalmente debemos inclinarnos ante el hecho de ser una de las pocas laptops capaces de recibir una BIOS totalmente libre.

La X60/T60 nos permitirá realizar esta hazaña por la liberación total del pueblo, su hardware y su software. Se trata de una veterana notebook de trabajo que conseguimos usada pujando hasta conseguir un precio popular. Está dotada con pantalla TFT LCD 4:3 de 14 pulgadas y 1024x768 pixels de resolución. El video es Intel 945GMA con salida SVGA. Sin dudas destaca su excelente teclado resistente, unos 2GB de memoria, y disco rígido HDD SATA de 160GB. La CPU es un veterano Intel Core 2 Duo, de doble núcleo. Trae una lectograbadora de DVD, así como tres puertos USB2 y uno PCMCIA (no evaluado). El dispositivo señalador es un trackpoint especie de joystick en forma de bolita roja localizado en la parte central del teclado entre las teclas "v" y "b", provisto de dos botones. La BIOS original es privativa, ya sea nomenclada bajo marca IBM o Lenovo. El sistema operativo que se integraba originalmente en la misma era un mediocre y lento Micro$soft Window$ Vi$ta de 32 bits. La batería original es la anquilosada IBM ML-X61 con un cargador de 14,4 voltios.

Al modificar la ThinkPad X60/X60s para dotarla con una BIOS completamente libre llamada LibreBoot, y opcionalmente reemplazando su placa Wifi Intel 3945abg por una Atheros, contaremos ya con un hardware completamente libre de pies a cabeza, en la cual montaremos un sistema operativo derivado de Ubuntu, pero con un kernel Linux totalmente libre. Dicho sistema operativo es Trisquel 7 Belenos GNU/Linux.

Todo procedimiento de cambiar una BIOS original por una versión actuaizada suele ser riesgoso. Lo suele ser mucho más cambiar una BIOS original por otra libre. En este caso, os asistiré, pero tengan en cuenta que siempre radica la posibilidad de inutilizar completamente el equipo. Si se tienen dudas no debe hacerse el procedimiento. En particular el Justicialismo cree que hackear es libertar, por lo tanto procederemos con la valentía de quien sigue la senda del Socialismo Nacional. En este caso obligatoriamente conectamos el equipo a la red eléctrica por medio del cargador CA correspondiente, y lo conectamos a internet por medio de un cable LAN/Ethernet.

Primero reemplazaremos el peligroso Window$ Vi$ta e instalamos un sistema operativo libre, acorde para reescribir la BIOS. En este emplearemos como sistema operativo Trisquel 7 LTS Belenos de 64 bits con sus opciones normales, pero podremos utilizar cualquier distro basada en Debian

Trisquel 7LTS Belenos es una distribución afianzada por la Fundación de Software Libre, en la cual -  a diferencia de Ubuntu - nos encontraremos con un Kernel completamente libre, y la inexistencia total de software o controladores privativos. Podremos formatear el disco rígido e instalarla (20 minutos aproximadamente en este equipo) o podremos arrancarla en modo LiveCD y trabajar. En nuestro caso decidimos por formatear el disco para estar más seguros.

Por lo demás, es una distribución GNU/Linux totalmente funcional. Una vez arrancado Trisquel normalmente, nos encontraremos con un típico escritorio Gnome.
En primer lugar vendrá siempre bien descargar dependencias necesarias para operar en la programación de la BIOS, y ello lo haremos desde la conexión cableada a internet, pues la placa Wifi original no será detectada por Trisquel. . Abrimos una terminal con Ctrl+Alt+T e ingresamos:

sudo apt-get update
sudo apt-get upgrade
sudo ./deps-trisquel


En segundo lugar, descargaremos las utilidades de trabajo y el BIOS libre Libreboot (podremos encontrar la última versión sin complicaciones es la r20150208 aquí). Podremos descargarla utilizando la terminal Linux de Trisquel, con los comandos de organización que correspondan a nuestro equipo. Utilizamos entonces:



cd ~/Descargas/
wget http://mirrors.mit.edu/libreboot/20150208/libreboot_bin.tar.xz
tar -xJf libreboot_bin.tar.xz
cd ~/Descargas/libreboot_bin/

En la carpeta ~/Descargas/libreboot_bin/bin/ encontraremos multitud de archivos ROM, los cuales comprenden diferentes versiones de las BIOS libres para distintos tipos de placa madre/notebooks. En nuestro caso, al disponer de una IBM ThinkPad X60 o X60s emplearemos los archivos ROM contenidas dentro del directorio ~/Descargas/libreboot_bin/bin/x60/. Si tuviésemos una Lenovo T60 deberíamos emplear una de las ROMs dentro del directorio ~/Descargas/libreboot_bin/bin//t60/.

Para ello ingresamos ahora:

cd ~/Descargas/libreboot_bin/bin/x60/

...y buscamos la ROM que corresponda a nuestro equipo según el teclado y características generales. Encontraremos versiones de teclado QWERTY o Dvorak, tanto para los Estados Unidos (us), el Reino Unido (uk), Francia (fr), o Sueco (svenska). También encontraremos versiones de BIOS solo texto ("txtmode") o con gráfica Framebuffer VESA ("vesafb"). En nuestro caso, escogeremos la ROM para la IBM ThinkPad X60 con teclado QWERTY, en inglés estadounidense, con gráfica Framebuffer VESA. Dicho archivo es el designado x60_usqwerty_vesafb.rom.

Como tercer medida, procederemos al respaldar la BIOS original de nuestra Thinkpad X60/Lenovo T60, por las dudas. En vista de ello ingresamos:

cd ~/Descargas/libreboot_bin/flashrom/x86_64/

...y ejecutamos estos dos comandos:

sudo ./flashrom_lenovobios_sst -p internal -r factory.bin 
sudo ./flashrom_lenovobios_macronix -p internal -r factory.bin

Estos dos comandos hará que el sistema lea el contenido binario de la BIOS actual de nuestra portátil y lo grabe en el disco rígido, específicamente en un archivo binario de emergencia llamado factory.bin dentro de la carpeta ~/Descargas/libreboot_bin/flashrom/x86_64/. Conviene pasar este archivo en algún medio extraible como un pendrive, por si tenemos que hacer alguna acción de restauración posterior, o por si algo sale mal.

Primer escritura de la BIOS Libreboot
Completado la serie de pasos previos, escribiremos en la memoria FLash/EEPROM la BIOS libre Libreboot. Para eso debemos ejecutar dos instancias de escritura ("flasheo"). En el caso de la ThinkPad X60 la primer instancia consiste en ejecutar:

cd ~/Descargas/libreboot_bin/
sudo ./lenovobios_firstflash bin/x60/x60_usqwerty_vesafb.rom 

...en cambio, en el caso de la Lenovo T60 la primer instancia consiste ene ejecutar.

cd ~/Descargas/libreboot_bin/
sudo ./lenovobios_firstflash bin/t60/t60_usqwerty_vesafb.rom 

Es primordial aguardar que el proceso de escritura de la BIOS finalice completamente. Tengamos presentes que es normal que el sistema nos devuelva mensajes de error tipo "critical error" durante la ejecución de la escritura de la memoria Flash con la BIOS no original. Debemos ser peronistas y no temer a nada, pues todo habrá de hacerse en aras de la completa liberación. De hecho aparecerán errores si el proceso es exitoso. Por ejemplo podría aparecer el mensaje:
Updated BUC.TS=1 - 64kb address ranges at 0xFFFE0000 and 0xFFFF0000 are swapped.
Si este mensaje no apareciese, no apague la notebook, y corra nuevamente el script correspondiente, o llegado el caso, utilice una versión sin gráfica VESA Framebuffer (por ejemplo, el fichero de ROM llamado x60_usqwerty_txtmode.rom) para la acción de la escritura de la BIOS Libreboot.

Ahora bien, estos errores aparecieron durante el proceso de escritura correcto de LibreBoot.
...Si los errores devueltos en pantalla son aproximadamente los indicados, significará no obstante que se ha tenido éxito. Podrá apagar el equipo (no lo reinicie, apáguelo). Aguarde al menos unos 20 segundos , para asegurar que la memoria RAM se borre completamente. Y luego reencienda el equipo. Libreboot debería arrancar, y si instaló la versión gráfica, lo hará mostrando al fumanchero GNU levitando.

Será este el momento de gritar al cielo un estruendoso ¡VIVA PERÓN!

En la ThinkPad X60 es normal que al arrancar Libreboot por primera vez lo haga con el brillo de pantalla al mínimo. Utilizaremos la combinación de teclas Fn+Home para restituir el brillo al nivel deseado.

Trackpoint
Una vez que arranque Trisquel 7, podremos evaluar el sistema en general y  comprobar que todo funcione. En algunas ocasiones, puede que el que el trackpoint no funcione. En mi caso no me molesta pues el mouse USB funciona perfectamente. Pero en el caso de que deseemos dejarlo funcionando, entramos a la terminal con Ctrl+Alt+T e ingresamos:

cd ~/Descargas/libreboot_bin/nvramtool/


sudo ./nvramtool -w trackpoint=Enable

...y reiniciamos el equipo con:

reboot

Si al arrancar de nuevo aún no funcionase el trackpoint, habremos de hacer un procedimiento específico para nuestro modelo de portáil. Si tuviésemos la IBM Thinkpad X60 podremos probar con:

cd ~/Descargas/libreboot_bin/nvramtool/
sudo ./nvramtool -y ~/Descargas/libreboot_bin/x60cmos.layout -w trackpoint=Enable

...en cambio, si tuviésemos la Lenovo T60, usaríamos:

cd ~/Descargas/libreboot_bin/nvramtool/
sudo ./nvramtool -y ~/Descargas/libreboot_bin/t60cmos.layout -w trackpoint=Enable

Segunda escritura de la BIOS Libreboot
Ahora que tenemos instalado Libreboot, debemos escribir por segunda vez para remover la BIOS IBM/Lenovo original totalmente del sistema. Esto equivaldría a una segunda presidencia de Perón. Para ello abrimos una terminal e ingresamos:

cd ~/Descargas/libreboot_bin/
sudo ./lenovobios_secondflash bin/x60/x60_usqwerty_vesafb.rom

...o si tenemos la Lenovo T60 usamos:

cd ~/Descargas/libreboot_bin/
sudo ./lenovobios_secondflash bin/t60/t60_usqwerty_vesafb.rom

...la terminal debería devolvernos algo como:
Ahora apagamos completamente el equipo, esperamos unos veinte segundos, y lo volvemos a iniciar. Al arrancar nuevamente Trisquel, podremos decir que contamos con BIOS libre y sistema operativo absolutamente libre.
Es en este momento que aprovechamos para remover las etiquetas de Window$ que pululaban el equipo, y los reemplazamos por gran cantidad de stickers de la FSF, Libreboot, Kernel Libre, etc.

Otras mejoras:

Hasta aquí, ninguna de los procedimientos de cambio de la BIOS Libreboot requirió desarmar el equipo. Pero en nuestro caso el empleo del sistema ha demostrado ser tan sólido por medio de software y BIOS 100% libre, que nos hemos propuesto abrir la veterana portátil y hacerle algunas mejoras de hardware. En primer lugar reemplazamos la vieja placa inalámbrica Intel 3945bgn WiFi por una Atheros mPCI Wireless-N. La antigua placa Wifi requería blobs de software propietario (lo que la hacía incompatible con Trisquel GNU/Linux) y calentaba mucho, mientras que la nueva Atheros AR5B91 es reconocida por los controladores absolutamente libres de Trisquel, amén de ser mucho más fría y funcionar con los estandares Wifi N modernos. Su consumo es sensiblemente menor.
Su instalación en el equipo lleva unos 10 minutos, y requiere desatornillar el chassis inferior de la portátil, extraer la placa-teclado y la tapa-chassis con cuidado, y desatornillar la miniplaqueta provista de fábrica con sus dos cable-antenas, para luego reponer  la nueva en su lugar de la misma forma que estaba puesta la anterior.
Como el resto del equipo no presenta dificultades, aprovechamos para higienizar todo el interior del equipo con aire comprimido, colocar nueva grasa siiconada refrigerante al disipador/ventilador de la CPU, lubricar su funcionamiento, y ponerle 2GB SODIMM DDR2 más de memoria, para totalizar unos 4GB de RAM, lo máximo que acepta la placa madre. También cambiamos el disco rígido SATA de 160GB convencional por un rápido disco de estado sólido Kingston SSD de 120GB.
Asimismo, conseguimos una batería de nueva factura del modelo ML:X61, con 8 celdas y 5200 miliamperes de carga, provee y 75 watts/hora.
Volvemos a instalar Trisquel 7 en el SSD (solo tarda 8 minutos en el SSD), y ya contamos con Wifi N libre para mayor comodidad. La plaqueta de Wifi no requiere instalación de software alguna, Trisquel la reconoce sin problemas y nos permite conectarnos a todo tipo de redes wifi. Asimismo, el equipo reconoce la nueva memoria instalada. El buen resultado que nos da el disco SSD Kingston nos hace actualizar un segundo equipo con la misma facilidad que el primero
Solucionar el zumbido de la notebook.
La BIOS Libreboot provoca la emisión de ciertos ruidos de zumbidos agudos de la CPU en ocasiones, lo cual no deja de ser molesto. Afortunadamente tal problema está documentado y se soluciona a través de un software librellamado powertop.

En cualquier distribución derivada de Debian podremos instalar Powertop desde la terminal, con los siguientes comandos:

sudo apt-get update
sudo apt-get install powertop
sudo powertop --auto-tune

También lo podemos ejecutar sin parámetros, y luego ir a la opción "Tunables" y disponer todas las opciones que aparezcan en "good".

Ahora bien, si usamos Trisquel anterior a la versión 7, como por ejemplo el Trisquel 6 Tutatis, la versión de Powertop que cargue el sistema será algo vieja, debemos ejecutarla al arranque. Para ello Libreboot cuenta con un script específico. Abrimos una terminal y corremos los siguientes Comandos de Organización:

cd /Descargas/libreboot_bin/
./powertop.trisquel6

Este script preparará al comando powertop para que se ejecute toda vez que se dé inicio al sistema.

En todo caso, habremos de tener en cuenta que powertop no funcionará inmediatamente, debe recoger ciertos datos antes de implementar sus características, las cuales se almacenarán en /var/cache/powertop/saved_parameters.powertop. Deje al equipo trabajando con la batería por un tiempo, y powertop comenzará a funcionar correctamente luego de algunos minutos.

Actualizar Libreboot BIOS:

Una vez que tenemos instalado la BIOS Libreboot, será mas sencillo cargar una nueva versión de la misma en el futuro. Simplemente debemos descargar la nueva versión como hicimos inicialmente, y luego ejecutar el comando flash para escribir la BIOS, de la siguiente manera:


cd ~/Descargas/libreboot_bin/
sudo ./flash bin/ruta/de/bios/nueva/

10 comentarios:

  1. Compañero, la T60 no permite instalar X64. Por qué podría ser? hay que realizar todo el procedimiento pero con el i686?

    ResponderEliminar
    Respuestas
    1. Estimado Federico: Dependiendo de la versión de microprocesador que tenga instalado su equipo. En el caso del equipo mencionado dispone de uno Intel Core 2 Duo. Existen versiones dotadas de microprocesador de la serie "T", el cual -como bien dice- deberá encarar bajo arquitectura x86.
      Puede evaluar su microprocesador y las características del mismo inicializando Trisquel de 32 bits x86 y corriendo el comando lscpu en la terminal.
      Atte.
      Juan Perón

      Eliminar
  2. Compañero, se trata de un "core duo" T2400. Supuestamente dicho procesador no tiene arquitectura x64. Trisquel x64 me informó que debía correr un sistema para i686. Mi pregunta radica en la posibilidad de realizar el resto del procedimiento (libre boot) aun con un sistema de 32bit.

    ResponderEliminar
    Respuestas
    1. Estimado Federico,

      Ambos microprocesadores son similares en lo básico, pero difieren en arquitectura y conjunto de instrucciones, el el caso del Core Duo T2400 deberá emplear el resto del procedimiento empleando la arquitectura i686, y deberá utilizar la versión de 32 bits de Trisquel 6 o 7 (la que usted prefiera). Si tiene poca memoria, estará más cómodo con la veterana versión 6.

      Las herramientas que aquí se nombran son multiplataforma en el sentido que cada programa se incluye con herramental para arquitectura de 64 bits "x86_64", y de 32 bits (indicada como "i686" o como "x86" a secas dependiendo el programa). Ello lo encontrará en las carpetas correspondientes.

      Por ejemplo, en su caso con la T60 empleará la BIOS que se encuentra en:

      ~/Descargas/libreboot_bin/bin/t60/t60_usqwerty_vesafb.rom

      acto seguido respaldará su BIOS original con el programa de 32 bits correspondiente:

      cd ~/Descargas/libreboot_bin/flashrom/i686/
      sudo ./flashrom_lenovobios_sst -p internal -r factory.bin
      sudo ./flashrom_lenovobios_macronix -p internal -r factory.bin

      Recuerde que el procedimiento de escritura de BIOS no oficial puede inutilizar completamente el sistema. Si está de aceurdo continue bajo su propio riesgo escribiendo la BIOS Libreboot con:

      cd ~/Descargas/libreboot_bin/
      sudo ./lenovobios_firstflash bin/t60/t60_usqwerty_vesafb.rom

      Aguarde a que termine el procedimiento. Lea bien el artículo pues el sistema suele devolver errores a pesar de que la escritura es exitosa. Luego apague el equipo. Aguarde un par de minutos y reenciéndalo.

      Al iniciar, ingrese la segunda tanda de escritura de BIOS:

      cd ~/Descargas/libreboot_bin/
      sudo ./lenovobios_secondflash bin/t60/t60_usqwerty_vesafb.rom

      Adicionalmente encontrará en el artículo los procedimientos para detener el silbido de la CPU (efectivo) y corregir problemas de trackball en Trisquel.

      Atte.

      Juan Perón

      Eliminar
  3. General, una pregunta mas. Ahora no estoy frente a la thinkpad, pero si mal no recuerdo tiene ATI GPU. En un artículo de libreboot advierte:
    "The reason that the ATI GPU on T60 is unsupported is due to the VBIOS (Video BIOS) which is non-free. The VBIOS for the Intel GPU on X60/T60 has been reverse engineered, and replaced with Free Software and so will work in libreboot"

    coreboot sería mi opción?

    https://github.com/bibanon/Coreboot-ThinkPads/wiki/ThinkPad-T60p

    ResponderEliminar
    Respuestas
    1. Estimado Federico:

      Las opciones libres de Coreboot y Libreboot funcionan UNICAMENTE con los equipos con video Intel. No operarán con la GPU ATI. En tal caso no instale ninguna BIOS alternativa pues el equipo no lo aceptará (de hecho, no le dejará hacer el procedimiento). En cualquier caso, siquiera lo intente pues podría dañar el equipo de una manera compleja de reparar.

      Atte.

      Juan Perón

      Eliminar
  4. Compañero, existe alguna posibilidad de que me hagas una instalación personalizada?

    ResponderEliminar
  5. Hola qué tal. Yo tengo una notebook Lenovo G480 y quiero ponerle esto ya que estoy harto de esa mugrosa whitelist que no me permite ponerle otra placa wifi que tenga combo wifi+bluetooth.
    ¿Me podrías orientar si se puede?

    ResponderEliminar
    Respuestas
    1. Estimado Edgard_Roul:

      La Lenovo G480 no están soportadas por LibreBoot lamentablemente. Te reconoce Wifi libres, como las placas Atheros. Estas son antiguas pero son operativas (tengo varias en cajones, siempre son útiles con algunas notebooks). Por demás, no requieren controladores privativos.

      En caso de querer actualizarle el BIOS a tu Lenovo, podrás utilizar la placa WLAN BCM43142, y lo cierto es que tal BIOS del 17 de marzo de 2017 se encuentra disponible para la G420 con Windows 7 de 32 o 64 bits en la Web de lenovo (ej: https://download.lenovo.com/consumer/mobiles/62cn44ww_64.exe). Sin embargo la pega es grande: para flashearla deberás instalar un Windows 7, lo que implica un alto dilema moral (no hay actualizador de BIOS para Linux).

      En tal caso, haga lo usual en el peronismo, trague el sapo sin chimichurri instalando Win7 usando doble guante de goma y máscara antigás y careta anti COVID, actualice el BIOS, y una vez comprobado el funcionamiento del mismo con la WLAN BCM43142, formatea el disco e instala Ubuntu.

      Atte.

      Juan Perón

      Eliminar
  6. Hola muy buenas. Excelente aclaración, no hay problema. A mi notebook le puedo hacer de todo y no hay problema con el Win7. Tengo discos para hacerlo. La cuestión es que me gustaría estar seguro si puede detectar una plaquita de red wifi+bluetooth Lite-On Wn6602lh RTL8191se. Además también tengo otra placa wifi+bluetooth que es una Broadcom 9343...algo así, no lo recuerdo (pero es la plaquita que usa la HP 425).
    Me las podrá detectar? Podrá usar o una u otra?
    En caso negativo, tengo entendido que hay una forma de editar las BIOS para remover su whitelist odiosa, pero necesitaría una guía para usar un programa Desemsamblador y "crackearla" en cierta forma. Algo así como cambiarla la condición "IF" por una "OR". Modificar lo menos posible.

    ResponderEliminar