En este artículo, aprenda a elegir, instalar, y configurar un gestor de arranque para un sistema Linux. Aprenda a:
- Configurar múltiples opciones de ubicaciones de arranque y arranques de backup
- Instalar y configurar un cargador de arranque como GRUB o LILO
- Agregar parámetros de arranque o ejecutar cargadores de arranque al momento del arranque
- Solucionar problemas comunes de arranque
- Arrancar un sistema GRUB 2 utilizando GRUB Legacy
Este artículo analiza los procesos de arranque de la PC y los dos tipos de cargadores de arranque principales utilizados en Linux,—LILO y GRUB—,y lo ayuda a preparar el objetivo 102.2 del Tema 102 el examen 101 del nivel junior en administración (LPIC-1) del Linux Professional Institute. También le brindamos una introducción a GRUB 2,aunque éste no forme parte de los requisitos para los objetivos del examen actual. Estos objetivos tienen un valor de ponderación de 2.
Para aprovechar al máximo los artículos de esta serie usted debería poseer conocimientos básicos sobre Linux y tener un sistema de trabajo Linux para poder practicar los comandos explicados en este artículo. Además debería estar familiarizado con la configuración del disco rígido que se analiza en el artículo "Learn Linux 101: Hard disk layout." A veces, el formato de los datos de salida de diferentes versiones de un mismo programa poseen diferente formato, por lo cual los resultados que obtenga pueden no siempre ser los mismos que los presentados en los listados y figuras que aparecen en este artículo.
Nota: Las imágenes que aparecen en este artículo son capturas de pantalla tomadas previamente durante el proceso de arranque. Si usted está leyendo este artículo en un lector de pantalla, puede encontrar ventajoso tener los archivos de configuración correspondientes como referencia; descárguelos de la sección Download que se encuentra más adelante en este artículo.
Generalidades sobre el proceso de arranque
Antes de comenzar a ver LILO y GRUB, revisemos cómo se produce la puesta en marcha o arranquede una PC. El código denominado BIOS (Basic Input Output Service) se almacena en una memoria no volátil como por ejemplo ROM, EEPROM, o la memoria flash. Cuando se enciende o reinicia una PC, se ejecuta este código. Por lo general, se ejecuta POST (autodiagnóstico de encendido) para verificar la máquina. Por último, se carga el primer sector desde el registro de arranque maestro (MBR) de la unidad de arranque.
Según lo analizado en el artículo "Learn Linux 101: Hard disk layout," el MBR también contiene la tabla de particiones, por lo tanto el tamaño del código ejecutable en el MBR es menor a 512 bytes, lo cual no es demasiado. Obsérvese que cada disco, aún los discos flexibles, contiene el código ejecutable en su MBR, aún si el código sólo es suficiente para colocar un mensaje como "Non-bootable disk in drive A:" (Unidad A: sin disco de arranque). Este código cargado por BIOS desde este primer sector se denomina cargador de arranque de primera etapa o cargador de arranque de etapa 1 .
El MBR estándar de un disco duro utilizado por los sistemas operativos MS DOS, PC DOS, y Windows verifica la tabla de particiones para encontrar una partición primaria en el disco de arranque marcada como activa, carga el primer sector de dicha partición, y pasa el control a la primera parte del código cargado. Esta nueva parte del código se conoce también como registro de arranque de partición. El registro de arranque de partición es en realidad otra etapa del cargador de arranque de etapa 1, que sólo tiene inteligencia suficiente para cargar un conjunto de bloques desde una partición. Este nuevo código se denomina cargador de arranque de etapa 2.. Según la manera en que MS-DOS y PC-DOS lo utilizan, el cargador de etapa 2 procede a cargar directamente el resto del sistema operativo. Así es cómo su sistema operativo se pone en marcha por sí mismo hasta funcionar correctamente.
Esto funciona en un sistema que tiene un único sistema operativo. ¿Qué sucede si usted cuenta con múltiples sistemas operativos, digamos OS/2, Windows XP, y tres distribuciones distintas de Linux? Usted podría usar algún programa (como DOS FDISK) para modificar la partición activa y reiniciar. Esto resulta engorroso. Además, un disco puede tener sólo cuatro particiones primarias, y el MBR estándar puede arrancar sólo una partición primaria; éste no puede arrancar desde una partición lógica. Pero en nuestro ejemplo hipotético hay cinco sistemas operativos, cada uno de los cuales necesita una partición. ¡Qué problema!
La solución consiste en el uso de algún código especial que permita al usuario elegir qué sistema operativo arrancar. Por ejemplo:
- Loadlin
- Programa ejecutable de DOS que es invocado desde un sistema DOS en funcionamiento para arrancar la partición Linux. Esto se hacía con frecuencia cuando la configuración de un sistema multiarranque era un proceso complejo y riesgoso.
- OS/2 Boot Manager
- Programa que está instalado en una pequeña partición dedicada. La partición estaba marcada como activa, y el MBR estándar iniciaba el Gestor de Arranque OS/2, que ofrecía un menú que permitía elegir qué sistema operativo arrancar.
- Un cargador de arranque inteligente
- Programa que puede residir en una partición del sistema operativo y es invocado
ya sea por el registro de arranque de partición de una partición activa o por el registro
de arranque maestro. Por ejemplo:
- BootMagic, parte de Norton PartitionMagic
- LILO, LInux LOader (el cargador de Linux)
- GRUB, cargador de arranque unificado de GRand (ahora conocido como GRUB Legacy)
- GRUB 2, nuevo cargador de arranque que está comenzando a aparecer en distribuciones comunes
Evidentemente, si usted puede controlar el sistema en un programa que tiene más de 512 bytes de código para realizar esta tarea, no será difícil permitir el arranque desde particiones lógicas, o desde particiones que no se encuentran en la unidad de arranque. Todas estas soluciones permiten estas posibilidades, debido a que sólo pueden cargar un registro de arranque desde una partición arbitraria, o porque poseen cierto entendimiento de qué archivo o archivos cargar para iniciar el proceso de arranque.
Cuando un cargador de arranque toma el control, éste podría cargar posiblemente otro gestor de arranque. Esto se denomina carga encadenada, y por lo general sucede cuando el gestor de arranque que se ubica en el registro de arranque maestro (MBR) carga el cargador de arranque que se encuentra en el registro de arranque de una partición. Esto casi siempre ocurre cuando a un cargador de arranque de Linux se le pide que arranque una partición de Windows o de DOS, pero también puede suceder cuando al cargador de arranque de Linux de un sistema se le pide que cargue el cargador de arranque de otro sistema. Por ejemplo, usted podría utilizar LILO en el registro de arranque de una partición para iniciar el sistema Linux en esa partición.
De aquí en adelante, nos concentraremos en LILO y GRUB, dado que estos son los cargadores de arranque incluidos en la mayoría de las distribuciones de Linux. LILO hace rato se utiliza, y GRUB es más nuevo. El GRUB original es ahora lo que se conoce como GRUB Legacy, y GRUB 2 continúa en proceso bajo el auspicio de la Fundación de Software Libre (vea Resources por más detalles). Analizaremos brevemente a GRUB 2, para darle una idea de las diferencias principales y del modo en que GRUB y GRUB 2 pueden coexistir. En el resto del artículo nos referiremos a GRUB Legacy como GRUB, salvo que el contexto específicamente de a entender GRUB 2. Una nueva versión de LILO denominada ELILO (la cual es una diseñada para los sistemas de arranque que utilizan Intel's Extensible Firmware interface, o EFI, en vez de BIOS) se encuentra disponible. Vea Resources para obtener información adicional sobre GRUB 2 y ELILO.
El proceso de instalación de su distribución probablemente le de la opción de elegir qué cargador de arranque instalar. Tanto GRUB como LILO trabajarán con los discos más modernos, aunque algunas distribuciones, principalmente Fedora, ya no vienen con LILO. Recuerde que la tecnología del disco ha avanzado rápidamente, por lo cual siempre debería asegurarse de elegir un cargador de arranque, una distribución de Linux (u otro sistema operativo), y un sistema BIOS, que funcione con su nuevo disco. De otro modo, podría perder datos. Asimismo, si agrega nueva distribución a un sistema existente, quizá necesite asegurarse de que posee el último LILO o GRUB en su MBR. También necesitará una versión bastante reciente ya sea de GRUB como de LILO si desea arrancar desde un disco LVM o RAID.
Los cargadores de etapa 2 usados en LILO y GRUB le permiten elegir cuál de los diversos sistemas operativos y de las distintas versiones cargar. Sin embargo, LILO y GRUB difieren significativamente en que un cambio en el sistema exigirá que usted use un comando para recrear la configuración de arranque de LILO cada vez que actualice un kernel o efectúe otros cambios en el sistema, mientras que GRUB puede lograrlo mediante un archivo de texto de configuración que usted puede editar. GRUB 2 también requiere una modificación en el archivo de configuración que por lo general se guarda en /etc.
LILO, el LInux LOader, es uno de los dos cargadores de arranque más comunes de Linux. LILO puede instalarse en el MBR de su unidad de arranque, o en el registro de arranque de partición de una partición. También puede instalarse en dispositivos extraíbles como discos flexibles, CDs o memorias USB. Si usted no está totalmente familiarizado con LILO, será conveniente que practique primero lo que haremos en nuestros ejemplos en un disco flexible o en una memoria USB.
Durante la instalación de Linux, usted por lo general especificará LILO o GRUB como gestor de arranque. Si elige GRUB, es posible que no tenga LILO instalado. En ese caso, deberá instalar el paquete correspondiente. Usted quizá desee también instalar el paquete lilo-doc para acceder a más documentación y más ejemplos. A partir de este momento, asumiremos que usted ya cuenta con el paquete de LILO instalado en su sistema. Visite series roadmap para acceder a los artículos sobre administración de paquetes si necesita ayuda.
Configure LILO utilizando un archivo de configuración, que por lo general es
/etc/lilo.conf. Usted puede utilizar el comando liloconfig
(generalmente encontrado en /usr/sbin) para generar el archivo de configuración inicial
y luego editarlo según sea necesario. El archivo de configuración que aparece en el Listado 1 fue
generado de esta forma. El archivo fue explicado bastante bien, pero las páginas del manual
referidas a lilo y a lilo.conf le brindarán más detalles. Este es un archivo de
configuración de LILO que podría utilizarse en un sistema de doble arranque con
Windows y con uno o más sistemas Linux.
Listado 1. Ejemplos de /etc/lilo.conf
# Originally generated by liloconfig - modified by Ian Shields
# This allows booting from any partition on disks with more than 1024
# cylinders.
lba32
# Specifies the boot device (floppy)
boot=/dev/fd0
# Specifies the device that should be mounted as root.
# If the special name CURRENT is used, the root device is set to the
# device on which the root file system is currently mounted. If the root
# has been changed with -r , the respective device is used. If the
# variable ROOT is omitted, the root device setting contained in the
# kernel image is used. It can be changed with the rdev program.
root=/dev/sda7
# Bitmap configuration for /boot/coffee.bmp
bitmap=/boot/coffee.bmp
bmp-colors=12,,11,15,,8
bmp-table=385p,100p,1,10
bmp-timer=38,2,13,1
# Enables map compaction:
# Tries to merge read requests for adjacent sectors into a single
# read request. This drastically reduces load time and keeps the map
# smaller. Using COMPACT is especially recommended when booting from a
# floppy disk.
compact
# Install the specified file as the new boot sector.
# LILO supports built in boot sectors, you only need
# to specify the type, choose one from 'text', 'menu' or 'bitmap'.
# new: install=bmp old: install=/boot/boot-bmp.b
# new: install=text old: install=/boot/boot-text.b
# new: install=menu old: install=/boot/boot-menu.b or boot.b
# default: 'menu' is default, unless you have a bitmap= line
# Note: install=bmp must be used to see the bitmap menu.
# install=menu
install=bmp
# Specifies the number of _tenths_ of a second LILO should
# wait before booting the first image. LILO
# doesn't wait if DELAY is omitted or if DELAY is set to zero.
# delay=20
# Prompt to use certain image. If prompt is specified without timeout,
# boot will not take place unless you hit RETURN. Timeout is in tenths of
# a second.
prompt
timeout=200
# Enable large memory mode.
large-memory
# Specifies the location of the map file. If MAP is
# omitted, a file /boot/map is used.
map=/boot/map
# Specifies the VGA text mode that should be selected when
# booting. The following values are recognized (case is ignored):
# NORMAL select normal 80x25 text mode.
# EXTENDED select 80x50 text mode. The word EXTENDED can be
# abbreviated to EXT.
# ASK stop and ask for user input (at boot time).
# <number> use the corresponding text mode. A list of available modes
# can be obtained by booting with vga=ask and pressing [Enter].
vga=normal
# Defines non-standard parameters for the specified disk.
#disk=/dev/sda
# bios=0x80
# If you are using removable USB drivers (with mass-storage)
# you will need to tell LILO to not use these devices even
# if defined in /etc/fstab and referenced in /proc/partitions.
# Adjust these lines to your devices:
#
# disk=/dev/sda inaccessible
# disk=/dev/sdb inaccessible
# These images were automagically added. You may need to edit something.
image=/boot/vmlinuz-2.6.31-14-generic
label="Lin 2.6.31-14"
initrd=/boot/initrd.img-2.6.31-14-generic
read-only
image=/boot/vmlinuz-2.6.31-20-generic
label="Lin 2.6.31-20"
initrd=/boot/initrd.img-2.6.31-20-generic
read-only
image=/boot/memtest86+.bin
label="Memory Test+"
read-only
# If you have another OS on this machine (say DOS),
# you can boot if by uncommenting the following lines
# (Of course, change /dev/sda1 to wherever your DOS partition is.)
other=/dev/sda6
label="Fedora 8"
other=/dev/sda1
label="Windows XP"
|
Verificamos nuestra configuración creando un disco flexible, para lo cual especificamos
boot=/dev/fd0, cerca del archivo. También
aumentamos el tiempo del prompt a 20 segundos (200 aumentos de una décima
de segundo), y agregamos una segunda entrada "other" a la cadena de carga al
cargador de arranque en la partición Fedora 8 (/dev/sda6). LILO solo permite un comando
root en un archivo de configuración, por lo cual puede
arrancar múltiples imágeners de la partición raíz, pero necesita encadenar el arranque a
otro cargador de arranque para arrancar una imagen de una instalación diferente, como
Fedora 8 (/dev/sda6) o Windows XP (/dev/sda1) en nuestro ejemplo.
Usted utiliza el comando lilo, ubicado en /sbin/lilo,
para ingresar un registro de arranque de la etapa 1 y crear un archivo de asignaciones xml (/boot/map) utilizando
la información de la configuración, como en el ejemplo anterior, normalmente ubicado en
/etc/lilo.conf. Hay algunos usos más de este comando que mencionaremos luego.
Ahora bien, si formateamos un disco flexible con un sistema de archivos Linux como ext2,
podemos ejecutar el comando lilo (/sbin/lilo) para crear un
disco de arranque flexible. Los datos de salida obtenidos pueden observarse en el Listado 2. Obsérvese que el comando
lilo posee cinco niveles de escritura.
Especifique una -v adicional para cada nivel. Este ejemplo se creó utilizando
lilo -v
-v.
Listado 2. Creación de un disco de arranque flexible con lilo
LILO version 22.8, Copyright (C) 1992-1998 Werner Almesberger
Development beyond version 21 Copyright (C) 1999-2006 John Coffman
Released 19-Feb-2007, and compiled at 10:52:38 on Aug 25 2009
Running Linux kernel 2.6.31-14-generic on i686
Ubuntu
raid_setup returns offset = 00000000 ndisk = 0
BIOS VolumeID Device
Reading boot sector from /dev/fd0
pf_hard_disk_scan: ndevs=1
0800 54085408 /dev/sda
device codes (user assigned pf) = 0
device codes (user assigned) = 0
device codes (BIOS assigned) = 1
device codes (canonical) = 1
mode = 0x03, columns = 80, rows = 25, page = 0
Using BITMAP secondary loader
Calling map_insert_data
Secondary loader: 19 sectors (0x3800 dataend).
Warning: The boot sector and map file are on different disks.
bios_boot = 0x00 bios_map = 0x80 map==boot = 0 map S/N: 54085408
Mapping bitmap file /boot/coffee.bmp
Calling map_insert_file
Compaction removed 592 BIOS calls.
Bitmap: 603 sectors.
BIOS data check was okay on the last boot
Boot image: /boot/vmlinuz-2.6.31-14-generic
Setup length is 26 sectors.
Compaction removed 7452 BIOS calls.
Mapped 7601 sectors.
Mapping RAM disk /boot/initrd.img-2.6.31-14-generic
Compaction removed 14696 BIOS calls.
RAM disk: 14930 sectors.
Added Lin_2.6.31-14 *
Boot image: /boot/vmlinuz-2.6.31-20-generic
Setup length is 26 sectors.
Compaction removed 7468 BIOS calls.
Mapped 7617 sectors.
Mapping RAM disk /boot/initrd.img-2.6.31-20-generic
Compaction removed 14704 BIOS calls.
RAM disk: 14938 sectors.
Added Lin_2.6.31-20
Boot image: /boot/memtest86+.bin
Setup length is 4 sectors.
Compaction removed 243 BIOS calls.
Mapped 254 sectors.
Added Memory_Test+
Boot other: /dev/sda6, loader CHAIN
Pseudo partition start: 43198848
Compaction removed 0 BIOS calls.
Mapped 6 (4+1+1) sectors.
Added Fedora_8
Boot other: /dev/sda1, on /dev/sda, loader CHAIN
Compaction removed 0 BIOS calls.
Mapped 6 (4+1+1) sectors.
Added Windows_XP
BIOS VolumeID Device
80 54085408 0800
Writing boot sector.
/boot/boot.0200 exists - no boot sector backup copy made.
Map file size: 336896 bytes.
RAID device mask 0x0000
One warning was issued.
|
Ahora tenemos nuestro disco flexible de arranque LILO. Si LILO encuentra un error, usted podrá ver un mensaje de error, y el sector de arranque no será especificado. El mensaje le dará una idea de lo que necesita corregir.
Si utilizamos el disco flexible que hemos creado recién y reiniciamos la máquina, veremos un mensaje similar al que aparece en la Figura 1. Observe que el contador regresivo que se encuentra en la parte superior de la pantalla, el cual estará contando a partir de los veinte segundos (200 décimas de un segundo). Si usted no hace la elección dentro de los 20 segundos, la opción resaltada (la primera, o Lin_2.6.31-14 en este caso) será cargada automáticamente.
Figura 1. Pantalla de arranque de LILO
Usted puede utilizar las flechas de posición para moverse arriba y abajo en la lista de opciones. La Figura 2 muestra cómo seleccionar el último kernel Lin_2.6.31-20, el cual se encuentra en segundo lugar. Obsérvese que el valor del reloj ya no se muestra. Presione Enter para cargar este kernel.
Figura 2. Elección de otro objetivo de arranque con LILO
Cuando haya verificado el disco flexible de arranque, cargue la entrada boot=/dev/fd0 en su archivo de configuración lilo.conf para instalar LILO en el MBR o en el registro de arranque de una partición. Por ejemplo, boot=/dev/sda instalará LILO en el registro de arranque maestro de su disco duro principal.
Ahora posee una idea de LILO y de su archivo de configuración. Usted puede
anular algunas de las opciones de configuración desde la línea de comando
lilo. Encontrará más información sobre este tema
en las páginas del manual de lilo utilizando el comando
man lilo, o
man
lilo.conf. Encontrará información más detallada en la guía de usuario
PostScript que se encuentra instalada junto con su paquete lilo o lilo-doc.
Éste debería encontrarse instalado en el directorio de su documentación, pero
su ublicación exacta puede variar según el sistema.
Una forma de ubicar este archivo es filtrar la lista de paquetes a través de grep.
El Listado 3 muestra cómo hacer esto en los sistemas Ubuntu 9.10 basados en Debian que han sido utilizados
en este ejemplo.
Listado 3. Búsqueda de la guía del usuario de LILO con dpkg
ian@pinguino:~$ dpkg -L lilo-doc | grep "ps"
/usr/share/doc/lilo-doc/user.ps.gz
/usr/share/doc/lilo-doc/tech.ps.gz |
El comando correspondiente en un sistema basado en RPM como Fedora debería ser:
rpm -ql lilo-doc | grep "ps"
Los comandos auxiliares de LILO
LILO posee varios comandos auxiliares:
- lilo -q
- Despliega información desde el archivo de configuraciones xml.
- lilo -R
- Configura lilo para que éste automáticamente arranque el sistema especificado sólo en el próximo rearranque. Esto resulta conveniente en el caso de sistemas de rearranque automático remoto.
- lilo -I
- Despliega información sobre la ruta de un kernel.
- lilo -u
- Desinstala lilo y reinstala el registro de arranque anterior.
Cuando LILO arranca un sistema Linux, usted quizá desee proporcionar parámetros adicionales al momento del arranque. Por ejemplo, si su arranque gráfico no está funcionando, usted quizá desee arrancar en el modo 3 o en el modo de usuario único para solucionarlo. Si usted elige una entrada y presiona la tecla TAB debería ver una ventana terminal que ha sido completada previamente con el nombre de la etiqueta seleccionada, tal como se puede observar en la Figura 3.Cualquier caracter ingresado en el nombre de la etiqueta será trasladado al kernel. Por ejemplo, en nuestro ejemplo, usted elegiría el último sistema Ubuntu simplemente moviéndose una línea hacia abajo y presionando TAB. Si usted no elige ningún nombre, luego tendrá que tipear el que especificó en la etiqueta. Usted puede ver porqué utilizar etiquetas más breves que las que aparecen en nuestros ejemplos podría resultar una buena idea: typing Lin_2.6.31.20 isn't easy.
Figura 3. Ingreso de los parámetros del kernel con LILO
En la Figura 3, hemos ingresado "single" a los parámetros de arranque para establecer que queríamos arrancar en el modo de usuario único para solucionar algunas cuestiones del sistema. Vea la sección Recovery por más información sobre el uso de los parámetros de arranque.
Recuerde también que con LILO usted debe ejecutar el comando
lilo siempre que actualice el archivo
de configuración (/etc/lilo.conf). También debería ejecutar el comando
lilo si agrega, mueve, o borra
particiones o hace otras modificaciones que pudieran invalidar el cargador de arranque
generado.
GRUB, o cargador GRand Unifood Boot, es el otro de cargador de arranque más común de Linux. Al igual que LILO, GRUB puede instalarse en el MBR de su unidad de arranque, o en el registro de arranque de partición de una partición. También puede instalarse en los dispositivos extraíbles como por ejemplo los discos flexibles, los CDs o las memorias USB. Si usted no está familiarizado todavía con GRUB, será conveniente que practique en un disco flexible o una memoria USB lo que haremos en nuestros ejemplos.
GRUB, o GNU GRUB, ha sido desarrollado bajo el auspicio de la Fundación de Software Libre. Existe una nueva versión, GRUB 2, en desarrollo, de manera que las versiones originales GRUB 0.9x son conocidas ahora como Legado Grub.
Durante la instalación de Linux usted especificará por lo general LILO o GRUB como gestor de arranque. Si elige LILO, es posible que no tenga GRUB instalado. En ese caso, deberá instalar el paquete del mismo. Supongamos que tiene el paquete GRUB instalado. Consulte nuestra series roadmap para acceder a los artículos sobre administración de paquetes si desea obtener ayuda con esto.
GRUB (Legacy) tiene un archivo de configuración que se guarda generalmente en /boot/grub/grub.conf. Si su sistema de archivos soporta vínculos simbólicos, como la mayoría de los sistemas de archivos de Linux, probablemente tendrá /boot/grub/menu.lst como vínculo simbólico a /boot/grub/grub.conf.
El comando grub (/sbin/grub, o, en algunos
sistemas, /usr/sbin/grub) es un shell pequeño pero considerablemente poderoso
que soporta a numerosos comandos para instalar GRUB, iniciar sistemas, localizar
y mostrar archivos de configuración y realizar tareas similares. Este shell comparte
gran parte del código con el cargador de arranque GRUB de la segunda etapa, de manera
que resultará útil aprender sobre GRUB sin tener que realizar el arranque en un entorno
GRUB de segunda etapa. La etapa 2 de GRUB se ejecuta en modo menú, para permitirle elegir un sistema
operativo desde un menú, o en modo comando, donde se especifican
comandos individuales para cargar un sistema. Hay también muchos otros comandos,
como grub-install, que utilizan el
shell grub y ayudan a automatizar tareas como la instalación de GRUB.
El Listado 7 muestra parte de un archivo de configuración de GRUB. Cuando lo analice, recuerde algo importante: GRUB, al menos GRUB Legacy, los dispositivos de conteo, las particiones, y los items que requieren conteo, comienzan en 0 en lugar de 1. También tenga en cuenta que la primera línea del kernel es muy larga. Nosotros la mostramos con una barra invertida (\) que indica donde la rompemos para la publicación.
Listado 4. /boot/grub/menu.lst Ejemplo de configuración de GRUB
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You do not have a /boot partition. This means that
# all kernel and initrd paths are relative to /, eg.
# root (hd0,5)
# kernel /boot/vmlinuz-version ro root=/dev/sda6
# initrd /boot/initrd-version.img
#boot=/dev/sda6
default=1
timeout=10
splashimage=(hd0,5)/boot/grub/splash.xpm.gz
#hiddenmenu
password --md5 $1$RW1VW/$4XGAklxB7/GJk0uO47Srx1
title Upgrade to Fedora 11 (Leonidas)
kernel /boot/upgrade/vmlinuz preupgrade \
repo=hd::/var/cache/yum/preupgrade stage2=\
hd:UUID=8b4c62e7-2022-4288-8995-5eda92cd149b:/boot/upgrade/install.img \
ks=hd:UUID=8b4c62e7-2022-4288-8995-5eda92cd149b:/boot/upgrade/ks.cfg
initrd /boot/upgrade/initrd.img
title Fedora (2.6.26.8-57.fc8)
root (hd0,5)
kernel /boot/vmlinuz-2.6.26.8-57.fc8 ro root=LABEL=FEDORA8 rhgb quiet
initrd /boot/initrd-2.6.26.8-57.fc8.img
title Fedora (2.6.26.6-49.fc8)
root (hd0,5)
kernel /boot/vmlinuz-2.6.26.6-49.fc8 ro root=LABEL=FEDORA8 rhgb quiet
initrd /boot/initrd-2.6.26.6-49.fc8.img
title GRUB Menu
rootnoverify (hd0,1)
chainloader +1
title Windows
rootnoverify (hd0,0)
chainloader +1
|
Al igual que la configuración de LILO, el primer grupo de opciones nombrado más arriba controla el modo de operar de GRUB. En GRUB, estas opciones se denominan comandos de menú, y deben aparecer antes de otros comandos. Las secciones restantes proporcionan opciones por imágenes para los sistemas operativos que deseamos permitir que arranquen el GRUB. Tenga en cuenta que "title" es considerado un comando de menú. Cada instancia de title es seguida de uno o más comandos generales o entradas de menú. Nuestro ejemplo de LILO fue un ejemplo básico típico de un sistema de arranque dual con sistema Windows y con dos sistemas Linux. Este ejemplo viene del mismo sistema que utilizamos antes. De hecho, se trata del menú de arranque que es cargado en cadena desde la entrada "Fedora 8" del menú de LILO. Usted reconocerá muchos elementos iguales en los archivos de configuración de LILO y de GRUB. Quizá se le ocurra pensar que es lo que necesita cambiar para agregar los sistemas operativos extra aquí presentados al ejemplo de LILO presentado anteriormente.
Los comandos del menú que aplican a todas las otras secciones en nuestro ejemplo son:
- #
- Cualquier línea que comience con un # es un comentario y es ignorado por GRUB. Este archivo de configuración particular fue generado en principio por anaconda, el instalador de Red Hat. Probablemente encontrará comentarios agregados a su archivo de configuración de GRUB si usted instala GRUB cuando instala Linux. Los comentarios a menudo servirán de ayuda para el programa de actualización del sistema de manera que la configuración de GRUB puede mantenerse al día con kernels actualizados. Preste atención a cualquier marcador colocado para este fin si usted edita por si mismo la configuración.
- default
- Especifica qué sistema cargar si el usuario no realiza una elección dentro del tiempo de espera correspondiente. En nuestro ejemplo, default=2 significa cargar el tercer ítem. Recuerde que GRUB cuenta a partir de 0 y no de 1. Si esto no está especificado, lo que hará de manera predeterminada es arrancar el primer ítem, el número de ítem 0.
- timeout
- Especifica un tiempo de espera en segundos antes de arrancar el ítem predeterminado. Observe que LILO utiliza décimas de segundo para sus tiempos de espera mientras que GRUB utiliza segundos completos.
- splashimage
- Especifica el entorno, o splash, imagen a visualizarse con el menú de arranque. GRUB Legacy denomina al primer disco duro como (hd0) y a la primera partición del disco como (hd0,0), de manera que la especificación splashimage=(hd0,6)/boot/grub/splash.xpm.gz significa que hay que usar el archivo /boot/grub/splash.xpm.gz ubicado en la partición 7 del primer disco duro. Recuerde que el conteo se inicia desde 0. Observe además, que la imagen es un archivo XPM comprimido con gzip. El soporte para splashimage es un parche que puede o no estar incluido en la distribución.
- password
- Especifica una contraseña que se debe ingresar antes de que el usuario pueda desbloquear el menú para editar una línea de configuración o ingresar comandos GRUB. Al igual que con LILO, la contraseña puede aparecer en texto claro. GRUB también permite que las contraseñas se almacenen como un fichero MD5, como sucede en nuestro ejemplo. Esto es de alguna manera más seguro y la mayoría de los administradores fijan una contraseña. Sin una contraseña, el usuario tendría acceso completo a la línea de comandos GRUB.
Nuestro ejemplo muestra dos kernels Fedora 8 y una actualización a la opción Fedora 11, junto con Windows XP y una opción de cadena "GRUB Menu". Los comandos utilizados en estas secciones son:
- title
- Es un título descriptivo que se muestra como el ítem del menú cuando Grub realiza el arranque. Usted usará las teclas de flecha para moverse hacia arriba o hacia abajo en la lista de títulos, y luego deberá presionar la tecla Enter para seleccionar un ítem determinado.
- root
- Especifica la partición que se debe arrancar. Al igual que con splashimage, recuerde que el conteo comienza en 0, de manera que el primer sistema Red Hat que se especifica como raíz (hd0,6) está en realidad en la partición 7 del primer disco duro (en este caso, /dev/hda7), mientras que el primer sistema Ubuntu que se especifica como raíz (hd1,10) está en el segundo disco duro (/dev/hdb11). En algunos casos, GRUB intentará montar esta partición para verificarla y proporcionar valores al sistema operativo iniciado.
- kernel
- Especifica la imagen de kernel que se cargará así como cualquier otro parámetro de kernel requerido. Esto es similar a la combinación de la imagen LILO y los comandos append. Tenemos dos kernels Fedora 8 diferentes, además de la actualización del kernel en este ejemplo.
- initrd
- Es el nombre del disco inicial RAM, que contiene los módulos necesarios para el kernel antes de montar sus sistemas de archivos.
- savedefault
- No se utiliza en este ejemplo. Si el comando
default=savedse especifica, y el comandosavedefaultse especifica para un sistema operativo, entonces el arranque del sistema operativo provocará que se convierta en la opción predeterminada hasta que otro sistema operativo consavedefaultespecificado sea cargado. En este ejemplo, la especificación de default=2 anulará toda opción predeterminada que haya sido guardada. - boot
- Es un parámetro opcional que ordena a GRUB que arranque el sistema operativo seleccionado. Esta es la acción predeterminada cuando todos los comandos de una selección han sido procesados.
- lock
- No se utiliza en este ejemplo. Éste no arrancará el ítem especificado hasta que se ingrese una clave. Si usted utiliza esta opción, entonces debería también especificar una clave en las opciones iniciales; de otro modo, un usuario puede modificar la opción lock y arrancar el sistema, o agregar "single" a una de las otras entradas. Es posible especificar una clave diferente para items particulares si así se lo desea.
- rootnoverify
- Es similar a root, a excepción de que GRUB no intenta montar el sistema de archivos o verificar sus parámetros. Suele usarse en sistemas de archivos como NTFS que no son soportados por GRUB. También podría usarse si se desea que GRUB cargue el registro maestro de arranque en un disco duro, por ejemplo, para acceder a un archivo de configuración diferente o para volver a cargar el cargador de arranque anterior.
- chainloader
- Es similar a root, a excepción de que GRUB no intenta montar el sistema de archivos o verificar sus parámetros. Suele usarse en sistemas de archivos como NTFS que no son soportados por GRUB. También podría usarse si se desea que GRUB cargue el registro maestro de arranque en un disco duro, por ejemplo, para acceder a un archivo de configuración diferente o para volver a cargar el cargador de arranque anterior.
Ahora ya tiene una idea de lo que puede encontrar en un archivo /boot/grub/grub.conf
(o /boot/grub/menu.lst) típico. Existen muchísimos más comandos GRUB que proporcionan
un gran control sobre el proceso de arranque y, además, ayudan en la instalación de grub y
en otras tareas. Conozca más acerca de estos comandos en el manual de GRUB que se encuentra
disponible en su sistema a través de info grub.
Ahora que ya tenemos un archivo de configuración GRUB, debemos crear un disco
flexible de arranque para probarlo. La forma más fácil de hacerlo es usar el comando
grub-install tal como se muestra en el Listado 5. Si
usted está instalando GRUB en su disco flexible o en una partición, entonces debería
desmontar el primer dispositivo. Esto no aplica cuando usted esté instalando GRUB
en el MBR de un disco duro, dado que en ese caso usted sólo montaría particiones(/dev/sda1,
/dev/sda2, etc.) y no el disco completo (/dev/sda).
Listado 5. Instalación de GRUB en un disco flexible
[root@pinguino ~]# grub-install /dev/fd0
Installation finished. No error reported.
This is the contents of the device map /boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.
(fd0) /dev/fd0
(hd0) /dev/sda |
Nota: Usted debería también utilizar un nombre del dispostitivo GRUB (fd0) en lugar de
/dev/fd0, pero si lo usa, debería colocarlo entre comillas para evitar que el shell
interprete los paréntesis. Por ejemplo:
grub-install '(fd0)'
El mapa de dispositivos muestra cómo GRUB iguala la vista interna de sus
discos (fd0, hd0, hd1) con la vista Linux (/dev/fd0, /dev/hda, /dev/hdb). Probablemente
esto resulta correcto en un sistema con uno o dos discos duros IDE y, tal vez, una unidad
flexible. Si ya existe un mapa de dispositivos, GRUB lo reutilizará sin realizar el sondeo.
Si acaba de agregar una nueva unidad y quiere forzar la generación de un nuevo mapa
de dispositivos, agregue la opción --recheck
al comando grub-install . A veces
usted puede ver un mensaje como el que se muestra en el Listado 6. En ese caso también, usted
necesitará agregar la opción --recheck al comando
grub para forzar a GRUB a probar los dispositivos disponibles
y reconstruir el mapa de dispositivos.
Listado 6. Instalación de GRUB en un disco flexible
[root@pinguino ~]# grub-install /dev/fd0
/dev/fd0 does not have any corresponding BIOS drive. |
Si usted comenzó con un disco flexible vacío y ahora lo monta, descubrirá que todavía parece estar vacío. Esto se debe a que GRUB ingresó un cargador personalizado de nivel 1 en el primer sector del disco. Esto no puede verse en el sistema de programas. Este cargador de etapa 1 cargará la etapa 2 y el archivo de configuración desde su disco duro. Pruebe arrancar el disco y verá muy poca actividad de entrada y salida antes de que se despliegue el menú. Al igual que con LILO, usted utiliza las flechas de posición para seleccionar diferentes objetivos de arranque.
Figura 4. El arranque utilizando GRUB
Una vez que ha verificado el disco flexible, usted está listo para instalar GRUB en el
MBR de su disco rígido. Para el primer disco duro IDE, usted utilizaría:
grub-install /dev/sda
o
grub-install '(hd0)'
Para instalarlo en el registro de arranque de la partición para la partición 11, utilice:
grub-install /dev/sda11
o
grub-install '(hd0,10)'
Recuerde que GRUB cuenta desde 0.
Al igual que en LILO, usted puede agregar parámetros de arranque. De hecho, usted puede editar cualquiera de los
comandos en la configuración de GRUB o cargar otro archivo de configuración al momento
del arranque. Si usted usó una clave, deberá ingresar el comando
p y luego ingresar la clave. Luego,
seleccione un item e ingrese el comando e
para editarlo. Selecciones la línea que quiere editar e ingrese
e nuevamente. Edite la línea ingresando nuevo
caracteres o borrando los caracteres actuales, y luego presione
Enter para regresar al menú. Ingrese el comando
b para arrancar su sistema con los nuevos
valores. La Figura 5 muestra la fase de edición del comando de este proceso en la cual
se agrega el parámetro 'single' a la declaración del kernel para arrancar en
modo de usuario único.
Figura 5. Arranque en modo de usuario único con GRUB
La mayoría de las distribuciones proporcionan las herramientas para la actualización del sistema. Estas herramientas están generalmente al tanto del cargador de arranque en uso y a menudo actualizan su archivo de configuración de manera automática. Si usted crea su propio kernel personalizado, o prefiere utilizar un archivo de configuración con un nombre o ubicación fuera de lo común, entonces quizá necesite actualizar el archivo de configuración usted mismo.
- Si usted utiliza LILO, debe ejecutar el comando
lilosiempre que actualice su archivo de configuración o haga cambios, como por ejemplo agregar un disco duro o borrar una partición. - Si usted usa GRUB, puede editar el archivo /boot/grub/grub.conf para realizar los cambios, y el cargador GRUB de etapa 2 leerá el archivo cuando usted rearranque. Usted normalmente no necesita reinstalar GRUB por haber agregado un nuevo kernel. Sin embargo, si mueve una partición, o agrega dispositivos, usted quizá necesite reinstalar GRUB. Recuerde que el cargador de la etapa 1 es muy pequeño, por lo cual simplemente posee una lista del bloque de direcciones para el cargador de la etapa 2. Mueva la partición y la dirección cambiará, de manera que la etapa 1 ya no puede localizar la etapa 2. Analizaremos algunas estrategias y los cargadores de etapa 1.5 de GRUB más adelante.
- Si usted ejecuta más de un sistema Linux en diferentes particiones, considere using a boot partition tal como se describe más abajo.
Veamos algunas de las cosas que pueden salir mal al momento de la configuración del arranque minuciosamente preparado, particularmente cuando se instalan y arrancan múltiples sistemas operativos.Lo primero que hay que recordar es que se debe evitar caer en pánico. La recuperación por lo general consta de pocos pasos. Las estrategias aquí presentadas deberían ayudarlo en todas las etapas de crisis.
Cualquiera que tenga acceso físico a una máquina tiene mucho poder. Así mismo, cualquiera con acceso a la línea de comando de GRUB también tiene acceso a los archivos de su sistema sin el beneficio de ningún derecho de propiedad o provisión de seguridad suministrado por el sistema que se está ejecutando. Tenga esto en mente al seleccionar un cargador de arranque. La elección entre LILO y GRUB es más que nada un tema de elección personal. Elija el cargador que mejor se ajuste a sus necesidades y a su estilo de trabajo particulares.
Otra instalación destruye su MBR
A veces usted instala otro sistema operativo y sin querer
sobrescribe en su MBR. Algunos sistemas, como DOS y Windows, siempre instalan
su propio MBR. Por lo general es muy fácil solucionar esta situación. Si
usted tiene el hábito de crear un disco flexible cada vez que ejecuta o
lilo reinstala GRUB, se encuentra fuera de peligro.
Simplemente arranque su sistema Linux desde el disco flexible y ejecute nuevamente
lilo o
grub-install.
Si usted no contara con un disco flexible de arranque, pero todavía tiene casi
toda las distribución de Linux disponibles, usted puede por lo general arrancar el medio de instalación de Linux
en modo recuperación. Al hacerlo, el sistema de archivos raíz de su disco duro
se montará en algún punto extraño de recuperación, o no se montará en lo
absoluto. Usted puede utilizar el comando chroot
para lograr que este raro punto de montaje se convierta en su directorio raíz (/). Luego ejecute
lilo o grub-install
para crear un nuevo disco flexible o para reinstalar el MBR. Yo prefiero crear un disco flexible y
usarlo para arrancar, asegurándome de que todo está en orden antes de reescribir
el MBR, pero usted puede ser más valiente que yo. Arrancar un CD o
un DVD en modo de rescate puede darle una variedad de opciones y hacer que sea más sencillo pasar al
modo usuario único, en el cual usted tendrá más autoridad raíz. Si usted trata de arrancar
el sistema Ubuntu 9.10 que utilizamos en los ejemplos de LILO en modo de usuario único
verá un menú como el que muestra la Figura 6. La opción resaltada
lleva a un shell raíz con conexión de red.
Figura 6. Menú de recuperación de Ubuntu 9.10
Un menú como este es una opción común en los medios de recate. En nuestro ejemplo de rescate no utilizamos un CD, pero arrancamos el sistema Ubuntu 9.19 en modo de usuario único como se describe en la sección sobre LILO que aparece más arriba. Luego realizamos los pasos normales necesarios para crear un disco flexible de arranque para otro sistema, en este caso el sistema Fedora 8 on /dev/sda6. En caso de que usted arranque desde un CD de rescate o desde otro OS desde el mismo sistema, los pasos serán similares, aunque algunos, como el montaje de una imagen para rescatarla, pueden haber sido ya realizados por usted.
Cuando usted eventualmente alcance un prompt raíz, usted querrá realizar algunos o todos
los pasos mostrados en el Listado 7. En nuestro ejemplo, creamos un punto de montaje
(/mnt/sysimage), mount /dev/sda6, montamos algunos sistemas de archivos especiales en el
nuevo raíz (que se va a crear), y luego cambiamos el usuario raíz al sistema montado. Los comandos
cat /etc/issue muestran el efecto del comando
chroot, el cual convierte el directorio objetivo en la nueva raíz
del sistema de archivos, al menos hasta que salgamos del entorno
de este directorio raíz con Ctrl-d o con
exit.
El listado 7 muestra un ejemplo en el mismo entorno que utilizamos para nuestros ejemplos de configuración anteriores. Piense en esto como una ventana terminal donde usted se ha logueado como usuario raíz. En otras palabras, tenga cuidado de lo que ingresa en su disco duro.
Listado 7. Uso de un sistema de rescate y chroot
root@pinguino:~# mkdir /mnt/sysimage
root@pinguino:~# mount /dev/sda6 /mnt/sysimage
root@pinguino:~# cd /mnt/sysimage
root@pinguino:~# mount -t proc none proc/
root@pinguino:~# mount -t sysfs none sys/
root@pinguino:~# mount -o bind /dev dev/
root@pinguino:~# cat /etc/issue
Ubuntu 9.10 \n \l
root@pinguino:~# chroot /mnt/sysimage
root@pinguino:~#
sh-3.00# chroot /mnt/sysimage
[root@oinguine /]# cat /etc/issue
Fedora release 8 (Werewolf)
Kernel \r on an \m
[root@oinguine /]# grub-install /dev/fd0
Installation finished. No error reported.
This is the contents of the device map /boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.
(fd0) /dev/fd0
(hd0) /dev/sda
[root@oinguine /]# |
Cuando ya tenga su disco flexible de arranque, presione ctrl-d para salir del entorno chroot y luego reinicie el sistema. Recuerde desmontar su medio de instalación. Si no tiene un CD o DVD de instalación a mano, en Internet se encuentran disponibles varios CDs de recuperación y CDs en vivo de LINUX así como también en algunos disquetes y dispositivos de memoria USB. Consulte Recursos por más detalles.
Si bien no se encuentra dentro del alcance de este tutorial, cabe destacar
que es posible arrancar un sistema Windows 2000 o Windows XP con el arranque
e instalar Lilo o GRUB en el registro de arranque de una partición. El programa de
arranque ntldr también puede cargar en cadena otros sectores de arranque.
Sin embargo, en este caso la configuración puede resultar un poco compleja. Usted deberá
copiar el sector de arranque a una partición de Windows
(generalmente utilizando el comando dd ) y modificar el archivo oculto
boot.ini para que esto funcione.
Si movió una partición y olvidó considerar la configuración de arranque, se
encuentra ante un problema temporal. Generalmente, LILO o GRUB no cargarán.
LILO probablemente imprima una 'L' que indica que la etapa 1 se cargó y luego
se detuvo. GRUB mostrará un mensaje de error. Lo que ocurre en este caso es que
el cargador de etapa 1 (que tenía una lista de sectores a cargar para llegar al
cargador de etapa 2) tal vez pueda cargar los sectores desde las direcciones
que tiene, pero esos sectores ya no tienen la firma de la etapa 2. Si generó un
disquete de arranque usando los métodos antes descriptos, recuerde que
lilo o grub-install
cargan en el disquete un solo sector de arranque, por lo cual su disquete de arranque
probablemente no sea de ayuda. Como en el ejemplo anterior, usted probablemente necesite
cargar algún tipo de entorno de rescate y reconstruir su disquete de rescate con
LILO o con GRUB. Luego recargar, verificar su sistema y reinstalar su cargador de arranque
en el MBR.
Usted puede notado que nuestros ejemplos de configuración utilizaron algunas etiquetas y
(Universally Unique IDs) UUIDs en las particiones. Por ejemplo:
kernel /boot/vmlinuz-2.6.26.8-57.fc8 ro root=LABEL=FEDORA8 rhgb
quiet
or
kernel /boot/upgrade/vmlinuz
preupgrade repo=hd::/var/cache/yum/preupgrade stage2=\
hd:UUID=8b4c62e7-2022-4288-8995-5eda92cd149b:/boot/upgrade/install.img
\
ks=hd:UUID=8b4c62e7-2022-4288-8995-5eda92cd149b:/boot/upgrade/ks.cfg
Yo suelo utilizar etiquetas UUIDs como estas para evitar problemas al mover
particiones. Usted aún necesita actualizar el archivo de configuración de GRUB o LILO
y volver a ejecutar lilo, pero no es necesario que actualice
/etc/fstab . Esto resulta particularmente práctico para crear la imagen de
una partición en un sistema y restaurarla en una ubicación diferente en otro sistema.
También es práctico si usted arranca desde un dispositivo, como un dispositivo USB,
que no siempre se encuentra en la misma ubicación.
Uso de una partición de arranque
Otro enfoque para realizar la recuperación, o quizá para evitarla, consiste en utilizar una partición separada para el arranque. Esto resulta particularmente útil si usted desea un sistema de verificación con varias distribuciones que reconstruya con frecuencia. La partición de arranque no debe ser muy grande, quizá de 100MB aproximadamente. Coloque esta partición donde sea poco probable que se mueva y donde probablemente el agregado o remoción de otra partición no modifique el número de su partición. En un entorno mixto de Windows y Linux, /dev/sda2 (o /dev/hda2 dependiendo de cómo estén etiquetados sus discos) por lo general es una buena elección para su partición de arranque. El Listado 8 muestra los items de una partición de arranque pequeña (/dev/sda2) que actualmente ha sido cargada por el registro de arranque maestro en el sistema que hemos utilizado de ejemplo.
Listado 8. Uso de una partición de arranque pequeña con GRUB
# menu.lst - See: grub(8), info grub, update-grub(8)
# grub-install(8), grub-floppy(8),
# grub-md5-crypt, /usr/share/doc/grub
# and /usr/share/doc/grub-doc/.
## default num
# Set the default entry to the entry number NUM. Numbering starts from 0, and
# the entry number 0 is the default if the command is not used.
#
# You can specify 'saved' instead of a number. In this case, the default entry
# is the entry saved with the command 'savedefault'.
default 0
## timeout sec
# Set a timeout, in SEC seconds, before automatically booting the default entry
# (normally the first entry defined).
timeout 10
## password ['--md5'] passwd
# If used in the first section of a menu file, disable all interactive editing
# control (menu entry editor and command-line) and entries protected by the
# command 'lock'
# e.g. password topsecret
# password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/
# password topsecret
title Fedora 8 (sda6) Grub menu
root (hd0,5)
chainloader +1
boot
# Ubuntu 9.10 uses GRUB 2, so use kernel to drive GRUB 2 menu.
title Ubuntu 9.10 (sda7)
root (hd0,6)
kernel /boot/grub/core.img
# This is a divider, added to separate the menu items below from the Debian
# ones.
title Other operating systems:
root
# Windows XP
title Windows NT/XP
root (hd0,0)
savedefault
chainloader +1
|
Otra razón por la cual es importante tener un partición /boot surge cuando su partición raíz usa un sistema de archivos no soportado por su cargador de arranque. Por ejemplo, es muy común tener una partición /boot con formato ext2 o ext3 cuando la partición root (/) usa la LVM, la cual no es soportada por GRUB Legacy.
Si su sistema tiene distribuciones múltiples, no comparta la partición /boot entre ellas. Recuerde configurar LILO o GRUB para que arranque desde la partición que luego se montará como /boot. Recuerde también que los programas de actualización de una distribución generalmente actualizarán la configuración GRUB o LILO para su correspondiente sistema. En un entorno con sistemas múltiples, es recomendable mantener un sistema principal con su propia partición /boot y actualizar manualmente el archivo de configuración cuando la actualización de alguno de los sistemas así lo requiera. Otro enfoque consiste en que cada sistema instale un cargador de arranque en su propio registro de arranque de partición y que el sistema principal simplemente cargue en cadena los registros de arranque de partición de cada sistema particular, lo cual resultará en un proceso de menú de dos etapas
Construcción de un disquete flexible de arranque o CD-ROM de instalación automática
Por último, profundicemos un poco más en la configuración GRUB y en cómo generar un disquete de arranque autónomo que lo llevará a una solicitud GRUB sin importar qué le haya ocurrido a su disco duro.
Si usted tiene experiencia en el montaje de discos duros como se analiza en el artículo "Learn Linux 101: Hard disk layout," usted recordará todo lo que que necesita saber sobre cilindros en los discos duros. Aunque usted crea que un cilindro es algo imposible de encontrar en los dispositivos modernos, muchos aspectos de su sistema de archivos siguen teniéndolos. En particular, usted encontrará particiones que utilizan una gran cantidad de cilindros alineados en bordes de cilindros. En una partición, muchos sistemas de archivos también administran el espacio en unidades de cilindros. En muchos sistemas UNIX® y Linux, el montaje de los sistemas de los archivos se guarda en un super block, que es la primera unidad de asignación en el sistema de archivos. Para los sistemas de archivos ext2 o ext3 y para los discos duros de tamaño considerable, por ejemplo, el espacio se rompe en varias secciones con una copia del superblock al comienzo de cada sección. Esto ayudará a la recuperación si usted accidentalmente arruina los bordes de las particiones con un programa como fdisk.
Otro beneficio de la inteligencia de los cilindros es que hay espacio al comienzo de un disco justo despúes del MBR. GRUB toma ventaja de esto mediante la inclusión de un cargador de arranque 1.5 en este espacio o en el espacio no utilizado en una partición siempre que sea posible. El cargador de la etapa 1.5 comprende el sistema de archivos de la partición que contienen la etapa 2, de modo que se encuentra protegido de alguna manera contra los inconvenientes relacionados con el movimiento de archivos.
Todo esto está muy bien, pero ¿cómo se relaciona con el disco flexible de arranque? Bueno, el disco flexible no tiene mucho espacio ni mucha noción de lo que son los cilindros, por consiguiente, si desea arrancar la etapa 1 y la etapa 2 de GRUB desde un disco flexible, deberá instalar la etapa 1 y luego copiar la etapa 2 a los sectores subsiguientes al sector de arranque. El Listado 9 muestra un ejemplo de como hacer esto. Use un disquete vacío, ya que este proceso destruirá los datos que pudiera contener el disquete. Deberá copiar los archivos que vinieron con su distribución grub en lugar de los de su directorio /boot/grub, ya que /boot/grub/stage2 ha sido modificado para trabajar con sus particiones de disco duro. Encontrará los archivos originales de etapa 1 y etapa 2 en un subdirectorio de /usr/share/grub. En nuestro ejemplo estos se encuentran en /usr/share/grub/i386-redhat.
Listado 9. Creación de un disquete de arranque GRUB
[root@pinguino ~]# ls /usr/share/grub/
i386-redhat
[root@pinguino ~]# cd /usr/share/grub/i386-redhat/
[root@pinguino i386-redhat]# ls -l st*
-rw-r--r-- 1 root root 512 2008-05-28 12:05 stage1
-rw-r--r-- 1 root root 109212 2008-05-28 12:05 stage2
-rw-r--r-- 1 root root 109212 2008-05-28 12:05 stage2_eltorito
[root@pinguino i386-redhat]# dd if=stage1 of=/dev/fd0 bs=512 count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.29007 s, 1.8 kB/s
[root@pinguino i386-redhat]# dd if=stage2 of=/dev/fd0 bs=512 seek=1
213+1 records in
213+1 records out
109212 bytes (109 kB) copied, 7.4094 s, 14.7 kB/s
[root@lyrebird root]# ls /usr/share/grub
i386-redhat
[root@lyrebird root]# cd /usr/share/grub/i386-redhat
[root@lyrebird i386-redhat]# ls -l st*
-rw-r--r-- 1 root root 512 Aug 3 2004 stage1
-rw-r--r-- 1 root root 104092 Aug 3 2004 stage2
[root@lyrebird i386-redhat]# dd if=stage1 of=/dev/fd0 bs=512 count=1
1+0 records in
1+0 records out
[root@lyrebird i386-redhat]# dd if=stage2 of=/dev/fd0 bs=512 seek=1
203+1 records in
203+1 records out
|
Si usted comenzó con un disco flexible MS-DOS formateado antes de hacer esto, y ahora intenta montar el disco, el comando de montaje le dará error. El haber copiado la etapa 2 inmediatamente después del sector de arranque de su disquete (seek=1) destruyó el sistema de archivos del disquete.
El proceso para la creación de un CD de arranque de GRUB es similar, aunque usted prepare la
imagen del CD en su disco duro. Usted necesitará un directorio temporal, digamos
grubcd, con los subdirectorios boot y boot/grub. Usted necesita entonces copiar el archivo
stage2_eltorito desde sus archivos de distribución GRUB a los subdirectorios grub
que ha creado recientemente. Luego utilice
genisoimage para crear un archivo imagen de arranque .iso
que usted pueda copiar al CD con su herramienta de copiado preferida. El Listado 10
muestra el modo de crear una imagen de CD como grubcd.iso.
Listado 10. Creación de una imagen de CD de arranque de GRUB
[ian@pinguino ~]$ mkdir -p grubcd/boot/grub [ian@pinguino ~]$ cp /usr/share/grub/i386-redhat/stage2_eltorito grubcd/boot/grub [ian@pinguino ~]$ genisoimage -R -b boot/grub/stage2_eltorito -no-emul-boot \ > -boot-load-size 4 -boot-info-table -o grubcd.iso grubcd I: -input-charset not specified, using utf-8 (detected in locale settings) Size of boot image is 4 sectors -> No emulation Total translation table size: 2048 Total rockridge attributes bytes: 760 Total directory bytes: 4576 Path table size(bytes): 34 Max brk space used 0 233 extents written (0 MB) |
Usted podría arrancar el CD o disquete en una PC arbitraria; no hace falta que tenga
un sistema Linux. Si ahora arranca el disquete, notará una demora en la carga de la etapa 2 desde disquete.
De manera similar, cuando arranque el CD, éste cargará el shell GRUB desde el CD. Cuando usted cargue
cualquiera de los dos, obtendrá un aviso de arranque de GRUB. Presione la tecla tab para ver una lista
de comandos disponibles para usted. Pruebe
help
commandname para obtener
ayuda en el comando commandname. El Listado 11 muestra la línea de comando
de GRUB.
Listado 11. La línea de comando de GRUB
GNU GRUB version 0.97 (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>
Possible commands are: blocklist boot cat chainloader clear cmp color configfile
debug device displayapm displaymem dump embed find fstest geometry halt help
hide impsprobe initrd install ioprobe kernel lock makeactive map md5crypt
module modulenounzip pager partnew parttype password pause quit read reboot
root rootnoverify savedefault serial setkey setup terminal terminfo testload testvbe
unhide uppermem vbeprobe
grub> help rootnoverify
rootnoverify: rootnoverify [DEVICE [HDBIAS]]
Similar to `root', but don't attempt to mount the partition. This
is useful for when an OS is outside of the area of the disk that
GRUB can read, but setting the correct root device is still
desired. Note that the items mentioned in `root' which derived
from attempting the mount will NOT work correctly.
grub> find /boot/grub/grub.conf
(hd0,1)
(hd0,5)
grub>
|
En este ejemplo, hemos encontrado que hay archivos de configuración GRUB en
dos diferentes particiones de nuestro disco duro principal. Cargaríamos el menú de GRUB
desde uno de ellos usando el comando configfile.
Por ejemplo:
configfile (hd0,1)/boot/grub/grub.conf
Esto cargaría el menú para ese archivo de configuración y podríamos
arrancar el sistema desde este punto. Usted puede explorar estos comandos de grub
en el manual de GRUB. Pruebe ingresando info grub en una ventana
terminal de Linux para abrir el manual.
Un último punto a tratar sobre GRUB antes de pasar a otro tema. Mencionamos que el archivo de la etapa 2 de GRUB destruyó el sistema de archivos del disquete. Si usted quiere obtener un disquete de recuperación GRUB de arranque que cargue los archivos GRUB, incluyendo un archivo de configuración desde el disquete puede lograrlo realizando los siguientes pasos:
- Use el comando
mkdosfspara crear un sistema de archivos DOS FAT en el disquete y utilice la opción-Rpara reservar sectores suficientes para el archivo de la etapa 2. - Monte el disquete
- Cree un directorio /boot/grub en el disquete
- Copie los archivos GRUB stage1, stage2, y grub.conf al directorio boot/grub del disquete. Copie también el archivo de imagen splash si lo desea.
- Edite su archivo grub.conf en el disquete de manera que se refiera al archivo splash en el disquete.
- Desmonte el disquete
- Use el comando shell
grubpara configurar GRUB en el disquete utilizando los comandos raíz y los comandos de configuración de GRUB.
Hemos ilustrado esto en el Listado 12.
Listado 12. Instalación de GRUB en un disquete con un sistema de archivos
[root@pinguino ~]# mkdosfs -R 220 /dev/fd0
mkdosfs 2.11 (12 Mar 2005)
[root@pinguino ~]# mkdir /mnt/floppy
[root@pinguino ~]# mount /dev/fd0 /mnt/floppy
[root@pinguino ~]# mkdir -p /mnt/floppy/boot/grub
[root@pinguino ~]# cp /boot/grub/stage1 /mnt/floppy/boot/grub
[root@pinguino ~]# cp /boot/grub/stage2 /mnt/floppy/boot/grub
[root@pinguino ~]# cp /boot/grub/splash* /mnt/floppy/boot/grub
[root@pinguino ~]# cp /boot/grub/grub.conf /mnt/floppy/boot/grub
[root@pinguino ~]# umount /dev/fd0
[root@pinguino ~]# grub
Probing devices to guess BIOS drives. This may take a long time.
GNU GRUB version 0.97 (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> root (fd0)
Filesystem type is fat, using whole disk
grub> setup (fd0)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/fat_stage1_5" exists... no
Running "install /boot/grub/stage1 (fd0) /boot/grub/stage2 p /boot/grub/grub.c
onf "... succeeded
Done. |
Este último ejemplo muestra también el hecho de que usted puede ejecutar el comando
grub en un shell de Linux. Esta es una buena forma de
aprender sobre GRUB sin tener que volver a arrancar la máquina una y otra vez.
Usted necesita autoridad de usuario raíz para ejecutar grub
y así poder hacer la mayoría de las cosas que puede hacer GRUB,
excepto rearrancar el sistema.
GRUB 2 se volvió a escribir desde scratch para hacerlo mucho más portátil y con más módulos. Éste apunta a arquitecturas y métodos de arranque diferentes y posee muchas características nuevas. Consulte Resources para obtener más información. Si usted está acostumbrado a GRUB y comienza a utilizar GRUB 2, encontrará que es completamente diferente y probablemente tendrá muchas sorpresas.
Lo primero que le podría llamar la atención es que GRUB 2 no se instala como un cargador de arranque de partición. Aunque antes dije que el instalador de Ubuntu instala GRUB en la partición donde instalé Ubuntu 9.10 en (/dev/sda7), esa partición no arranca mediante un cargador de cadena. El resto de esta sección le dará una breve introducción a GRUB 2 y encontrará información suficiente para comenzar a utilizarlo solo o junto con GRUB Legacy.
La versión de GRUB 2 para PCs se distribuye con el paquete grub-pc. Usted
encontrará varios programas, normalmente en .usr/bin or /usr/sbin, que forman
parte del paquete grub-pc como se observa en el Listado 13. El tiempo de carga
las páginas de los manuales para estos programas es mínimo. Pruebe ejecutar los programas con
la opción --help para obtener más información,
o buscar ayuda adicional en Internet.
Listado 13. Los ejecutables de GRUB 2 en /usr/bin and /usr/sbin
ian@pinguino:~$ dpkg -L grub-pc|grep "bin/" /usr/bin/grub-mkimage /usr/bin/grub-mkrescue /usr/sbin/grub-setup /usr/sbin/update-grub2 /usr/sbin/update-grub /usr/sbin/grub-install /usr/sbin/upgrade-from-grub-legacy /usr/sbin/grub-set-default /usr/sbin/grub-reboot |
Lo más importante de GRUB 2 es un kernel multiarranque (/boot/grub/core.img) junto con
un archivo de configuración (/boot/grub/grub.cfg). Estos se generarán
si usted ejecuta grub-install y establece
como objetivo su MBR (por ejemplo:
grub-install /dev/sda). Ejecute
grub-install --help como se observa en el Listado
14 para obtener una idea de los programas que son llamados a hacer todo el trabajo. Algunos
items son similares a Grub Legacy, pero hay un número de items nuevos,
como --modules,
--grub-setup,
--grub-mkimage, etc.
Listado 14. GRUB 2 colabora con grub-install
ian@pinguino:~$ grub-install --help
Usage: grub-install [OPTION] install_device
Install GRUB on your drive.
-h, --help print this message and exit
-v, --version print the version information and exit
--modules=MODULES pre-load specified modules MODULES
--root-directory=DIR install GRUB images under the directory DIR
instead of the root directory
--grub-setup=FILE use FILE as grub-setup
--grub-mkimage=FILE use FILE as grub-mkimage
--grub-mkdevicemap=FILE use FILE as grub-mkdevicemap
--grub-probe=FILE use FILE as grub-probe
--no-floppy do not probe any floppy drive
--recheck probe a device map even if it already exists
--force install even if problems are detected
--disk-module=MODULE disk module to use
INSTALL_DEVICE can be a GRUB device name or a system device filename.
grub-install copies GRUB images into the DIR/boot directory specified by
--root-directory, and uses grub-setup to install grub into the boot
sector.
Report bugs to <bug-grub@gnu.org>.
|
Por lo tanto si usted ejecuta grub-install /dev/sda, el
proceso creará una archivo de imagen para usted, creará un archivo de configuración,
e instalará GRUB 2 en su MBR. Si usted no está preparado para asignarle a GRUB2
toda la configuración, puede crear estas partes por si mismo y luego arrancar la
imagen principal de GRUB 2 desde GRUB Legacy o LILO.
Creación de la imagen principal de GRUB 2
La manera más fácil de crear un nuevo archivo de imagen es ejecutar grub-install con la
opción --grub-setup=/bin/true, lo que provoca que
/bin/true sea ejecutado en lugar del verdadero programa de configuración GRUB 2, como se observa en
el Listado 15. Primero borramos core.img para mostrar que el archivo realmente se ha
generado.
Listado 15. Ayuda de GRUB 2 para grub-install
ian@pinguino:~$ sudo rm /boot/grub/core.img ian@pinguino:~$ sudo grub-install --grub-setup=/bin/true /dev/sda Installation finished. No error reported. This is the contents of the device map /boot/grub/device.map. Check if this is correct or not. If any of the lines is incorrect, fix it and re-run the script `grub-install'. (hd0) /dev/sda ian@pinguino:~$ ls -l /boot/grub/core.img -rw-r--r-- 1 root root 25105 2010-04-08 12:10 /boot/grub/core.img |
Creación del archivo de configuración de GRUB 2
El archivo de configuración de GRUB 2 es por lo general /boot/grub/grub.cfg. A diferencia de lo que sucede con GRUB
Legacy, usted no debería por lo general editar este archivo por si mismo. Usted debería crearlo
utilizando el comando grub-mkconfig o el comando
update-grub , que es un punto de partida para
grub-mkconfig. Estos comandos generalmente buscan
configuraciones, como los fondos, los tiempos de espera, etc. en /etc/default/grub,
y luego ejecutan los ejecutables desde /etc/grub.d/ para crear varias partes del archivo de
configuración, como el encabezado, una sección para la distribución actual de Linux,
las secciones para otros sistemas operativos, y sus propias adiciones personalizadas.
Si necesita personalizar el menú de GRUB 2, usted debería agregar sus
modificaciones a un archivo en /etc/grub.d/ such as 40_custom, o agregar su propio archivo.
Recuerde que éste debe ser ejecutable. Usted ejecutará entonces
update-grub para generar un nuevo archivo
/boot/grub/grub.cfg tal como se observa en el Listado 16.
Listado 16. Creación de un archivo de configuración de GRUB 2 con update-grub
ian@pinguino:~$ sudo update-grub Generating grub.cfg ... Found linux image: /boot/vmlinuz-2.6.31-20-generic Found initrd image: /boot/initrd.img-2.6.31-20-generic Found linux image: /boot/vmlinuz-2.6.31-14-generic Found initrd image: /boot/initrd.img-2.6.31-14-generic Found memtest86+ image: /boot/memtest86+.bin Found GRUB boot loader on /dev/sda1 Found Fedora release 8 (Werewolf) on /dev/sda6 done |
El Listado 17 muestra pocos items del archivo de configuración resultante. Hemos indicado largas líneas que rompemos para la publicación utilizando una barra invertida al final (\). Tenga en cuenta que los párrafos de entradas de menú se ven un poco más como scripts del shell que como los comandos simples sin lógica de GRUB Legacy. Otro cambio importante de GRUB Legacy es que la numeración de particiones ahora comienza en 1, aunque la numeración de disco comience todavía en 0. Por lo tanto /dev/sda7 es igual a (hd0,7) en GRUB 2 y sería (hd0,6) en GRUB Legacy.
Listado 17. Archivo de configuración parcial de GRUB 2
### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=black/white
### END /etc/grub.d/05_debian_theme ###
### BEGIN /etc/grub.d/10_linux ###
menuentry "Ubuntu, Linux 2.6.31-20-generic" {
recordfail=1
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
set quiet=1
insmod ext2
set root=(hd0,7)
search --no-floppy --fs-uuid --set 8954fa66-e11f-42dc-91f0-b4aa480fa103
linux /boot/vmlinuz-2.6.31-20-generic \
root=UUID=8954fa66-e11f-42dc-91f0-b4aa480fa103 ro quiet splash
initrd /boot/initrd.img-2.6.31-20-generic
}
menuentry "Ubuntu, Linux 2.6.31-20-generic (recovery mode)" {
recordfail=1
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
insmod ext2
set root=(hd0,7)
search --no-floppy --fs-uuid --set 8954fa66-e11f-42dc-91f0-b4aa480fa103
linux /boot/vmlinuz-2.6.31-20-generic
root=UUID=8954fa66-e11f-42dc-91f0-b4aa480fa103 ro single
initrd /boot/initrd.img-2.6.31-20-generic
}
|
Arranque de GRUB 2 desde Grub Legacy
Hemos mencionado que no es posible cargar GRUB 2 en cadena desde el registro de arranque de una partición. Sin embargo, una vez que su imagen principal y su archivo de configuración han sido creados, usted puede agregar una entrada a su archivo GRUB Legacy grub.conf or menu.lst para arrancar la imagen principal de GRUB 2, la cual luego desplegará el menú de GRUB 2 que usted ha creado. El Listado 18 muestra la entrada que hemos utilizado en el Listado 8. Desde que este archivo de configuración existe para GRUB Legacy, la entrada raíz especifica (hd0,6) para /dev/sda7.
Listado 18. La entrada de configuración de Grub Legacy para arrancar la imagen principal de GRUB 2
# Ubuntu 9.10 uses GRUB 2, so use kernel to drive GRUB 2 menu. title Ubuntu 9.10 (sda7) root (hd0,6) kernel /boot/grub/core.img |
Cuando usted selecciona esta entrada desde el menú de GRUB Legacy, verá un menú similar al que se observa en la Figura 7, en la cual la primera entrada está resaltada. Ésta entrada y la entrada siguiente han sido ilustradas en el Listado 17.
Figura 7. Ejemplo de menú de GRUB 2
Usted podría tentarse a tratar de instalar GRUB 2 en el registro de arranque de una partición. Si usted trata de hacerlo, probablemente verá datos de salida similares a los que se observan en el Listado 19.
Listado 19. Intento de instalar GRUB 2 en el registro de arranque de una partición
ian@pinguino:~$ sudo grub-install /dev/sda7 grub-setup: warn: Attempting to install GRUB to a partition instead of the MBR. This is a BAD idea. grub-setup: warn: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and its use is discouraged. Installation finished. No error reported. This is the contents of the device map /boot/grub/device.map. Check if this is correct or not. If any of the lines is incorrect, fix it and re-run the script `grub-install'. (hd0) /dev/sda |
Esto explica porqué mi intento de instalar GRUB 2 en la partición de /dev/sda7 mientras estaba instalando Ubuntu 9.10 fracasó. Vale la pena resaltar que esta versión de Ubuntu instalará GRUB 2 en una nueva instalación, pero mantendrá el administrador de arranque actual si usted está actualizando una instalación Ubuntu existente.
GRUB 2 incluye un comando grub-mkrescue para
ayudarlo a crear un disquete o una imagen de CD de rescate. Consulte la ayuda o las páginas de los manuales para
obtener más detalles
Ahora conoce los dos cargadores principales de los sistemas tradicionales Linux, incluso el modo de solucionar errores y problemas de arranque. También ha recibido una introducción a GRUB 2, el cual no se encuentra en los objetivos LPI pero está comenzando a aparecer en las principales distribuciones de Linux.
| Descripción | Nombre | tamaño | Metodo de descarga |
|---|---|---|---|
| Configuration files used in this article | l-lpic1-v3-102-2-samples.zip | 8KB | HTTP |
Información sobre métodos de descarga
Aprender
- Utilice developerWorks roadmap for LPIC-1 para encontrar los artículos de developerWorks
que lo ayuden a estudiar para la certificación para LPIC-1 basada en los objetivos de abril
de 2009.
- En el sitio LPIC
Program, encuentre los objetivos detallados, las listas de tareas, y ejemplos de las preguntas
para los tres niveles de la certificación en administración del sistema Linux del Linux Professional Institute.
En particular, vea los objetivos de abril de 2009
para LPI exam 101 y LPI exam 102. Siempre consulte el sitio del Programa LPIC
para ver los últimos objetivos.
- Consulte toda la LPI exam prep series
en developerWorks para aprender lo más importante de Linux y prepararse para la certificación en administración
del sistema Linux conforme a los objetivos para el examen LPI anteriores a abril de 2009.
- Aprenda sobre GRUB legacy y GRUB 2 en la
GNU GRUB home page.
GNU GRUB es un cargador de arranque multiarranque derivado de GRUB, GRand Unified
Bootloader.
- La Multiboot Specification para una interfaz permite cualquier
cargador de arranque que cumpla con los requisitos para cargar el sistema operativo que se desee.
- En "Basic tasks for new Linux developers" (developerWorks, marzo
de 2005), aprenda a abrir una ventana terminal o un prompt del shell y mucho más.
- El Linux
Documentation Project tiene varios documentos útiles, especialmente los HOWTOs.
- En la developerWorks Linux zone ,
encuentre cientos de how-to articles and tutorials , así como descargas, foros de discusión,
y una gran cantidad de recursos para desarrolladores y administradores de Linux.
- Permanezca al día con developerWorks technical events
and webcasts especializadas en varios productos IBM y en la industria IT
topics.
- Asista a free developerWorks Live!
briefing para actualizarse de manera sencilla sobre los productos y las herramientas de IBM y sobre las tendencias de la industria IT.
- Mire developerWorks on-demand demos,
las cuales contienen explicaciones sobre la instalación de los productos y las presentaciones de configuración para los principiantes, hasta
las funcionalidades avanzadas para los desarrolladores experimentados.
- Manténgase actualizado con developerWorks on Twitter, o
suscríbase a un canal de Linux tweets on developerWorks.
Obtener los productos y tecnologías
- Descargue el System rescue CD-Rom, una de muchas
herramientas disponibles en línea para ayudarlo a recuperar el sistema tras una caída del mismo.
-
Evaluate IBM products de la
manera que mejor le convenga: descargue un producto de prueba, pruebe un producto en línea,
use un producto en un entorno nube, o pase algunas horas en el SOA Sandbox aprendiendo como
implementar de manera eficiente la arquitectura orientada al servicio.
Comentar
- Participar en el foro de debate.
- Conéctese con My developerWorks community.
Conéctese con otros usuarios de developerWorks mientras explora los blogs administrados por los desarrolladores,
los foros, los grupos y los wikis.
Ian Shields trabaja en múltiples proyectos Linux para la zona Linux de developerWorks. Es Senior Programmer de IBM en el Research Triangle Park (RTP), Carolina del Norte. Ingresó a IBM en Canberra, Australia, como Systems Engineer en 1973, y desde entonces se dedica a sistemas de comunicaciones y computación ubicua en Montreal, Canadá, y en el RTP de Carolina del Norte. Es propietario de numerosas patentes y publicó diversos trabajos. Tiene una diplomatura en Matemática Pura y Filosofía de la Universidad Nacional de Australia. Es Máster y Doctor en Ciencias de la Computación de la Universidad Estatal de Carolina del Norte. Para contactar a Ian, escríbale a: ishields@us.ibm.com.