Подробный гайд по использованию пакета mokutil в операционной системе ALT Linux
Рад приветствовать вас. Ниже представлен подробный гайд по использованию пакета mokutil в операционной системе ALT Linux. Этот инструмент критически важен, если вы используете UEFI Secure Boot и вам нужно загружать сторонние модули ядра (например, проприетарные драйверы NVIDIA, VirtualBox) или использовать собственные ключи.
1. Что такое MOK и зачем нужен mokutil?
Secure Boot — это механизм UEFI, который разрешает загрузку только того ПО (включая модули ядра), которое подписано доверенными ключами (обычно ключами Microsoft и дистрибутива).
Если вы собираете свой модуль ядра, Secure Boot его заблокирует. MOK (Machine Owner Key) — это дополнительная база данных ключей в UEFI, которой владеет сам пользователь (Machine Owner).
Утилита mokutil позволяет добавлять, удалять и просматривать ключи в этой базе данных из работающей ОС, не отключая Secure Boot.
2. Установка mokutil в ALT Linux
В ALT Linux используется пакетный менеджер apt-get (apt-rpm).
Откройте терминал и выполните команды от имени суперпользователя (root):
su -
apt-get update
apt-get install mokutil
Примечание:
Если пакет не находится, убедитесь, что подключены основные репозитории вашего релиза (p10, p9 или Сизиф).
3. Основные команды mokutil
Вот базовый набор команд для управления ключами:
* Проверить статус Secure Boot:
mokutil --sb-state
* Посмотреть список уже доверенных MOK ключей:
mokutil --list-enrolled
* Добавить ключ в очередь на регистрацию (импорт):
mokutil --import /путь/к/ключу.der
(При выполнении этой команды система попросит вас придумать и ввести временный пароль. Он понадобится при следующей перезагрузке в меню UEFI).
* Удалить ключ из очереди на регистрацию:
mokutil --delete /путь/к/ключу.der
* Сбросить все MOK ключи (очистить очередь):
mokutil --reset
* Отключить/Включить Secure Boot (требует прав root и поддержки BIOS):
mokutil --disable-validation # Временно отключает проверки
mokutil --enable-validation # Включает обратно
4. Пошаговый сценарий: Регистрация собственного ключа
Это самый частый сценарий. Допустим, вы сгенерировали ключи для подписи модулей ядра.
Шаг 1: Генерация ключей (если их еще нет)
Обычно ключи генерируются с помощью openssl. Создадим их в /etc/keys/:
mkdir -p /etc/keys
cd /etc/keys
openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Denis Sergeevich ALT Linux MOK/"
chmod 600 MOK.priv
Важно:
Файл MOK.priv (приватный ключ) храните в секрете. Файл MOK.der (публичный ключ/сертификат) мы будем регистрировать.
Шаг 2: Импорт ключа через mokutil
Добавляем публичный ключ в очередь MOK:
mokutil --import /etc/keys/MOK.der
Система попросит ввести пароль (Enter password) и подтвердить его (Enter password again).
Внимание:
Это НЕ ваш пароль от Linux. Это одноразовый пароль, который вы запомните для следующего шага. Он не сохраняется в ОС.
Шаг 3: Перезагрузка и подтверждение в UEFI (MOK Manager)
- Перезагрузите компьютер:
reboot. - Сразу после старта, до загрузки ОС, на черном экране появится синее меню Perform MOK management (MOK Manager).
- Выберите Enroll MOK.
- Выберите Continue.
- Выберите Yes.
- Система попросит ввести тот самый одноразовый пароль, который вы задали в Шаге 2. Вводите его (раскладка клавиатуры в UEFI обычно английская, символы могут не отображаться).
- Выберите Reboot.
После перезагрузки ваш ключ будет добавлен в доверенную базу UEFI.
Шаг 4: Проверка
Загрузившись в ALT Linux, проверьте, что ключ добавлен:
mokutil --list-enrolled
Вы должны увидеть хэш вашего сертификата MOK.der.
5. Практическое применение в ALT Linux: Подпись модулей ядра
Теперь, когда ключ зарегистрирован, вы можете подписывать им сторонние модули (например, nvidia, vboxdrv, wireguard), чтобы они загружались при включенном Secure Boot.
В ALT Linux для подписи используется утилита kmodsign (обычно поставляется с пакетами kernel-headers или kernel-build-tools).
Пример подписи модуля NVIDIA:
# Узнаем точное имя файла модуля
modinfo -n nvidia
# Подписываем модуль (замените пути на актуальные)
/usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 \
/etc/keys/MOK.priv \
/etc/keys/MOK.der \
/lib/modules/$(uname -r)/updates/nvidia.ko
Лайфхак для ALT Linux:
Если вы используете DKMS для сборки модулей (например, apt-get install nvidia-modules), вы можете настроить автоматическую подпись. Для этого в файле конфигурации DKMS или в скриптах post-install нужно прописать вызов sign-file с использованием ваших ключей из /etc/keys/.
6. Важные нюансы и решение проблем для ALT Linux
1. Ошибки при вводе пароля в UEFI:
В UEFI MOK Manager нет визуального подтверждения ввода пароля (звездочки не показываются). Просто введите пароль и нажмите Enter. Если пароль не подошел, система предложит попробовать снова или выйти.
2. Клавиатура в UEFI:
Убедитесь, что ваша клавиатура подключена напрямую к материнской плате (не через USB-хаб) и используется базовый USB-порт, иначе она может не определиться на этапе MOK Manager.
3. Слетает Secure Boot после обновления BIOS:
На некоторых материнских платах сброс настроек BIOS или его обновление может очистить базу MOK. В этом случае вам придется снова выполнить mokutil --import и пройти процедуру в UEFI.
4. Конфликт с ключами ALT Linux:
ALT Linux по умолчанию использует свои ключи для подписи штатного ядра. mokutil работает с дополнительной базой MOK и никак не конфликтует с базовыми ключами дистрибутива.
5. Если модуль все равно не грузится:
Проверьте системный лог: dmesg | grep -i secureboot или journalctl -k | grep -i lock. Если видите Lockdown или signature verification failed, значит модуль не подписан, либо подписан неверным ключом.
Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.