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 25/05/2005, à 12:04

cep

Avant de faire un multiboot, ou pour réparer certains multiboots

Tout complément ou toutes corrections sont les bienvenus

Souvent, pour installer linux (ou tout autre système d’exploitation) en dual boot avec windows, il faut repartitionner son disque pour faire de la place au nouveau venu. Dans 99 % des cas, repartitionner son disque se passe sans problème. Mais, parfois, la table des partitions est modifiée de telle façon que l’on ne peut plus booter Windows.
Pas de panique, ce problème est rattrapable et vos données ne devraient pas être perdues.

Mesures de sauvegarde :
Comme le repartionnement et l’installation d’un nouveau système n’est pas anodin et peut présenter des risques pour l’existant, vous allez faire des sauvegardes de vos documents personnels et de vos données sensibles. Profitez-en pour sauvegarder aussi, sur papier, la géométrie de votre disque. Cela évitera d’avoir à ouvrir le pc (garantie ?) en cas de problème pour lire ces données sur le couvercle du disque.

Pour connaître cette géométrie, vous démarrez votre machine avec un live cd et, en console, vous tapez la commande :
fdisk –l /dev/hda
pour afficher la table des partitions . Ceci si vous installez linux sur le premier disque ide. A adapter donc si vous installez sur un autre disque ou si le mbr est sur un autre disque ; hdb pour le deuxième disque, hdc pour le troisième, etc.

Écrivez donc sur papier la géométrie du disque indiquée dans les premières lignes du résultat de la commande fdisk. Les éléments rapportés sont :
Nombre de cylindres, Têtes, et les secteurs. On appelle ces données CHS (Cylinder, Head, Sector).
C’est tout. Vous pouvez maintenant installer votre linux et il se chargera de partitionner votre disque pendant la procédure d’installation, ou partitionner vous-même votre disque.

Problème et Réparation :
Pas de chance, on vous a dit que ça se passait bien dans 99 % des cas, mais il restait ce petit 1 % et il a fallu qu’il tombe sur vous.

Oui, malgré toutes vos tentatives de redémarrer windows, malgré le fait que vous ayez trituré Grub (ou lilo) dans tous les sens, joué avec les rootnoverify, les map, etc., rien n’y fait, impossible de relancer Windows.

Le disque n'a pas été cassé et votre table des partitions est correcte. Mais Windows demande une table CHS "valide", car il vérifie encore cette géométrie et ne peut booter si elle n'est pas correcte.

Si vous faites un :
sfdisk /dev/hda vous pourrez lire :
« AVERTISSEMENT: la partition étendue ne débute pas sur une frontière de cylindres. DOS et Linux interpréteront les contenus différemment. »

La réparation de ce problème est très simple. Vous devez modifier la géométrie du disque et réinscrire la table des partition en utilisant sfdisk  qui peut accepter des données en entrée pendant l'exécution et  donc modifier la géométrie du disque.

Alors, si on fait un :
/sbin/sfdisk -d /dev/hda
AVERTISSEMENT: la partition étendue ne débute pas sur une frontière de.
cylindres DOS et Linux interpréteront les contenus différemment.
# table de partitions de /dev/hda
unit: sectors

/dev/hda1 : start=       63, size=  1622502, Id=82
/dev/hda2 : start=  1638062, size=158448466, Id= 5
/dev/hda3 : start=        0, size=        0, Id= 0

Cela donne la table des partitions dans un format que sfdisk peut également utiliser en entrée. Les warnings posent problème car ils empêchent d'utiliser la sortie directement en entrée. Il faudra donc diriger la sortie de sfdisk dans un fichier texte, de l'éditer pour supprimer les warning et d'utiliser ce fichier en entrée.

Il faudra donc faire :
/sbin/sfdisk -d /dev/hda > matable.txt

Ensuite vous éditez le fichier matable.txt créé pour enlever les warnings. Il faut garderd seulement la table des partitions. Une fois modifié, ce fichier se présentera ainsi :
# table de partitions de /dev/hda
unit: sectors

/dev/hda1 : start=       63, size=  1622502, Id=82
/dev/hda2 : start=  1638062, size=158448466, Id= 5
/dev/hda3 : start=        0, size=        0, Id= 0

Ensuite on peut utiliser ce fichier en entrée de la commande sfdisk en tapant :
cat matable.txt | /sbin/sfdisk --no-reread -H255 /dev/hda

Pour détailler un peu la deuxième partie /sbin/sfdisk --no-reread -H255 /dev/hda de la commande :

Cette deuxième commande effectue les modifications sur le disque dur. -H255 indique à sfdisk qu'il doit écrire 255 têtes (head) dans la géométrie du disque. En pipant (les deux commandes séparées par un | pipe), la première commande fournie la table des partitions à la deuxième commande ce qui évite à l'utilisateur de rentrer les informations a la main et de faire des erreurs.
L'option --no-reread permet a la commande de s'exécuter même si le disque a une partition montée, et l'option --force aidera l'opération à s'exécute avec la deuxième commande.

Comme vous connaissez aussi le nombre correcte de cylindres avant les modifications faites pendant l’installation de linux vous pouvez également ré-écrire cette valeur si jamais elle a été modifiée. Par exemple si votre disque contient 158816 cylindres, alors la commande est :
/sbin/sfdisk -d /dev/hda | sfdisk --no-reread -H255 -C 158816 /dev/hda

Le nombre de secteurs lui n'est pas modifié.

Récapitulatif :

Donc, pour résumer, il faudra faire :

1°   /sbin/sfdisk -d /dev/hda > matable.txt

2°  enlever les warnings du fichier matable.txt

3° cat matable.txt | /sbin/sfdisk --no-reread -H255 /dev/hda

ou /sbin/sfdisk -d /dev/hda | sfdisk --no-reread -H255 -C 158816 /dev/hda
 
Valeurs à adapter à votre cas en fonction des sauvegardes faites avant ou de ce que vous savez de votre disque.

Prévention : (non testé)

Il serait aussi possible d’éviter tout problème en passant, lors de l’installation de linux, les paramètres :
hdn=<géométrie du disque> n étant le disque avec le MBR sur lequel sera faite l’installation.
Ce qui donnerait par exemple :
linux hda=158816,255,63

Hors ligne

#2 Le 25/05/2005, à 12:10

Stemp

Re : Avant de faire un multiboot, ou pour réparer certains multiboots

Bravo, beau travail big_smile


«La violence n'a jamais rien réglé» Gengis Khan 1162-1227
Blog | Crunchbang Linux | Arch Linux

Hors ligne

#3 Le 25/05/2005, à 13:29

jpaul

Re : Avant de faire un multiboot, ou pour réparer certains multiboots

hello, tu peux mettre ca sur http://wiki.ubuntu-fr.org , ca peut servir
wink
@+ et bravo


<Mon avatar n'est pas une grenouille><Windows ça pue; Mac c'est trop cher; Linux c'est trop compliqué*, xBSD ça sert à rien><Les modos, on vous aime><Hébergement Web gratos et sympah ;)>
* Mais ça rend beau
[Membre du club des beaux Ubunteros]

Hors ligne

#4 Le 25/12/2008, à 21:16

killuminati

Re : Avant de faire un multiboot, ou pour réparer certains multiboots

Bonsoir, oui tout ça est bon à voir mais en pratique je comprend rien du tout je viens d'installer Linux ubuntu sur un de deux disque dure IDE 80GO hj'ai déja partitionné swap  home et /  par contre a la fin de l'installation de ubuntu au redemarage de PC sachant que je pc est en boot en premiere par le disque dure de ubuntu, j'ai un message TABLE DE PARTITION NON VALIDE.
aidez moi.


En théorie il ne devrait pas y avoir de différence entre la théorie et la pratique. En pratique il y en a.

Hors ligne