[001] manual linux: grub

15
Universidad Nacional de Trujillo Escuela de Informática http://untdebian.wordpress.com/ - 1 - GNU GRUB El GRand Unified Bootloader (GRUB) es un gestor de arranque múltiple que se usa comúnmente para iniciar dos o más sistemas operativos instalados en un mismo ordenador. Técnicamente, un gestor multiarranque es aquel que puede cargar cualquier archivo ejecutable y que contiene un archivo de cabecera multiarranque en los primeros 8 KB del archivo. Tal cabecera consiste en 32 bits de un número “mágico”, 32 de indicadores (flags), otros 32 de un número “mágico”, seguidos de información sobre la imagen ejecutable. Una de las características más interesantes es que no es necesario instalar una partición nueva o un núcleo nuevo, pudiendo cambiar todos los parámetros en el arranque mediante la Consola de GRUB. Mientras los gestores de arranque convencionales tienen una tabla de bloques en el disco duro, GRUB es capaz de examinar el sistema de archivos. Actualmente, soporta los siguientes sistemas de archivos: ext2/ext3 usado por los sistemas UNIX y su variante GNU/Linux ext4 en versiones de pruebas. ReiserFS. XFS de SGI (aunque puede provocar problemas). UFS. VFAT, como FAT16 y FAT32 que son usados por Windows 9.x NTFS usado por los sistemas Windows NT (a partir de Windows NT v.3.51). JFS de IBM. HFS de Apple Inc. Otros ejemplos de cargadores multiarranque son LILO y SYSLINUX. GRUB soporta 14 colores de fondo, que normalmente es negro. Algunas distribuciones de sistemas operativos que incluyen GRUB frecuentemente utilizan fondos personalizados con el logotipo de dicha distribución. Los usuarios de GRUB pueden también hacer sus propios fondos. Figura 1 Captura de Pantalla de GRUB por Default

Upload: gust-alva

Post on 11-Jun-2015

1.691 views

Category:

Documents


4 download

DESCRIPTION

Técnicamente es un gestor multiarranque, es aquel que puede cargar cualquier archivo ejecutable y que contiene un archivo de cabecera multiarranque en los primeros 8 KB del archivo.

TRANSCRIPT

Page 1: [001] Manual Linux: GRUB

Universidad Nacional de Trujillo Escuela de Informática

http://untdebian.wordpress.com/ - 1 -

GNU GRUB El GRand Unified Bootloader (GRUB) es un gestor de arranque múltiple que se usa comúnmente para iniciar dos o más sistemas operativos instalados en un mismo ordenador. Técnicamente, un gestor multiarranque es aquel que puede cargar cualquier archivo ejecutable y que contiene un archivo de cabecera multiarranque en los primeros 8 KB del archivo. Tal cabecera consiste en 32 bits de un número “mágico”, 32 de indicadores (flags), otros 32 de un número “mágico”, seguidos de información sobre la imagen ejecutable. Una de las características más interesantes es que no es necesario instalar una partición nueva o un núcleo nuevo, pudiendo cambiar todos los parámetros en el arranque mediante la Consola de GRUB. Mientras los gestores de arranque convencionales tienen una tabla de bloques en el disco duro, GRUB es capaz de examinar el sistema de archivos. Actualmente, soporta los siguientes sistemas de archivos:

• ext2/ext3 usado por los sistemas UNIX y su variante GNU/Linux • ext4 en versiones de pruebas. • ReiserFS. • XFS de SGI (aunque puede provocar problemas). • UFS. • VFAT, como FAT16 y FAT32 que son usados por Windows 9.x • NTFS usado por los sistemas Windows NT (a partir de Windows NT v.3.51). • JFS de IBM. • HFS de Apple Inc.

Otros ejemplos de cargadores multiarranque son LILO y SYSLINUX.

GRUB soporta 14 colores de fondo, que normalmente es negro. Algunas distribuciones de sistemas operativos que incluyen GRUB frecuentemente utilizan fondos personalizados con el logotipo de dicha distribución. Los usuarios de GRUB pueden también hacer sus propios fondos.

Figura 1 Captura de Pantalla de GRUB por Default

Page 2: [001] Manual Linux: GRUB

Universidad Nacional de Trujillo Escuela de Informática

http://untdebian.wordpress.com/ - 2 -

DESARROLLO El nombre de la versión mas utilizada de GRUB es denominada "GRUB Legacy". Esta versión es sobre la cual se solucionan los errores, pero no se añaden nuevas características. Los desarrolladores de GRUB han cambiado su enfoque a GRUB 2, una completa reescritura, cuyos objetivos incluyen la puesta a un GNU GRUB más limpio, más seguro, más sólido, más portátil y mucho más poderoso. GRUB 2 comenzó con el nombre de PUPA. PUPA fue apoyada por la Information-technology Promotion Agency (IPA) en Japón. PUPA se integró en el desarrollo de GRUB 2 alrededor del 2002, cuando la versión 0.9x de GRUB fue renombrada a GRUB Legacy. En febrero de 2008, GRUB 2 todavía sigue en desarrollo, no está listo para su uso en sectores de producción, y no está documentado. Algunos de los objetivos del proyecto incluyen el apoyo a plataformas no-x86, la internacionalización / localización, caracteres no ASCII, módulos dinámicos, gestión de memoria, un mini-lenguaje de scripting, la migración de plataforma específica (x86) de código a la plataforma de módulos específicos, y una marco orientado a objetos. PROCESO DE INICIO DE GRUB

1. El BIOS busca un dispositivo de inicio (como el disco duro) y pasa el control al registro maestro de inicio (Master Boot Record, MBR, los primeros 512 bytes del disco duro).

2. El MBR contiene la fase 1 de GRUB. Como el MBR es pequeño (512 bytes), la fase 1 sólo carga la siguiente fase del GRUB (ubicado físicamente en cualquier parte del disco duro). La fase 1 puede cargar ya sea la fase 1.5 o directamente la 2

3. GRUB fase 1.5 está ubicada en los siguientes 30 kilobytes del disco duro. La fase 1.5 carga la fase 2.

4. GRUB fase 2 (cargada por las fases 1 o 1.5) recibe el control, y presenta al usuario el menú de inicio de GRUB.

5. GRUB carga el kernel seleccionado por el usuario en la memoria y le pasa el control.

CARACTERISTICAS GRUB (GRUB 2, por ahora). Se han basado en un proyecto llamado PUPA cuya meta era desarrollar un GRUB más “limpio”, seguro, robusto y potente así como más portable y con soporte para diferentes idiomas. Sin embargo Grub2 es un paquete nuevo que permite:

• Permitir scripting, condicionales, bucles, variables y funciones. • Interfaz gráfica. • Extensibilidad mediante carga dinámica de módulos. • Portabilidad a distintas arquitecturas. • Internacionalización. Soporte para caracteres fuera del conjunto ASCII, mensajes

localizados, etc. • Mejor administración de memoria. • Marco de trabajo modular, jerárquico y orientado a objetos para sistemas de archivo,

archivos, dispositivos, unidades, terminales, comandos, tablas de partición y cargadores de SO.

• Instalación multiplataforma. • Modo de rescate para casos en los cuales es imposible iniciar. • Corregir errores de diseño de la versión anterior de GRUB, que no pueden resolverse

debido a compatibilidad inversa, por ejemplo el numerado de las particiones INSTALACIÓN Algunas distribuciones seleccionan GRUB como gestor de arranque predeterminado durante el proceso de instalación, por ejemplo Debian. Si queremos elegir LILO como gestor de arranque predeterminado, tendremos que seleccionarlo explícitamente durante el proceso de instalación. Si la instalación del paquete GRUB la realizamos en un sistema en funcionamiento y no durante el proceso de instalación hay que tener en cuenta que no sobrescribe el gestor de arranque que

Page 3: [001] Manual Linux: GRUB

Universidad Nacional de Trujillo Escuela de Informática

http://untdebian.wordpress.com/ - 3 -

tengamos instalado anteriormente. Tendremos que sobrescribir el sector de arranque explícitamente como se vera.

1. Unidades de Disco GRUB describe los discos duros como (hd0), (hd1), (hd2) y así sucesivamente. Grub no hace distinciones entre discos SCSI e IDE. El primer disco que reconoce el BIOS será (hd0), el segundo (hd1), etc. Todas estas anteriores denominaciones hacen referencia al disco duro completo. De la misma forma comienza a numerar las particiones desde cero; así (hd0,0) indica la primera partición del primer disco duro. Las particiones extendidas de linux comienzan a enumerarse a partir de 4, independientemente de las particiones primarias existentes. Por ejemplo (hd0,4) sería la primera partición extendida del primer disco duro. Los disquetes se denominan utilizando el mismo criterio, el primero será (fd0), el segundo (fd1), etc. Hay que resaltar que las numeraciones siempre comienzan desde cero.

2. Grub en un Disquete Instalación Es aconsejable disponer de un disquete de arranque para poder iniciar el sistema en caso de fallo en el arranque por una instalación defectuosa en el disco duro o por que otro sistema operativo borre el gestor de arranque durante su instalación.

Para instalar grub en el disquete lo introducimos en la unidad y ejecutamos, como root:

# mkfs -t ext3 /dev/fd0 # mount -t ext3 /dev/fd0 /mnt/floppy # grub-install --root-directory=/mnt/floppy fd0 # umount /mnt

O también volcando directamente los ficheros:

# dd if=/ruta-acceso/stage1 of=/dev/fd0 count=1 # dd if=/usr/ruta-aceso/stage2 of=/dev/fd0 seek=1 bien # cat /ruta-acceso/grub/stage{1,2} >> /dev/fd0

en general, escribir los ficheros stage1 y stage2 en el disquete. Arranque Para poder arrancar linux con un disquete grub necesitaremos conocer algunos datos, en particular donde está el núcleo y cuale son las particiones de arranque de los distintos sistemas.

Suponiendo que tenemos instalado Linux en /dev/hda3 como partición raíz y Windows en /dev/hda1.

Arrancamos el sistema desde el disquete y nos debe aparecer el indicador:

grub>

lo que quiere decir que grub está esperando nuestra órdenes.

Page 4: [001] Manual Linux: GRUB

Universidad Nacional de Trujillo Escuela de Informática

http://untdebian.wordpress.com/ - 4 -

Para iniciar Linux suponiendo que /boot está en una partición independiente (por ejemplo /dev/hda2) tecleamos:

grub> root (hd0,1) grub> kernel /vmlinuz-2.4.20-18-8 root=/dev/hda3 grub> initrd /initrd-2.4.20-18-8.img grub> boot

es decir todas las rutas de acceso a ficheros son relativas a la partición /boot.

Primero indicamos cual es la partición correspondiente a /boot, que si en nuestro caso es /dev/hda2, entonces en notación "grub" será (hd0,1).

En segundo lugar indicamos el fichero que contiene el núcleo y a continuación le pasamos los parámetros necesarios. En particular root=/dev/hda3 indica cual es la partición raíz del sistema operativo.

Por último boot inicia la carga del sistema.

Si no tuviéramos una partición independiente para /boot, si tuviéramos /boot como un directorio de l partición raíz, entonces deberíamos poner:

grub> root (hd0,2) grub> kernel /boot/vmlinuz-2.4.20-18-8 root=/dev/hda3 grub> initrd /boot/initrd-2.4.20-18-8.img grub> boot

En este caso la partición raíz de grub y la partición raíz del sistema coinciden y en el ejemplo es /dev/hda3 o bien (hd0,2).

Ahora la ruta al fichero que contiene el núcleo debe incluir el directorio /boot, que ya no es una partición independiente. Igual para con initrd.

Como antes, una vez escritos los parámetros procedemos a la carga con boot.

Para arrancar Windows: grub> root (hd0,0) grub> makeactive grub> chainloader +1 grub> boot

Para evitar errores al teclear podemos usar el tabulador para completar las órdenes que tenemos que introducir.

Hay que tener en cuenta que el teclado que utiliza grub es el US, por lo que puede que la distribución de las teclas tengan algunas diferencias sobre lo que refleja el teclado.

3. Grub en el Disco Duro Antes de instalar en el disco duro deberemos asegurarnos que el disquete de arranque creado funciona correctamente.

Page 5: [001] Manual Linux: GRUB

Universidad Nacional de Trujillo Escuela de Informática

http://untdebian.wordpress.com/ - 5 -

Una vez que nos hemos asegurado que no vamos a perder el arranque ejecutamos: # /sbin/grub-install --root-directory=/boot /dev/hda

con lo cual estamos rescribiendo el MBR (Master Boot Record) de /dev/hda. En este caso suponemos que /boot está instalado en una partición independiente.

Si /boot es un directorio más de la partición raíz del sistema, tendremos que poner:

# grub-install /dev/hda

Cuando arrancamos nos debe aparecer lo mismo que cuando iniciamos desde el disquete. El proceso posterior es idéntico: tenemos que introducir las órdenes a mano.

Reinstalar Grub en el disco duro Por alguna circunstancia puede que se haya deteriorado el arranque de grub, por ejemplo si hemos alterado las particiones del disco o hemos instalado otro sistema operativo.

Si arrancamos el sistema con un disco de rescate, por ejemplo, el de Debian, montará el sistema Linux del disco duro bajo /mnt/sysimage. Si arrancamos con alguna distribución en un cd autónomo, también podemos montar el sistema instalado en disco en /mnt/sysimage.

Entonces ejecutamos:

# chroot /mnt/sysimage

# grub-install /dev/hda

Otra posibilidad es arrancar con un cd autónomo, abrir una shell de Grub y reinstalarlo en disco desde allí:

Primero buscamos la partición raíz de Grub, que puede estar en la partición raíz del sistema o en una partición independiente y a continuación instalamos Grub. A continuación un ejemplo de la secuencia de órdenes que tendríamos que realizar:

# grub GNU GRUB version 0.94 (640K lower / 3072K upper memory) [Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions. Anywhere else TAB lists the possible completions of a device/filename.] grub> find /boot/grub/stage1 Error 15: File not found grub> find /grub/stage1 (hd0,0) grub> root (hd0,0) grub > setup(hd0) y habríamos instalado GRUB en el MBR. Si quisiéramos instalarlo en una partición ejecutaríamos, por ejemplo: grub> setup (hd0,0) pero teniendo en cuenta que este arranque habría que enlazarlo con otro previo.

Page 6: [001] Manual Linux: GRUB

Universidad Nacional de Trujillo Escuela de Informática

http://untdebian.wordpress.com/ - 6 -

4. Automatización del Arranque

Para no tener que introducir las órdenes a mano cada vez que queremos arrancar el sistema editaremos el fichero /boot/grub/grub.conf o menu.lst, esto depende de la denominación que le dé el sistema al fichero de configuración. Hay que tener en cuenta que el fichero tiene que estar en la partición /boot que es la única inicialmente accesible por grub y dónde espera encontrarlo.

Hay una partición /boot. Esto significa que todas las rutas de núcleo e initrd son relativas a /boot/, root (hd0,1).

En /boot/grub/grub.conf o menu.lst escribimos:

default=0 timeout=10 splashimage=(hd0,1)/grub/splash.xpm.gz title Red Hat Linux (2.4.18-14) root (hd0,1) kernel /vmlinuz-2.4.18-14 ro root=/dev/hda3 initrd /initrd-2.4.18-14.img title Windows 98 rootnoverify (hd0,0) chainloader +1 Si /boot está en la partición raíz del sistema (/dev/hda3) entonces tendríamos: default=0 timeout=10 splashimage=/boot/grub/splash.xpm.gz title Red Hat Linux (2.4.18-14) root (hd0,2) kernel /boot/vmlinuz-2.4.18-14 ro root=/dev/hda3 initrd /boot/initrd-2.4.18-14.img title Windows 98 rootnoverify (hd0,0) chainloader +1

No es necesario ejecutar grub cada vez que realicemos una modificación de este fichero.

El significado de la línea lo podemos ver en:

• default=0 indica que el sistema predeterminado que se carga el el primero. • timeout=10 deja un margen de 10 segundos para seleccionar un sistema antes de

cargar el predeterminado • splashimage indica la imagen que se muestra en la pantalla de inicio. • title indica el texto que aparece en el menú de pantalla. • root indica qué partición contiene el núcleo linux y puede ser o no la partición

raíz del sistema (/). Así root (hd0,0) indica a grub que el núcleo se encuentra en la primera partición del primer disco duro (/dev/hda).

• kernel se utiliza para indicar las características de carga del núcleo. Incluye el fichero del núcleo, la partición raíz del sistema y en general los parámetros que queremos pasarle al núcleo.

• initrd indica donde se localiza la imagen del disco de memoria.

Page 7: [001] Manual Linux: GRUB

Universidad Nacional de Trujillo Escuela de Informática

http://untdebian.wordpress.com/ - 7 -

• map map permite modificar la asignación de particiones. • rootnoverify indica a Grub que arranque la partición de Windows pero sin

intentar montarla. • chainloader +1 indica a Grub que encadene el cargador propio de otro sistema

operativo.

5. Uso de Grub

Pasar opciones al núcleo Puede que interese pasar opciones al núcleo para el arranque. Estas opciones se pueden pasar tras la orden kernel. Por ejemplo: kernel /boot/vmlinuz-2.4.19-12m root=/dev/hda1 vga=ask hdc=ide-scsi Modificar la asignación de particiones En ciertas ocasiones puede que interese modificar la asignación de particiones predeterminadas. Por ejemplo, Windows no se puede iniciar si no lo tenemos instalado en la primera partición del primer disco duro. Para estos casos usamos la orden map que modifica la asignación. Por ejemplo para que el sistema vea la segunda partición como si fuera la primera ejecutaríamos:

grub> map (hd0) (hd1)

grub> map (hd1) (hd0) grub> root (hd1,0) grub> makeactive grub> chainloader +1 grub> boot

Esto debería iniciar Windows instalado en la segunda partición.

Instalar Windows en cualquier partición Suponemos que tenemos linux instalado en nuestro sistema y tenemos la primera partición ocupada y queremos instalar Windows en una partición distjajaja inta y vacía o con datos que no queramos conservar, por ejemplo en /dev/hda3.

Tendremos que usar las herramientas del sistema de forma que la distribución de particiones sea algo similar a la siguiente salida de fdisk:

Device Start End System /dev/hda1 1 3 Linux /dev/hda2 4 905 Extended /dev/hda3 906 1222 Win95 FAT32 (LBA) /dev/hda5 4 36 Linux swap /dev/hda6 37 905 Linux

En este caso tenemos /boot en /dev/hda1 y la partición raíz del sistema en /dev/hda6.

Es conveniente anotar estos datos de fdisk antes de comenzar la instalación para que en caso de que se borrara la tabla de particiones, poder restaurarla en caso de emergencia.

Page 8: [001] Manual Linux: GRUB

Universidad Nacional de Trujillo Escuela de Informática

http://untdebian.wordpress.com/ - 8 -

Ahora editamos el fichero grub.conf o menu.lst:

default=0 timeout=10 splashimage=(hd0,0)/grub/splash.xpm.gz title Red Hat Linux (2.4.20-18-0) root (hd0,0) kernel /vmlinuz-2.4.20-18.8 ro root=/dev/hda6 initrd /initrd-2.4.7-10.img title Windows 98 map (hd0,0) (hd0,2) map (hd0,2) (hd0,0) rootnoverify (hd0,2) chainloader +1 title Disco arranque DOS map (hd0,0) (hd0,2) map (hd0,2) (hd0,0) chainloader (fd0)+1 title CD arranque DOS map (hd0,0) (hd0,2) map (hd0,2) (hd0,0) chainloader (hd2)+1

Las líneas map de la seccion Windows 98 son básica para que la instalación funcione de forma correcta y poder engañar a Windows para que crea que se está instalado en la primera partción del primer disco duro. Si no lo hacemos así, Windows borrará la tabla de particiones y no podremos arrancar.

La seccion "Disco arranque DOS" es necesaria si se va a arrancar desde un disquete para iniciar la instalación de Windows o arrancar Windows desde un disquete con posterioridad. De la misma forma "CD arranque DOS" es necesaria si queremos iniciar la instalación desde un CD. En este caso suponemos que el CD se corresponde a la unidad /dev/hdc.

Una vez guardado el fichero ya es operativo, como ya hemos visto, no es necesario volver a ejecutar grub.

Antes de continuar debemos comprobar que el nuevo arranque funciona. Reiniciamos el sistema y arrancamos Linux. Si el arranque falla debemos recurrir al disquete de emergencia y corregir el fichero.

Ahora, para la instalación de Windows debemos arrancar con grub. Tenemos que quitar todos los CD o disquetes de sus unidades. Una vez iniciado grub insertamos el medio de instalación en su correspondiente unidad y seleccionamos la opción adecuada de grub, disquete o CD.

Modificar la imagen de inicio Para modificar la imagen de inicio tendremos que crear una imagen xpm de 14 colores y 640x480 pixels.

Si tenemos una imagen llamada inicio.jpg, podemos hacer (necesitamos ImageMagick):

Page 9: [001] Manual Linux: GRUB

Universidad Nacional de Trujillo Escuela de Informática

http://untdebian.wordpress.com/ - 9 -

$ convert -geometry 640x480 -colors 14 inicio.jpg inicio.xpm Ahora comprimimos la imagen con gzip y la copiamos en /boot/grub. Por último editamos /boot/grub/grub.conf o menu.lst y ponemos: # Color de frente foreground = ffffff # color de fondo background = 000000 # Mostrar la imagen splashimage = (hd0,1)/boot/grub/inicio.xpm.gz

6. Otros ejemplos de arranque con GRUB

Estos ejemplos están tomados de la página info de Grub

Carga GNU/Hurd del primer disco duro. # For booting GNU/Hurd title GNU/Hurd root (hd0,0) kernel /boot/gnumach.gz root=hd0s1 module /boot/serverboot.gz Carga GNU/Linux, pero del segundo disco duro title GNU/Linux kernel (hd1,0)/vmlinuz root=/dev/hdb1 Carga Match con un núcleo en diquete title Utah Mach4 multiboot root (hd0,2) pause Insert the diskette now^G!! kernel (fd0)/boot/kernel root=hd0s3 module (fd0)/boot/bootstrap

En este caso tenemos el sistema de ficheros raíz en hd0s3. También contiene un línea de pausa que hace que GRUB muestre un texto y espere antes de ejecutar el resto de las órdenes.

Cargar un núcleo FreeBSD title FreeBSD root (hd0,2,a) kernel /boot/loader

Carga un núcleo FreeBSD de la partición `a' partition de la tecera parte del primer disco duro.

Cargar OS/2 title OS/2 root (hd0,1) makeactive chainloader +1

Page 10: [001] Manual Linux: GRUB

Universidad Nacional de Trujillo Escuela de Informática

http://untdebian.wordpress.com/ - 10 -

Carga el fichero /boot/chain.os2

Cargar Windows NT2000/XP o Windows9X title Windows NT / Windows 95 boot menu root (hd0,0) makeactive chainloader +1 Para instalar Grub en el disco duro title Install GRUB into the hard disk root (hd0,0) setup (hd0)

Esto reinstala grub en el disco duro.

Cambiar los colores title Change the colors color light-green/brown blink-red/blue

7. Imagenes en GRUB Ya tiene instalado Grub pero usted desea tener su propia Imagen. Puede ser cualquiera, la que usted desee. Primer Paso. Convirtiendo la Imagen que vamos a Poner de Fondo de Grub. Escogemos cualquier imágen Y la convertimos a .png con Gimp Luego esta imágen la escalamos a una resolución 640 x 480 Una vez convertida la Imágen la pegamos en usr/share/images/desktop-base o cualquier directorio de nuestra elección. (ver mas adelante) Segundo Paso. Activando la Imagen Para ello debemos saber que el archivo /boot/grub/grub.cfg reemplaza el antiguo /boot/grub/menu.lst y es generado automáticamente a partir de los scripts ubicados en /etc/grub.d. Estos son (si no hemos agregado alguno) 00_header 05_debian_theme 10_hurd 10_linux 10_linux.dpkg-dist 30_os-prober 40_custom en este caso 05_debian_theme es el que se ocupa del theme, ósea el que nos interesa, por lo tanto las modificaciones las haremos sobre el mismo. Buscamos las siguientes lineas: # check for usable backgrounds use_bg=false if [ "$GRUB_TERMINAL_OUTPUT" = "gfxterm" ] ; then for i in {/boot/grub,/usr/share/images/desktop-base}/moreblue-orbit-grub.{png,tga} ; do

Page 11: [001] Manual Linux: GRUB

Universidad Nacional de Trujillo Escuela de Informática

http://untdebian.wordpress.com/ - 11 -

............ Aquí podemos apreciar los directorios en que serán buscadas las imágenes a utilizar como fondo y la imagen propiamente dicha, cambiar a gusto el nombre de la imagen Atención, en el nombre de la imagen NO deberemos incluir la extensión, como se aprecia arriba. Una vez hechos los cambios deseados debemos ejecutar: #grub-mkconfig (antes update-grub) para que se genere nuevamente el /boot/grub/grub.cfg y así lograr que los cambios sean permanentes. Ahora solo Reiniciamos Nuestra Máquina y tendremos la Nueva imagen de Grub personalizada.

8. Seguridad en el Arranque Una cuestión que siempre surge cuando se trata el proceso de arranque es la forma de limitar el acceso a la carga del sistema operativo. Esto tienes que pensarlo bien antes de hacerlo. Piensa que si por ejemplo, se trata de un sistema servidor será necesaria tu presencia para poder reiniciar el equipo que se haya apagado por un fallo en el suministro eléctrico.

Por otro lado, como hemos visto, Grub permite una Shell y poder editar los parámetros de arranque, cosa que puede que también nos interese limitar; no limitar el arranque, sino limitar la modificación de las características del arranque.

Page 12: [001] Manual Linux: GRUB

Universidad Nacional de Trujillo Escuela de Informática

http://untdebian.wordpress.com/ - 12 -

La Shell de Grub también proporciona acceso al sistema de ficheros, a que se pueda acceder a información almacenada en ficheros del sistema. Por ejemplo cat /etc/passwd mostraría la lista de usuarios.

password: Añadir contraseña general Las propiedades de contraseña permiten limitar el acceso al Shell de Grub mediante contraseña y así impedir que se puedan realizar operaciones interactivas.

El uso de contraseñas se indica en Grub con:

password [--md5] contraseña [fichero_configuración]

De esta forma se elimina el acceso al Shell hasta que pulsemos la tecla P en introduzcamos la contraseña correcta.

Como no es buena política almacenar las contraseñas en texto limpio, lo mejor es añadir la opción ‘--md5’ y poner una contraseña cifrada md5.

Para obtener el valor cifrado de la contraseña podemos usar la orden `md5crypt' en un Shell de Grub:

Ejecutamos

$ grub

y nos aparece:

grub>

Ahora ejecutamos la orden md5crypt e introducimos la contraseña cuando la pida:

grub> md5crypt

Password: **** Encrypted: $1$VrTfp0$XIHnjm/6MAUPrOzCPHJZ30 grub>

y temos la contraseña cifrada con md5. En este caso la contraseña es "hola". Ahora sólo tenemos que cortar y pegar:

password --md5 $1$VrTfp0$XIHnjm/6MAUPrOzCPHJZ30

Es posible también indicar un fichero de configuración como argumento de password. Este fichero será el que se cargue como fichero de configuración cuando proporcionemos una contraseña válida. Por ejemplo:

password hola /boot/grub/menu-admin.lst

Observamos que un password global no impide el arranque normal del sistema, simplemente impide que se pueda alterar.

Page 13: [001] Manual Linux: GRUB

Universidad Nacional de Trujillo Escuela de Informática

http://untdebian.wordpress.com/ - 13 -

lock: bloquear arranques

En una máquina podemos tener varios sistemas operativos instalados, pero no queremos que todo el mundo pueda utilizarlos todos, queremos que para acceder a cierto sistema haya que introducir una contraseña.

title Boot DOS lock rootnoverify (hd0,1) makeactive chainload +1

Debemos poner lock justo tras `title', ya que un usuario podría ejecutar órdenes de una opción del menú hasta encontrar `lock'.

Arranque con contraseña Cuando poníamos lock estábamos utilizando la contraseña global de grub, pero también existe la posibilidad de agregar "password" a un arranque concreto. En este caso el comportamiento es distinto, se solicita esa contraseña para realizar el arranque. Así podemos tener una contraseña para cada uno de los sistemas operativos que tengamos instalados.

9. Mensajes de Error de Grub El arranque de grub se divide en dos etapas, Stage 1 y Stage 2 y cada una de ellas tiene sus mensajes de error.

En general, los errores en Stage 1 se limitan a mostrar un error y detener el sistema.

Los errores en Stage 2 interrumpen la operación, muestran un mensaje y si es posible continúa con la operación, por ejemplo solicitanmdo al usuario que lo corrija.

Hard Disk Error El intento de lectura del disco no permite averiguar su geometría y su tamaño. Floppy Error Es el mismo error anterior, pero se indica de forma separada por el orden de comprobación. Read Error Error de lectura al intentar leer stage2. Geom Error La ubicación en disco de stage2 no está en la parte del disco accesible mediante llamadas al BIOS. Puede deberse a que hayamos modificado la configuración del disco, o que hayamos cambiado el disco de máquina o que Grub no esté bien instalado. 1 : Filename must be either an absolute filename or blocklist

Este error se origina cuando un nombre de fichero solicitado por grub no verifica la sintaxis adecuada.

2 : Bad file or directory type Este error se origina cuando un fichero soliciatado por grub no es un fichero regular sino un enlace simbólico, un directorio o una tubería con nombre.

3 : Bad or corrupt data while decompressing file Este error se origina cuando el código de descompresión devuelve un error. Normalmente se trata de un fichero dañado.

Page 14: [001] Manual Linux: GRUB

Universidad Nacional de Trujillo Escuela de Informática

http://untdebian.wordpress.com/ - 14 -

4 : Bad or incompatible header in compressed file Este error se origina cuando laa cabecera de un fichero comprimido es incorrecta

5 : Partition table invalid or corrupt Este error se origina cuando verificación del estado de la tabla de particiones falla. Es un mal síntoma.

6 : Mismatched or corrupt version of stage1/stage2 Este error se origina cuando ela orden de instalación apunta a versiones incompatibles o dañadas de stage1 o stage2. En general no puede detectar los daños y en este caso sólo se trata de los números de versión.

7 : Loading below 1MB is not supported Este error se origina cuando la dirección más baja de un núcleo está por debajo de la cota de 1MB. El formato zImage de Linux es un caso especial y se puede manejar ya que tiene una dirección de carga fija y tamaño máximo.

8 : Kernel must be loaded before booting Este error se origina si le decimos a GRUB que ejecute una secuencia de arranque sin haber indicado un núcleo.

9 : Unknown boot failure Este error se origina por razones desconocidas.

10 : Unsupported Multiboot features requested Este error se origina cuando las características Multiboot requieren una característica que no se reconoce. El núcleo requiere una gestión especial que GRUB probablemente no tiene.

11 : Unrecognized device string Este error se origina cuando se espera un nombre de dispositivo y el texto encontrado no cumple las reglas de nombres de dispositivos.

12 : Invalid device requested Este error se origina cuando un nombre dispositivo es válido y tiene un error no contemplado en otro error.

13 : Invalid or unsupported executable format Este error se origina cuando la imagen del núcleo cargada no se reconoce como Multiboot o alguno de los formatos nativos admitidos : Linux zImage o bzImage, FreeBSD o NetBSD.

14 : Filesystem compatibility error, cannot read whole file Alguno de los sistema de fichero que tiene que leer GRUB tiene limitado el t

amaño de lectura de ficheros. Se corrige eliminado el límite. 15 : File not found

Este error se origina cuando uno se puede encontrar un fichero solicitado, pero la ruta de acceso es correcta.

16 : Inconsistent filesystem structure Este error lo devuelve el sistemade ficheros para indicar un error interno debido al estado de la estructrua del sistema de ficheros que no encaja con lo previsto. Puede deberse a un sitema de ficheros dañado o algún bug de GRUB para manejar ese sistema de ficheros

17 : Cannot mount selected partition Este error se origina cuando una partición existe pero GRUB no la reconoce.

18 : Selected cylinder exceeds maximum supported by BIOS Este error se origina cuando una lectura intenta ir más alla del área direccionada por el BIOS. Este error se origina cuando se trata de leer bloques lineales. Este problema lo podemos encontrar en dicos (E)IDE mayores 512MB o de 8GB en máquinas antiguas.

19 : Linux kernel must be loaded before initrd Este error se origina cuando ponemos initrd antes que kernel.

20 : Multiboot kernel must be loaded before modules Este error se origina cuando la orden de carga de módulos se usa antes que de cargar un núcleo Multiboot. Sólo tiene sentido en este caso ya que GRUB no tiene idea de

Page 15: [001] Manual Linux: GRUB

Universidad Nacional de Trujillo Escuela de Informática

http://untdebian.wordpress.com/ - 15 -

como comunicar la presencia de tales módulos a un núcleo que no sea Multiboot-aware.

21 : Selected disk does not exist Este error se origina cuando otodo o parte un nombre de dispositivo referido a disco o dispositivo BIOS no está presente o no se reconoce por la BIOS en el sistema.

22 : No such partition Este error se origina cuando no existe la partición especificada

23 : Error while parsing number Este error se origina si GRUB espera leer un número y encuantra datos incorrectos.

24 : Attempt to access block outside partition Este error se origina cuando una dirección lineal de bloque está fuera de la partición. Normalmente se debe daños en el sistema de ficheros o a algun bug detectado por GRUB.

25 : Disk read error Se ha producido un error de lectur en el disco.

26 : Too many symbolic links Demasiados enlaces simbólicos. El número máximo es 5. Es posible que los enlaces tengan un bucle

27 : Unrecognized command Este error se origina cuando introducimos un nombre de orden no reconocido por grub. Puede tratarse de un error al escribir.

28 : Selected item cannot fit into memory Este error se origina cuando tratamos da cargar algo en memoria y no cabe.

29 : Disk write error Error producido cuando grub trataba de escribir en disco. Normalmente sólo puede ocurrir durante la instalación o con la orden makeactive.

30 : Invalid argument Este error se origina cuando el argumento para algunaorden es incorrecto.

31 : File is not sector aligned Este error se origina cuando accede a una partición ReiserFS por lista de bloques (v.g. la orden `install'). En este caso debería montar la artición con la opción `notail'.

32 : Must be authenticated Este error se origina cuando se trata de acceder a un arranque con "lock". Se debe i

ntroducir una contraseña válida. 33 : Serial device not configured

Este error se origina cuando trata de cambiar el terminal a uno serie pero no se ha activado ningún dispositivo serir

34 : No spare sectors on the disk Este error se origina cuando no queda espacio libre. Sucede intenta introducir Stage 1.5 en los sectores no utilizados tras el MBR, pero la primera partición comienza justo tras el MBR o los está usando EZ-BIOS.

BIBLIOGRAFIA Wikipedia – GNU GRUB, http://es.wikipedia.org/wiki/GNU_GRUB Sitio Oficial de Grub, http://www.gnu.org/software/grub/ Sitio Oficial de Debian, http://www.esdebian.org/ Manual de Grub desde GNU, http://www.gnu.org/software/grub/manual/html_node/