Вопрос или проблема
Проблема XY: У меня есть несколько Live OS Debian (созданных с помощью live-build
) на нескольких дисках в системе, но какой бы диск я ни загружал, он просто загружает squashFS с первого диска.
Кажется, параметр boot=live
ищет файлы в директории /live
(которая содержит filesystem.squashfs
), однако, похоже, что GRUB просто получает эту папку с корневого устройства (которое, по-видимому, статично в зависимости от того, как BIOS видит диски) и не с устройства, с которого выбрано загрузка*.
Существует ли способ заставить GRUB установить корневое устройство как диск, с которого был загружен EFI? Или есть другой масштабируемый / неблокированный способ загрузить желаемый squashFS?
*Это также немного странно, потому что когда live OS ‘записывается’ на диск, в EFI нет опции загрузки с диска, но он все равно загрузочный 🤔
Ответ или решение
Как настроить GRUB для установки корневого устройства как устройства EFI
В современном многофункциональном окружении компьютерных систем, использование нескольких операционных систем на разных дисках может стать сложной задачей, особенно когда дело касается загрузки live-образов. Ваша проблема с Debian Live OS заключается в том, что GRUB загружает squashFS с первого диска, игнорируя выбранный для загрузки. Мы обсудим решения этой проблемы и способы настройки GRUB таким образом, чтобы он автоматически устанавливал корневое устройство как устройство, к которому был осуществлён EFI-загрузка.
Понимание проблемы
Когда вы загружаете live-образ с определённого диска, возможно, вы ожидаете, что система будет искать необходимые файлы (включая filesystem.squashfs
) именно на этом диске. Однако, GRUB может не учитыватьативное определение этого устройства и вместо этого полагается на статически установленное корневое устройство, что приводит к неудаче загрузки live-образа.
Настройка GRUB
-
Обновление конфигурации GRUB:
Убедитесь, что ваша конфигурация GRUB обновлена. Используйте команду:sudo update-grub
Это обеспечит обнаружение всех доступных операционных систем и корректное создание необходимых конфигурационных записей.
-
Применение правильных параметров загрузки:
Чтобы GRUB загружал live-образ с корректного диска, необходимо установить правильные параметры загрузки. В файле конфигурации GRUB (/etc/default/grub
), добавьте следующий параметр:GRUB_CMDLINE_LINUX="boot=live root=live:LABEL=<label_вашего_диска>"
Замените
<label_вашего_диска>
на метку вашего live-образа. Это укажет системой на правильное место для поиска файлов. -
Использование EFI-загрузчика:
Если система использует UEFI, вы можете добавить вход в GRUB, который указывает на конкретный EFI-диск. Откройте файл/boot/grub/grub.cfg
и добавьте следующие строки в секцию меню:menuentry "Debian Live" { set root=(hdX,gptY) linux /live/vmlinuz boot=live initrd /live/initrd.img }
Замените
hdX,gptY
на соответствующие номер и раздел вашего диска. -
Автоматизация выбора корневого устройства:
Для автоматической настройки корневого устройства из переменнойrootdevice
, можно использовать следующее решение:set rootdevice=`blkid -o value -s UUID $(efibootmgr | grep 'BootOrder' | awk '{print $2}' | xargs -I {} lsblk -n -o NAME /dev/disk/by-uuid/{})`
Этот код позволит GRUB автоматически определять корневое устройство, с которого осуществляется загрузка.
Дополнительные рекомендации
- Эффективное использование инструментов: Рассмотрите возможность использования
grub-customizer
для более простого редактирования и настройки путей загрузки вашего GRUB. - Проверка путей загрузки: Убедитесь, что все пути к файлам
vmlinuz
иinitrd.img
указаны корректно, так как их неправильное указание станет причиной ошибок загрузки. - Создание резервной копии: Перед внесением любых изменений в конфигурацию GRUB обязательно создайте резервную копию текущих настроек, чтобы иметь возможность восстанавливать систему в случае возникновения непредвиденных ошибок.
Заключение
Настройка GRUB для правильной работы с несколькими Debian Live OS на разных дисках требует внимательного подхода к конфигурации и параметрам загрузки. Следуя приведённым рекомендациям, вы сможете создать универсальное решение, которое будет автоматически определять корневое устройство во время загрузки. Надеемся, что это руководство поможет вам эффективно справиться с проблемой и улучшить вашу систему многозагрузки.