Не удалось создать MokListRT: диск заполнен и т.д. при попытке загрузки почти любого дистрибутива/liveUSB.

Вопрос или проблема

У меня есть проблема уже несколько месяцев… Я долго пользовался 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. Вы можете попробовать отключить его. Для этого выполните следующие шаги:

  1. Перезагрузите компьютер и войдите в BIOS, нажав клавишу F2 (или другую, в зависимости от модели вашего устройства).
  2. Переключите на Advanced Mode, нажав F7.
  3. Перейдите в раздел Security > Secure Boot и установите Secure Boot Control: Enabled для доступа к управлению ключами.
  4. Перейдите в Key Management и выберите Reset to Setup Mode, чтобы очистить все переменные и ключи. Убедитесь, что теперь отображается "No Key".
  5. Вернитесь к Secure Boot Control и отключите Secure Boot (установите в положении Disabled).
  6. Сохраните изменения и выйдите из BIOS.

4. Дополнительные рекомендации

Если вы всё ещё хотите использовать Secure Boot в будущем, вам следует установить утилиту sbctl. Это можно сделать, выполнив команды:

go install github.com/foxboron/sbctl/cmd/sbctl@latest
$(go env GOPATH)/bin/sbctl

Далее следуйте инструкциям по созданию и регистрации ключей.

Заключение

Эти шаги должны помочь вам решить проблему с переполнением UEFI и исправить ошибки, возникающие при загрузке различных дистрибутивов Linux. Если у вас возникнут дополнительные вопросы или потребуется помощь, не стесняйтесь обращаться за поддержкой.

Оцените материал
Добавить комментарий

Капча загружается...