Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

fdisk vs cfdisk : geométrie de disque

17 réponses
Avatar
Dominique MICOLLET
Bonjour

La commande cfdisk me permet par le biais de sa commande g, de modifier la
géométrie CHS d'une fichier utilisé comme image d'un périphérique monté avec
l'option loop.

Je voudrais faire la même chose avec fdisk : je parviens bien à modifier CHS
avec les commandes chs du menu expert (x) mais pas à les enregistrer sur
l'image.

C'est un bug ou je m'y prends mal ?

PS : inutile de me répondre que CHS est obsolète.

Cordialement

Dominique

10 réponses

1 2
Avatar
Antoine Leca
Le 15/10/2015 14:03, Dominique MICOLLET écrivit :
La commande cfdisk me permet par le biais de sa commande g, de modifier la
géométrie CHS d'une fichier utilisé comme image d'un périphérique monté avec
l'option loop.

Je voudrais faire la même chose avec fdisk : je parviens bien à modifier CHS
avec les commandes chs du menu expert (x) mais pas à les enregistrer sur
l'image.



Pour autant que je saches, les paramètres de géométrie 3D en MBR ne sont
pas enregistrés, mais déduits par le programme (que ce soit le FDISK de
IBM, fdisk, cfdisk, le noyau ou autres; en fait pour un disque physique
les programmes peuvent interroger le contrôleur ou le disque ATA, mais
cela n'a pas de sens pour une image).

Je crois que la règle habituelle est d'utiliser les valeurs des
partitions existantes, en partant des valeurs des secteurs finaux et un
peu de contrôle de vraisemblance; et les commandes g ou x/h/s ou
équivalentes permettent de passer outre les devinettes du programme,
surtout quand il se trompe; les options -H et -S de fdisk(8) sont une
autre manière d'obtenir le même effet.

C'est un bug ou je m'y prends mal ?



Quel est l'objectif ?

Antoine
Avatar
Dominique MICOLLET
Bonjour,


Antoine Leca wrote:
Pour autant que je saches, les paramètres de géométrie 3D en MBR ne sont
pas enregistrés, mais déduits par le programme (que ce soit le FDISK de
IBM, fdisk, cfdisk, le noyau ou autres; en fait pour un disque physique
les programmes peuvent interroger le contrôleur ou le disque ATA, mais
cela n'a pas de sens pour une image).



Je n'en suis pas vraiment sûr parce que si je duplique une petite clef USB
(130 Mo) dans une image par dd, fdisk et cie me donnent une géométrie
pertinente (CHS24/4/62), alors que si je créée à partir de /dev/zero une
image de la même taille, fdisk et cie me répondent n'importe quoi
(15/255/63).

Si je force ensuite dans cette image la "bonne géométrie" avec cfdisk (ou
sfdisk que j'ai découvert depuis), fdisk me restitue alors la "bonne
géométrie" : j'ai donc l'impression que l'information est stockée dans le
fichier image (encore qu'il faut que je vérifie si c'est toujours le cas
après un redémarrage machine : je me rends compte en rédigeant cette réponse
que le noyau pourrait avoir tamponné l'information).



Quel est l'objectif ?



L'objectif est particulier. Dans le cadre d'un enseignement de systèmes
embarqués^W enfouis :-) sous linux, je fais utiliser lilo à mes étudiants
(plus simple, et limitant les risques d'interaction avec le grub de la
machine hôte). Sur une clef USB physique, lilo fonctionne sans problème.
Dans un deuxième temps, je leur fais faire la même manipulation en utilisant
une image de la clef soit obtenue par duplication, soit créée emplie de
zéro. Dans ce cas, lilo a besoin d'une géométrie dans son fichier de
configuration et, même si j'ai l'impression que cette géométrie peut-être
totalement factice, je voudrais employer des valeurs pertinentes.

Plus largement, il ne faut pas oublier qu'on peut utiliser unix pour créer
des supports exploitables par d'autres OS (oui, je sais, c'est une honteuse
compromission :-)).

Cordialement

Dominique.
Avatar
Lucas Levrel
Le 19 octobre 2015, Dominique MICOLLET a écrit :

Si je force ensuite dans cette image la "bonne géométrie" avec cfdisk (ou
sfdisk que j'ai découvert depuis), fdisk me restitue alors la "bonne
géométrie" : j'ai donc l'impression que l'information est stockée dans le
fichier image



Tu pourrais en avoir le cœur net par un diff sur le premier secteur, non ?

--
LL
Ἕν οἶδα ὅτι οὐδὲν οἶδα (Σωκράτης)
Avatar
Dominique MICOLLET
Bonjour,


Lucas Levrel wrote:

Tu pourrais en avoir le cœur net par un diff sur le premier secteur, non ?




Effectivement, sauf que je ne sais pas faire de diff binaire : y a un outil
ad hoc pour ça ?
Évidemment, je pourrais écrire un programme C pour cela, mais je suis
informaticien, donc fainéant :-)

Cordialement

Dominique
Avatar
Pascal Hambourg
Dominique MICOLLET a écrit :

Effectivement, sauf que je ne sais pas faire de diff binaire : y a un outil
ad hoc pour ça ?



cmp
Avatar
Lucas Levrel
Le 21 octobre 2015, Dominique MICOLLET a écrit :

Tu pourrais en avoir le cœur net par un diff sur le premier secteur, non ?



Effectivement, sauf que je ne sais pas faire de diff binaire : y a un outil
ad hoc pour ça ?



diff. Ce ne sont pas les différences qui t'intéressent ici, c'est juste de
savoir s'il y en a !

--
LL
Ἕν οἶδα ὅτι οὐδὲν οἶδα (Σωκράτης)
Avatar
Dominique MICOLLET
Dominique MICOLLET wrote:

La commande cfdisk me permet par le biais de sa commande g, de modifier la
géométrie CHS d'une fichier utilisé comme image d'un périphérique monté
avec l'option loop.

Je voudrais faire la même chose avec fdisk : je parviens bien à modifier
CHS avec les commandes chs du menu expert (x) mais pas à les enregistrer
sur l'image.

C'est un bug ou je m'y prends mal ?



La suggestion d'aller voir dans le premier secteur m'a permis de comprendre
mon erreur : les informations de géométrie sont bien enregistrées dans le
MBR, à condition qu'au moins une partition soit déclarée.

Je ne comprends pas pourquoi.

Incidemment fdisk, cfdisk et sfdisk ont un comportement indentique sur ce
point. J'ai donc du faire des manipulations un peu différentes dans mes
précédents essais qui m'ont fait croire que fdisk se comportait différent.

Désolé pour le bruit.

Cordialement

Dominique
Avatar
Nicolas George
Dominique MICOLLET , dans le message
<5628f189$0$9233$, a écrit :
La suggestion d'aller voir dans le premier secteur m'a permis de comprendre
mon erreur : les informations de géométrie sont bien enregistrées dans le
MBR, à condition qu'au moins une partition soit déclarée.

Je ne comprends pas pourquoi.



https://en.wikipedia.org/wiki/Master_boot_record#Sector_layout
https://en.wikipedia.org/wiki/Master_boot_record#PTE

La géométrie n'est pas stockée. Ce qui est stocké, c'est la position des
partitions, en double format.
Avatar
Dominique MICOLLET
Bonjour,


Nicolas George wrote:

La géométrie n'est pas stockée. Ce qui est stocké, c'est la position des
partitions, en double format.



Voilà la réponse de ma Wheezy

Pour un fichier déclaré en CHS 16/8/8

$ /sbin/fdisk -l image_16_8_8.img

Disque image_16_8_8.img : 0 Mo, 524288 octets
8 têtes, 8 secteurs/piste, 16 cylindres, total 1024 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 : 0xbff8f7c7

Périphérique Amorce Début Fin Blocs Id Système
image_16_8_8.img1 1 1023 511+ 83 Linux
$ hexdump -n512 image_16_8_8.img
0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
00001b0 0000 0000 0000 0000 f7c7 bff8 0000 0000
00001c0 0002 0783 0f08 0001 0000 03ff 0000 0000
00001d0 0000 0000 0000 0000 0000 0000 0000 0000
*
00001f0 0000 0000 0000 0000 0000 0000 0000 aa55

Pour un fichier déclaré en CHS 32/16/2

$ /sbin/fdisk -l image_32_16_2.img

Disque image_32_16_2.img : 0 Mo, 524288 octets
2 têtes, 16 secteurs/piste, 32 cylindres, total 1024 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 : 0xbff8f7c7

Périphérique Amorce Début Fin Blocs Id Système
image_32_16_2.img1 1 1023 511+ 83 Linux
$ hexdump -n512 image_32_16_2.img
0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
00001b0 0000 0000 0000 0000 f7c7 bff8 0000 0000
00001c0 0002 0183 1f10 0001 0000 03ff 0000 0000
00001d0 0000 0000 0000 0000 0000 0000 0000 0000
*
00001f0 0000 0000 0000 0000 0000 0000 0000 aa55

Comment expliquez-vous que fdisk me renvoie la bonne géométrie ?

Cordialement

Dominique
Avatar
Nicolas George
Dominique MICOLLET , dans le message
<5629de26$0$3362$, a écrit :
Comment expliquez-vous que fdisk me renvoie la bonne géométrie ?



Je croyais l'avoir déjà expliqué dans le message précédent.
1 2