Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 23/03/2013, à 23:50

Umuntu

error: attempt to read or write outside of disk 'hd0'

Bonjour à tous!

Ayant eu un problème après une mauvaise manipulation qui suivait une mise à jour, je ne pouvais plus démarrer mon ordinateur. À la place j'obtenais le message d'erreur:

error: attempt to read or write outside of disk 'hd0'

J'ai pu trouver un post sur le forum anglais (http://askubuntu.com/questions/142300/h … rub-rescue) détaillant une procédure pour recouvrir d'un tel plantage. Je me permets donc de poster une traduction ici au cas où quelqu'un subisse le même problème.

PS: dans mon cas, la simple succession de commandes ci-dessous (avec X et Y adapté à ma configuration) a suffit à résoudre l'ensemble de mes problèmes. Cependant, je vous conseille de lire l'ensemble du post pour voir quel est la procédure complète!

set root=(hdX,Y)
    set prefix=(hdX,Y)/boot/grub
    insmod normal
    normal

*******************************************************
Procédure:

  1. 1.Localiser la partition Ubuntu et le dossier contenant les modules GRUBLocate the Ubuntu partition and the folder containing the Grub modules.

    Le dossier GRUB contenant les modules doit être localiser afin que les modules appropriés puissent être chargés. Ce dossier a normalement été créé durant l'installation d'Ubuntu, et devrait être dans la partition Ubuntu, à moins que vous n'ayiez divisé votre système en plusieurs partitions.
    Ce dossier est normalement situé soit dans (hdX,Y)/boot/grub ou bien (hdX,Y)/usr/lib/grub/i386-pc . Repérer la partition Ubuntu et le dossier de modules.

    ls                               # Liste les lecteurs/disques existants (hdX) et les partitions (hdX,Y).
    ls (hdX,Y)/                      # Liste le contenu à la racine de la partition.
    ls (hdX,Y)/boot/grub             # Emplacement habituel des modules de GRUB 2.
    ls (hdX,Y)/usr/lib/grub/i386-pc  # Emplacement alernatif des modules de GRUB2.
    • ls - renvoie la liste des lecteurs/disques connus (hdX) et des partitions (hdX,Y)

    • ls (hdX,Y)/ - montre le contenu à la racine de la partition.

    • Si un message "error: unknown filesystem" apparaît, il ne s'agit pas de la partition Ubuntu.

    • S'il s'agit de la partition Ubuntu, les dossiers Ubuntu, tel que lost+found/, home/, boot/ et vmlinuz et initrd.img sont affichés. Utiliser cet emplacement pour la 1ere partie de la prochaine commande.

    • ls (hdX,Y)/boot/grub - devrait afficher de nombreux fichiers *.mod. Il s'agit du dossier recherché.

    • Si vous ne trouvez pas les modules, essayez un autre emplacement:

      ls (hdX,Y)/usr/lib/grub/i386-pc
  2. Charger les modules

    set prefix=(hdX,Y)/<chemin-des-modules>

    Cette commande doit pointer précisement vers le dossier contenant les modules GRUB. L'emplacement doit être celle trouvée lors de la recherche des modules.
    Exemples:

    set prefix=(hd0,5)/boot/grub 
    set prefix=(hd1,1)/usr/lib/grub/i386-pc

    Charger les modules:

    insmod linux insmod loopback insmod iso9660 insmod fat # Si l'ISO est situé sur une partition formaté en fat16 ou fat32. 
    insmod ntfs # If ISO is located on an NTFS formatted partition.
    insmod nftscomp # If NTFS compression is used on the partition.

    Charger le(s) module(s) en cas d'incertitude.

    Un message d'erreur "file not found" voudra dire que le lien dans le préfixe est incorrect ou que le module en question n'existe pas. La valeur du préfixe peut être corriger avec la commande set. Retaper la commande "set prefix=" avec le chemin correct.

  3. Trouver le fichier ISO Ubuntu.

    En combinant les différentes commandes "ls", trouver l'image ISO d'Ubuntu.

  4. Créer le loopback

    loopback loop (hdX,Y)/<path to ISO>/<ISO-name.iso>

        Exemple:

    loopback loop (hd1,1)/path/to/ubuntu-10.04.1-desktop-i386.iso
  5. Charger le noyau Linux et l'image initrd.

    set root=(loop)
    linux /casper/vmlinuz boot=casper iso-scan/filename=/<ISO-name.iso> noprompt noeject
    initrd /casper/initrd.lz

    Si le chemin vers l'ISO ou le nom du fichier n'est pas correct, le démarrage s'arrêtera à l'écran BusyBox et affichera un message "can't open /dev/sr0: No medium found".
        Note: Si l'ISA n'est pas dans le dossier / (racine), il faut inclure le chemin dans iso-scan/filename= entry. cf 2ème exemple.
        Exemples:

    linux /casper/vmlinuz boot=casper iso-scan/filename=/ubuntu-10.04.1-desktop-i386.iso
    linux /casper/vmlinuz boot=casper iso-scan/filename=/my-iso/ubuntu-10.04.1-desktop-i386.iso
  6. Démarrage
    Après toutes ces étapes, le démarrage devrait pouvoir avoir lieu. Si les commandes ont été effectuées sans message ou erreur. Il est de redémarrer:

    boot

Plus d'info ici (en anglais): http://ubuntuforums.org/showthread.php?t=1599293

Une fois que l'ordinateur a enfin démarré, il faut s'assurer que la réparation dure.
À faire après le démarrage:

  1. sudo mount /dev/sdaX /mnt

    sdaX correspond à la partition de démarrage. Avec la commande

    sudo blkid

    , on peut obtenir une liste telle que celle-ci:

    /dev/sda1: LABEL="Windows XP" UUID="96A4390DA438F0FB" TYPE="ntfs" 
    /dev/sda3: LABEL="Ubuntu 11.04" UUID="b61fcae3-7744-45b4-95b9-7528d50a3652" TYPE="ext4" 
    /dev/sda5: LABEL="Se7en" UUID="A2DC9D71DC9D4109" TYPE="ntfs" 
    /dev/sda6: LABEL="Development" UUID="DEB455A1B4557CC9" TYPE="ntfs" 
    /dev/sda7: LABEL="EXTRA" UUID="D8A04109A040F014" TYPE="ntfs" 
    /dev/sda8: LABEL="SONG" UUID="46080FCD080FBAC7" TYPE="ntfs" 
    /dev/sda9: LABEL="BACKUPS" UUID="766E-BC99" TYPE="vfat"

    #note: sdaX doit être une partition linux.

  2. sudo grub-install --boot-directory=/mnt/boot /dev/sda
  3. sudo update-grub

Hors ligne

#2 Le 19/06/2013, à 11:23

Kark

Re : error: attempt to read or write outside of disk 'hd0'

Bonjour,
Je n'ai pas réussi avec cette méthode mais j'en ai trouvé une plus simple qui a fonctionné pour moi.
J'ai réinstaller Grub (sans purge) en ligne de commande, via le disque supergrub : tout est expliqué en détail sur cette page http://doc.ubuntu-fr.org/tutoriel/comme … aurer_grub
En espérant que cela en aidera certains.

Mark


1 + 1 = 3
La somme de deux talents vaut plus que leur simple addition.

Hors ligne

#3 Le 23/06/2020, à 21:05

slbruno

Re : error: attempt to read or write outside of disk 'hd0'

Bonjour!
dans l’étape 1 de la procédure donnée par Umuntu, c’est à dire:
« Ce dossier est normalement situé soit dans (hdX,Y)/boot/grub ou bien (hdX,Y)/usr/lib/grub/i386-pc .»

Que faire lorsque chacun de ces dossiers renvoit le message « attempt to read or write outside of disk ´hd0’ » ?

Merci d’avance

Hors ligne