Я нахожусь на 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 МБ...
Это - огромная ошибка в 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
. Однако это имеет ясный недостаток, потому что необходимо приостановить обновление ядра, и необходимо будет перекомпилировать каждое новое ядро. Это печально.
Процедура, к которой Вы обращаетесь, описывает проверку Защищенной загрузки отключения, не подписывая модули. Нет никакой потребности подписать модули ядра в non-UEFI системах, так как Защищенная загрузка является исключительно функцией UEFI.
Тем не менее, если Вы действительно хотели подписать модули ядра в non-UEFI системе, Вы должны смочь сделать так. (Я не попробовал его, но AFAIK, все инструменты являются инструментами пространства пользователя Linux, которые не полагаются на Защищенную загрузку, являющуюся доступным или активным.) Вы могли бы сделать это, если бы Вы хотели создать пакет с модулями со знаком для установки в других системах. Обратите внимание, что необходимо будет установить собственное, включает целевые системы, которые могут быть утомительными; посмотрите ниже для указателей. Подписать модули ядра:
sign-file
двоичный файл. Этот двоичный файл обычно не устанавливается, где двоичные файлы Linux установлены; вместо этого, это идет с заголовками ядрa. Команда find /usr/src/ -name sign-file
должна определить местоположение его, если это установлено в Вашей системе. Если эта команда ничего не возвращает, необходимо установить пакет заголовков ядрa. /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.