Friday, September 11, 2015

Arrancar Linux x64 (o un LiveCD) en UEFI i386 (BIOS de Teclast)

Cuando adquieres una tablet con arquitectura x86 puede que estés pensando en transformarla en un PC-Tablet, es lógico, y en mi caso fue una razón de peso.

Algunos ya sabréis que con Rufus desde Windows se pueden hacer live-usb de todo, pero si no os habéis fijado la tablet no acepta cualquier cosa. El arranque UEFI sólo es permitido si es de 32 bits, es decir, que aunque todos podamos instalar un sistema de 64 bits (siempre y cuando no sea Windows por el bloqueo de la BIOS) no se podrá arrancar si no hacemos unos cambios.

Un par de cosas que recomiendo son la LiveCD de ArchLinux (o Antergos que está soportado por un equipo español y todo se puede hacer desde el entorno gráfico) y el proyecto Android x86 para testear cómo se comportan en la tablet o simplemente hacer las particiones de instalación de Windows antes de que os de problemas con Gparted Live.

Necesitaréis configurar el arranque de la memoria USB de tal manera que os permita arrancar. Rufus instalará lo que contenga la imagen del cd, por lo que cuando os cree la live-usb puede que os encontreis que sí arranca en el PC pero no en la tablet (la pantalla negra de 1 segundo desde la BIOS y vuelta a empezar en bucle). Es normal, y hay una solución sencilla, agregar el arranque EFI de GRUB en i386.

Si no queréis compilar podéis usar el siguiente link, sino podéis hacerlo vosotros mismos. Si lo queréis generar es necesario compilarlo, ya que aunque vuestro Linux tenga instalado GRUB puede que sólo esté compilado para la arquitectura en la que lo estáis usando (un pc debería de tener un linux x64 si no es muy antiguo)

Hay que descargar los fuentes:

git clone git://git.savannah.gnu.org/grub.git
  
Y tener las dependencias instaladas, si os encontrais en un Ubuntu es fácil:

sudo apt-get install build-essential autoconf automake 

Configurarlo para que utilice efi y arranque sobre la arquitectura de 32 bits que es lo que deseamos (bloqueado desde la BIOS), para ello entramos en la carpeta donde está clonado GRUB y lanzamos:

./configure --with-platform=efi --target=i386 
 

Ordenamos la compilación:

make
 Finalmente, entramos en la carpeta donde se encuentra grub compilado y lo que hay que hacer es generar el bootia32.efi que pegaremos en la carpeta donde se encuentra el EFI.

./grub-mkimage -o bootia32.efi -O i386-efi

Bien, de ahí sale un archivo bootia32.efi que pegaremos en la ruta del pincho usb donde se encuentra el arranque de 64 bits (bootx64.efi), este se suele encontrar en /EFI/distro_a_arrancar/ (un ejemplo es Ubuntu en /EFI/ubuntu/bootia32.efi, yo lo he usado para archlinux pegándolo /efi/efi/arch_grub/.

Falta especificarle las configuraciones a arrancar. Ahora necesitamos decirle a GRUB lo que tiene que hacer. Para ello utilizaremos el archivo grub.cfg, dejo el link del que he usado para archlinux, pero para cada distro hay que configurarlo segun las rutas y la label del usb.

Si habéis dejado por defecto la generación del bootia32.efi con grub-mkimage (es lo que quedaría usando el comando de arriba) la ruta que usará es la estándar /boot/grub/grub.cfg, sino hay que especificarlo.
El contenido es el siguiente:

menuentry 'Arch Linux x86_64'
{
    echo 'Loading kernel...'
    linux /arch/boot/x86_64/vmlinuz noefi nomodeset archisobasedir=arch archisolabel=ARCHISO
    echo 'Loading ramdisk ...'
    initrd /arch/boot/x86_64/archiso.img
}


Siendo "/arch/boot/x86_64/vmlinuz" y "/arch/boot/x86_64/archiso.img" las rutas al kernel y al ramdisk que contiene el usb, si estuvieran en otras rutas hay que cambiarlas. ARCHISO es la label de la memoria USB, si fuera "antergos" habría que cambiarla, de cualquier otra manera el kernel buscaría una unidad con otra label y os saldría una consola de emergencia.

¿Por qué es importante saber hacer arrancar un Linux en la tablet? Porque muchos os preguntáis cómo hacer las particiones antes de instalar Windows (como debe de ser) para dejarlo lo más optimo posible. Una manera fácil de solucionarlo es desde una live-cd y utilizando el programa GPARTED


Espero que os sea de utilidad.

6 comments:

  1. Hola Bit, felicidades por el blog. Me llamo Gonzalo.
    He conseguido hacer varios liveusb con rufus y con multisystem, tanto de distribuciones Ubuntu, como Acronis true Image 2016, o Clonecilla, y todos arrancan bien. Mi intención es hacer una imagen de la emmc por particiones, pero el problema es que por alguna razon una vez que arranco una distro desde usb, ninguna de ellas detecta correctamente la gpt de la emmc. Acronis y Partition Manager directamente ni ven la emmc, y clonecilla y gparted live aunque la ven (con unas 20 particiones), no hacen bien la copia, ademas de que no puedo montar ninguna particion, aunque la vean las distros Ubuntu, etc, con gparted. Mi modelo es c9j8 dual boot y no me he atrevido todavia a actualizar la bios. Me interesa mucho clonar la emmc para actualizar android y windows sin miedo. Y siempre he usado Acronis. Por otro lado, el live Partition manager detecta bien la emmc, y tiene la opcion de convertir la Gpt en Mbr sin perdida de datos, y tampoco me atrevo por si la Uefi luego no arranca bien con la mbr. Me puedes orientar un poco? (perdona el 'parrafo') Gracias y saludos.

    ReplyDelete
    Replies
    1. Si se te complica el proceso, a lo mejor deberías de usar alternativas como http://freaktab.com/forum/tv-player-support/intel-based-tv-players/minix-z64/24622-full-emmc-backup-the-nitro-team ;)

      Delete
  2. Hola , todo esto sería para instalarlo,no? Pero para ejecutarlo sin instalar? Como por ejemplo el wifislax?

    ReplyDelete
  3. El tutorial explica cómo saltarse el bloqueo de la BIOS y arrancar una "iso". Lo que hagas con cada distro es indiferente, puedes instalar o ejecutar en live, pero eso depende de la distro.

    La que estás mentando te permite las dos opciones. Supongo que lo que quieres hacer se explica aquí (http://www.wifislax.com/manuales/liveusb.php), pero para el usuario medio es más sencillo usar Rufus.

    ReplyDelete
  4. Hola buenas tardes, una pregunta!
    Tengo una tablet intel, tiene aandroid 5.0 ("tenia"!!!), no se restablecia, entonces le conecte un teclado para entrar en la bios, no se que le toque y se bloqueo, y no me deja entrar mass, yo lo que queria era flashear de nuevo el android, quice hacerle un respaldo de las particiones con acronis tru 2017, pero me daba error en una de las particiones.
    Alguna idea de estos fallos, o que me recomiendan para recuperar la bios y el sistema.?
    Saludos

    ReplyDelete
  5. buenas mi teclas al tratar de instalar win 10 en la parte donde tengo que formatear me sale que tengo una sola particion que es de 7.2 gb y no me deja que podra ser y en android no em deja instalr

    ReplyDelete