Une clé USB hybride Linux pour UEFI et BIOS hérité est-elle possible?


14

mon idée est de créer une clé USB de démarrage avec Lubuntu capable de démarrer sur un ordinateur portable BIOS plus ancien et sur des systèmes UEFI plus récents.

Ce serait assez facile, lorsque le Stick serait configuré comme un périphérique de démarrage hérité, mais je veux que ce soit un périphérique compatible UEFI.

  1. Est-ce que cela a du sens?! Ou ai-je compris le concept UEFI horriblement mal?
  2. Si nécessaire, il peut y avoir deux installations Linux différentes (une pour UEFI, une pour héritage mais les deux sur le même lecteur)
  3. Démarrez un périphérique GPT sur le BIOS existant - cela fonctionnera-t-il?

Je ne vois pas clairement, ce serait peut-être juste une meilleure idée d'avoir un bâton de démarrage Linux hérité séparé, mais je suis curieux d'explorer les limites :)

Alors, est-ce que mon idée d'un stick hybride linux-uefi-boot-usb qui fonctionnerait avec le bios hérité est possible?


(3) semble être possible pour linux avec grub http://www.rodsbooks.com/gdisk/booting.html

De plus, j'ai une partition EF00 prête sur ce bâton, à part un Swap, Fat32 et deux partitions Ext4.


(1) semble également possible http://www.rodsbooks.com/bios2uefi/

Ces instructions datent toutefois de 2012, un certain temps s'est écoulé depuis - quelqu'un a-t-il un exemple de travail plus simple?


Pour d'autres chercheurs sur ce sujet:

Démarrage de Windows 7 à partir du disque GPT sur une carte mère non EFI Existe-t-il un moyen de démarrer Windows 7/8 en utilisant le BIOS sur GPT?

http://www.borncity.com/blog/2012/07/25/uefi-emulation-auf-pcs/


MISE À JOUR:

J'ai réussi à créer la partie UEFI, y compris la configuration du démarrage sécurisé avec rEFInd.

En suivant les conseils donnés, j'ai utilisé ddpour copier gptmbr.binsur mon lecteur, qui semble maintenant faire au moins quelque chose sur un système BIOS: "Ce n'est pas un disque amorçable"

Cependant, j'ai suivi les conseils et défini le pmbrdrapeau pour le disque et le legacy bootdrapeau gpt - toujours cette erreur, des idées?

Ma partition ESP est la deuxième partition sur le disque et est configurée avec des fichiers efi.

La mise en place:

  • 64 Go d'espace
  • Table de partition GPT
  • Le disque a un indicateur pmbr défini
  • La première partition commence à 16 Mo et mesure environ 45 Go, un fat32 primaire pour les données
  • La 2ème partition démarre autour de 45 Go et est le système EFI (fat32) avec une configuration rEFInd fonctionnelle
  • 3ème - 5ème partition est à la maison (ext4), swap et root (ext4) de mon Lubuntu 14.04.1 de travail

En utilisant, ddj'ai copié gptmbr.binmon Syslinux 6.02 compilé dans les 440 premiers octets.

Sous parted 3.2, je peux voir que ma partition 2 a un drapeau bootet legacy_boot.

Pendant le démarrage, je ne reçois aucun disque de démarrage trouvé - si je configure ma 5ème au lieu de la 2ème partition pour être, legacy_bootje reçois le système d'exploitation manquant

C'est vivant!

(Comme mon ancienne question a été supprimée /ubuntu//q/516730/319747 )


Je suppose que je dois copier certains des *.c32fichiers et d'autres dans un dossier syslinux sur mon EFI (où?!) Ou sur ma partition racine ( /boot/syslinux?!) Pour le faire fonctionner - ai-je raison? Quels fichiers sont essentiels?

De plus, je suppose que j'aurai aussi besoin de ce syslinucx.cfgfichier - non?


Mon objectif serait au moins un démarrage direct du système lubuntu sur la partition root ext4.

Mise à jour:

Bien que je ne sache pas pourquoi, je l'ai fait fonctionner - mais pas avec une installation manuelle.

  • le pmbrdrapeau était mauvais et interdisait à mon système UEFI de démarrer le stick en tant qu'UEFI
  • le legacy_bootdrapeau était nécessaire pour ma 5ème partition (racine linux)
  • Je devais utiliser extlinux --install /path/to/root/parition
  • J'ai dû créer un syslinux.cfgdans le dossier syslinux sous le démarrage de ma partition racine

J'ai fait tout cela sur un deuxième stick plus petit, puis j'ai essayé de copier uniquement le dossier syslinux, mais je n'ai pas eu de chance - cela extlinux --installsemble obligatoire.

Quelqu'un sait quoi exactement extlinux --install? Peut-il être fait manuellement ou comment pourriez-vous installer une version plus récente comme 6.02 sans l'installer sur votre système?

J'ai mon bâton à travailler avec les partitions mentionnées sur le BIOS, UEFI et UEFI SecureBoot, un sacré tour, j'ai beaucoup appris, presque tué 2 To avec séparé, soyez prudent et bonne chance.


votre lien est rompu .. avez-vous votre histoire ailleurs? je voudrais faire de même. Merci.
pvinis

1
@pvinis merci pour l'info, j'ai fusionné la question / résultat de askubuntu ici, car il a été supprimé
Jook

Réponses:


11

C'est possible, et c'est très souvent fait avec des clés USB externes et des disques internes.

Concernant les types de table de partition:

  • Le BIOS n'a normalement pas besoin de table de partition. Il ne s'intéresse qu'à la partie du code d'amorçage qui est les 440 premiers octets de votre MBR. (Bien qu'il y ait des exceptions. Certaines implémentations du BIOS se cassent réellement si elles ne peuvent pas trouver un MBR avec l'un des types de partition habituels. Espérons que ce soient rares.)

    La table de partition GPT ne remplace pas physiquement un MBR - elle commence toujours au secteur 1, tandis que le MBR est dans le secteur 0 - il est donc possible pour un disque d'avoir les deux. En fait, la plupart des disques de TPG n'ont un « MBR de protection » contenant une seule partition qui couvre le disque, afin de prévenir les outils de partitionnement MBR seulement âgés de détruire accidentellement les données.

    Ainsi, vous pouvez installer, par exemple, le secteur d'amorçage Syslinux dans votre MBR, et il démarrera. (Le  syslinux-install_updatescript fera cela pour vous, mais vous pouvez chercher gptmbr.bindans votre paquet syslinux pour le faire manuellement.)

    Tout comme le drapeau "actif" sur les partitions MBR, Syslinux recherchera le drapeau "legacy BIOS bootable" sur les partitions GPT (bit 2 - UEFI spec 2.4 section 5.3.3 table 20); le script susmentionné définit également cet indicateur automatiquement si vous avez sgdisk(à partir de gptfdisk) installé.

    GRUB peut également être utilisé, mais c'est aussi un peu plus ennuyeux. Puisque GRUB 2 veut "incorporer" des parties de lui-même dans les secteurs 1-62 traditionnellement inutilisés, il écraserait un GPT qui est stocké au même emplacement. Vous devrez donc peut-être créer une partition dédiée de 2 à 4 Mo et la marquer comme amorçable par le BIOS, de sorte que grub-installcela se trouverait un lieu d'intégration.

  • D'autre part, la spécification UEFI ne nécessitent un soutien pour les types de partition MBR (section 12.3.1) et affecter le type de partition MBR 0xEFsur la partition système EFI (section 5.2.2).

    Donc, si pour une raison quelconque, vous ne pouvez pas faire fonctionner votre disque avec GPT, vous pouvez toujours créer une partition système EFI sur MBR, et elle sera utilisée tant qu'elle aura le système de fichiers correct et tous les fichiers nécessaires (section 12.3.1.3):

    Pour les périphériques de supports amovibles, il ne doit y avoir qu'une seule partition système compatible UEFI et cette partition doit contenir un répertoire défini par UEFI dans le répertoire racine. Le répertoire sera nommé EFI. Tous les chargeurs et applications du système d'exploitation seront stockés dans un sous-répertoire EFIappelé ci-dessous BOOT. Il ne doit y avoir qu'une seule image EFI exécutable pour chaque architecture de processeur prise en charge dans le BOOTrépertoire. Pour que les supports amovibles soient amorçables sous EFI, ils doivent être construits conformément aux règles énoncées à la section 3.4.1.1.

En ce qui concerne les systèmes d'exploitation, Linux ne se soucie généralement pas du tout de savoir s'il est démarré à partir du BIOS aujourd'hui et de l'UEFI demain. J'ai dû redémarrer mon ordinateur portable du mode UEFI au mode "Compatibilité BIOS" et revenir peut-être cent fois cette semaine, tout en essayant de trouver un bogue dans le support UEFI 3.17 ...


Notez que l'article «BIOS to UEFI Transformation» concerne quelque chose de très différent. Il décrit comment installer UEFI lui - même - une implémentation UEFI appelée "DUET" - à démarrer à partir d'un système uniquement BIOS. Cela n'a rien à voir avec le démarrage d'un système d'exploitation directement à partir du BIOS.


+1 - syslinux_install J'examinerai cela, merci pour la confirmation, le réconfort et la nouvelle entrée
Jook

J'ai suivi vos conseils, mais je suis coincé avec la configuration, mon mbrsemble être ok mais ne trouve pas ma EFI Systempartition. Est-ce un problème que ce soit la deuxième partition sur le disque commençant environ 45 Go dans le disque? Dois-je configurer une section spectrale sur l'EFI en plus de la configuration EFI fonctionnant déjà ici?
Jook

Je l'ai fait fonctionner :) alors, merci! syslinux est assez sympa et m'a conduit à gPxe et plopkexec, que j'examinerai plus loin. Pour tout autre chercheur: askubuntu.com/q/516730/319747
Jook

2

Oui, c'est possible.

L'idée de base est de partitionner GPT votre clé USB comme ceci:

  1. Partition de démarrage du BIOS (type GPT 1686148-6449-6E6F-744E-656564454649) - 1 Mio, pas de système de fichiers
  2. Partition système EFI (type GPT C12A7328-F81F-11D2-BA4B-00A0C93EC93B) - 200 MiB, système de fichiers VFAT
  3. Partition de démarrage Linux (type GPT 0FC63DAF-8483-4772-8E79-3D69D8477DE4) - 1 Gio, système de fichiers ext4
  4. Système de fichiers racine / home Linux (type GPT 0FC63DAF-8483-4772-8E79-3D69D8477DE4) - espace restant, système de fichiers XFS ou Btrfs

Ce partitionnement nous permet de démarrer sur les systèmes hérités car avec GPT, il y a encore de l'espace pour un MBR (pour des raisons de compatibilité descendante) et Grub2 a suffisamment d'espace pour installer une étape intermédiaire dans la partition de démarrage du BIOS. Les BIOS hérités ne se soucient pas du schéma de partitionnement et le noyau Grub2 / Linux n'a aucun problème à comprendre le GPT sur les systèmes hérités.

Sur les systèmes UEFI , le micrologiciel UEFI ignore le MBR et utilise la partition système EFI comme point d'entrée.

Par exemple, avec Fedora, vous devez essentiellement faire ce qui suit:

Assurez-vous que le système de fichiers de démarrage Linux est monté sous /bootet que le système de fichiers de partition système EFI est monté sous /boot/efi.

(Re-) Installez les chargeurs de démarrage hérités et UEFI:

grub2-pc grub2-efi-x64 shim-x64 efibootmgr

(Re-) Générez les fichiers de configuration grub à la fois pour le démarrage hérité et UEFI:

# grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
# grub2-mkconfig -o /boot/grub2/grub.cfg

Selon que votre système a démarré en mode hérité ou en mode UEFI, vous devez corriger le premier ou le deuxième fichier et le remplacer (linux|initrd)16par (linux|initrd)efiou l'inverse.

Installez grub dans le MBR:

# grub2-install --target=i386-pc /dev/sd_your_usb_stick_device

Voila.


PS: J'ai écrit un script de provisioning qui implémente cette approche hybride et peut donc être utilisé pour créer automatiquement une telle clé USB.
maxschlepzig
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.