измените порядок загрузчика GRUB в GRUB

В нашей системе существует две установленные операционных системы Ubuntu.

Во время начальной загрузки спрашивает GRUB, от которого Ubuntu загрузиться, но теперь я должен добавить новый пункт меню в GRUB и что пункт меню позволит пользователю изменять Linux по умолчанию для начальной загрузки.

enter image description here

В изображении выше, я должен добавить третий пункт меню, это меню позволяет пользователю выбирать новую операционную систему начальной загрузки по умолчанию. Если пользователь выберет "Установленный по умолчанию Linux 2", то следующий раз на порядке загрузки перезагрузки будет похож в изображении ниже.

enter image description here

Я нашел документацию об изменяющемся порядке загрузки, но те документы описывают процесс в рамках Ubuntu, я хочу достигнуть этого в самом GRUB. Как я могу сделать это?

1
задан 12 July 2018 в 20:39

2 ответа

Мы можем достигнуть этого блока Среды Личинки использования. Блок Среды хранится в /boot/grub/grubenv и этот файл является немного особенным, он имеет предварительно выделенный размер 1 024 байтов. Мы не должны редактировать этот файл с текстовым редактором, даже если можно открыть этот файл с текстовым редактором для отображения, это довольно.

Мы можем отредактировать /boot/grub/grubenv с различными инструментами:

Терминальная команда sudo grub-editenv [OPTION...] FILENAME COMMAND, см. также man grub-editenv

Команда записи меню save_env [-f file] var, посмотрите детали в Руководстве Личинки GNU

Если файл /boot/grub/grubenv не выходит, можно создать его с

sudo grub-editenv /boot/grub/grubenv create

Мы должны будем создать некоторые записи пользовательского меню, https://help.ubuntu.com/community/Grub2/CustomMenus предоставляет полезную информацию, как сделать это.Править /etc/grub.d/40_custom так, чтобы это было похоже на это:

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
#
submenu 'Set boot default' {
    menuentry 'Set first entry as default' {
            set saved_entry=0
                save_env saved_entry
                reboot  
    }
    menuentry 'Set second entry as default' {
        set saved_entry=1
                save_env saved_entry
                reboot
    }
}

Если у нас уже есть записи пользовательского меню в файле, мы просто добавляем строки после строк комментария в наш файл. Команды в записях меню действуют следующим образом:

set saved_entry    set the environment variable saved_entry to the specified value.
Save_env saved_entry    stores the variable saved_entry in /boot/grub/grubenv.
reboot                  reboot the machine

Кроме того, мы должны будем отредактировать /etc/default/grub который содержит основную конфигурацию Личинки. Снова, в Руководстве Личинки GNU мы найдем подробную информацию.

В /etc/default/grub мы должны изменить значение для GRUB_DEFAULT кому: GRUB_DEFAULT=saved. Это вынудит Личинку загрузить запись меню по умолчанию из /boot/grub/grubenv когда мы загружаемся. Если Вы находите строку с GRUB_SAVEDEFAULT=true, удалите эту строку.

Для применения изменений, мы сделали к основному конфигурационному файлу Личинки /boot/grub/grub.cfg мы должны работать sudo update-grub.

Как следующий шаг мы работаем sudo grub-editenv - set saved_entry=0 в терминале. Мы делаем это для предотвращения конфликтов, когда Личинка загрузится в следующий раз, когда Личинка будет искать для saved-entry в /boot/grub/grubenv и может найти его.

Теперь мы можем перезагрузить, когда меню Личинки появится, мы будем видеть добавленное подменю в списке, мы открываем его и выбираем одну из записей. Личинка установит saved_entry на заданное значение, сохранит его к /boot/grub/grubenv и затем перезагрузка. Меню личинки появляется снова, и мы будем видеть, что новое значение по умолчанию выбрано автоматически.

Еще одна вещь думать о

В которой операционной системе мы должны внести эти изменения? У нас есть два дистрибутива Linux, установленные и обе поставки с Личинкой. С информацией от Boot-Info-summary и терминальной команды findmnt мы должны смочь определить распределение, которое содержит и управляет конфигурационными файлами. В этом распределении мы должны выполнить вышеупомянутые шаги затем. В другом распределении Личинка не нужна и должна быть удалена или даже очищена, только для предотвращения любого вида конфликтов.

Дополнительная информация:

Протестированный это в моей системе с версией Личинки 2.02~beta2-36ubuntu3.8.

3
ответ дан 7 December 2019 в 12:34

CD/etc/default /

личинка энергии

изменяется GRUB_DEFAULT=0 к тому, который Вы хотите.

ИЛИ

энергия cd/boot/grub

grub.cfg

здесь быть осторожными при редактировании

Перестроение функции menuentries, и Вы сможете видеть это на загрузчике.

0
ответ дан 7 December 2019 в 12:34

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

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