miércoles, 5 de febrero de 2014

Linux en Surface Pro: Episodio II de la primera trilogía


Sí, otra vez.
¿Qué se creían? ¿Que nos íbamos a rendir? No, amiguitos. Por algo este blog se llama El Rostro de Muerte. Si nuestro padre espiritual no dio su brazo a torcer luchando contra el Todopoderoso (y ganó), nosotros no íbamos a ser menos.


En capítulos anteriores de Buffy la Cazavampiros...

Tras ímprobos esfuerzos, Shemer Olufunmilayo consiguió que ese ultrabook híbrido de Microsoft llamado Surface Pro funcionase con GNU/Linux, aunque no tan bien como le gustaría. Habíamos logrado que arrancase desde USB con persistencia, pero todavía nos quedaban dos escollos importantes, por no decir gravísimos:
1. Si arrancamos Linux con el ordenador desenchufado, no sólo se cuelga, sino que se estropea y hay que reinstalarlo en el pendrive.
2. Si se desenchufa estando encendido, pierde la señal de la wifi y la única manera de recuperarla es apagando el ordenador y volviéndolo a encender enchufado a la corriente.
El primer problema estaba resuelto en parte, porque ya había comprobado que al menos una distribución de GNU/Linux era capaz de hacerlo correctamente: Fedora 20. Por desgracia, ya comenté en la entrega anterior que Fedora es incapaz de crear discos USB con persistencia de más de 4 Gb cuando la partición está formateada como FAT32. Con ext2 y sus sucesores este límite no existe, pero la UEFI (a diferencia de su “obsoleta” predecesora, la BIOS) es un sistema de arranque tan cateto que no entiende otro formato que Fat32, cuya primera aparición se remonta a... Windows 95. Vamos, que es tan revolucionario como el peinado de Jennifer Aniston.
(Otra cosa que he descubierto en mis experimentos es que Windows sólo sabe leer la primera partición que haya en un pendrive, da igual el formato, aunque todas estén en Fat32. Este analfabetismo se daba en Windows XP y persiste en Windows 8.)
Todo ello indica que una versión posterior del kernel (el núcleo del sistema operativo) había metido en cintura al díscolo Surface Pro y por fin se encendía sin estar conectado a la red eléctrica.
Ahora bien, la nueva versión de Ubuntu (con un kernel actualizado) no saldrá hasta mediados de abril (otra razón para esperar con impaciencia la llegada de este mes), lo que me obligaba a elegir entre un sistema que se colgaba constantemente por la diabólica limitación de 4 Gb (Fedora 20) o jugar a la ruleta rusa cada vez que encendiera el ordenador (Ubuntu 13.10).
Como ustedes me conocen, ya habrán adivinado que escogí la opción secreta c).

La derrota no es más que una victoria postergada

MeX Linux es una versión de Linux Mint, que a su vez es una versión de Ubuntu, que a su vez es una versión de Debian, que a su vez es una versión de... Bueno, mejor lo dejamos; otro día les explicaré la genealogía de las distribuciones GNU/Linux.


Lo importante es que MeX viene con el kernel más moderno (13.0), de manera que no hay peligro de que el ordenador se cuelgue si se enciende sin estar enchufado. No sólo eso; como está basado en Ubuntu, se puede aprovechar todo el espacio del pendrive, sin estar sometidos a la tiranía de los 4 Gb. (Con razón el Doctor Muerte odia tanto el número 4...)
Para lograr la persistencia, MeX utiliza un método propio (procedente de Kanotix, otra distribución basada en Ubuntu), distinto del que explicamos en su día. Consiste en ejecutar dos scripts (programas) que transfieren la imagen al pendrive y crean una capa de persistencia.

1. El primer paso es (lógicamente) descargar la iso o imagen del disco de la siguiente dirección:
2. A continuación, descargamos los dos scripts: mex-create-usb-drive.sh y mex-create-usb-drive-persistent.sh

3. Hecho esto, tenemos que cambiar los permisos de los scripts para que sean ejecutables. ¿Alguna vez se han preguntado por qué dicen que GNU/Linux es más seguro que otros sistemas operativos? Entre otras razones, porque hay que dar permiso EXPRESAMENTE a un archivo para que se ejecute en el sistema. Esto es así desde los años 70, cuando un tal Gates se reventaba los granos del acné en el espejo mientras un tal Jobs mangoneaba a su antojo al pobre Steve Wozniak.
¿Y cómo se cambian los permisos? Pues de varias maneras, pero como todos los empollones saben por las películas de los 80, las mujeres caen rendidas a los pies de un hombre que domina la notación octal. (Advertencia: La frase anterior podría no corresponderse con la realidad. En caso de duda, consulte a su farmacéutico.) Así que abrimos la terminal (esa cosa que sirve para hacer calendarios y navegar por internet) y tecleamos:
chmod 755 mex-create-usb-drive.sh mex-create-usb-drive-persistent.sh

Chmod es la instrucción que sirve para cambiar los permisos de un archivo. 755 indica (en notación octal) que cualquiera puede leer y ejecutar el archivo que va detrás del número (en este caso, dos archivos), pero sólo el dueño del archivo puede escribir en el archivo además de leerlo y ejecutarlo.
Ahora bien, lo más probable es que esta instrucción nos dé un error porque los archivos no existen. ¿Pero cómo no van a existir, si acabo de descargarlos? Porque la terminal se abre (normalmente) en /home/nombre_de_usuario/, y nosotros queremos ir al directorio donde hemos descargado todo lo demás, generalmente /home/nombre_de_usuario/Descargas (ojo a las mayúsculas y minúsculas, porque en Linux se distinguen).
Así que tecleamos:
cd Descargas
Y si ahora escribimos:
ls
¡Magia! Entre los archivos listados nos aparecen todos los anteriores.
Ahora volvemos a escribir:

chmod 755 mex-create-usb-drive.sh mex-create-usb-drive-persistent.sh

Y todo irá como la seda.
4. Llegó la hora de ejecutar el primero de los scripts. Esto es tan sencillo como teclear:

./mex-create-usb-drive.sh mex-64bit-cinnamon-310-isoh-persistent-921mb-140123.iso /dev/sdX

Examinemos la sintaxis con mayor detenimiento.
El punto y la barra inclinada indican a Linux que el archivo se ejecute en el directorio actual. A continuación, aparece el nombre del script, con dos argumentos: a) la imagen que queremos copiar a nuestra unidad USB y b) dónde está esa unidad, para que se grabe correctamente, cambiando X por la letra de esa unidad.
Normalmente, las unidades USB se montan en /dev/sdb, pero no siempre es así. En mi sistema, por ejemplo, están en /dev/sdd/. Es importante averiguar esto de antemano, porque podemos grabar en el disco equivocado o incluso borrar el disco duro si escribimos /dev/sda/. ¡Así que cuidado!
Importante: no hay que especificar un número de partición, como /dev/sdd1. Hay que decir simplemente /dev/sdd/.
Por lo tanto, en mi caso, tengo que escribir:
./mex-create-usb-drive.sh mex-64bit-cinnamon-310-isoh-persistent-921mb-140123.iso /dev/sdd
5. En tan sólo dos minutos (estamos usando USB 3.0, por las razones que explicamos en su momento), ya tenemos la imagen copiada al pendrive. Para hacerla persistente, tecleamos:
./mex-create-usb-drive-persistent.sh mex-64bit-cinnamon-310-isoh-persistent-921mb-140123.iso /dev/sdX
De nuevo, cambiando sdX por el disco correcto (n mi caso, sdd).
6. Esperamos otros dos minutos y ya está todo listo... ¡Pues no! Como ya anticipé en la primera entrega, ni UNetbootin ni el Creador de Discos de Arranque de Ubuntu generan correctamente la persistencia en el caso de la UEFI (sí para BIOS). Dado que los scripts de MeX ejecutan a su vez los scripts en que se basa el Creador de Discos de Arranque, el fallo se perpetúa.
Por suerte, ya sabemos lo que tenemos que hacer, ¿verdad? Abrimos nuestro recién creado LiveUSB en el explorador de archivos, buscamos /boot/grub/grub.cfg y lo modificamos con nuestro editor de textos favorito para añadir la palabra mágica “persistent” antes de quiet splash (para una explicación más detallada, lean el capítulo anterior).

7. El siguiente paso es opcional, pero muy recomendable. Usando gparted (el editor de particiones), reducimos el tamaño de la partición casper-rw para crear una partición FAT32, útil si queremos evitar problemas de permisos cuando copiemos archivos desde o hacia nuestro Linux de sobremesa.
(La solución ideal sería agrandar la primera partición, donde se copia MeX, porque es la única que reconoce Windows, pero me da miedo que Windows 8 la estropee con sus triquiñuelas del Fast Startup.)

8. Si todo ha salido bien, ya tenemos un sistema GNU/Linux que arranca desde USB y conserva todos los cambios, aunque el Surface Pro esté desenchufado.
En resumen...

¡SHORYUKEN!

Charlie Tango a Bravo Delta, Charlie Tango a Bravo Delta, ¿me recibe?

En cuanto a la wifi, todavía no he logrado que funcione como es debido, aunque los avances son alentadores.
Con Ubuntu 13.10, cuando se desenchufa el cable de la corriente, la wifi del Surface Pro se desconecta automáticamente, y aunque se vuelva a enchufar, no reconoce la red, por lo que no hay más remedio que apagar el ordenador y volverlo a encender.
Con MeX, pasa lo mismo, pero cuando se vuelve a enchufar el Surface Pro, sí se puede volver a conectar a la red inalámbrica, aunque para eso hace falta meterse en Conexiones de Red (o más bien, en Network Manager, por razones que luego explicaré) y conectarse a una red oculta, seleccionando la que tuviéramos antes de quitar el enchufe.
¿Y funciona la wifi sin estar conectado? A ratos. Yo lo he conseguido un par de veces, tras muchos intentos, probando toda clase de combinaciones y sin que todavía tenga muy claro cuál de ellas es la que funciona. Pero se puede hacer, y una vez dé con el procedimiento correcto (aunque sea engorroso a más no poder), lo explicaré en otra entrega.

No hay comentarios:

Publicar un comentario