Après l'installation d'Arch Linux, il affiche simplement le texte «Aucun périphérique de démarrage trouvé»

8

J'ai essayé d'installer Arch Linux. Après l'installation, il affiche l'écran du BIOS et après cela vient juste un message qui dit "Aucun périphérique de démarrage trouvé".

J'ai réessayé tout le scénario maintenant quelques fois, il montre toujours le même message ...

Lors de l'installation, j'ai suivi le Guide du débutant non officiel du wiki ArchLinux.

Voici ce que j'ai fait:

Tout d'abord, j'ai effacé le disque dur (sur lequel, avant l'effacement, Windows Vista était installé) et j'ai mis GPT dessus en utilisant gdisk. Ensuite, j'ai mis en place quelques partitions, qui ressemblent maintenant à ce qui suit (sortie 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     

Ensuite, j'ai monté la partition racine (sda2) sur / mnt, après cela également le démarrage et la partition d'accueil (sda3 et sda5) sur / mnt / boot et / mnt / home et à la fin formaté et activé la partition de swap (sda4) .

Maintenant, j'ai commencé à installer le système de base. Après avoir sélectionné les miroirs, j'ai installé la base et la base-devel.

À la fin de l'installation, j'ai généré un fstab.

Ensuite, j'ai finalement chrooté dans / mnt, mis en place des paramètres régionaux, défini un mot de passe root, puis installé et configuré Grub2, exactement comme cela est expliqué ici .

À la fin, je suis sorti de l'environnement chroot, démonté les partitions et redémarré. Vous connaissez le reste ... Cela a juste montré le message qu'il ne pouvait trouver aucun périphérique amorçable.

Au fait, j'ai essayé de l'installer sur cet ordinateur.

brgr
la source
1
La sortie de dd if=/dev/sda bs=1 skip=510 count=2 2>&- | hexdump(ou xxd au lieu de hexdump) est-elle égale à 55aa? Sinon, le MBR est mauvais.
Runium du
Le résultat était le suivant: 0000000 aa55 0000002 si le MBR est mauvais, comment dites-vous, y a-t-il quelque chose que je puisse faire pour le rendre à nouveau bon?
brgr
Non, cela semble OK. (0000000 et 0000002 sont décalés) aa55est une signature MBR correcte ( 55aasur le petit système endian).
Runium
@Sukminder, je manque peut-être quelque chose, mais l'OP a dit qu'il utilisait le GPT, pas le MBR.
JMCF125
1
@ JMCF125: GPT utilise également MBR. Au lieu d'une table de partition complète, il contient une partition de taille maximale. Les données GPT commencent généralement au décalage 512 (après MBR). upload.wikimedia.org/wikipedia/commons/0/07/… MBR détient la première étape du chargement de démarrage. Adresse de bloc logique 0 -> MBR hérité.
Runium

Réponses:

4

J'ai eu le même problème et en recherchant j'ai trouvé que l'uuid de la racine / partition est incorrect dans grub.cfg, vous pouvez essayer ceci:

  1. Démarrage à partir d'un média archlinux en direct
  2. mount /dev/sdxx /mnt (sdxx est votre partition racine)
  3. arch-chroot /mnt
  4. grub-mkconfig -o /boot/grub/grub.cfg
  5. grub-install

terminer.

amirhossein sobhani
la source
J'ai déjà fait tout cela du premier coup. Cependant, j'ai essayé de le faire à nouveau comme vous l'avez expliqué et j'ai obtenu une erreur grub-install: il a dit qu'il n'y aurait pas de partition de démarrage Bios /dev/sda, alors qu'il y en a une.
brgr
2

D'ACCORD. Est devenu un peu long pour commenter. Ce n'est pas directement lié, mais seulement pour expliquer le aa55commentaire.

Lorsque le système d'entrée / sortie de base (BIOS) démarre, il effectue un auto-test de mise sous tension (POST), vérifie le matériel, etc. à son tour est donnée par un semi-conducteur à oxyde métallique complémentaire ). Lorsqu'il trouve un disque qui a un 0xaa55décalage 510, il charge cette section du disque (secteur 1) en mémoire et lui laisse le contrôle à l'adresse 0x00000 de ce code. Ces 512 octets sont le Master Boot Record (MBR).

Ce code, dans ce cas " GRUB - boot" , vérifie divers octets de ces 512 en plus de demander au BIOS diverses informations. Dans ce processus, il localise le disque qui contient le reste de GRUB et charge cette section du disque en mémoire - puis cette partie du code prend le contrôle. Celui-ci monte le noyau etc. et laisse le contrôle à cela.

En utilisant GPT, l'image que GRUB charge depuis MBR se trouve dans la bios_grub partition, que vous avez, et qui est assez grande, etc., donc vous ne pouvez pas voir comment cela pourrait être faux.


Sur "Aucun périphérique de démarrage trouvé." message du BIOS - on peut avoir le cas que le MBR du disque de démarrage est corrompu, si le MBR se termine 0xaa55et que le MBR est corrompu, on obtient généralement une autre erreur - ou le système se bloque simplement.


De toute façon. C'est bizarre. Je remarque que vous n'avez aucune partition marquée comme "boot" . Utiliser GPT c'est correct, - mais, bien que ce soit interdit, vous pouvez essayer d'en marquer un par exemple sda5comme boot. Dans gparted: (a appris que (g) parted modifie également le GPT dont nous ne voulons pas) fdisk:

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

Il se pourrait que votre BIOS fasse plus que ce qu'il devrait et vérifie la table de partition en MBR.


EDIT - Mise à jour pour commenter:

AFAIK peu importe lequel vous définissez car il n'est pas réellement utilisé. Le fait étant, pour qui jamais dire qu'aucun "périphérique de démarrage trouvé" , ils seront satisfaits. Ce sda1n'est pas une partition de démarrage au sens traditionnel, mais de l'espace pour les fichiers de démarrage GRUB.

Dans une disposition de partition traditionnelle (pas GPT), vous avez généralement quelque chose comme:

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

Cela signifierait 3 partitions. Tout avant offset 0x400 sur le disque dur i octets bruts - comme dans aucune partition, etc.

Ici, la partition de démarrage est la partition 2 qui est la partition système avec Linux.

Les fichiers du module 1 GRUB résident juste après MBR et avant la première partition. Il peut résider n'importe où, mais généralement sur le même disque et à l'offset 512 du disque MBR.

Également sur un système GPT - GPT utilise cette section du disque pour lui-même, il faut donc déplacer ces fichiers GRUB vers un autre emplacement. C'est à cela que bios_grubsert - à stocker core.imgpour GRUB 2.


Le "set boot flag" n'est qu'un tir dans l'obscurité, - et serait surpris si cela fonctionne. Mais on a commencé quelque part.


EDIT2:

Et si vous faites ceci:

  1. Sauvegarde du MBR actuel:

      dd if=/dev/sda of=/path/mbr-backup bs=512 count=1
    
  2. Créez une image d'en Code TESTbas, enregistrée dans un fichier test.spar:

    as -o test.o test.s
    objcopy -O binary test.o test.img
    
  3. Copiez le test.imgfichier sur MBR:

    dd if=test.img of=/dev/sda bs=512 count=1
    
  4. Démarrage

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

Pour restaurer MBR, procédez comme suit:

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

Cela devrait simplement imprimer "Bonjour!" à l'écran si le MBR a été chargé, puis arrêtez. Testé en fonctionnant sous qemu-system-x86_64, qemu-system-i386, VirtualBox, Intel PC stationnaire 32 et 64 bits.


Runium
la source
Tout d'abord merci pour votre aide. Pourriez-vous s'il vous plaît m'expliquer pourquoi je devrais définir sda5comme partition de démarrage. N'est-ce pas sda1une meilleure option à définir comme partition de démarrage, car elle est là juste pour cela?
brgr
Ok, j'ai essayé ça maintenant, mais malheureusement avec le même résultat ...
brgr
Que devrait-il avoir inscrit?
brgr
Ok, j'ai aussi essayé votre deuxième conseil, toujours sans résultat :(
brgr
Oui, il est répertorié.
brgr
0

J'ai peut-être tort et je n'ai pas fait la bonne chose, mais j'ai eu le même problème que vous au début. Après un certain temps, je l' ai trouvé ici que GRUB has to have a 512MB EFI partition, with a vfat filesystem. C'est dans le cas où vous installez votre système en tant qu'EFI:

Pour EFI, vous recherchez une petite partition (512 Mo ou moins) avec un système de fichiers vfat et l'indicateur de démarrage activé.

Cela signifie que vous devez anticiper ce fait lors de la création de vos partitions. Ce faisant (avec cfdisk par exemple), vous devrez définir votre / dev / sdX1 comme EFI, puis le formater en un système de fichiers FAT32 (avec la commande mkfs.vfat -F32 /dev/sdX1pendant le processus d'installation). Ce n'est qu'alors que grub sera reconnu.

Je suppose que Syslinux peut fonctionner avec votre partition ext2, si vous avez envie de l'essayer.

Si vous n'installez pas Arch en tant qu'EFI, vous pouvez probablement vérifier sur le wiki que ce soit. Je ne peux pas vous aider davantage dans ce cas.

Je sais que ce message est ancien, mais c'est au cas où quelqu'un viendrait ici et espère trouver une solution.

Razakhel
la source
1
Répondre aux anciens messages est bien et même encouragé. Cependant, veuillez modifier votre réponse et mettre en évidence la partie qui répond réellement . Quelle a été la solution que vous avez trouvée? Quelle déclaration? Fournir un lien vers une autre page qui pourrait contenir une réponse n'est pas une réponse. Veuillez plutôt citer la section pertinente directement dans votre réponse afin que toutes les informations soient contenues ici.
terdon
La réponse était là, juste citée à partir du lien que j'ai fourni, mais pas surlignée cependant. Merci d'avoir fait remarquer cela. Veuillez me dire si vous pensez que quelque chose d'autre est nécessaire.
Razakhel
Véritable citation ajoutée maintenant. Et corrigé le 512MB (at least), c'était l'inverse ...
Razakhel