Nadgradnja AlmaLinux in Rocky Linux na novo glavno različico z ELevate

Linux Branje: 6 min

Glavne različice AlmaLinux in Rocky Linux dolgo dobivajo varnostne posodobitve (8 do leta 2029, 9 do leta 2032), novejše različice programske opreme (PHP, podatkovne baze, programske knjižnice) pa vedno izidejo za najnovejšo glavno različico. Strežnika ni treba znova namestiti: z orodjem ELevate ga je mogoče nadgraditi na mestu. ELevate temelji na ogrodju Leapp podjetja Red Hat in pakete zamenja s paketi naslednje glavne različice. Naenkrat je mogoče narediti en korak glavne različice: z 8 na 10 vodi pot prek 9.

Nadgradnjo AlmaLinux 9 → 10 smo oktobra 2026 od začetka do konca izvedli na navideznem računalniku AlmaLinux 9.8 (na arhitekturi aarch64, z 2 GB pomnilnika); izpisi v članku izvirajo iz tega preizkusa. Korakov 8 → 9 nismo preizkusili, ti sledijo dokumentaciji ELevate.

Ta članek je namenjen tistim, ki upravljajo lasten VPS ali namenski strežnik. O nadgradnji strežnika CloudLinux ter o strežnikih s cPanelom in Pleskom govori članek Nadgradnja CloudLinuxa z 8 na 9 z ELevate; na strežniku s cPanelom je treba uporabiti lastno skripto cPanela elevate-cpanel, tukaj opisanih korakov ne uporabljaj.

Preden začneš

  • Naredi popolno varnostno kopijo ali posnetek strežnika. Po neuspešni nadgradnji je obnovitev najzanesljivejša rešitev.
  • Zagotovi dostop, ki ni odvisen od SSH, na primer konzolo VPS. Med nadgradnjo se strežnik znova zažene, in če gre kaj narobe, ga prek SSH ne boš dosegel.
  • Računaj z izpadom. Zamenjava paketov po ponovnem zagonu je v preizkusu trajala 3 minute; na strežniku z veliko paketi in počasnejšim diskom je lahko tudi pol ure do uro in pol.
  • Poskrbi za dovolj pomnilnika. Leapp pakete ciljnega sistema pripravi v ločenem okolju, za to pa potrebuje veliko pomnilnika. V preizkusu ga je z 2 GB pomnilnika in brez swapa ustavil OOM killer (Out of memory: Killed process … (dnf) … anon-rss:1486780kB), v poročilu pa se je pojavila napaka „Unable to install target ‘almalinux’ 10 userspace packages”. Po dodani 2-GB datoteki swap je stekel brezhibno; njeno ustvarjanje opisuje članek Zmanjkalo je pomnilnika: OOM killer in datoteka swap.
  • Preglej zunanje repozitorije (dnf repolist). Pakete EPEL obravnava ELevate, v preizkusu je tudi EPEL prešel na različico 10. Pakete drugih zunanjih repozitorijev (na primer Remi, ELRepo, MariaDB, Docker) pred nadgradnjo odstrani in jih nato znova namesti.
  • Posodobi sistem in ga znova zaženi, da bo teklo najnovejše jedro:

    sudo dnf update -y
    sudo reboot
    

Ukaze zaganjaj v seji tmux ali screen, da jih prekinitev povezave SSH ne prekine (glej: Zaganjanje ukazov ob prekinjeni povezavi SSH).

1. Namestitev ELevate

sudo dnf install -y http://repo.almalinux.org/elevate/elevate-release-latest-el$(rpm --eval %rhel).noarch.rpm

Ukaz namesti repozitorij, ki ustreza trenutni glavni različici. Nato pakete Leapp in podatkovni paket ciljne distribucije:

# Na AlmaLinux 9 (z 8) ali AlmaLinux 10 (z 9)
sudo dnf install -y leapp-upgrade leapp-data-almalinux

# Na Rocky Linux 9 (z 8)
sudo dnf install -y leapp-upgrade leapp-data-rocky

V preizkusu je v AlmaLinux 9 leapp-upgrade namestil paket leapp-upgrade-el9toel10.

2. Predhodno preverjanje

sudo leapp preupgrade

Ta korak v sistemu ne spremeni ničesar, le oceni, ali je nadgradnjo mogoče izvesti. Prvi zagon skoraj vedno javi napako, kar je pričakovano. Rezultat se zapiše v datoteko /var/log/leapp/leapp-report.txt:

sudo less /var/log/leapp/leapp-report.txt

V poročilu nadgradnjo ovirajo postavke z oznako Risk Factor: high (inhibitor); te moraš odpraviti. Poročilo pri vsaki postavki opiše predlagano rešitev. leapp preupgrade zaganjaj, dokler v povzetku ne piše Inhibitors: 0 in Errors: 0.

Kaj je javil v preizkusu 9 → 10

  • Legacy network configuration found (inhibitor): omrežna nastavitev je v starem formatu ifcfg (/etc/sysconfig/network-scripts/ifcfg-eth0), ki ga različica 10 ne bere več. Ukaz, naveden v poročilu, jo pretvori v lastni format NetworkManagerja:

    sudo nmcli connection migrate /etc/sysconfig/network-scripts/ifcfg-eth0
    

    V preizkusu je nato nastavitev prišla v datoteko /etc/NetworkManager/system-connections/System eth0.nmconnection, omrežje pa je delovalo tudi po nadgradnji.

  • Packages not signed by the distribution vendor found on the system (high): seznam paketov, nameščenih iz zunanjih repozitorijev (v preizkusu remi-release, elrepo-release in paketi Remi php84-*). Te smo odstranili (sudo dnf remove 'php84-*' remi-release elrepo-release).
  • Berkeley DB (libdb) has been detected (medium): v različici 10 libdb ni več. Ukrepati je treba le, če lastna aplikacija uporablja podatkovno bazo Berkeley DB.
  • SElinux will be set to permissive mode (low): SELinux za čas nadgradnje preide v permisivni način; nato ga je treba znova vklopiti (glej 4. točko).

Kaj pri nadgradnji 8 → 9 pogosto javi

  • Prijava root z geslom: po privzeti nastavitvi AlmaLinux 9 se uporabnik root prek SSH ne more prijaviti z geslom. Če si se doslej prijavljal tako, bi se po nadgradnji zaklenil zunaj. Ustvari lastnega uporabnika (glej: Ustvarjanje uporabnika in dodelitev pravic sudo) ali med nastavitve SSH izrecno vpiši vrstico PermitRootLogin yes.
  • Vprašanja, na katera je treba odgovoriti: če Leapp postavi vprašanje, se to zapiše v datoteko /var/log/leapp/answerfile. Odgovor vneseš z ukazom leapp answer, na primer:

    sudo leapp answer --section check_vdo.confirm=True
    

3. Nadgradnja

sudo leapp upgrade
sudo reboot

Prvi ukaz prenese pakete nove glavne različice in pripravi nadgradnjo (v preizkusu v 4 minutah). Na koncu izpiše: „Reboot the system to continue with the upgrade. … Make sure you have console access to view the actual upgrade process.” Naslednji zagon samodejno poteka z vnosom ELevate-Upgrade-Initramfs (sudo grubby --default-title pokaže tega), tam poteka zamenjava paketov, nato pa se strežnik še enkrat znova zažene. Ne prekinjaj; postopek lahko spremljaš v konzoli:

Nadgradnja ELevate v konzoli: Leapp v initramfs zaporedno izvede faze InitRamStart, LateTests, Preparation in RPMUpgrade

V preizkusu je strežnik 185 sekund po ponovnem zagonu že odgovarjal prek SSH kot AlmaLinux 10.2. Če se strežnik po dveh urah še vedno ne odziva, se je nadgradnja verjetno zataknila; poglej konzolo ali obnovi varnostno kopijo.

4. Po nadgradnji

Preveri različico in storitve:

cat /etc/almalinux-release
uname -r
systemctl --failed

V preizkusu: AlmaLinux release 10.2 (Lavender Lion), 6.12.0-…el10_2, neuspešne storitve ni bilo.

Ponovni vklop SELinux

Po nadgradnji SELinux ostane v načinu Permissive (v datoteki /etc/selinux/config SELINUX=permissive). Znova ga vklopi in znova zaženi strežnik:

sudo sed -i 's/^SELINUX=.*/SELINUX=enforcing/' /etc/selinux/config
sudo reboot

Po ponovnem zagonu je izpis getenforce Enforcing; v preizkusu ni nastala nobena prepoved SELinux (sudo ausearch -m avc -ts boot). Če pa, pomaga članek SELinux: zakaj dobim napako „Permission denied”?.

Čiščenje

Od paketov stare glavne različice ostanejo stara jedra in paketi Leapp:

rpm -qa | grep -E '\.el9'

Stara jedra odstrani dnf:

sudo dnf remove $(rpm -qa | grep -E '^kernel.*\.el9')

Paketov Leapp in ELevate v preizkusu dnf remove zaradi navzkrižja odvisnosti ni mogel odstraniti („conflicting requests”, „problem with installed package python3-leapp”), navadni rpm -e pa je:

sudo rpm -e $(rpm -qa | grep -iE 'leapp|elevate')

Če sudo grubby --info=ALL | grep ^title še navaja staro jedro, izbriši vnos (sudo grubby --remove-kernel=/boot/vmlinuz-<stara različica>). Nazadnje posodobi sistem in preveri bazo paketov:

sudo dnf update
dnf check

Prej odstranjene zunanje pakete (Remi, ELRepo itd.) zdaj znova namesti iz repozitorijev za novo glavno različico.

AlmaLinux 10 in starejši procesorji

Različica AlmaLinux 10 za x86_64 privzeto zahteva novejši procesor (raven x86-64-v3); za starejše procesorje izhaja ločena različica x86-64-v2. Pred nadgradnjo 9 → 10 v dokumentaciji AlmaLinux ELevate preveri, katera različica in pot nadgradnje veljata za tvoj strežnik. Podprto raven procesorja v trenutnem sistemu pokaže ukaz /lib64/ld-linux-x86-64.so.2 --help | grep supported.

Nazaj: Linux – članki (76)