Как управлять автоматически сгенерированными записями grub для других операционных систем?

На моем компьютере установлена ​​Ubuntu 19.04 вместе с Windows 10 и Fedora 29.

В Ubuntu запуск sudo update-grub дает следующее:

Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.0.0-13-generic
Found initrd image: /boot/initrd.img-5.0.0-13-generic
Found linux image: /boot/vmlinuz-4.18.0-18-generic
Found initrd image: /boot/initrd.img-4.18.0-18-generic
Found Windows Boot Manager on /dev/nvme0n1p1@/EFI/Microsoft/Boot/bootmgfw.efi
Found Fedora 29 (Workstation Edition) on /dev/mapper/fedora-root
Adding boot menu entry for EFI firmware configuration
done

, который, на мой взгляд, выглядит нормально, он обнаруживает как Windows Boot Manager, так и Fedora 29 и настраивает меню grub, позволяющее мне выбирать между различными операционными системами во время загрузки.

Моя проблема в том, что Fedora требует особой конфигурации для решения некоторых проблем с графическим драйвером. В частности, для этой записи меню grub необходимо добавить параметры rd.driver.blacklist = nouveau modprobe.blacklist = nouveau .

Я могу исправить это, вручную отредактировав файл /boot/grub/grub.cfg , но это изменение будет перезаписано при следующем запуске update-grub , поэтому это не так. хорошее решение. Кроме того, файл /boot/grub/grub.cfg , который я затем редактирую, начинается с комментария «НЕ РЕДАКТИРУЙТЕ ЭТО ФАЙЛ», что также указывает на то, что мне, возможно, не следует его редактировать.

Мой вопрос: как мне добавить дополнительные параметры загрузки для записи Fedora grub, которая создается при запуске sudo update-grub в Ubuntu?

В есть несколько параметров. ] / etc / default / grub файл, который используется update-grub , например, я могу выбрать там GRUB_TIMEOUT, который работает нормально, но, насколько я знаю, этот файл не позволяет мне указать варианты загрузки для других операционных систем, только для самого Ubuntu.

Чтобы еще больше прояснить, что я имею в виду, автоматически сгенерированный файл /boot/grub/grub.cfg (созданный update-grub ) содержит раздел, похожий на этот, с указанием как загружается Fedora, если выбран этот параметр меню grub:

menuentry 'Fedora 29 (Workstation Edition) (on /dev/mapper/fedora-root)' --class fedora --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-6398dc3c-28e3-4947-ad82-d9defe5d9a28' {
    insmod part_gpt
    insmod ext2
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root  b00e70c6-820f-4615-b95d-c933eaea0d3f
    else
      search --no-floppy --fs-uuid --set=root b00e70c6-820f-4615-b95d-c933eaea0d3f
    fi
    linux /vmlinuz-5.0.9-200.fc29.x86_64 root=/dev/dm-2
    initrd /initramfs-5.0.9-200.fc29.x86_64.img
}

и я бы хотел, чтобы приведенное выше выглядело немного иначе, добавив в конце параметры rd.driver.blacklist = nouveau modprobe.blacklist = nouveau строки, начинающейся с linux . Есть ли способ указать update-grub сделать это?

Я видел предложение здесь о редактировании /etc/grub.d/40_custom ], но это решение означает написание всего элемента меню вручную, чтобы оно не могло адаптироваться при изменении версии ядра в Fedora. Автоматически сгенерированная запись меню, созданная с помощью update-grub , имеет то преимущество, что она дает последнее ядро ​​Fedora, я хотел бы использовать ее и просто добавить что-нибудь в строку «linux» внутри автоматически сгенерированной статьи меню.Можно ли это сделать, и если да, то как?

0
задан 29 April 2019 в 14:11

1 ответ

Вот мое неэлегантное решение.

  1. Откройте /etc/grub.d/30_os-prober для редактирования.

  2. Найдите строку, в которой определено LPARAMS, и измените ее значение на любое, которое вы хотите добавить в конец строки linux в пункте меню grub. Включите все необходимые параметры (включая корневое значение) с соответствующим интервалом. В качестве меры предосторожности оставьте исходную строку LPARAMS, но закомментируйте.

  3. Запустите update-grub.

Этот процесс добавит ваши дополнения в качестве параметров для каждой запрашиваемой ОС Linux.

Конечно, есть более конкретный способ сделать это, добавив пользовательскую логику в /etc/grub.d/30_os-prober, но я не знаю, как это сделать.

1
ответ дан 15 December 2020 в 16:50

Другие вопросы по тегам:

Похожие вопросы: