Después de instalar Arch Linux, solo muestra el texto "No se encontró ningún dispositivo de arranque"


8

He estado intentando instalar Arch Linux. Después de la instalación, muestra la pantalla del BIOS y luego aparece un mensaje que dice "No se encontró ningún dispositivo de arranque".

He revisado todo el escenario ahora algunas veces, aún así muestra el mismo mensaje ...

En la instalación, he seguido la Guía no oficial para principiantes de la wiki de ArchLinux.

Aquí esta lo que hice:

En primer lugar, limpié el disco duro (en el que antes estaba instalado Windows Vista) y puse GPT usando gdisk. Luego configuré algunas particiones, que ahora se ven como las siguientes (salida de parted):

Model: ATA ST9160310AS (scsi)
Disk /dev/sda: 160GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system     Name                 Flags
 1      1049kB  2097kB  1049kB                  BIOS boot partition  bios_grub
 2      2097kB  107MB   105MB   ext2            Linux filesystem     
 3      107MB   21.6GB  21.5GB  ext4            Linux filesystem     
 4      21.6GB  30.2GB  8590MB  linux-swap(v1)  Linux swap           
 5      30.2GB  160GB   130GB   ext4            Linux filesystem     

Luego monté la partición raíz (sda2) en / mnt, después de eso también la partición boot y home (sda3 y sda5) en / mnt / boot y / mnt / home y al final formateé y activé la partición swap (sda4) .

Ahora comencé a instalar el sistema base. Después de seleccionar los espejos, instalé base y base-devel.

Al final de la instalación, generé un fstab.

Luego finalmente me puse en / mnt, configuré algunas configuraciones regionales, establecí una contraseña de root y luego instalé y configuré Grub2, exactamente como se explica aquí .

Al final salí del entorno chroot, desmonté las particiones y reinicié. Ya sabes el resto ... Simplemente mostró el mensaje de que no podía encontrar ningún dispositivo de arranque.

Por cierto, intenté instalarlo en esta computadora.


1
¿La salida de dd if=/dev/sda bs=1 skip=510 count=2 2>&- | hexdump(o xxd en lugar de hexdump) es igual a 55aa? Si no, el MBR es malo.
Runium 01 de

El resultado fue el siguiente: 0000000 aa55 0000002 Si el MBR es malo, ¿cómo se dice, hay algo que pueda hacer para que vuelva a funcionar?
brgr

No. Eso se ve bien. (0000000 y 0000002 están desplazados) aa55es la firma MBR correcta ( 55aaen el sistema little endian).
Runium

@Sukminder, puede que me falte algo, pero el OP dijo que usaba GPT, no MBR.
JMCF125

1
@ JMCF125: GPT también usa MBR. En lugar de una tabla de partición completa, contiene una partición de tamaño máximo. Los datos GPT generalmente comienzan en el desplazamiento 512 (después de MBR). upload.wikimedia.org/wikipedia/commons/0/07/… MBR tiene la primera etapa de carga de arranque. Dirección de bloque lógico 0 -> MBR heredado.
Runium

Respuestas:


4

Tuve el mismo problema y al buscar encontré que uuid de root / partición está mal en grub.cfg, puedes probar esto:

  1. Arranque desde live archlinux media
  2. mount /dev/sdxx /mnt (sdxx es tu partición raíz)
  3. arch-chroot /mnt
  4. grub-mkconfig -o /boot/grub/grub.cfg
  5. grub-install

terminar.


Ya hice todo esto en el primer intento. Sin embargo, traté de hacerlo nuevamente como me explicaste y obtuve un error grub-install: decía que no habría una partición de arranque de Bios /dev/sda, mientras que en realidad hay una.
brgr

2

OKAY. Se hizo un poco largo para comentar. Esto no está directamente relacionado, sino solo para explicar el aa55comentario.

Cuando el Basic Input / Output System (BIOS) comienza lo hace una prueba automática de encendido (POST), el hardware de verificación, etc. A continuación, busca los dispositivos que son a la vez de arranque y activa de orden dada por CMOS (Su configuración en el BIOS - el cual a su vez está dado por un semiconductor de óxido de metal complementario ). Cuando encuentra un disco que tiene 0xaa55un desplazamiento 510, carga esa sección del disco (sector 1) en la memoria y le deja el control en la dirección 0x00000 de ese código. Esos 512 bytes son el Master Boot Record (MBR).

Ese código, en este caso " GRUB - boot" , verifica varios bytes de estos 512 además de pedirle al BIOS información diversa. En este proceso, localiza qué disco tiene el resto de GRUB y carga esa sección del disco en la memoria; luego, esa parte del código obtiene el control. Ese monta el núcleo, etc. y deja el control a eso.

Usando GPT, la imagen que GRUB carga desde dentro de MBR se encuentra en la bios_grub partición, que tiene, y es lo suficientemente grande, etc., por lo que no puedo ver cómo eso podría estar mal.


En "No se encontró ningún dispositivo de arranque". mensaje del BIOS: se puede tener el caso de que el MBR del disco de arranque está dañado, si MBR termina 0xaa55y el MBR está dañado, generalmente se obtiene otro error, o el sistema simplemente se bloquea.


De todos modos. Esto es raro Noto que no tiene una partición marcada como "arranque" . Usar GPT es correcto, pero, aunque está prohibido, podría intentar marcar uno, por ejemplo, sda5como arranque. En gparted: (aprendí que (g) se separó también alter GPT que no quería) fdisk:

# Toggle bootable:
a [DISK NUMBER]
# Check (could be an asterisk marking boot partition):
p
# Save changes:
w

Podría ser que su BIOS esté haciendo más de lo que debería y verificando la tabla de particiones en MBR.


EDITAR - Actualizar para comentar:

AFAIK, no importa cuál establezca, ya que no se usa realmente. El punto es que, para quienes digan que no se encontró un "dispositivo de arranque" , estarán satisfechos. No sda1es una partición de arranque en el sentido tradicional, sino espacio para archivos de arranque GRUB.

En un diseño de partición tradicional (no GPT), generalmente tiene algo como:

0x000 [Master Boot Record] <- Partition table say Partition 2 is active
                                                       |
0x200 [ GRUB module 1    ] <- core.img from GRUB       |
                                                       |
0x400 [ Partition 1 Swap ]                             |
      |                  |                             |
      |                  |                             |
      |__________________|                             |
                                                       |
0x... [ Partition 2 ext4 ]                             |
      | * Active         | <- AKA boot ----------------+
      |                  |
      |__________________|

0x... [ Partition 3 ext4 ]
      |                  |
      |                  |
      |__________________|

Eso significaría 3 particiones. Todo antes del offset 0x400 en el HDD i bytes sin procesar , como no forma parte de ninguna partición, etc.

Aquí la partición de arranque es la Partición 2 que es la partición del sistema con Linux.

Los archivos del módulo 1 de GRUB residen justo después de MBR y antes de la primera partición. Puede residir en cualquier lugar, pero generalmente en el mismo disco y en el desplazamiento 512 del disco MBR.

También en un sistema GPT: GPT usa esa sección del disco para sí mismo, por lo tanto, uno tiene que mover esos archivos GRUB a otra ubicación. Para eso bios_grubestá: para almacenar core.imgGRUB 2.


La "bandera de inicio" es simplemente un disparo en la oscuridad, y se sorprendería si funciona. Pero uno ha comenzado en alguna parte.


EDIT2:

¿Qué pasa si haces esto?

  1. Copia de seguridad de MBR actual:

      dd if=/dev/sda of=/path/mbr-backup bs=512 count=1
    
  2. Cree una imagen desde Code TESTabajo, guardada en el archivo test.spor:

    as -o test.o test.s
    objcopy -O binary test.o test.img
    
  3. Copie el test.imgarchivo a MBR:

    dd if=test.img of=/dev/sda bs=512 count=1
    
  4. Bota

PRUEBA de código:

    .file "test.s"
    .text
    .code16
.globl start, _start
start:
_start:
    jmp go
    nop
go:
    movb $0x48, %al
    call prnt_chr
    movb $0x65, %al
    call prnt_chr
    movb $0x6c, %al
    call prnt_chr
    movb $0x6c, %al
    call prnt_chr
    movb $0x6f, %al
    call prnt_chr
    movb $0x21, %al
    call prnt_chr
    ret
prnt_chr:
    movb $0x0e, %ah
    int  $0x10
    ret
    . = _start + 0x1fe 
    .word   0xaa55

Para restaurar MBR haz:

dd if=/path/mbr-backup of=/dev/sda bs=512 count=1

Esto debería simplemente imprimir "¡Hola!" a la pantalla si se cargó el MBR, luego deténgase. Lo probé ejecutando qemu-system-x86_64, qemu-system-i386, VirtualBox, PC Intel estacionaria de 32 y 64 bits.



En primer lugar, gracias por tu ayuda. ¿Podría explicarme por qué debería establecer sda5como partición de arranque? ¿No es sda1una mejor opción para establecer como partición de arranque, ya que está aquí solo para eso?
brgr

Ok, he intentado esto ahora, pero lamentablemente con el mismo resultado ...
brgr

¿Qué debería haber enumerado?
brgr

Ok, ahora también he probado tu segundo consejo, aún sin resultado :(
brgr

Sí, está en la lista.
brgr

0

Puedo estar equivocado y no he hecho lo correcto, pero al principio tuve el mismo problema que tú. Después de un tiempo, he encontrado aquí eso GRUB has to have a 512MB EFI partition, with a vfat filesystem. Esto es en caso de que instale su sistema como EFI:

Para EFI, está buscando una partición pequeña (512 MiB o menos) con un sistema de archivos vfat y el indicador de arranque habilitado.

Esto significa que debe anticipar este hecho al crear sus particiones. Mientras lo hace (con cfdisk por ejemplo), deberá configurar su / dev / sdX1 como EFI, luego formatearlo en un sistema de archivos FAT32 (con el comando mkfs.vfat -F32 /dev/sdX1durante el proceso de instalación). Solo entonces se reconocerá a grub.

Sin embargo, supongo que Syslinux puede trabajar con su partición ext2, si tiene ganas de probarlo.

Si no instala Arch como EFI, probablemente pueda consultar el wiki en absoluto. No puedo ayudar más en este caso.

Sé que esta publicación es antigua, pero esto es en caso de que alguien venga y espere encontrar una solución.


1
Responder publicaciones antiguas está bien e incluso se recomienda. Sin embargo, edite su respuesta y resalte la parte que realmente responde . ¿Cuál fue la solución que encontraste? Que afirmacion Proporcionar un enlace a otra página que pueda contener una respuesta no es una respuesta. En cambio, cite la sección relevante directamente en su respuesta para que toda la información se encuentre aquí.
terdon

La respuesta estaba allí, solo citada desde el enlace que proporcioné, aunque no destacada. Gracias por señalar eso. Por favor, dime si sientes que algo más es necesario.
Razakhel

Cita real agregada ahora. Y corrigió el 512MB (at least), fue al revés ...
Razakhel
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.