Grub4DOS
En mi pendrive en particular (8GB) tengo:
Sistemas Operativos
- Windows 7 (solo instalación)
- Windows XP (solo instalación)
- Ubuntu
- LUbuntu
- Puppy Linux
- TinyCore
Aplicaciones
- Hiren’s Boot CD (+ windows xp live + pequeña distro de linux + muchisimos programas)
- Memtest 86+ << Incluido en Hiren’s Boot CD
- System Rescue CD (+ muchas aplicaciones)
- Kaspersky Rescue Disc (Kaspersky & ESET Rescue Disk)
- ESET SysRescue v5 (Kaspersky & ESET Rescue Disk)
- GRC SpinRite 6
- Acronis Backup & Recovery 11 Advanced Server (The Pirate Bay)
- Acronis TrueImage Echo Enterprise Server 9
Varias opciones de booteo
Por supuesto, esta lista puede ampliarse, modificarse o acortarse a gusto del usuario (ver capturas de pantalla más adelante).
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.
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).
Cómo crear el pendrive, paso a paso
- 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).
- Instalar el bootloader (MBR, archivo GRLDR y archivos de menú).
- 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.
- 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!!)
- Click en Refresh [4] donde dice Part List
- Seleccionar Whole Disk (MBR) [5] (puede decir Whole disk (FAT12/FAT16))
- OPCIONAL: tildar Don’t search for floppy [6] (primero probar sin esta opción)
- 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.
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.
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
Para definir el tamaño de la caja, tanto en la tapa como en el fondo, se deben agregar tantos caracteres
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):
³
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
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.
initrd… le indica la ruta al sistema de archivo temporal que el kernel requiere para 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
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
- 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:
- 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. - 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
Esta opción es más compleja.
...
APPEND initrd=/boot/core.gz loglevel=3 cde iso=/mnt/sdb1/TinyCore/TinyCore-4.7.6.iso
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:
- Instalar Windows XP desde una memoria USB
- How To: Install Windows 7/Vista From USB Drive [Detailed 100% Working Guide]
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