Як я безпечно видаляю старі версії ядра в 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це найновіше, але як я можу це знати? Крім того, параметри завантаження пропонують на вибір кілька ядер. А можливості для плутанини погіршуються, коли система автоматично завантажується з першого ядра у списку параметрів.

Чи може хтось пояснити, як це працює, і конкретно, як безпечно видалити старі ядра, щоб версія ядра могла бути усунена як можлива причина незвичайних симптомів? Я хочу переконатися, що останнє ядро ​​- це єдине ядро, яке може коли-небудь запускатися, незалежно від того, як система перезапускається.


Виходжу в двері, тому я не можу зараз написати повну відповідь. Спробую перевірити ще пізніше. yum-utils використовували для цього (не впевнений, чи це все-таки є). if-not-true-then-false.com/2012/…
0xSheepdog

@ 0xSheepdog Так, я використовую ці команди з подібного підручника, але сервер CentOS 7 не дозволяє installonly_limit=1. У мене з’являються смішні симптоми, які можуть бути наслідком двох версій ядра, тому я хотів би мати лише одну версію, якщо це можливо, або хоча б мати остаточне пояснення того, чому не можна мати менше двох версій, якщо в Фактично це неможливо.
CodeMed

2
Я б запропонував змінити ваші критерії "зберігати" на "завантажене ядро" на відміну від просто новітнього - з різних причин ви можете не завантажуватися до найновішого ядра.
Джефф Шаллер

Відповіді:


23

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


1
Дякую фрактальній черепашці за коротку відповідь. Я також хочу, щоб ви безпечно зберігали принаймні два останніх ядра. package-cleanup --oldkernels --count=2
rangsiman

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
fyi, прибирання пакету входить до: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


-1

відповідно до цього :

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

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

перезавантажити комп'ютер ур

редагувати: це фактично працює для проблеми @ Рона, але переконайтеся, що ядро ​​elrepo працює правильно


Як уникнути видалення вашого поточного ядра?
Jeff Schaller

Спеціальна команда IDK для цього @JeffSchaller Я думаю, щоб переконатися, що ви не видаляєте поточне ядро, u sud перевірте його спочатку, використовуючи uname -rпотім видалити невикористане ядро, але показане з цієї команди,
Surya Stefanus
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.