3 votes

Comment ajouter/installer le pilote UEFI

J'ai écrit mon propre pilote UEFI en utilisant EDK2 de tianocore. Je veux qu'il soit exécuté à chaque fois qu'un système d'exploitation est chargé. Dois-je modifier le bootmgfw.efi ? Comment passer le contrôle à mon BootCheck.efi et seulement après avoir exécuté le chargement de Windows ?

Une autre question, comment puis-je ajouter un drapeau, que je peux utiliser dans mon pilote ? J'ai besoin qu'il soit défini sur 0 au premier lancement, puis 1 dans les bottes suivantes.

J'apprécierais un guide étape par étape ou toute information utile, merci.

@Edit : Si c'est possible, je préférerais qu'il soit installé par pendrive ou disque.

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 ?

2voto

wmjdgla Points 31

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

Juste pour info, la partition EFI n'est plus accessible en écriture sous Windows 10... Le seul moyen que je connaisse pour éventuellement L'écriture sur la partition se fait au cours du processus d'installation de Windows, dans l'interface WinPE ou Specialize. passer .

0 votes

@JW0914 pouvez-vous vérifier cela ? Je suis capable de créer un répertoire et d'y copier un fichier sous Win10 1903. Peut-être faites-vous référence à la partition de récupération qui abrite les fichiers de la base de données. Environnement de récupération Windows ?

0 votes

Je suis capable de monter le mien, mais il n'est pas accessible par l'interface graphique. Après quelques expériences, je peux cd et transférer des fichiers via cli, mais il reste inaccessible à l'interface graphique. En essayant de l'ouvrir dans l'Explorateur, on m'avertit que je n'ai pas l'autorisation d'y accéder, et en sélectionnant Continuer, on obtient une erreur de refus d'autorisation alors que je me suis donné des autorisations par l'intermédiaire de icacls . L'onglet Sécurité est également absent des propriétés et grisé dans le menu contextuel du lecteur.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X