vmlinuz-4.18.12-041812-generic имеет неверную подпись

15

Я сегодня обновил свое ядро ​​с помощью ukuu, и с тех пор я не могу загрузиться, потому что я получаю следующие ошибки:

error: /boot/vmlinuz-4.18.12-041812-generic has invalid signature
error: you need to load the kernel first

У меня двойная загрузка с windows 10 и ubuntu 18.10 (обновлено сегодня)

Обновление: мне удалось загрузить старое ядро, которое я выбрал из "Расширенные настройки для Ubuntu" в grub

Но мне нужно обновить ядро, и если я это сделаю, у меня все та же проблема ...

Надав Шабтай
источник
У меня возникла та же проблема после обновления прошивки моего Lenovo T480, и я не понимаю, почему старые ядра все еще работают.
user205301

Ответы:

5

Вместо того, чтобы подписывать ядро, о котором идет речь, я просто отключил Secure Boot в меню BIOS / UEFI моего ноутбука.

Обычно вы можете войти в меню, нажав специальную клавишу во время загрузки , вы можете выбрать Google для вашего устройства или она может даже отображаться на экране во время загрузки.

xjcl
источник
Спасибо! Я только что обновил свой BIOS и забыл отключить это!
Лукас Бустаманте
Это работает для меня!
Джонатан
5

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, что это ядро ​​не подписано и обновление будет прервано.

Таким образом, у вас есть три варианта решения этой проблемы:

  1. Вы сами подписываете ядро.
  2. Вы используете подписанное, общее ядро ​​вашего дистрибутива.
  3. Вы отключаете Secure Boot.

Поскольку второй и третий варианты на самом деле не являются жизнеспособными, это шаги для самостоятельной подписи ядра.

Инструкции адаптированы из блога Ubuntu . Прежде чем продолжить, пожалуйста, сделайте резервную копию вашего каталога / boot / EFI, чтобы вы могли восстановить все. Следуйте этим шагам на свой страх и риск.

  1. Создайте конфигурацию для создания ключа подписи, сохраните как 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"

Отрегулируйте все детали в соответствии с вашими данными.

  1. Создайте открытый и закрытый ключ для подписи ядра:
openssl req -config ./mokconfig.cnf \
        -new -x509 -newkey rsa:2048 \
        -nodes -days 36500 -outform DER \
        -keyout "MOK.priv" \
        -out "MOK.der"
  1. Преобразовать ключ также в формат PEM (mokutil нуждается в DER, sbsign нуждается в PEM):
openssl x509 -in MOK.der -inform DER -outform PEM -out MOK.pem
  1. Зарегистрируйте ключ для установки вашей прокладки:
sudo mokutil --import MOK.der

Вам будет предложено ввести пароль, вы просто будете использовать его для подтверждения выбора ключа на следующем шаге, поэтому выберите любой.

  1. Перезагрузите вашу систему. Вы увидите синий экран инструмента под названием MOKManager. Выберите «Регистрация MOK», а затем «Просмотр ключа». Убедитесь, что это ваш ключ, который вы создали на шаге 2. Затем продолжите процесс, и вы должны ввести пароль, который вы указали на шаге 4. Продолжите загрузку вашей системы.

  2. Убедитесь, что ваш ключ зарегистрирован через:

sudo mokutil --list-enrolled
  1. Подпишите ваше установленное ядро ​​(оно должно быть в / 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
  1. Скопируйте initram неподписанного ядра, чтобы у нас также был initram для подписанного.
sudo cp /boot/initrd.img-[KERNEL-VERSION]-surface-linux-surface{,.signed}
  1. Обновите ваш grub-config
sudo update-grub
  1. Перезагрузите систему и выберите подписанное ядро. Если загрузка работает, вы можете удалить неподписанное ядро:
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 снова работает. Если вы хотите обновить собственное ядро, вы можете легко подписать новую версию, выполнив описанные выше действия еще раз, начиная с шага 7. Таким образом РЕЗЕРВНЫЕ МОК-ключи (МОК.дер, МОК.пем, МОК.прив).

prusswan
источник
Отличный ответ, я не смог бы добраться туда только с помощью инструкций Ubuntu
User632716
Отличный ярлык для переименования и перезаписи файлов с постфиксами.
Том
1

Я решил свою проблему, следуя этому руководству, чтобы подписать файл / boot / vmlinuz для безопасной загрузки, просто обратите внимание на последнюю часть руководства

Надав Шабтай
источник
6
Не могли бы вы предоставить подробную информацию о решении этой проблемы? У меня абсолютно та же ошибка, но я не понимаю, что я должен делать согласно упомянутому учебнику.
Слон
Я не помню прямо сейчас, я постараюсь помочь вам позже в этот день, если это все еще актуально
Надав Шабтай
Это актуально и для меня. У меня такая же проблема
Виталий Диравка
Просто нашел это, мне это тоже нужно
Митч Талмадж
1
Похоже, что это «ответ только для ссылки». Пожалуйста, отредактируйте вопрос и предоставьте несколько деталей, чтобы помочь другим пользователям, имеющим такую ​​же проблему. Спасибо!
19