Как я могу загрузиться с более старой версией ядра?

Последнее ядро вызывает проблемы с моим звуком, который прекрасно работал с более старой версией. Поскольку у меня установлена только Ubuntu, Grub не отображается при загрузке. Как я могу вручную выбрать версию ядра во время загрузки?

Самый простой способ отобразить ваш Grub - это нажать и удерживать кнопку SHIFT кнопка во время загрузки.

В качестве альтернативы вы всегда можете отобразить Grub без загрузки какого-либо конкретного ядра:

gksudo gedit /etc/default/grub

менять GRUB_TIMEOUT до -1 и закомментируйте GRUB_HIDDEN_TIMEOUT

закончите, запустив

sudo update-grub

Удерживая нажатой клавишу shift во время загрузки, отобразится меню Grub.Теперь вы можете выбрать более старую версию ядра.

Для выбора более старого ядра в качестве ядра по умолчанию, пожалуйста, см. этот пост

Если в вашей системе несколько ядер, вы можете вручную установить, какая версия ядра будет запускаться:

  1. Перезагрузите компьютер, нажав кнопку Shift для отображения GRUB после запуска BIOS.Вы увидите что-то вроде:GRUB start page

  2. Выберите "Дополнительные параметры для Ubuntu" и запомните индекс этой строки меню (отсчет начинается с 0) На картинке индекс равен 1

Select concrete Kernel

  1. Выберите конкретное ядро для загрузки, а также запомните индекс этой строки меню (отсчет начинается с 0) На картинке индекс выбранного ядра равен 2

  2. Запустите систему. Это действие предназначено для одной загрузки конкретного ядра. Если вы хотите все время начинать с конкретного ядра, вам следует выполнить следующие шаги:

4.1. Откройте и отредактируйте установочный файл GRUB:

sudo nano /etc/default/grub

4.2. Найдите строку GRUB_DEFAULT=...(по умолчанию GRUB_DEFAULT=0) и укажите в кавычках путь меню к конкретному ядру (запомните индексы меню из шагов 2 и 3). В моей системе первый индекс был равен 1, а второй - 2. Я установил значение GRUB_DEFAULT

GRUB_DEFAULT="1>2"

Сохраните файл.

4.3. Обновите информацию GRUB для внесения изменений:

sudo update-grub

>4.4. После перезагрузки вы автоматически загружаетесь в ядро по выбранному пути меню. Пример на моей машине 1 - 2

4.5. Проверьте версию ядра после перезагрузки:

uname -r

Во время загрузки, когда появится GRUB с записями, выберите вторую запись, т.е., Дополнительные параметры для Ubuntu там вы можете увидеть различные старые версии ядра, которые были установлены ранее, вы можете выбрать одну из них, которая подходит именно вам.В противном случае вы отправляетесь в grub.cfg и вставьте требуемую версию ядра поверх текущей установленной записи ядра. В обоих случаях это работает

Пожалуйста, установите предыдущее ядро с помощью следующей команды:

sudo apt-get install linux-image-3.0.0-12-generic linux-headers-3.0.0-12-generic

Затем перезагрузитесь. Вам будет предложено выбрать свое ядро.

Посредством https://help.ubuntu.com/community/Grub2:

GRUB_HIDDEN_TIMEOUT=0

Этот параметр определяет, как долго будет отображаться экран без меню GRUB 2. Пока экран пуст, пользователь может нажать любую клавишу для отображения меню.

Поведение по умолчанию заключается в скрытии меню, если присутствует только одна операционная система. Если пользователь, у которого есть только Ubuntu, хочет отобразить меню, поместите символ # в начале этой строки, чтобы отключить функцию скрытого меню.

Понижение версии ядра: Как понизить рейтинг ядра на 11.10

Обновление ядра: Как я могу обновить ядро до версии 3.1?

16.04 и более поздние версии

  1. Сразу после заставки BIOS/UEFI во время загрузки с помощью BIOS быстро нажмите и удерживайте кнопку Shift клавиша, которая вызовет меню GNU GRUB. (Если вы видите логотип Ubuntu, значит, вы пропустили момент, когда вы можете войти в меню GRUB.) С помощью UEFI нажмите (возможно, несколько раз) на Esc клавиша для перехода к меню GRUB. Иногда заставка производителя является частью загрузчика Windows, поэтому, когда вы включаете компьютер, он переходит прямо на экран GRUB, а затем нажимает Shift в этом нет необходимости.

  2. На экране GRUB выберите Дополнительные параметры для Ubuntu и нажмите Enter.

    enter image description here

  3. Появится новый фиолетовый экран со списком ядер. Используйте клавиши ↑ и ↓, чтобы выбрать, какая запись будет выделена. Нажмите клавишу Enter для загрузки выбранного ядра, "e" для редактирования команд перед загрузкой или "c" для командной строки. Нажмите клавишу Esc, чтобы вернуться в предыдущее меню.

    enter image description here

Ответ Джеккобека описывает способ просмотра grub.cfg и прокрутите исходный код, чтобы найти номер меню. Более простой способ - это с этот сценарий:

Grub Version: 2.02~beta2-36ubuntu3.22         ┌───────────┤ Используйте клавиши со стрелками, страница, главная и конечная. Опция переключения вкладок>> ├────────────┐ │ Меню Нет.     ----------- Название меню ----------- │ │ │ │ 13 Ubuntu, с Linux 4.15.0-55-generic ↑│ │ 16 Ubuntu, с Linux 4.15.0-54-generic ▒│ │  >19 Ubuntu, с Linux 4.14.134-0414134-generic                           >>>>>>>>>>>▒│ │ 112 с Ubuntu, с Linux 4.14.120-0414120-универсальный ▮│ │ 115 в Ubuntu, с Linux 4.14.114-0414114-универсальный ▒│ │ 118 с Ubuntu, с Linux 4.14.110-0414110-универсальный ▒│ │ 121 с Ubuntu, с Linux 4.14.98-041498-универсальный ▒│ │ 124 с Ubuntu, с Linux 4.14.89-041489-универсальный ▒│ │ 127 в Ubuntu, с Linux 4.14.78-041478-универсальный ▒│ │ 130 в Ubuntu, с Linux 4.14.70-041470-универсальный ▒│ │ 133 Убунту с Linux 4.4.0-157-универсальный ▒│ │ 136 с Ubuntu, с Linux 3.16.60-031660-универсальный ▒│ │ 136 с Ubuntu, с Linux 3.16.60-031660-универсальный ▒│ │ 2 Убунту 18.04.1 и LTS (18.04) (на /dev/nvme0n1p10) ▒│ │ 3 Дополнительные параметры для Ubuntu 18.04.1 и LTS (18.04) (на /dev/nvme0n1p10) ▒│ │ 30 ОС Ubuntu (на /dev/nvme0n1p10) ↓│ │ │ │ │ │                     [Показать загрузку Grub] Выход                      │          │                                                                              │          └──────────────────────────────────────────────────────────────────────────────┘ 

Примечание: В этом примере grub-menu.sh short был использован для вызова скрипта. То short параметр подавляет эти строки:

     │  1>10 Ubuntu, with Linux 4.14.134-0414134-generic (upstart)                 ▒│      │  1>11 Ubuntu, with Linux 4.14.134-0414134-generic (recovery mode)           ▒│ 

Клавиши управления

После прокрутки записей (вы можете использовать колесо прокрутки мыши или клавиши со стрелками) нажмите Escape чтобы вернуться в командную строку.

Если вы нажмете Enter отображаются соответствующие команды grub для записи:

menuentry 'Ubuntu, with Linux 4.14.134-0414134-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.14.134-0414134-generic-advanced-b40b3925-70ef-447f-923e-1b05467c00e7' {recordfailsavedefaultload_videogfxmode $linux_gfx_modeinsmod gzioif [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fiinsmod part_gptinsmod ext2if [ x$feature_platform_search_hint = xy ]; thensearch --no-floppy --fs-uuid --set=root b40b3925-70ef-447f-923e-1b05467c00e7elsesearch --no-floppy --fs-uuid --set=root b40b3925-70ef-447f-923e-1b05467c00e7fiecho 'Loading Linux 4.14.134-0414134-generic ...'linux /boot/vmlinuz-4.14.134-0414134-generic root=UUID=b40b3925-70ef-447f-923e-1b05467c00e7 ro noplymouth fastboot acpiphp.disable=1 pcie_aspm=force vt.handoff=7 i915.fastboot=1 nopti nospectre_v2 nospec mem_sleep_default=deepecho 'Loading initial ramdisk ...'initrd /boot/initrd.img-4.14.134-0414134-generic}Press <Enter> to continue

Обновление grub для загрузки предыдущего ядра

Для каждого пункта меню существует набор команд grub. Все скомпилированные записи хранятся в /boot/grub/grub.cfg файл.

>>В этом примере мы хотим, чтобы номер меню `19 был установлен по умолчанию, поэтому мы используем:

sudo -H gedit /etc/default/grub

и найдите эту строку:

GRUB_DEFAULT=0

и измените его на этот:

GRUB_DEFAULT="1>9"

Затем сохраните файл и запустите

sudo update-grub

Перезагрузитесь в определенное ядро, номер и тип версии которого можно получить из ls /boot | grep vmlinuz выполнение команды.

Создайте сценарий со следующим содержимым: $ vim.tiny kernboot.sh

    kernel="5.3.0-40-generic"    kernlist="$(grep -i "menuentry '" /boot/grub/grub.cfg|sed -r "s|--class .*$||g")"    printf "%s$kernlist\n" | logger    menuline="$(printf "%s$kernlist\n"|grep -ne $kernel | grep -v recovery | cut -f1 -d":")"    menunum="$(($menuline-2))"    grub-reboot "1>$menunum"    echo "The next grub's menu entry will be choosen after the reboot:\n 1>$menunum" | logger    reboot

Добавьте разрешения на выполнение к скрипту и запустите его:

$ chmod +x kernboot.sh$ sudo ./kernboot.sh

Сценарий может быть помещен в cron с помощью sudo crontab -e и @reboot /path/to/script

Я пробовал его 19.10 и 20.04, и он работает, как и ожидалось. Этот сценарий, но без reboot команда может быть даже помещена в корневой cron с sudo crontab -e: @reboot /pathto/kernboot.sh и, как следствие, в случае следующей загрузки ОС будет загружена с ядром, указанным в скрипте.