Le Guide du rédacteur du pilote UEFI indique ce qui suit 3 méthodes pour installer les pilotes UEFI :
1. Intégrée dans l'image FLASH du micrologiciel de la plate-forme.
Pour ce faire, il faudrait travailler avec le fabricant de la plate-forme. Les fabricants de plates-formes sont généralement les OEM de votre matériel (par exemple HP, Gigabyte, etc.). Au cours de la fabrication, l'équipementier regroupe tous les pilotes UEFI qu'il souhaite installer dans une image de firmware et la flashe (c'est-à-dire l'enregistre dans la puce flash de la carte mère). Ils ferment ensuite le mode de fabrication du chipset, empêchant ainsi toute modification par un tiers. Pour mettre à jour le micrologiciel, il faudrait créer une capsule de mise à jour et la signer avec la clé privée de l'équipementier. Certains OEM ont fait l'erreur de ne pas fermer le mode de fabrication Ainsi, quelqu'un (y compris les bootkits/rootkits) pourrait en tirer parti pour installer ses propres pilotes UEFI dans le firmware. Cependant, c'est une tâche très complexe et la plupart des OEM ont corrigé ce problème, il n'est donc pas utile de s'engager dans cette voie.
Cependant, cela est beaucoup plus facile sur une image VMware, vous pouvez donc suivre la procédure suivante guide si vous êtes intéressé à essayer des choses.
2. ROM optionnelle PCI sur une carte d'extension PCI.
Je suppose que vous ne développez pas un périphérique matériel PCI, cette option ne vous concerne donc pas non plus. Honnêtement, je n'ai pas non plus la moindre idée de comment cela fonctionne en détail.
3. Un fichier dans une partition système EFI.
Comme indiqué dans le Guide du rédacteur de pilotes, il faut sauvegarder le dossier du pilote sur une partition système EFI, puis mettre à jour le dossier du pilote. Driver####
y DriverOrder
Variables UEFI.
Pour accéder à la partition système EFI dans Windows, exécutez cmd
en tant qu'administrateur et entrez mountvol X: /S
, remplacer X
avec la lettre de lecteur qui n'est pas utilisée sur votre ordinateur. Notez que l'accès nécessite toujours des privilèges d'administrateur et que vous ne pourrez pas voir le lecteur monté dans l'Explorateur. Voir l'historique des modifications pour une méthode plus longue utilisant diskpart
.
Maintenant, pour mettre à jour le Driver####
y DriverOrder
Variables UEFI, vous pouvez écrire soit une application UEFI, soit une application Win32. La section "3.1.1 Programmation du gestionnaire d'amorçage" du manuel de l'utilisateur de l'UEFI. Spécification UEFI Version 2.8 fournit des informations sur la façon dont ces variables sont traitées et la section '3.1.3 Options de chargement' détaille la structure de données et les constantes impliquées. Pour une application UEFI, utilisez SetVariable()
(section '8.2 Variable Services' de la spécification). Pour Win32, utilisez SetFirmwareEnvironmentVariableA
o SetFirmwareEnvironmentVariableExA
.
Pour un exemple Win32, vous pouvez jeter un coup d'œil à l'application dumpEfiVars projet. Il lit seulement les variables et n'y écrit pas, mais le code peut être facilement adapté pour effectuer l'écriture. Vous pouvez également utiliser l'outil pour vider le fichier Boot####
y BootOrder
variables d'un ordinateur de test pour se faire une idée de ce qui Driver####
y DriverOrder
devrait ressembler. Sur la plupart des ordinateurs, aucun pilote UEFI tiers n'est installé sur une partition système EFI. Driver####
y DriverOrder
Les variables seraient vides.
P.S. Cette question est plus appropriée à stackoverflow qu'à superuser. De même, votre question sur un drapeau pour votre pilote mérite un post séparé.
0 votes
Avez-vous lu le Guide des rédacteurs de pilotes UEFI ?
0 votes
@fpmurhpy Désolé pour la réponse tardive, j'ai vu qu'il y avait trois options dont l'une était décrite : Partition système EFI ( lien ) Il y a deux "étapes" : 1. Copier le pilote sur le stockage UEFI. Comment puis-je transférer le pilote sur le PC ? Est-ce que cela doit être une autre application UEFI ? Peut-être que je peux créer une image UEFI et injecter ce pilote en utilisant Windows d'une manière ou d'une autre ? 2. Mettre à jour le Driver#### et DriverOrder Cela peut-il être fait par mon propre pilote en utilisant le protocole UEFI Shell ?