perform mok management что это
AIO Boot
AIO Boot > AIO Boot > Boot Grub2 with Secure Boot using Shim and MOK Manager
Boot Grub2 with Secure Boot using Shim and MOK Manager
Introduction
My computer does not have Secure Boot, I have not been able to test this feature in a while. Although the AIO Boot theory supports booting Grub2 with Secure Boot using Shim and MOK Manager, I have never tried it. But some users have confirmed that it works, Steve Si (author of Easy2Boot) wrote an article here. With VMware Workstation 15, I was able to try and it really works as expected.
It does not work on all machines, and we can not chainload to .EFI files if it has not been signed (eg, rEFInd, Clover). You also need to perform additional steps on the MOK Manager. So the best way is to disable Secure Boot.
AIO Boot uses Shim (bootx64.efi is renamed from shimx64.efi) to boot at the first stage. Then Shim will load Grub2 (grubx64.efi) in the second stage. You can find lots of useful information about Secure Boot on Ubuntu and rEFInd.
If your computer does not have Secure Boot, you can boot from USB in VMware Workstation. Just enable UEFI mode and select Enable secure boot. Then boot Grub2 with Secure Boot using Shim and MOK Manager through the steps below.
Boot Grub2 with Secure Boot
You only need to do the steps below once.
Limitation
You should disable Secure Boot so that AIO Boot can work as expected. Finally leave a comment to let me know that it works on your computer.
Управление загрузчиками EFI в Linux: режим безопасной загрузки Secure Boot
Что такое режим безопасной загрузки Secure Boot?
В течение десятилетий персональные компьютеры страдали от вирусов, червей и других вредоносных программ. Некоторые из самых ранних вирусов для персональных компьютеров распространялись как вирусы загрузочного сектора : Они размещались в виде кода в загрузочных секторах дискет и, когда пользователи загружали свои компьютеры с помощью зараженных дискет DOS, передавались от одного компьютера к другому. Несмотря на то, как дискеты потеряли свою важность, и широкую известность приобрели другие пути передачи вирусов, а обычным делом стало подключение к сети Интернет, вредоносный код, попадающий в компьютер во время начальной загрузки, всегда среди приоритетных интересов у авторов вредоносных программ. За счет того, что он выполняется раньше, чем ядро ОС возьмет управление над компьютером, вредоносная программа может «спрятаться» такими способами, которыми не удастся воспользоваться после того, как операционная система берет на себя управление. Предварительно загруженная вредоносная программа может стать невидимой для операционной системы, и антивирусным сканерам практически не удается обнаружить вредоносные программы, по крайней мере, без перезагрузки в спасательную систему, которая не заражена.
В BIOS совсем мало возможностей защиты от инфицирования предварительно загружаемыми вредоносными программами; когда происходит загрузка BIOS, ОС неявно доверяет всему, что выполняется в качестве загрузчика. До конца 2012 года это утверждение также было справедливо для большинства промышленных реализаций EFI. И для того, чтобы в процесс загрузки добавить дополнительный слой защиты был создан режим Secure Boot. При включенном режиме Secure Boot для любой программы EFI, которая запускается прошивкой, в прошивке проверяется наличие криптографической подписи. Если криптографическая подпись отсутствует, не соответствует ключу, хранящемуся в энергонезависимой памяти компьютера, или указана в энергонезависимой памяти в черном списке, то прошивка отказывается выполнять программу. Конечно, это просто начало процесса; надежный загрузчик EFI должен продолжить процесс загрузки в безопасном режиме, что в конечном счете приведет тому, что безопасной будет сама операционная система. Автору вирусов потребовалось бы создать подписанный вирус, что более трудно в случае, если пользователи контролируют работу с системными клавишами. Таким образом, предварительно загружаемая вредоносная программа может быть заблокирована. Есть масса способов чтобы затем сделать что-нибудь не так, как надо, но режим Secure Boot обеспечивает, по меньшей мере, основу, на которой можно будет создать в целом безопасный компьютер, по крайней мере, в теории!
В описании режима Secure Boot в спецификациях UEFI не предлагается никаких механизмов создания доверительной сети для ключей этого режима. Если исходить только из спецификаций UEFI, то можно решить, что режим Secure Boot будет активироваться непосредственно там, где компьютеры будут использоваться; администраторам на местах следует подписывать загрузчики, которые они используют, защищаясь тем самым от авторов вредоносных программ. Но, фирма Microsoft включила в свою сертификационную программу Windows 8 требование, которое обязывает продавцов поставлять компьютеры с включенным режимом Secure Boot. На практике это означает, что производители должны добавлять на свои компьютеры ключи от фирмы Microsoft, и если производители не будут добавлять другие ключи, то работать будут только загрузчики, подписанные Microsoft.
Затравкой первоначального публичного обсуждения этих вопросов был в сентябре 2011 года блог Мэтью Дж. Гарретта (Matthew J. Garrett), разработчика из Red Hat. Большая часть первоначального обсуждения на веб-форумах и в других общественных местах была исключительно паническая, и даже через год я иногда вижу слишком нервные посты. Я призываю успокоиться; как описано в этой статье, есть, по крайней мере, три способа решения режима Secure Boot: его отключение, использование предварительно подписанного загрузчика или использование своих собственных ключей.
Отключение режима Secure Boot
Конечно, прошивка вашего компьютера, скорее всего, будет отличаться от моей. Лучше всего, если вы хотите отключить режим Secure Boot, вам следует изучить параметры прошивки (настроек setup-а) вашей собственной системы. В вашей инструкции эта информация может присутствовать, либо ее там может не быть. В случае с моей материнкой ASUS P8H77-I, в руководстве не упоминалось о параметрах режима Secure Boot; я должен был разобраться с этим методом проб и ошибок. Я слышал о ситуациях, которые как лучше, так и хуже, чем с моей материнкой ASUS. В «лучшей» ситуации был пункт меню, снабженный довольно очевидным названием Secure Boot и варианты настройки Enabled (Включить) и Disabled (Выключить). В «худшей» ситуации, о которой я слышал от других, при попытке отключить режим Secure Boot красным цветом выдавались страшные сообщения, либо прежде, чем вы смогли бы получить доступ к прошивке, требовалось загрузится в Windows, и запускать программу, работающую под Windows.
Использование подписанного загрузчика
Использование программы Shim из системы Fedora
Чтобы соответствовать целям режима Secure Boot, загрузчик Linux должен обеспечивать аутентификацию ядра Linux, а дистрибутив Linux должен обеспечить дополнительные меры безопасности в тех ядрах, которые им предлагаются. К сожалению, эти цели не в ладах с философией свободы открытого исходного кода и свободой пользователей, позволяющей управлять своими компьютерами. Поэтому решение Secure Boot для Linux должно балансировать между этими двумя целями. Это именно то, что делает программа shim, созданная в системе Fedora. Она делает это с помощью поддержки использования следующих трех различных типов ключей:
Примечание: Вы можете спросить, почему эти возможности нельзя добавить в существующий загрузчик, например, в GRUB 2. Против этого есть несколько причин. Одна из них относится непосредственно к вопросам договоренностей: Как пишет в блоге Джеймса Боттомли (James Bottomley) в этом блоге, Microsoft отказывается подписывать двоичные файлы, распространяемые под некоторыми открытыми лицензиями, в том числе под лицензией GPLv3, которая используется как в GRUB 2, так и в rEFInd. Другая причина относится к сфере практики: загрузчик, такой как GRUB 2, является большой программой, которую в случае обнаружения ошибок велика может потребоваться быстро заменить. Но процесс подписания с участием третьих лиц может замедлить процесс выпуска релиза, что поставщики дистрибутивов считают неприемлемым.
Весь смысл режима Secure Boot состоит в том, чтобы предотвратить попытки вредоносной программы получить контроль над компьютером. Поэтому, когда загрузка происходит с включенным режимом Secure Boot, система Fedora 18 ограничивает действия, которые некоторые пользователи Linux считают само собой разумеющимися. Например, должны быть подписаны модули ядра Linux, что затрудняет использование драйверов ядра сторонних производителей, таких как те, которые необходимы проприетарным видеодрайверам фирм Nvidia и AMD/ATI. Чтобы запустить локально-скомпилированное ядро, вы должны подписать его ключом МОК и зарегистрировать этот ключ МОК в системе. Общий объем подобных ограничений полностью зависит от тех, кто разработал и подписал загрузчик, запускаемый с помощью программы shim, и ядра, запускаемого с помощью этого загрузчика. Скорее всего, что в некоторых дистрибутивах будут поставляться ядра, которые будут сравнительно не сильно обременены добавлением ограничений безопасности.
Примечание: Описанная здесь процедура утомительна, т.к. она требует самостоятельного подписывания загрузчиков и ядер. Как только в дистрибутивах появится программа shim, трудность этого процесса резко снизится. Если вам повезет, вы сможете использовать Ubuntu 12.10 или Fedora 18 с включенным режимом Secure Boot и не замечать отличие от установки без использования режима Secure Boot.
Если вы хотите сейчас использовать программу shim, то с практической точки зрения у вас есть три варианта: Вы можете запустить Ubuntu 12.10; вы можете запустить Fedora 18, или вы можете запустить подписанную версию, созданную Мэтью Гарретт (Matthew Garrett), добавить свой собственный ключ MOK и подписать любой двоичный файл, который захотите. К сожалению, прямо сейчас этот процесс все еще немного утомителен. Вкратце, он выглядит следующим образом:
Введите следующие две команды для создания своих открытых и закрытых ключей:
Скопируйте файл MOK.cer в каталог, где его сможет прочитать ваш загрузчик EFI, например, загрузчик ESP вашего компьютера.
Примечание: Версия 0.2 программы shim не может напрямую запускать ядра Linux. Вам все еще нужно использовать shim в сочетании с загрузчиком, например, старой версией GRUB, GRUB 2 или ELILO. Поскольку gummiboot запускает Linux с помощью системных вызовов EFI, он не будет работать с программой shim. То же самое касается программы rEFInd версий 0.4.7 и более ранних, но начиная с версии 0.5.0 rEFInd может «общаться» с программой shim и использовать ее для аутентификации загрузчиков, которые запускаются.
Нажмите клавишу со стрелкой, указывающей вниз, и для того, чтобы выбрать вариант Enroll key from disk (Взять ключ с диска), нажмите клавишу Enter. Экран будет очищен и вам будет предложено выбрать ключ, например, следующим образом:
В будущем, использовать программу shim будет легче, поскольку в дистрибутивах будут поставляться предварительно подписанные загрузчики, что устранит необходимость выполнения большинства этих шагов. Тем не менее, если вы хотите подписать свои собственные двоичные модули, вы все равно должны установить программное обеспечение, позволяющее подписывать программы, добавить свой собственный ключ через программу MokManager, и подписать двоичные файлы, которые вы создали самостоятельно или получили из другого источника.
Проверка ваших загрузчиков
Использование загрузчика PreLoader от Linux Foundation
С практической точки зрения, у PreLoader есть преимущество в случае, если вы хотите запустить не подписанный загрузчик (например, со старого дистрибутива Linux), либо если вы хотите распространять загрузочный образ системы, но у вас нет средств для оплаты вашего собственного ключа для подписи. Если вы не сильны с технической точки зрения, то в таких случаях загрузчик PreLoader особенно полезен, поскольку вам не нужно иметь дело с подписыванием ключей так, как это описано для случая применения программы shim. Если в вашем дистрибутиве подписаны загрузчики и/или ядра, то вам лучше отказаться от использования shim. Если загрузчики вашей системы (возможно, в том числе ее ядра) меняются редко и если вы готовы подписывать ключи, то любая из программ будет работать одинаково хорошо.
Чтобы использовать загрузчик PreLoader, выполните следующие действия:
/b>Примечание: К сожалению, программа HashTool имеет очень серьезное ограничение: она может запоминать хэши только тех двоичных файлов, которые хранятся на диске, с которого эта программа запущена. Таким образом, вам, возможно, потребуется либо скопировать программу HashTool на диск, на котором хранятся ваши исполняемые файлы, либо скопировать двоичные файлы на диск, на котором хранится программа HashTool. После того, как вы запомните хэш двоичного файла, он будет работать при запуске из любого места.
В этот момент ваш компьютер должен перезагрузиться в ваш обычный загрузчик и, если вы зарегистрировали ядра и последующие загрузчики с помощью HashTool, то у вас у должна быть возможность запускать эти двоичные файлы так, как если бы они были подписаны ключом Secure Boot вашей платформы. Такая регистрация является важным пунктом. Если вы для запуска ядер Linux пользуетесь загрузчиком rEFInd или gummiboot, то вам необходимо регистрировать каждое новое ядро, когда вы (или системы пакетов вашего дистрибутива) его устанавливаете. Этот факт также означает, что у вас должна быть возможность запуска HashTool. ELILO это сделать не может, но вы можете для того, чтобы иметь возможность запускать программу HashTool, настроить rEFIt, rEFInd, gummiboot, GRUB Legacy и GRUB 2. На самом деле, загрузчик rEFInd версии 0.6.7 и последующих версий распознает двоичным модуль HashTool.efi и предоставляет на главном экране для него тег.
На самом деле загрузчик PreLoader использует за кулисами тот же список ключей MOK, что и программа shim; просто PreLoader использует его для хранения хэш-значений программ, а не их ключей. Вполне возможно, что в будущем программа shim и PreLoader будут приобретать черты друг друга. Однако на данный момент, если вы хотите использовать ключи, вы должны пользоваться программой shim, а если вы хотите использовать хэши не подписанных двоичных файлов, вы должны пользоваться загрузчиком PreLoader. Теоретически вам должно быть достаточно иметь возможность использовать один из этих инструментов с тем, чтобы запустить другой для последующего запуска вашего загрузчик, и это должно позволить вам использовать для проверки подлинности либо ключи, либо хэш-значения. Однако, я эту возможность не пробовал.
🕓 Исправление зависания Ubuntu во время загрузки
В этом пошаговом руководстве показано, как справиться с зависанием Ubuntu при загрузке, установив проприетарные драйверы NVIDIA.
Учебное пособие было выполнено на недавно установленной системе Ubuntu, но оно должно быть применимо и в других случаях.
На днях я купил ноутбук Acer Predator (партнерская ссылка) для тестирования различных дистрибутивов Linux. Это громоздкий, тяжело сложенный ноутбук, который отличается от того, что мне нравятся небольшие легкие ноутбуки, такие как потрясающий Dell XPS.
Причиной, по которой я выбрал этот игровой ноутбук, хотя я не играю на ПК, является NVIDIA Graphics.
Acer Predator Helios 300 поставляется с NVIDIA Geforce GTX 1050Ti.
NVIDIA известна своей плохой совместимостью с Linux. Некоторые читатели It FOSS попросили меня помочь с их ноутбуками NVIDIA, и я ничего не мог сделать, потому что у меня не было системы с графической картой NVIDIA.
Поэтому, когда я решил приобрести новое специализированное устройство для тестирования дистрибутивов Linux, я выбрал ноутбук с графикой NVIDA.
Этот ноутбук поставляется с Windows 10, установленной на 120 ГБ SSD и 1 ТБ жесткого диска для хранения данных.
У меня дуалбут Windows 10 с Ubuntu 18.04.
Установка была быстрой, легкой и безболезненной.
Я загрузился в Ubuntu.
Она показывала знакомый фиолетовый экран, а потом я заметил, что он замерз.
Мышь не двигалась, я ничего не мог набрать, и ничего не мог сделать, кроме как выключить устройство, удерживая кнопку питания.
И это была та же история при следующей попытке входа в систему. Ubuntu просто застревает на фиолетовом экране, даже не дойдя до экрана входа в систему.
Звучит знакомо? Позвольте мне показать вам, как вы можете решить эту проблему с зависанием Ubuntu при входе в систему.
Не пользуетесь Ubuntu?
Обратите внимание, что хотя это руководство было выполнено с Ubuntu 18.04, оно также будет работать на других дистрибутивах на основе Ubuntu, таких как Linux Mint,elementary OS и т. д.
Исправление зависания Ubuntu во время загрузки из-за драйверов NVIDIA
Решение, которое я здесь опишу, работает для систем с графической картой NVIDIA.
Это потому, что ваша система зависает благодаря открытым драйверам NVIDIA Nouveau.
Без дальнейших задержек, давайте посмотрим, как решить эту проблему.
Шаг 1: Редактирование Grub
Когда вы загружаете свою систему, просто остановитесь на экране Grub, как показано ниже.
Если вы не видите этот экран, продолжайте удерживать клавишу Shift во время загрузки.
На этом экране нажмите клавишу «E», чтобы перейти в режим редактирования.
Вы должны увидеть код, подобный приведенному ниже.
Вы должны сосредоточиться на строке, которая начинается с Linux.
Шаг 2: Временное изменение параметров ядра Linux в Grub
Помните, что наша проблема с драйверами NVIDIA Graphics.
Эта несовместимость с открытой версией драйверов NVIDIA стала причиной проблемы, поэтому мы можем отключить эти драйверы.
Теперь есть несколько способов отключить эти драйверы.
Мой любимый способ – отключить все видео / видеокарты с помощью nomodeset.
Просто добавьте следующий текст в конце строки, начиная с Linux.
Вы должны быть в состоянии вводить данные.
Просто убедитесь, что вы добавляете этот текст в конце строки.
Теперь ваш экран должен выглядеть так:
Нажмите Ctrl + X или F10, чтобы сохранить изменения и выйти.
Теперь вы загрузитесь с недавно измененными параметрами ядра.
Если вы добавляете параметр nomodeset в ядро, он указывает ядру загружать видео / графические драйверы после запуска сервера дисплея.
Другими словами, вы отключили загрузку графического драйвера в это время, и конфликт, который он вызывал, исчез.
Шаг 3: Обновите вашу систему и установите проприетарные драйверы NVIDIA
Не будьте слишком счастливы только потому, что теперь вы можете войти в свою систему.
То, что вы сделали, было временным, и в следующий раз, когда вы загрузитесь в свою систему, ваша система все равно будет зависать, потому что она все равно будет пытаться загрузить драйверы Nouveau.
Значит ли это, что вам всегда придется редактировать ядро с экрана grub?
К счастью, ответ – нет.
Здесь вы можете установить дополнительные драйверы в Ubuntu для NVIDIA.
Ubuntu не зависает во время загрузки при использовании этих проприетарных драйверов.
Я предполагаю, что это ваш первый вход в недавно установленную систему.
Это означает, что вы должны обновить Ubuntu, прежде чем делать что-либо еще.
Откройте терминал с помощью сочетания клавиш Ctrl + Alt + T в Ubuntu и используйте следующую команду:
Вы можете попробовать установить дополнительные драйверы в Ubuntu сразу после выполнения вышеупомянутой команды, но, по моему опыту, вам придется перезагрузить систему, прежде чем вы сможете успешно установить новые драйверы.
А при перезапуске вам придется снова изменить параметр ядра так же, как мы делали это раньше.
После обновления и перезапуска системы нажмите на поиск драйверов, чтобы перейти в меню и выполнить поиск программного обеспечения и обновлений.
Теперь перейдите на вкладку «Дополнительные драйверы» и подождите несколько секунд.
Здесь вы увидите проприетарные драйверы, доступные для вашей системы.
Вы должны увидеть драйвера NVIDIA в этом спискеь.
Выберите проприетарный драйвер и нажмите «Применить изменения».
Это займет некоторое время при установке новых драйверов.
Если в вашей системе включена безопасная загрузка UEFI, вас также попросят установить пароль.
Вы можете установить тот пароль, что легко запомнить.
Я покажу вам его последствия позже в шаге 4.
После завершения установки вам будет предложено перезагрузить систему, чтобы изменения вступили в силу.
Шаг 4: Работа с MOK (только для устройств с поддержкой UEFI Secure Boot)
Если вас попросят установить пароль безопасной загрузки, вы увидите синий экран, который говорит о «управлении MOK».
Это сложная тема, и я попытаюсь объяснить ее в более простых терминах.
MOK (Machine Owner Key) необходим из-за функции безопасной загрузки, которая требует подписи всех модулей ядра.
Ubuntu делает это для всех модулей ядра, которые поставляются в ISO.
Поскольку вы установили новый модуль (дополнительный драйвер) или внесли изменения в модули ядра, ваша защищенная система может воспринимать это как нежелательное / постороннее изменение в вашей системе и может отказаться от загрузки.
Следовательно, вы можете либо подписать модуль ядра самостоятельно (указав системе UEFI не паниковать, потому что вы внесли эти изменения), либо просто отключить безопасную загрузку.
Теперь, когда вы немного знаете о безопасной загрузке и MOK, давайте посмотрим, что делать при следующей загрузке, когда вы увидите синий экран при следующей загрузке.
Если вы выберете «Continue boot», скорее всего, ваша система загрузится как обычно, и вам вообще ничего не нужно будет делать.
Но возможно, что не все функции нового драйвера работают правильно.
Вот почему вы должны выбрать Enroll MOK.
Он попросит вас продолжить на следующем экране, а затем попросит пароль.
Используйте пароль, который вы установили при установке дополнительных драйверов на предыдущем шаге.
Вам будет предложено перезагрузить систему.
Шаг 5: Наслаждайтесь Ubuntu Linux с проприетарными драйверами NVIDIA
Как только новый драйвер будет установлен, вам придется перезапустить вашу систему снова.
Теперь все должно быть лучше, и вам больше не нужно редактировать параметры ядра.
Вы сразу загрузитесь в Ubuntu.
Я надеюсь, что это руководство помогло вам решить проблему зависания Ubuntu во время загрузки, и вы смогли загрузить систему Ubuntu.
Если у вас есть какие-либо вопросы или предложения, пожалуйста, дайте мне знать в разделе комментариев ниже.
31 thoughts on “ 🕓 Исправление зависания Ubuntu во время загрузки ”
Спасибо большое, ты просто нереально мне помог. Большооее тебе спасибо
Всегда пожалуйста! Приятно слышать
Прочитал на Вашей странице про зависание экрана:
https://itisgood.ru/2019/04/09/ispravlenie-zavisanija-ubuntu-vo-vremja-zagruzki/
и стал делать так, как у Вас написано: нажимал на клавишу SHIFT при
старте, но у менясовсем другое(картинки прикладываю). Подскажите
пожалуста, как избавиться от зависания экрана в моём случае.
С наилучшими пожеланиями,
p.s. Картинки на сайте не могу приложить
Добрый день! Вы можете выложить листинг, когда провалились в настройки grub?
Предполагаю, что вам надо прокрутить вниз, чтобы добраться до нужной строки, которую нужно изменить.
В этом отличие.
Вот пролистал вниз и пишу:
linux bootvmlinuz-5.3/0-generic root=UUID=2970b0d2-3fdc\-40ed-9886-7146ef656861 ro quit rootfst vpe=ext4 libahci.ignore sss=1 raid=\noautodetect selinux=0 plvmouth.enable=0 lpi=11232000
И вот чуть ниже строка:
initrd /boot/initrd.img-5.3.0.-46-generic
nomodeset пробовали добавить?
Напишите пожалуйста в этом варианте в какое место это вставлять.
linux bootvmlinuz-5.3/0-generic root=UUID=2970b0d2-3fdc\-40ed-9886-7146ef656861 ro quit nomodeset
Добрый день! Я вчера всё выполнил, как ВЫ рекомендовали, при старте системы все иконки и шрифты были огромного размера, но после рестарта всё встало на свои места. Вечером при просмотре видео онлайн всё было нормально. Утром пришли обновления и в том числе и обновление ядра. После надо было перезагрузить систему. И потом уже при просмотре видео ролика на ютубе произошло зависание экрана, но звук продолжал работать. Комбинации разных вариантов клавишь просто не работали. Пришлось тупо выключить ноутбук. Вот как то так.
top – 12:42:51 up 4:43, 1 user, load average: 1,72, 1,54, 1,53
Tasks: 250 total, 3 running, 174 sleeping, 0 stopped, 0 zombie
%Cpu(s): 4,7 us, 7,6 sy, 0,0 ni, 86,8 id, 0,0 wa, 0,0 hi, 1,0 si, 0,0 st
КиБ Mem : 8081484 total, 2434240 free, 2786848 used, 2860396 buff/cache
КиБ Swap: 2097148 total, 2097148 free, 0 used. 4937280 avail Mem
Тут все ок. Сложно сказать причину
Может проблема в видео карте? У меня стоит NVIDIA. Может проблема в настройках именно видеокарты?
Посмотрите логи по времени появления проблем, так можно гадать бесконечно 🙂
Как посмотреть логи? Объсните подробнее, если не трудно!
/var/log/syslog или messages
Не совсем понятно с /var/log/syslog или messages? Эти команды набирать через командную строку или как? Если не трудно, объясните пожалуйста подробнее.