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 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é)

capture

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.

capture

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