Customizing BIOS/UEFI From OS Using EFI Variables
Waldén, Arttu (2023)
Waldén, Arttu
2023
All rights reserved. This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2023112030129
https://urn.fi/URN:NBN:fi:amk-2023112030129
Tiivistelmä
BIOS/UEFI firmware serves as the backbone for system initialization and configuration, but it often lacks the flexibility to be dynamically customized once the operating system is running. Traditional means of accessing and modifying these settings often require a reboot and direct interaction with firmware interfaces, which is not very convenient. In the scope of a new device development project, an opportunity arose to implement a more user-friendly approach to BIOS customization.
The primary objective of this thesis was to enable BIOS/UEFI customization from within the OS. This involved altering the BIOS code to read EFI variables and creating a Windows application to set these variables. Data structure known as the Type-Length-Value (TLV) format was used to make data handling more efficient.
The thesis focused on creating BIOS customization through software changes to the existing BIOS codebase. The BIOS was extended with additional code, primarily written in C, to read EFI variables set by the operating system. A Windows application was also developed, utilizing the Type-Length- Value (TLV) data format, which allows for the modification of these EFI variables. The BIOS code was designed to read these variables and implement changes accordingly.
The primary objective of this thesis was to enable BIOS/UEFI customization from within the OS. This involved altering the BIOS code to read EFI variables and creating a Windows application to set these variables. Data structure known as the Type-Length-Value (TLV) format was used to make data handling more efficient.
The thesis focused on creating BIOS customization through software changes to the existing BIOS codebase. The BIOS was extended with additional code, primarily written in C, to read EFI variables set by the operating system. A Windows application was also developed, utilizing the Type-Length- Value (TLV) data format, which allows for the modification of these EFI variables. The BIOS code was designed to read these variables and implement changes accordingly.