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

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

72
задан 10 July 2012 в 18:12

9 ответов

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

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

gksudo gedit /etc/default/grub

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

завершите, запустив

sudo update-grub
65
ответ дан 22 November 2019 в 23:44

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

Чтобы выбрать более старое ядро ​​в качестве ядра по умолчанию, см. этот пост

27
ответ дан 22 November 2019 в 23:44

От https://help.ubuntu.com/community/Grub2 :

GRUB_HIDDEN_TIMEOUT = 0

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

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

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

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

4
ответ дан 22 November 2019 в 23:44

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

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

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

5
ответ дан 22 November 2019 в 23:44

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

7
ответ дан 22 November 2019 в 23:44

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

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

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

Select concrete Kernel

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

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

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

8
ответ дан 22 November 2019 в 23:44

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

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

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

    enter image description here

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

    enter image description here

3
ответ дан 22 November 2019 в 23:44

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

Grub Version: 2.02~beta2-36ubuntu3.22


         ┌───────────┤ Use arrow, page, home & end keys. Tab toggle option ├────────────┐
         │ Menu No.     ----------- Menu Name -----------                               │ 
         │                                                                              │ 
         │  1>3  Ubuntu, with Linux 4.15.0-55-generic                                  ↑│ 
         │  1>6  Ubuntu, with Linux 4.15.0-54-generic                                  ▒│ 
         │  1>9  Ubuntu, with Linux 4.14.134-0414134-generic                           ▒│ 
         │  1>12 Ubuntu, with Linux 4.14.120-0414120-generic                           ▮│ 
         │  1>15 Ubuntu, with Linux 4.14.114-0414114-generic                           ▒│ 
         │  1>18 Ubuntu, with Linux 4.14.110-0414110-generic                           ▒│ 
         │  1>21 Ubuntu, with Linux 4.14.98-041498-generic                             ▒│ 
         │  1>24 Ubuntu, with Linux 4.14.89-041489-generic                             ▒│ 
         │  1>27 Ubuntu, with Linux 4.14.78-041478-generic                             ▒│ 
         │  1>30 Ubuntu, with Linux 4.14.70-041470-generic                             ▒│ 
         │  1>33 Ubuntu, with Linux 4.4.0-157-generic                                  ▒│ 
         │  1>36 Ubuntu, with Linux 3.16.60-031660-generic                             ▒│ 
         │  1>36 Ubuntu, with Linux 3.16.60-031660-generic                             ▒│ 
         │  2    Ubuntu 18.04.1 LTS (18.04) (on /dev/nvme0n1p10)                       ▒│ 
         │  3    Advanced options for Ubuntu 18.04.1 LTS (18.04) (on /dev/nvme0n1p10)  ▒│ 
         │  3>0  Ubuntu (on /dev/nvme0n1p10)                                           ↓│ 
         │                                                                              │ 
         │                                                                              │ 
         │                     [Display Grub Boot]            Exit                      │ 
         │                                                                              │ 
         └──────────────────────────────────────────────────────────────────────────────┘ 



Примечание: В этом примере 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' {
recordfail
savedefault
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root b40b3925-70ef-447f-923e-1b05467c00e7
else
search --no-floppy --fs-uuid --set=root b40b3925-70ef-447f-923e-1b05467c00e7
fi
echo '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=deep
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-4.14.134-0414134-generic
}
Press <Enter> to continue

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

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

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

sudo -H gedit /etc/default/grub

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

GRUB_DEFAULT=0

и измените ее на эту:

GRUB_DEFAULT="1>9"

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

sudo update-grub
2
ответ дан 22 November 2019 в 23:44

Перезагрузитесь в определенное ядро, номер версии и тип которого можно узнать из 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 root с помощью sudo crontab -e : @reboot /pathto/kernboot.sh и, как следствие, в случае следующей загрузки ОС загрузится с ядром, указанным в скрипте.

1
ответ дан 5 January 2021 в 23:48

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

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