#1 Le 31/07/2011, à 12:39
- svergeylen
(Résolu) Gparted ne voit aucune partition / Modification MBR à la main
Bonjour,
J'ai le même problème que dans ce topic (résolu !) mais il me manque des informations pour terminer la procédure :
J'ai également Ubuntu/grub fonctionnel mais gparted indique "non alloué" pour l'entièreté du disque.
Ma partition /dev/sda1 semble ne pas terminer sur un multiple de 16065 comme fdisk me l'indique :
sudo fdisk -lu
Disque /dev/sda: 500.1 Go, 500107862016 octets
255 têtes, 63 secteurs/piste, 60801 cylindres, total 976773168 secteurs
Unités = secteurs de 1 * 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Identifiant de disque : 0x00000000
Périphérique Amorce Début Fin Blocs Id Système
/dev/sda1 * 2048 206847 102400 7 HPFS/NTFS
La partition 1 ne se termine pas sur une frontière de cylindre.
/dev/sda2 206848 61641392 30717272+ 7 HPFS/NTFS
/dev/sda3 61641405 90317421 14338008+ 7 HPFS/NTFS
/dev/sda4 90317430 976784129 443233350 f W95 Etendue (LBA)
/dev/sda5 90317493 121033708 15358108 83 Linux
/dev/sda6 121033773 125226652 2096440 82 Linux swap / Solaris
/dev/sda7 125226738 976768057 425770660 83 Linux
D'après vos informations, il faudrait (corrigez-moi si je me trompe) :
- indiquer au mbr que la partition /dev/sda1 est plus petite que 102400 blocs
- la taille de /dev/sda1 devrait être un multiple de 16065, soit 12x16065 = 192780 blocs (taille souhaitée)
- convertir 192780 en hexa : 2F10C , puis inverser les valeurs .... ? 0C F1 02 00 ???
- inscrire cette information dans le mbr après l'avoir backup... mais à quelle où inscrire ces informations ?
Pourriez-vous me dire où inscrire la nouvelle taille de /dev/sda1 dans le mbr ?
Voici, pour info, les commandes que vous aviez demandées à d'autres personnes précédemment :
sudo dd if=/dev/sda bs=1 count=64 | hexdump -C
00000000 eb 63 90 8e d0 31 e4 8e d8 8e c0 be 00 7c bf 00 |.c...1.......|..|
00000010 06 b9 00 01 f3 a5 be ee 07 b0 08 ea 20 06 00 00 |............ ...|
00000020 80 3e b3 07 ff 75 04 88 16 b3 07 80 3c 00 74 04 |.>...u......<.t.|
00000030 08 06 af 07 83 ee 10 d0 e8 73 f0 90 90 90 90 90 |.........s......|
64+0 enregistrements lus
64+0 enregistrements écrits
64 octets (64 B) copiés, 0,000191365 s, 334 kB/s
00000040
et la même commande avec skip=446 si nécessaire (pourquoi 446 ?)
sudo dd if=/dev/sda bs=1 count=64 skip=446 | hexdump -C
00000000 80 20 21 00 07 df 13 0c 00 08 00 00 00 20 03 00 |. !.......... ..|
00000010 00 df 14 0c 07 fe ff ff 00 28 03 00 b1 6a a9 03 |.........(...j..|
00000020 00 fe ff ff 07 fe ff ff bd 92 ac 03 b1 8f b5 01 |................|
00000030 00 fe ff ff 0f fe ff ff 76 22 62 05 8c 68 d6 34 |........v"b..h.4|
64+0 enregistrements lus
64+0 enregistrements écrits
64 octets (64 B) copiés, 0,00018885 s, 339 kB/s
00000040
Dernière modification par svergeylen (Le 02/08/2011, à 09:54)
Stéphane
Hors ligne
#2 Le 01/08/2011, à 17:33
- Nasman
Re : (Résolu) Gparted ne voit aucune partition / Modification MBR à la main
La commande
sudo dd if=/dev/sda bs=1 count=64 skip=446 | hexdump -C
a pour but d'afficher 64 octets du premier secteur du disque (mbr) en sautant les 446 premiers octets.
Les 446 premiers octets du mbr contiennent du code qui ne nous intéresse pas ici (recherche de la partition à charger au démarrage) et des chaines de caractères correspondant aux messages d'erreur possible (si grub apparait alors grub est installé dans le mbr).
A partir du 446ème octet apparait la table des partitions principales qui fait 64 octets (16 pour décrire chacune des partitions principales) - c'est donc l'information qui nous intéresse (et non pas les 64 premiers octets du disque).
La table des partition nous dit :
sda1
80 20 21 00 07 df 13 0c 00 08 00 00 00 20 03 00
Partition marquée "boot" (étoile=80), commence à la tête 32 (20), au secteur 33 (21) et au cylindre 0 - information dans le système tête/secteur/cylindre (obsolète)
type ntfs (07), se termine à la tête 223 (df), au secteur 19 (13) et au cylindre 12 (0c) - information dans le système tête/secteur/cylindre (obsolète)
Ce qui est intéressant c'est la suite
00 08 00 00 = correspond à l'adresse hexa 0x00000800 soit 2048 en décimal, c'est l'adresse de début dans le mode LBA
00 20 03 00 = correspond à 0x00032000, soit 204800, c'est la taille en secteurs de la partition (soit 102400 kio)
La partition suivante ne doit pas commencer avant 2048+204800=206848, soit 0x00032800
Il n'y a pas de chevauchement de partition entre sda1 et sda2 car sda2 commence immédiatement après sda1. Le message
La partition 1 ne se termine pas sur une frontière de cylindre
vient du fait que la géométrie de 63 secteurs par piste et 255 tête fait qu'un cylindre fait 63x255=16065 secteurs et que 206847 n'est pas un multiple de 16065 -1.
sda3 par contre commence à un multiple de 16065, de même que sda4
Les partitions logiques sda5, sda6 et sda7 commencent 63 secteurs après un début de cylindre, ce qui est classique.
Tout semble normal sauf:
/dev/sda4 90317430 976784129 443233350 f W95 Etendue (LBA)
et
255 têtes, 63 secteurs/piste, 60801 cylindres, total 976773168 secteurs
La partition étendue est plus grande que la taille du disque. par contre la dernière partition logique convient.
Il faut donc indiquer que la fin de la partition étendu est telle que:
- elle permet de contenir sda7 (soit fin ≥976768057)
- elle est avant la fin du disque (soit fin <976773168)
De préférence correspondant à une fin de cylindre.
Le multiple de 16065 correspondant à ce critère est 976768065 (60801*16065).
il faut donc indiquer une taille de 976768065-90317430=886450635secteurs, soit en hexa 0x34D629CB, soient les octets cb 29 d6 34.
La démarche peut être la suivante:
Mode LiveCD
Sauvegarde du mbr
sudo dd if=/dev/sda of=~/mbr_sauv.bs bs=512 count=1
sauvegarde la mbr dans un fichier mbr_sauv.bs de la session courante (ici /home/ubuntu)
Sauvegarder ce fichier sur support externe (clé usb) et retirer la clé
Installer (toujours en mode LiveCD) ghex (dépôt universe) - c'est possible, même en mode LiveCD (mais disparait à l'extinction du PC)
Modifier une copie du fichier mbr_sauv.bs et changer les derniers octets ainsi
000001f0 ff ff 0f fe ff ff 76 22 62 05 cb 29 d6 34 55 aa
Enregistrer le fichier mbr_modif.bs
Remplacer le mbr par celui modifié (poster son contenu pour vérification)
sudo dd if=~/mbr_modif.bs of=/dev/sda bs=512 count=1
Cette dernière commande est très dangereuse et il faut être sur de pouvoir restaurer le mbr d'origine au cas où.
Dernière modification par Nasman (Le 01/08/2011, à 17:35)
PC fixe sous Bionic 64 bits et portable avec Focal 64 bits
Hors ligne
#3 Le 02/08/2011, à 09:32
- svergeylen
Re : (Résolu) Gparted ne voit aucune partition / Modification MBR à la main
Bonjour,
je suis vraiment impressionné par votre maîtrise du sujet et la clarté de vos explications.
Voici le MBR modifié pour vérification (avant dernière ligne, le curseur est sur l'adresse 1F0 si je ne me suis pas trompé)
ps : Etait-il possible de trouver ces informations et cette procédure dans la documentation ? Je ne l'ai pas trouvée. Il y a bien la page qui explique comment sauver le mbr http://doc.ubuntu-fr.org/tutoriel/comme … der_le_mbr, mais pas comment le modifier ni sa signification. MERCI en tout cas pour votre aide précieuse, qui mérite certainement sa page de documentation ;-)
Stéphane
Hors ligne
#4 Le 02/08/2011, à 09:44
- Nasman
Re : (Résolu) Gparted ne voit aucune partition / Modification MBR à la main
Ça m'a l'air tout bon. Si tu as bien une copie du mbr non modifié au chaud, tu peux lancer la manip de remplacement avec :
sudo dd if=~/mbr_modif.bs of=/dev/sda bs=512 count=1
Remarque: Je trouve que ce serait bien si ghex permettait d'afficher 16 octets par ligne, cela serait plus facile pour repérer les adresses. En élargissant la fenêtre on n'arrive pas à avoir un multiple de 16 octets et en la rétrécissant il en reste plus de 16 d'affichés. Tu t'es cependant débrouillé comme un chef.
A+
Edit : J'ai fait une doc sur le mbr mais comme elle est en mode brouillon, je ne sais pas si elle est accessible par les utilisateurs courants.
Cette technique de modification du mbr est très risquée et la moindre erreur rendra l'accès aux partitions impossible - ce peut être rétabli avec testdisk mais il faut aussi maitriser cet outil. Il est essentiel de comprendre exactement ce qui est fait ici et de le faire tête reposée, au calme. La vérification des modifications est essentielle car il faut comprendre la syntaxe de l'instruction dd et maitriser ghex.
Dernière modification par Nasman (Le 02/08/2011, à 09:54)
PC fixe sous Bionic 64 bits et portable avec Focal 64 bits
Hors ligne
#5 Le 02/08/2011, à 09:46
- svergeylen
Re : (Résolu) Gparted ne voit aucune partition / Modification MBR à la main
Effectivement, j'ai connu ce problème de largeur de ligne pour trouver l'adresse 0F1... !
Bon, je lance la manip'. A tout de suite ;-)
Stéphane
Hors ligne
#6 Le 02/08/2011, à 09:53
- svergeylen
Re : (Résolu) Gparted ne voit aucune partition / Modification MBR à la main
Cela a fonctionné sans aucun problème !
Gparted retrouve toutes mes partitions et j'ai accès à tous mes fichiers comme avant.
Un tout grand merci pour votre aide, de très haute qualité !
Stéphane
Je vais maintenant voir si Windows démarre de son côté.
Stéphane
Hors ligne