Project Mu is an active project. This is not a side project, mirror, clone, or example. This is the same code usedtoday on many of Microsoft's 1st party devices and it will be kept current because it must be to continue to enableshipping products.
Project Mu: Microsofts UEFI-Firmware
We will use this project to promote, evangelize, and support an industry shift to a more collaborative environmentso that the entire ecosystem can develop and maintain products with lower costs and higher quality.
There are a lot open-source firmware projects.I was trying to understand their relationship.After some research, I drew the above figure.This figure is very x86-centric. Other architecture have other firmwares.
This is a Tianocore maintained project consisting of command line and otherpython tools and extensions for building and maintaining an Edk2 based UEFIfirmware code tree. Part of these tools include "invocables" that can be used tobuild EDK2 Platforms and these tools are known as "stuart". This package'sintent is to provide tools, scripts, and a plugin based environment for usewithin the tools and scripts. This environment has command line interfaces tosupport building a product, building CI, running tests, and downloadingdependencies. This environment also provides the building blocks for developersto write their own tools to launch in the environment and leverage thecapabilities provided by the environment. The unique capabilities provided helpsupport building products with multiple repositories and having each repositorycontribute/plugin to the build process in a scalable way. The environment willscan the files in the code tree (multiple repos) and discover plugins,dependencies, path adjustments, environment variable settings, etc. Thisprovides easy methods for common repositories to share build tools/steps.
Documentation for the most recent release of edk2-pytool-extensions is hosted ontianocore.org/edk2-pytool-extensions]).Raw documentation is located in the docs/ folder and is split into twoseparate categories. The first is located at docs/user/ and isdocumentation and API references for those that are using this package in theirown project. Users can generate a local copy of the documentation by executing thefollowing command from the root of the project:
First package, the EFI Development Kit contains the TianoCore (public part of reference UEFI implementation by Intel) source code, along with many examples and binaries of EFI Shell (we'll talk about this later), all ready to be built with nice make system. It even can be built into a Win32 UEFI emulator for more convinient development and testing, but I won't cover that here. I also won't demonstrate usage of EDK build system in this article. Even though it might be a good idea for real world project, I want to give you bit more insight about what goes "under the hood" here.
Second package, the EFI Toolkit is set of extra UEFI applications like FTP client, Python port, text editor, etc. Strictly speaking, we don't really need this, but it has a set of C headers that is somewhat easier to use than those of EDK (unless you take advantage of EDK build system for your project). However, note that it doesn't contain all headers yet - you will quickly run into this problem if you try some real development with it.
Of course, some things are easier said than done. Microsoft uses a lot of custom hardware in its Surface devices. Yes, you can run a standard Linux kernel, but you're going to want more than that. Luckily for us there's the GitHub-hosted Linux Surface project, which has built a Surface-optimised kernel that's a drop-in replacement for most existing distros.
As you can see, this computer has one PK, one KEK, and three db entries. The PK, KEK, and first db entry were built with my mkkeys.sh script using the name Ringworld 2015-2-17. The second db entry is the public key associated with my rEFInd project, and the third is Canonical's public key. Although several of my computers have MOKs, they haven't shown up in efi-readvar output for me.
Coreboot code was first introduced in 1999, and the community-based development project's supporters include Google, whose Chromebook devices replaced BIOS with Coreboot since the first generation. Coreboot's market penetration has been slow, however, due to the work it entails on the part of manufacturers. Since Coreboot initializes only Bare metal, device makers need to make the effort to port the code for integration in chips and motherboards. 2ff7e9595c
Comments