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

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

Я не выполнил.

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

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

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

48
задан 17 July 2016 в 13:03

4 ответа

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

Как говорит Энтони Вонг, когда вы устанавливаете пакет 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

42
ответ дан 17 July 2016 в 23:03

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

6
ответ дан 17 July 2016 в 23:03
  • 1
    Вы используете gdm или lightdm? Просто установите систему, и установил sudo apt install ubuntu-gnome-desktop (выбрал lightdm, но я могу реконфигурировать), – user3325563 24 August 2017 в 09:53

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

20
ответ дан 17 July 2016 в 23:03
  • 1
    Извините за это: Что Ubuntu Вы выполняете? Как Вы устанавливали гнома? Я принимаю UbuntuGnome? какая версия? – user3325563 24 August 2017 в 06:03

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

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

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

1
ответ дан 17 July 2016 в 23:03
  • 1
    для записи кажется, что это все еще использует compiz/unity от вывода wmctrl -m и printf 'Desktop: %s\nSession: %s\n' "$XDG_CURRENT_DESKTOP" "$GDMSESSION", который означал бы, что мой ответ выше мог бы быть ответом. – user3325563 24 August 2017 в 09:55

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

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