Как безопасно удалить старые версии ядра в CentOS 7?

15

Я могу столкнуться со странными симптомами, возникающими из-за конкурирующих ядер в CentOS 7. Так как мне безопасно удалить старые ядра? И как мне узнать, какое ядро ​​самое новое?

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

Инструкции в этом руководстве говорят, что выходные данные следующих двух команд должны совпадать, но вы можете видеть, что они не совпадают даже после перезагрузки:

[root@localhost ~]# rpm -qa kernel |sort -V |tail -n 1
kernel-3.10.0-229.el7.x86_64
[root@localhost ~]# uname -r
3.10.0-229.14.1.el7.x86_64

Остальные команды подтверждают наличие двух ядер и иллюстрируют попытки удалить старое.

[root@localhost ~]# cd /usr/src/kernels
[root@localhost kernels]# ls -al
total 16
drwxr-xr-x.  4 root root 4096 Oct  2 12:55 .
drwxr-xr-x.  4 root root 4096 Oct  2 13:15 ..
drwxr-xr-x. 22 root root 4096 Oct  2 12:55 3.10.0-229.14.1.el7.x86_64
drwxr-xr-x. 22 root root 4096 Oct  2 12:35 3.10.0-229.el7.x86_64
[root@localhost kernels]# rpm -q kernel
kernel-3.10.0-229.el7.x86_64
kernel-3.10.0-229.14.1.el7.x86_64
[root@localhost kernels]# package-cleanup --oldkernels=1
Loaded plugins: fastestmirror
Usage: 
    package-cleanup: helps find problems in the rpmdb of system and correct them

    usage: package-cleanup --problems or --leaves or --orphans or --oldkernels
Command line error: --oldkernels option does not take a value
[root@localhost kernels]# package-cleanup --oldkernels
Loaded plugins: fastestmirror
No old kernels to remove
[root@localhost kernels]# rpm -q kernel
kernel-3.10.0-229.el7.x86_64
kernel-3.10.0-229.14.1.el7.x86_64
[root@localhost kernels]# 

Я также открыл /etc/yum.confи установил installonly_limit=1, но это привело к ошибке от последующей yum updateкоманды, говорящей, что 1 находится вне диапазона допустимых значений для installonly_limit.

Я предполагаю, что 3.10.0-229.14.1.el7.x86_64это самое новое, но как я могу это знать? Кроме того, параметры загрузки, кажется, предлагают несколько ядер на выбор. И вероятность путаницы ухудшается, когда система автоматически загружается с первого ядра в списке опций.

Может кто-нибудь объяснить, как это работает, и, в частности, как безопасно удалить старые ядра, чтобы версия ядра могла быть устранена как возможная причина странных симптомов? Я хочу убедиться, что самое последнее ядро ​​- это единственное ядро, которое может работать, независимо от того, как система перезагружается.

CodeMed
источник
Выходя за дверь, я не могу написать полный ответ прямо сейчас. Попробую проверить позже. yum-utils раньше делал это (не уверен, что это все еще делает). if-not-true-then-false.com/2012/…
0xSheepdog
@ 0xSheepdog Да, я использую эти команды из аналогичного учебного пособия, но сервер CentOS 7 не позволяет installonly_limit=1. У меня появляются забавные симптомы, которые могут быть следствием двух версий ядра, поэтому я хотел бы иметь только одну версию, если это возможно, или, по крайней мере, иметь четкое объяснение того, почему невозможно иметь менее 2 версий, если в На самом деле это невозможно.
CodeMed
2
Я бы предложил изменить критерии «хранения» на «загруженное ядро», а не просто на самое новое - по разным причинам вы можете не загружаться до самого нового ядра.
Джефф Шаллер

Ответы:

23

package-cleanup --oldkernels --count=1 удалить все ядра кроме последнего.


источник
1
Спасибо Fractal Turtle за краткий ответ. Я также хочу, чтобы вы сохранили как минимум два последних ядра. package-cleanup --oldkernels --count=2
Рангсиман
1
Я бегу package-cleanup --oldkernels --count=1. После перезагрузки у меня по-прежнему два ядра: CentOS Linux (4.4.6-1.el7.elrepo.x86_64) 7 (Core)и CentOS Linux (3.10.0-514.2.2.el7.x86_64) 7 (Core)знаете, как сохранить одно?
Рон
Может кто-нибудь ответить на вопрос @Ron?
Алиреза Мохамади
1
К вашему сведению, пакет-очистка является частью:yum install yum-utils
TiloBunt
8

Команда package-cleanupудалить старое ядро. Используйте, --count=1чтобы держать только последние. Программа никогда не удалит используемое в настоящее время ядро ​​(«Не удаляя ядро ​​3.10.0-327.el7, потому что это работающее ядро»), так что вы можете получить два ядра в / boot ..., пока вы не перезагрузите компьютер и не перезапустите -запустите команду.

Итак, команда

package-cleanup --oldkernels --count=1 

В справочном документе три варианта:

--oldkernels
          Remove old kernel and kernel-devel packages.
--count <COUNT>
          Number of duplicate/kernel packages to keep on the system (default 2)
--keepdevel
          Do not remove kernel-devel packages when removing kernels
Франклин Пиат
источник
2

Используйте yum upgradeвместоyum update

Тогда он будет содержать только три ядра. Если вы используете, updateто он заполнит ваш/boot

Gurkan
источник
-1

в соответствии с этим :

запустить, rpm -q kernelчтобы показать установленное ядро

затем запустить, yum remove kernel <shown kernel from output above>чтобы удалить ядро

перезагрузите компьютер

редактировать: это действительно работает для проблемы @ Рона, но убедитесь, что ядро ​​elrepo работает правильно

Сурья Стефанус
источник
Как избежать удаления текущего ядра?
Джефф Шаллер
Команда IDK для этого @JeffSchaller Я думаю, чтобы убедиться, что вы не uname -rудаляете текущее ядро, сначала проверьте его, затем удалите неиспользуемое ядро, но показанное в этой команде,
Surya Stefanus