Wifislax en Microsoft Surface Pro 3 (live USB) UEFI y Secureboot habilitado

En un post anterior explicaba cómo conseguí instalar kali Linux en un pendrive para arrancarlo con la Surface Pro 3, sin necesidad de deshabilitar el SecureBoot del UEFI, aprovechando la iso de Ubuntu 16.04 LTS (http://abrazalaweb.net/2016/08/kali-linux-2-en-microsoft-surface-pro-3-live-usb-uefi-y-secureboot-habilitado/).


Actualización (enero 2018) Wifislax64-1.1-final iso funciona perfectamente

La última versión de Wifislax incluye soporte UEFI http://www.downloadwireless.net/isos/wifislax64-1.1-final.iso, por tanto basta usar Rufus para quemar esta iso (con las opciones «GPT partition scheme for UEFI» y «FAT 32») para tener un USB que funciona perfectamente en la Surface Pro 3.

La única pega es que sin hacer nada más es necesario deshabilitar el arranque seguro, ya que el arvhivo ‘/EFI/BOOT/grubx64.efi‘ está firmado por ‘Wifislax’, que no es de confianza para Microsoft. Sin embargo, basta sustituir este archivo por otro de Ubuntu, p.ej el de la versión ‘ubuntu-16.04.3-server-amd64.iso‘, firmado por Canonical, que sí es de confianza y permite el arranque en modo seguro.

El archivo grubx64.efi: grubx64

 


Pues bien, parece que ese método funciona para otras distribuciones de Linux, en este caso Wifislax http://www.wifislax.com/.

Voy a usar la última versión beta  Wifislax-4.12-rc3, que se puede descargar de http://beta.seguridadwireless.es/

El método es el mismo:

  1. Descomprimir la iso de Wifislax en una carpeta
  2. Copiar los archivos del arranque uefi de la iso de Ubuntu 16 en la carpeta de Wifislax (creando las carpetas /EFI/Boot
    1. /EFI/Boot/BOOTx64.efi
    2. /EFI/Boot/ grubx64.efi
  3. Con una herramienta de creación de iso (un grabador o quemador) crear la iso modificada de Wifislax
  4. Con Rufus, crear el pendrive, formateado en Fat32 y con arranque Grub-Uefi
  5. Añadir en el pendrive, en la carpeta /EFI/Boot/ el archivo grub.cfg para arrancar.
  6. Modificar / eliminar dos módulos base para arrancar directamente en kernel SMP y escritorio XFCE (explicado después )

Todo funciona a excepción de:

  1. Touchpad del teclado type-cover
  2. Modo monitor de la wifi integrada (podemos usar un wifi-usb)

Capturas del arranque en la Surface Pro 3 (en modo persistente, que funciona perfectamente):

wifislax_SP3 1

wifislax_SP3 2

Modo persistente, cambiado tamaños de letras, y con el teclado virtual florence lanzado

wifislax_SP3 3

Usando VirtualBox

Para la pruebas y para evitar continuos arranques de la Surface, usé VirtualBox. Primero creando desde una máquina virtual cualquiera (o una nueva) un disco duro, que hará las veces del pendrive usb real  (formato VHD, para poder editarlo fácilmente desde Windows), luego creando una nueva máquina virtual de linux de 64 bits, donde se añade este disco duro en un interfaz SATA, y estableciendo en los ajustes de dicha máquina el tipo de arranque EFI.

Nota: existen métodos en VirtualBox para mapear un usb a un disco duro virtual con VBoxManage, usando así el pendrive real en la Máquina Virtual.

Adjunto capturas de estos pasos:

Una vez creado el disco virtual VHD (de 4Gb p.ej), al abrirlo directamente con Windows 10 aparece un error:

error VHD

Abriendo el Administrador de discos, como sugiere el mensaje de error:

Administrador de DiscosSeleccionamos el Disco (en este caso el disco 2) y creamos un nuevo volumen, indicando que haga una tabla de particiones GPT y formato FAT32.

Administrador de Discos 2

Y el resultado final:

Una vez hecho esto, tenemos nuestro «pendrive virtual». Copiamos todos los archivos de la carpeta con el Wifislax modificado (con /UEFI/Boot/ y sus archivos) y arrancamos la máquina virtualcon este disco (Linux 64 bits, disco duro SATA y arranque EFI)

Elprimer paso es averiguar cómo asigna el grub a las unidades de disco, ejecutando en el menú de arranque grub la Shell del grub (es distinto en VirtualBox que en la Surface Pro 3 y esto habrá que repetirlo para corregir el grub.cfg)

VBox_grub

Encontramos que la partición de wifislax es (hd1,gpt2). Por tanto el grub.cfg (analizando los menús originales de wifislax) ha de contener (para arranque con Kernel SMP de 64bits):

set root=(hd1,gpt2)
linux /boot/vmlinuz2initrd /boot/initrd.xz
boot

Nota: las opciones de arranque no funcionan (noload, etc)

Con eso ya podemos comprobar si funciona, y efectivamente arranca :

Wifislax boot

 

Pero el entorno gráfico que arranca aparece con un login, y esto no vale para la Surface, pues llegados a ese momento no disponemos de un tecleado en pantalla.

Wifislax boot 2

Si hacemos ligan con root/toor, conseguimos un Shell, donde arrancando startx, aparece el escritorio xfce

Wifislax boot 3

 

Después de varias pruebas, lo que ocurre es que al no funcionar la opción  ‘noload’ en el boot, carga los dos escritorios (KDE y XFCE) y por eso no arranca directamente en uno de ellos. Para evitar esto, lo más sencillo es eliminar los módulos de KDE (y Kernel normal) en la carpeta /wifislax/base/ del pendrive (con nombre 0000-Kernel  y 0005-Kde, dejando aquél que nos interese, en mi caso 0000-SMP y 0005-XFCE)

12 Comments

  1. dreambro2 · martes, 15 noviembre, 2016 Reply

    Hello, what is the correct lines of code to put in the grub.cfg file in order run of usb on surface in efi?

  2. dreambro2 · martes, 15 noviembre, 2016 Reply

    Hola, ¿cuáles son las líneas correctas de código para poner en el archivo grub.cfg en orden ejecutar de usb en la superficieSurface en efi?

    • abrazalaweb · miércoles, 16 noviembre, 2016 Reply

      The grub.cfg lines are listed in the post, it’s important to point to the correct hdd partition (follow the steps to identify).
      My current USB gruf.cfg is:

      set root=(hd0,gpt1)
      linux /boot/vmlinuz2initrd /boot/initrd.xz
      boot

  3. GADIEL · sábado, 28 enero, 2017 Reply

    Hola disculpe existe esta opción para equipos de 32 bits y si me puedes explicar como quedaria.
    Saludos

    • abrazalaweb · lunes, 30 enero, 2017 Reply

      Hola, en principio sí se puede hacer en 32 bits, sólo hay que usar los archivos de boot UEFI de 32 bits, y que la Bios sea compatible. La Surface Pro 3 es de 64 bits, no puedo probar esa configuración

  4. Anónimo · martes, 14 febrero, 2017 Reply

    So hard for me to read, I need to use google translate to translate the page to English, and then use my bad english skills to translate English to Chinese

  5. Anónimo · martes, 14 febrero, 2017 Reply

    Still no loads. I am using surface pro 4.

    • abrazalaweb · martes, 14 febrero, 2017 Reply

      Are yo able to enter grub? What are exactly what is happening at boot from USB pendrive? Check my other post about Kali Linux in pendrive. If your SP4 boots to grub, it should be easy to fix the Linux boot

  6. Jay · domingo, 17 diciembre, 2017 Reply

    Is grub.cfg only those 3 lines? If not, could you please post the full grub.cfg file?
    BTW, does this also work with Wifislax 1.1 x64?
    Thanks!

    • abrazalaweb · lunes, 18 diciembre, 2017 Reply

      Only need to add a menuentry to the Wifislax grub.cfg (or just modify it):

      menuentry «Wifi_slax Non Persistent» {
      set root=(hd0,gpt1)
      linux /boot/vmlinuz2initrd /boot/initrd.xz
      boot
      }

      And yes, it works with last Wifislax Version (1.1), (I updatep my USB pendrive just copying new files from the iso)
      NOTE: these grub lines should work on USB conncected to SP3, the post describes the process using Virtual Machine in VirtualBox, which provides differente results (hd1,gpt2), Some testing is needed on real SP3 and USB to derive (hd0,gpt1)

  7. kamil · viernes, 5 enero, 2018 Reply

    please give the modified iso for surface pro 3. i can not make it.

    • abrazalaweb · domingo, 7 enero, 2018 Reply

      Here is my iso file (https://abrazalaweb.net/myBlog/wp-content/uploads/2018/01/Wifislax_SP3.iso).
      I have copied all files/folders from my working usb-memory using cdburnerxp (latest portable version) to make the iso. Then I have tested with another usb-memory, using Rufus (latest portable version). Surface Pro 3 boots ok into Wifislax. Note that the usb-memory must be formatted in FAT32, and Rufus must be congigured to «GPT partition scheme for UEFI» (be sure that this is the selected one before flashing the usb, rufus changes options when selecting the iso file)
      Both Wifislax non persistent and persistent mode works. The iso contains my current persistent changes (increased fonts and virtual florence keyboard launched at start).

      Important Note: (I have updated the post): The latest version of Wifislax http://www.downloadwireless.net/isos/wifislax64-1.1-final.iso works flawlessly when flashing it to an usb-memory with Rufus (‘GPT partition scheme for UEFI’ + ‘FAT32’), the only issue is that it needs disabling secure mode (otherwise a verification error appears) because the file /EFI/BOOT/grubx64.efi is signed by ‘Wifislax’ , which is not trusted by microsoft, just replacing this file with the one from an Ubuntu iso (signed by Canonical) it works with secure boot enabled (I have tested right now by copying the grubx64.efi from ‘ubuntu-16.04.3-server-amd64.iso’ into the usb-memory). A copy of this efi file is attached here: https://abrazalaweb.net/myBlog/wp-content/uploads/2016/08/grubx64.zip

Responder a dreambro2 Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.