"La Gaceta de Linux...haciendo de Linux algo un poco mas divertido!"


Iniciando Linux desde el Menú de Boot de NT

Por: Pradeep Padala

Traducido al Español por: Diego Fernando Marin
el día 27 de Febrero 2001, para La Gaceta de Linux.


Por que un articulo sobre Linux en un menú de boot de NT? Tenemos HOW-TOs, cierto? Los HOW-TOs ofrecen instrucciones paso a paso, pero desafortunadamente no ofrecen todo lo que queremos. Los HOW-TOs están orientados hacia personas que son nuevas en Linux y son muy buenos explicando cosas para novatos. Pero cuando llega el momento de hacer algo fuera de lo ordinario, estamos estancados. Este articulo busca llenar este vacío.

Para iniciar, un día tuve la idea loca de que seria agradable tener un solo cargador de boot, para iniciar todo desde un solo manejador en lugar de tener ambos LILO y el manejador de boot de NT. Así que cual manejador debería usar? Yo escogí el manejador de boot de NT, porque cuando instalamos LILO e iniciábamos NT desde allí, NT seguía presentando su propio menú de boot, y es molesto que te pregunten dos veces para iniciar el sistema operativo correcto. Por eso pense en remover LILO y usar el cargador de NT para presentar un menú agradable para todos los sistemas operativos que tengo. OK entonces, como lo hacemos? Busque a través de los HOW-TOs. El mini HOW-TO HOWTO NT OS Loader + Linux mini-HOWTO ofrece una buena perspectiva del proceso. Pero desafortunadamente mi cerebro no pudo captar el concepto. Como resultado, cuando seguí los pasos por primera vez, termine con un sistema inusable. Después de 3 días de duro trabajo, reiniciar y lidiar con un sistema inusable 3 veces, los conceptos comenzaron a ser claros.

Aqui vamos

Cargador de Boot de NT

El cargador de Boot de NT, carga la imagen del sistema operativo leyendo el archivo de inicialización boot.ini. Viéndolo ahora, el contiene algo como lo siguiente:

		[boot loader]
		timeout=30
		default=multi(0)disk(0)rdisk(0)partition(1)\WINNT
		[operating systems]
		multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows NT Workstation Version 4.00"
		multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows NT Workstation Version 4.00 
		[VGA mode]" /basevideo /sos

Esto dice iniciar el sistema operativo desde la partición mencionada. O sea, tome los primeros 512 bytes de información, los cuales son requeridos para iniciar el correspondiente sistema operativo. Como hacemos para iniciar Linux usando este concepto, Simple! podemos poner los primeros 512 bytes de la partición de inicio de Linux (el sector de inicio para Linux) en un archivo y dárselo al manejador de Boot de NT. Podemos modificar el archivo boot.ini como sigue:

		[boot loader]
		timeout=30
		default=multi(0)disk(0)rdisk(0)partition(1)\WINNT
		[operating systems]
		multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows NT Workstation Version 4.00"
		multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows NT Workstation Version
		4.00 [VGA mode]" /basevideo /sos
		C:\boot.lnx="Redhat Linux 6.2"

Donde boot.lnx es el archivo que contiene los 512 bytes requeridos. Pero tenemos que obtener esos 512 bytes. Cómo hacemos eso? El HOW-TO da un buen ejemplo de como hacerlo. Aquí necesitamos los primeros 512 bytes de la partición de inicio de Linux, la cual le dice a NT simplemente inicie Linux. Necesitamos hace un archivo lilo.conf y pasárselo a LILO, y decirle que instale el sector de inicio de Linux en la partición de Linux (no en el MBR). Luego extraemos los primeros 512 bytes de allí, los ponemos en un archivo y lo pasamos al NT. Luego instalamos LILO en el MBR, y tenemos cuidado de cargar WINNT como el sistema operativo por defecto. Creamos el lilo.conf para escribir el NT como sistema operativo por defecto y lo instalamos.

Hagamoslo.

Primero, déjenme explicar mi ambiente de ejemplo. He cargado Red Hat directo de la caja con las opciones por defecto durante la instalación. El instalo LILO en el MBR, y lo actualizo de acuerdo a las opciones dadas durante la instalación, teniendo en cuenta los otros sistemas operativos (como NT) que tenia. Yo solo tengo NT aquí. Cuando reinicie después de la instalación, LILO mostró dos opciones de inicio: Linux y DOS. Cuando entre a DOS, el paso al manejador de Boot de NT.

Que es lo que tratamos de hacer? queremos hacer que LILO inicie el manejador de Boot de NT por defecto y desde el manejador de Boot de NT queremos tener la opción de iniciar Linux.

Comencemos aquí. Primero iniciar Linux. Hacer un archivo lilo.conf temporal como esto: Copie lilo.conf a lilo.dummy y abra lilo.dummy con vi. Edítelo para que se vea similar a esto:

		# lilo.dummy file
		boot = /dev/hda3 	# Linux esta en /dev/hda3 en mi maquina.
		                        # use la particion donde usted instalo Linux 
		timeout=0 		# timeout igual a cero, para evitar la espera de LILO
		vga = normal
		read-only
		default=linux
		image = /boot/vmlinuz
		label = linux
		root = /dev/hda3

Luego ejecute LILO con este archivo temporal como argumento del comando. Esto instala LILO en el sector de inicio de Linux sobre /dev/hda3:

/sbin/lilo -C lilo.dummy

Extraiga los primeros 512 bytes con este comando:
dd if=/dev/hda3 of=boot.lnx bs=512 count=1

Copiamos el archivo boot.lnx al disco C:. Si el disco C: esta montado como /win/c podemos copiarlo con este comando:
cp boot.lnx /win/c

O monte el disco C: y copie el archivo así:
mount /dev/hda1 /win/c
cp boot.lnx /win/c

Luego cambie el archivo boot.ini como se indica aquí:
		[boot loader]
		timeout=30
		default=multi(0)disk(0)rdisk(0)partition(1)\WINNT
		[operating systems]
		multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows NT Workstation Version 4.00"
		multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows NT Workstation Version
		4.00 [VGA mode]" /basevideo /sos
		C:\boot.lnx="Redhat Linux 6.2"

Instalando LILO en el MBR.

Solo cambie el archivo lilo.conf para reflejar el WINNT como sistema operativo por defecto, sin ninguna espera al inicio, y dígale al LILO que lo instale en el MBR.

		boot = /dev/hda                 # Instalelo en el MBR
		timeout=0
		vga = normal
		read-only
		default=win                     # Necesitamos NT como SO por defecto
		image = /boot/vmlinuz		# Podemos remover esto sin problemas, pues 
						# no necesitamos iniciar Linux desde LILO
	 	label = linux
		root = /dev/hda3
		other = /dev/hda1
		label = win

Instale LILO de nuevo. Antes de reiniciar, asegúrese que tiene un disco de rescate a la mano. Puede usar el disco de instalación de Red Hat como disco de rescate. Vea la sección de Trampas para encontrar como usarlo como disco de rescate, o puede crear un disco de rescate con el comando:

mkbootdisk

El cual puede usar, como disco de rescate. Vea Bootdisk-HOWTO para mas información sobre como hacer un disco de rescate.

Luego reinicie, y vea la magia.

Todavía esta insatisfecho? Yo sé que es lo que le molesta. Usted quiere eliminar por completo LILO. Haga esto, consiga un disco de DOS con el programa fdisk.exe y reinicie la maquina con él. Luego ejecute el comando "fdisk /mbr" para sobre-escribir el registro maestro de inicio (MBR). Yo no sé que ocurre con esta opción, estoy todavía inseguro acerca de esto, y si alguien sabe que hace esta opción, por favor escribame.

    Trampas:

  1. Recuerde que cada vez que cambie su kernel, o haga cambios al archivo lilo.conf, debe seguir el proceso de nuevo, y hacer una nueva copia del archivo boot.lnx y pasarla al NT.

  2. Si usted ha hecho alguna cosa mal, y no puede iniciar Linux, entonces reinicie con el disco de rescate e instale LILO de nuevo, como sigue:

    (Puede usar el CD de instalación de Red Hat como disco de rescate. Al menú de instalación, escribe "rescue" y ENTER)

    • Inicie con el disco de rescate
    • Monte la particion de linux
      mount /dev/hda3 /mnt
    • Cambie el root del sistema de archivos
      chroot /mnt
    • Cambien el archivo lilo.conf a algo como:
              boot = /dev/hda
              timeout=500
              prompt
              vga = normal
              read-only
              default=linux
              image = /boot/vmlinuz
                  label = linux
                  root = /dev/hda3
              other = /dev/hda1
                  label = win
           
    • instale lilo
      /sbin/lilo
    • Haga un sync y desmonte /dev/hda3
      sync
      umount /mnt
    • Reinicie
      /sbin/reboot


Copyright © 2000, Pradeep Padala.
Copying license http://www.linuxgazette.com/copying.html
Publicado en el número 61 de Linux Gazette, Enero 2001