https://github.com/jakeday/linux-surface/blob/master/SIGNING.md має більш конкретні вказівки щодо підписання ядра (адаптовані з того самого підручника, який пов’язаний у прийнятій відповіді). Інструкції відтворені в повному обсязі наступним чином:
Підписання спеціального ядра для безпечного завантаження
Інструкції призначені для ubuntu, але повинні працювати аналогічно для інших дистрибутивів, якщо вони використовують shim і grub як завантажувач. Якщо ваш дистрибутив не використовує shim (наприклад, Linux Foundation Preloader), слід виконати подібні кроки для завершення підписання (наприклад, HashTool замість MokUtil для LF Preloader) або ви можете встановити shim для використання. Пакет ubuntu для shim називається shim-signed
, але повідомте про те, як його правильно встановити, щоб ви не зіпсували завантажувач.
Оскільки найновіше оновлення GRUB2 (2.02 + dfsg1-5ubuntu1) в Ubuntu, GRUB2 більше не завантажує непідписані ядра, якщо ввімкнено безпечну завантаження. Користувачі Ubuntu 18.04 будуть повідомлені під час оновлення пакету grub-efi, що це ядро не підписане і оновлення буде перервано.
Таким чином, у вас є три варіанти вирішення цієї проблеми:
- Ви підписуєте ядро самостійно.
- Ви використовуєте підписане, загальне ядро вашого дистрибутива.
- Ви відключите безпечну завантаження.
Оскільки параметри два та три насправді не є життєздатними, це кроки, щоб самостійно підписати ядро.
Інструкції, адаптовані з блогу Ubuntu . Перш ніж слід, скопіюйте резервну копію каталогу / boot / EFI, щоб ви могли відновити все. Виконайте ці дії на власний ризик.
- Створіть конфігурацію для створення ключа підпису, збережіть як mokconfig.cnf:
# This definition stops the following lines failing if HOME isn't
# defined.
HOME = .
RANDFILE = $ENV::HOME/.rnd
[ req ]
distinguished_name = req_distinguished_name
x509_extensions = v3
string_mask = utf8only
prompt = no
[ req_distinguished_name ]
countryName = <YOURcountrycode>
stateOrProvinceName = <YOURstate>
localityName = <YOURcity>
0.organizationName = <YOURorganization>
commonName = Secure Boot Signing Key
emailAddress = <YOURemail>
[ v3 ]
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints = critical,CA:FALSE
extendedKeyUsage = codeSigning,1.3.6.1.4.1.311.10.3.6
nsComment = "OpenSSL Generated Certificate"
Відрегулюйте всі деталі з вашими деталями.
- Створіть відкритий та приватний ключ для підписання ядра:
openssl req -config ./mokconfig.cnf \
-new -x509 -newkey rsa:2048 \
-nodes -days 36500 -outform DER \
-keyout "MOK.priv" \
-out "MOK.der"
- Перетворіть ключ також у формат PEM (mokutil потребує DER, підписка потребує PEM):
openssl x509 -in MOK.der -inform DER -outform PEM -out MOK.pem
- Зареєструйте ключ до вашої інсталяції shim:
sudo mokutil --import MOK.der
Вам буде запропоновано пароль, ви будете просто використовувати його для підтвердження вибору ключа на наступному кроці, тому виберіть будь-який.
Перезавантажте систему. Ви побачите синій екран інструменту під назвою MOKManager. Виберіть "Зареєструвати MOK", а потім "Переглянути клавішу". Переконайтеся, що це ваш ключ, який ви створили на кроці 2. Після цього продовжуйте процес, і ви повинні ввести пароль, який ви вказали на кроці 4. Продовжуйте завантажувати систему.
Переконайтесь, що ваш ключ зареєстровано за допомогою:
sudo mokutil --list-enrolled
- Підпишіть встановлене ядро (воно повинно бути на / boot / vmlinuz- [KERNEL-VERSION] -surface-linux-surface):
sudo sbsign --key MOK.priv --cert MOK.pem /boot/vmlinuz-[KERNEL-VERSION]-surface-linux-surface --output /boot/vmlinuz-[KERNEL-VERSION]-surface-linux-surface.signed
- Скопіюйте initram непідписаного ядра, таким чином, у нас також є initram для підписаного.
sudo cp /boot/initrd.img-[KERNEL-VERSION]-surface-linux-surface{,.signed}
- Оновіть свою grub-config
sudo update-grub
- Перезавантажте систему та виберіть підписане ядро. Якщо завантаження працює, ви можете видалити неподписане ядро:
sudo mv /boot/vmlinuz-[KERNEL-VERSION]-surface-linux-surface{.signed,}
sudo mv /boot/initrd.img-[KERNEL-VERSION]-surface-linux-surface{.signed,}
sudo update-grub
Тепер ваша система повинна працювати під підписаним ядром, і оновлення GRUB2 працює знову. Якщо ви хочете оновити користувальницьке ядро, ви можете легко підписати нову версію, виконуючи вищезазначені кроки ще з кроку сьомого. Таким чином, РЕКЛАМУЙТЕ клавіші MOK (MOK.der, MOK.pem, MOK.priv).