Jag ska översätta den här artikeln skriven av James Bottomley , teknisk rådgivare för Linux Foundation , som började sätta ihop en förstartsladdare så att Linux kan starta upp.
Som jag förklarade i mitt tidigare inlägg har vi koden för Linux Foundation pre-bootloader på plats. Det blev dock en fördröjning medan vi fick tillgång till Microsofts signeringssystem.
Det första du behöver göra är att betala avgiften på 99 dollar till Verisign (nu Symantec) och få en Verisign-verifierad nyckel. Vi gjorde detta för Linux Foundation, och allt de vill göra är att ringa huvudkontoret för att verifiera den. Nyckeln returneras via en URL som installeras i din webbläsare, men vanliga Linux SSL-verktyg kan användas för att extrahera den och skapa ett vanligt PEM-certifikat och en nyckel. Det har ingenting att göra med UEFI-signering, men det används för att validera för Microsofts sysdev- system att du är den du utger dig för att vara. Innan du kan skapa ett sysdev-konto måste du testa det genom att signera en körbar fil som de tillhandahåller och ladda upp den . De har strikta krav på att du signerar det på en specifik Windows-plattform, men sbsign fungerade åtminstone, och bingo, vårt konto skapades.
När du väl skapat ett konto kan du fortfarande inte ladda upp UEFI-binärfiler för signering utan att först skriva under ett papperskontrakt . Avtalen är mycket betungande, inklusive många undantagna licenser (inklusive alla GPL:er för drivrutiner, men inte för bootloaders). Det mest betungande är att avtalen verkar sträcka sig bortom de UEFI-objekt du signerar . Linux Foundations jurister drog slutsatsen att det i stort sett är ofarligt för LF eftersom vi inte säljer produkter, men det kan vara oacceptabelt för andra företag. Enligt Matthew Garrett är Microsoft villigt att förhandla fram specialavtal med distributioner för att mildra några av dessa problem.
När avtalen är undertecknade börjar det riktiga tekniska kulet . Du kan inte bara ladda upp en UEFI-binärfil och förvänta dig att den ska signeras. Först måste du slå in den i en .cab-fil . Som tur är finns det ett öppen källkodsprojekt som kan skapa kabinettfiler som heter lcab. Sedan måste du signera .cab-filen med Verisign-nyckeln . Återigen finns det ett annat öppen källkodsprojekt som kan göra det: osslsigncode. För alla som behöver dessa verktyg finns de tillgängliga i mitt openSUSE UEFI Build Service-arkiv. Det sista hindret är att uppladdning av filen kräver Silverlight . Tyvärr verkar inte Moonlight fungera, och även med förhandsvisningen av version 4 blir uppladdningsrutan tom, så det är dags att använda Windows 7 under en KVM (kärnebaserad virtuell maskin). När du kommer till den delen måste du också intyga att binärfilen "som ska signeras inte får vara licensierad under GPLv3 eller liknande öppen källkodslicenser ". Jag antar att det beror på rädsla för att nyckeln ska avslöjas, men det är inte alls tydligt (detsamma gäller för "liknande licenser med öppen källkod").
När uppladdningen är klar går kabinettfilen igenom sju steg. Tyvärr fastnade den första testuppladdningen i steg 6 (filsigneringssteget). Efter sex dagar mailade jag Microsofts support och frågade vad som hände. Svaret: "Felkoden som returnerades av signeringsprocessen är att din fil inte är ett giltigt Win32-program . Är det ett giltigt Win32-program?" Svaret: uppenbarligen inte, det är en giltig 64-bitars UEFI-binärfil. Det fanns inga ytterligare svar ...
Jag försökte igen. Den här gången fick jag ett e-postmeddelande om nedladdning av den signerade filen, men instrumentpanelen sa att signeringen misslyckades . Jag laddade ner och verifierade den. Binärfilen fungerar på Secure Boot-plattformen och är signerad med nyckeln.
subject = / C = US / ST = Washington / L = Redmond / O = Microsoft Corporation / OU = MOPR / CN = Microsoft Windows UEFI Driver Publisher
emittent = / C = US / ST = Washington / L = Redmond / O = Microsoft Corporation / CN = Microsoft Corporation UEFI CA 2011Jag frågade supporten varför processen indikerade ett fel, men jag hade en giltig nedladdning. Efter en mängd e-postmeddelanden svarade de: "Använd inte den filen; den var felaktigt signerad . Jag återkommer till dig." Jag är fortfarande inte säker på vad problemet är, men om du tittar på signeringsnyckelns ämne finns det inget i nyckeln som indikerar Linux Foundation . Därför misstänker jag att problemet är att binärfilen är signerad med en generisk Microsoft-nyckel istället för en specifik (och återkallelig) nyckel länkad till Linux Foundation.
Detta är dock statusen: Vi kommer att fortsätta vänta på att Microsoft ger Linux Foundation en signerad och validerad pre-bootloader. När det händer laddas det upp till Linux Foundation-webbplatsen för alla att använda.
Källa: http://blog.hansenpartnership.com/adventures-in-microsoft-uefi-signing/
Dra dina slutsatser, men detta kommer att ta tid.