Page 1 sur 1

[HDD] Écraser les "bootsectors" existants

Publié : sam. 17 sept. 2016, 02:43
par PoowP
Bonjour,

Je voulais savoir si le fait de créer une nouvelle table de partition écrasait les "bootsectors" ou si il fallait utiliser la commande "dd if=/dev/zero of=/dev/sdX"

Merci d'avance

Re: [HDD] Écraser les "bootsectors" existants

Publié : sam. 17 sept. 2016, 07:41
par waitnsea
Bonjour,
Créer une nouvelle table de partitions écrase les 512 premiers octets d'un disque pour le partitionnement "classique ms-dos", 2048 octets au début, et autant à la fin, du disque pour le partitionnement GPT.
On n'a pas besoin de dd avant de refaire une table de partitions.

Re: [HDD] Écraser les "bootsectors" existants

Publié : sam. 17 sept. 2016, 16:03
par PoowP
Merci, c'est la même chose pour une table DOS etc ?

Parce-que j'ai lu
First we erase existing bootsectors (nuke existing partitions)

dd if=/dev/zero of=/dev/sda bs=512 count=100

we create a new GPT partition structure on /dev/sda

parted -a optimal /dev/sda mklabel gpt

Re: [HDD] Écraser les "bootsectors" existants

Publié : sam. 17 sept. 2016, 18:32
par waitnsea
PoowP a écrit :Merci, c'est la même chose pour une table DOS etc ?

Parce-que j'ai lu
First we erase existing bootsectors (nuke existing partitions)

dd if=/dev/zero of=/dev/sda bs=512 count=100

we create a new GPT partition structure on /dev/sda

parted -a optimal /dev/sda mklabel gpt
Je maintiens : tu n'as pas besoin de dd.
Je corrige ton tuto : pour partitionner en GPT une partition déjà correctement formatée en ms-dos, n'utilise pas parted ni fdisk, qui vont te faire réécrire toutes tes données !
Utilise gdisk (gpt fdisk) qui te transformera la partition ms-dos en GPT sans perte de données à une seule condition, que les 2048 derniers octets soient vides, quitte donc à diminuer puis réexpanser la dernière partition avec gparted pour vider cette fin de disque sans perte de données.
Tu essaies d'abord la transformation, si elle n'est pas possible en raison de données présentes à la fin, gdisk te le dira :

Code : Tout sélectionner

Warning! Secondary partition table overlaps the last partition by
33 blocks!
et tu feras alors cette manip seulement si nécessaire.
Le meilleur tuto ici , et le premier auquel il se refère, ici.

Re: [HDD] Écraser les "bootsectors" existants

Publié : sam. 17 sept. 2016, 18:58
par avi3000
Tu as également https://fr.wikipedia.org/wiki/GUID_Partition_Table et https://en.wikipedia.org/wiki/GUID_Partition_Table qui expliquent très bien ces histoires de mbr, bootsectors et autres lba.

Si le C ne te rebutes pas, les sources d'util-linux sont aussi d'un précieux secours, notamment util-linux-2.28/libblkid/src.

Re: [HDD] Écraser les "bootsectors" existants

Publié : dim. 18 sept. 2016, 15:21
par PoowP
Je corrige ton tuto : pour partitionner en GPT une partition déjà correctement formatée en ms-dos, n'utilise pas parted ni fdisk, qui vont te faire réécrire toutes tes données !
Tu veux dire que si par exemple je veux faire une table ms-dos, fdisk et parted ne vont pas correctement la formater ?
Pour faire une table en GPT j'utilise toujours gdisk, j'ai du mal à comprendre ce que tu veux dire par réécrire toutes les données
Utilise gdisk (gpt fdisk) qui te transformera la partition ms-dos en GPT sans perte de données à une seule condition, que les 2048 derniers octets soient vides, quitte donc à diminuer puis réexpanser la dernière partition avec gparted pour vider cette fin de disque sans perte de données.
Les 2048 dernier ou premiers ? Si je fais un fdisk -l (c'est une table dos mais gdisk -l ne fonctionne pas) je vois :

Code : Tout sélectionner

Périphérique     Début       Fin  Secteurs Taille Type
/dev/sda1         2048
C'est peut-être ça que tu dois vouloir dire ?

Comment on "aligne" ? J'ai lu qu'il fallait aligner aussi
Tu essaies d'abord la transformation, si elle n'est pas possible en raison de données présentes à la fin, gdisk te le dira :

Code : Tout sélectionner
Warning! Secondary partition table overlaps the last partition by
33 blocks!
et tu feras alors cette manip seulement si nécessaire.
Tu veux dire la manip avec dd ?

Re: [HDD] Écraser les "bootsectors" existants

Publié : dim. 18 sept. 2016, 17:28
par waitnsea
PoowP a écrit :Tu veux dire que si par exemple je veux faire une table ms-dos, fdisk et parted ne vont pas correctement la formater ?
Où as-tu vu que j'ai dit ça ? J'ai simplement dit que passer par l'étape écrasement par dd était inutile.
PoowP a écrit :Pour faire une table en GPT j'utilise toujours gdisk, j'ai du mal à comprendre ce que tu veux dire par réécrire toutes les données
Si tu veux passer en GPT un disque partitionné en ms-dos, plein de données, elles seront conservées.
Et c'est pour ça que je t'ai parlé de GPT alors que tu me parlais, toi, de parted... Relis-toi !

Pour le reste, revois les liens que l'on t'a donnés : GPT a besoin des 2048 premiers + 2048 derniers octets du disque.
La manip dont je parle est : si gdisk refuse de convertir en GPT une table de partitions ms-dos qui contient des données, de libérer la place en rétrécissant la partition en fin de disque avec parted ou son interface gui, puis faire la transformation avec gdisk, puis réexpanser la partition pour qu'elle reprenne sa taille maxi.
On peut faire la même manip si la place qui manque est au début aussi, mais le déplacement de données risque d'être bien plus long qu'écrire les données sur un support de sauvegarde et les recopier après coup.
La manipulation avec dd n'a pas sa place dans un partitionnement normal qu'il soit ms-dos ou GPT
On peut le concevoir sur tout un disque qu'on doit crypter, mais écrire des données aléatoires serait mieux, c'est un autre sujet.
Aligner est maintenant automatique avec les outils récents. On peut vérifier si l'alignement est correct avec les commandes suivante (un 0 signifie que c'est aligné correctement) :

Code : Tout sélectionner

# blockdev --getalignoff /dev/<partition>
ou

Code : Tout sélectionner

# fdisk -lu /dev/<partition>
Vérifier que le début de chaque partition ("XXXX") est un multiple de 2048 (secteurs).

Re: [HDD] Écraser les "bootsectors" existants

Publié : dim. 18 sept. 2016, 17:41
par benjarobin
Pourquoi embrouiller tout le monde en parlant de table GPT alors que ce n'est pas le sujet (enfin je ne l'ai pas compris, donc bon...) ? D'ailleurs quel est la question de ce sujet, car je n'ai pas comprit ? Quel est le problème / la question ?

Pour créer une table de partition il est totalement inutile d'effacer quoi que ce soit, sauf si on veut passer d'une table GPT à une table msdos. gdisk fournit une option pour effacer proprement une table GPT. Mais cela ne coûte rien/cela ne fait pas de mal d’effacer les premiers secteurs du disque avant une réinstallation (personnellement je ne le fais jamais).

Bref, tu peux sans aucun souci (si la version de ces outils n'est pas trop vielle) utiliser fdisk, gdisk, parted, gparted pour créer une table de partition msdos ou GPT. Après chacun possède ses préférences, pour du gpt j'utilise gdisk, et pour du msdos fdisk, question d'habitude (aucune autre raison valable)...

Et pour l'alignement tous les outils alignent maintenant correctement par défaut au Mo, donc si tu laisses tout par défaut, tu n'auras pas de souci

Re: [HDD] Écraser les "bootsectors" existants

Publié : dim. 18 sept. 2016, 17:45
par waitnsea
Bonjour benjarobin,
PoowP a écrit : Parce-que j'ai lu
First we erase existing bootsectors (nuke existing partitions)

dd if=/dev/zero of=/dev/sda bs=512 count=100

we create a new GPT partition structure on /dev/sda

parted -a optimal /dev/sda mklabel gpt
On ne comprend pas bien le but du post effectivement.
Là il parle de GPT

Re: [HDD] Écraser les "bootsectors" existants

Publié : dim. 18 sept. 2016, 22:05
par PoowP
benjarobin a écrit :Pour créer une table de partition il est totalement inutile d'effacer quoi que ce soit, sauf si on veut passer d'une table GPT à une table msdos. gdisk fournit une option pour effacer proprement une table GPT. Mais cela ne coûte rien/cela ne fait pas de mal d’effacer les premiers secteurs du disque avant une réinstallation (personnellement je ne le fais jamais).

Bref, tu peux sans aucun souci (si la version de ces outils n'est pas trop vielle) utiliser fdisk, gdisk, parted, gparted pour créer une table de partition msdos ou GPT. Après chacun possède ses préférences, pour du gpt j'utilise gdisk, et pour du msdos fdisk, question d'habitude (aucune autre raison valable)...
C'était justement ma question, je voulais savoir si il fallait faire un dd avec /dev/zero pour passer d'une table dos à une table gpt, et même d'une table gpt à une table dos, ou si il fallait faire quelque chose de spécial

Une option spéciale ? Je vais voir si je la trouve dans gdisk

Pour aligner au Mo, par exemple dans fdisk je n'ai qu'à faire +1G, +5G, +50M, +100M ? C'est comme ça ?

Re: [HDD] Écraser les "bootsectors" existants

Publié : dim. 18 sept. 2016, 22:23
par benjarobin
Pour les questions d'alignement, dans fdisk comme dans gdisk, oui c'est la meilleur façon de faire. Comme cela aucun risque de se tromper. Et pour le secteur de début, toujours accepter ce qui est proposé.

Pour supprimer proprement la table de partition GPT, sans gdisk, il faut aller dans le menu expert, option x, puis sélection l'option z.
Bien lancer manuellement partprobe /dev/sdX après une telle opération. Plus généralement avec un dd touchant à une table de partition, il faut lancer cette commande. Où si tu as le moindre doute, le plus simple est de reboot.

Re: [HDD] Écraser les "bootsectors" existants

Publié : dim. 18 sept. 2016, 22:28
par Xorg
Pourquoi tu veux t'amuser à passer d'une table à l'autre ? Laisse les utilitaires faire leur job, il n'y a pas besoin de dd.

Je ne comprends pas non plus ton problème, ni pourquoi tu cherches à tripoter ce que tu appelles "bootsectors". Il n'y a pas de boot sectors avec une table GPT, et même s'il existe un MBR en GPT, il est dit de protective, afin d'éviter à de vieux utilitaires de remplacer la table GPT par une table MS-DOS à tord.

Re: [HDD] Écraser les "bootsectors" existants

Publié : dim. 18 sept. 2016, 22:30
par benjarobin
@Xorg Techniquement tu est obligé de le faire manuellement dans le cas ou tu formates ton disque mais que tu veux mettre cette fois si une table msdos au lieu d'une table GPT. On ne parle pas de conversion d'une table de partition, bien que techniquement cela reviendrais au même...
Je suis d'accord, ce n'est pas courant, mais cela m'est déjà arrivé de devoir le faire. Je voulais réutiliser un disque dur pour une tout autre chose, mais cette fois si avec une table msdos. Si tu ne fais pas il reste des bouts de GPT un peu partout et le système est totalement confus...

Re: [HDD] Écraser les "bootsectors" existants

Publié : dim. 18 sept. 2016, 22:41
par Xorg
Ah, ouais, je vois le truc. Il me semblait que j'avais déjà fait ma manipulation de GPT à MS-DOS avec GParted et je n'ai pas le souvenir d'avoir eu ce genre de soucis. Mais ça remonte à loin. Autant pour moi.

Re: [HDD] Écraser les "bootsectors" existants

Publié : dim. 18 sept. 2016, 23:25
par PoowP
Pour les questions d'alignement, dans fdisk comme dans gdisk, oui c'est la meilleur façon de faire. Comme cela aucun risque de se tromper. Et pour le secteur de début, toujours accepter ce qui est proposé.

Pour supprimer proprement la table de partition GPT, sans gdisk, il faut aller dans le menu expert, option x, puis sélection l'option z.
Bien lancer manuellement partprobe /dev/sdX après une telle opération. Plus généralement avec un dd touchant à une table de partition, il faut lancer cette commande. Où si tu as le moindre doute, le plus simple est de reboot.
Il faut faire l'option x et z dans quel cas, seulement en cas de retour sur une table dos à partir d'une GPT ? Ou à chaque fois que je veux faire une nouvelle table gpt ? Et pour passer de dos à GPT ?

partprobe /dev/sdX après cette manipulation d'accord, qu'est-ce que tu entends en disant : Plus généralement avec un dd touchant à une table de partition, il faut lancer cette commande ?

À chaque formatage si je repars à 0 tout clean, je dois utiliser l'option x + z ?

Re: [HDD] Écraser les "bootsectors" existants

Publié : dim. 18 sept. 2016, 23:54
par benjarobin
@Xorg, il est fort probable que GParted soit assez intelligent pour le faire automatiquement... Aucune idée...

J'espérais que ce soit clair... Si tu veux supprimer une table de partition GPT quelque soit la raison, alors tu dois utiliser gdisk avec l'option z. Tu peux vouloir la supprimer pour plusieurs raisons, mais celle qui est la plus probable est le passage de GPT à msdos. Sinon en pratique personne ne le fait car personne ou presque ne fait une telle opération (GPT vers msdos)...

Si tu écrit une nouvelle table GPT, elle écrasera l'ancienne, donc c'est parfaitement inutile de l’effacer au préalable... Pourquoi vouloir toujours faire aussi compliqué ?

Si tu fais une opération manuelle touchant la table de partition (par exemple un dd), il faut avertir le kernel que la table de partition a changé, partprobe est fait pour cela. Cette opération est automatiquement réalisée lors de la création d'une table de partition avec les outils standards (fdisk, gdisk, parted, ...)

En résumé tu peux oublier tout ce que l'on a dit depuis le début, cela ne concerne qu'une partie infiniment petite de personne. Juste utilise normalement fdisk, gdisk, ... Il n'y a rien à faire dans 99.99% des cas !

Re: [HDD] Écraser les "bootsectors" existants

Publié : lun. 19 sept. 2016, 12:01
par avi3000
waitnsea a écrit :Créer une nouvelle table de partitions écrase les 512 premiers octets d'un disque pour le partitionnement "classique ms-dos", 2048 octets au début, et autant à la fin, du disque pour le partitionnement GPT.
Cette affirmation aussi péremptoire qu'erronée figure à plusieurs reprises dans ce post.
Un table de partitions GPT a besoin de 34 secteurs de 512 octets (33 + protective mbr), soient 17408 octets au début du disque et de 33 secteurs de 512 octets, soient 16896 octets à la fin.

Re: [HDD] Écraser les "bootsectors" existants

Publié : lun. 19 sept. 2016, 17:25
par benjarobin
En effet j'avais vu, mais si on relevait toutes les erreurs... C'est pour cela qu'il faut mieux passer par gdisk pour l'effacement qui le fait correctement sans erreur...