Jak bezpiecznie usunąć stare wersje jądra w CentOS 7?

15

Mogę napotkać dziwne objawy wynikające z konkurujących jąder w CentOS 7. Więc jak bezpiecznie usunąć stare jądra? A skąd mam wiedzieć, które jądro jest najnowsze?

Poniżej znajduje się wyjście terminala, które otrzymuję w chwili, gdy badam to na danym serwerze. Zauważ, że próbowałem czyszczenia pakietów, ale pozostawia te same 2 jądra:

Instrukcje w tym samouczku mówią, że dane wyjściowe dwóch poniższych poleceń powinny być zgodne, ale widać, że nie pasują one nawet po ponownym uruchomieniu:

[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

Pozostałe polecenia potwierdzają, że istnieją dwa jądra i ilustrują próby usunięcia starego.

[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]# 

Otworzyłem również /etc/yum.confi ustawiłem installonly_limit=1, ale spowodowało to błąd w kolejnym yum updatepoleceniu mówiącym, że 1 jest poza zakresem dopuszczalnych wartości dla installonly_limit.

Zakładam, że 3.10.0-229.14.1.el7.x86_64to najnowsza wersja, ale skąd mam to wiedzieć? Ponadto opcje uruchamiania wydają się oferować wiele jąder do wyboru. Możliwości pomieszania pogarszają się, gdy system automatycznie uruchamia się z pierwszego jądra na liście opcji.

Czy ktoś może wyjaśnić, jak to działa, a konkretnie, jak bezpiecznie usunąć stare jądra, aby wersja jądra mogła zostać wyeliminowana jako możliwa przyczyna dziwnych objawów? Chcę się upewnić, że najnowsze jądro jest jedynym jądrem, jakie kiedykolwiek można uruchomić, bez względu na to, jak system zostanie zrestartowany.

CodeMed
źródło
Wychodząc za drzwi, więc nie mogę teraz napisać pełnej odpowiedzi. Spróbuję to sprawdzić później. mniam-utils kiedyś to robił (nie jestem pewien, czy nadal tak jest). if-not-true-then-false.com/2012/…
0xSheepdog
@ 0xSheepdog Tak, używam tych poleceń z podobnego samouczka, ale serwer CentOS 7 nie pozwala installonly_limit=1. Dostaję śmieszne objawy, które mogą wynikać z dwóch wersji jądra, więc chciałbym mieć tylko jedną wersję, jeśli to możliwe, lub przynajmniej mieć ostateczne wyjaśnienie, dlaczego nie można mieć mniej niż 2 wersje, jeśli w fakt nie jest możliwy.
CodeMed,
2
Sugerowałbym zmianę kryteriów „zachowaj” na „bootowane jądro” w przeciwieństwie do po prostu najnowszych - z różnych powodów możesz nie uruchamiać się do najnowszego jądra.
Jeff Schaller

Odpowiedzi:

23

package-cleanup --oldkernels --count=1 usuń wszystkie jądra z wyjątkiem najnowszych.


źródło
1
Dziękuję Fractal Turtle za krótką odpowiedź. Chcę również, abyś bezpiecznie przechował co najmniej dwa najnowsze jądro. package-cleanup --oldkernels --count=2
rangsiman
1
Biegnę package-cleanup --oldkernels --count=1. Po ponownym uruchomieniu nadal otrzymuję dwa jądra: CentOS Linux (4.4.6-1.el7.elrepo.x86_64) 7 (Core)a CentOS Linux (3.10.0-514.2.2.el7.x86_64) 7 (Core)czy wiesz, jak je zachować?
Ron
Czy ktoś może odpowiedzieć na pytanie @Ron?
Alireza Mohamadi,
1
fyi, czyszczenie pakietów jest częścią:yum install yum-utils
TiloBunt
8

Polecenie package-cleanupusuwa starsze jądro. Posługiwać się--count=1 aby zachować najnowsze. Program nigdy nie usunie aktualnie używanego jądra („Nie usuwam jądra 3.10.0-327.el7, ponieważ jest to działające jądro”), więc możesz skończyć z dwoma jądrami w / boot ... aż do ponownego uruchomienia i ponownego uruchomienia Uruchom polecenie.

Więc polecenie jest

package-cleanup --oldkernels --count=1 

Strona podręcznika dokumentuje trzy opcje:

--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
Franklin Piat
źródło
2

Użyj yum upgradezamiastyum update

Wtedy zachowa tylko trzy jądra. Jeśli użyjesz, updateto wypełni twoje/boot

gurkan
źródło
-1

zgodnie z tym :

uruchom, rpm -q kernelaby wyświetlić zainstalowane jądro

następnie uruchom, yum remove kernel <shown kernel from output above>aby usunąć jądro

uruchom ponownie komputer

edycja: to faktycznie działa na problem @ Rona, ale upewnij się, że jądro elrepo działa poprawnie

Surya Stefanus
źródło
Jak uniknąć usuwania obecnego jądra?
Jeff Schaller
Polecenie specyficzne dla IDK dla tego @JeffSchaller Chyba, aby upewnić się, że nie usuwasz bieżącego jądra, sprawdź najpierw, używając, uname -ra następnie usuń nieużywane jądro, ale pokazane z tego polecenia,
Surya Stefanus