Я сделал эту настройку из-за ошибки обновления ядра:
GRUB_DEFAULT = 4
в/etc/default/grub
Чем я казнил
sudo setup-grub
Однако, это не сработало. Моя желаемая версия — 4.2.0-16-generic, потому что 4.2.0-18 и 4.2.0-17 (которой на самом деле нет в списке) не работают. В списке 4.2.0-16 — 4-я.
Когда это не сработало, я попробовал это:
GRUB_DEFAULT = "Advanced options for Ubuntu>Ubuntu, with Linux 4.2.0-16-generic"
и
sudo setup-grub
Однако, это все еще не сработало и открыло нерабочую версию ядра. В настоящее время я могу получить доступ к 4.2.0-16 только вручную через Дополнительные параметры для Ubuntu, но я хочу, чтобы она загружалась автоматически. Какое решение вы мне порекомендуете?
Выходы dpkg --list | grep linux-image
:
ii linux-image-extra-4.2.0-16-generic 4.2.0-16.19 amd64 Linux kernel extra modules for version 4.2.0 on 64 bit x86 SMP
ii linux-image-extra-4.2.0-17-generic 4.2.0-17.21 amd64 Linux kernel extra modules for version 4.2.0 on 64 bit x86 SMP
ii linux-image-extra-4.2.0-18-generic 4.2.0-18.22 amd64 Linux kernel extra modules for version 4.2.0 on 64 bit x86 SMP
ii linux-image-generic 4.2.0.18.20 amd64 Generic Linux kernel image
как последние 4 вывода (только для Ubuntu 15.10, которая содержит ядро 4.2.0).
решение1
Вам необходимо использовать идентификаторы соответствующих строк submenu
и menuentry
.
Примечание "Расширенные возможности Ubuntu" — это submenu
, вам нужно использовать его идентификатор.
Бегатьgrep -E "^\\s*(menuentry|submenu) " /boot/grub/grub.cfg
Например, если вывод:
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-7da0d9d5-45bc-40e4-b17e-18cff7a59b76' {
submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-7da0d9d5-45bc-40e4-b17e-18cff7a59b76' {
menuentry 'Ubuntu, with Linux 4.4.0-140-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-140-generic-advanced-7da0d9d5-45bc-40e4-b17e-18cff7a59b76' {
menuentry 'Ubuntu, with Linux 4.4.0-140-generic (upstart)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-140-generic-init-upstart-7da0d9d5-45bc-40e4-b17e-18cff7a59b76' {
menuentry 'Ubuntu, with Linux 4.4.0-140-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-140-generic-recovery-7da0d9d5-45bc-40e4-b17e-18cff7a59b76' {
menuentry 'Ubuntu, with Linux 4.4.0-101-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-101-generic-advanced-7da0d9d5-45bc-40e4-b17e-18cff7a59b76' {
menuentry 'Ubuntu, with Linux 4.4.0-101-generic (upstart)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-101-generic-init-upstart-7da0d9d5-45bc-40e4-b17e-18cff7a59b76' {
menuentry 'Ubuntu, with Linux 4.4.0-101-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-101-generic-recovery-7da0d9d5-45bc-40e4-b17e-18cff7a59b76' {
menuentry 'Memory test (memtest86+)' {
menuentry 'Memory test (memtest86+, serial console 115200)' {
Правильная настройка будет такой:
GRUB_DEFAULT="gnulinux-advanced-7da0d9d5-45bc-40e4-b17e-18cff7a59b76>gnulinux-4.4.0-101-generic-advanced-7da0d9d5-45bc-40e4-b17e-18cff7a59b76"
Обратите внимание, что вы также можете использовать нумерацию, начинающуюся с 0, но при этом следует учитывать пункты подменю:
GRUB_DEFAULT="1>3"
Не забудьте пробежаться update-grub
в конце.
решение2
Сделайте резервную копию вашего текущего grub.
sudo cp /etc/default/grub /etc/default/grub.bak
Теперь откройте файл.
sudo gedit /etc/default/grub
Откройте другой терминал и введите:
cat /boot/grub/grub.cfg | grep 4.2.0-16
Вы увидите такую строку:
menuentry 'Ubuntu, с Linux 4.2.0-16-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.2.0-18-generic-advanced-esx5367c-b4ug-19sd-v6j8-ty2hj01ui3kj' {..........
Скопируйте эту строку и вставьте ее:
ОТРЕДАКТИРОВАНО ОТ:
GRUB_DEFAULT ="gnulinux-4.2.0-16-generic-advanced-2e2221b2-b6c7-4553-815f-67afdc924a98"
РЕДАКТИРОВАНО:
GRUB_DEFAULT ="gnulinux-advanced-2e2221b2-b6c7-4553-815f-67afdc924a98>gnulinux-4.2.0-16-generic-advanced-2e2221b2-b6c7-4553-815f-67afdc924a98"
Сохраните файл.
Теперь введите команду:
sudo update-grub
решение3
ОК! Я нашел решение. Мне пришлось связать PPA с grub-customizer.
sudo add-apt-repository ppa:danielrichter2007/grub-customizer
Чем я и занимался:
sudo apt-get update
Следующий шаг —
sudo apt-get install grub-customizer
После этого я открываю grub-customizer через unity dash и выбираю там нужное ядро и та-дам!:)
решение4
Небольшая функция bash для вывода списка всех ядер Ubuntu, подходящих для вставки
GRUB_DEFAULT
в/etc/default/grub
MENUID=$( grep -E "^\\s*(submenu) " /boot/grub/grub.cfg | grep -oP "gnuli.*(?=')" )
grep '(?<=menuentry_id_option ).gnuli\S+' /boot/grub/grub.cfg -Po | \
sed "s@'@@g" |grep -vE 'recovery|simple|gnulinux-advanced' | sed "s@^@GRUB_DEFAULT=\"${MENUID}>@; s@\$@\"@"
Выход:
GRUB_DEFAULT="gnulinux-advanced-20dfee37-ad84-49b2-8c69-a54699da855d>gnulinux-6.6.10-usb2-advanced-20dfee37-ad84-49b2-8c69-a54699da855d"
GRUB_DEFAULT="gnulinux-advanced-20dfee37-ad84-49b2-8c69-a54699da855d>gnulinux-5.15.0-35-generic-advanced-20dfee37-ad84-49b2-8c69-a54699da855d"
Затем просто выберите один из них, вставьте в строку /etc/default/grub
, запустите update-grub
и перезагрузите компьютер.