GNU/Linux >> Tutoriels Linux >  >> Linux

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

C'est possible, et c'est très fréquent 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 n'importe quelle table de partition. Il ne s'intéresse qu'au code d'amorçage partie qui correspond aux 440 premiers octets de votre MBR. (Bien qu'il y ait des exceptions. Certaines implémentations du BIOS se cassent si elles ne peuvent pas trouver un MBR avec l'un des types de partition habituels. Espérons que ceux-ci soient rares.)

    La table de partition GPT ne fonctionne pas physiquement remplacer un MBR - il commence toujours au secteur 1, tandis que le MBR est dans le secteur 0 - il est donc possible qu'un disque ait les deux. En fait, la plupart des disques GPT le font avoir un « MBR de protection » contenant une seule partition qui couvre l'intégralité du disque, pour empêcher les anciens outils de partitionnement uniquement MBR de détruire accidentellement les données.

    Ainsi, vous pouvez installer, par exemple, le secteur de démarrage Syslinux dans votre MBR, et il démarrera. (Le syslinux-install_update le script le fera pour vous, mais vous pouvez chercher gptmbr.bin dans votre package syslinux pour le faire manuellement.)

    Tout comme l'indicateur « actif » sur les partitions MBR, Syslinux recherchera l'indicateur « Legacy BIOS bootable » sur les partitions GPT (bit 2 – UEFI spec 2.4 section 5.3.3 tableau 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. Étant donné que GRUB 2 veut "intégrer" des parties de lui-même dans les secteurs 1 à 62 traditionnellement inutilisés, il écraserait un GPT 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-install se trouverait un lieu d'encastrement.

  • D'autre part, la spécification UEFI fait nécessitent la prise en charge des types de partition MBR (section 12.3.1) et attribuent le type de partition MBR 0xEF à la partition système EFI (section 5.2.2).

    Donc, si pour une raison quelconque vous ne parvenez 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 a le bon système de fichiers et tous les fichiers nécessaires (section 12.3.1.3) :

    Pour les périphériques de support 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 sous EFI appelé BOOT . Il ne doit y avoir qu'une seule image EFI exécutable pour chaque architecture de processeur prise en charge dans le BOOT annuaire. Pour qu'un support amovible soit amorçable sous EFI, il doit être construit conformément aux règles énoncées dans 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 à partir de l'UEFI demain. J'ai dû redémarrer mon ordinateur portable du mode UEFI au mode "compatibilité BIOS" et inversement peut-être une centaine de fois cette semaine, tout en essayant de trouver un bogue dans le support UEFI 3.17...

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


Oui, c'est possible.

L'idée de base est de partitionner votre clé USB en GPT 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 Mio, 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 Linux root/home (type GPT 0FC63DAF-8483-4772-8E79-3D69D8477DE4 ) - espace restant, système de fichiers XFS ou Btrfs

Ce partitionnement nous permet de démarrer sur des systèmes hérités car avec GPT, il y a encore de la place pour un MBR (pour des raisons de rétrocompatibilité) 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 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 Linux Boot est monté sous /boot et que le système de fichiers de la partition système EFI est monté sous /boot/efi .

(Ré-)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 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 UEFI, vous devez corriger le premier ou le deuxième fichier et remplacer (linux|initrd)16 avec (linux|initrd)efi ou l'inverse.

Installez grub dans le MBR :

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

Voilà.


Linux
  1. Linux - Installer à l'aide de Gpt sur un système 32 bits avec Bios ?

  2. Pourquoi une partition de démarrage ext2 de 100 Mo est-elle recommandée pour Linux ?

  3. Est-il possible de démarrer Linux à partir d'un disque GPT sur un système BIOS ?

  4. Pourquoi l'USB ne fonctionne-t-il pas sous Linux alors qu'il fonctionne dans UEFI/BIOS ?

  5. Quelle est la taille recommandée pour une partition Linux /boot ?

Une introduction à bpftrace pour Linux

Choisir une imprimante pour Linux

Gestion des partitions Linux

Activer la prise en charge UEFI pour les machines virtuelles KVM sous Linux

Déplacez votre Linux du BIOS hérité vers l'UEFI en place avec un temps d'arrêt minimal

Zorin OS pour les débutants Linux