Detalles básicos del sistema de trabajo:
Usé el CD del servidor Ubuntu 12.04 para instalar un servidor.
Tengo 4 discos. En todos los discos hice lo siguiente, similar a este tutorial :
- creó una partición de intercambio de 2 GB
- creó una partición de arranque / 256 GB
- creó una partición RAID10 de 64 GB (para root)
- creó una gran partición RAID10 tomando el resto del espacio
Formateé el arranque como ext3. Configuré RAID10 en la raíz y las grandes particiones. Formateé la raíz uno ext4. Creé un volumen lógico en el grande y lo formateé ext4.
El sistema resultante funciona bien y arranca bien.
Detalles del problema:
Entonces decidí documentar un procedimiento de falla. Como primer paso, decidí reinstalar grub.
# grub-install /dev/sda
warn: This GPT partition label has no BIOS Boot Partition; embedding won't be possible!.
error: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and their use is discouraged..
# grub-install /dev/sdb
warn: This GPT partition label has no BIOS Boot Partition; embedding won't be possible!.
error: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and their use is discouraged..
Parece que falló, pero también parece que se dio por vencido y no realizó cambios. Entonces reinicié. El arranque falló. Simplemente se cuelga con una pantalla negra con un cursor parpadeante a unas 4 líneas hacia abajo. Si inicio presionando "Shift", aparece la palabra "GRUB" a la izquierda del cursor, pero no aparece un mensaje interactivo.
En este punto, utilicé boot-repair-disk para generar este informe: http://paste.ubuntu.com/966531/
Tenga en cuenta que en el informe anterior, dice que el gestor de arranque no apunta al sector correcto para core.img. (sda es el cd virtual; sdb es el disco de arranque; sdc es un espejo de sdb, pero el arranque no está reflejado, solo hay una partición no relacionada separada y formateada ext3; sdd y sde tienen espacio para el arranque pero no está formateado)
Luego arranqué desde el CD del servidor Ubuntu, inicié el sistema de rescate y emití los siguientes comandos, que se completaron sin error (donde sda es el CD virtual, y b, c, d, e son los discos que eran a, b, c , d en los comandos de grub anteriores):
# parted /dev/sdb set 2 bios_grub on
# parted /dev/sdc set 2 bios_grub on
# grub-install /dev/sdb
# grub-install /dev/sdc
En este punto, utilicé boot-repair-disk para generar este informe: http://paste.ubuntu.com/966561/
Tenga en cuenta que en el informe anterior, el problema sobre core.img se ha ido. Parece apuntar al sector correcto.
Ahora, si intento arrancar, aparece un mensaje de grub. Si ejecuto "set", veo que la raíz se encuentra y se establece. Si ejecuto "ls /", veo mi directorio raíz desde el volumen de incursión, incluido el archivo del kernel vmlinuz. Si escribo "ls / vmlinuz" dice "error: archivo no encontrado". Dice el mismo error si uso el comando "linux" para intentar cargar el kernel. El archivo vmlinuz no aparece en la lista si uso "ls -l /".
Detalles excesivamente detallados, en caso de que desee seguir:
Noté que tampoco hay /boot/grub/grub.cfg, así que corrí
# grub-mkconfig -o /boot/grub/grub.cfg
Pero el problema persiste.
Si uso la herramienta "gptsync", no hay cambio en este comportamiento.
El disco de reparación de arranque no reparará el sistema, porque quiere que arranque con una BIOS habilitada para EFI. Investigué brevemente esto, pero no sé cómo funciona. Encontré un shell UEFI en mis opciones de arranque, pero no sé nada al respecto, y no veo cómo cambiar el inicio desde allí (por ejemplo, para arrancar el CD desde ese shell EFI).
También he leído esta página , pero Ubuntu no viene con el comando "grub", por lo que no puedo seguirlo exactamente. Simplemente podría instalar ese comando, pero tengo más curiosidad por saber cómo el instalador de Ubuntu logró instalarlo en lugar de tener una configuración diferente. ¿Usó listas de bloqueo?
Aquí está la salida de parted, mientras se inicia en el disco de reparación de arranque (donde aquí el sdb es el primer disco duro, sda cuando se inicia desde el disco, y "boot" cambia a "bios_grub" en el segundo enlace de pegado):
Model: ATA Hitachi HUA72303 (scsi)
Disk /dev/sdb: 3001GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 17.4kB 2000MB 2000MB linux-swap(v1) swap1
2 2000MB 2256MB 256MB ext3 boot1 boot (this says bios_grub in 2nd link)
3 2256MB 66.3GB 64.0GB root1 raid
4 66.3GB 3001GB 2934GB data1 raid
Aquí hay una máquina virtual súper antigua no relacionada para comparar (para cualquiera que no esté familiarizado con el disco de reparación de arranque ): http://paste.ubuntu.com/966799/
Aquí está el último pegado del sistema problemático, después de ejecutar el grub-mkconfig anterior, y también configurar "bios_grub" de nuevo a "boot". http://paste.ubuntu.com/966808/
Comparando los dos, esto parece interesante:
sdb2: __________________________________________________________________________
File system:
Boot sector type: Grub2's core.img
Boot sector info:
Mounting failed: mount: unknown filesystem type ''
md/bcserver8:0: ________________________________________________________________
File system: ext4
Boot sector type: -
Boot sector info:
Operating System: Ubuntu 12.04 LTS
Boot files: /boot/grub/grub.cfg /etc/fstab /boot/grub/core.img
Parece que el raid tiene los archivos de arranque y el sdb2 no está formateado. (a pesar de esto, el sistema se inició antes de ejecutar grub-install). Desde el CD de rescate, falla "mount -t ext3 / dev / sdb2 / boot". Pero tiene sentido que esto pueda confundir las cosas, ya que grub usa la partición 2 explícitamente (el 2 en el comando dividido que activa bios_grub).
Entonces hice algo como esto:
# mkfs.ext3 -L boot1 /dev/sdb2
# mv boot boot_on_root
# mkdir boot
# mount /dev/sdb2 boot
# rsync -avHP boot_on_root/ boot/
# parted /dev/sdb set 2 bios_grub on
# parted /dev/sdc set 2 bios_grub on
# grub-install /dev/sdb
# grub-install /dev/sdc
Luego reinicié, y tengo la pantalla negra de nuevo, sin aviso. http://paste.ubuntu.com/966848/
Entonces, en este punto, supongo que cuando se configura bios_grub, grub no se está instalando en el MBR, y no en el sistema de archivos ext3 en ext3, sino en la partición en sí, como si fuera EFI ... lo que obviamente ensuciaría arriba el sistema de archivos ext3. Y de mi breve lectura sobre EFI, sonaba como si EFI asumiera que la primera partición es el arranque, pero en mi caso la primera es swap, y también debería ser FAT en lugar de algo imposible de montar ... así que eso hace poco / no sentido, todavía estoy completamente perdido sin una pista. [EDITAR: ahora tengo una pista ... salte un poco para actualizar]
Y ahora cuando hago clic en reparar en boot-repair-disk , me pregunta algo más. La última vez que el error se ocultó debajo de la ventana y tuve que arrastrar el otro para verlo. Esta vez la ventana principal se ha ido y la nueva ventana dice:
GPT detected. You may want to retry after creating a
BIOS-Boot partition (>1Mo, flag). Do you want to continue?
Entonces hice clic en sí, y dijo que se reparó con éxito, y creé otra pasta: http://paste.ubuntu.com/966862/
Pero todavía tengo una pantalla negra con un cursor parpadeante.
Ahora mi teoría es que el arranque fue sobrescrito por una cosa no grasa y no EFI, que es solo un código de grub que de otro modo hubiera estado en los sectores 0-63 antes. Afortunadamente me encontré con una declaración muy clara en esta página, que probablemente completó mi comprensión de lo que todo esto significa. Y luego, cuando descubrí eso, Jeremy publicó una respuesta que, de ser cierta, confirma que este es el concepto clave que falta. http://blog.psych0tik.net/2011/08/grub-embedding-blocklists-and-bios_grub-partitions/
Preguntas:
Que esta pasando? ¿Por qué Grub no puede arrancar? ¿Por qué dice "archivo no encontrado"?
¿Por qué grub no quiere instalar sin esta configuración que configuré con parted (que no fue establecida por el instalador de Ubuntu)? Pensé que todo lo que necesitaba para instalarlo era un arranque / arranque separado que no esté en LVM ni RAID de software, ya que mi raíz está en RAID y la tabla de particiones es GPT.
¿Cómo lo instala el instalador de Ubuntu CD sin este problema y sin la configuración bios_grub?
También consideraría usar EFI. Si esta es una buena idea, y hay una forma estándar de configurarla, siempre estoy dispuesto a aprender cosas nuevas.
La respuesta más rápida que me haría feliz, incluso sin responder todas mis preguntas, sería un conjunto de comandos que podría ejecutar desde el CD de rescate para reparar el gestor de arranque de la misma manera que lo hizo el CD de instalación. También sería muy bueno si pudiera ejecutarlos con el sistema arrancado, en lugar del CD.