Grub4DOS



En mi pendrive en particular (8GB) tengo:
Sistemas Operativos
Aplicaciones
Varias opciones de booteo
Por supuesto, esta lista puede ampliarse, modificarse o acortarse a gusto del usuario (ver capturas de pantalla más adelante).

Sobre Grub4Dos

Grub4Dos (página original y continuación del proyecto) se compone de 3 piezas fundamentales: el registro de arranque MBR, el bootloader en sí (grldr) y el menú (menu.lst). Mediante el menú, el usuario puede comandar todas las acciones de arranque que serán realizadas.
El booteo del pendrive está basado en el uso de Grub4Dos, y puede modificarse a gusto simplemente editando el menú de arranque. Grub4Dos es capaz de bootear cualquier distro linux, o cualquier imagen ISO booteable, incluso desde unidades de disco internas o instalaciones de windows. Por lo que es una buena elección para un pendrive de estas características.
Grub4Dos puede instalarse en una unidad FAT32 o NTFS por igual. Por motivos de conveniencia, recomiendo NTFS: es un sistema de archivos mucho más moderno, soporta archivos de gran tamaño (el primero está limitado a 4GB), es menos propenso a errores y fallos. Personalmente, sería mejor poder usar un sistema EXT2/3/4, pero lamentablemente no se puede.

Capturas de pantalla del menú de arranque

Algunas aplicaciones no tienen opciones de arranque, por lo que basta con una simple línea de menú. Otras, como el Hiren’s Boot CD o el System Rescue CD, poseen múltiples opciones, y por lo tanto la mejor opción fue crear submenús para estas. Puede verse con más detalle en las siguientes imágenes (no hay captura de pantalla a nivel de arranque).
Menu Principal - Sistemas Operativos
Menu Principal – Sistemas Operativos
Menu Principal - Aplicaciones
Menu Principal – Aplicaciones
Menu Principal - Opciones de arranque
Menu Principal – Opciones de arranque
Menu Hiren Boot CD 1/2
Menu Hiren Boot CD 1/2
Menu Hiren Boot CD 2/2
Menu Hiren Boot CD 2/2
Menu Kaspersky Rescue Disc
Menu Kaspersky Rescue Disc
Menu System Rescue CD
Menu System Rescue CD

Cómo crear el pendrive, paso a paso

  1. Primero y principal, formatearlo. Si bien este paso no debería ser necesario, es decir, podría cargarse el bootloader directamente, la experiencia me demostró que formatear el pendrive resulta con menos posibilidades de fallo. Recomiendo formatear en NTFS. Algunas versiones de windows no lo permiten, por lo que recomiendo emplear HP USB Format Tool para eso (ejecutar como administrador en Windows Vosta y superior).
  2. Instalar el bootloader (MBR, archivo GRLDR y archivos de menú).
  3. Crear la estructura de directorios deseada y cargar las iso/programas/sistemas operativos deseados.

Instalando el bootloader

Pueden descargar desde aquí el paquete Grub4DOS installer (o desde el sitio original), y ejecutan grubinst_gui (como administrador). Luego recomiendo descargar la versión más actualizada del archivo GRLDR desde aquí (extraen del paquete solo ese archivo, los demás no interesan). Esto último no es necesario, pero sí recomendado.


  1. Click en el botoncito que esta al lado de Disk [1], luego click en Refresh [2]. Seleccionar el pendrive [3] (¡¡CUIDADO DE NO SELECCIONAR EL DISCO RIGIDO!!)
  2. Click en Refresh [4] donde dice Part List
  3. Seleccionar Whole Disk (MBR) [5] (puede decir Whole disk (FAT12/FAT16))
  4. OPCIONAL: tildar Don’t search for floppy [6] (primero probar sin esta opción)
  5. Click en Install [7]
Debe aparecer una ventana con la leyenda: The MBR/BS has been succesfully installed. Si es así, indica que se instaló correctamente. De no ser así:
  • (Des)Tildar la opción Don’t search for floppy [6] y le dan a Install [7] (probar lo uno y/o lo otro).
    o
  • Formatear nuevamente, y repetir desde el primer paso.
    o
  • Bailar en una pata alrededor del CPU mientras formatean el pendrive (???).
Si todo salió bien, copiar el archivo grldr que está en este paquete a la raíz del pendrive (es decir, lo ponen tirado en el pendrive). Nuevamente, recomiendo emplear la versión más actualizada.
Finalmente, copiar los menús, que son aquellos archivos con extensión .lst (menu.lst, hiren.lst, etc…). El menú principal siempre se llama menu.lst, este nombre no puede cambiarse; sí puede denominarse de cualquier manera a los submenús.
Hecho lo anterior, conviene probar si funciona antes de proceder a copiar gigas y gigas de archivos. Para ello, reiniciar la pc y bootear con el pendrive (debe seleccionarse al mismo desde la BIOS; puede que aparezca como dispositivo extraíble o como disco rígido HDD).
Si no funciona, ver la sección Errores comunes… y tratar de solucionarlo. Normalmente, formateando y volviendo a empezar suele funcionar.
Si funcionó, es decir, si ya es booteable, entonces copiar todos los archivos correspondientes a los programas y sistemas operativos.

Editando los menús (avanzado)

Los archivos de menú – aquellos con extensión .lst – contienen las directivas de arranque, que le indican a Grub4Dos (G4D) cómo debe bootear un determinado programa, kernel, o ISO. IMPORTANTE: si usan winchot, NO editar estos archivos con Notepad o M$ Word, dado que son corrompidos por estos; emplear Wordpad en su lugar, o cualquier editor de código.
Lo cierto es que cada programa o SO (Sistema Operativo) requiere de comandos de arranque específicos. Sin embargo, muchos funcionan con comandos genéricos. Mostraré a continuación los genéricos y algunos específicos relacionados a los items listados al principio. Para bootear con un programa o SO particular, puede buscarse en google la lista de órdenes requeridas para G4D, y si se tiene algún inconveniente, pueden dejar una consulta al final del post (o vía email).
IMPORTANTE: Si bien G4D no distingue mayúsculas de minúsculas en las órdenes de arranque, los kernels linux sí lo hacen y pueden dar error al recibir una orden mal capitalizada. Por esto, es muy importante cuidar el uso de mayúsculas y minúsculas, en particular respecto de los nombres de directorios y archivos.

Recomiendo observar los menús de ejemplo (al final de este apartado) al tiempo que se lee lo siguiente, para poder entender e interpretar mejor lo expuesto .

Adornos de menú

El menú se expondrá al usuario mostrando lo que indique el parámetro title de cada orden de arranque. G4D permite, entre otras cosas, dibujar una caja alrededor de esta lista de órdenes, como se aprecia en las fotos más arriba de las capturas de pantalla. Esta caja se dibuja empleando el caracter especial ³ al principio y al final de cada título. Y para dibujar una línea horizontal, se emplea como tapa de la caja los caracteres ÚÄÄÄ¿ y como fondo de la misma, ÀÄÄÄÙ.
Para definir el tamaño de la caja, tanto en la tapa como en el fondo, se deben agregar tantos caracteres Ä como hagan falta, mientras que en las líneas de título basta con dejar los espacios que sean requeridos desde el final del título hasta el caracter especial ³.
Cada línea de título que esté vacía insertará un espacio vacío en el menú que verá el usuario.
Tanto para las lineas de título vacías como las de adorno, deben ser proseguidas por la instrucción root; esto es obligatorio.
Ejemplo
La caja del menú del Kaspersky Rescue Disc tiene el siguiente código (se omite por comodidad todas los comandos de arranque, que no hacen a las veces de esta sección):
title ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ root title ³ Kaspersky Rescue Disk. Graphics Mode ³ ...
title ³ Kaspersky Rescue Disk. Text Mode ³ ...
title ³ Kaspersky Rescue Disk. System information ³ ...
title ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
root
Menu Kaspersky Rescue Disc
Menu Kaspersky Rescue Disc

Arranque genérico

No hay, como mencioné anteriormente, una única y universal forma de bootear. Por lo tanto, será cuestión de prueba y error, y/o consultar en google.
Usando chainloader
Normalmente, para bootear una ISO basta con emular una unidad virtual y luego ejecutar el arranque desde su respectivo sector de arranque.
title "Titulo que aparece en el menu para esta entrada"\nComentario respecto de esta entrada, aparecera en la parte inferior de la pantalla
find --set-root /Directorio/archivo-imagen.iso
map /Directorio/archivo-imagen.iso (0xff) || map --mem /Directorio/archivo-imagen.iso (0xff)
map --hook
chainloader (0xff)
Lo antedicho ha sido representado por comandos de G4D. La línea de title le da un título a las órdenes de arranque, que apareceŕa en el menú.
La segunda línea (find…) ubica el archivo ISO que contiene lo que se desea bootear.
La tercera (map…) se divide en dos partes, separadas por el operador lógico O EXCLUSIVO: ||, que le indica a G4D que debe ejecutar la parte izquierda primero, y si la misma falla, entonces proceder a la derecha. Si no falla, continuar con la próxima línea (si ambas fallan, dará error).
Luego, tanto la parte izquierda como la derecha se encargan de montar la imagen ISO en una unidad virtual, denominada (0xff) (es el nombre que recibe en G4D una unidad virtual de CD/DVD). En lugar de (0xff) puede encontrarse (hd32). Referirse a Grub4dos Guide – Device Allocation/Numbering para más información.
Se diferencian en que la izquierda monta la imagen directamente, pero requiere que la misma sea contigua dentro del sistema de archivos; esto es, que no esté fragmentada. De estar fragmentada provoca un error. La derecha hace lo mismo, solo que previamente carga la ISO a la memoria RAM, por lo que es más lento. Pero tiene la ventaja de no requerir contigüidad. El operador lógico || se encarga de ejecutar ambas, para que sea más eficiente el arranque: si la imagen ISO es contigua, ejecutará la parte izquierda; si no, la derecha. Esto previene el error de fragmentación, muy común en sistemas de archivos NTFS o FAT (ver Error 60 en Errores comunes…).
La cuarta línea (map –hook) fija efectivamente la imagen ISO como unidad virtual.
La última (chainloader…) “ejecuta” el sector de arranque de la ISO.
Estas cuatro líneas son suficientes para bootear la mayoría de los sistemas y programas.
Ejemplo
title TinyCore 4.7.6 (Live)\nDistribucion TinyCore, ultra ligera
find --set-root /TinyCore/TinyCore-4.7.6.iso
map /TinyCore/TinyCore-4.7.6.iso (0xff) || map --mem /TinyCore/TinyCore-4.7.6.iso (0xff)
map --hook
chainloader (0xff)
En lugar de emular una unidad de CD/DVD, puede emularse una unidad tipo diskette, requerido sorprendentemente por algunos programas, de la siguiente manera:
title "Emulando diskette"
find --set-root /Directorio/archivo-imagen.ima
map /Directorio/archivo-imagen.ima (fd0) || map --mem /Directorio/archivo-imagen.ima (fd0)
map --hook
chainloader (fd0)
Es común que las imágenes de diskette estén en formato .ima en lugar de .iso.
Para más información respecto de las unidades emuladas por G4D: Grub4dos Guide – Device Allocation/Numbering
Kernels Linux
Si se trata de bootear un kernel Linux, una alternativa a lo antedicho es la siguiente:
title "Booteando un kernel linux generico"
find --set-root /Directorio/archivo-imagen.iso
map /Directorio/archivo-imagen.iso (0xff) || map --mem /Directorio/archivo-imagen.iso (0xff)
map --hook
root (0xff)
kernel /boot/kernel parametro1 ... parametroN
initrd /boot/initrd.img
Hay infinidad de formas de bootear un kernel linux. Como se observa, las primeras 4 líneas (desde title hasta map) son iguales, pero la última fue reemplazada por root, kernel e initrd.
root (0xff) sitúa la ejecución de comandos en la raíz de la unidad virtual (0xff), tal que las rutas sean relativas a esta y no al pendrive. El comando root permite establecer el directorio desde donde se considerarán las rutas relativas que se mencionen a continuación de su ejecución. Podría omitirse y luego en los comandos kernel e initrd (o cualquier otro siguiente) indicar la ruta absoluta, p. e.:(0xff)/boot/initrd.img
kernel… le indica a G4D la ruta del kernel que debe ejecutar, y permite pasarle parámetros si fuese requerido, separados c/u por un espacio, p. e.: kernel /HBCD/Boot/pmagic/bzImage edd=off load_ramdisk=1 prompt_ramdisk=0 rw vga=normal loglevel=9 max_loop=256 vmalloc=288MiB directory=/HBCD/Boot keymap=us
Cada kernel compilado tiene sus propios parámetros; es necesario leer la ayuda o el manual de referencia respecto del programa o SO que se está tratando de bootear.
Ejemplo
title SystemRescueCd std-32bit\nDefault for 32bit systems, should always work
find --set-root /SysRescueCD/systemrescuecd-x86-3.5.1.iso
map /SysRescueCD/systemrescuecd-x86-3.5.1.iso (0xff) || map --mem /SysRescueCD/systemrescuecd-x86-3.5.1.iso (0xff)
map --hook
root (0xff)
kernel /isolinux/rescue32 isoloop=/SysRescueCD/systemrescuecd-x86-3.5.1.iso
initrd /isolinux/initram.igz

Archivos de menú de ejemplo

Vuelco aquíVuelco en Pastebin el contenido de los archivos de menú de mi pendrive; estos son los que se condicen con las imágenes mostradas al principio del post. También se puede descargar los mismos desde allí.
Menú principal: menu.lst
> Menú Hiren’s Boot CD: hiren.lst
>> Menú Linux Rescue Enviroment: pmagic.lst
> Menú Kaspersky Rescue Disc: krd.lst
> Menú System Rescue CD: sysrcd.lst
> Menú Instalación WinXP: winsetup.lst

Estructura de directorios

Estructura pendrive booteable v2
Estructura de directorios pendrive booteable v2
  • 1PORTABLE
    Este directorio contiene programas portables
  • 2APPS
    Aplicaciones útiles, para instalar
  • 3MISC
    Archivos sin clasificar, quizá de uso temporal
  • Acronis
    Directorio que contiene las ISO de Acronis mencionadas
  • ESET_Rescue
    Contiene la ISO de ESET SysRescue
  • HBCD
    Contiene los archivos de Hiren’s Boot CD; es el contenido de la ISO.
  • LUbuntu
    ISO de Lubuntu
  • PuppyLinux
    ISO de Puppy Linux
  • rescue
    ISO de Kaspersky Rescue Disc. Es obligatorio para este caso que la carpeta que contiene la ISO se llame de esta manera.
  • SpinRite
    Archivos de SpinRite
  • SysRescueCD
    ISO de System Rescue CD
  • TinyCore
    ISO de TinyCore Linux
  • Ubuntu
    ISO de Ubuntu Linux
  • Otros directorios
    Son los correspondientes a la instalación de Windows 7 o XP
  • Otros archivos 0CHANGELOG: registro de cambios 0VERSION: control de versión
    Archivos de menús
    Archivos correspondientes a la instalación de Windows 7 o XP

Acomodando el software mencionado en el pendrive

Finalmente, ya habiendo instalado el gestor de arranque, editados los menús, creado la estructura de archivos, etc., es tiempo de agregar el software listado al principio. Para algunos basta con copiar la imagen ISO al directorio que le corresponde, pero otros requieren de trabajo adicional.
En algún punto será requerido extraer archivos de una imagen ISO. Para ello, basta con abrirla con algún programa compresor, como ser WinZip o WinRar o cualquier gestor en linux, o montar la imagen en una unidad virtual, con DaemonTools en winchot y mount o doble click en linux.

Software que solo requieren imagen ISO

Sistemas Operativos
  • Ubuntu
  • LUbuntu
  • Puppy Linux
Aplicaciones
  • Hiren’s Boot CD
  • System Rescue CD
  • ESET SysRescue v5
  • Acronis Backup & Recovery 11 Advanced Server
  • Acronis TrueImage Echo Enterprise Server 9

Software que requieren trabajo adicional

Kaspersky Rescue Disc

Copiar la imagen ISO y guardarla en el directorio /rescue dentro de la raíz del pendrive, con nombre rescue.iso (obligatorio):
/rescue/rescue.iso
Crear en la raís del pendrive un archivo vacío de nombre liveusb (se trata de un archivo vacío de peso 0), sin extensión y con ese nombre exacto.
Crear finalmente, también en la raíz, una carpeta vacía de nombre Kaspersky Rescue Disk 10.0 que será la que utilice para descargar actualizaciones de la base de datos de virus.

Puppy Linux

Extraer todo el contenido de la imagen ISO en la carpeta correspondiente.

GRC SpinRite 6

Copiar los archivos memdisk y SpinRite.IMA al directorio correspondiente.

TinyCore

Este requiere un poco de trabajo adicional. No me fue posible pasarle como parámetro del kernel el nombre del archivo ISO de sí mismo, por lo que al iniciar no logra cargar el entorno gráfico y queda en una terminal. Hay dos opciones para solucionarlo:
  1. Al iniciar TinyCore desde la terminal, tipear:
    sudo fromISOfile /mnt/sdb1/TinyCore/TinyCore-4.7.6.iso
    startx
    Esta opción es la más sencilla, y no requiere nada más.
  2. Editar la ISO y modificar el archivo: /boot/isolinux/isolinux.cfg
    Agregar a las líneas initrd: iso=/mnt/sdb1/TinyCore/TinyCore-4.7.6.iso
    O bien el nombre de la iso que corresponda
    P.E.:
    LABEL tc
    ...
    APPEND initrd=/boot/core.gz loglevel=3 cde iso=/mnt/sdb1/TinyCore/TinyCore-4.7.6.iso
    Esta opción es más compleja.
Finalmente, copiar la ISO a su directorio.

Windows 7 y XP

Requiere que todos los archivos y directorios se encuentren en la raíz del pendrive.
¡NO debe extraerse el contenido de las ISO! Los archivos necesarios son aquellos generados específicamente para instalar desde pendrive:
Recomiendo seguir dichas guías empleando un pendrive descartable: crearlo en un pendrive aparte, luego copiar todo el contenido del mismo a la raíz de este pendrive multiutilitario.

Hiren’s Boot CD

Extraer la carpeta HBCD, que está dentro de la ISO, a la raíz del pendrive.

Errores comunes y sus soluciones

> Error 60: File for drive emulation must be in one contiguous disk area
Se debe ejecutar WContig y desfragmentar la iso que genero ese error; o bien, desfragmentar toda la unidad (recomiendo Defraggler). También se puede evitar empleando el comando map --mem en las opciones de arranque, que cargará la iso en memoria y no requiere que esté desfragmentada (sin embargo, notar que demora tiempo adicional en cargar).
> No floppy disk detected
Se debe volver a instalar el grub4dos, seleccionando la opcion ‘Dont search for floppy’.
> No GLRDR
Copiar nuevamente el archivo “grldr”, que se encuentra dentro de Grub4DOS-Installer.
Si no funciona, formatear al pendrive y volver a empezar.

Links útiles

Boot Multiple ISO from USB (MultiBoot USB)
Muy buena info hay aquí, denle una ojeada…
GNU GRUB Manual 0.97
Manual del GRUB, infaltable
The list of command-line and menu entry commands
Lista de los comandos de GRUB
GNU GRand Unified Boot loader (GRUB)
Bootear ESET SysRescue
Usando Grub4DOS
Kaspersky Rescue Disk boot from USB
Kaspersky Rescue Disk official download page (it’s free!)
Instalar Windows XP desde una memoria USB
How To: Install Windows 7/Vista From USB Drive [Detailed 100% Working Guide]
Grub4dos Guide – Device Allocation/Numbering
Grub4dos Guide – Map Command







Entradas populares