Известно, что обновления GRUB приводят к тому, что компьютеры Linux загружаются в настройки BIOS или UEFI. Для устранения этой ошибки используется полезный прием восстановления системы, о котором вам следует знать.
Пример: GRUB 2:2.06.r322
Системное обновление для дистрибутивов Linux Arch и Arch-based летом 2022 года включало новую версию GRUB. GRUB расшифровывается как gr and u nified b ootloader.
Загрузчик — это приложение, которое запускает процесс загрузки при включении компьютера. Несколько программных инструментов и утилит должны быть запущены из нужного раздела и в нужном порядке, чтобы в итоге получилась работоспособная и доступная операционная система. GRUB запускает этот каскад событий.
Если на вашем компьютере установлено несколько операционных систем, GRUB предоставляет меню, в котором можно выбрать, какую операционную систему использовать. Одно из изменений кода в GRUB 2:2.06.r322 добавило поддержку новой опции GRUB, —is-supported . Эта опция используется для указания наличия или отсутствия возможности загрузки в микропрограмму. Если она есть, GRUB добавляет в меню загрузки пункт, позволяющий загрузиться в настройки EUFI.
Новая опция была упомянута в скрипте под названием «30_uefi-firmware.in». Разница для этого файла показывает, что оператор if был удален, а две строки были добавлены.
Одна из новых строк была заменой оператора if. Другая новая строка содержит fwsetup —is-supported . «fw» в «fwsetup» означает прошивку. Но поскольку эта строка находится над новым оператором if, она будет выполняться всегда. Если бы она находилась в теле оператора if, она бы выполнялась только тогда, когда тест в операторе if принимает значение true.
Это вызывало проблемы на многих, но не на всех компьютерах с UEFI. Это зависело от того, поддерживала ли версия GRUB, которая уже была установлена, эту команду. Затронутые машины выполняли одно из двух действий. Они либо входили в цикл загрузки, где процесс загрузки не завершался, а постоянно перезагружался, либо компьютер загружался прямо в настройки прошивки UEFI. В любом случае, не было способа заставить компьютер загрузиться в Linux.
Когда вы сталкиваетесь с подобными ситуациями, всегда есть ядерный вариант — полная переустановка. Это сработает, но в зависимости от того, как был разбит жесткий диск, без недавней резервной копии вы можете потерять данные.
В малотравматичном методе используется chroot и Live USB или Live CD/DVD. Это хорошая техника, которую нужно понимать и иметь в рукаве на случай всевозможных системных сбоев, когда вы не можете загрузиться или войти в свой Linux-компьютер.
Техника, которую мы будем использовать
Чтобы использовать эту технику, вам нужно иметь загрузочный USB или CD/DVD с дистрибутивом Linux, который загружается в живой экземпляр Linux. Обычно такие диски называются Live USB или Live CD/DVD. Все основные дистрибутивы
Когда вы загрузитесь с живого носителя, вы сможете смонтировать и получить доступ к существующей файловой системе. Ваша установленная файловая система будет отображаться как часть файловой системы Linux, загруженной с живого носителя. Это замечательно. Если мы можем получить к ней доступ, у нас есть шанс восстановить ее. Но при этом возникает проблема.
Корнем этой гибридной файловой системы является корень файловой системы живого носителя, а не корень установленной файловой системы. Чтобы пути к файлам, настроенные в вашей системе Linux, ссылались на правильные целевые места — где-то внутри вашей файловой системы, а не где-то относительно корня живой Linux — нам нужно использовать chroot, чтобы установить новый корень, указывающий на корень вашей установленной файловой системы. Другими словами, пути, начинающиеся с «/», будут использовать корень вашей файловой системы в качестве начальной точки.
На тестовом компьютере, который мы использовали для этого, используется файловая система ext4, но вы можете использовать эту технику и для других файловых систем. Вам просто нужно определить, какие разделы или тома вам нужно смонтировать, и куда их монтировать. Принципы работы одинаковы.
Применение на практике
Мы создали загрузочный USB-накопитель и загрузили с него наш пострадавший компьютер. Мы использовали дистрибутив EndeavourOS. Живой носитель EndeavourOS загружается в среду рабочего стола XFCE 4.
Чтобы определить, какой раздел является корнем файловой системы, а какой — загрузочным разделом, откройте окно терминала и используйте команду fdisk. Мы используем опци ю-l (list partition). Вам также потребуется использовать sudo.
sudo fdis k-l
Прокрутите вывод, пока не увидите записи с метками "EFI System" и "Linux filesystem".
На этом компьютере они находятся на жестком диске sda. Они находятся в первом и втором разделах, на что указывают метки разделов /dev/sda1 и /dev/sda2 .
На вашем компьютере они могут находиться на разных жестких дисках и в разных разделах. Запомните, на каких разделах они находятся, нам нужно будет использовать их в следующих командах.
Нам нужно смонтировать файловые системы на этих разделах, присоединив их к живой файловой системе. Команда mount сделает это за нас. Помните, что метки ваших разделов, скорее всего, будут другими, поэтому убедитесь, что вы используете метки из результатов команды fdisk.
sudo mount /dev/sda2 /mnt
sudo mount /dev/sda1 /mnt/boot/efi
Чтобы эффективный корень файловой системы начинался с корня вашей реальной, установленной файловой системы, мы используем chroot, чтобы установить корень в точку монтирования "/mnt". Это место, где корень установленной файловой системы будет привит к живой файловой системе.
sudo chroot /mnt
Обратите внимание, что командная строка изменилась и показывает, что теперь вы вошли в систему как root, и находитесь в корневом каталоге "/" файловой системы вашего компьютера.
Мы можем легко проверить это, перейдя в каталог «/home» и проверив, какие каталоги существуют внутри него.
cd /home
Вы должны увидеть каталог для каждого пользователя, настроенного на вашем компьютере, включая каталог для вашей собственной учетной записи. На этом компьютере есть один пользователь, которого зовут "dave". Если бы мы использовали команду cd /home до использования команды chroot, мы бы вошли в каталог "/home" живой файловой системы.
Чтобы было понятно, теперь вы получаете доступ к реальной файловой системе как пользователь root, поэтому будьте осторожны.
Чтобы исправить проблему с GRUB 2:2.06.r322, нам нужно было всего лишь выполнить команду grub-install.
grub-install
Запускать grub-install вслепую обычно не рекомендуется. В данном случае это было необходимо.
Восстановление или замена
Если вы пытаетесь устранить другую проблему, вам нужно обратиться на форумы вашего дистрибутива, чтобы найти подходящее решение для вашей проблемы. Если это распространенная жалоба, вы скоро найдете ее решение.
По крайней мере, теперь, когда вы можете получить доступ к своей файловой системе, вы можете скопировать свои данные на какой-нибудь съемный носитель. Если вы решите сделать полную переустановку, вы не потеряете данные.
Загрузочный носитель EndeavourOS в среде рабочего стола XFCE