Вопрос или проблема
Я хотел бы удалить (нефункциональную) дубликатную установку grub. У меня получилось две разные установки grub после копирования раздела Kubuntu с другого ПК и попытки установить grub вручную. После часов попыток заставить это работать (я не мог избавиться от ошибок “нет такого устройства” + “неизвестная файловая система” при загрузке grub), я просто сдался и переустановил Kubuntu с нуля. Теперь у меня это:
$ efibootmgr
BootCurrent: 0005
Timeout: 1 секунд
BootOrder: 0000,0002,0005,0001
Boot0000* Windows Boot Manager
Boot0001* Жесткий диск
Boot0002* grub
Boot0005* ubuntu
Boot0002 grub является неработающим. Из того, что я прочитал, я могу удалить его с помощью efibootmgr -Bb 0002
, но я полагаю, что это только удаляет запись загрузки, а не саму установку grub. Как я могу убедиться, что grub правильно удален перед удалением соответствующей записи?
Правка: Я нашел решение здесь, но оно требует Windows (у меня двойная загрузка). Оставляю этот вопрос открытым, так как кто-то может быть заинтересован в решении только для Linux.
Вы можете проверить, есть ли у вас неиспользуемые/старые пакеты ядра, и это эффективно также удаляет записи grub и освобождает место на жестком диске. Для этого вам нужно проверить, какие ядра установлены, используя:
sudo dpkg -l | grep linux-image
Затем вы можете удалить неиспользуемый/старый образ ядра, если такие существуют, используя:
sudo apt-get remove linux-image-version_number
version_number – это версия ядра, которую вы хотите удалить, обычно вы хотите иметь как минимум две версии на жестком диске на случай, если у вас возникнут проблемы с новой обновленной версией ядра.
/etc/default/grub
Этот файл содержит основные настройки, которые пользователь может настроить. Опции включают время отображения меню, ОС по умолчанию для загрузки и т.д. Записи в этом файле могут редактироваться пользователем с правами администратора (root) и включаются в grub.cfg при его обновлении. Опции по умолчанию, включенные в файл при установке, составляют лишь небольшое количество переменных, которые GRUB 2 может распознавать.
Хотя наиболее распространенные параметры присутствуют в файле по умолчанию, доступны дополнительные переменные окружения для включения в этот файл. Это включает такие элементы, как фоны и темы. Предопределенные переменные содержатся в /usr/sbin/grub-mkconfig
и могут быть перечислены с помощью следующей команды:
grep "export GRUB_DEFAULT" -A50 /usr/sbin/grub-mkconfig | grep GRUB_
После внесения изменений в файл вы должны выполнить эту команду, чтобы сделать изменения постоянными:
sudo update-grub
Примечательной особенностью загрузчиков UEFI является то, что они фактически представляют собой просто файлы в определенном месте, а не какую-то загадочную магию, которую нужно применять к дискам с помощью специальных команд.
Сначала используйте efibootmgr -v
, чтобы просмотреть путь к загрузочному файлу. Все загрузчики UEFI нормально установленных ОС находятся в разделе EFI System Partition, в подкаталоге директории EFI
. Каждый загрузчик/менеджер получает свой собственный подкаталог, что облегчает удаление нежелательных загрузчиков.
В качестве примера я предположу, что путь загрузчика нежелательной записи Boot0002
будет чем-то вроде .../File(\EFI\grub\grubx64.efi)
. Да, это обычно в формате пути, похожем на Windows, и он относительно корневого каталога EFI System Partition.
В Linux большинство дистрибутивов монтируют раздел EFI System Partition в /boot/efi
, но некоторые могут монтировать его просто в /boot
(Arch?) или оставлять размонтированным (Gentoo?). Предполагая, что ваш монтирует его в /boot/efi
, вам нужно добавить это к пути в формате Windows, который вы выяснили на предыдущем этапе, и теперь вы будете знать, что в представлении Linux структуры директорий, нежелательный загрузчик Boot0002
находится в каталоге:
/boot/efi/EFI/grub/
Как только вы знаете этот путь, избавиться от него будет всего лишь два простых шага:
sudo efibootmgr -B -b 0002 # сделать так, чтобы UEFI забыла об этом загрузчике
sudo rm -r /boot/efi/EFI/grub # и фактически удалить его
И вот так нежелательный загрузчик UEFI будет полностью удален!
Некоторые реализации прошивки UEFI автоматически удаляют любые записи загрузки UEFI, которые больше недоступны – другими словами, иногда достаточно просто удалить каталог загрузчика.
Ответ или решение
Удаление дубликата установки GRUB: Полное руководство
Если вы столкнулись с дублирующейся установкой загрузчика GRUB после копирования раздела Kubuntu с другого компьютера и пытаетесь удалить неисправную запись, это может быть неприятной и запутанной задачей, особенно если вы хотите сделать это с помощью Linux. Вот подробное руководство, которое подскажет вам, какие шаги предпринять для безопасного удаления ненужной установки GRUB.
Шаг 1: Определение проблемы
Исходя из вашего описания, вы уже используете efibootmgr
, чтобы просмотреть текущие загрузочные записи. У вас есть следующие загрузочные записи:
Boot0000* Windows Boot Manager
Boot0001* Hard Drive
Boot0002* grub
Boot0005* ubuntu
Запись Boot0002 grub
— это ненужная. Перед тем как ее удалить, важно точно определить, какой путь используется для загрузчика GRUB. Используйте команду:
sudo efibootmgr -v
Это покажет вам, где находится файл загрузчика GRUB, который вы собираетесь удалить.
Шаг 2: Поиск файла загрузчика
GRUB находится в EFI-системном разделе, который обычно монтируется в /boot/efi
. По умолчанию для GRUB путь к файлу будет выглядеть как /boot/efi/EFI/grub/grubx64.efi
. Проверьте его расположение, чтобы быть уверенным, что вы удаляете именно тот файл, который вам не нужен.
Шаг 3: Удаление ненужной записи загрузчика
Теперь мы можем удалить запись загрузчика, выполнив следующую команду:
sudo efibootmgr -B -b 0002
Эта команда уберет запись Boot0002
, и ваш компьютер больше не будет пытаться загрузить неисправный GRUB.
Шаг 4: Физическое удаление файла загрузчика
Следующим шагом является физическое удаление файлов GRUB. Убедитесь, что вы нашли правильный путь к загрузчику, и выполните следующую команду для удаления:
sudo rm -rf /boot/efi/EFI/grub
Это удалит все файлы, связанные с этой установкой GRUB из EFI-системного раздела.
Шаг 5: Очистка старых ядер
Если вы хотите также освободить место на диске, рекомендуется проверить наличие старых и неиспользуемых пакетов ядра. Выполните следующую команду, чтобы просмотреть установленные ядра:
sudo dpkg -l | grep linux-image
Если вы обнаружите устаревшие версии, можете их удалить:
sudo apt-get remove linux-image-версия_ядра
При этом оставляйте хотя бы две версии ядра, чтобы иметь возможность восстановиться, если возникнут проблемы с новой версией.
Заключение
Теперь вы успешно удалили неработающую установку GRUB и избавились от ненужной записи в UEFI. Данная процедура не только улучшит работу вашего компьютера, но и обеспечит более стабильную загрузку системы. Если вы следовали всем шагам, ваш GRUB больше не должен вызывать ошибок, связанных с "нет такого устройства" или "неизвестная файловая система". Позаботьтесь о регулярно актуализированном состоянии своих загрузчиков систем, чтобы избежать подобных проблем в будущем.