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

dd et géométries des disques, disques entiers vs partitions

6 réponses
Avatar
Jefke Fried
Salut, je reposte ici une question que je viens de poser sur comp.unix.misc.

Au départ je voudrais cloner une partition NTFS avec dd.

La réponse qu'on m'a faite, c'est que si je donne comme arguments à dd les
disques entiers:
dd if=/dev/hda of=/dev/hdb
j'aurai des problèmes si la géométrie des disques est différente, tandis que
si je donne des partitions ou des slices, je n'aurai pas de problème de
géométrie:
dd if=/dev/hda1 of=/dev/hdb1

Moi je croyais que de toute façon le noyau (et le système de fichiers)
faisait ses requètes aux disques durs en notation LBA, et laissait le
disque dur faire la traduction LBA -> CHS, et que donc la géométrie serait
transparente au noyau, et donc aussi à un programme tel que dd.

Même si ce n'était pas le cas, pourquoi le comportement est-il différent,
qu'on manipule un disque entier ou une partition?

Google m'a donné plein de gens qui répètent la même chose mais je n'ai pas
trouvé d'explication technique.

6 réponses

Avatar
Pascal Bourguignon
Jefke Fried writes:

Salut, je reposte ici une question que je viens de poser sur comp.unix.misc.

Au départ je voudrais cloner une partition NTFS avec dd.

La réponse qu'on m'a faite, c'est que si je donne comme arguments à dd les
disques entiers:
dd if=/dev/hda of=/dev/hdb
j'aurai des problèmes si la géométrie des disques est différente, tandis que
si je donne des partitions ou des slices, je n'aurai pas de problème de
géométrie:
dd if=/dev/hda1 of=/dev/hdb1

Moi je croyais que de toute façon le noyau (et le système de fichiers)
faisait ses requètes aux disques durs en notation LBA, et laissait le
disque dur faire la traduction LBA -> CHS, et que donc la géométrie serait
transparente au noyau, et donc aussi à un programme tel que dd.

Même si ce n'était pas le cas, pourquoi le comportement est-il différent,
qu'on manipule un disque entier ou une partition?

Google m'a donné plein de gens qui répètent la même chose mais je n'ai pas
trouvé d'explication technique.


Le problème se situe au niveau de la table de partition. Le format des
tables de partition MS-DOS (on en est là!) dépend de la géométrie.



Une solution pourrait être d'utiliser un autre format de table de
partition. Linux les supporte presque tous...

--
__Pascal Bourguignon__ http://www.informatimago.com/

Voting Democrat or Republican is like choosing a cabin in the Titanic.

Avatar
Jefke Fried
Pascal Bourguignon wrote:

Jefke Fried writes:

Salut, je reposte ici une question que je viens de poser sur
comp.unix.misc.

Au départ je voudrais cloner une partition NTFS avec dd.

La réponse qu'on m'a faite, c'est que si je donne comme arguments à dd
les disques entiers:
dd if=/dev/hda of=/dev/hdb
j'aurai des problèmes si la géométrie des disques est différente, tandis
que si je donne des partitions ou des slices, je n'aurai pas de problème
de géométrie:
dd if=/dev/hda1 of=/dev/hdb1

Moi je croyais que de toute façon le noyau (et le système de fichiers)
faisait ses requètes aux disques durs en notation LBA, et laissait le
disque dur faire la traduction LBA -> CHS, et que donc la géométrie
serait transparente au noyau, et donc aussi à un programme tel que dd.

Même si ce n'était pas le cas, pourquoi le comportement est-il différent,
qu'on manipule un disque entier ou une partition?

Google m'a donné plein de gens qui répètent la même chose mais je n'ai
pas trouvé d'explication technique.


Le problème se situe au niveau de la table de partition. Le format des
tables de partition MS-DOS (on en est là!) dépend de la géométrie.




Mais dans la table de partitions à la fin du MBR on a si j'ai bien compris
les valeurs CHS et LBA, de manière redondante, pour indiquer le début et la
fin des 4 partitions; et les valeurs CHS ne sont plus utilisées que par
DOS, des vieux BIOS ou des vieux bootloaders.

Si c'est juste un problème de table des partitions, ce n'est plus un
problème.


Merci Pascal!



Une solution pourrait être d'utiliser un autre format de table de
partition. Linux les supporte presque tous...



Linux supporte pas mal de types de systèmes de fichiers, mais pour ce qui
est de format de table de partition je n'ai vu que le vieux format DOS
jusqu'à présent.


Avatar
manu
La réponse qu'on m'a faite, c'est que si je donne comme arguments à dd les
disques entiers:
dd if=/dev/hda of=/dev/hdb
j'aurai des problèmes si la géométrie des disques est différente, tandis que
si je donne des partitions ou des slices, je n'aurai pas de problème de
géométrie:
dd if=/dev/hda1 of=/dev/hdb1


Mon experience (limitée) de la chose c'est que quand tu copie une
partition NTFS à coup de dd, elle sera toujours lisible, par contre si
la géometrie du disque destination diffère, elle ne sera plus bootable.

La cerise sur le gateau est que windows NT et 2000 (je ne sais pas pour
XP, mais y'a pas de raison que ca ait changé) sont incapables de
regénerer l'amorce de la partition en dehors du cas où on la reformatte.

En reformattant sur le nouveau disque, on peut comparer les amorces et
faire une greffe. Pour passer une partition de 1Go d'un disque de 2Go
vers un disque de 20Go, j'ai eu 13 octets de différence. En cherchant
sur Internet on retrouve le format du boot block, et on découvre qu'il
s'agit de l'offset du catalogue (on garde l'ancien), du numéro de série
du disque (on garde l'ancien) et du nombre de tête du disque (un octet.
En mettant le nouveau ca boote à nouveau)

--
Emmanuel Dreyfus
Publicité subliminale: achetez ce livre!
http://www.eyrolles.com/Informatique/Livre/9782212114638/livre-bsd.php


Avatar
talon
Jefke Fried wrote:
Salut, je reposte ici une question que je viens de poser sur comp.unix.misc.

Au départ je voudrais cloner une partition NTFS avec dd.

La réponse qu'on m'a faite, c'est que si je donne comme arguments à dd les
disques entiers:
dd if=/dev/hda of=/dev/hdb
j'aurai des problèmes si la géométrie des disques est différente, tandis que
si je donne des partitions ou des slices, je n'aurai pas de problème de
géométrie:
dd if=/dev/hda1 of=/dev/hdb1

Moi je croyais que de toute façon le noyau (et le système de fichiers)
faisait ses requètes aux disques durs en notation LBA, et laissait le
disque dur faire la traduction LBA -> CHS, et que donc la géométrie serait
transparente au noyau, et donc aussi à un programme tel que dd.

Même si ce n'était pas le cas, pourquoi le comportement est-il différent,
qu'on manipule un disque entier ou une partition?


Si tu manipules le disque entier, tu vas recopier en particulier le MBR
et donc la table de partitions, du premier disque sur le second. Même
si tu raisonnes en MBA le nombre de blocs va être faux, puisque
supposémment le deuxième disque est plus gros que le premier. En outre
le BIOS a des chances de ne pas arriver à booter ton système s'il
utilise le c/h/s pour y accéder.


Google m'a donné plein de gens qui répètent la même chose mais je n'ai pas
trouvé d'explication technique.



--

Michel TALON

Avatar
Jefke Fried
Emmanuel Dreyfus wrote:

La réponse qu'on m'a faite, c'est que si je donne comme arguments à dd
les disques entiers:
dd if=/dev/hda of=/dev/hdb
j'aurai des problèmes si la géométrie des disques est différente, tandis
que si je donne des partitions ou des slices, je n'aurai pas de problème
de géométrie:
dd if=/dev/hda1 of=/dev/hdb1


Mon experience (limitée) de la chose c'est que quand tu copie une
partition NTFS à coup de dd, elle sera toujours lisible, par contre si
la géometrie du disque destination diffère, elle ne sera plus bootable.

La cerise sur le gateau est que windows NT et 2000 (je ne sais pas pour
XP, mais y'a pas de raison que ca ait changé) sont incapables de
regénerer l'amorce de la partition en dehors du cas où on la reformatte.

En reformattant sur le nouveau disque, on peut comparer les amorces et
faire une greffe. Pour passer une partition de 1Go d'un disque de 2Go
vers un disque de 20Go, j'ai eu 13 octets de différence. En cherchant
sur Internet on retrouve le format du boot block, et on découvre qu'il
s'agit de l'offset du catalogue (on garde l'ancien), du numéro de série
du disque (on garde l'ancien) et du nombre de tête du disque (un octet.
En mettant le nouveau ca boote à nouveau)


Merci pour ces conseils, et merci à tous.


Avatar
ericb
Bonjour,



Une solution pourrait être d'utiliser un autre format de table de
partition. Linux les supporte presque tous...




Linux supporte pas mal de types de systèmes de fichiers, mais pour ce qui
est de format de table de partition je n'ai vu que le vieux format DOS
jusqu'à présent.



Je crois qu'il y en a d'autres...Ci-dessous un extrait d'un .config de
noyau 2.6.x :


#
# Partition Types
#
CONFIG_PARTITION_ADVANCED=y
# CONFIG_ACORN_PARTITION is not set
# CONFIG_OSF_PARTITION is not set
# CONFIG_AMIGA_PARTITION is not set
# CONFIG_ATARI_PARTITION is not set
CONFIG_MAC_PARTITION=y
CONFIG_MSDOS_PARTITION=y
CONFIG_BSD_DISKLABEL=y
# CONFIG_MINIX_SUBPARTITION is not set
# CONFIG_SOLARIS_X86_PARTITION is not set
# CONFIG_UNIXWARE_DISKLABEL is not set
# CONFIG_LDM_PARTITION is not set
# CONFIG_NEC98_PARTITION is not set
# CONFIG_SGI_PARTITION is not set
# CONFIG_ULTRIX_PARTITION is not set
# CONFIG_SUN_PARTITION is not set
# CONFIG_EFI_PARTITION is not set


D'ailleurs, je me sers d'un Linux x86 pour lire des partitions HFS/HFS+
et récupérer des données sur des vieux disques SCSI qui n'ont plus cours
sur les machines récentes.


Cordialement



--
eric bachard
French OpenOffice.org Community contributor (build of french releases
for Linux PPC and Mac OS X / X11)
See : <http://fr.openoffice.org>