UEFI : le nouveau BIOS

Transcription

UEFI : le nouveau BIOS
Technologie UEFI,
à la découverte du nouveau BIOS
Table des matières
Technologie UEFI, à la découverte du nouveau BIOS ............................ 1
Plongeons nous dans les entrailles de nos machines .............................. 2
Naissance d’EFI .......................................................................... 2
Voyons un peu comment est construit un EFI ....................................... 3
Concrètement, comment identifier un EFI  ? ......................................... 3
Bootons en EFI (sur Linux) ............................................................. 4
Le shell EFI ........................................................................................................................................ 5
efilinux ................................................................................................................................................ 6
Installation de Windows sur un ordinateur EFI ...................................... 7
Pour installer Windows sur un ordinateur EFI .............................................................................. 7
Une compilation d’un texte posté par Pinaraf le 25/10/11 à 17:55. Modéré par
baud123 sur http://linuxfr.org et d’un article publié en octobre 2009 sur Technet
Microsoft : http://technet.microsoft.com/fr-fr/library/dd744321(v=ws.10).aspx
Le Coach du PC
4 septembre 2012
www.lecoachdupc.com
1
UEFI : le nouveau BIOS
Qu’il semble loin le temps, béni pour certains, maudits pour d’autres, où il était
nécessaire de connaître les IRQ et DMA de sa machine pour l’utiliser, où, loin du
plug’n’play, le matériel se contentait de laisser l’humain configurer…
Puis vint le plug’n’play, son compagnon l’ACPI permettant de lister le matériel et de
le configurer magiquement. Mais toujours, au sein de la machine, un petit logiciel, le
BIOS.
Plongeons nous dans les entrailles de nos machines
Le BIOS est, de manière assez surprenante, l’élément probablement à l’origine du
succès de l’IBM PC. En effet, le BIOS, l’élément primitif indispensable au démarrage
de la machine, a été mis, non pas sur les disques de boot, mais en ROM sur la carte
mère.
Quelques années plus tard, après un peu de rétro ingénierie, des fabricants ont pu
commencer à vendre des clones de PC compatibles, basés sur une
ré‐implémentation du BIOS. Le BIOS est moche, clairement ; très basique, très
crade. Mais il faisait son travail, il fournit une abstraction très primitive du matériel.
On pouvait presque écrire un OS uniquement en faisant des appels au BIOS, comme
DOS.
Les appels au BIOS sont très simples : il s’agit tout bêtement d’une série
d’interruptions matérielles. À travers l’IRQ 0x10, on peut donner différentes
instructions à la carte graphique, via le registre AH : défilement (scrolling),
changement de mode et des couleurs. L’IRQ 0x13 permet de contrôler les disques.
Naissance d’EFI
Mais avec l’évolution du matériel, les limites sont apparues : le BIOS utilise un mode
16 bits, ne lui permettant pas d’adresser toute la RAM, l’amorçage par le réseau ou
par CD est apparu, l’USB est arrivé. Récemment toutefois, nous avons atteint une
limite très difficile à surmonter : la table des partitions gérée par le BIOS ne permet
pas d’exploiter des disques de plus de 2 Téra bytes.
En parallèle, depuis la fin des années 90, Intel avait développé, en partenariat avec
HP, l’architecture Itanium, pour laquelle l’utilisation du BIOS n’était pas envisageable.
Ainsi, Intel développa un outil moderne, puissant, flexible, simple et unanimement
repris : l’EFI.
Bon, OK, en vrai c’est plus compliqué : en 1994, l’IEEE avait déjà standardisé Open
Firmware, une solution multiplateforme et acceptée pour accomplir une tâche
similaire au BIOS. Utilisé sur les machines Sun, Apple, IBM, c’est un outil qui a fait
ses preuves et continue à les faire.
Mais pour Intel, Open Firmware n’est pas acceptable. Officiellement, c’est parce que
l’Open Firmware duplique l’ACPI en fournissant son propre arbre de périphériques.
Mais, depuis, le projet OLPC a prouvé qu’en fait, c’est possible. Par contre dans EFI,
il y a un arbre de périphériques potentiellement différent de celui de l’ACPI (et vous
êtes loin de la fin de ce journal, hein).
Le Coach du PC
4 septembre 2012
www.lecoachdupc.com
2
UEFI : le nouveau BIOS
EFI est décrit dans une spécification, contrairement au BIOS, qui n’a jamais eu de
telle documentation : 2 210 pages, plus les 800 pages d’ACPI. Mangez la
spécification, c’est du bon.
Bien sûr, EFI a évolué lui aussi : la norme EFI a cessé d’évoluer et l’UEFI fut créé à
partir d’EFI 1.10. UEFI est une évolution d’EFI contrôlée par le Forum UEFI et non
plus par Intel.
En 2007, la version 2.1 d’UEFI a apporté la cryptographie, l’authentification réseau,
la possibilité de construire une interface graphique. Ouais, on parle toujours de
« firmware ».
Voyons un peu comment est construit un EFI
On a en fait trois couches dans EFI.
Au cœur, se trouve le PEI, Pre‐EFI Initialization. Responsable de l’initialisation très
bas niveau, comme le contrôleur mémoire (truc super tordu mine de rien, cf. les
présentations des auteurs de coreboot), il gère à la fois le tout début de l’allumage de
la machine, mais aussi la sortie de veille. Une fois qu’il a fait son travail, il laisse la
main à la deuxième couche et disparaît.
La deuxième couche se nomme DXE, Driver eXecution Environment. C’est ce que
l’on voit finalement du firmware. C’est un élément indépendant du matériel, capable
de charger des pilotes et fournissant des interfaces génériques et normalisées aux
applications souhaitant l’utiliser.
Enfin, la troisième couche, les applications EFI, en majeure partie les bootloaders
donc… Alors, si vous trouvez que ça ressemble à BIOS + OS + applications, difficile
d’argumenter tellement ça semble exact ! Au passage, a priori, une application EFI
dépend de l’architecture : elle sera x86, x86-64, ia64.
Concrètement, comment identifier un EFI  ?
Hum, c’est une bonne question. Je dispose depuis quelques jours d’un ordinateur
portable ASUS utilisant un magnifique UEFI. Mais, par défaut, une émulation du
BIOS est présente, permettant de lancer un GRUB sans soucis. Pire encore, par
défaut, le boot EFI n’est même pas activé sur les clés USB, par exemple.
J’avoue ne pas avoir trouvé de solution depuis GNU/Linux pour le savoir. À vrai dire,
c’est le but de l’émulation du BIOS, non ? Et le Windows n’a pas vécu assez
longtemps (0 seconde) pour vérifier.
Seul un passage par l’interface de configuration du firmware (ce que, par abus de
langage, on appelait BIOS) prouve que l’on est face à une machine EFI.
Heureusement, ici, pas d’interface graphique qui bouge dans tous les sens. Nous
avons une interface sobre, classique, contrôlée au clavier, avec des options comme
« UEFI Boot », pour nous mettre sur la voie.
Le Coach du PC
4 septembre 2012
www.lecoachdupc.com
3
UEFI : le nouveau BIOS
Bootons en EFI (sur Linux)
Dans mon ignorance, j’ai installé ma Debian classiquement, sans réfléchir : 256 Mio
pour un « /boot » en ext3, le reste en volume physique LVM, un GRUB, et ça
roule ! Et je ne peux donc pas profiter d’un boot EFI : le chargeur d’amorçage (boot
loader) pour EFI doit être stocké sur une partition pour laquelle un pilote est chargé.
Ne pouvant ajouter de pilote ext3 dans mon firmware, je me vois contraint d’avoir une
partition FAT pour le chargeur d’amorçage !
Mon premier objectif n’étant pas la destruction de mon amour propre et de ma
distribution, j’opte donc pour une solution plus sage : booter en EFI sur une clé USB.
Le boot EFI 100 % natif top moumoute viendra plus tard.
Préparons donc une clé USB à booter en EFI. Mais que mettre dessus ? Mettre un
GRUB classique pour un BIOS, je sais faire. Mais un EFI ne mange pas de ce pain.
Ma clé USB était une clé USB classique, partitionnée avec une table de partitions
DOS et une seule partition FAT32. Je décidai, pour l’expérience, de la maltraiter un
peu. Mais, normalement, vous n’avez pas à la maltraiter à ce point.
Donc maltraitons‐la : passons‐la en GPT, nouveau format de table de partitions,
permettant de passer outre la limite des 2 Tio (indispensable sur une clé de 8 Gio).
Pour ce faire, parted est notre ami, avec la commande « mklabel gpt » (ce
journal ne visant pas à faire de vous un expert de parted, je n’irai pas plus loin).
Il suffit donc d’avoir une table des partitions valide, comprise du BIOS, et d’y glisser
subtilement une partition FAT. Faisons donc. Mais que mettre sur cette partition FAT,
et où ? C’est là où j’ai perdu le plus de temps finalement.
J’avais expliqué tantôt que l’EFI charge une application, la plupart du temps un
chargeur d’amorçage. Mais je ne suis pas fou, je ne vais pas directement tenter
GRUB. Tentons plus simple, plus utile aussi, pour une clé USB : l’EFI shell
(explications dans un paragraphe, j’ai pas trouvé mieux comme organisation).
Le projet tiano-core, une implémentation libre du cœur d’UEFI, nous fournit ce shell à
l’adresse suivante :
http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=UEFI_Shell.
Mettons ce shell sur la clé USB. Pour cela, je crée un dossier EFI, et je mets dedans
le fichier « shell.efi ». Mais ça ne marche pas (n’essayez pas).
En effet, il faut mettre un bon nom au fichier. Le fichier d’amorçage, dans le cas
d’une clé USB en x86-64, doit être à l’emplacement suivant : «
\EFI\boot\bootx64.efi ».
Notez l’utilisation de la notation x64 pour parler d’x86-64, que l’on nomme amd64,
x64 est la notation de Sun et Microsoft. Et la contre‐oblique (anti‐slash) est de mise
en EFI.
Une fois le fichier mis sur la clé et la machine démarrée, on se retrouve dans le
grandiose EFI shell !
Le Coach du PC
4 septembre 2012
www.lecoachdupc.com
4
UEFI : le nouveau BIOS
Le shell EFI
Le premier qui dit que ça ressemble à DOS, gagne un cadeau Bonux. Notons tout
d’abord la liste des périphériques bloc détectés, affichée en haut de l’écran au
lancement du shell. Un conseil : ajoutez immédiatement ce logiciel dans votre
trousse à outils pour dépanner des machines. Je ne plaisante pas : il me semble être
tout simplement indispensable, pour les futurs EFI bogués, de disposer de cet outil et
des quelques utilitaires qu’il propose.
Vous voici maintenant devant un shell à l’invite fort engageante, couleur jaune sur un
fond noir :
Shell>
Voici les commandes qui m’ont semblé intéressantes (je ne m’amuserai plus à
recopier tout le résultat des commandes) :
help : l’indispensable ;
drivers : liste l’ensemble des pilotes chargés dans l’UEFI. Comme ça,


quand votre clé USB 4 ne fonctionnera pas, vous pourrez charger un pilote
USE 4 depuis votre clé USB 3 ;
devices : liste les périphériques connus, mais c’est moins joli que
devtree.

Sur mon PC portable, j’ai 8 périphériques :






fs0 alias hd22b0d0b (après plusieurs reboots : cet identifiant est dynamique)
alias
blk0
:
Acpi(PNP0A03,0)/Pci(1D|0)/Usb(1,0)/Usb(3,0)/HD(Part1,Sig64ED66ECD248-412A-AEEB-B0ECA830E264)
blk1 : Acpi(PNP0A03,0)/Pci(1F|2)/Sata(0,0)/HD(Part1,Sig0003AC8C)
blk2 : Acpi(PNP0A03,0)/Pci(1F|2)/Sata(0,0)/HD(Part2,Sig0003AC8C)
blk3 : Acpi(PNP0A03,0)/Pci(1F|2)/Sata(0,0)
blk4 : Acpi(PNP0A03,0)/Pci(1F|2)/Sata(2,0)
blk5 : Acpi(PNP0A03,0)/Pci(1D|0)/Usb(1,0)/Usb(3,0)
OK, facile de deviner : fs0 est la partition 1 de la clé USB. Mais que faire d’autre
maintenant ?
Mouais… Pas super fun. Au passage, vous verrez des commandes pour le support
de DHCP, d’IPv4. Rien pour IPv6 par contre. Ça c’est l’avenir.
Explorons donc plutôt le système de fichiers. Vous vous souvenez bien de DOS ? Si
oui, c’est facile :
fs0:
Et voilà, vous êtes dans le disque fs0… Puis, vous pouvez utiliser les bonnes
vieilles commandes DOS du type « cd », « dir » (ou « ls », ouf !), type (et
pas « cat »)…
Le Coach du PC
4 septembre 2012
www.lecoachdupc.com
5
UEFI : le nouveau BIOS
Mais passons à plus rigolo : bootons un Linux depuis EFI !
efilinux
efilinux est une solution très récente et très simple pour amorcer un Linux depuis EFI.
C’est le LILO d’EFI, en quelque sorte. Il est disponible en paquet Debian, et contient
principalement le fichier suivant : « /usr/lib/efilinux/efilinux.efi
».
On va donc mettre « efilinux.efi » sur la clé USB et l’accompagner d’un
vmlinuz et de l’initrd correspondant.
On se retrouve donc avec dans `« fs0:/EFI » les fichiers suivants :




«
«
«
«
boot\bootx64.efi », le shell ;
vmlinuz-3.1.0-rc7-amd64 » ;
initrd-3.1.0-rc7-amd64 » ;
efilinux.efi ».
La méthode d’amorçage est très très simple :
fs0:
cd EFI
efilinux.efi
-f
0:\EFI\vmlinuz-3.1.0-rc7-amd64
root=/dev/mapper/asus--laptop-root
ro
initrd=0:\EFI\initrd-3.1.0-rc7-amd64
Et voilà !
Vous avez amorcé votre premier noyau avec un système EFI « pur ».
Et vous verrez la différence :
$ dmesg | grep -c -i efi
308
Contre 0 ou 1 auparavant…
Devant la longueur de ce journal, il est urgent d’attendre avant de continuer.
Prochain épisode : je remplace GRUB par un gestionnaire d’amorçage UEFI… Puis,
je code une appli UEFI !
P.‐S. : je ne peux garantir que tout ceci fonctionne sur une machine Apple, tout
simplement parce qu’elles utilisent une solution bâtarde entre EFI et UEFI, avec un
comportement souvent différent de ce que l’on voit sur les machines des autres
constructeurs.
Le Coach du PC
4 septembre 2012
www.lecoachdupc.com
6
UEFI : le nouveau BIOS
Installation de Windows sur un ordinateur EFI
Publication: octobre 2009 http://technet.microsoft.com/fr-fr/library/dd744321(v=ws.10).aspx
S'applique à: Windows 7, Windows Server 2008 R2
Si vous installez Windows® sur un ordinateur EFI, vous devez activer le mode EFI
dans le microprogramme de l’ordinateur, qu’il s’agisse d’installations assistées ou
sans assistance. Vous devez également démarrer sur le support de préinstallation 64
bits en mode EFI (Windows PE 64 bits en mode EFI ou Installation de Windows 64
bits en mode EFI). Vous ne pouvez pas installer Windows sur les ordinateurs UEFI
en mode BIOS. (Pour plus d’informations sur le basculement des modes, voir votre
documentation sur le microprogramme EFI.) Les étapes décrites dans cette rubrique
sont données à titre de référence seulement et peuvent ne pas correspondre aux
commandes propres à votre type de microprogramme EFI.
Une fois Windows installé, vous pouvez apporter des modifications de configuration
supplémentaires à votre image. Cette image système Windows devient l’image
maître utilisée pour le déploiement sur d’autres ordinateurs.
Pour installer Windows sur un ordinateur EFI
1. Installez Windows en exécutant l’installation de Windows à partir d’une entrée
de démarrage EFI sur l’ordinateur principal. Utilisez l’interpréteur de
commandes EFI ou le menu Démarrer à partir d’un fichier du
microprogramme pour lancer le chargeur de démarrage EFI Windows sur le
disque d’installation. Pour plus d’informations, voir la documentation de votre
microprogramme.
2. À partir de l’interpréteur de commandes EFI, sélectionnez le périphérique à
l’aide du support d’installation de Windows, puis démarrez l’application de
démarrage EFI. En partant du principe que le périphérique DVD est fs0,
utilisez les commandes suivantes pour les ordinateurs à processeur x64 :
Copier
Shell> Fs0:
fs0:> \EFI\BOOT\BOOTX64.EFI
Pour les ordinateurs d’architecture Itanium, utilisez la commande suivante :
Copier
Fs0:\EFI\BOOT\BOOTIA64.EFI
Si le gestionnaire de démarrage EFI prend en charge le démarrage à partir
d’un DVD, la commande de l’interpréteur de commandes EFI n’est pas
nécessaire. Vous pouvez démarrer le DVD directement à partir du
gestionnaire de démarrage EFI.
3. Lorsque le système vous le demande, appuyez sur n’importe quelle touche
pour démarrer à partir du DVD Windows. Windows s’installe sur l’ordinateur.
Le Coach du PC
4 septembre 2012
www.lecoachdupc.com
7
UEFI : le nouveau BIOS
Remarque
En cas de démarrage de l’environnement de préinstallation Windows
(Windows PE) à partir d’un CD-ROM ou d’un DVD, vous pouvez ignorer
l'invite « Appuyez sur n’importe quelle touche pour démarrer à partir du CD ou
du DVD » et démarrer directement dans Windows PE. En cas de processeur
x86 ou AMD64, supprimez le fichier Bootfix.bin de votre image système
Windows PE personnalisée. Pour les systèmes Itanium, utilisez le fichier
Efisys_noprompt.bin au lieu du fichier Efisys.bin lors de la création de votre
image système Windows PE personnalisée.
4. Si vous effectuez une installation assistée, suivez les invites de l’interface
utilisateur pour réaliser l’installation de Windows.
En option, vous pouvez effectuer une installation sans assistance en utilisant
un fichier Autounattend.xml stocké sur un disque mémoire flash USB (UFD)
ou sur tout autre périphérique. Pour connaître les conditions requises pour un
fichier de réponses d’ordinateur EFI, voir Créer des partitions de disque dur
UEFI à l’aide de l’Assistant Gestion d’installation.
Remarque
Certaines plateformes EFI prennent à la fois en charge les microprogrammes
UEFI et BIOS. Sur certains de ces systèmes, il n’est pas toujours évident de
déterminer si l’option de démarrage du DVD par défaut est une option de type
EFI ou BIOS. Dans ce cas, l’utilisation de la commande de l’interpréteur de
commandes EFI peut s’avérer nécessaire. Si vous ne démarrez pas
spécifiquement l’installation de Windows en utilisant l’entrée de démarrage
EFI, l’entrée de démarrage du microprogramme par défaut pour BIOS peut
être utilisée. Si l’installation de Windows démarre en mode BIOS sur un
système EFI/BIOS combiné, les partitions ESP et MSR ne sont pas créées.
Lorsque l’installation de Windows est terminée, utilisez la commande Diskpart
pour vérifier que les partitions ESP et MSR ont été créées.
5. Après l’installation de Windows sur l’ordinateur, effectuez toutes les autres
tâches de personnalisation.
6. À partir d’une invite de commandes où vous disposez de droits élevés,
exécutez sysprep pour préparer l’image système Windows à l’acquisition des
images et au déploiement. Exemple :
Copier
%WINDIR%\system32\sysprep\sysprep.exe /generalize /oobe
/shutdown
À la fin de l’exécution de la commande Sysprep, l’ordinateur s’éteint.
Le Coach du PC
4 septembre 2012
www.lecoachdupc.com
8

Documents pareils