This commit is contained in:
kyodev 2017-06-28 17:42:20 +02:00
parent ea43209886
commit 36b708823e
1 changed files with 142 additions and 20 deletions

View File

@ -5,12 +5,12 @@
**exemple** avec md5, à adapter:
```shell
md5sum -c MD5SUMS
firmware-stretch-DI-rc3-amd64-netinst.iso: OK
firmware-stretch-DI-rc5-amd64-netinst.iso: OK
```
ou avec shaX
```shell
shasum -c SHA256SUMS
firmware-stretch-DI-rc3-amd64-netinst.iso: OK
firmware-stretch-DI-rc5-amd64-netinst.iso: OK
```
## déterminer le périphérique de la clé
@ -45,32 +45,154 @@ dd if=/chemin/image.iso of=/dev/sdX bs=10M && sync
## partition supplémentaire
Après avoir copié `image.iso` sur une clé USB, pour utiliser l'espace libre
### traditionnellement
après avoir copié `image.iso` sur une clé USB, pour utiliser l'espace libre
restant, utilisez un outil de partitionnement tel que _gparted_ afin de créer
une nouvelle partition sur la clé et la **formater** en ext4
**remarque:** inutile de se casser la tête avec du FAT, windows n'est pas capable de lire
plusieurs partitions sur une clé. on n'abordera pas ici les exceptions tordues à cette
règle pour compenser des lacunes de ce truc.
règle pour compenser des lacunes de ce système merdique.
**BUG** cette possibilité, est actuellement indisponible, la cause est à déterminer
(live-build/iso hybrid ou stretch)
### impossibilité actuelle
à tester:
cette possibilité, est actuellement indisponible, la cause me semble provenir que les outils
communs, ne savent pas appréhender la construction des images iso hybrides
### amorce de réponse
exemple:
```shell
fdisk -l /dev/sdb
```
su
# attention si la clé est en sdb
parted /dev/sdb
(parted) print
Warning: The driver descriptor says the physical block size is 2048 bytes,
but Linux says it is 512 bytes.
Ignore/Cancel?
# `C` pour abandonner, ça marchera pas...
(parted) quit
```text
Disque /dev/sdb : 7,6 GiB, 8103395328 octets, 15826944 secteurs
Type d'étiquette de disque : dos
Périphérique Amorçage Début Fin Secteurs Taille Id Type
/dev/sdb1 * 64 2890719 2890656 1,4G 0 Vide
/dev/sdb2 5092 6499 1408 704K ef EFI (FAT-12/16/32)
```
question:
* est-ce que cela marche encore avec _Jessie_?
* est-ce que c'est réservé aux images iso-hybride?
* est-ce que c'est réservé aux images iso-hybride Debian?
```shell
gdisk -l /dev/sdb
```
```text
Using GPT and creating fresh protective MBR.
Disk /dev/sdb: 15826944 sectors, 7.5 GiB
Number Start (sector) End (sector) Size Code Name
1 64 2890663 1.4 GiB 0700 ISOHybrid
2 5092 6499 704.0 KiB 0700 ISOHybrid1
```
une image iso hybride doit pouvoir répondre à 2 contraintes:
1. fonctionner aussi bien sur un DVD ou sur une clé USB.
2. booter aussi bien sur des Pc UEFI que BIOS.
ces 2 contraintes induisent 4 scénarios, auxquels une seule image doit répondre,:
2. boot d'un Bios sur une clé Usb: nécessite une table de partition MBR avec une partition taguée active,
et où le premier secteur est chargé et exécuté.
4. boot d'un UEFI sur une clé Usb: nécessite une table de partition GPT, avec une partition EFI dans un
(FilesSystem) FS FAT, devant contenir lui aussi un fichier efi, dans `EFI/BOOT/`.
1. boot d'un Bios sur un DVD: nécessite un secteur de boot dans le FS ISO, qui sera ignoré sur une clé Usb.
3. boot d'un UEFI sur un DVD: nécessite un fichier efi, dans `EFI/BOOT/` dans le FS ISO, qui est chargé
et exécuté.
donc les images résultantes ont 2 problèmes à résoudre:
1. pour les scénarios 1 et 2, il y a 2 tables de partitions (MBR, GPT, ce qui violent le standard GPT, qui
requiert qu'une table MBR de protection soit présente. une seule partition englobe l'espace entier, afin
d'empêcher les outils seulement MBR, de considérer le disque comme vide.
2. pour les scénarios 1 et 3, le répertoire EFI est inclus dans le FS ISO dans la première partition, et le
même répertoire est mappé aussi dans le FS FAT, dans la deuxième partition. On peut voir que la première
partition commence à 64 pour se terminer à 2890719, tandis que la seconde
commence à 5092 pour se terminer à 6499. Donc la seconde partition est encapsulée dans la première, exposant
le même répertoire EFI qui est contenu dans la première partition. Concernant les standards, c'est clairement
invalide, mais les Bios ignore cela et bootent correctement avec cette méthode.
C'est la raison pour laquelle xyz-fdisk bute sur cette disposition. Il retient seulement la fin
de la dernière partition, soit 6499 dans notre exemple, et calcule le début de l'espace libre à cette limite.
```shell
sfdisk -l /dev/sdb
```
```text
Disque /dev/sdb : 7,6 GiB, 8103395328 octets, 15826944 secteurs
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : dos
Périphérique Amorçage Début Fin Secteurs Taille Id Type
/dev/sdb1 * 64 2890719 2890656 1,4G 0 Vide
/dev/sdb2 5092 6499 1408 704K ef EFI (FAT-12/16/32)
```
sfdisk devrait être capable de s'accommoder de cette disposition, en tant qu'outil capable
de travailler sur la plupart des dispositions de disque _étranges_:
```shell
umount /dev/sdb1
sfdisk -a /dev/sdb
```
```text
Périphérique Amorçage Début Fin Secteurs Taille Id Type
/dev/sdb1 * 64 2890719 2890656 1,4G 0 Vide
/dev/sdb2 5092 6499 1408 704K ef EFI (FAT-12/16/32)
Saisissez « help » pour obtenir des renseignements complémentaires.
/dev/sdb3: ,4G ## pour le fun, début dès que possible, 4Go
Une nouvelle partition 3 de type « Linux » et de taille 4 GiB a été créée.
/dev/sdb3 : 2891776 11280383 (4G) Linux
/dev/sdb4: ,, ### début dès que possible, taille maxi
Une nouvelle partition 4 de type « Linux » et de taille 2,2 GiB a été créée.
/dev/sdb4 : 11280384 15826943 (2,2G) Linux
Toutes les partition utilisées.
Nouvelle situation :
Périphérique Amorçage Début Fin Secteurs Taille Id Type
/dev/sdb1 * 64 2890719 2890656 1,4G 0 Vide
/dev/sdb2 5092 6499 1408 704K ef EFI (FAT-12/16/32)
/dev/sdb3 2891776 11280383 8388608 4G 83 Linux
/dev/sdb4 11280384 15826943 4546560 2,2G 83 Linux
Voulez-vous écrire cela sur le disque ? [O]ui/[N]on : o
```
pour recharger la nouvelle table
```
partprobe
```
formater
```shell
mkfs.ext4 /dev/sdb3
mkfs.ext4 /dev/sdb4
```
l'explorateur de fichier fonctionne, mais parted/gparted sont toujours à la rue:
```shell
parted /dev/sdb
```
```text
(parted) print
Warning: The driver descriptor says the physical block size is 2048 bytes, but Linux says it is 512 bytes.
Ignore/Cancel? i
Model: PNY USB 2.0 FD (scsi)
Disk /dev/sdb: 32,4GB
Sector size (logical/physical): 2048B/512B
```
ces images iso hybrides sont peut-être le résultat de hacks solutionnant boot UEFI/MBR, pouvant être
prises en charge par certains outils, mais cette histoire de taille de secteur de 2048o (typique des iso)
ainsi que le type de partition iso non reconnue et indiquée comme vide, sauf par `gdisk` en GPT.