20100618

Cómo crear un dispositivo USB de inicio de Syslinux compatible con Windows PE

Esta es la segunda parte de dos entradas explicando cómo hacer que funcionen discos USB de inicio que no utilicen Mac OS X para arrancar. Ahora hablaremos de cómo usar SysLinux para crear un menú de arranque con varias opciones, integrando en el mismo el arranque de Windows PE que habíamos hecho en la entrada anterior.

Elementos necesarios para crear el dispositivo de arranque:
VMWare Fusion o BootCamp
Windows instalado (o el mismo USB de Windows PE que habíamos creado), o Linux (instalado o en un CD "Live")
Dispositivo USB de almacenamiento compatible

Instrucciones:

Si este USB es nuevo, siguen siendo válidas las recomendaciones de la entrada anterior acerca de la compatibilidad para el arranque. Nosotros vamos a suponer que tenemos el mismo dispositivo que usamos la vez anterior, y que tiene Windows PE instalado.

Conectamos el dispositivo USB al Mac, y abrimos la aplicación Terminal. Vamos a "pelar" el sector de arranque de Windows PE a un fichero. Para ello, localizaremos el identificador de disco, por ejemplo usando el comando diskutil:
$ diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *250.1 GB   disk0
   1:                        EFI                         209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            215.8 GB   disk0s2
   3:       Microsoft Basic Data Windows                 33.9 GB    disk0s3
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     Apple_partition_scheme                        *250.1 GB   disk1
   1:        Apple_partition_map                         32.3 KB    disk1s1
   2:                  Apple_HFS Datos                   249.9 GB   disk1s3
/dev/disk2
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     Apple_partition_scheme                        *500.1 GB   disk2
   1:        Apple_partition_map                         32.3 KB    disk2s1
   2:                 Apple_HFSX Time Machine            500.0 GB   disk2s2
/dev/disk3
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *4.2 GB     disk3
   1:                 DOS_FAT_32 UNTITLED                4.2 GB     disk3s1

En este caso, por ejemplo, vemos que se trata el disco 3, así que ahora, usando dd, copiamos los primeros 512 bytes, donde está el sector de arranque:
dd if=/dev/disk3s1 of=pe2.bss bs=512 count=1

Si hubiéramos querido hacer esto desde Linux habría sido similar (ajustando el disco de origen). Desde Windows también se podría hacer, pero usando mkbt.exe:
mkbt -c -x letra: .\pe2.bss (donde "letra" es la unidad USB)

Ahora copiamos el archivo con el sector de arranque (pe2.bss) al dispositivo USB, por ejemplo, en un nuevo directorio que llamaremos "syslinux".

Tambíen creamos un fichero de texto con la configuración para SysLinux, en la raíz del dispositivo, y que llamaremos syslinux.cfg. El fichero debe contener, al menos, algo como lo siguiente:
LABEL winpe
    MENU LABEL Windows PE
    KERNEL /syslinux/pe2.bss
    APPEND -
    TEXT HELP
    Arranque de Windows PE
    ENDTEXT

Es importante señalar, sobre todo si se usan acentos, en el fichero de configuración, que la codificación de texto es de MS-DOS - Occidental (DOS Latino 1).

Descomprimimos el archivo de SysLinux, localizaremos el ejecutable de Windows (normalmente en el directorio win32), y lo copiaremos en el dispositivo USB. Esto es para arrancar después desde el USB y hacer la instalación. También es posible hacerlo directamente desde Linux, con el ejecutable correspondiente, o desde una instalación de Windows (en VMWare o Boot Camp).

Arrancamos desde el USB (que aún tiene Windows PE) e instalamos SysLinux; desde el directorio donde hubiéramos copiado syslinux.exe (o bien desde la instalación de Windows o Linux, claro):
> syslinux.exe –f -m –d syslinux letra:  (donde "letra" es la unidad USB)

Esto reajustará el MBR y cambiará el sector de arranque, borrando el que había previamente de Windows PE. El proceso funciona sin problemas aunque hubiéramos arrancado desde Windows PE, porque este utiliza un disco RAM para funcionar, por lo que el dispositivo original de arranque queda libre completamente. De hecho, una vez iniciado Windows PE, podemos desconectar el USB y seguir trabajando únicamente con el disco en memoria.

Ahora es posible ampliar la configuración de syslinux.cfg incluyendo otras entradas, por ejemplo, usando memdisk para cargar una imagen de disquete, o instalando versiones de Linux Live como SystemRescueCD o Geexbox. También es posible crear un menú de inicio gráfico con la extensión vesamenu.c32.

0 comentarios:

Publicar un comentario en la entrada