Подписание модуля в Советах Non-UEFI

Я нахожусь на Ubuntu 16.04 с 4.4.0-57 ядрами, и я хочу установить самодельный модуль. BIOS является не UEFI BIOS (Kontron 986LCD-M/mITX).

Я пытался подписать модуль путем выполнения этой процедуры, но результата шага 3 (sudo mokutil --import MOK.der) EFI variables are not supported on this system.

Я пытался следовать этому рецепту, но я не могу найти открытые ключи.

Как я могу войти в систему модуль не плата UEFI?

====================================================

Обновление 1: Это, кажется, сказка, что только модули, работающие с BIOS UEFI, должны использовать подписанные модули под 16,04:

I use as grub option: `GRUB_CMDLINE_LINUX=" acpi_enforce_resources=lax"`. 

I get the error `module verification failed: signature and/or required key missing - tainting kernel` in dmesg if I try to load a module via modprobe.

`sudo mokutil --disable-validation` returns the error `EFI variables are not supported on this system`

================ Обновите 1 ===================================================

Я сожалею, но этот оператор является неправильным:

Процедура, к которой Вы обращаетесь, описывает проверку Защищенной загрузки отключения, не подписывая модули. Нет никакой потребности подписать модули ядра в non-UEFI системах, так как Защищенная загрузка является исключительно функцией UEFI.

Ядро должно работать таким образом, оно не делает. Я испытываю его, потому что я всегда получаю сообщение об ошибке, которое я получаю error module verification failed: signature and/or required key missing - tainting kernel в dmesg и ядре не загружается.

================ Обновите 2 ===================================================, Как может я устанавливать контейнер на не uefi материнская плата:

# aptitude search shim
p   grub-splashimages                                   - a collection of great GRUB splashimages
p   grub2-splashimages                                  - a collection of great GRUB2 splashimages
p   libjs-es5-shim                                      - ECMAScript 5 compat. shims for old JavaScript engines (library
p   libjs-es6-shim                                      - ECMAScript 6 compat. shims for legacy JavaScript engines (libr
p   node-es5-shim                                       - ECMAScript 5 compat. shims for old JavaScript engines (Node.js
p   node-es6-shim                                       - ECMAScript 6 compat. shims for legacy JavaScript engines (Node
p   olpc-kbdshim                                        - Dienst zur OLPC-XO-Tastaturunterstützung
v   olpc-kbdshim-common                                 -
v   olpc-kdbshim-hal                                    -
p   ruby-launchy-shim                                   - helper class for launching a web browser
p   shimmer-themes                                      - Gtk+ themes from Shimmer Project
p   shimmer-wallpapers                                  - Wallpapers from Shimmer Project
p   systemd-shim                                        - shim für systemd
p   yoshimi                                             - Software-Synthesizer, basiert auf ZynAddSubFX
p   yoshimi-data                                        - Voreinstellungen für Yoshimi

systemd-shim корректный? Я полагаю, что это не будет работать, потому что это - non-uefi МБ...

1
задан 13 April 2017 в 05:23

2 ответа

Это - огромная ошибка в Ubuntu. mokutil и MokManager может только подписать Ваши собственные модули, если у Вас есть МБ, которые поддерживают uefi. Более старый МБ в соответствии с Ubuntu 16.04, которые не поддерживают uefi, не может подписать модули с mokutil и MokManager. Вы будете всегда получать отвечание как EFI variables are not supported on this system или подобный.

Утверждается, что подписание просто включено ядром для uefi МБ. Я сожалею, но это неправильно. Это также показывают, например, ими параметр ядра:

CONFIG_MODULE_SIG=y
CONFIG_MODULE_SIG_ALL=y
CONFIG_MODULE_SIG_UEFI=y
CONFIG_MODULE_SIG_SHA512=y
CONFIG_MODULE_SIG_HASH="sha512"
CONFIG_EFI_SECURE_BOOT_SIG_ENFORCE=y
CONFIG_MODULE_SIG_KEY="certs/signing_key.pem"
CONFIG_CHECK_SIGNATURE=y
CONFIG_SIGNATURE=y

Как я сказал, это - параметр ядра для не uefi МБ, которые не имеют смысла, особенно CONFIG_MODULE_SIG_UEFI=y.

Необходимо перекомпилировать ядро и выключить опции подписания. Они могут быть найдены grep -v ^# /boot/config-$(uname -r) | grep _SIG. Особенно CONFIG_MODULE_SIG и CONFIG_MODULE_SIG_ALL должен быть установлен на n. Однако это имеет ясный недостаток, потому что необходимо приостановить обновление ядра, и необходимо будет перекомпилировать каждое новое ядро. Это печально.

0
ответ дан 7 November 2019 в 04:51

Процедура, к которой Вы обращаетесь, описывает проверку Защищенной загрузки отключения, не подписывая модули. Нет никакой потребности подписать модули ядра в non-UEFI системах, так как Защищенная загрузка является исключительно функцией UEFI.

Тем не менее, если Вы действительно хотели подписать модули ядра в non-UEFI системе, Вы должны смочь сделать так. (Я не попробовал его, но AFAIK, все инструменты являются инструментами пространства пользователя Linux, которые не полагаются на Защищенную загрузку, являющуюся доступным или активным.) Вы могли бы сделать это, если бы Вы хотели создать пакет с модулями со знаком для установки в других системах. Обратите внимание, что необходимо будет установить собственное, включает целевые системы, которые могут быть утомительными; посмотрите ниже для указателей. Подписать модули ядра:

  1. Создают ряд ключей подписи. Это - сложная задача. Я рекомендую читать моя страница на Защищенной загрузке для получения информации о создании ключей подписи.
  2. Располагаются sign-file двоичный файл. Этот двоичный файл обычно не устанавливается, где двоичные файлы Linux установлены; вместо этого, это идет с заголовками ядрa. Команда find /usr/src/ -name sign-file должна определить местоположение его, если это установлено в Вашей системе. Если эта команда ничего не возвращает, необходимо установить пакет заголовков ядрa.
  3. Знак двоичный файл с командой как /path/to/sign-file sha256 /key/path/your.key /key/path/your.cer /path/to/module/module.ko

На данном этапе двоичный файл module.ko будет подписан с Вашим ключом (your.key и your.cer). Чтобы использоваться, Ваш ключ должен быть зарегистрирован в целевой системе, по-видимому, в списке MOK. Чтобы сделать это, необходимо установить его с MokManager.efi, как детализировано на моя страница Secure Boot.

я хотел бы подчеркнуть снова, тем не менее, что подписание модулей ядра не необходимо за исключением систем, которые загружаются в режиме UEFI с активной Защищенной загрузкой - и даже затем, это необходимо только для сторонних или локально скомпилированных модулей ядра, таково как коммерческие видеодрайверы или модули ядра VirtualBox. Большинство модулей ядра, которым предоставляют ядро Ubuntu, уже подписывается с тем же Каноническим ключом, это используется для подписания GRUB и основного файла ядра Ubuntu.

-1
ответ дан 7 November 2019 в 04:51

Другие вопросы по тегам:

Похожие вопросы: