Последнее ядро вызывает проблемы с моим звуком, который прекрасно работал с более старой версией. Поскольку у меня установлена только Ubuntu, Grub не отображается при загрузке. Как я могу вручную выбрать версию ядра во время загрузки?
Самый простой способ отобразить ваш Grub - это нажать и удерживать кнопку SHIFT кнопка во время загрузки.
В качестве альтернативы вы всегда можете отобразить Grub без загрузки какого-либо конкретного ядра:
gksudo gedit /etc/default/grub
менять GRUB_TIMEOUT
до -1 и закомментируйте GRUB_HIDDEN_TIMEOUT
закончите, запустив
sudo update-grub
Удерживая нажатой клавишу shift во время загрузки, отобразится меню Grub.Теперь вы можете выбрать более старую версию ядра.
Для выбора более старого ядра в качестве ядра по умолчанию, пожалуйста, см. этот пост
Если в вашей системе несколько ядер, вы можете вручную установить, какая версия ядра будет запускаться:
Перезагрузите компьютер, нажав кнопку Shift для отображения GRUB после запуска BIOS.Вы увидите что-то вроде:
Выберите "Дополнительные параметры для Ubuntu" и запомните индекс этой строки меню (отсчет начинается с 0) На картинке индекс равен 1
Выберите конкретное ядро для загрузки, а также запомните индекс этой строки меню (отсчет начинается с 0) На картинке индекс выбранного ядра равен 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 и более поздние версии
Сразу после заставки BIOS/UEFI во время загрузки с помощью BIOS быстро нажмите и удерживайте кнопку Shift клавиша, которая вызовет меню GNU GRUB. (Если вы видите логотип Ubuntu, значит, вы пропустили момент, когда вы можете войти в меню GRUB.) С помощью UEFI нажмите (возможно, несколько раз) на Esc клавиша для перехода к меню GRUB. Иногда заставка производителя является частью загрузчика Windows, поэтому, когда вы включаете компьютер, он переходит прямо на экран GRUB, а затем нажимает Shift в этом нет необходимости.
-
На экране GRUB выберите Дополнительные параметры для Ubuntu и нажмите Enter.
-
Появится новый фиолетовый экран со списком ядер. Используйте клавиши ↑ и ↓, чтобы выбрать, какая запись будет выделена. Нажмите клавишу Enter для загрузки выбранного ядра, "e" для редактирования команд перед загрузкой или "c" для командной строки. Нажмите клавишу Esc, чтобы вернуться в предыдущее меню.
Ответ Джеккобека описывает способ просмотра 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
и, как следствие, в случае следующей загрузки ОС будет загружена с ядром, указанным в скрипте.