Переключение между KDE Linux и другой операционной системой
Если KDE Linux установлена вместе с другой операционной системой на базе Linux, обычно обе доступны через меню загрузки встроенного ПО компьютера — оно вызывается нажатием клавиши, например F12, во время запуска компьютера.
Такой подход работает, но при каждой перезагрузке нужно успеть нажать клавишу в течение секунды или двух. На этой странице описывается, как добавить пункт для каждой системы в меню загрузки другой системы, чтобы переключаться между ними через меню, которое дождётся вашего выбора.
В какой системе я это выполняю?
Каждый раздел ниже помечен тем, в какой системе выполняются его команды: эти две системы не взаимозаменяемы.
- В KDE Linux для команд администратора используется
run0, как и везде в этой документации. - В другой системе, скорее всего, вместо этого используется
sudo, а расположение файлов зависит от дистрибутива.
Выполнение команды не в той системе в лучшем случае просто ничего не даст.
Если другая система также использует systemd-boot
Обычно настраивать ничего не нужно. systemd-boot ищет пункты меню на ESP, поэтому если обе системы используют один и тот же раздел, обе уже должны быть в общем меню.
Для проверки выполните следующее в KDE Linux или в другой системе:
bootctl list
Если другая система использует GRUB
GRUB и systemd-boot не видят друг друга автоматически, поэтому пункт меню придётся добавить с каждой стороны.
Добавление KDE Linux в меню GRUB
Выполните это в другой системе, той, которая использует GRUB.
Добавьте следующее в /etc/grub.d/40_custom ниже уже существующих строк:
menuentry "systemd-boot" --class systemd {
insmod part_gpt
insmod fat
insmod chain
search --no-floppy --file --set=root /EFI/systemd/systemd-bootx64.efi
chainloader /EFI/systemd/systemd-bootx64.efi
}
Ничего менять в нём не нужно: bootctl всегда устанавливает systemd-boot по одному и тому же пути, в каком бы дистрибутиве его ни запускали.
Затем сделайте файл исполняемым и повторно создайте конфигурацию GRUB:
sudo chmod +x /etc/grub.d/40_custom sudo grub-mkconfig -o /boot/grub/grub.cfg
В некоторых дистрибутивах они называются по-другому — например, grub2-mkconfig и /boot/grub2/grub.cfg в Fedora и openSUSE. Уточните, что используется в вашем дистрибутиве.
Добавление GRUB в меню KDE Linux
Выполните это в KDE Linux.
В этом направлении сначала нужно узнать, где GRUB расположен на ESP. Единого ответа нет: каждый дистрибутив выбирает там собственное имя каталога, поэтому путь нужно выяснить, а не скопировать отсюда.
Чтобы найти его:
run0 find /boot -name 'grub*.efi' 2>/dev/null
В полученном результате отбросьте всё, что стоит перед /EFI. Если получилось /boot/EFI/debian/grubx64.efi, нужный путь — /EFI/debian/grubx64.efi.
Если включён Secure Boot, поищите в том же каталоге файл shimx64.efi и, если он есть, укажите путь к нему. Такой файл есть не в каждом дистрибутиве.
Теперь откройте текстовый редактор, создайте в домашнем каталоге файл grub.conf и поместите в него следующее:
title GRUB ([здесь укажите имя другой ОС]) efi [здесь укажите путь к файлу EFI, например /EFI/debian/grubx64.efi] sort-key zz-grub
Замените выделенную часть в первой строке на желаемое название пункта меню, а во второй — на только что найденный путь. Затем переместите файл на место:
run0 mv ~/grub.conf /boot/loader/entries/grub.conf
Теперь команда bootctl list должна показывать этот пункт, а при следующей перезагрузке он появится в конце меню загрузки.
Примечания
- Если в обоих меню пунктом по умолчанию выбран другой загрузчик, задайте хотя бы одному из них ненулевое время ожидания — иначе система будет метаться между ними, как частица в ускорителе. Лучше так не делать.
- Общий раздел ESP хранит ядра обеих систем, поэтому может заполниться. Если обновления начнут завершаться с ошибкой, стоит посмотреть вывод
df -h /boot. - Обновления в любой из систем могут изменить порядок загрузки во встроенном ПО или удалить пункты меню. Если что-то неожиданно изменилось, начинать разбираться стоит с
efibootmgr -vиbootctl list. - Если у систем разные разделы EFI (ESP), сторона GRUB, возможно, ещё будет работать, а сторона systemd-boot, как правило, нет: он загружает файлы только со своего ESP.
Статья предоставлена Hadi Chokr и распространяется под лицензией CC-BY-4.0.