- Как откатить версию ядра в Ubuntu
- Как откатить ядро в Linux
- Почему обновления ядра вызывают проблемы
- Как загрузиться с другим ядром
- Как удалить или понизить версию ядра
- Удаление ядра в Debian и Ubuntu
- Удалить или понизить версию ядра в Arch
- Удалить ядро в Fedora
- Как в Arch Linux перейти к предыдущей версии ядра. Как установить и переключиться на linux-lts
- Как установить linux-lts
- Как переключиться на ядро linux-lts. Обновление опций загрузки
- Обновление опций загрузки для systemd-boot
- Обновление опций загрузки для GRUB
- Близкие статьи
Как откатить версию ядра в Ubuntu
Иногда после обновление ядра системы начинают некорректно работать некоторые важные службы и чтобы не искать проблему на боевом сервере, а сделать это например позже на виртуальном, то можно загрузить систему с предыдущей версии ядра.
Сначала посмотрим текущую версию (у меня отобразилось 4.15.0-46-generic):
Для теста я взял Ubuntu Server 18.04, система была на виртуальном стенде и как раз давно не обновлялась, специально выполнил обновление:
sudo apt update sudo apt upgrade
Перезапустим систему чтобы она загрузилась с новой версии ядра и потом снова посмотрим версию (у меня уже отобразилась версия новее — 4.15.0-47-generic):
Логи установки обновлений если что можно посмотреть в /var/log/dpkg.log и /var/log/apt/.
Если есть прямой доступ к серверу, то можно при запуске системы в grub меню выбрать «Advanced options for Ubuntu» и потом выбрать нужное ядро, однако после перезапуска системы все равно потом запустится самое новое.
Чтобы система постоянно запускалась с предыдущей версии ядра, откроем файл конфигурации grub в текстовом редакторе:
И вместо «GRUB_DEFAULT=0» укажем (в редакторе nano для выхода нажмем Ctrl+X и «y» для сохранения изменений):
#GRUB_DEFAULT=0 GRUB_DEFAULT="1>2"
Так как нумерация меню grub идет с 0, 0 — это обычная загрузка системы, то в первом меню «Advanced options for Ubuntu» будет под номером 1, а во втором меню где нужно выбрать ядро «4.15.0-46-generic» будет под номером 2. Посмотреть меню можно в файле /boot/grub/menu.lst.
Установленные ядра находятся в директории /boot/, можно также посмотреть командой:
sudo dpkg -l | grep linux-image ls /boot/
Обновим grub чтобы применить изменения:
Перезапустим систему и снова проверим версию ядра (в моем случае система загрузилась со старого ядра 4.15.0-46-generic):
Также можно найти и установить другую версию ядра (смотрите чтобы хватало памяти в директории /boot/, если она находится на отдельном разделе):
sudo apt-cache policy linux-image-4.15.0-45 sudo apt install linux-image-4.15.0-45-generic
Это ядро будет в меню скорее всего под номером 4, по этому укажем его в файле /etc/default/grub и потом перезапустим систему:
Также можно оставить «GRUB_DEFAULT=0» и удалить новое ядро, после чего предыдущее станет основным, но лучше так не делать:
sudo apt remove linux-image-4.15.0-47-generic
Как откатить ядро в Linux
Если на вашем ПК с Linux внезапно возникли проблемы после обновления вашей системы, возможно, виновато обновление ядра Linux. К счастью, откат или переход на другое ядро относительно легко сделать в системах Debian, Arch и Fedora. Вот как.
Почему обновления ядра вызывают проблемы
Ядро является неотъемлемой частью системы Linux, поэтому в зависимости от вашего устройства и настроек обновление ядра может вызвать проблемы для вас или для ваших установленных приложений. Проблемы могут варьироваться от причудливого поведения графики до полностью непригодной для использования системы. Если ваша ситуация относится ко второму, вы находитесь в настоящей затруднительной ситуации.
Чтобы решить эту проблему, во многих современных дистрибутивах установлено более старое или другое ядро, к которому вы можете получить доступ при загрузке. Это позволит вам проверить ядро на наличие проблем или восстановиться после обновления ядра, нарушающего работу системы.
Как загрузиться с другим ядром
Конечно, обновления системных пакетов, отличных от ядра Linux, могут быть истинным корнем вашей проблемы. Один из быстрых способов исключить ядро как неисправное — попробовать загрузиться с другим ядром.
Сначала вам нужно получить доступ к меню GRUB, перезагрузив компьютер. Вы можете увидеть, как GRUB появляется на несколько секунд при загрузке, отображая несколько параметров, таких как «Дополнительные параметры», хотя некоторые дистрибутивы скрывают его, пока вы не получите к нему доступ. Если он не появляется при загрузке, нажмите и удерживайте клавишу Shift в тот момент, когда ваш компьютер начнет загружаться, пока не появится экран, похожий на изображение ниже.
Используйте клавиши со стрелками, чтобы перейти к «Дополнительным параметрам для [вашего дистрибутива]» и нажмите Enter.
Вы получите список доступных вариантов загрузки. Вы должны увидеть как минимум два, например «[Ваш дистрибутив] с Linux 5.10.0.7-amd64», за которым следует версия того же параметра в «режиме восстановления». Различные версии, которые вы видите в списке, представляют собой разные установленные ядра.
Если у вас есть только один стандартный вариант и один вариант режима восстановления, это, к сожалению, означает, что у вас установлено только одно ядро. В этом случае, и если вы вообще не можете использовать ядро, вы можете использовать режим восстановления, чтобы попробовать некоторые варианты восстановления.
Если у вас более одного номера версии, у вас есть альтернативное ядро, с которого вы можете загрузиться. Первый вариант будет самым новым и автоматически загружается на вашем компьютере. Попробуйте другой вариант режима без восстановления, перейдя к нему с помощью клавиш со стрелками и нажав Enter.
Как удалить или понизить версию ядра
Если кажется, что загрузка другого ядра решила вашу проблему, то вы, вероятно, захотите продолжить использовать это ядро. Однако ваш компьютер может по умолчанию пытаться использовать проблемное ядро при каждой загрузке. Вы можете либо вручную выбирать более старое ядро при каждой загрузке, либо удалить проблемное ядро, пока ждете другого обновления.
Некоторые дистрибутивы позволяют вам сделать это графически, и они могут даже позволить вам просто выбрать другое ядро по умолчанию. Например, диспетчер обновлений Linux Mint (на фото ниже) имеет функцию настройки ядра, которая позволяет вам устанавливать настройки ядра в дополнение к удалению ненужных ядер.
Попробуйте выполнить поиск в меню приложения по слову «ядро» и посмотрите, появятся ли какие-либо инструменты для рабочего стола. Если это так, вы, вероятно, сможете сделать это графически. В противном случае читайте дальше, чтобы удалить ядро через командную строку.
Удаление ядра в Debian и Ubuntu
Чтобы удалить ядро Linux в Debian, Ubuntu или одном из их производных, вы должны сначала определить установленные пакеты ядра. Откройте терминал и введите следующую команду.
apt list --installed | grep linux-image
Вы можете увидеть номера версий в каждом из имен пакетов, которые стоят перед косой чертой (/) в результатах. Получив имя ядра, которое вы хотите удалить, введите следующую команду, заменив kernel-name именем пакета ядра точно так же, как оно появилось в предыдущей команде.
sudo apt remove kernel-name
Вас попросят ввести пароль, а затем попросят подтвердить удаление, введя y и нажав Enter.
Дождитесь завершения удаления, и ваш ПК с Linux больше не будет загружаться в это ядро. Следите за новыми ядрами при обновлении системы и проверяйте их по мере их поступления, чтобы убедиться, что проблема устранена.
Удалить или понизить версию ядра в Arch
В Arch Linux вы можете легко получить несколько альтернативных ядер с такими именами, как linux-hardened , linux-zen и linux-lts . Выбирая вариант в GRUB, вы, вероятно, видели только одну версию каждого установленного ядра. В отличие от ядер в Debian, обновления ядра Arch не приходят в виде новых пакетов для замены старых. Вместо этого каждое установленное ядро просто обновляется (или «синхронизируется») до последней версии по мере ее появления.
По этой причине лучше просто загрузиться с альтернативным ядром, а не понижать версию вашего обычного ядра. Если вы загрузились с другим ядром и знаете, что не хотите использовать первое, вы можете указать имя ядра в команде удаления с помощью Pacman.
sudo pacman -R kernel-name kernel-name-headers
Замена kernel-name на выбранное вами ядро. Вам будет предложено ввести пароль, прежде чем вы сможете продолжить. Затем вам нужно будет подтвердить удаление, набрав «y» и нажав Enter.
Если вы хотите понизить пакет ядра, знайте, что мы не рекомендуем это делать. Последовательные обновления выпусков часто полагаются на актуальность других пакетов, поэтому откат любого обновления является рискованным делом и может привести к поломке операционной системы.
Однако, если вы уверены, что хотите, вы можете синхронизировать пакет ядра с определенной версией с помощью следующей команды.
sudo pacman -S kernel-name=x.x.x kernel-name-headers=x.x.x
Замените kernel-name на ядро, которое вы хотите понизить, и x.x.x на нужную версию. Вы можете найти старые номера версий, выполнив поиск ядра в Arch Package Search и нажав «Просмотреть изменения».
Удалить ядро в Fedora
Fedora Linux по умолчанию сохраняет две старые версии ядра, установленные на вашем устройстве, вместе с самой новой. С помощью этой команды rpm вы можете определить имена пакетов.
Вы увидите список всех установленных ядер рядом с номерами их версий.
После загрузки с другим ядром используйте dnf для удаления проблемного ядра.
sudo dnf remove kernel-core-x.x.x-xxx.fcxx.x86_64
Вам будет предложено подтвердить удаление. Введите y и нажмите Enter для подтверждения.
После удаления ядра ваша система не сможет загрузиться с более новым ядром, пока вы не разрешите обновление ядра. Когда появится новый, попробуйте его и посмотрите, решена ли ваша проблема.
Как в Arch Linux перейти к предыдущей версии ядра. Как установить и переключиться на linux-lts
Новые ядра Linux несут поддержку нового оборудования и новые функции. Но иногда ядро вызывает проблемы: оно полностью или частично не совместимо с существующим программным обеспечением, особенно часто от этого страдают видео драйверы, но это может касаться и любого другого ПО, например, VirtualBox.
На момент выхода ядра linux 5.9 драйверы NVIDIA были частично не совместимы с ним, в результате терялась их важная функциональность. Хотя видеокарта работала, но CUDA, OpenCL и, вероятно, другие функции сломаны. Конечно, довольно быстро это было исправлено, но что делать тем, кому были нужны CUDA и OpenCL или другие программы несовместимые с последней версией ядра Linux в момент наличия проблемы?
Совсем свежий пример, ядро linux 5.19 на момент написания не совместимо с последней версией VirtualBox, которая просто не работает. Проблема будет исправлена в ближайшем будущем, но что делать, если работающие машины VirtualBox нужны прямо сейчас?
Один из вариантов — откатиться до предыдущей версии, установив её из кэша скаченных пакетов. Способ не самый приятный, поскольку нужно будет запретить обновлять пакет, версия которого была откачена назад, либо вообще отказаться от обновления всей системы.
Этот метод особенно неприятен когда дело касается ядра linux — также нужно что-то делать с зависимостями.
Один из более простых вариантов — перейти на ядро linux-lts.
Как установить linux-lts
LTS – расшифровывается как Long Time Support или, в переводе на русский, поддержка в течение длительного времени. Проще говоря, это ядро и модули Linux одной из предыдущих версий, которое редко обновляется.
Это ядро можно установить как обычный пакет, заменив существующее ядро. В зависимости от конфигурации вашего компьютера, вам может понадобиться установить другие *-lts пакеты, например, пакет nvidia-lts — видео драйвер NVIDIA для ядра linux-lts.
Также установите linux-lts-headers.
Все эти пакеты можно установить командой:
sudo pacman -S linux-lts linux-lts-headers nvidia-lts
Обратите внимание, что удалять старое ядро, а также драйвера NVIDIA не требуется (хотя вы можете это сделать по желанию).
Как переключиться на ядро linux-lts. Обновление опций загрузки
Для того чтобы использовалось ядро linux-lts, необходимо изменить опции загрузки.
Изменение опций загрузки выполняется по-разному, в зависимости от того, используете ли вы GRUB или systemd-boot.
Обновление опций загрузки для systemd-boot
Отройте файл /boot/loader/entries/arch.conf
sudo vim /boot/loader/entries/arch.conf
sudo gedit /boot/loader/entries/arch.conf
linux /vmlinuz-linux initrd /initramfs-linux.img
linux /vmlinuz-linux-lts initrd /initramfs-linux-lts.img
К примеру, полное содержимое моего файла было
title BlackArch linux /vmlinuz-linux-lts initrd /initramfs-linux-lts.img options root=/dev/nvme0n1p2 rw
Я закомментировал строки, которые указывают на обычную версию ядра и добавил строки с указанием на linux-lts:
title BlackArch #linux /vmlinuz-linux #initrd /initramfs-linux.img linux /vmlinuz-linux-lts initrd /initramfs-linux-lts.img options root=/dev/nvme0n1p2 rw
Затем перезагрузитесь и убедитесь, что используется новая версия ядра с помощью команды:
Обновление опций загрузки для GRUB
Обновите конфигурацию GRUB:
sudo grub-mkconfig -o /boot/grub/grub.cfg
Затем перезагрузитесь и убедитесь, что используется новая версия ядра с помощью команды:
После того, как ядро будет доработано, а мешающие вам проблемы устранены, можно вернуться к последней версии ядра Linux.