Почему при отключении «Безопасной загрузки» применяется политика при установке сторонних модулей

При установке 16.04 меня попросили отключить « Безопасную загрузку », если я захочу установить сторонние модули / драйверы .

Я не подчинялся.

И когда я установил вручную только сторонние драйверы, которые я использую ( bcmwl-kernel-source ), меня снова попросили (во время установки пакета) отключить «Безопасную загрузку».

Использование bcmwl-kernel-source было совершенно нормально с помощью Secure Boot в 15.10 . Кажется, это не связано с ошибкой.

Так что это похоже на то, что Ubuntu отказывается подписывать больше сторонних драйверов / модулей, чтобы заставить его работать (??) с помощью «Безопасной загрузки». Или, похоже, рассматривать сторонние модули как небезопасные и взломать «Безопасную загрузку», следовательно, заражать, чтобы отключить ее, чтобы она понятна? Я прав ?

Это не ошибка, это особенность.

Как говорит Энтони Вонг, когда вы устанавливаете пакет DKMS, вы сами компилируете пакет, поэтому Canonical не может подписать модуль для вас.

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

По умолчанию на вашем компьютере UEFI есть ключ платформы (PK), который является доверенным центром сертификации для загрузки кода в вашем процессоре.

GRUB или прокладка или другие механизмы загрузки могут быть подписаны цифровой подписью KEK, которым доверяет корневой ЦС (ПК), и, таким образом, ваш компьютер может без какой-либо конфигурации загружать программное обеспечение, такое как Ubuntu Live USB / DVD.

На Ubuntu 16.04 ядро ​​построено с CONFIG_MODULE_SIG_FORCE = 1, что означает, что ядро будет принудительно применять модули, которые будут подписаны доверенным ключом на платформе. Примите во внимание, что платформа UEFI по умолчанию содержит ПК, в которой у вас нет никакого контроля, и, следовательно, вы не можете подписывать двоичные файлы с ключом, распознанным вашей собственной машиной.

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

Если ваша система загрузки использует прокладку, вы можете использовать что-то, называемое базой данных ключа владельца машины, и зарегистрировать свой ключ как MOK (вы можете сделать это с помощью mokutil). Если вы этого не сделаете, вы также можете зарегистрировать свой ключ в базе данных UEFI в качестве ключа подписи.

После того, как вы зарегистрируете свой ключ, вы можете подписать свой DKMS-пакет с вашим MOK (должен быть скрипт perl в /usr/src/kernels/$(uname -r)/scripts/sign-file ), а после этого подписанный, вы можете загрузить его в ядро .

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

Короче говоря, это не ошибка, а новое изменение, внесенное в 16.04.

Потому что то, что вы устанавливаете, является пакетом dkms. Модули DKMS скомпилированы на вашей собственной машине, поэтому Canonical не может подписать модуль для вас. Если Canonical не может его подписать, нет возможности проверить его в цифровом виде. Если вы включили безопасную загрузку, это означает, что ваш модуль не может быть использован, и для его использования вам придется отключить безопасную загрузку, поэтому вас задает вопрос.

Почему это происходит только в 16.04, но не в предыдущих выпусках, Род Смит дал хороший ответ. В Ubuntu 16.04 Ubuntu начинает обеспечивать безопасную загрузку на уровне ядра. До 16.04 Ubuntu на самом деле не принуждает вас использовать подписанные ядра и подписанные модули ядра, даже если вы включили безопасную загрузку. Но это уже не так в 16.04.

Это связанная ошибка: https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1401532

Это связанный проект: https://blueprints.launchpad.net/ubuntu/+spec/foundations-x-installing-unsigned-secureboot

Другой способ сделать это – создать свой собственный ключ, вставить открытую часть в базу данных MOK и подписать модули, которые вы компилируете с помощью частной части. Посмотрите здесь подробную информацию: Не удалось загрузить «vboxdrv» после обновления до Ubuntu 16.04 (и я хочу сохранить безопасную загрузку)

Принятый ответ очень полный, но я хотел бы добавить эту простую информацию, взятую отсюда:

https://askubuntu.com/a/843678/664391

В основном безопасная загрузка может помешать вам загрузить некоторый драйвер, который вы установили, что может быть довольно неприятным. Я прошел через это сам: драйвер установлен правильно, все, казалось, было хорошо, но это просто не сработало. Потребовалось некоторое время, чтобы найти, что безопасная загрузка не позволяет ОС загружать ее.