%20grub-update%20%D0%BD%D0%B5%20%D0%BD%D0%B0%D1%85%D0%BE%D0%B4%D0%B8%D1%82%20%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%83%20%D0%B4%D1%80%D1%83%D0%B3%D0%BE%D0%B3%D0%BE%20%D0%B4%D0%B8%D1%81%D0%BA%D0%B0%20(Fedora%2034%20KDE).png)
У меня установлено несколько систем; сначала, в хронологическом порядке, Windows 10, затем Kubuntu 20.04, затем Fedora 34 KDE, а затем KaOS. Fedora находится одна на втором диске, со своим отдельным EFI, но делит его с KaOS.
Конфигурация выглядит следующим образом:
Device Start End Sectors Size Type
/dev/nvme0n1p1 2048 739327 737280 360M EFI System
/dev/nvme0n1p2 739328 1001471 262144 128M Microsoft reserved
/dev/nvme0n1p3 1001472 457750527 456749056 217,8G Microsoft basic data
/dev/nvme0n1p4 457750528 459757567 2007040 980M Windows recovery environment
/dev/nvme0n1p5 459757568 500107263 40349696 19,2G Microsoft basic data
/dev/nvme0n1p6 500107264 644737022 144629759 69G Linux filesystem
/dev/nvme0n1p7 644737023 976773134 332036112 158,3G Linux filesystem
Device Start End Sectors Size Type
/dev/sda1 2048 1230847 1228800 600M EFI System
/dev/sda2 251660288 1258293247 1006632960 480G Linux filesystem
/dev/sda3 1258293248 1875384319 617091072 294,3G Microsoft basic data
/dev/sda4 1230848 3327999 2097152 1G Linux filesystem
/dev/sda5 3328000 251660287 248332288 118,4G Linux filesystem
/dev/nvme0n1p1
это раздел EFI для Windows (установлен на /dev/nvme0n1p2
) 5
и Ubuntu (установлен на nvme0n1p6
),
/dev/sda1
это раздел EFI для Fedora ( /dev/sda4
и 5
) и KaOS ( /dev/nvme0n1p7
)
Этот странный выбор связан с тем, что предыдущая установка другого Linux, помимо Kubuntu, использующего тот же EFI, что и Windows, привела к повреждению загрузки Windows; это было исправлено переустановкой Kubuntu, которая добавила Windows в свое загрузочное меню; я хотел избежать такого вмешательства в работу Windows и поэтому установил Fedora на отдельный диск с собственным EFI, а затем, когда я установил KaOS на тот же диск, что и Windows, я выбрал использование EFI с другого диска, разделив его с Fedora.
После установки KaOS его загрузочное меню (запускается systems-boot
, а не grub
)не показал другие системы.
Меню загрузки Fedora и Ubuntu были скрыты в интерфейсе прошивки UEFI. Fedora включала все системы.В загрузочное меню kUbuntu включено все, кроме Fedora.
Я использовал восстановление загрузки, пытаясь сделать меню загрузки Fedora загрузочным по умолчанию, потому что оно было наиболее полным (установив grub на sda1
), но не было опции "загрузить сначала" Fedora: поэтому я выбрал Kubuntu. Это привело кЗагрузочное меню Kubuntu становится загрузочным меню по умолчанию, отсутствует только Fedora.
Учитывая, что Kubuntu grub теперь контролирует, я хотел бы использовать его и просто добавить Fedora к нему. Обновление grub не помогает.
EDIT-1, после комментариев @oldfred:
отчет о ремонте багажникапастебин-такжеЗДЕСЬ(спросили в комментариях)
EDIT-2, после ответа @oldfred:
Я просмотрел файлы Kubuntu grub.cfg и обнаружил, что список загрузки Kubuntu определяется файлом boot/grub/grub.cfg
путем добавления в него записи меню.
Просматривая файл Fedora grub.cfg, который мне удалось найти: там отсутствуют записи Fedora, перечислены только остальные системы. Только они также видны в Grub Customizer в Fedora: записи Fedora в ее собственном списке загрузки, похоже, определяются отдельными файлами из /loader/entries/
ее корневого раздела ext4 размером 1 ГБ (sda4). Копирование их в /boot/efi/loader/entries/ Kubuntu не дает никакого эффекта.
Не имея собственной модели Fedora для записи в Kubuntu boot/grub/grub.cfg
, я скопировал и изменил строки, которые я там нашел для KaOS — добавив спецификации Fedora, а именно UUID. Я не уверен, что форматирование правильное, оно именно такое для KaOS в этом файле, с измененным только названием дистрибутива и UUID:
menuentry 'Fedora 34 KDE' --class Fedora --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-4834b108-13c9-406c-8a7b-a9c53440283c' {
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod fat
set root='hd0,gpt1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 F4F4-1172
else
search --no-floppy --fs-uuid --set=root F4F4-1172
fi
echo 'Loading Linux linux ...'
linux /vmlinuz-linux root=UUID=4834b108-13c9-406c-8a7b-a9c53440283c rw quiet
echo 'Loading initial ramdisk ...'
initrd /initramfs-linux.img
}
Таким образом, имя Fedora, конечно, добавляется в список загрузки, но не работает:
с UUID раздела bfrs
( sda5
) я получаю сообщение:
mount: new/-root: unknown filesystem type ‘btrfs’
Я попробовал, на всякий случай, с UUID «корневого» раздела Fedora ( sda4
), и получил сообщение:
Error: root device mounted successfully but sbin/init does not exist
Я думаю, что правильным способом будет добавить UUID раздела sda5
; он должен быть указан во всех трех вышеупомянутых файлах Fedora./loader/entries/
Похоже, grub не распознает btrfs.
Я установил все файлы, связанные с «btrfs», которые смог найти с помощью Apper, около 30 пакетов, но происходит то же самое.
РЕДАКТИРОВАТЬ-3
Из дальнейших комментариев я понял, что мне нужно не редактировать boot/grub/grub.cfg
, а редактировать файл etc/grub.d/40_custom
и копировать туда части других файлов. Но я не понимаю, какие файлы мне следует использовать. Я не смог найти на собственных разделах Fedora ничего, связанного с ее собственной загрузкой и ее собственной записью в списке загрузки, кроме файлов в ext4
- /loader/entries
. Так это из одного из них, который мне следует скопировать?
Это что-то вроде этого, скопированное отсюда /media/root/651b659a-8fc5-46d6-b291-22b3b523ebaf/loader/entries/a037a4898b9540bfbc52f3f377b2ff4d-5.13.19-200.fc34.x86_64.conf
(то есть из раздела Fedora ex4 размером 1 ГБ sda4):
title Fedora (5.13.19-200.fc34.x86_64) 34 (KDE Plasma)
version 5.13.19-200.fc34.x86_64
linux /vmlinuz-5.13.19-200.fc34.x86_64
initrd /initramfs-5.13.19-200.fc34.x86_64.img
options root=UUID=4834b108-13c9-406c-8a7b-a9c53440283c ro rootflags=subvol=root rhgb quiet
grub_users $grub_users
grub_arg --unrestricted
grub_class kernel
Или это что-то вроде записи для KaOS в файле Kubununtu, boot/grub/grub.cfg
размещенном выше в разделе EDIT-2?
решение1
Я установил Fedora один раз, но до этого она использовала btrfs. Но моя запись grub в Ubuntu chainloaded или configfile в загрузочную запись UEFI. Я добавил их в 40_custom в grub Ubuntu. UUID уникальны, и вам нужно изменить их на UUID вашей установки. Чтобы загрузить напрямую в grub
menuentry "Fedora UEFI" {
search --file --no-floppy --set=root F496-1330
chainloader (${root})/efi/fedora/grub.cfg
}
Часто можно просто скопировать загрузочную строфу для grub из одной установки в другую. Именно это и делает os-prober. Вам могут понадобиться дополнительные драйверы (btrfs) или файлы .mod grub2 (например, btrfs.mod), чтобы он распознавал различные форматы или конфигурации. Если вы используете rEFInd, вам нужно перевести строфу grub в refind.conf. Файл конфигурации — это ссылка на другой файл, который является grub или имеет загрузочные строфы типа grub.
menuentry "Fedora UEFI" {
search.fs_uuid a9bd9a65-bc8c-41b1-95b1-2dceb66b2652 root hd1,gpt2
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg
}
Использование 40_custom и пользовательского меню
https://help.ubuntu.com/community/Grub2/CustomMenus
Файл конфигурации:
https://www.gnu.org/software/grub/manual/grub/grub.html#Multi_002dboot-manual-config
https://ubuntuforums.org/showthread.php?t=2076205&page=54&p=13788092#post13788092