[personal profile] mjg59
I'm pleased to say that a usable version of shim is now available for download. As I discussed here, this is intended for distributions that want to support secure boot but don't want to deal with Microsoft. To use it, rename shim.efi to bootx64.efi and put it in /EFI/BOOT on your UEFI install media. Drop MokManager.efi in there as well. Finally, make sure your bootloader binary is called grubx64.efi and put it in the same directory.

Now generate a certificate and put the public half as a binary DER file somewhere on your install media. On boot, the end-user will be prompted with a 10-second countdown and a menu. Choose "Enroll key from disk" and then browse the filesystem to select the key and follow the enrolment prompts. Any bootloader signed with that key will then be trusted by shim, so you probably want to make sure that your grubx64.efi image is signed with it.

If you want, you're then free to impose any level of additional signing restrictions - it's entirely possible to use this signing as the basis of a complete chain of trust, including kernel lockdowns and signed module loading. However, since the end-user has explicitly indicated that they trust your code, you're under no obligation to do so. You should make it clear to your users what level of trust they'll be able to place in their system after installing your key, if only to allow them to make an informed decision about whether they want to or not.

This binary does not contain any built-in distribution certificates. It does contain a certificate that was generated at build time and used to sign MokManager - you'll need to accept my assurance that the private key was deleted immediately after the build was completed. Other than that, it will only trust any keys that are either present in the system db or installed by the end user.

A couple of final notes: As of 17:00 EST today, I am officially (rather than merely effectively) no longer employed by Red Hat, and this binary is being provided by me rather than them, so don't ask them questions about it. Special thanks to everyone at Suse who came up with the MOK concept and did most of the implementation work - without them, this would have been impossible. Thanks also to Peter Jones for his work on debugging and writing a signing tool, and everyone else at Red Hat who contributed valuable review feedback.
Page 2 of 2 << [1] [2] >>
From: (Anonymous)
hello ;p

first off, i sincerely want to thank you so much for spending $99 and developing such an application in order to thwart microsoft's disabled mental ability/retardedness it has caught up these days.

anyways, you get my gist.

what im trying to do is that im trying to integrate this with hackintosh bootloader from here:


with the ISO 906.

Any help is appreciated. if this can be done, then secure-boot better secure-its-anal-virginity cuz we won't leave any b**ches left behind.

thanks for reading. im definitely looking forward to Microsoft's bitching and lawsuit... crap we better get ready *shurg*
From: (Anonymous)
mhm i follow u... just one part i don't get:

when u say signing key, do you mean a x.509 certificate.. or?

Re: Tutorial please? id be infinitely grateful for it.

From: (Anonymous) - Date: 2012-12-05 11:33 pm (UTC) - Expand

Date: 2012-12-09 07:01 pm (UTC)
From: (Anonymous)
Would GPG be a sufficient signing tool to use? The relevant Fedora wiki article mentioned OpenSSL but GPG has the ability to make x509 certificates.

...Perhaps I just answered my question.

Date: 2012-12-10 12:02 am (UTC)
From: (Anonymous)
My bootloader boots fine, but when I it tries to load vmlinuz it says access denied.

I've signed both the bootloader and vmlinuz with the exact same certificate and the same tool, and enroled the key to the database. What's going on?

Date: 2012-12-10 12:04 am (UTC)
From: (Anonymous)
I'm using Gummiboot for my bootmanager, by the way.

(no subject)

From: (Anonymous) - Date: 2012-12-10 02:53 am (UTC) - Expand

(no subject)

From: (Anonymous) - Date: 2012-12-10 04:20 am (UTC) - Expand

(no subject)

From: (Anonymous) - Date: 2012-12-10 04:08 pm (UTC) - Expand

(no subject)

From: (Anonymous) - Date: 2012-12-10 06:37 pm (UTC) - Expand

(no subject)

From: (Anonymous) - Date: 2012-12-10 02:58 am (UTC) - Expand

Date: 2012-12-10 02:59 am (UTC)
From: (Anonymous)
There's a bug in shim that prevents it from loading a Linux kernel; it's a bit too strict in its checks for relocation information. The Linux kernel lacks EFI stub relocation information but loads just fine if the bulk of the relocation function is skipped. (This is what an actual EFI implementation does if the kernel is signed with a regular Secure Boot key.) Also, any post-shim boot manager that uses standard EFI calls to launch a boot loader must call back to shim and jump through some extra hoops, since the standard EFI calls don't "talk" to shim themselves. AFAIK, gummiboot doesn't yet do this. My own rEFInd (http://www.rodsbooks.com/refind/) does, as of version 0.5.0.

Date: 2012-12-10 03:02 am (UTC)
From: (Anonymous)
I was about to hunt down your boot manager, as a matter of fact. I don't mean this in a bad way (because I really do appreciate your work) but you do advertise yourself quite often. ;)

Date: 2012-12-10 03:10 am (UTC)
From: (Anonymous)
To expand on this, here's a patch that fixes the problem with shim being unable to load a Linux kernel:


FWIW, I "borrowed" a few shim functions for rEFInd 0.5.0, and I incorporated this patch in my version of relocate_coff(). Feel free to use it in future versions of shim.


Date: 2012-12-31 07:05 pm (UTC)
From: (Anonymous)
Why cant the hardware manufactuers instigate a procedure so that the enduser can sign their own implementation of EFI, and so boot whatever OS they desire. surely this would then take this whole debacle out of certain proprietary companies hands?

The Business Model Drives The Complex

Date: 2013-01-09 01:40 pm (UTC)
From: (Anonymous)
Decades ago before any of this happened I saw it on some PBS show on TV. A man being interviewed said that vendors would offer the hardware for (nearly?) free expecting to make it up selling software.

SONY PS2 is the classic case. SONY PS2 had a very powerful GPU which could be used in clusters to build supercomputers. SONY sold the PS2 at a fraction of what it cost them because they expected to recoup by selling games. They did not anticipate very large numbers of PS2s being purchased to run Linux in clusters. The losses were so bad they tried to renege on letting PS2 run Linux by putting out a software update the turned off the ability. I could see not offering new PS2s with the Linux option but do you really think that you could turn a datacenter cluster into kids buying games by shutting off the Linux option? Did they really think they could undo the lost game sales that way?

Fast-forward and Microsoft is trying to avoid the hole in the "free hardware recouped by paid software" business model by restricting the hardware to just their software in the case of their ARM tablets the where the "secure" boot can't be turned off.

The business model works because people will sell their freedom for $10 discount on a tablet especially when most of them don't understand what they are doing.

how to put it in the /EFI/BOOT?

Date: 2013-02-17 01:12 am (UTC)
From: (Anonymous)
Hey, I think this fix will finally help me install Ubuntu in a new machine...my question is how can I "put it in /EFI/BOOT on your UEFI install media"

Trying to create public certificate in Windows 8

Date: 2013-02-19 04:57 pm (UTC)
From: [personal profile] inthiyan

How do i create public certificate (DER file) in Windows 8? Please help!!!


Date: 2013-07-12 03:01 am (UTC)
From: (Anonymous)
How to use it with syslinux? Possible? Could you please give simple instruction for non-technical people?

IPv6 support by shim bootloader

Date: 2013-07-16 03:21 pm (UTC)
From: (Anonymous)
My name is Sergey Dremin, serega7@gmail.com(preferred), sergey.dremin@hp.com I'm an HP employee, and I'm working on pxe boot of suse over IPv6. Shim code can not extract the URL of the boot server from the image hangle I put together. I'm trying to recompile the shim code right now to insert some more debug. If you do not mind, can you tell me if you actually tested this on IPv6? If not, then I would point to a problem in the shim code itself, if yes, then it is something in our PXE boot code. I will definately share with you what I find.

Surface Pro

Date: 2013-09-11 02:01 am (UTC)
From: (Anonymous)
Apparently MS Locked the Surface Pro with a different key so shim can't be used on it.

change to policy...

Date: 2014-01-30 10:47 pm (UTC)
From: (Anonymous)

what is GRUB2 being SecureBoot enlightened ? Is that the shim patch for it?


Date: 2014-08-18 08:34 am (UTC)
From: (Anonymous)
MS now links to SHIM on the Windows 8 boot Process webpage. U're official!
From: (Anonymous)
I have not been able to successfully get the shim to call/retrieve the next stage from the PXE server. I don't even see a request for it go through the tcpdumps. Are there compile options I'm missing? Does the default loader option in the Makefile need to be directed somewhere else? Does the shim have access to a tftp device?

What is the best way to debug the shim?

Date: 2015-08-18 11:55 pm (UTC)
From: (Anonymous)
So I was able to build the shim on a Solaris system. However, it looks like the shim is not able to load the signed MokManager. After putting in debugging printf, it looks like the authentication process failed. Does this mean there is an issue with my version of pesign? What is the best way to debug the shim's authentication process?
Page 2 of 2 << [1] [2] >>


Matthew Garrett

About Matthew

Power management, mobile and firmware developer on Linux. Security developer at Google. Ex-biologist. @mjg59 on Twitter. Content here should not be interpreted as the opinion of my employer.

Expand Cut Tags

No cut tags