Nach der Installation von Arch Linux wird nur der Text "Kein bootfähiges Gerät gefunden" angezeigt.

8

Ich habe versucht, Arch Linux zu installieren. Nach der Installation wird der BIOS-Bildschirm angezeigt. Danach wird die Meldung "Kein bootfähiges Gerät gefunden" angezeigt.

Ich habe das ganze Szenario jetzt einige Male wiederholt, trotzdem zeigt es nur die gleiche Meldung ...

Bei der Installation habe ich den inoffiziellen Anfängerleitfaden aus dem ArchLinux-Wiki befolgt.

Folgendes habe ich getan:

Zuerst habe ich die Festplatte gelöscht (auf der vor dem Löschen Windows Vista installiert war) und GPT mithilfe von gdisk darauf gelegt. Dann habe ich einige Partitionen eingerichtet, die nun wie folgt aussehen (Ausgabe von 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     

Dann habe ich die Root-Partition (sda2) auf / mnt gemountet, danach auch den Boot und die Home-Partition (sda3 und sda5) auf / mnt / boot und / mnt / home und am Ende die Swap-Partition (sda4) formatiert und aktiviert. .

Jetzt begann ich das Basissystem zu installieren. Nachdem ich die Spiegel ausgewählt hatte, installierte ich base und base-devel.

Am Ende der Installation habe ich eine fstab generiert.

Dann habe ich endlich in / mnt chrooted, einige Locales, stellen Sie ein Root - Passwort einrichten und dann installiert und konfiguriert Grub2, genau so , wie es erklärt hier .

Am Ende habe ich die Chroot-Umgebung verlassen, die Partitionen ausgehängt und neu gestartet. Sie kennen den Rest ... Es wurde nur die Meldung angezeigt, dass keine bootfähigen Geräte gefunden werden konnten.

Ich habe übrigens versucht, es auf diesem Computer zu installieren .

brgr
quelle
1
Ist die Ausgabe von dd if=/dev/sda bs=1 skip=510 count=2 2>&- | hexdump(oder xxd anstelle von hexdump) gleich 55aa? Wenn nicht, ist der MBR schlecht.
Runium
Die Ausgabe war die folgende: 0000000 aa55 0000002 Wenn der MBR schlecht ist, wie Sie sagen, kann ich etwas tun, um ihn wieder gut zu machen?
Brgr
Nein, das sieht in Ordnung aus. (0000000 und 0000002 sind versetzt) aa55ist die korrekte MBR-Signatur ( 55aaauf dem Little-Endian-System).
Runium
@Sukminder, mir fehlt vielleicht etwas, aber das OP sagte, er habe GPT verwendet, nicht MBR.
JMCF125
1
@ JMCF125: GPT verwendet auch MBR. Anstelle einer vollständigen Partitionstabelle enthält sie eine Partition mit maximaler Größe. Die GPT-Daten beginnen normalerweise bei Offset 512 (nach MBR). upload.wikimedia.org/wikipedia/commons/0/07/… MBR führt die erste Stufe des Bootladens durch . Logische Blockadresse 0 -> Legacy-MBR.
Runium

Antworten:

4

Ich hatte das gleiche Problem und bei der Suche stellte ich fest, dass die UUID von root / partition in grub.cfg falsch ist. Sie können dies versuchen:

  1. Booten Sie von Live-Archlinux-Medien
  2. mount /dev/sdxx /mnt (sdxx ist Ihre Root-Partition)
  3. arch-chroot /mnt
  4. grub-mkconfig -o /boot/grub/grub.cfg
  5. grub-install

Fertig.

Amirhossein Sobhani
quelle
Ich habe das alles schon beim ersten Versuch gemacht. Ich habe jedoch versucht, es erneut zu tun, wie Sie erklärt haben, und habe einen Fehler grub-installfestgestellt: Es wurde angegeben, dass keine Bios-Boot-Partition aktiviert ist /dev/sda, während es tatsächlich eine gibt.
Brgr
2

OK. Wurde ein bisschen lang für einen Kommentar. Dies steht nicht in direktem Zusammenhang, sondern nur zur Erläuterung des aa55Kommentars.

Wenn das Basic Input / Output System (BIOS) startet funktioniert es ein Power-On Self Test (POST), prüft die Hardware usw. Dann sieht es für Geräte , die sowohl bootfähig und aktiv im Auftrag von CMOS (Ihre Konfiguration im BIOS gegeben sind - das wiederum ist gegeben durch einen komplementären Metalloxidhalbleiter ). Wenn eine Festplatte 0xaa55mit dem Offset 510 gefunden wird, lädt sie diesen Abschnitt der Festplatte (Sektor 1) in den Speicher und überlässt ihm die Steuerung unter der Adresse 0x00000 dieses Codes. Diese 512 Bytes sind der Master Boot Record (MBR).

Dieser Code, in diesem Fall " GRUB - boot" , überprüft verschiedene Bytes dieser 512 und fragt das BIOS nach verschiedenen Informationen. In diesem Prozess wird ermittelt, auf welcher Festplatte der Rest von GRUB vorhanden ist, und dieser Abschnitt der Festplatte wird in den Speicher geladen. Anschließend erhält dieser Teil des Codes die Kontrolle. Dieser montiert Kernel usw. und überlässt die Kontrolle dem.

Bei Verwendung von GPT befindet sich das Image, das GRUB aus dem MBR lädt, in der bios_grub Partition, die Sie haben und die groß genug ist usw. Sie können also nicht erkennen, wie das falsch sein könnte.


Ein "Kein bootfähiges Gerät gefunden." Nachricht vom BIOS - es kann vorkommen, dass der MBR der Bootdiskette beschädigt ist, wenn der MBR endet 0xaa55und der MBR beschädigt ist, wird normalerweise ein anderer Fehler angezeigt - oder das System hängt einfach.


Jedenfalls. Das ist komisch. Ich stelle fest, dass Sie keine Partition als "boot" markiert haben . Verwenden Sie GPT, das korrekt ist - aber obwohl es verboten ist, können Sie versuchen, eine zu markieren, z sda5. B. als Boot. In gparted: (erfuhr, dass (g) auch GPT geändert hat, die nicht wollen) fdisk:

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

Es kann sein, dass Ihr BIOS mehr tut als es sollte und die Partitionstabelle in MBR überprüft.


BEARBEITEN - Update zum Kommentar:

AFAIK spielt keine Rolle, welches Sie einstellen, da es nicht tatsächlich verwendet wird. Punkt ist, für wen jemals gesagt wird, dass kein "bootfähiges Gerät gefunden" wurde , werden sie zufrieden sein. Dies sda1ist keine Boot-Partition im herkömmlichen Sinne, sondern Speicherplatz für GRUB-Boot-Dateien.

In einem herkömmlichen Partitionslayout (nicht GPT) haben Sie normalerweise Folgendes:

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 ]
      |                  |
      |                  |
      |__________________|

Das würde 3 Partitionen bedeuten. Alles , bevor ich 0x400 auf dem HDD - Offset rohes Bytes - wie in nicht Teil einer Partition usw.

Hier ist die Boot- Partition Partition 2 , eine Systempartition mit Linux.

Die Dateien des GRUB-Moduls 1 befinden sich direkt nach dem MBR und vor der ersten Partition. Es kann sich überall befinden, normalerweise jedoch auf derselben Festplatte und mit einem Versatz von 512 MBR-Festplatten.

Auch auf einem GPT-System - GPT verwendet diesen Abschnitt der Festplatte für sich selbst, daher müssen diese GRUB-Dateien an einen anderen Speicherort verschoben werden. Dafür ist das gedacht bios_grub- core.imgfür GRUB 2 zu speichern .


Das "Set Boot Flag" ist nur ein Schuss in die Dunkelheit - und wäre überrascht, wenn es funktioniert. Aber irgendwo hat man angefangen.


EDIT2:

Was ist, wenn Sie dies tun:

  1. Aktuellen MBR sichern:

      dd if=/dev/sda of=/path/mbr-backup bs=512 count=1
    
  2. Erstellen Sie ein Bild von Code TESTunten, das in der Datei gespeichert ist test.svon:

    as -o test.o test.s
    objcopy -O binary test.o test.img
    
  3. Kopieren Sie die test.imgDatei in MBR:

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

Code TEST:

    .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

So stellen Sie MBR wieder her:

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

Dies sollte einfach "Hallo!" auf den Bildschirm, wenn der MBR geladen wurde, dann stoppen. Getestet unter qemu-system-x86_64, qemu-system-i386, VirtualBox, stationärem Intel PC 32 und 64-Bit.


Runium
quelle
Zunächst einmal vielen Dank für Ihre Hilfe. Könnten Sie mir bitte erklären, warum ich sda5als Boot-Partition festlegen sollte ? Ist es nicht sda1eine bessere Option, als Boot-Partition festzulegen, da es nur dafür ist?
Brgr
Ok, ich habe es jetzt versucht, aber leider mit dem gleichen Ergebnis ...
brgr
Was sollte es aufgelistet haben?
Brgr
Ok, ich habe jetzt auch deinen zweiten Rat ausprobiert, immer noch ohne Ergebnis :(
brgr
Ja, es ist aufgeführt.
Brgr
0

Ich kann mich irren und habe nicht das Richtige getan, aber ich hatte zuerst das gleiche Problem wie Sie. Nach einer Weile habe ich gefunden hier , dass GRUB has to have a 512MB EFI partition, with a vfat filesystem. Dies ist für den Fall, dass Sie Ihr System als EFI installieren:

Für EFI suchen Sie nach einer kleinen Partition (512 MiB oder weniger) mit einem vfat-Dateisystem und aktiviertem Startflag.

Dies bedeutet, dass Sie diese Tatsache beim Erstellen Ihrer Partitionen berücksichtigen müssen. Während Sie dies tun (z. B. mit cfdisk), müssen Sie Ihr / dev / sdX1 als EFI festlegen und es dann in ein FAT32-Dateisystem formatieren (mit dem Befehl mkfs.vfat -F32 /dev/sdX1während des Installationsvorgangs). Nur dann wird Maden erkannt.

Ich gehe davon aus, dass Syslinux mit Ihrer ext2-Partition arbeiten kann, wenn Sie es versuchen möchten.

Wenn Sie Arch nicht als EFI installieren, können Sie wahrscheinlich das Wiki überprüfen. In diesem Fall kann ich nicht weiter helfen.

Ich weiß, dass dieser Beitrag alt ist, aber dies ist für den Fall, dass jemand hierher kommt und hofft, eine Lösung zu finden.

Razakhel
quelle
1
Das Beantworten alter Beiträge ist in Ordnung und wird sogar empfohlen. Bitte bearbeiten Sie jedoch Ihre Antwort und markieren Sie den Teil, der tatsächlich antwortet . Was war die Lösung, die Sie gefunden haben? Welche Aussage? Das Bereitstellen eines Links zu einer anderen Seite, die möglicherweise eine Antwort enthält, ist keine Antwort. Bitte zitieren Sie stattdessen den entsprechenden Abschnitt direkt in Ihrer Antwort, damit alle Informationen hier enthalten sind.
Terdon
Die Antwort war da, nur zitiert aus dem von mir bereitgestellten Link, aber nicht hervorgehoben. Vielen Dank für den Hinweis. Bitte sagen Sie mir, wenn Sie der Meinung sind, dass etwas anderes notwendig ist.
Razakhel
Echtes Zitat jetzt hinzugefügt. Und korrigierte das 512MB (at least), es war umgekehrt ...
Razakhel