Sunteți pe pagina 1din 4

PRÁCTICO • Supergrub

Recupera el arranque de tu pc.

SGD AL RESCATE
Super Grub Disk (Figura 1) (de ahora en adelante SGD) es un cdrom o disquete autoarrancable orientado a

la recuperación de sistemas. Su utilidad principal es restaurar Grub en el MBR. Esto permite volver a tener

el menú de Grub en el arranque después de haber reinstalado Windows. POR ADRIÁN GIBANEL LÓPEZ

É
rase una vez un problema de Más tarde, necesitaba modificar el ker- Usos prácticos de SGD
arranque. Todo empezó el verano nel del grub, el código fuente en C de SGD tiene muchas aplicaciones prácticas.
pasado. Convencí a un amigo grub. Existe un parche de Adam Lac- Entre ellas, podemos destacar:
para instalarle Gnu/Linex Empresa en su korzynski para Grub que le añade muchas • Recuperación del arranque de
ordenador para que pudiera usar sus funcionalidades, como el soporte de varia- Linux. Para recuperar el arranque de
programas de gestión. El particiona- bles. Este parche, junto a otros comandos,
miento falló y perdí su Windows. A me permitieron hacer un Super Grub Disk
continuación instalé Linux. Luego, al mejor, más rápido y más pequeño. El futuro de Super Grub
instalarle Windows, perdí el arranque de En todo ese tiempo aprendí a hacer un Disk
Linux. cdrom grub, así como un pendrive con El listado de quehaceres de SGD está
Conociendo lilo, probé con un chroot a grub en él. Y, de hecho, si visitáis la sec- lleno de nuevas opciones y característi-
cas para hacer SGD más fácil, pequeño e
ejecutar grub. Grub no me reinstaló grub ción de descargas de la pagina web de
inteligente. Dentro de poco estará dispo-
sino que me dejó en una consola de SGD [4] encontraréis una imagen iso de
nible el comando selectpart y la
grub. Los comandos eran desconocidos cdrom [6], imágenes de disquetes y un capacidad de compresión de ficheros
para mi y la ayuda de grub no servía de tar.gz para pendrive [5]. Grub. El comando selectpart permitirá
mucho. Al final acabé reinstalando Se podría hacer una versión de SGD ver nuestras particiones, de qué tipo
Linux otra vez. Mi amigo no me ha lla- para el disco duro, pero SGD no está pen- son, si son una partición o /boot o
mado más. sado para ser un cargador de arranque incluso su tamaño.
No obstante quise conocer cómo fun- fijo. Con el grub de toda la vida es más La compresión de ficheros Grub permi-
cionaba la reinstalación de Grub. que suficiente. De hecho, cuando reinsta- tirá reunir en uno solo multitud de
Aprendí a crear un disquete de Grub y lamos Grub (Opción Arregla Arranque de ficheros de Grub y éste se podrá compri-
empecé poco a poco a hacer disquetes Linux (GRUB) en menú Linux. Veáse mir de tal manera que el tamaño actual
más complicados. Se trataba básica- figura 2) desde el cdrom de SGD, en reali- de 4 MB para un cdrom con 8 lenguajes
mente de escribir ficheros menu.lst muy dad lo que se hace es copiar información pueda reducirse a un tamaño cercano a
1 MB. Esto reducirá la necesidad de
parecidos, porque Grub no soportaba del disco duro a una parte de él llamada
tener un disquete por lenguaje, podrá
variables. De ahí salió el germen de MBR para que, al volver a arrancar, se ini-
estar SGD con sus 8 lenguajes en un
build.sh, que es quien crea todos esos cie tu propio Grub. SGD no copia ningún
único disquete.
menu.lst del disco SGD. fichero a tu partición de Linux.

42 Número 21 WWW.LINUX-MAGAZINE.ES
Supergrub • PRÁCTICO

Linux en un ordenador de arranque • Arranque de Windows de un


dual en el que ha sido reinstalado segundo disco duro. Si ponemos el
Windows, hay un método más rápido disco de Windows como segundo
y seguro que usar un live cd tipo disco duro, por mucho que lo intente-
Knoppix. Arrancamos con el cdrom de mos, éste no arrancará. El truco
SGD. Elegimos el menú Linux (figura consiste en hacerle creer que sí que es
2) y por último la opción Arreglar el primer disco duro. Esto se realiza
Arranque de Linux (GRUB). Al selec- mediante unas llamadas a la BIOS que
cionar esta opción veremos en la mapean el primer disco duro con el Figura 1: Podemos seleccionar hasta siete
consola si SGD lo ha conseguido o no. segundo y viceversa. Desde el menú lenguajes a la hora de trabajar con Super
• Arranque de Linux directamente. Si Windows podemos acceder a esta Grub Disk.
con la opción anterior no conseguimos opción.
reinstalar Grub podemos probar a • Desinstalación de Grub. Es posible que corresponda para evitar proble-
arrancar Linux con SGD. Desde el que queramos desinstalar Grub. O lo mas. Teóricamente el “extended”
mismo menú elegiremos la opción que es lo mismo, preparar el ordena- tendría que funcionar siempre. Este
Arranque de Linux, que nos dejará dor para que arranque sólo Windows. cargador de arranque arranca la parti-
arrancar con nuestro menú anterior de Como el arranque de Windows es dife- ción activa que encuentra, así que
Grub. En el caso de fallo, podemos rente según sus familias, tendremos tendremos que asegurarnos que la
escoger como último recurso la opción que elegir de qué familia es el nuestro. partición con el lilo real está activada.
Arranque de Linux directamente. Una En la familia de los Windows NT Podremos activarla desde el menú
vez en nuestro sistema podemos eje- (Windows 2000, XP incluidos) estare- Arranque y Herramientas. La opción
cutar el comando update-grub como mos ejecutando el equivalente al de arreglar lilo está disponible desde el
usuario root o bien seguir alguna guía comando FIXMBR y en la familia de menú Linux.
de reinstalación de Grub. Estando den- los Windows 95 (Windows 98 y ME), No obstante, dada la novedad de la
tro de nuestro sistema será muy raro ejecutaremos un comando análogo al opción se recomienda usar la opción
que falle la reinstalación de grub. fdisk /mbr. Accederemos a la opción Arranca Linux Directamente del menú
• Activar particiones. Si andamos Arregla Arranque de Windows desde Linux y, una vez dentro de nuestro sis-
jugando con la tabla de particiones es el menú de Windows para utilizar tema, leerse la página man de lilo para
posible que dejemos todas las particio- estas herramientas. aprender como reinstalarlo si no se
nes primarias sin el flag de partición • Instalar Lilo. Hay dos formas de insta- sabe cómo.
activa. Esto en un MBR estándar nos lar Lilo. La primera de ellas es • Arrancar otros SOs. También tenemos
llevaría a un error: No active partition instalarlo directamente al MBR. La una opción para arrancar Gnu/Hurd.
found. Además, es posible que algu- segunda, en el sector de arranque de Para los que prefieran sistemas como
nos Windows no arranquen si su una partición y a continuación poner OpenSolaris, también están soporta-
partición no es la activa. En el menú en el MBR un pequeño cargador de dos. Estas opciones son accesibles
Arranque Y Herramientas encontrare- arranque que se dedique a cargar esa desde el menú Avanzado y, dentro de
mos la opción de activar particiones. partición. Super Grub Disk sólo nos él, en Arranque otros SOs.
• Ocultar y desocultar particiones. proporciona ayuda a la hora de restau- Un aspecto en el que se hace inciso en
Windows necesita ser el primer sis- rar ese cargador de arranque que a su SGD es en el didáctico. Cada opción de
tema operativo del disco duro. Si vez carga la partición que realmente SGD viene precedida de su explicación
queremos instalar dos Windows en el contiene lilo instalado. (veáse figura 6). En la web hay una docu-
mismo ordenador y que éstos sean Hay que añadir una pequeña compli- mentación, no muy amplia, pero que
totalmente independientes, necesita- cación a todo esto. El cargador de podemos consultar para resolver dudas
mos instalar un Windows a la vez que arranque para instalar lilo es diferente complicadas de Grub y una lista de correo
ocultamos el otro. En el menú Arran- si se instala éste en una partición pri- donde preguntar todas las cuestiones que
que y Herramientas también se maria que en una partición se desee.
encuentran estas opciones. secundaria. Tendremos que elegir el Si después de todo lo explicado segui-
mos con dudas o queremos ver SGD
explicado de otra manera siempre pode-
SGD: Instalación en un Pendrive (usb)
# grub> device (hd3) /dev/ubb
mos consultar la documentación gráfica
Nos descargamos el tar.gz para pen-
que Herman amablemente ha preparado
drives de [5]. Lo descomprimimos en un
directorio temporal y desde éste en la Herman’s Super Grub Disk Page [1]
Cambiamos /dev/ubb por nuestro dis-
(suponiendo que el pendrive se monta positivo de usb
(de momento sólo disponible en inglés).
en /mnt/usb):
# grub> root (hd3,0) Desarrollo
# mount /mnt/usb # grub> setup (hd3)
SGD es, a todos los efectos, un disco de
# cp -R ./* /mnt/usb # grub> quit
rescate. Lo que no es muy común en estos
# umount /mnt/usb
discos es que sean multilingües. Pero, en
# grub Y ya tenemos listo nuestro pendrive.
el caso de SGD, el código fuente está de

WWW.LINUX-MAGAZINE.ES Número 21 43
PRÁCTICO • Supergrub

hecho estructurado como aconsejan los


manuales: Algoritmo, títulos y traducciones common/S60_advanced/S10_grub/U
Listado 2: body_menu.lst
están en diferentes directorios. Esto conlleva S20_inspart original Pendrive (usb)
01 title OPTION[0]
ventajas desde el primer momento: Un des- Ing/S60_advanced/S10_grub/U
02 set choose_title=”OPTION[1]”
arrollador externo puede implementar la S20_inpart
03 call CHOOSEDIR/partition.lst
funcionalidad de los comandos de grub, un S20es/S60_advanced/S10_grub/U
04 set aux_device=$(out_device)
diseñador de interfaz de usuario puede S20_inspart
05 set choose_title=”OPTION[2]”
encontrar el mejor nombre y las explicacio-
06 call CHOOSEDIR/hard_disk.lst
nes más acertadas para una opción y, por hemos de copiar el contenido de los direc-
07 set aux_hd=$(out_hd)
último, el traductor puede traducir. Y todo torios:
08
ello sin pisarse los unos el trabajo de los
09 root $(aux_device)
otros. common/S60_advanced/S10_grub/U
10 setup ($(aux_hd))
Vamos a ver lo fácil que es añadir una S10_insmbr,Ing/S60_advanced/U
opción a Super Grub Disk. Los usuarios más S10_grub/S10_insmbr
experimentados puede que no quieran insta- S20es/U jes que ve el usuario. Estas variables serán
lar Grub directamente en el MBR sino que S60_advanced/S10_grub/S10_insmbr sustituidas por las definiciones que veremos
prefieran instalarlo en una partición y, así, a continuación.
desde un grub instalado en el MBR o desde La opción Restaurar Grub en el MBR tiene Nos situaremos en el árbol lng. Editare-
otro gestor de arranque, llamar a ese grub. una opción automática que no queremos mos los archivos options.sh y title.sh en
Veamos cómo crearíamos la opción de Res- duplicar en nuestro caso, que se corres-
taurar Grub a una partición. ponde al directorio auto. Borraremos el lng/S60_advanced/S10_grub/U
En primer lugar nos descargaremos el directorio auto de S20_inspart en los tres S20_inspart/manual/conf.
código fuente de SGD de [2]. Lo descompri- arboles y nos quedaremos con el manual,
miremos en un directorio nuevo y entramos que es donde trabajaremos ahora (veáse Lis-
en él. De momento sólo nos interesará el tado 4 para más detalles). Nos situaremos en Listado 3: isolinux.cfg de la
directorio dev_sgd. De los directorios que el árbol de common para la implementación. distro gluz2 Pendrive (usb)
vemos, common es el de la implementación, Antes de programar nada veamos lo que 01 #include <stdio.h>
lng trata los títulos y directorios como S10en, queremos hacer. Reinstalar grub en una par- 02 DEFAULT /casper/vmlinuz
S20es son las traducciones. Cada uno de tición implica que grub sepa dónde están los 03 GFXBOOT bootlogo
estos directorios contienen más o menos los archivos necesarios para que éste arranque 04 APPEND
mismos subdirectorios que se corresponden (normalmente stage1) y que sepa dónde preseed/file=/cdrom/preseed/gl
a las opciones de SGD. A la hora de hablar queremos que Grub realmente se instale. uz2.seed boot=casper
de common, lng y S10en me referiré a ellos Para pedirle al usuario qué partición es la initrd=/casper/initrd.gz
como árboles. que contiene los archivos de grub y dónde ramdisk_size=1048576
Veamos cómo se organizan los ficheros hay que instalarlo usaremos el comando call root=/dev/ram rw quiet splash
fuente de SGD. En el directorio common CHOOSEDIR/partition.lst. Los comandos —
tenemos el archivo body_menu.lst, donde se para establecer los ficheros de grub e insta- 05 LABEL live
guarda la verdadera implementación con larlos son root y setup y aceptan como 06 menu label ^Iniciar o
comandos de grub. En el directorio lng parámetros una partición. El comando call instalar Gluz 2
encontraremos dentro del directorio conf los nos guarda las particiones que elijamos en 07 kernel /casper/vmlinuz
ficheros: title.sh, options.sh y messages.sh una variable que usaremos en root y en 08 append
que definen respectivamente el título, los setup. preseed/file=/cdrom/preseed/gl
títulos de las opciones y los mensajes de un Podéis ver esto en el listado 1. En el lis- uz2.seed boot=casper
menú de SGD. Por último, en el directorio tado 2 veréis la opción para restaurar Grub initrd=/casper/initrd.gz
S20es encontraremos el fichero help.txt en el MBR. El listado es idéntico al de nues- ramdisk_size=1048576
donde viene la ayuda en castellano. tra opción excepto en que al usuario se le root=/dev/ram rw quiet splash
Para no complicar las cosas, partiremos de pide el disco duro destino en vez de la parti- —
una opción que ya tenemos. Copiaremos la ción y el comando setup instala ya no en 09 LABEL xforcevesa
opción Restaurar Grub al MBR. En los direc- una partición sino en el disco duro. Los 10 menu label Iniciar Gluz 2 en
torios siguientes (que crearemos): OPTION[1] y los OPTION[2] son los mensa- modo ^seguro
11 kernel /casper/vmlinuz
12 append
Listado 1: body_menu.lst modificado
preseed/file=/cdrom/preseed/gl
distro gluz2 Pendrive (usb) uz2.seed boot=casper
01 title OPTION[0] 06 call CHOOSEDIR/partition.lst xforcevesa
02 set choose_title=”OPTION[1]” 07 set grub_part=$(out_device) initrd=/casper/initrd.gz
03 call CHOOSEDIR/partition.lst 08 ramdisk_size=1048576
04 set grub_files=$(out_device) 09 root $(grub_files) root=/dev/ram rw quiet splash
05 set choose_title=”OPTION[2]” 10 setup $(grub_part) —

44 Número 21 WWW.LINUX-MAGAZINE.ES
Supergrub • PRÁCTICO

dos todos los avances en el desarrollo de


Grub.
SGD está basado en grub 0.97 y pode-
mos editar el kernel de grub si sabemos
cómo. Después de modificar los archivos
necesarios en dev_grub podremos ejecutar
el comando
Figura 2: Opciones para Linux. Arregla Arranque de GNU/Linux (GRUB) permite recuperar el
arranque de Linux. ./update_grub_binaries.sh

Para definir un título en SGD se le asigna La opción de Restaurar Grub en una par- desde ese mismo directorio para que, al
a la variable bash: SDG_TITLE[LEVEL] su tición manualmente, tal como la hemos probar nuestro SGD, esos cambios se vean
cadena de caracteres. Usaremos un con- copiado de la de Restaurar Grub en el MBR reflejados.
junto de palabras, que a su vez son manualmente, está englobada dentro de la En el momento de escribir este artículo
variables de bash, definidas en opción Restaurar Grub en una partición, SGD está traducido a inglés, castellano,
pero a esta opción no le hemos cambiado euskera, catalán, húngaro, alemán y fran-
dev_sgd/S10en/conf/translate.sh su titulo real. Editaremos cés. Cómo habéis podido ver, la traducción
sólo consiste en editar ficheros planos de
para ello. Estas palabras empiezan por tr lng/S60_advanced/S10_grub/U texto. Así que no será difícil para los tra-
para evitar confusiones con otras varia- S20_inspart/conf/title.sh ductores de portugués o italiano que lean
bles. este artículo ponerse manos a la obra y
title.sh tendría este aspecto: de forma análoga a como hemos antes, de mandar al equipo de desarrollo del SGD
tal forma que leamos: una traducción.
SDG_TITLE[LEVEL]=U
“$tr_manuallyU SDG_TITLE[LEVEL]=U Conclusiones
$tr_restore GRUB $tr_inU “$tr_restore GRUB $tr_inßs Windows y Linux, los dos sistemas opera-
$tr_part” $tr_part” tivos más usados hoy en día, pueden ser
arrancados o bien arreglados gracias a
Para definir una opción en SGD se le Una vez tenemos nuestra nueva opción Super Grub Disk de una manera asombro-
asigna a la variable bash: OPTION[i++] tendremos que probar que todo va bien. samente fácil. No habría que pensárselo
su cadena de caracteres de forma análoga Entraremos al directorio dev_sgd y, si tene- dos veces para añadir un cdrom de SGD al
a como se hizo con el titulo. El i++ nos mos qemu instalado, podremos ejecutar: kit de cds de emergencia y de paso hacerle
ayuda a crear un vector de opciones que una copia a tu amigo principiante de Linux
SGD empleará para crear los menúes. ./test_cdrom_with_qemu.sh para que vea que en Linux no todo es tan
options.sh nos quedaría como: difícil. 

Al cabo del proceso de “compilación” nos


OPTION[i++]=”$tr_manuallyU arrancará dentro de una ventana de qemu
$tr_restore GRUB $tr_inU el cdrom de SGD. Recursos
$tr_part”; Si no disponemos de qemu o si quere- [1] Documentación gráfica de Super
OPTION[i++]=”$tr_partU mos crear una iso para poder grabar un Grub Disk de Herman: http://users.
$tr_of GRUB”; cdrom real, usaremos desde el mismo bigpond.net.au/hermanzone/
OPTION[i++]=”$tr_restoreU directorio dev_sgd el comando SuperGrubDiskPage.html
$tr_to $tr_part”; [2] Pagina web de Super Grub Disk:
./build_cdrom_iso.sh/tmp/U http://adrian15.raulete.net/grub/
Ya sólo nos queda la traducción. En la tra- mi_propio_SGD.iso. [3] Pagina web de GNU GRUB 2: http://
ducción va normalmente la ayuda. En ella grub.enbug.org/FrontPage
tendremos que explicar que si uno instala Nótese que tal y como hemos hecho la [4] Descargas de Super Grub Disk: http://
en una partición de Windows, puede per- opción, ésta no nos informa si ha tenido adrian15.raulete.net/grub/
der todos sus datos. Así mismo sería éxito o no a la hora de instalar Grub en una tiki-file_galleries.php
interesante explicar cuáles son los siste- partición. Si miramos con detalle otras [5] Descargas de Super Grub Disk para
mas de ficheros que sí soportan la opciones de SGD, podremos añadir esa Pendrive: http://adrian15.raulete.net/
instalación de grub en su sector de arran- funcionalidad nosotros mismos. grub/tiki-list_file_gallery.
que. Para ello editaremos con cualquier La documentación relativa al desarrollo php?galleryId=5
editor de textos el fichero: de Super Grub Disk se encuentra en el [6] Descargas de Super Grub Disk para
directorio doc, aunque lo mejor sería ver Cdrom: http://adrian15.raulete.net/
S20es/S60_advanced/S10_grubU por encima el código fuente de los archivos grub/tiki-list_file_gallery.
/S20_inspart/help.txt de “compilación” de SGD y echarle un vis- php?galleryId=1
tazo extenso al blog de texto en [7] Pagina web de GNU GRUB: http://
y lo guardaremos como ASCII. doc/sgd_dev_blog.txt donde están recogi- www.gnu.org/software/grub/

WWW.LINUX-MAGAZINE.ES Número 21 45

S-ar putea să vă placă și