Компиляция ядра Linux и загрузка с UEFI

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

Я недавно собрал и установил ядро Linux на своем компьютере с Kubuntu. Я скачал исходный .tar.gz с kernel.org, распаковал его и использовал следующие команды (выполняя их в верхнем каталоге исходного пакета) для компиляции и установки:

make oldconfig
make -j4
sudo make modules_install
sudo make install

Однако, когда я перезагрузился, я получил сообщение “Ошибка: нехватка оперативной памяти”, и когда я нажал клавишу для продолжения, на экране появился экран паники ядра с сообщением “не синхронизируется: VFS: Невозможно смонтировать корневую файловую систему на unknown-block(0,0)”.

Мои другие ядра работают нормально, поэтому я все еще могу загружаться как обычно. Но мне любопытно, почему это ядро не работает и что я могу сделать, чтобы оно заработало.

Я пробовал это с несколькими версиями (5.9.12, 5.9.14 и 5.10.2) и получил тот же результат, так что, похоже, точная версия не является проблемой. Но я знаю, что раньше я постоянно компилировал ядра таким образом, и они работали без проблем. Поэтому я попробовал множество вещей и в конце концов понял, что UEFI, похоже, является виновником. Это же ядро будет работать, если я установлю его на системе с наследием. Безопасная загрузка отключена на рассматриваемом (UEFI) ПК, так что я предполагаю, что это не связано с ключами безопасной загрузки. Похоже, это связано с чем-то в UEFI, но не с безопасной загрузкой, что ломает его.

Тем не менее, при поиске в интернете я не смог найти ничего, касающегося загрузки скомпилированного ядра Linux с UEFI. Так есть ли что-то дополнительное, что я должен сделать? Или проблема в чем-то другом?

Правка: Я не понимаю, почему мой вопрос был закрыт. Но на случай, если он требует более подробных пояснений, я спрашиваю следующее: Если я загружу исходный код ядра Linux с kernel.org или код, из которого строятся ядра Ubuntu, отсюда (https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.10.4/) и соберу его с помощью приведенных выше команд, я обнаружу, что он нормально загружается в BIOS, но не в UEFI. Мой вопрос: почему.

sudo update-initramfs должно решить проблему.

Ответ или решение

Компиляция ядра Linux и загрузка с помощью UEFI: Разбор проблем

При компиляции и установке ядра Linux на вашей системе Kubuntu вы столкнулись с проблемами при загрузке через UEFI, что вызывает ошибки «выйди из памяти» и «не удается смонтировать корневую файловую систему». Давайте подробно разберем возможные причины данной проблемы и пути их решения.

Причины проблемы

Когда вы компилируете ядро Linux, надо учитывать различные настройки и конфигурации, которые могут влиять на успешную загрузку в среде UEFI. Основные моменты, которые следует учесть:

  1. Проблемы с загрузчиком: UEFI требует, чтобы загрузчик (например, GRUB) был корректно настроен и соответствовал архитектуре системы. Убедитесь, что вы обновили порядок загрузки и что UEFI загрузчик правильно ссылается на новое ядро.

  2. Инициализация модулей: При сборке ядра важно убедиться в том, что все необходимые модули поддерживаются и загружаются. Если модуль для вашей файловой системы не загружается, система не сможет несколькими коридоры смонтировать файловую систему.

  3. Проблемы с initramfs: initramfs — это временная файловая система, которая используется для начальной загрузки. Отсутствие или неправильная настройка initramfs может привести к проблемам при загрузке системы. Убедитесь, что вы обновили его после установки нового ядра:

    sudo update-initramfs -u
  4. Конфигурация ядра: Некоторые опции в конфигурации ядра являются критически важными для UEFI. Например, необходимо убедиться, что включены настройки для поддержки APFS (Advanced Power Management File System), UEFI и вашей файловой системы. Запустите make menuconfig для настройки параметров ядра.

Решение проблемы

Вот шаги, которые могут помочь вам решить проблему загрузки вашего компилированного ядра в UEFI:

  1. Проверка конфигурации ядра: Убедитесь, что у вас включены необходимые драйверы и модули. Это касается не только поддержки вашей файловой системы, но и любых других устройств, необходимых для загрузки.

  2. Обновление initramfs: После каждой сборки и установки нового ядра обязательно обновляйте initramfs. Это поможет убедиться, что необходимые модули и драйверы загружены во время первоначальной загрузки:

    sudo update-initramfs -u
  3. Обновление загрузчика GRUB: После установки нового ядра убедитесь, что загрузчик GRUB обновлён. Это поможет GRUB корректно обнаружить новое ядро:

    sudo update-grub
  4. Проверка параметров UEFI: Убедитесь, что ваш UEFI настроен на загрузку в режиме UEFI, а не в режиме совместимости (Legacy). Возможно, стоит проверить настройки UEFI BIOS, чтобы исключить блокировку загрузки некоторых компонентов.

  5. Мониторинг логов: Если проблема сохраняется, изучите логи загрузки системы (dmesg, /var/log/syslog и т.д.) для получения дополнительной информации о том, что происходит в момент загрузки.

Заключение

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

Пусть ваш опыт с компиляцией ядра станет положительным путем согласованного анализа и системных улучшений!

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

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