Вопрос или проблема
У меня есть проблема уже несколько месяцев… Я долго пользовался Fedora, но после обновления она сломалась, и с тех пор я не могу установить или запустить живую среду почти ни одной дистрибутивы… до сих пор только Linux Mint загружается в живую среду, но когда я устанавливаю его, я получаю ту же ошибку при загрузке, и компьютер выключается. Я пробовал другие дистрибутивы, но безуспешно. В данный момент я застрял на Windows.
Ошибка(и):
Не удалось создать MokListRT: Объём заполнен
Не удалось создать MokListXRT: Объём заполнен
Не удалось создать SbatLevelRT: Объём заполнен
Не удалось создать MokListTrustedRT: Объём заполнен
Что-то пошло серьезно не так: import_mok_state() не удалось: Объём заполнен
Я буду очень признателен за любую помощь с этой проблемой
Решением для меня было очистка переменных EFI и затем отключение защищённой загрузки.
На моём ноутбуке Asus X556 я выполнил следующие шаги, но они могут варьироваться для каждого компьютера:
- Нажмите F2 во время загрузки, чтобы войти в BIOS
- Нажмите F7, чтобы включить Режим расширенных настроек
- Безопасность > Защищенная загрузка > Управление защищённой загрузкой: Включено. Необходимо включить защищённую загрузку для доступа к управлению ключами.
- Безопасность > Защищенная загрузка > Управление ключами: Сбросить в режим настройки, чтобы очистить все переменные и ключи. Должно отображаться “Нет ключа” несколько раз.
- Безопасность > Защищенная загрузка > Управление защищённой загрузкой: Отключено. Защищенная загрузка должна быть отключена, так как нет действительных ключей.
- Сохранить и выйти
Ошибки указывают на то, что UEFI NVRAM, используемая для хранения переменных загрузки UEFI и других настроек прошивки, похоже, полна.
Запустите sudo efibootmgr -v
: если он отображает большое количество устаревших записей загрузки (т.е. относящихся к дискам или операционным системам, которые вы больше не устанавливали), используйте sudo efibootmgr -B -b <XXXX>
, чтобы удалить их. Замените <XXXX>
номером записи загрузки BootXXXX
, которую вы хотите удалить.
Если устаревших записей загрузки нет, посмотрите, дает ли sudo ls /sys/firmware/efi/efivars/dump-*
какие-либо выходные данные. Если да, то возможно, вы включили модуль ядра efi-pstore
в какой-то момент, и любые сбои системы привели к тому, что вывод dmesg
во время сбоя был сохранен в NVRAM.
Если модуль efi-pstore
все еще активен, и ваша система включает сервис systemd systemd-pstore.service
, то вы, возможно, сможете получить доступ к дампу(ам) как к обычным файлам в /sys/fs/pstore/
. Если да, проверьте, содержат ли они что-то важное для вас: переместите их в другое место, если они вам нужны, или удалите, если нет. Если они содержат информацию о старых сбоях системы, которые больше не имеют отношения к вашей текущей конфигурации системы, удалите их, чтобы освободить очень ограниченное пространство UEFI NVRAM.
Для получения дополнительной информации о pstore
и его использовании для сохранения вывода dmesg
при сбоях системы смотрите: https://blogs.oracle.com/linux/post/pstore-linux-kernel-persistent-storage-file-system
Если файлы /sys/firmware/efi/efivars/dump-*
существуют, но ваша текущая Linux-дистрибуция не включает систему pstore
, то вы должны иметь возможность удалить эти файлы непосредственно в каталоге /sys/firmware/efi/efivars/
тоже; поскольку один файл в pstore
может быть разделен на несколько переменных UEFI из-за ограничений по размеру.
Как объясняется в askubuntu, отключение защищенной загрузки должно исправить это, если по какой-то причине вам это все еще нужно, вам нужно будет установить sbctl go install github.com/foxboron/sbctl/cmd/sbctl@latest
$(go env GOPATH)/bin/sbctl
, а затем следовать инструкциям upstream, чтобы включить его, а затем снова включить в вашем BIOS.
Ответ или решение
Ошибка, с которой вы столкнулись, связана с переполнением хранилища переменных UEFI (NVRAM), что мешает загрузке системы и вызывает сообщения об ошибках, такие как "Could not create MokListRT: Volume Full". Эта проблема может возникнуть из-за того, что UEFI содержит слишком много записей загрузки или из-за накопления ненужных данных.
Вот шаги, которые помогут вам устранить эту проблему:
1. Очищение переменных EFI
Для начала вам нужно проверить количество записей загрузки в вашей системе. Для этого выполните команду:
sudo efibootmgr -v
Если вы увидите большое количество устаревших записей, указывающих на операционные системы, которые вы больше не используете, удалите их с помощью команды:
sudo efibootmgr -B -b <XXXX>
Замените <XXXX>
на номер записи BootXXXX
, которую хотите удалить.
2. Проверка на наличие dump файлов
Если у вас не осталось устаревших записей, выполните команду для проверки на наличие dump файлов:
sudo ls /sys/firmware/efi/efivars/dump-*
Если команда выдает некоторый вывод, то это может указывать на то, что модуль efi-pstore
был активирован, и данные о сбоях системы сохранялись в NVRAM.
Если модуль efi-pstore
всё ещё активен, проверьте, доступен ли вам вывод этих данных в каталоге:
/sys/fs/pstore/
Если данные больше не актуальны или не важны, вы можете удалить их, чтобы освободить место.
3. Отключение Secure Boot
Проблема может также заключаться в настройках Secure Boot. Вы можете попробовать отключить его. Для этого выполните следующие шаги:
- Перезагрузите компьютер и войдите в BIOS, нажав клавишу
F2
(или другую, в зависимости от модели вашего устройства). - Переключите на Advanced Mode, нажав
F7
. - Перейдите в раздел Security > Secure Boot и установите Secure Boot Control: Enabled для доступа к управлению ключами.
- Перейдите в Key Management и выберите Reset to Setup Mode, чтобы очистить все переменные и ключи. Убедитесь, что теперь отображается "No Key".
- Вернитесь к Secure Boot Control и отключите Secure Boot (установите в положении Disabled).
- Сохраните изменения и выйдите из BIOS.
4. Дополнительные рекомендации
Если вы всё ещё хотите использовать Secure Boot в будущем, вам следует установить утилиту sbctl
. Это можно сделать, выполнив команды:
go install github.com/foxboron/sbctl/cmd/sbctl@latest
$(go env GOPATH)/bin/sbctl
Далее следуйте инструкциям по созданию и регистрации ключей.
Заключение
Эти шаги должны помочь вам решить проблему с переполнением UEFI и исправить ошибки, возникающие при загрузке различных дистрибутивов Linux. Если у вас возникнут дополнительные вопросы или потребуется помощь, не стесняйтесь обращаться за поддержкой.