Rikitav.IO.ExtensibleFirmware.BootService
1.0.0
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
The owner has unlisted this package.
This could mean that the package is deprecated, has security vulnerabilities or shouldn't be used anymore.
dotnet add package Rikitav.IO.ExtensibleFirmware.BootService --version 1.0.0
NuGet\Install-Package Rikitav.IO.ExtensibleFirmware.BootService -Version 1.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Rikitav.IO.ExtensibleFirmware.BootService" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Rikitav.IO.ExtensibleFirmware.BootService" Version="1.0.0" />
<PackageReference Include="Rikitav.IO.ExtensibleFirmware.BootService" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Rikitav.IO.ExtensibleFirmware.BootService --version 1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Rikitav.IO.ExtensibleFirmware.BootService, 1.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Rikitav.IO.ExtensibleFirmware.BootService@1.0.0
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Rikitav.IO.ExtensibleFirmware.BootService&version=1.0.0
#tool nuget:?package=Rikitav.IO.ExtensibleFirmware.BootService&version=1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
ExtensibleFirmware
Description
ExtensibleFirmware is a .NET class library for working with UEFI firmware. It provides tools for editing the boot process, allowing developers to modify and configure boot parameters for enhanced flexibility.
Features
- Getting EFI system partition
- Editing and creating boot entries.
- Editing global variables for firmware.
Installation
# Install via NuGet
Install-Package ExtensibleFirmware
Usage Examples
Example 1: Getting ESP
using Rikitav.IO.ExtensibleFirmware.SystemPartition;
using System.IO;
namespace Examples
{
class Program
{
public static void Main()
{
// Getting 'EFI system partition' volume path
string EspVolumePath = EfiPartition.GetFullPath();
// Example reading config file from ESP using volume path, instead of using MountVol
string configText = File.ReadAllText(Path.Combine(EspVolumePath, "EFI", "Ubuntu", "grub.cfg"));
}
}
}
Example 2: Reading boot option
using Rikitav.IO.ExtensibleFirmware.BootService;
using Rikitav.IO.ExtensibleFirmware.BootService.DevicePathProtocols;
using Rikitav.IO.ExtensibleFirmware.BootService.LoadOption;
using System;
namespace Examples
{
class Program
{
public static void Main()
{
// Reading boot option
FirmwareBootOption bootOption = FirmwareBootService.ReadLoadOption(0x0003); // <-- Set here your variable index
// Enumerating all protocols
foreach (DevicePathProtocolBase protocol in bootOption.OptionProtocols)
Console.WriteLine(protocol.ToString()); // Getting string representation of protocol
}
}
}
Example 3: Creating boot option
using Rikitav.IO.ExtensibleFirmware.BootService;
using Rikitav.IO.ExtensibleFirmware.BootService.DevicePathProtocols;
using Rikitav.IO.ExtensibleFirmware.BootService.LoadOption;
using Rikitav.IO.ExtensibleFirmware.MediaDevicePathProtocols;
using System;
namespace Examples
{
class Program
{
public static void Main()
{
// Setting device path protocols
// This protocols instructions boot service how to load your option
DevicePathProtocolBase[] protocols = new DevicePathProtocolBase[]
{
new HardDriveMediaDevicePath(new Guid("XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX")), // The partition on which the bootloader is located
new FilePathMediaDevicePath("EFI\\MyApplication\\bootx64.efi"), // Path to the EFI application to be loaded
new DevicePathProtocolEnd() // Indicates the end of the boot option. if this is omitted, the option will not be considered valid
};
// Creating simple load option
FirmwareBootOption bootOption = new FirmwareBootOption(LoadOptionAttributes.ACTIVE, "MyLoader", Array.Empty<byte>(), protocols);
// Creating new load option
ushort newLoadOptionIndex = FirmwareBootService.CreateLoadOption(bootOption, true);
// Logging new boot option index
Console.WriteLine("Boot option sucessfully created, new option index : {0}", newLoadOptionIndex);
}
}
}
License
This project is licensed under the GNU GPL License. See LICENSE for details.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.1
- Rikitav.IO.ExtensibleFirmware (>= 1.0.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Rikitav.IO.ExtensibleFirmware.BootService:
| Package | Downloads |
|---|---|
|
Rikitav.IO.ExtensibleFirmware.MediaDevicePathProtocols
C# Library providing convenient abstractions and tools for working with UEFI firmware (United Extensible Firmware Interface) |
GitHub repositories
This package is not used by any popular GitHub repositories.