Como las lectoras
decentes de este blog (valga la redundancia) no toleran la palabra
soez, el único modo que se me ocurre de describir al inventor del
UEFI sin herir su sensibilidad es esta foto:
Lo cual me recuerda que
hace unos meses prometí dedicar una reseña a Deadwood, cosa que
espero cumplir antes de fin de año. Pero la película que toca esta
semana es un documental de terror.
Las Fuerzas del Mal
Steve Jobs no tuvo
bastante con saquear BSD, uno de los grandes sistemas operativos
libres, para “inventar” el MacOS; también introdujo EFI, un
sistema de arranque que bloquea todos los intentos de instalar otros
sistemas operativos en sus jaulas de oro. Entre ellos, por supuesto,
el mismo BSD que expolió.
Pero el aprendiz siempre
acaba superando al maestro, y el binomio siniestro Bill Gates –
Steve Ballmer fue más lejos todavía, creando una versión avanzada
de este engendro: UEFI. Tras unos macabros experimentos durante los
últimos coletazos de Windows 7, Microsoft presentó al mundo el
Secure Boot, su enésimo intento de convencer a la humanidad de que,
esta vez sí, en serio, Windows no va a ser el sumidero por el que se
cuelen todos los virus del mundo.
Todos los ordenadores con
Windows 8 (o alguna de sus variantes, como RT) llevan Secure Boot.
Aunque es posible desactivarlo, el resultado puede ser que Windows no
vuelva a arrancar. E incluso si funciona, no hay ninguna garantía de
que el sistema operativo que instale junto a él consiga iniciarse
cuando arranque el ordenador.
Esta deplorable situación
ha hecho que posponga demasiado tiempo mi intención de reemplazar mi
cochambroso pero fiel netbook. Por cuestiones de trabajo, necesito
Windows para acceso remoto. Como el ordenador al que me conecto a
través de VPN es otra antigualla con XP, utilizar el teclado en
pantalla es imposible, así que una tableta está descartado. Además,
utilizo un token usb para la firma digital, por lo que el tema de los
puertos es bastante complicado.
Puesto que no me puedo
arriesgar a que el ordenador no funcione en el momento crítico, el
netbook está igual que cuando lo compré (por no tener, no tiene ni
Office). Todo lo demás lo hago con Puppy Linux (concretamente
Precise Puppy) desde un pendrive. Cuando termino la sesión, todos
los cambios se quedan grabados en la llave, y cuando tengo que
trabajar con windows, no hay más que encender sin enchufar mi unidad
usb.
Esto es precisamente lo
que quería hacer con mi nuevo ordenador, pero con el rollo macabeo
de la UEFI y el Secure Boot, no me quedó más remedio que investigar
durante meses una solución para compaginar mis obligaciones
laborales con la defensa del software libre.
Como en mi tribu somos
así de valientes, no se me ocurrió otra cosa que comprarme
finalmente el Surface Pro, un ultrabook híbrido (tableta con teclado
desmontable) de 11.6 pulgadas. A algunos les extrañará que, ya
puestos, me quedase con la versión de 128 Gb en vez de la de 256,
pero teniendo en cuenta que no quiero instalar GNU/Linux sino
arrancar desde una memoria usb, cuanto más espacio en el disco duro,
mayor desperdicio.
Además, el problema de
la UEFI es que ahora cada ordenador es hijo de su padre y de su
madre. Antiguamente, a un aventurero del software libre podía no
funcionarle algún periférico (la primera vez que instalé Linux, no
me reconocía la tarjeta de sonido), pero encenderse, se encendía.
Ahora, ni por ésas. Yo he conseguido arrancar Linux en el Surface
Pro, pero hacer semejante proeza en el Surface Pro 2 es harina de
otro costal.
Nunca subestimes el poder de un Jedi
Tendrían ustedes que
haberme visto el lunes pasado en el Cortinglés de Goya, calentando
la cabeza a todos los dependientes, jefes de planta, el comercial de
Microsoft (era su día libre, pero le hicieron venir) y hasta el
mismísimo Isidoro Álvarez, porque yo no me iba de allí hasta que
me dejasen probar antes de comprar, todo ello ante la perpleja mirada
de una clientela poco acostumbrada a ver un salvaje en taparrabos
deambulando por el Barrio de Salamanca.
Tras dos horas largas
batallando con la configuración, conseguí mi objetivo. Por si
alguno se atreve a seguir mis pasos, lo que hay que hacer es:
1. Pasar el stylus por el
extremo derecho de la pantalla, hasta que salga la barra lateral.
2. Pulsar en
Configuración.
3. Seleccionar Uso
General.
4. Bajar hasta la última
opción, Inicio Avanzado.
5. En la pantalla azul,
Solucionar Problemas.
6. En la siguiente
pantalla azul, cambiar firmware de UEFI.
7. Aceptar para
reiniciar.
8. Ahora nos saldrá una
pantalla negra con letras blancas.
9. Hay dos apartados. En
ambos pone Enabled. Debemos pulsar en cada uno de ellos para
cambiarlos a Disabled.
10. A continuación,
salvamos estos cambios y salimos.
11. Si todo ha ido bien,
volveremos a la horrenda y engorrosa interfaz de Windows 8.
12. Enchufamos una unidad
USB 3.0 con una versión de Linux adecuada (luego hablaremos de
esto).
13. Volvemos a pulsar en
el lado derecho hasta que salga la barra lateral, Configuración, Uso
General, Inicio Avanzado y Solucionar Problemas.
14. Esta vez, escogemos
la opción de arrancar desde un dispositivo USB. (Es posible que esta
opción no aparezca. En tales casos, es mejor volver atrás, hasta
Configuración, y seleccionar Dispositivos para comprobar que
reconoce nuestro pendrive. A veces he tenido que intentarlo en varias
ocasiones hasta que sale la opción correcta en la pantalla azul.)
15. Crucemos los dedos. Al reiniciar, veremos el menú Grub desde donde podemos ejecutar una
sesión en vivo de GNU/Linux.
(Una vez que hayamos
grabado nuestra primera sesión persistente, es más cómodo enchufar
el pendrive y reiniciar el ordenador pulsando a la vez el botón de
encendido y el de bajar volumen. Al cabo de dos segundos, soltamos el
botón de encendido y dejamos pulsado el de bajar volumen, hasta que
nos salga el menú Grub. Esto hace que el Surface Pro arranque
directamente desde el usb. De lo contrario, cada vez que queramos
iniciar Linux, tendremos que iniciar sesión en Windows y seguir los
pasos 12 a 15.)
Llegados a este punto, di
las gracias a todos los presentes por su colaboración (aunque ya se
pueden ustedes imaginar que no tenían ni idea de lo que yo estaba
haciendo) y me fui de allí con un Surface Pro bajo el brazo. Y con
el Starter Pack, que se paga aparte. Porque de serie no trae ni
teclado, ni antivirus, ni Office. El comercial de Microsoft se
sorprendió al ver que Linux llevaba un procesador de textos
incluido, concretamente LibreOffice. Sospecho que se vengó de mí
vendiéndome el único teclado blanco que debían de tener en
existencias para un ordenador de color negro. Como descubrí al
desembalar mi flamante Surface Pro, ahora tengo el equivalente
informático de la portada de un disco de Modern Talking.
Caídos por Dios y por España
Para todas estas
operaciones hace falta una distribución de GNU/Linux instalada en
una unidad usb. Tradicionalmente, podía ser cualquiera. Desde la
aparición de UEFI, casi todas han quedado obsoletas, puesto que sólo
pueden arrancar las de 64 bits (la mayoría son de 32 bits, por
ejemplo Puppy y sus variantes como Saluki Linux) y la unidad debe
estar formateada con fat32, en vez de ext2, el formato nativo de
Linux, mucho más eficiente. Esto supone un gravísimo problema para
la persistencia de datos, una cuestión crucial para el que suscribe.
Aunque fat32 es el
formato más cómodo para discos que vayan a utilizarse en diferentes
sistemas operativos (por ejemplo, para pasar archivos de windows a
linux, o viceversa), tiene una importante limitación, y es que si
bien la partición puede ser de cualquier tamaño, no puede tener
ningún archivo mayor de 4 Gb. Por tanto, aunque haya espacio de
sobra en su disco duro de 2 Tb, no puede guardar una copia de
seguridad de un blu-ray (que por supuesto ha adquirido legalmente) si
la unidad usa fat32.
Desgraciadamente, los
sistemas con UEFI y Secure Boot sólo reconocen la partición de
arranque cuando es fat32, lo que significa que, o bien nos las
apañamos con un disco de 4 Gb, o desaprovechamos todo el espacio
sobrante.
Si sólo quisiera crear
un LiveUSB normal, esto no supondría una gran diferencia, puesto que
todo lo que hacemos durante la sesión se graba únicamente en la
RAM, no en la memoria usb. Una vez se apaga el ordenador, se pierden
todos los cambios y el pendrive se queda limpio, listo para arrancar
una nueva sesión como si no hubiera pasado nada.
Pero lo que pretendemos
es justo lo contrario: grabar los cambios en el pendrive, de manera
que no tengamos que configurar, cada vez que arrancamos Linux, la
wifi, el idioma del sistema, los codecs multimedia, los complementos
de Firefox, etc.
Evidentemente, si
instalamos Linux en el disco duro, todos estos cambios se quedarían
guardados. Pero tampoco queremos eso. No podemos borrar Windows,
porque lo necesitamos, muy a nuestro pesar, para el trabajo. Y
tampoco nos arriesgamos a un arranque dual, que gracias a la perfidia
de UEFI y el Secure Boot nos daría demasiados dolores de cabeza.
Lo malo de la
persistencia es que cada vez que creamos, modificamos o incluso
borramos un archivo dentro de la sesión live, el archivo comprimido
que la engloba va creciendo poco a poco. El mero hecho de encender y
apagar el ordenador aumenta el tamaño del archivo en uno o dos
megas. Si disponemos de muchos gigas, como sucedería con una
partición ext2, esto no sería un gran problema. Pero cuando sólo
hay 4 Gb como máximo, la máquina no da para mucho. Los programas
irán cada vez más lentos, y llegará un momento en que el usb ni
siquiera arranque. Lo que no sólo significa que habrá que empezar
de cero, sino que habremos perdido todos nuestros documentos, fotos,
música, etc.
Tras siete días de
pruebas y más pruebas, cada una más frustrante que la anterior, he
tenido que descartar mis dos distribuciones favoritas, Puppy y
Fedora. La primera, como ya he dicho, sencillamente no arranca en
casi todas sus variantes. Fatdog 64, la única versión de Puppy de
64 bits, sí consigue superar la barrera de la UEFI, pero el kernel
que tiene es demasiado antiguo y no reconoce la wifi del Surface Pro,
con lo cual es inservible.
Fedora 20, por su parte,
funciona bastante bien (el entorno de escritorio Gnome 3, que tantas
críticas ha suscitado en los PC de sobremesa y portátiles, se
adapta a la perfección a los dispositivos móviles), pero con apenas
4 Gb de persistencia, cuando terminé de configurar el sistema a mi
gusto, ya había consumido 3.25 de los 4 disponibles, así que,
aunque no hiciera nada, con sólo encender y apagar el ordenador
veinte veces más, adiós muy buenas.
(De todos modos, estuve a
punto de decantarme por Fedora por razones que explicaré más
adelante.)
También lo intenté con
Opensuse 13.1, pero no hubo manera de activar la persistencia, porque
eso requiere, durante el arranque de la sesión en vivo, pulsar F2
para introducir los parámetros correspondientes. Y si el teclado no
tiene teclas de función, ya me dirán ustedes cómo lo hago.
(A Dios gracias, Onboard,
el teclado en pantalla de Linux, sí incluye teclas de función, pero
sólo podemos usarlo cuando ya hemos iniciado la sesión, y esto debe
hacerse antes.)
Empieza la batalla
Así que me lié la manta
a la cabeza y usé Ubuntu 13.10, la misma distribución de GNU/Linux
que tengo en mi maravilloso Sable Touch. De hecho, es la que había
creado para probar el ordenador antes de comprarlo, porque hasta
entonces Puppy me bastaba y me sobraba para crear unidades
persistentes.
Antes de continuar, para
los que prefieran otras variantes de Ubuntu, les recomiendo que usen
la versión estándar en un Surface Pro. En mis experimentos, Kubuntu
va más lento que el caballo del malo. Xubuntu es muy ligero (algo
vital en un sistema con persistencia), pero su entorno de escritorio
es poco apropiado para una tableta híbrida, y algunos problemas con
la internacionalización (como la falta de eñes) me hicieron
desistir, por más que en mi portátil Acer, use Xfce en Fedora 19.
Unity, por contra, es sorprendentemente veloz (para ser un escritorio
basado en Gnome) y se nota que está pensado para dispositivos
móviles. Además, las aplicaciones de KDE funcionan perfectamente, y
sin la lentitud de Kubuntu (Okular, por ejemplo, lee los pdf mucho
más rápido que Evince).
Importante: Todas las
operaciones que haremos a continuación requieren, bien un sistema
con Ubuntu instalado (como mi ordenador de sobremesa), o bien
arrancar una sesión live de Ubuntu desde otro ordenador. El Surface
Pro no lo tocaremos hasta dentro de un buen rato, así que paciencia.
Hay varias maneras de
crear un LiveUSB persistente con Ubuntu. La más directa es
Unetbootin, un programa que copia la imagen de nuestra distribución
favorita a un usb, pero que en el caso de Ubuntu y sus derivados es
capaz de crear también un sistema persistente de hasta 10 Gb, muy
por debajo de la capacidad de los 64 Gb (57.65, en realidad) que hay
en mi unidad, pero más que suficientes para mis propósitos.
La otra opción es usar
el Creador de Discos de Arranque que viene en cualquier LiveCD de
Ubuntu, marcando el espacio que queramos para la persistencia.
Lo malo es que ambas
aplicaciones tienen un error que sólo crea un archivo persistente
cuando se arranca desde BIOS. En el caso de UEFI, aunque hayamos
seleccionado la opción de persistencia durante la creación de
nuestro LiveUSB, se perderán los cambios al apagar.
Yo no me di cuenta de
esto antes de comprarme el Surface Pro porque todos los PCs que tengo
aparte de él usan BIOS, así que cuando ejecuté un LiveUSB
persistente con Unetbootin en mi portátil Acer, todo funcionaba a la
perfección, y no tuve motivos para sospechar que algo iba mal hasta
que enchufé el nuevo ordenador.
Después de darle muchas
vueltas, descubrí que, para subsanar este defecto, basta con editar
el archivo grub.cfg (dentro del directorio boot/grub/ del LiveUSB) y
añadir la palabra persistent en la siguiente línea:
file=/cdrom/preseed/ubuntu.seed
boot=casper quiet splash --
Para que quede así:
file=/cdrom/preseed/ubuntu.seed
boot=casper persistent quiet splash --
Con esto, ya hemos
conseguido la persistencia. Pero 9999 Mb, aunque nos permitan ir
mucho más holgados que en Fedora, se nos quedarán cortos
rápidamente, en cuanto actualicemos el sistema e instalemos
programas indispensables, o simplemente encendamos y apaguemos el
ordenador, abramos archivos, los borremos, etc.
Por suerte, hay una
solución, si bien sólo para Ubuntu. Por más que he buscado en
internet, no he encontrado un método equivalente para Fedora.
ADVERTENCIA: Gparted
puede destrozar nuestro disco duro en cinco segundos si no sabemos lo
que hacemos. Así que lea atentamente estas instrucciones y no pulse
ningún botón hasta estar seguro de que está trabajando con la
unidad usb en vez de con su ordenador.
1. Con Gparted, insertamos
el usb donde vamos a crear nuestro LiveUSB.
2. Seleccionamos la unidad
usb. (Mucho cuidado con esto, o nos podemos cargar el disco duro del
ordenador.)
3. Eliminamos todas las
particiones que haya en el usb.
4. Creamos una tabla de
particiones. (Esto es para más seguridad en el borrado; en realidad,
cuando creemos el disco de arranque, se creará igualmente otra tabla
de particiones.)
5. Creamos una partición de
1024 Mb en formato Fat32. Aquí es donde se instalará Ubuntu.
6. Creamos una segunda
partición, en formato ext2, con la etiqueta casper-rw. Aquí es
donde se descomprimirá el sistema una vez se cree la persistencia en
nuestra primera sesión. Podemos darle la extensión que queramos,
pero recuerda que cuanto mayor sea, más rápido irá todo. Yo le doy
31744 Mb. Con 30 Gb de persistencia, podemos arrancar GNU/Linux las
veces que queramos.
7. Creamos una partición
con el espacio que nos sobre (en mi caso, 25 Gb), también en formato
ext2, y le damos la etiqueta home-rw. Ésta será nuestra partición
home. Esto tiene varias ventajas. Por un lado, mayor seguridad
(siempre es bueno tener home en una partición separada del resto del
equipo, incluso si GNU/Linux está instalado en el disco duro). Por
otro, el impacto en la persistencia es mucho menor, ya que ahora
tenemos dos archivos distintos. Y en caso de que el pendrive deje de
funcionar (por razones que explicaremos de inmediato), siempre
podemos recuperar los archivos de la partición home sin problemas.
Cuando le demos al botón
de aplicar cambios, tendremos que armarnos de paciencia, porque
formatear particiones con ext2 lleva su tiempo. Podemos aprovechar
este cuarto de hora para leer el “manual” del Surface Pro, donde
se nos explica, entre otras cosas, que no se debe utilizar el
ordenador cuando montemos en bicicleta. (Verídico, como todo lo que
se publica en este blog.)
Cuando hayamos terminado
de crear las tres particiones, sacamos el pendrive, lo volvemos a
meter y ejecutamos el Creador de Discos de Arranque. Seleccionamos la
imagen que queremos grabar (en este caso,
ubuntu-13.10-desktop-amd64.iso) y creamos un LiveUSB en la partición
Fat32.
En cuanto termine (esta
operación es bastante más rápida que la anterior), tenemos que
abrir la partición Fat32 en el explorador de archivos Nautilus y
modificar grub.cfg como hemos explicado más arriba, o no tendremos
persistencia.
Por razones que
desconozco, el creador de discos de arranque crea ocasionalmente el
directorio syslinux, que es lo correcto, pero las más de las veces
crea el directorio isolinux y el archivo isolinux.cfg. Es muy
recomendable renombrar ambos a syslinux y syslinux.cfg,
respectivamente, y cambiar el contenido de syslinux por el siguiente:
default persistent
label persistent
say Booting an Ubuntu
persistent session...
kernel
/casper/vmlinuz.efi
append
file=/cdrom/preseed/ubuntu.seed boot=casper persistent
initrd=/casper/initrd.lz quiet splash noprompt--
Esto es como un parto,
¿verdad? Ánimo, que ya queda poco.
¡SHORYUKEN!
Insertamos el LiveUSB
recién creado en el (único, por desgracia) puerto USB Surface Pro.
Con el ordenador
enchufado a la corriente (esto es MUY importante, por razones que
explicaremos de inmediato), encendemos pulsando el botón de bajar
volumen a la vez que el de encendido, y manteniendo pulsado el de
bajar volumen hasta que nos salga el menú Grub.
Seleccionamos la primera
opción (podríamos haberle cambiado el nombre cuando le añadimos
persistent al archivo grub.cfg, pero cuanto menos toquemos, mejor).
Arrancamos nuestra
primera sesión live.
Pulsamos en el icono de
wifi e introducimos la clave.
Cuando nos aparezca un
aviso diciendo que ya estamos conectados, apagamos.
Volvemos a arrancar el
ordenador con encendido + bajar volumen (insistimos, siempre
enchufado a la corriente).
Al principio, nos dirá
que no estamos conectados, pero si esperamos unos segundos, veremos
que tenemos conexión wifi...
¡PRUEBA SUPERADA!
Por fin podemos cambiar
el teclado a español, actualizar el sistema, instalar otros
programas, etc., hasta que Ubuntu 13.10 se quede a nuestro gusto.
Cada vez que apaguemos el ordenador, los cambios se guardarán en el
usb y, cuando encendamos windows, todo estará como siempre.
Desde hoy, sólo beberé sano y rico aceite de motor
Con Ubuntu 13.10 en el
Surface Pro, funciona casi todo: internet, la pantalla táctil, el
vídeo en alta definición... Lamentablemente, habrán notado que he
dicho “casi.”
El cambio de orientación
de la pantalla (de horizontal a vertical) no es automático. Requiere
meterse en Configuración > Monitores, pero lo desaconsejo. Ni el
stylus, ni el ratón ni el dedo funcionan correctamente cuando esto
se modifica. Así que es mejor dejar orientación de la pantalla como
está. De todos modos, Okular puede modificar la visualización de
los documentos en vertical cuando leamos un ebook, así que tampoco
es tan grave.
Me preocupa mucho más
que, cuando encendemos Ubuntu sin estar enchufado el Surface Pro,
consigue arrancar, pero se bloquea, y la próxima vez que lo
encendamos no se enciende de ninguna manera. Ni la siguiente, ni la
de más allá. No nos queda más remedio que reinstalarlo todo,
repitiendo el fatídico proceso descrito más arriba.
Aunque no he encontrado
en internet ninguna solución a este problema, sospecho que está
relacionado con la incapacidad de Ubuntu de arrancar “en frío”
(es decir, estando apagado) cuando el Surface Pro está desenchufado.
Si se trata de una instalación en el disco duro, no hay problema
(habrá que esperar hasta disponer de un enchufe, pero nada más).
Sin embargo, cuando se trata de un LiveUSB persistente, he sido
incapaz, por más veces que lo he intentado, de arrancarlo de nuevo.
(Afortunadamente, con una partición home dedicada, los archivos
personales son fácilmente recuperables.)
Misteriosamente, si
arrancamos con el ordenador enchufado y luego lo desenchufamos,
parece que no pasa nada. (Todavía tengo que investigar más
detenidamente este asunto, pero por ahí van los tiros.) Es el
momento inicial donde resulta imprescindible que el cacharro esté
conectado a la corriente.
Naturalmente, esto reduce
considerablemente la utilidad del Surface Pro como dispositivo móvil.
Aunque podría remediar este problema haciendo una instalación en el
disco duro, no me atrevo a dejar Windows inservible. (Más inservible
de lo que es con Windows 8, quiero decir.) Confío en que la próxima
versión de Ubuntu, que sale en abril, solucione este grave
inconveniente.
Y hay motivos para la
esperanza. Con Fedora 20, es posible arrancar Linux sin estar
enchufado. Teniendo en cuenta que esta distribución usa un kernel
más moderno que Ubuntu, es probable que Ubuntu 14.04 ya funcione
correctamente. Al fin y al cabo, la versión 13.04, que salió en
abril de 2013, no tenía un kernel lo bastante avanzado para
reconocer la wifi del Surface Pro, lo que demuestra que los adelantos
en la compatibilidad de GNU/Linux con los dispositivos más modernos
son cada vez más rápidos. Si no fuera porque en Fedora no he
encontrado un modo de crear un LiveUSB con suficiente persistencia,
estaría usándolo ahora mismo.
Oración, despedida y cierre
No necesito recordar a
las fans de Hugh Jackman qué le hacía Halle Berry en Operación
Swordfish mientras se colaba en los servidores de la NSA con los
pantalones bajados.
Ahora, repasen esta
crónica de mis miserias informáticas y pregúntense cuál de las
dos es un retrato más fidedigno de la vida de un hácker.
El Rostro de Muerte les
desea feliz Navidad y próspero año nuevo.
No hay comentarios:
Publicar un comentario