29 de septiembre de 2016

Ubuntu de 32 bits en Lenovo ideapad 100S 11IBY

Recientemente he instalado Ubuntu 16.04 de 32 bits en un Lenovo ideapad 100S de 11 pulgadas. Como me he encontrado varias dificultades, voy a resumir aquí cómo las he resuelto.

Creando una segunda partición


No cuenta con mucha capacidad de almacenamiento, pero aún así decidí crear una segunda partición para Ubuntu. Me encontré con que no podía modificar la partición original debido a que la unidad venía pre-cifrada con BitLocker. Por lo que, lo que hay que hacer es desactivar dicho cifrado, en el Panel de Control de Windows.

Accediendo a la UEFI



Uno de los problemas era la UEFI de este dispositivo, se puede acceder a ella durante el arranque con la combinación de teclas Fn+F2, acceder al menú de arranque con Fn+F12, y también dispone de un pequeño botón al lado del de arranque, y con aspecto de reset, que permite acceder a su configuración UEFI.

Lenovo ideapad 100S 11IBY


En dicha configuración lo principal que nos permite hacer es desactivar el Secure Boot. También desde ahí, particularmente desactivé las teclas rápidas para no tener que hacer combinaciones y poder marcar directamente las teclas de función.

Tras todo ello mis USB's de arranque habituales no me los reconocía, ello es porque en este caso, ¡sólo reconoce el arranque desde 32-bit UEFI! Así que antes de nada, hay que implementar en el USB de Ubuntu este sistema que no trae por defecto.

Comentario: Tanto el sistema de arranque que tiene este Lenovo, como el sistema Windows instalados de fábrica son de 32 bits, pero su procesador es compatible con 64 bits, por lo que se puede instalar un Ubuntu de 64 bits; sin embargo hay que instalarle el Grub que nos permita arrancar con 32-bit UEFI.

Los comandos para instalarlo en el sistema de 64 bits son los siguientes:

sudo apt-get update
sudo apt-get install grub-efi-ia32
sudo update-grub

Lo complicado, y antes de hacer el paso anterior, es arrancar el sistema la primera vez, cuando el Grub no se ha instalado. Lo podemos hacer con el mismo USB de arranque que se explica más adelante, al arrancar desde él y cuando nos sale el menú, hay que pulsar 'c' y escribir los siguientes comandos:

linux (hd1,gpt2)/boot/vmlinuz-4.4.0-22-generic root=/dev/mmcblk1p2
initrd (hd1,gpt2)/boot/initrd.img-4.4.0-22-generic
boot

Para poner bien estos comandos y arrancar correctamente, hay que hacer buen uso del autocompletar (TAB) y de conocer dónde hemos hecho las particiones. En el ejemplo concreto hay tres particiones, la primera para EFI la segunda para ext4 (gpt2 y mmcblk1p2) y la tercera para swap.

Implementando 32-bit UEFI


Como en este caso partimos de un USB Live de Ubuntu de 32 bits, hay que añadir los arranques UEFI de 32 y 64 bits. Ello lo conseguimos obteniéndolo de la ISO de otra distribución que lo trae. En mi caso concreto usé debian-8.6.0-amd64-i386-netinst.iso para el arranque de 32 bits, y el de Ubuntu de 64 bits para el arranque UEFI de 64 bits.

Una vez descargamos los archivos, lo podemos abrir con el Gestor de archivadores. Ya que el formato .iso se trata de un tipo archivo sin compresión para empaquetar otros archivos. De todos sus archivos nos interesa extraer las carpetas boot y efi respectivamente.

Partimos entonces de tres ISO's: Ubuntu de 32 bits, Ubuntu de 64 bits y Debian de 32 bits. El Ubuntu de 32 bits lo usaremos para crear el USB de arranque con UNetbootin,  en un USB formateado con FAT32.

De la ISO del Ubuntu de 64 bits deberemos extraer las carpetas boot y EFI combinando y sobreescribiendo en el USB de arranque.

De la carpeta de Debian /efi/boot/ tomamos el archivo bootia32.efi y lo copiamos en nuestro USB de arranque en la carpeta /EFI/BOOT/ correspondiente.

Y de la carpeta /boot/grub/ de Debian copiamos la carpeta entera i386-efi y la pegamos en el USB de arranque en su propia carpeta /boot/grub/

Por último debemos cambiar el nombre del fichero que está en el USB de arranque /casper/vmlinuz añadiéndole la extensión para que se quede con el nombre de vmlinuz.efi

Hecho esto, nos reconocerá el nuevo arranque UEFI y se podrá instalar.

Arreglando el WiFi


Hay otro problema añadido y es que el WiFi interno del sistema no se reconoce ni instala. Para solventarlo, hay que hacer uso de algún USB WiFi que nos dé conexión a Internet temporalmente para instalar los drivers.

Los pasos para instalar los drivers son los siguientes:

sudo apt install build-essential linux-headers-generic git
git clone https://github.com/hadess/rtl8723bs.git
cd rtl8723bs
make
sudo make install
sudo depmod -a
sudo modprobe r8723bs


Por último reiniciamos, y ya no necesitaremos un USB WiFi porque funcionará el interno. Eso sí, si en alguna actualización deja de funcionar, hay que aplicar de nuevo el driver.

Cuelgues del equipo



Los cuelgues de este equipo, parece que son debidos a que la gestión de energía no está bien implementada, se pueden solucionar actualizando el kernel de un modo u otro, aunque quizás podamos simplemente retrasar los cuelgues con la siguiente solución que no afecta tanto, aunque hará que consuma algo más de batería.

Edita el archivo /etc/default/grub modificando la línea en la que pone

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

por

GRUB_CMDLINE_LINUX_DEFAULT="intel_idle.max_cstate=1 quiet splash"

luego aplicas los cambios

sudo update-grub

y reinicias.


Corregir el sonido


Otro hardware problemático en este Bay Trail es el sonido. Para la versión 17.04 parece que existe un parche que al menos consigue que podamos escuchar a través de auriculares. Los pasos son los siguientes:

  • Dirigirse a la siguiente web: https://github.com/plbossart/UCM
  • Hacer click en la flecha derecha del botón verde "Clone or download" y luego descargar haciendo click en el enlace "Download Zip".
  • En el terminal dirigirnos a la carpeta de descargas y poner el comando "unzip UCM-master.zip"
  • Instalar con el comando "sudo cp -rf UCM-master/bytcr-rt5640 /usr/share/alsa/ucm"
  • Reiniciar, conectar los auriculares y en "Configuración de sonido" establecer la salida por auriculares.


ACTUALIZACIÓN:  Por lo que he podido averiguar el kernel 4.8 soluciona el problema de los cuelgues, y el kernel 4.9 soluciona además el problema del sonido y el WiFi. Además hay un blog que se está dedicando a este tema con más profundidad y desde el que aparecen parches y distribuciones enteras listas para instalar:

http://linuxiumcomau.blogspot.com/

6 comentarios:

Joaquín Martínez dijo...

Hola, gracias por este magnifico post, me ha servido de mucho, pero cuando quise resolver lo del sonido, se estropeo mas, como hago para anular el comando? Gracias y enhorabuena.

Jesús Abad Luque dijo...

Me alegro que te fuera de utilidad. En cuanto a tu cuestión sólo creo que se pueda consultar al responsable del repositorio GitHub que lo puedes ver en el siguiente enlace:

https://github.com/plbossart

Espero que consigas resolver tu problema.

Joaquín Martínez dijo...

Bueno, al final lo que hice fue desinstalar pulse audio y en la configuración de ALSA poner en primer lugar el drive que pones en tu enlace. ¡Funciona! Luego hay que hacer lo siguiente:

Hay que editar /etc/modprobe.d/alsa-base.conf Y añadir en la última línea:

options snd_hda_intel index=generic

Luego hay que poner en la terminal: sudo alsa force-reload

Con esto debe funcionar, si en cada inicio hay que repetir el sudo alsa force-reload puedes ponerlo en etc/rc.local y así funciona como una aplicación de inicio y no te tienes que preocupar de nada más.

Jesús Abad Luque dijo...

Muchas gracias por la aportación, sin duda muchos nos beneficiaremos con tu información.

👍 👏

cesar augusto la rotta dijo...

Hola podrias subir el link de la iso que creaste?, por favor.

Jesús Abad Luque dijo...

Lamento decir que hace tiempo que no cuento con dicho equipo, y no tengo disponible la ISO que monté para instalarlo.