Dans la table des partitions MBR des distributions, comme par exemple ubuntu-16.04-desktop-AMD64.iso, pourquoi une partition GPT semble-t-elle chevaucher la partition de démarrage principale? Cela semble générer des erreurs si j'essaie, de quelque manière que ce soit, de modifier la table de partition.
Je souhaite modifier le MBR pour ajouter de la persistance USB (comme décrit ailleurs) et je dois ajouter une partition ou agrandir la partition de démarrage.
Je crois que cela fonctionnait auparavant, mais la partition GPT # 2 qui se chevauchent dans cette distribution et dans d'autres distributions similaires semble confondre mal fdisk, sfdisk, parted, gparted et partprobe.
Ma machine est un MBR et non un bios GPT.
Qu'est-ce que je rate?
Voici la table de partitions MBR de la distribution (directement à partir du fichier ISO):
cat ubuntu-16.04-desktop-AMD64.iso | xxd | head -32 | tail -5
donne:
00001b0: 28db 2b00 0000 0000 708e 0e0e 0000 8000 (.+.....p.......
00001c0: 0100 0058 e0fa 0000 0000 6048 2c00 00fe ...X......`H,...
00001d0: ffff effe ffff 4411 2c00 8012 0000 0000 ......D.,.......
00001e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00001f0: 0000 0000 0000 0000 0000 0000 0000 55aa ..............U.
(Pour décoder cela, voyez https://en.wikipedia.org/wiki/Master_boot_record .)
Le tableau commence à l'adresse 01be, où vous voyez "80", pour la partition de démarrage principale n ° 1.
Remarquez ensuite le "ef" à l'adresse 01d2 qui indique que la partition principale n ° 2 est de type = GPT.
Voici une ventilation de la table par partition (little endian):
partition#1 (normal MBR):
80 = 'boot' partition flag
00 01 00 = starting HSC (head, sector, cylindar)
00 = partition type ("Empty partition entry")
58 e0 fa = last HSC (head, sector, cylindar)
0000 0000 = LBA (logical block address) of first absolute sector in the
6048 2c00 = number of sectors in partition
partition #2 (GPT):
00 = non-boot partition
fe ff ff = starting HSC (head, sector, cylindar)
ef = partition type ("EFI system partition")
fe ff ff = last HSC
4411 2c00 = LBA (logical block adr) of first abs sector in part.
8012 0000 = number of sectors in partition
Tente de modifier la table de partition:
fdisk
indique que ces partitions se chevauchent. Notez que le début de sdb2 [2927216] se situe à l'intérieur de sdb1 [0-2955679] à partir de
Sudo fdisk -l /dev/sdb
donne:
Disk /dev/sdb: 14.5 GiB, 15527313408 bytes, 30326784 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x40a863e7
Device Boot Start End Sectors Size Id Type
/dev/sdb1 * 0 2955679 2955680 1.4G 0 Empty
/dev/sdb2 2927216 2931951 4736 2.3M ef EFI (FAT-12/16/32)
D'après ce que j'ai lu, il est correct d'avoir une partition GPT, mais pas de chevauchement des partitions.
Lorsque j'essaie de créer une clé USB, le problème commence. Le bâton démarre Ubuntu live ok, mais je ne peux pas éditer la table de partition sans erreurs (c'est-à-dire sans initialisation ni montage), quel que soit l'éditeur de partition que j'essaie.
De plus, je ne peux même pas supprimer la table de partition et ramener la clé USB à la normale sans la longue procédure suivante:
dd if=/dev/zero of=/dev/sdb bs=[something like 512 or 2048; doesn't matter] count=[some large number like 100000^]
^ Les petits nombres ne semblent pas toujours résoudre ce problème. Je suppose que vous devez non seulement éliminer les blocs fs primaires, mais également les blocs secondaires.
puis utilisez fdisk
pour créer une nouvelle table de partition MS-DOS sur le stick.
Remarque, si je ne fais pas le dd ci-dessus pour effacer avant de créer une nouvelle table de partition, le message d'erreur suivant ou similaire s'affiche lorsque j'essaie de modifier la carte de partition (à partir de debian8 ou d'ubuntu-16):
Libparted Warning The driver descriptor says the physical block size
is 2048 bytes, but Linux says it is 512 bytes.
Également de Ubuntu-12, je reçois ce message le plus instructif :
gparted -l /dev/sdb: libparted : 2.3 Could not stat device -l -- No
such file or directory. /dev/sdb contains GPT signatures, indicating
that it has a GPT table. However, it does not have a valid fake msdos
partition table, as it should. Perhaps it was corrupted -- possibly
by a program that doesn't understand GPT partition tables. Or perhaps
you deleted the GPT table, and are now using an msdos partition table.
Is this a GPT partition table? Both the primary and backup GPT tables
are corrupt. Try making a fresh table, and using Parted's rescue
feature to recover partitions.
Alors, comment puis-je modifier le MBR de la distribution?
BTW, je ne demande pas comment résoudre le chevauchement, car c'est ainsi que la distribution est en cours, et d'après l'apparence, cela fait un certain temps (j'ai aussi regardé Ub-v16, 14 et 12), je cherche plutôt à comprendre comment l'éditer si possible.
Cela pourrait-il être causé par trop d'applications d'isohybrid (utilisées pour ajouter un MBR ms-dos à un CDROM 9660 iso afin qu'il puisse démarrer sur une clé USB)?
Existe-t-il un autre éditeur de table de partition, éventuellement plus récent, à utiliser?
Existe-t-il une distribution différente, peut-être plus ancienne, Ubuntu qui ne présente pas ce problème?
Solution de contournement
Vous pouvez ajuster la taille des partitions de votre clé USB si, au lieu d'utiliser un outil USB maker pour créer le clé, vous construisez votre clé USB à partir de rien en utilisant uniquement les commandes du terminal. Voici des instructions détaillées qui fonctionnent si votre système utilise le BIOS:
Conseils d'utilisation pour la sauvegarde à l'aide d'une clé USB: Je conserve deux clés USB identiques pour le système de sauvegarde que je m le système principal à double démarrage W10 de Debian. Je veux que mon système ne fonctionne pas lorsque je fais la sauvegarde. Je veux aussi deux clés identiques, car parfois une clé USB s'use. Cela me permet d’en faire facilement un nouveau, simplement en copiant une copie du disque restant sur un nouveau bâton.
Ils m'ont sauvé plus d'une fois lorsque mon système a été si endommagé que je ne pouvais pas le réparer! Et les procédures de sauvegarde et de restauration incrémentielles que j'inclus sur ce lien sont assez rapides aussi. Vous devez cependant faire une sauvegarde complète de temps en temps, car il est possible que votre sauvegarde incrémentielle actuelle ne fonctionne pas quand vous le voulez car un défaut du système y a été écrit, le corrompant. J'essaie maintenant de faire une sauvegarde complète chaque semaine.
Les fichiers image .iso
d'Ubuntu utilisent un format Monster de Frankenstein conçu pour prendre en charge plusieurs méthodes et périphériques d'amorçage:
Pour travailler avec autant de formats et de méthodes de démarrage, les développeurs jouent à des jeux avec les structures de données. Ces images ne doivent vraiment pas être traitées comme des images de disque "normales", et en particulier vous devez absolument PAS essayez de modifier les images de quelque manière que ce soit, sauf si vous êtes un expert de haut niveau dans ces structures de données. FWIW, j’ai écrit l’outil de partitionnement GPT fdisk (gdisk
, cgdisk
, et sgdisk
) et I. vous dites que vous essayez!
Au lieu de cela, si vous devez modifier le support d'installation, effectuez l'une des opérations suivantes:
dd
- du contenu de l'image sur le disque; au lieu de cela, ils prennent les fichiers de l'image et les copient sur un disque partitionné de manière conventionnelle avec un système de fichiers pré-existant (ou parfois celui créé par l'outil). Le résultat est un disque plus normal qui peut être modifié avec des éditeurs de table de partition normaux et d'autres utilitaires.De ces deux approches, la première est probablement la meilleure pour ce que vous voulez. En fait, je suis à peu près sûr que certains outils de ce type offrent la possibilité de faire exactement ce que vous voulez. (Je ne me souviens toutefois pas quels outils offrent une telle fonctionnalité.) La seconde approche est plus susceptible d'être utile pour des tâches telles que l'ajout de packages à une image d'installation personnalisée.
Si vous pouviez déjà faire ce genre de chose auparavant, il y a des chances que cela change parce que les développeurs ont trouvé le besoin de créer un piratage plus monstrueux d'une structure de données afin de résoudre des problèmes liés à des systèmes particuliers. Par exemple, si les ordinateurs de la marque X ne peuvent pas analyser la table de partitions Monster de Frankenstein, les développeurs peuvent la modifier pour qu'elle fonctionne avec les ordinateurs de la marque X, même si cela signifie que la structure de données est encore plus étrange qu'auparavant. Ce ne sont que des spéculations de ma part, cependant, et je ne peux certainement pas parler des détails que vous avez décrits.