Microsoft Project Mu BaseCore: Your Guide to Understanding and Contributing (2024)
Are you looking to dive into the world of Project Mu BaseCore? This guide breaks down the essentials, from understanding its purpose to contributing to the open-source project. We'll explore the core components, recent changes, and how you can get involved.
What is Project Mu BaseCore?
Project Mu is a modular and open-source UEFI (Unified Extensible Firmware Interface) core. BaseCore is the foundation upon which Project Mu is built. It's designed for modern devices and focuses on security, flexibility, and maintainability. BaseCore provides a reliable and secure platform for device firmware.
- Open Source: Encourages community contributions and transparency.
- Modular: Allows for customization and integration with various hardware platforms.
- Secure: Incorporates security best practices to protect against threats.
Key Components & Packages Explained
The BaseCore repository is structured into several key packages and directories. Understanding these will help you navigate and contribute effectively.
- MdePkg: The core UEFI package containing essential definitions and protocols.
- CryptoPkg: Provides cryptographic services for secure boot and other security features.
- NetworkPkg: Enables network functionality within the UEFI environment.
- ShellPkg: Offers a shell environment for debugging and interacting with the firmware.
- Docs: Contains documentation related to the project.
Recent Updates and Breaking Changes (release/202311): Stay Informed
The release/202311
branch reflects ongoing development. It's essential to understand recent changes, especially any that might break compatibility.
Here's a summary of the recent changes:
- BPDT Installation: The BPDT (Boot Performance Data Table) is now installed in the configuration table.
- Granular Variable Policy: More specific variable policy querying has been added.
- AP Initialization: The system now waits for all Application Processors (APs) before completing initialization.
- MbedTLS Integration: The MbedTLS library has been integrated into the crypto library.
- AP Waking Vector Removal: The AP waking vector has been removed from ResetVector and SecCore logic.
Potential breaking changes are under development and should be carefully reviewed when contributing. Always check the official documentation for the most up-to-date information.
Build and Test Status: Ensuring Reliability
Project Mu BaseCore emphasizes continuous integration and testing. Build and test statuses are available for different host types and toolchains:
- Windows (VS2022): Check the WindowsCiBuild, WindowsCiTest, and WindowsCiCoverage statuses.
- Ubuntu (GCC5): Monitor the UbuntuCiBuild, UbuntuCiTest, and UbuntuCiCoverage statuses.
These status badges provide transparency and assurance regarding the project's stability. Aim for passing builds and tests when contributing your own code.
Contributing to Project Mu BaseCore: Make a Difference
Want to get involved? Contributions are highly encouraged! Before you start, review the Project Mu contributing guidelines:
- Report Issues: Use the Project Mu GitHub tracker to report bugs or suggest enhancements.
- Follow the Code of Conduct: Adhere to the Microsoft Open Source Code of Conduct.
- Read the Contributing Guide: Visit https://microsoft.github.io/mu/How/contributing/
Your contributions can help improve the security, stability, and features of Project Mu BaseCore!
Understanding the License: BSD-2-Clause-Patent
Project Mu BaseCore is licensed under the BSD-2-Clause-Patent license. This permissive license allows for redistribution and modification, subject to certain conditions. Make sure you understand the terms before using or contributing to the project. Key aspects include retaining copyright notices and disclaimers.