Перейти к содержимому

Переключение между 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.

Статья предоставлена и распространяется под лицензией CC-BY-4.0.