Вопрос или проблема
Итак, я использовал двойную загрузку Kubuntu и Windows 10. Я в основном старался использовать только Linux, но время от времени все же входил в Windows 10, чтобы использовать свою купленную DAW или Davinci Resolve и т.д. НО !!!
В последний раз, когда я вошел в Windows 10, а затем перезагрузил компьютер, я получил сообщение об ошибке вместо загрузчика grub (я ничего не изменял в настройках BIOS). Ошибка, которую я получаю, – “Не удалось создать Moklist: том полон, что-то серьезное пошло не так, import_mok_state(): ошибка”.
Я не только не могу войти в установленный на моем ноутбуке Kubuntu, но я также не могу войти, используя живую USB-накопитель Kubuntu или RedHat. Я попробовал живую USB-накопитель Kubuntu на ноутбуке жены, и он загрузился нормально.
Теперь я могу загрузить живую USB-накопитель Slax linux. И я могу изменить BIOS, чтобы загрузиться с раздела Windows 10, но… к сожалению, это, собственно, и всё.
Итак… надеюсь, кто-то сможет помочь этому новичку в Linux.
P.S. – Я даже восстановил все с помощью образа, который я сделал всего пару дней назад, но это тоже не сработало.
НАЧАЛО ОБНОВЛЕНИЯ 1………………………………………………
Я могу просмотреть папку efi с помощью Slax.
efi/ubuntu файлы:
- BOOTX64.CSV
- grub.cfg
- grubx64.efi
- mmx64.efi
- shimx64.efi
efi/boot файлы:
- BOOTX64.EFI
- fbx64.efi
- mmx64.efi
efi/microsoft есть две папки:
-
Папка загрузки
-
- там куча папок и файлов.
-
- слишком много, чтобы перечислить.
-
Папка восстановления
-
- BCD
-
- BCD.LOG
-
- BCD.LOG1
-
- BCD.LOG2
У моей жены такой же ноутбук, как у меня, поэтому, даже несмотря на то, что я ничего не изменял в настройках BIOS, мы сравнили мой с ее (она использует только Kubuntu, и у нее все работает нормально), и они одинаковые. Ну, кроме того, что у моего компьютера есть NVMe-диск, который я обновил некоторое время назад.
Я провел самопроверку системы под NVMe, и она прошла.
КОНЕЦ ОБНОВЛЕНИЯ 1………………………………………………..
НАЧАЛО ОБНОВЛЕНИЯ 2………………………………………………
Сейчас я на Kubuntu жены. После того, как я попробовал все, что смог найти в интернете, я решил использовать Slax Linux, чтобы удалить разделы на моих двух жестких дисках, включая создание новых таблиц разделов GPT. В настоящее время я устанавливаю Windows 10 на NVMe-диск, и он проходит долгий процесс обновлений Windows.
Как только это будет завершено, я попробую создать новый USB Live и посмотрю, как это пройдет.
Это меня действительно беспокоит. Все было в порядке. Прежде чем все это началось, в последний раз, когда я зашел в Windows 10, было обновление. Просто написали, что обновление готово к установке – я установил его – очень быстрое обновление. Могло ли это последнее обновление Windows 10 вызвать это ???
КОНЕЦ ОБНОВЛЕНИЯ 2………………………………………………..
НАЧАЛО ОБНОВЛЕНИЯ 3………………………………………………
Что ж, даже после того, что было указано в ОБНОВЛЕНИИ 2, я все еще не могу использовать никакой Linux, кроме SLAX linux.
Надеюсь, кто-то знает, что мне нужно сделать, чтобы исправить эту проблему.
КОНЕЦ ОБНОВЛЕНИЯ 3………………………………………………..
НАЧАЛО ОБНОВЛЕНИЯ 4………………………………………………
Вот несколько фотографий моего BIOS. Возможно, они помогут кому-то направить в правильном направлении: https://flic.kr/s/aHBqjzKinq
Кроме того, я удалил все ключи, и теперь я могу запустить Mint Linux live USB, но все еще не могу запустить Kubuntu live USB (у него те же проблемы с MOK).
КОНЕЦ ОБНОВЛЕНИЯ 4…………………………………………………
НАЧАЛО ОБНОВЛЕНИЯ 5……………………………………………….
!!! У МЕНЯ ЭТО СРАБОТАЛО !!!
И я делаю это редактирование с помощью Kubuntu 🙂
Исправление проблемы.
Итак, давайте сначала подытожим…
У меня была работающая двойная загрузка Windows 10 и Kubuntu.
Я в основном заходил в Windows 10, чтобы использовать свои платные музыкальные DAW (цифровые аудиостудии), за которые я заплатил, и для использования Davinci Resolve (моего любимого видеоредактора).
В последний раз, когда я загрузился в Windows 10, перед тем как все это произошло, было обновление (это обновление Windows 10) – просто написали, что обновление готово. Так что я установил его, и оно установилось очень быстро. Когда я закончил работу в Windows 10, я перезагрузился, чтобы вернуться в Kubuntu, но… загрузка не произошла. Я постоянно получал ошибку, довольно близкую к:
Не удалось создать MokList: том полон
Что-то серьезное пошло не так.
import_mok_state() не удалось.
Я не только не мог загрузиться в Kubuntu с жесткого диска, но также не мог загрузиться с живого USB-накопителя Kubuntu, RedHat, EndeavorOS, POP OS, Xubuntu, Mint Linux и т.д. Я обнаружил, что SLAX будет загружаться…
После удаления всех ключей в режиме безопасной загрузки я смог загрузиться с живого USB-накопителя Mint Linux. Так что я попробовал установить его и получил ту же ошибку, которую я получал ранее, что показалось странным.
Итак, после поиска информации в течение нескольких дней я наконец нашел решение, которое сработало для меня, и решил поделиться им здесь.
Решение заключалось в efibootmgr и удалении старых/неиспользуемых загрузочных записей. Я не могу объяснить и не имею понятия, как мой Kubuntu мог перейти от полной работоспособности к неработоспособности после очень небольшого обновления Windows 10 (может быть, это просто совпадение), но именно это произошло, или, по крайней мере, так это кажется, насколько я могу судить. В любом случае…
Вот три команды терминала, которые спасли меня:
// получить efibootmgr
sudo apt-get install efibootmgr
// запустить efibootmgr
sudo efibootmgr
// удалить неиспользуемые загрузочные записи
sudo efibootmgr -b 0005 -B
Обратите внимание, что 0005 может быть 0004, 0006 и т.д.
Вот ссылки на видео и статью, которые дали мне информацию выше:
Видео “Исправление проблем с загрузкой EFI с помощью Efibootmgr”
Статья “Как удалить старые загрузочные записи EFI в Linux”
Когда я смотрел видео и видел неиспользуемые записи, мне вспомнилась “ПОЛНАЯ” часть ошибки, которую я получал, что привело меня к поиску статьи.
Так что, да, надеюсь, это поможет кому-то. Для меня это определенно был интересный опыт…
Не уверен, стоит ли это говорить или нет, но, знаете, с течением времени я действительно начинаю все больше и больше недолюбливать Microsoft. Если бы не мои платные DAW и Davinci Resolve, я, возможно, полностью бы отказался от Microsoft (я над этим работаю – лол)…
КОНЕЦ ОБНОВЛЕНИЯ 5…………………………………………………
Во-первых, немного предыстории: Вы сообщили об ошибке:
Не удалось создать Moklist: том полон, что-то серьезное пошло не так, import_mok_state(): ошибка
Это ссылка на список ключей владельца машины (MOK), которые являются криптографическими ключами, связанными с Shim. Безопасная загрузка требует, чтобы загрузчики были подписаны ключом для проверки подлинности бинарного файла. Несколько открытых ключей хранятся в прошивке компьютера или NVRAM; но единственные ключи, которые гарантированно будут храниться таким образом, принадлежат Microsoft, у которой есть правила относительно того, что она будет подписывать. Короче говоря, большинство дистрибутивов Linux используют программу под названием Shim (shimx64.efi
, как правило), которая подписана Microsoft и добавляет новый ключ для дистрибутива Linux, выпустившего эту версию Shim. Shim также может считывать новые ключи, которые пользователи могут хранить в так называемом списке MOK. Большая часть этих данных, включая список MOK, хранится в NVRAM.
Сообщение об ошибке, которое вы сообщаете, заявляет “том полон”, но это сбивающая с толку формулировка, потому что рассматриваемый том, скорее всего, не является разделом диска, а хранилищем NVRAM, которое очень ограничено по размеру.
Часть механизма безопасной загрузки включает в себя периодическое обновление поставщиками ОС другого пула ключей безопасной загрузки на основе NVRAM, известного как dbx
, который представляет собой список ключей или бинарных хешей, которые были аннулированы — у них известны ошибки или они известны как вредоносное ПО, поэтому их не следует загружать. Большая вероятность того, что ваше обновление Windows включало в себя обновление dbx
, которое, вероятно, дотянуло хранилище NVRAM до предела. Один из ваших скриншотов показывает список dbx
(“Запрещенные подписи”) с 77 записями. Также могут быть и другие вещи, занимающие пространство в NVRAM. EFI периодически выполняют “сборку мусора” на хранилище NVRAM, чтобы попытаться очистить старые данные, но это делается спонтанно и не гарантирует полной помощи.
Как и с любым полным или почти полным ресурсом, полный NVRAM на компьютере на базе EFI может приводить к странным результатам. Я не могу точно объяснить, почему некоторые ваши дистрибутивы Linux загружались нормально, а другие — нет, но я предполагаю, что это было вызвано полным или почти полным NVRAM. Есть способы протестировать эту гипотезу, но основной способ, который я знаю, довольно сложен и может не стоить усилий.
Записи загрузки, отображаемые в Linux с помощью efibootmgr
, также хранятся в NVRAM, поэтому удаление старых/неиспользуемых записей могло освободить достаточно места, чтобы все заработало. Если вы удалили только несколько записей, однако, вы, вероятно, очень близки к пределу и можете столкнуться с проблемами в будущем.
Один из способов, которым вы можете снизить риск возникновения проблем в будущем, это отключить безопасную загрузку. Само по себе это не удалит dbx
или иным образом не уменьшит нагрузку на NVRAM, но, по крайней мере, это сделает несущественным, если инструмент не может читать или изменять список MOK, поскольку MOK используются только Shim (и связанными инструментами). Отключение безопасной загрузки снижает общую безопасность вашей системы, однако — вредоносное ПО предзагрузки сможет выполняться без проблем, если оно будет установлено.
Вы также можете удалить сам dbx
или перезаписать все ключи теми, которые вы создаете, но это уже становится довольно сложной областью — и удаление dbx
также снизит безопасность вашей системы (но не так сильно, как полное отключение безопасной загрузки).
Я также столкнулся с этой проблемой. “Не удалось создать MokListRT: том полон”. Невозможно перезагрузить с диска или на моих двух живых USB-накопителях.
Вдохновленный тем, что я прочел выше, что сработало для моего Asus:
- Зайдите в BIOS (F2 при запуске)
- Режим Advanced (F7)
- Вкладка Безопасность > Безопасность/Безопасная загрузка > Управление ключами
- Оттуда я удалил все ключи безопасности и сбросил их до заводских настроек.
Затем я смог загрузиться с USB-накопителя для переустановки системы. Во время установки необходимо установить пароль для “Безопасной загрузки”, который запрашивается при первой перезагрузке. Обратите внимание, что на этом этапе клавиатура имеет раскладку Qwerty. Что такое enroll key from disk, enroll hash from disk и enroll Mok после установки Ubuntu 18.10
Некоторое время назад я столкнулся с такой ошибкой. Хорошая новость в том, что я все еще могу загрузиться с помощью Windows Bootmgr (выбрав его в UEFI boot mgr). Проблема заключается в том, что в моей прошивке UEFI было создано слишком много загрузочных записей
, и они занимали большую часть пространства NVRAM. Поэтому моё решение – удалить все эти неиспользуемые загрузочные записи с помощью инструмента Windows bcdedit
.
Сначала нужно вывести список всех загрузочных записей и найти их идентификаторы:
> bcdedit.exe /enum firmware
....<повторять много раз>....
固件应用程序(101fffff)
-------------------------------
标识符 {d75e8a44-0cb7-11ee-8c41-58ce2a1283af}
device partition=\Device\HarddiskVolume8
path \EFI\BOOT\BOOTX64.EFI
description UEFI: ST500LM021-1KJ152, Partition 1
固件应用程序(101fffff)
-------------------------------
标识符 {dae32edd-109d-11ee-8c45-58ce2a1283af}
device partition=\Device\HarddiskVolume8
description UEFI: ST500LM021-1KJ152, Partition 1
Затем необходимо удалить каждую неиспользуемую запись одну за другой:
> bcdedit.exe /delete {d75e8a44-0cb7-11ee-8c41-58ce2a1283af}
Операция успешно завершена.
> bcdedit.exe /delete {dae32edd-109d-11ee-8c45-58ce2a1283af}
Операция успешно завершена.
...
Наконец, перезагрузите машину.
Итак, после поиска информации в течение нескольких дней я наконец нашел решение, которое сработало для меня, и решил поделиться им здесь.
Решение заключалось в efibootmgr и удалении старых/неиспользуемых загрузочных записей. Я не могу объяснить и не имею понятия, как мой Kubuntu мог перейти от полной работоспособности к неработоспособности после очень небольшого обновления Windows 10 (может быть, это просто совпадение), но именно это произошло, или, по крайней мере, так это кажется, насколько я могу судить. В любом случае…
Вот три команды терминала, которые спасли меня:
// получить efibootmgr
sudo apt-get install efibootmgr
// запустить efibootmgr
sudo efibootmgr
// удалить неиспользуемые загрузочные записи
sudo efibootmgr -b 0005 -B
Обратите внимание, что 0005 может быть 0004, 0006 и т.д.
Вот ссылки на видео и статью, которые дали мне информацию выше:
Видео “Исправление проблем с загрузкой EFI с помощью Efibootmgr”
https://www.youtube.com/watch?v=MN-Q5h2Iv8A
Статья “Как удалить старые загрузочные записи EFI в Linux”
https://digitalrobin.net/2020/07/11/how-to-remove-old-efi-boot-entries-in-linux/
Когда я смотрел видео и видел неиспользуемые записи, мне вспомнилась “ПОЛНАЯ” часть ошибки, которую я получал, что привело меня к поиску статьи.
Так что, да, надеюсь, это поможет кому-то. Для меня это определенно был интересный опыт…
Ответ или решение
Проблема: "Couldn’t Create Moklist: Volume Full" – Не удается загрузить GRUB
Введение
Ваша ситуация с ошибкой "Couldn’t Create Moklist: Volume Full" может быть причиной множества проблем, связанных с управлением загрузкой системы, особенно после обновления Windows 10. Данная проблема возникает в основном при использовании системы с поддержкой Secure Boot, которая может ограничить загрузку неподписанных или несоответствующих программ. Давайте разберем основной механизм, который может вызвать эту ошибку, и шаги по устранению неполадки.
Причина возникновения ошибки
Ошибка "Couldn’t Create Moklist: Volume Full" относится к исчерпанию места в NVRAM (неподвижной памяти), используемой для хранения загрузочных записей и ключей Secure Boot. Как правило, это не связано с заполнением раздела на жестком диске, а указывает на то, что в NVRAM, которая имеет ограниченное пространство, не осталось места для новых записей. Это может происходить после установки обновлений Windows, которые автоматически добавляют записи в список загружаемых образов.
Шаги по устранению проблемы
Ваши первоначальные шаги — удаление ключей Secure Boot и использование утилиты efibootmgr
— правильные и могут помочь освободить пространство в NVRAM.
-
Удаление ключей Secure Boot:
- Войдите в BIOS, используя клавишу, указанную на экране при загрузке (обычно это F2 или Del).
- Перейдите в раздел «Security», затем к «Key Management», и удалите все старые ключи Secure Boot.
- После этого перезагрузитесь и попробуйте загрузиться с Live USB.
-
Использование efibootmgr:
- Воспользуйтесь Live USB Linux, чтобы установить утилиту
efibootmgr
:sudo apt-get install efibootmgr
- После установки выполните команду:
sudo efibootmgr
Эта команда покажет список всех зарегистрированных загрузочных записей.
- Удалите ненужные записи с помощью:
sudo efibootmgr -b <номер записи> -B
Замените
<номер записи>
на соответствующий номер, например, 0005.
- Воспользуйтесь Live USB Linux, чтобы установить утилиту
-
Очистка NVRAM через Windows:
- Если у вас есть доступ к Windows, вы также можете использовать утилиту командной строки
bcdedit
для управления загрузочными записями:bcdedit /enum firmware
Это позволит вам увидеть все текущие записи.
- Удалите ненужные записи с помощью команды:
bcdedit /delete {идентификатор}
- Перезагрузите систему, чтобы изменения вступили в силу.
- Если у вас есть доступ к Windows, вы также можете использовать утилиту командной строки
Заключение
Ситуация, когда система перестает загружаться после обновления Windows, понимается как обычная проблема, связанная с нехваткой ресурсов для хранения записей загрузчика. Важно помнить, что вы всегда можете восстановить доступ к своей системе, используя описанные выше шаги. Теперь, когда система снова работает, рекомендуется внимательно следить за обновлениями и управлять загрузочными записями, чтобы избежать подобных ситуаций в будущем.
Если у вас возникнут дополнительные вопросы или потребуется дальнейшая помощь, не стесняйтесь обращаться за поддержкой.