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


46

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

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

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

Использовать bcmwl-kernel-source было совершенно нормально с Secure Boot в 15.10 . Это не связано с ошибкой для меня.

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


6
Ну, IMO, это потому, что люди (ложно) предполагают, что безопасная загрузка сломает сторонние модули, давая советы. Техническая информация о безопасной загрузке находится здесь - wiki.ubuntu.com/SecurityTeam/SecureBoot . Лично я не согласен с кажущимся вездесущим советом отключить безопасную загрузку, он прекрасно работает на моем оборудовании с включенной безопасной загрузкой. IMO оставьте безопасную загрузку включенной, если у вас нет проблем с ней, нет причин слепо отключать функции безопасности.
Пантера

8
Я не стал вдаваться в подробности, но, насколько я понимаю, 16.04 переходит к более строгому применению безопасной загрузки, чем 15.10 и более ранние версии. В частности, в 15.10 и ранее, когда запускает Shim GRUB, GRUB запустит любое ядро Linux; Защитные защитные чехлы заканчиваются GRUB. Насколько я понимаю, с 16.04 принудительное применение политики безопасной загрузки распространяется на ядро, поэтому GRUB в Ubuntu больше не будет запускать неподписанные ядра. Если это выходит за рамки этого, то неподписанные модули ядра также будут затронуты, когда они не были раньше. Опять же, я не изучал это подробно.
Род Смит

1
Немного хорошего фона: bugs.launchpad.net/ubuntu/+source/grub2/+bug/1401532
дпб

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

Есть ли возможность включить его после выключения?
Шонакде

Ответы:


38

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

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

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

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

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

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

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

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

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

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

Вы можете обратиться к этому объяснению о том, как подписывать свои собственные модули ядра: https://askubuntu.com/a/768310/12049


1
Я отключил его, и теперь я получаю раздражающее сообщение «загрузка в небезопасном режиме». Есть ли способ отменить это? Я не могу даже объяснить эту проблему на форумах здесь. @ssice - я использую UBUNTU 14.04, поэтому я не думаю, что это даже относится ко мне. [
Шонакде

20

Короче говоря, это не ошибка, а новое изменение, появившееся в 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-install-unsigned-secureboot


Я все еще мог загрузить модуль wl с 16.04 beta2 и после обновления. Но теперь с выпуском я получил ошибку "modprobe: ОШИБКА: не удалось вставить 'wl': требуемый ключ недоступен"
solsTiCe

Можете ли вы попробовать запустить: sudo apt install mokutil; sudo mokutil --disable-validation
Энтони Вонг

6

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


1

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.