Carga en cadena de dos instalaciones Grub2


14

Esto realmente me está deprimiendo. Tengo Gentoo y Ubuntu, ambos con Grub2. Gentoo tiene una /bootpartición dedicada , mientras que Ubuntu no. Tengo un menuentryGentoo /etc/grub.d/40_custompara arrancar Ubuntu (y Ubuntu arranca bien).

Debido a que Ubuntu viene con Grub, quiero cargar en cadena en ese, en lugar de mantener mi entrada que establece la raíz, el núcleo, initrd y otras cosas. Esto es lo que tengo para el cargador de cadenas (Ubuntu está encendido /dev/sda4y ya instalé Grub allí):

menuentry 'Chainloader' {
    insmod chain
    set root=(hd0,4)
    chainloader +1
}

Me está dando error: Invalid signaturey no encontré ninguna solución disponible. ¿Alguien puede señalar algo?

Este es el resultado de </dev/sda4 head -c 512 | hd

00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000200

Este es el resultado de fdisk -l. /dev/sda1es /bootde Gentoo, Gentoo está adentro /dev/sda2, Ubuntu está adentro /dev/sda4. Ubuntu también /bootestá adentro /dev/sda4.

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xe001152b

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1           9       72261   83  Linux
/dev/sda2              10       13064   104864287+  8e  Linux LVM
/dev/sda4   *       18152       19457    10490445   83  Linux

No hay error con grub-install /dev/sda4 --no-floppy --force

/usr/sbin/grub-setup: warn: Attempting to install GRUB to a partition instead of the MBR.  This is a BAD idea..
/usr/sbin/grub-setup: warn: Embedding is not possible.  GRUB can only be installed in this setup by using blocklists.  However, blocklists are UNRELIABLE and their use is discouraged..
Installation finished. No error reported.

Claramente no has instalado un gestor de arranque /dev/sda4. ¿Tienes más de un disco? ¿Cuál es tu mesa de partición? Por favor, publique el resultado fdisk -ly los mensajes de grub-install /dev/sda4 --no-floppy --force.
Gilles 'SO- deja de ser malvado'

sí, actualicé la pregunta
phunehehe

Respuestas:


4

Puede cargar GRUB2 en cadena desde GRUB2, lo probé de la manera que describió y funciona. Sin embargo, la información que proporcionó hace que parezca que la imagen de arranque no se incrustó en el MBR del disco (o no sería todo ceros).

Intentaría esto, aunque no está usando exactamente el GRUB2 de Ubuntu (solo es el archivo de configuración). Puede crear una entrada de menú en el archivo de configuración Gentoo GRUB2 que carga el archivo de configuración de Ubuntu. Hay dos formas en que veo hacer esto.

El que usaría es con el comando normal , que le permite especificar un archivo de configuración para cargar en modo normal. Si sigue esta ruta, hay un comando llamado normal_exit que puede agregar como elemento personalizado en su configuración de Ubuntu que le permitiría volver a su configuración de Gentoo.

La otra opción es el comando configfile , que le permite especificar un archivo de configuración alternativo para cargar. Sin embargo, parece que sería más difícil "retirarse" de esta opción.

Puede encontrar más información sobre estos comandos aquí .


3

La parte inicial del proceso de arranque consiste en cargar el código del primer sector del disco duro, el denominado Master Boot Record (MBR) . Normalmente, Grub se escribe en este primer sector del disco duro y no en el primer sector de la partición de retención / arranque. Sin embargo, normalmente puede cambiar esto durante la instalación de Linux, pero en las rutinas de instalación modernas, esto a menudo está oculto.

Dices que tienes Grub instalado en / dev / sda4, sin embargo, tu configuración parece correcta y el mensaje de error que publicaste sugiere que Grub podría no estar instalado correctamente en la partición que deseas cargar en cadena. Debería arrancar en Gentoo, luego hacer chroot en la partición de Ubuntu. ¡Asegúrese de que / boot ahora apunte correctamente al Ubuntu- / boot y no al Gentoo! Ahora instalar Grub 2 en el primer sector de la partición de Ubuntu-/ dev / sda4: grub-install /dev/sda4 --no-floppy.

Como siempre al jugar con MBR y particiones, asegúrese de tener una copia de seguridad funcional y actualizada antes de comenzar.


¿Hay alguna diferencia si inicio en Ubuntu y ejecuto grub-install? porque eso es lo que hice y no funciona :(
phunehehe

Pensé que no se puede iniciar en Ubuntu porque la carga en cadena no funciona. Pero no, no debería hacer una diferencia si arrancas en Ubuntu o haces chroot en él.
fschmitt

@phunehehe: el mensaje de error significa que Grub no ha encontrado una firma del gestor de arranque en el primer sector de /dev/sda4(los dos últimos bytes deben ser 0x55 0xaa). ¿Podría publicar la salida de </dev/sda4 head -c 512 | hd?
Gilles 'SO- deja de ser malvado'

@Gilles: agregué el resultado a la pregunta. No parece correcto, ¿verdad?
phunehehe

De hecho, tengo que correr grub-install /dev/sda4 --no-floppy --force, de lo contrario, habrá algunas quejas sobre las listas de bloqueo
phunehehe

-1

¿No va a estar sda4 (hd0,3) en grub, o este tipo de cosas ha cambiado en grub2?


Sí, estoy seguro / dev / sda4 se convertirá en (hd0,4) porque eso es lo que he estado utilizando para arrancar Ubuntu
phunehehe

3
Sí, Grub 0.97 comenzó a contar discos duros y particiones con 0. Grub 2 todavía comienza a contar discos con 0 pero comienza a contar particiones con 1. Entonces / dev / sda4 es hd0,3 en Grub 0.97 y hd0,4 en Grub 2.
fschmitt
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.