Добавить пункт меню GRUB для загрузки в терминал

Возможно, вы сможете сделать это с помощью join, если вы объедините первые два поля в один ключ, заменив разделитель запятой символом, который, как вы можете быть уверенным, не появится в ваших данных. Обратите внимание: поскольку join требует, чтобы данные были отсортированы в поле объединения, это будет работать, только если это не изменит лексический порядок данных.

Например:

2
задан 28 April 2018 в 21:48

3 ответа

Один

Откройте файл /boot/grub/grub.cfg и найдите раздел, который загружает ваш «обычный» Ubuntu.

Для меня это:

menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-b8f25f1e-a169-4aaa-9f05-90e49359d865' {
        recordfail
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_gpt
        insmod ext2
        set root='hd0,gpt2'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  b8f25f1e-a169-4aaa-9f05-90e49359d865
        else
          search --no-floppy --fs-uuid --set=root b8f25f1e-a169-4aaa-9f05-90e49359d865
        fi
        linux   /boot/vmlinuz-4.13.0-39-generic.efi.signed root=UUID=b8f25f1e-a169-4aaa-9f05-90e49359d865 ro  
        initrd  /boot/initrd.img-4.13.0-39-generic
}
[d3 ] Скопируйте этот раздел в новый файл, скажем textmode.txt.

Два

Перейдите к /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.

Добавьте пункт меню из textmode.txt в файл, но измените некоторые значения (см. ниже):

menuentry 'Ubuntu (text mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-b8f25f1e-a169-4aaa-9f05-90e49359d865' {
        recordfail
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_gpt
        insmod ext2
        set root='hd0,gpt2'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  b8f25f1e-a169-4aaa-9f05-90e49359d865
        else
          search --no-floppy --fs-uuid --set=root b8f25f1e-a169-4aaa-9f05-90e49359d865
        fi
        linux   /vmlinuz root=UUID=b8f25f1e-a169-4aaa-9f05-90e49359d865 systemd.unit=multi-user.target ro
        initrd  /initrd.img
}
8] Значения, которые необходимо изменить:

Текст меню: измените его с 'Ubuntu' на 'Ubuntu (text mode)' (или все, что вам нравится, чтобы появиться в меню) Линия linux: измените его к linux /vmlinuz root=UUID=... systemd.unit=multi-user.target ro. Убедитесь, что UUID остается неизменным. Строка initrd: измените ее на /initrd.img

Убедитесь, что у вас есть символические ссылки в каталоге / от /vmlinuz и /initrd.img до текущих версий.

Три

Выполнить

sudo update-grub

Разница между этим подходом и этим ответом на очень похожий вопрос заключается в том, что в последнее время версии Ubuntu, строка

linux   /boot/vmlinuz-3.8.0-31-generic root=UUID=... ro quiet splash $vt_handoff

должна быть заменена на

linux   /vmlinuz root=UUID=... systemd.unit=multi-user.target ro

Я не уверен, что последнее на самом деле означает, но я думаю, что это 16.04, когда была введена система. [ ! d20]

2
ответ дан 22 May 2018 в 11:10
  • 1
    Мой друг, ты удивительный . Это сработало! :) Фокус в том, что systemd.unit=multi-user-target часть. Теперь, в качестве опоры, мне пришлось оставить части linux и initrd такими, какие они есть, потому что он жаловался, что не смог найти изображение на /vmlinuz и т. Д. Но кроме этого просто здорово. Большое спасибо! :) – Dr.Kameleon 28 April 2018 в 21:46
  • 2
    Рад слышать. Я также заметил, что symlink vmlinuz → boot/vmlinuz-4.13.0-39-generic отсутствует, но через некоторое время (и обновления) он появился. Возможно, это происходит только при установке нескольких изображений ядра. – PerlDuck 28 April 2018 в 21:51
  • 3
    хм, возможно, у вас есть точка. Кто знает .. Mine - суперсовременная установка, поэтому шансы - это всего лишь один образ ядра. – Dr.Kameleon 28 April 2018 в 21:52

Один

Откройте файл /boot/grub/grub.cfg и найдите раздел, который загружает ваш «обычный» Ubuntu.

Для меня это:

menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-b8f25f1e-a169-4aaa-9f05-90e49359d865' { recordfail load_video gfxmode $linux_gfx_mode insmod gzio if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi insmod part_gpt insmod ext2 set root='hd0,gpt2' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 b8f25f1e-a169-4aaa-9f05-90e49359d865 else search --no-floppy --fs-uuid --set=root b8f25f1e-a169-4aaa-9f05-90e49359d865 fi linux /boot/vmlinuz-4.13.0-39-generic.efi.signed root=UUID=b8f25f1e-a169-4aaa-9f05-90e49359d865 ro initrd /boot/initrd.img-4.13.0-39-generic }

Скопируйте этот раздел в новый файл, скажем textmode.txt.

Два

Перейдите к /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.

Добавьте пункт меню из textmode.txt в файл, но измените некоторые значения (см. ниже):

menuentry 'Ubuntu (text mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-b8f25f1e-a169-4aaa-9f05-90e49359d865' { recordfail load_video gfxmode $linux_gfx_mode insmod gzio if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi insmod part_gpt insmod ext2 set root='hd0,gpt2' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 b8f25f1e-a169-4aaa-9f05-90e49359d865 else search --no-floppy --fs-uuid --set=root b8f25f1e-a169-4aaa-9f05-90e49359d865 fi linux /vmlinuz root=UUID=b8f25f1e-a169-4aaa-9f05-90e49359d865 systemd.unit=multi-user.target ro initrd /initrd.img }

Значения, которые необходимо изменить:

Текст меню: измените его с 'Ubuntu' на 'Ubuntu (text mode)' (или все, что вам нравится, чтобы появиться в меню) Линия linux: измените его к linux /vmlinuz root=UUID=... systemd.unit=multi-user.target ro. Убедитесь, что UUID остается неизменным. Строка initrd: измените ее на /initrd.img

Убедитесь, что у вас есть символические ссылки в каталоге / от /vmlinuz и /initrd.img до текущих версий.

Три

Выполнить

sudo update-grub

Разница между этим подходом и этим ответом на очень похожий вопрос заключается в том, что в последнее время версии Ubuntu, строка

linux /boot/vmlinuz-3.8.0-31-generic root=UUID=... ro quiet splash $vt_handoff

должна быть заменена на

linux /vmlinuz root=UUID=... systemd.unit=multi-user.target ro

Я не уверен, что последнее на самом деле означает, но я думаю, что это 16.04, когда была введена система. [ ! d20]

2
ответ дан 17 July 2018 в 15:52

Один

Откройте файл /boot/grub/grub.cfg и найдите раздел, который загружает ваш «обычный» Ubuntu.

Для меня это:

menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-b8f25f1e-a169-4aaa-9f05-90e49359d865' { recordfail load_video gfxmode $linux_gfx_mode insmod gzio if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi insmod part_gpt insmod ext2 set root='hd0,gpt2' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 b8f25f1e-a169-4aaa-9f05-90e49359d865 else search --no-floppy --fs-uuid --set=root b8f25f1e-a169-4aaa-9f05-90e49359d865 fi linux /boot/vmlinuz-4.13.0-39-generic.efi.signed root=UUID=b8f25f1e-a169-4aaa-9f05-90e49359d865 ro initrd /boot/initrd.img-4.13.0-39-generic }

Скопируйте этот раздел в новый файл, скажем textmode.txt.

Два

Перейдите к /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.

Добавьте пункт меню из textmode.txt в файл, но измените некоторые значения (см. ниже):

menuentry 'Ubuntu (text mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-b8f25f1e-a169-4aaa-9f05-90e49359d865' { recordfail load_video gfxmode $linux_gfx_mode insmod gzio if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi insmod part_gpt insmod ext2 set root='hd0,gpt2' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 b8f25f1e-a169-4aaa-9f05-90e49359d865 else search --no-floppy --fs-uuid --set=root b8f25f1e-a169-4aaa-9f05-90e49359d865 fi linux /vmlinuz root=UUID=b8f25f1e-a169-4aaa-9f05-90e49359d865 systemd.unit=multi-user.target ro initrd /initrd.img }

Значения, которые необходимо изменить:

Текст меню: измените его с 'Ubuntu' на 'Ubuntu (text mode)' (или все, что вам нравится, чтобы появиться в меню) Линия linux: измените его к linux /vmlinuz root=UUID=... systemd.unit=multi-user.target ro. Убедитесь, что UUID остается неизменным. Строка initrd: измените ее на /initrd.img

Убедитесь, что у вас есть символические ссылки в каталоге / от /vmlinuz и /initrd.img до текущих версий.

Три

Выполнить

sudo update-grub

Разница между этим подходом и этим ответом на очень похожий вопрос заключается в том, что в последнее время версии Ubuntu, строка

linux /boot/vmlinuz-3.8.0-31-generic root=UUID=... ro quiet splash $vt_handoff

должна быть заменена на

linux /vmlinuz root=UUID=... systemd.unit=multi-user.target ro

Я не уверен, что последнее на самом деле означает, но я думаю, что это 16.04, когда была введена система. [ ! d20]

2
ответ дан 23 July 2018 в 16:49

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

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