Je veux comprendre ce qui se passe
Développeur Rufus ici.
Ce que trop de gens ne comprennent pas, parce que les ISO Linux appliquent cette méthode, mais il s'agit essentiellement d'un HACK MAJEUR APPELÉ 'ISOHYBRID' , est que, dans la plupart des cas, vous ne pouvez pas simplement prendre une image ISO et la copier octet par octet sur une clé USB, et vous attendre à ce que cela démarre également.
En effet, le format ISO et les systèmes de fichiers sous-jacents qu'il utilise (ISO9660
ou UDF
) sont conçus pour le démarrage optique, qui est une bête complètement différente du démarrage régulier sur disque dur ou USB. D'une part, les supports optiques, et donc les images ISO (régulières), n'ont pas de table de partition, ce qui est (généralement) essentiel pour le démarrage du disque dur ou de l'USB, et ils n'ont (généralement) pas non plus d'enregistrement de démarrage principal, a.k.a. MBR, qui est essentiel pour le démarrage du BIOS.
Cela signifie que, si vous faites une copie 1:1 d'un fichier normal ISO, tel que Windows One, sur un disque, et essayez de démarrer voici ce qui va se passer :
- Un système BIOS ou un système UEFI en mode Legacy/CSM ne verra aucun MBR, et surtout il ne verra pas le
0x55
0xAA
séquence dans les 2 derniers octets du MBR qui indique qu'un disque est amorçable par le BIOS. Par conséquent, il ne pourra pas démarrer ce disque en mode BIOS. - Un système UEFI ne montera (généralement) pas
UDF
ouISO9660
partitions à partir d'un disque ou d'un lecteur flash, car, même s'il possède des pilotes pour ces systèmes de fichiers, le disque résultant que vous avez créé manquera d'unMBR
ouGPT
tableau des partitions. Lors du démarrage d'un disque normal, UEFI est conçu pour rechercher d'abord une partition, puis rechercher un chargeur de démarrage (par exemple,/efi/boot/bootx64.efi
) sur cette partition. Donc s'il n'y a pas deMBR
ouGPT
table de partition sur le média, ce qui sera le cas pour un ISO normal , peu importe si l'ISO contient un fichier de chargeur de démarrage, car le micrologiciel UEFI ne pourra pas monter la partition sur laquelle il réside.
Ainsi, ce que font des utilitaires comme Rufus lors de la création d'un support de disque amorçable à partir d'un ISO Windows, qui est une image de support optique complètement standard, est :
- Créez une table de partition, soit
MBR
ouGPT
selon ce que l'utilisateur a sélectionné, et créez au moins une partition, qui utilisera généralementFAT32
ouNTFS
comme système de fichiers (notez qu'il utilise des systèmes de fichiers complètement différents de ceux utilisés par une ISO). - Si
MBR
est utilisé, un peu de code dans leMBR
qui localise le chargeur de démarrage secondaire, sur leMBR
correspondant partition, qui est conçue pour démarrer l'exécution du noyau Windows, en mode disque, à partir de cette partition. Oh, et cela garantit également que le0x55
0xAA
le marqueur de démarrage est ajouté à la fin duMBR
afin que le BIOS considère le disque comme amorçable. Ensuite, il copie également le contenu de l'ISO sur unFAT32
ouNTFS
partitionner. - Si
GPT
est utilisé, Rufus vérifie qu'il existe réellement un fichier de chargeur de démarrage UEFI, tel que/efi/boot/bootx64.efi
(eh bien, en fait, il le fait avant vous, il vous permet de sélectionner GPT, car il n'y a pas grand intérêt à essayer de créer un lecteur amorçable GPT s'il n'y a pas de chargeur de démarrage UEFI) puis le copie, avec le reste des fichiers ISO, généralement sur unFAT32
partition, depuis le démarrage à partir d'unFAT32
la partition est une exigence obligatoire de l'UEFI (mais cela ne signifie pas que l'UEFI ne peut pas démarrer à partir deNTFS
ouexFAT
si vous disposez des pilotes UEFI appropriés, ce qui peut s'avérer utile si vous disposez d'un ISO Windows avec un fichier de plus de 4 Go, car FAT32 ne peut pas prendre en charge de tels fichiers).
Désormais, ce qui précède ne fonctionne que lorsque les chargeurs de démarrage secondaires (c'est-à-dire ceux qui proviennent de Windows et que Rufus ne modifie pas) sont conçus pour prendre en charge les deux démarrage optique et régulier, ce qui signifie généralement qu'ils doivent gérer à la fois UDF
ou ISO9660
et FAT32
ou NTFS
systèmes de fichiers, ainsi que les autres différences qui se présentent lors du démarrage à partir du disque par rapport à l'optique. Mais Microsoft a conçu son chargeur de démarrage précisément pour cela, ce qui est la chose intelligente à faire , car, si votre système cible est UEFI, cela signifie que vous (généralement, tant que le problème de taille de fichier maximale de 4 Go de FAT32
n'a pas sa tête laide) n'ont pas besoin d'un utilitaire pour convertir une image ISO en une clé USB amorçable, mais vous pouvez simplement formater cette clé USB en FAT32 et y copier les fichiers ISO (copie de fichier, pas copie d'octets), et vous disposez d'un support de démarrage.
Et maintenant que nous avons parcouru tout ce qui précède, je peux me lancer dans une diatribe et expliquez pourquoi je pense que les mainteneurs de la distribution Linux, qui sont généralement plus intelligents que cela, rendent en fait un mauvais service à leurs utilisateurs, même s'ils essaient de les aider :
Presque tous les distributions Linux récentes utilisent un MAJOR HACK appelé "IsoHybrid", où quelqu'un a réussi à trouver un moyen de faire un ISO9660
l'image optique se fait passer pour une image disque normale, avec une table de partition, un MBR
et tout... En d'autres termes, la plupart des ISO Linux que vous trouvez ces jours-ci sont abusifs le système de fichiers ISO9660 pour le faire ressembler à quelque chose pour lequel il n'a jamais été conçu :un double disque et une image optique.
Évidemment, le but est de créer une ISO qui peut aussi être utilisé avec le dd
commande, même si une ISO ne devrait jamais pouvoir fonctionner de cette façon. Et je suis d'accord qu'en théorie, cela semble génial, car pouvoir utiliser une seule image pour des utilisations complètement différentes devrait être formidable pour les utilisateurs, mais en pratique, cela entraîne des problèmes souvent négligés :
- De nombreux mainteneurs de distribution Linux ne veulent pas s'embêter à utiliser un système de fichiers secondaire que Windows peut monter (par exemple, ils utiliseront
ext
comme système de fichiers "secondaire" au-dessus deISO9660
), ce qui signifie que beaucoup des utilisateurs de Windows, qui créent un lecteur amorçable pour utiliser Linux pour la première fois, sont très confus quant à la raison pour laquelle ils ne peuvent plus accéder au contenu de leur lecteur flash. C'est encore pire si le "IsoHybrid" inclut également une partition système EFI (ESP), car ces utilisateurs ont alors l'impression que leur disque a complètement diminué en taille. Si vous allez sur reddit ou ailleurs, vous verrez de nombreux messages d'utilisateurs qui sont complètement confus quant à ce qui est arrivé à leur support USB, ce qui ne donne pas une bonne première impression Linux... - De nombreux mainteneurs de distributions Linux se concentrent tellement sur le fonctionnement d'ISOHybrid qu'ils ignorent complètement l'option de créer un support de démarrage UEFI en copiant simplement le contenu sur un
FAT32
partition formatée, qui, vraiment, devrait toujours être la méthode préférée pour créer des lecteurs amorçables UEFI (car il est généralement beaucoup moins risqué de formater une partition puis de copier des fichiers que d'utiliser ledd
commande). Pour cette raison, nous avons vu plusieurs problèmes qui rendent l'expérience utilisateur médiocre avec Manjaro, Ubuntu... C'est en fait mon principal point de discorde avec "ISOHybrid":cela ne devrait pas servir d'excuse pour abandonner les moyens établis de créer un support de démarrage ! - GPT et "ISOHybrid" peuvent être problématiques car la table GPT secondaire sera considérée comme corrompue lors de l'utilisation de
dd
... ce qui conduit en fait à un BSOD sur Windows 7 (mais c'est vraiment un bogue Windows plutôt qu'un problème ISOHybrid). Pourtant, ce n'est pas la meilleure expérience pour les utilisateurs de Windows qui créent des lecteurs amorçables... - Et enfin, parce que les "ISOhybrides" sont présentés comme s'ils étaient les médias les plus naturels au monde (ce qu'ils ne sont certainement pas), les gens comme vous sont amenés à croire que chaque image ISO peut être appliquée en utilisant
dd
, lorsqu'il s'agit de l'exception plutôt que la règle. C'est très regrettable, car cela crée des TONNES de confusion pour les utilisateurs, certains utilisateurs de Linux disant aux personnes qui souhaitent créer un support de démarrage Windows qu'elles devraient simplement pouvoir utiliserdd
alors que cela ne fonctionnera certainement jamais ! De plus, si vous choisissez n'importe quel ISO Linux d'il y a 10 ans, je suis assez confiant que vous constaterez que presque aucun d'entre eux ne peut réellement être utilisé pour créer un support de démarrage en utilisantdd
parce que ce truc "IsoHybrid" est en fait un développement récent.
Autant que je sache, Microsoft n'a pas l'intention de passer au "hack" qu'est ISOHybrid pour ses ISO Windows, ce qui signifie qu'il est peu probable que vous puissiez jamais utiliser dd
pour créer un support USB amorçable à partir de celui-ci, et par conséquent, si vous souhaitez créer un support amorçable Windows à partir d'un ISO, vous pouvez :
- (UEFI) Besoin de formater un disque avec un système de fichiers à partir duquel Windows peut démarrer (
NTFS
,FAT32
et plus récemmentexFAT
) et extrayez les fichiers ISO dessus. Maintenant, si vous utilisezNTFS
ouexFAT
, vous devrez peut-être également faire un peu de travail supplémentaire... - (BIOS/Legacy) Besoin de formater un disque avec un système de fichiers à partir duquel Windows peut démarrer (
NTFS
ouFAT32
--exFAT
ne fonctionnera pas car Microsoft n'a jamais publié de chargeurs de démarrage BIOS pour lui), puis créez la chaîne de chargeurs de démarrage appropriée, du code de démarrage MBR aux enregistrements de démarrage de volume.
Ce n'est en fait pas si compliqué à réaliser, mais cela demande un peu plus de travail qu'une copie 1:1 à partir d'un fichier ISO.
J'espère que cela répond à votre question.
dd
n'est pas le bon outil pour créer une clé USB amorçable Windows. Le moyen le plus simple consiste à utiliser woeusb
.
Installer :
sudo apt-get install devscripts equivs gdebi-core
cd WoeUSB
./setup-development-environment.bash
mk-build-deps
sudo gdebi woeusb-build-deps_3.3.1_all.deb
dpkg-buildpackage -uc -b
sudo gdebi ../woeusb_3.3.1_amd64.deb
Maintenant, la version du paquet est 3.3.1
, en cas de mise à jour du package, la commande ./setup-development-environment.bash
imprimera la version actuelle, vous devez la remplacer dans les commandes ci-dessus.
Utilisation :
Vous pouvez utiliser l'interface graphique, exécutez woeusbgui
depuis la borne. Ou vous pouvez utiliser la CLI :
Démontez le périphérique USB (important). Exécutez ensuite :
sudo woeusb -v --device /path/to/windows.iso /dev/sdc