Configurare Sistem de operare

Construirea și instalarea kernel-urilor Linux personalizate

Reconstrucțiile kernelului nu sunt recomandate și nici acceptate pentru Rocky Linux. Înainte de a încerca să construiți un nucleu personalizat, vă rugăm să luați în considerare următoarele:

  • Este disponibilă funcționalitatea de care aveți nevoie instalând un modul kernel de la elrepo ?
  • Funcționalitatea de care aveți nevoie este disponibilă ca modul separat de nucleul însuși?
  • Rocky Linux și majoritatea celorlalte derivate EL au fost proiectate să funcționeze ca un mediu complet. Înlocuirea componentelor critice poate afecta modul în care acționează sistemul.
  • Majoritatea utilizatorilor nu mai trebuie să-și construiască propriul nucleu. Este posibil să aveți nevoie pur și simplu de un modul/driver de kernel sau poate să vă construiți propriul modul de kernel (kmod/dkms)

Ca ultim avertisment: dacă rupeți nucleul, sunteți responsabil pentru remedierea problemelor rezultate din sistemul dumneavoastră.

Nucleul

Cel mai adesea, când oamenii spun Linux , de obicei se referă la o „ distribuție Linux ” – de exemplu, Rocky Linux și Debian sunt tipuri de distribuție Linux. O distribuție cuprinde tot ceea ce este necesar pentru ca Linux să existe ca sistem de operare funcțional. Distribuțiile folosesc cod din diferite proiecte open source care sunt independente de Linux.

Linux este nucleul. Nucleul se află literalmente în centrul problemei [sistemului de operare].

Singurul lucru mai fundamental decât nucleul este hardware-ul sistemului în sine. Deși nucleul este o mică parte a unei distribuții Linux complete, este de departe cel mai critic element. Dacă nucleul eșuează sau se blochează, restul sistemului merge cu el.

Codul sursă al nucleului

Distribuția Rocky Linux are codul sursă pentru versiunea specifică de kernel pe care o acceptă, disponibil într-o formă sau alta. Acestea ar putea fi sub forma unui binar compilat ( *.src.rpm), a unui RPM sursă ( *.srpm) sau altele asemenea.

Dacă trebuie să descărcați o versiune diferită (posibil mai nouă) decât cea oferită de distribuția dvs. specifică Rocky Linux, primul loc pentru a căuta codul sursă este pe site-ul web oficial al nucleului:

www.kernel.org

Acest site menține o listă de site-uri web care reflectă sursa kernel-ului, precum și o mulțime de alte software-uri open source, distribuții și utilitare de uz general.

Lista oglinzilor este menținută la:

mirrors.kernel.org

Sfat

Majoritatea descărcărilor, configurării și compilării nucleului Linux efectuate în următoarele secțiuni pot/ar trebui să fie efectuate ca utilizator neprivilegiat. Cu toate acestea, pașii finali care necesită instalarea efectivă sau modificarea fișierelor de sistem și a fișierelor binare trebuie să fie efectuate cu privilegii ridicate.

Suntem capabili să facem cea mai mare parte a muncii ca utilizator neprivilegiat, deoarece vom folosi o opțiune specială de construire a nucleului, care ne permite să specificăm un director de lucru sau de ieșire personalizat. Mai exact, vom folosi O=~/build/kernelopțiunea pentru toate invocările aplicabile de make.

Unde ~/build/kerneleste echivalent cu /home/$USER/build/kernelsau$HOME/build/kernel

Versiunile kernelului și convențiile de denumire

Lista de site-uri web a nucleelor ​​disponibile va conține foldere pentru v1.0, v2.5, v2.6, v3.0, v3.x, v4.x, v5.x, v6.x și așa mai departe. Înainte de a vă urma înclinația naturală de a obține cea mai recentă versiune, asigurați-vă că înțelegeți cum funcționează sistemul de versiune a nucleului Linux.

Convenția actuală este de a numi și numerota noile versiuni majore de kernel ca „Linux 5.x” (numite și nuclee vanilla sau mainline). Astfel, prima din această serie va fi versiunea Linux 5.0 (la fel ca 5.0.0), următoarea va fi versiunea Linux 5.1 (la fel ca 5.1.0), urmată de versiunea Linux 5.2 și așa mai departe.

Orice modificări minore sau actualizări în cadrul fiecărei versiuni de lansare majoră vor fi reflectate prin incremente până la a treia cifră. Acestea sunt denumite în mod obișnuit eliberări punctuale stabile. Astfel, următoarea lansare punct stabilă pentru nucleul din seria 5.0.0 va fi versiunea Linux 5.0.1, urmată de versiunea 5.0.2 și așa mai departe. Un alt mod de a afirma acest lucru este de a spune, de exemplu, că versiunea Linux 5.0.4 este a patra versiune stabilă bazată pe seria Linux 5.0.0.

Instalarea instrumentelor și bibliotecilor necesare

O sursă obișnuită de eșec întâlnită în timpul procesului de construire a nucleului poate fi cauzată de lipsa tuturor software-ului necesar pentru compilarea și construirea liniei principale de kernel Linux. Instrumentele și bibliotecile lipsă pot fi instalate folosind managerul de pachete DNF pe o distribuție Rocky Linux. Ne vom ocupa de asta în această secțiune.

  1. Pe o distribuție Rocky Linux, puteți obține rapid instalate majoritatea instrumentelor de dezvoltare necesare executând această comandă:
    sudo dnf -y groupinstall 'C Development Tools and Libraries'
    

    Dacă obțineți „Modulul sau grupul „Unelte și biblioteci de dezvoltare C” nu este disponibil.” eroare comanda de mai jos este echivalentă cu cea de mai sus:

    sudo dnf -y groupinstall 'Development Tools'
    
  2. Unele alte biblioteci, fișiere antet și aplicații pot fi, de asemenea, obținute prin instalarea următoarelor pachete. Tip:
    sudo dnf -y install ncurses-devel openssl-devel elfutils-libelf-devel python3
    
  3. În continuare, avem nevoie de alte utilități disponibile numai în unele depozite terță parte acceptate. Unul dintre astfel de depozite este depozitul Powertools. Să activăm acel repo pe sistemul nostru Rocky. Tip:
    sudo dnf config-manager --set-enabled powertools
    
  4. În cele din urmă, să instalăm unul dintre pachetele necesare din depozitul Powertool. Tip:
    sudo  dnf -y install dwarves
    

Asta este tot pentru pachetele de precondiții necesare pentru construirea reală a Kernel-ului!

Descărcarea și despachetarea kernelului Linux

Versiunea nucleului pe care o vom construi în următoarea secțiune este versiunea 6.5.7 , care este disponibilă la:

www.kernel.org/pub/linux/kernel/v6.x/linux-6.5.7.tar.xz

Să începem procesul.

  1. Mai întâi, descărcați sursa kernelului în directorul de lucru curent folosind următoarea curlcomandă. Tip:
    curl -L -o linux-6.5.7.tar.xz \
    https://www.kernel.org/pub/linux/kernel/v6.x/linux-6.5.7.tar.xz
    
  2. Sursa kernel-ului pe care o veți descărca de pe Internet este un fișier care a fost comprimat și tarnat. Prin urmare, trebuie să decomprimați și să detașați fișierul sursă pentru a utiliza sursa.Asigurați-vă că vă aflați în directorul în care descărcați tarball-ul Kernel. Utilizați comanda tar pentru a despacheta și decomprima fișierul, rulând:
    tar xvJf linux-6.*.tar.xz
    

Construirea Kernel-ului

În această secțiune, vom revizui procesul de configurare și construire a unui nucleu. Acest lucru este în contrast cu sistemele de operare bazate pe macOS sau Windows, care vin preconfigurate și, prin urmare, conțin suport pentru multe funcții pe care le doriți sau nu.

Filosofia de proiectare Linux permite individului să decidă asupra părților importante ale nucleului. Acest design individualizat are avantajul important de a vă permite să reduceți lista de caracteristici, astfel încât Linux să poată rula cât mai eficient posibil.

Acesta este, de asemenea, unul dintre motivele pentru care este posibil să personalizați Linux pentru a rula în diverse configurații hardware, de la sisteme low-end, la sisteme încorporate, la sisteme high-end.

Sunt necesari doi pași principali în construirea unui nucleu:

  • configurarea
  • compilarea

Primul pas în construirea nucleului este configurarea caracteristicilor acestuia. De obicei, lista de caracteristici dorite se va baza pe orice hardware pe care trebuie să îl suportați. Acest lucru, desigur, înseamnă că veți avea nevoie de o listă cu acel hardware.

Pe un sistem care rulează deja Linux, puteți rula comenzi precum – lspciși lshwașa mai departe pentru a vă ajuta să afișați informații detaliate despre configurarea exactă a hardware-ului pe sistemul dumneavoastră. În distribuțiile bazate pe RPM, aceste utilitare sunt furnizate de pachetele pciutils*.rpmși lshw*.rpm.

O mai bună înțelegere a ceea ce constituie hardware-ul dvs. de bază vă poate ajuta să determinați mai bine de ce aveți nevoie în kernel-ul personalizat. Sunteți gata să începeți configurarea nucleului.

Igienizarea mediului de construcție

Putem începe configurația reală cu o idee aproximativă despre tipurile de hardware și caracteristici pe care noul nostru nucleu trebuie să le suporte. Dar mai întâi, câteva informații de fundal.

Arborele sursă al nucleului Linux conține mai multe fișiere numite Makefile (un makefile este pur și simplu un fișier text cu directive și, de asemenea, descrie relațiile dintre fișierele dintr-un program). Aceste fișiere make ajută la lipirea miilor de alte fișiere care alcătuiesc sursa kernel-ului. Ceea ce este mai important pentru noi aici este că makefile-urile conțin și ținte. Țintele sunt comenzile, sau directivele, care sunt executate de programul make.

avertisment: Evitați upgrade-urile inutile ale kernelului

Rețineți că, dacă aveți un sistem care funcționează stabil și bine comportat, există puține motive pentru a actualiza nucleul, cu excepția cazului în care una dintre aceste condiții este valabilă pentru dvs.:

  • O securitate sau o remediere a erorilor vă afectează sistemul și trebuie aplicată
  • Aveți nevoie de o funcție nouă specifică într-o versiune stabilă

În cazul unei remedieri de securitate, decideți dacă riscul vă afectează cu adevărat – de exemplu, dacă problema de securitate este găsită într-un driver de dispozitiv pe care nu îl utilizați, atunci este posibil să nu existe niciun motiv pentru a face upgrade. În cazul unei lansări de remediere a erorilor, citiți cu atenție notele de lansare și decideți dacă erorile vă afectează cu adevărat – dacă aveți un sistem stabil, actualizarea nucleului cu patch-uri pe care nu le utilizați niciodată poate fi inutilă.

Pe sistemele de producție, nucleul nu ar trebui să fie pur și simplu actualizat doar pentru a avea „cel mai recent nucleu”; ar trebui să aveți un motiv cu adevărat convingător pentru a face upgrade.

Makefile din rădăcina arborelui sursă a nucleului conține ținte specifice care pot fi utilizate în pregătirea mediului de construire a nucleului, configurarea nucleului, compilarea nucleului, instalarea nucleului și așa mai departe. Unele dintre obiective sunt discutate mai detaliat aici:

make mrproper
Această țintă curăță mediul de construcție a oricăror fișiere învechite și dependențe care ar fi putut fi rămase dintr-o construcție anterioară a nucleului. Toate configurațiile anterioare ale nucleului vor fi curățate (șterse) din mediul de construcție.
make clean
Această țintă nu face o treabă la fel de minuțioasă ca ținta mrproper. Acesta șterge doar majoritatea fișierelor generate. Nu șterge fișierul de configurare a kernelului (.config).
make menuconfig
Această țintă invocă o interfață de editor bazată pe text cu meniuri, liste de opțiuni și casete de dialog bazate pe text pentru configurarea nucleului.
make xconfig
Acest instrument/țintă de configurare a nucleului bazat pe GUI se bazează pe bibliotecile de dezvoltare grafică Qt. Aplicațiile bazate pe KDE/Plasma folosesc aceste biblioteci.
make gconfig
Acesta este, de asemenea, un instrument/țintă de configurare a nucleului bazat pe GUI, dar se bazează pe setul de instrumente GTK+. Acest set de instrumente GTK+ este utilizat intens în lumea desktop-ului GNOME.
make olddefconfig
Această țintă utilizează fișierul .config existent în directorul de lucru curent, actualizează dependențele și setează automat simboluri noi la valorile lor implicite.
make help
Această țintă vă va arăta toate țintele posibile și va servi ca un sistem de ajutor online rapid.

Vom folosi doar una dintre ținte pentru a configura nucleul în această secțiune. În special, vom folosi comanda make menuconfig. Editorul de configurare a nucleului menuconfig este un utilitar de configurare simplu și popular, bazat pe text, care constă din meniuri, liste de butoane radio și casete de dialog.

Are o interfață simplă și curată, care poate fi navigată cu ușurință cu tastatura și este aproape intuitiv de utilizat.

Trebuie să schimbăm ( cd) în directorul sursă al nucleului, după care putem începe configurarea nucleului. Dar înainte de a începe configurarea propriu-zisă a nucleului, ar trebui să curățați (pregătiți) mediul de construire a nucleului folosind comanda make mrproper:

cd linux-6.*
make  O=~/build/kernel mrproper

Configurația kernelului

În continuare, vom începe configurarea unui nucleu din seria Linux 6.*. Pentru a explora unele din interiorul acestui proces, vom activa suportul unei caracteristici specifice despre care vom pretinde că este o caracteristică NECESARĂ pe sistem. Odată ce ați înțeles cum funcționează acest lucru, puteți aplica aceeași procedură pentru a adăuga suport pentru orice funcție nouă de kernel dorită. Mai exact, vom activa suportul pentru sistemul de fișiere NTFS în nucleul nostru personalizat.

Cele mai multe distribuții Linux moderne sunt livrate cu un fișier de configurare a nucleului pentru nucleul care rulează, disponibil pe sistemul de fișiere local ca fișier comprimat sau obișnuit. Pe exemplul nostru de sistem Rocky, acest fișier se află în /bootdirector și este de obicei numit ceva de genul config-*.

Fișierul de configurare conține o listă a opțiunilor și caracteristicilor care au fost activate pentru nucleul specific pe care îl reprezintă. Un fișier de configurare similar cu acesta este ceea ce ne propunem să creăm prin procesul de configurare a nucleului. Singura diferență între fișierul pe care îl vom crea și cel gata făcut este că vom adăuga personalizări minore suplimentare la al nostru.

Sfat

Utilizarea unui fișier de configurare preexistent cunoscut ca cadru pentru crearea propriului fișier personalizat ne ajută să ne asigurăm că nu pierdem prea mult timp duplicând eforturile pe care alți oameni le-au depus deja pentru a găsi ce funcționează și ce nu funcționează!

Următorii pași acoperă modul de configurare a nucleului. Vom folosi un utilitar de configurare a nucleului bazat pe text, care vă va permite să urmăriți în terminalul dvs. indiferent dacă utilizați un mediu desktop GUI sau nu.

  1. Pentru a începe, vom copia și redenumi fișierul de configurare preexistent din /bootdirector în mediul nostru de construire a nucleului:
    cp /boot/config-`uname -r` ~/build/kernel/.config
    

    Folosim uname -raici pentru a ne ajuta să obținem fișierul de configurare pentru nucleul care rulează. Comanda uname -rimprimă lansarea nucleului care rulează. Folosirea acestuia ne ajută să ne asigurăm că obținem exact versiunea pe care o dorim, doar în cazul în care sunt prezente alte versiuni.

    Nota

    Editorul de configurare a nucleului Linux începe să caute în mod explicit și generează un fișier numit .config(pronunțat „configurație punct”) la rădăcina arborelui sursă a nucleului. Acest fișier este ascuns.

  2. Lansați utilitarul de configurare a nucleului grafic:
    make O=~/build/kernel menuconfig
    

    Va apărea un ecran similar cu acesta:

  1. Ecranul de configurare a nucleului care apare este împărțit în aproximativ trei zone. Partea de sus prezintă informații utile, comenzi rapide de la tastatură și legende pentru a vă ajuta să navigați în aplicație. Corpul principal al ecranului arată o listă extinsă, structurată în arbore, a opțiunilor generale configurabile ale nucleului. Puteți detalia în continuare elementele cu săgeți în părinte pentru a vizualiza și/sau configura elementele submeniului (sau secundare). În cele din urmă, partea de jos a ecranului afișează acțiunile/opțiunile pe care utilizatorul le poate alege.
  2. În continuare, vom adăuga suport pentru NTFS în nucleul nostru personalizat în scopuri demonstrative.În ecranul principal de configurare, utilizați tastele săgeți pentru a naviga și a evidenția elementul Sisteme de fișiere. Cu Sisteme de fișiere selectate, apăsați Enter pentru a vizualiza submeniul sau elementele secundare pentru Sisteme de fișiere.

    În secțiunea Sisteme de fișiere, utilizați tastele săgeți pentru a naviga la Sisteme de fișiere DOS/FAT/NT. Apăsați enter pentru a vedea elementele secundare pentru sistemele de fișiere DOS/FAT/NT.

  3. În secțiunea Sisteme de fișiere DOS/FAT/NT, navigați la suport pentru sistemul de fișiere NTFS.Tastați M(majuscule) pentru a permite modulelor să accepte sistemul de fișiere NTFS.

    Utilizați tastele săgeți pentru a naviga în jos la suport pentru depanare NTFS (NOU) și apoi apăsați y pentru a-l include.

    Utilizați tastele săgeți pentru a naviga în jos la suport de scriere NTFS și apoi apăsați Ypentru a-l include. Când ați terminat, litera Msau simbolul asterisc ( *) ar trebui să apară lângă fiecare opțiune, ca cele prezentate aici:

  1. Sfat

    Pentru fiecare dintre opțiunile configurabile, în utilitarul de configurare a nucleului, parantezele unghiulare goale, <>, indică faptul că caracteristica în cauză este dezactivată. Litera Mdin paranteze unghiulare,, indică faptul că caracteristica urmează să fie compilată ca modul.

    Și simbolul asterisc din paranteze unghiulare, <*>, indică faptul că suportul pentru caracteristică va fi integrat direct în nucleu. De obicei, puteți comuta printre toate opțiunile posibile folosind bara de spațiu de pe tastatură.

  2. Navigați înapoi la ecranul părinte Sisteme de fișiere apăsând tasta esc de două ori de pe tastatură în ecranul Sisteme de fișiere DOS/FAT/NT. Reveniți la ecranul principal de configurare a nucleului apăsând din nou esc de două ori pe tastatură.
  3. În cele din urmă, salvați modificările aduse fișierului .config în rădăcina arborelui sursă a nucleului și părăsiți aplicația de configurare a nucleului după salvarea fișierului apăsând din nou esc de două ori pe tastatură.
  4. Va apărea o casetă de dialog care vă solicită să salvați noua configurație. Asigurați-vă că este selectat Da și apoi apăsați Enter.
  5. După ce utilitarul de configurare a nucleului iese, veți fi aruncat înapoi în shell-ul dvs. în arborele sursă a nucleului. Ești aproape gata să-ți construiești nucleul!
  6. Trebuie să realizăm câteva personalizări suplimentare în distribuția noastră Rocky. Tip:
    sed -ri '/CONFIG_SYSTEM_TRUSTED_KEYS/s/=.+/=""/g' ~/build/kernel/.config
    

    Sfat

    Pentru a vedea rezultatele unora dintre modificările pe care le-ați făcut folosind instrumentul menuconfig, utilizați utilitarul grep pentru a vizualiza fișierul .config pe care l-ați salvat direct. De exemplu, pentru a vedea efectul suportului sistemului de fișiere NTFS pe care l-am activat anterior, tastați următoarele:

    $ grep NTFS ~/build/kernel/.config
    CONFIG_NTFS_FS=m
    CONFIG_NTFS_DEBUG=y
    CONFIG_NTFS_RW=y
    

    O notă rapidă despre modulele Kernel

    Suportul pentru module încărcabile este o caracteristică a nucleului Linux care permite încărcarea (sau eliminarea) dinamică a modulelor nucleului.

    Modulele kernel sunt bucăți de cod compilat care pot fi inserate dinamic în nucleul care rulează, mai degrabă decât să fie încorporate permanent în nucleu. Funcțiile care nu sunt utilizate adesea pot fi astfel activate, dar nu vor ocupa nicio cameră în memorie atunci când nu sunt utilizate.

    Din fericire, nucleul Linux poate determina automat ce să încarce și când. Desigur, nu toate caracteristicile sunt eligibile pentru a fi compilate ca modul. Nucleul trebuie să cunoască câteva lucruri înainte de a putea încărca și descărca module, cum ar fi cum să acceseze hard disk-ul și să analizeze sistemul de fișiere în care sunt stocate modulele care pot fi încărcate. Unele module kernel sunt, de asemenea, denumite în mod obișnuit drivere.

Compilarea Kernel-ului

În secțiunea precedentă, am parcurs procesul de creare a unui fișier de configurare pentru nucleul personalizat pe care dorim să-l construim. În această secțiune, vom realiza construirea propriu-zisă a nucleului. Dar înainte de a face acest lucru, vom adăuga o personalizare mai simplă întregului proces.

Personalizarea finală va fi adăugarea unei informații suplimentare utilizate în numele final al nucleului nostru. Acest lucru ne va ajuta să putem diferenția acest nucleu de orice alt nucleu cu același număr de versiune. Vom adăuga eticheta „personalizat” la informațiile despre versiunea kernelului. Acest lucru se poate face prin editarea Makefile-ului principal și adăugând eticheta pe care o dorim la variabila EXTRAVERSION.

Etapa de compilare a procesului de construire a nucleului este de departe cea mai ușoară, dar necesită și cel mai mult timp. Tot ceea ce este necesar în acest moment este pur și simplu să executați comanda make, care va genera apoi automat și se va ocupa de orice probleme de dependență, va compila nucleul în sine și va compila toate caracteristicile (sau driverele) care au fost activate ca module încărcate.

Din cauza cantității de cod care trebuie compilat, fiți pregătit să așteptați câteva minute, cel puțin, în funcție de puterea de procesare a sistemului dumneavoastră. Să cercetăm pașii specifici necesari pentru compilarea noului tău nucleu.

  1. Mai întâi, vom adăuga o piesă suplimentară la șirul de identificare pentru nucleul pe care urmează să-l construim. În timp ce suntem încă în rădăcina arborelui sursă a nucleului, vom folosi utilitarul sedpentru a edita Makefile-ul. Variabila pe care vrem să o schimbăm este aproape de partea de sus a fișierului. Vrem să schimbăm linia din fișier care arată astfel:
    EXTRAVERSION =
    

    La aceasta:

    EXTRAVERSION = -custom
    

    Utilizați următoarea sedcomandă pentru a efectua modificarea. Tip:

    sed  -i 's/^EXTRAVERSION.*/EXTRAVERSION = -custom/'  Makefile
    

    Desigur, puteți utiliza și orice editor de text cu care vă simțiți confortabil pentru a face schimbarea. Nu uitați să salvați modificările în fișier!

  2. Transmiteți ținta kernelversion la comanda make pentru a vedea versiunea completă a nucleului pe care tocmai ați personalizat-o:
    make O=~/build/kernel kernelversion
    

    Sfat

    Puteți profita de toată puterea de procesare suplimentară (CPU-uri, nuclee și așa mai departe) pe majoritatea sistemelor moderne și puteți accelera foarte mult operațiunile care necesită mult CPU, cum ar fi compilarea nucleului. Pentru a face acest lucru, puteți trece un parametru la comanda make care specifică numărul de joburi de rulat simultan. Numărul specificat de joburi sunt apoi distribuite și executate simultan pe fiecare nucleu CPU. Sintaxa pentru comandă este:

    ```bash
    make -j N
    ```
    where N is the number of jobs to run simultaneously. For example, if you have a octa (8) core–capable CPU, you can type:
    
    ```bash
    make -j 8
    ```
    
  3. Singura comandă care este necesară aici pentru a compila nucleul este comanda make:
    $ make  O=~/build/kernel
    make[1]: Entering directory '/home/super/build/kernel'
    SYNC    include/config/auto.conf.cmd
    GEN     Makefile
    HOSTCC  scripts/kconfig/conf.o
    HOSTLD  scripts/kconfig/conf
    GEN     Makefile
    ...<OUTPUT TRUNCATED>…
    LD [M]  sound/usb/usx2y/snd-usb-usx2y.ko
    LD [M]  sound/x86/snd-hdmi-lpe-audio.ko
    LD [M]  sound/xen/snd_xen_front.ko
    LD [M]  virt/lib/irqbypass.ko
    make[1]: Leaving directory '/home/super/build/kernel'
    
  4. Produsul final al acestei comenzi (adică nucleul) este destul de bine și așteaptă în cale:
    ~/build/kernel/arch/x86/boot/bzImage
    
  5. Trebuie să instalăm modulele deoarece am compilat porțiuni din kernel ca module (de exemplu, modulul NTFS). Introduceți următoarele:
    sudo make O=~/build/kernel modules_install
    

    Pe sistemul nostru Rocky, această comandă va instala toate modulele nucleului compilate în /lib/modules/<new_kernel-version>director. Această cale se va traduce /lib/modules/6.5.7-custom/în acest exemplu. Aceasta este calea de pe care nucleul va încărca toate modulele încărcate, după cum este necesar.

    Sfat

    Amprenta (dimensiunea) modulelor nucleului instalate prin intermediul make modules_installpoate deveni destul de semnificativă, deoarece modulele includ simboluri de depanare. Ca rezultat, puteți ajunge cu ușurință la un /lib/modules/6.5.7-custom/director care este aproape de 5 GB!

    Pentru acest ghid evităm această dimensiune mare prin includerea opțiunii în invocarea INSTALL_MOD_STRIP=1noastră . make modules_installPuteți reduce dimensiunea totală cu ordine de mărime (De exemplu, mai puțin de 200 MB!!) prin eliminarea acestor simboluri de depanare.

    Acest lucru se poate face prin includerea INSTALL_MOD_STRIP=1opțiunii la make modules_installcomandă.

Instalarea Kernel-ului

Presupunând că aveți un computer și lucrați din ~/build/kernel/director, nucleul compilat care a fost creat în exercițiul anterior va fi localizat în această cale – <kernel-build-dir>/arch/x86/boot/bzImagesau, pentru a fi mai precis, în exemplul nostru ~/build/kernel/arch/x86/boot/bzImage.

Fișierul de hartă corespunzător pentru aceasta va fi localizat la ~/build/kernel/System.map. Veți avea nevoie de ambele fișiere pentru faza de instalare.

Fișierul System.mapeste util atunci când nucleul se comportă greșit și generează mesaje „Oops”. Un „Oops” este generat pentru unele erori de kernel din cauza erorilor nucleului sau a hardware-ului defect.

Această eroare este asemănătoare cu Ecranul albastru al morții (BSOD) din Microsoft Windows. Aceste mesaje includ multe detalii despre starea curentă a sistemului, inclusiv câteva numere hexazecimale.

System.mappermite Linux să transforme acele numere hexazecimale în nume care pot fi citite, facilitând depanarea. Deși acest lucru este în principal în beneficiul dezvoltatorilor, poate fi util atunci când raportați o problemă.

Să parcurgem pașii necesari pentru a instala noua imagine de kernel.

  1. În timp ce vă aflați în rădăcina directorului de compilare a nucleului, copiați și redenumiți fișierul bzImageîn /bootdirectorul:
    sudo cp ~/build/kernel/arch/x86/boot/bzImage \
    /boot/vmlinuz-<kernel-version>
    

    Aici <kernel-version>este numărul versiunii nucleului. Numele de fișier pentru exemplul de kernel pe care îl folosim în acest ghid este vmlinuz-6.5.7-custom. Deci, iată comanda exactă pentru acest exemplu:

    sudo cp ~/build/kernel/arch/x86/boot/bzImage \
    /boot/vmlinuz-6.5.7-custom
    

    Nota

    Decizia de a numi imaginea nucleului vmlinuz-6.5.7-customeste oarecum arbitrară. Este convenabil, deoarece imaginile nucleului sunt denumite în mod obișnuit vmlinuz, iar sufixul numărului de versiune este util atunci când aveți mai multe nuclee disponibile sau nuclee care oferă o funcționalitate specifică (De exemplu vmlinuz-6.50.0-ws).

  2. Acum că imaginea nucleului este la locul său, copiați și redenumiți System.mapfișierul corespunzător în /bootdirector folosind aceeași convenție de denumire:
    sudo cp -v  ~/build/kernel/System.map \
    /boot/System.map-6.5.7-custom
    
  3. Cu nucleul pe loc, cu System.mapfișierul pe loc și cu modulele pe loc, acum suntem pregătiți pentru pasul final. Sintaxa pentru comanda necesară este:
    kernel-install add <kernel-version> <kernel-image>
    

    Aici <kernel-version>este numărul versiunii (și numele) nucleului. Și <kernel-image>este calea către noua imagine a nucleului compilată.

    Pentru exemplul nostru, tastați:

    sudo kernel-install \
    add  6.5.7-custom /boot/vmlinuz-6.5.7-custom
    

Comanda kernel-installeste un script shell ingenios. Este posibil să nu fie disponibil în fiecare distribuție Linux, dar este disponibil în distribuțiile mai noi Fedora, RHEL, CentOS. Acest instrument automatizează multe dintre lucrurile manuale finale pe care trebuie să le facem de obicei pentru a configura sistemul pentru a porni noul kernel pe care tocmai l-am construit.

În special, instrumentul face următoarele:

  • Acesta creează imaginea inițială a sistemului de fișiere RAM adecvată (imaginea initramfs – adică fișierul /boot/initramfs-<kernel-version>.img). Pentru a face acest lucru manual pe sistemele în care kernel-installnu este disponibil, utilizați mkinitramfscomanda.
  • Rulează depmodcomanda (care creează o listă de dependențe ale modulelor).
  • Actualizează configurația bootloader-ului.

Pentru sistemele care rulează versiunile mai noi de GRUB2, fișierul va fi /boot/grub2/grub.cfg. Pentru sistemele bazate pe EFI /boot/efi/<distro>/fedora/grub.cfgeste, de asemenea, actualizat.

Și pentru sistemele care rulează versiunile vechi ale GRUB, acesta va fi fișierul /boot/grub/grub.confsau /boot/grub/menu.lst. Și pentru distribuțiile foarte noi care au implementat noua specificație de încărcare de încărcare (BLS), o nouă intrare de încărcare de pornire va fi adăugată în /boot/loader/entries/director sau în orice director la care este indicat variabila numită blsdir.

Pe serverul nostru demo Rocky bazat pe EFI care rulează GRUB 2 utilizând BLS, o nouă intrare de pornire este creată în fișierul de încărcare de pornire situat aici:/boot/loader/entries/6fa25ca775f64accb0d3e53f0e4e6e92-6.5.7-custom.conf

$ sudo cat  /boot/loader/entries/6fa25ca775f64accb0d3e53f0e4e6e92-6.5.7-custom.conf
title Rocky Linux (6.5.7-custom) 8.5 (Green Obsidian)
version 6.5.7-custom
linux /vmlinuz-6.5.7-custom
initrd /initramfs-6.5.7-custom.img $tuned_initrd
options $kernelopts $tuned_params
id rocky-20220212013135-6.5.7-custom
grub_users $grub_users
grub_arg --unrestricted
grub_class kernel

Nota

Majoritatea distribuțiilor au mai multe grub2-*utilitare disponibile care pot fi utilizate pentru a efectua diverse sarcini de întreținere GRUB2 și bootloader. De exemplu, puteți utiliza grub2-set-defaultcomanda pentru a schimba sau a seta nucleul implicit care să fie pornit la pornirea sistemului.

Pornirea kernelului personalizat

Următoarea etapă este testarea nucleului pentru a vă asigura că sistemul poate porni cu el.

  1. Presupunând că ați făcut totul așa cum v-a prescris medicul și că totul a funcționat exact așa cum a spus medicul, puteți reporni sistemul în siguranță și puteți selecta noul nucleu din meniul încărcător de pornire în timpul pornirii sistemului:
    sudo reboot
    
  2. După ce sistemul pornește, puteți folosi comanda uname pentru a afla numele nucleului curent:
    $ uname -r
    6.5.7-custom
    
  3. Vă veți aminti că una dintre caracteristicile pe care le-am adăugat noului nostru nucleu este capacitatea de a suporta sistemul de fișiere NTFS. Asigurați-vă că noul nucleu are într-adevăr suport pentru NTFS, afișând informații despre modulul NTFS:
    [rockstar ~]$ modinfo ntfs
    filename:       /lib/modules/6.5.7-custom/kernel/fs/ntfs/ntfs.ko
    license:        GPL
    version:        2.1.32
    description:    NTFS 1.2/3.x driver - Copyright …..
    ...OUTPUT TRUNCATED...
    
[mai mult...]

Cum migrați la Rocky Linux din CentOS Stream, CentOS, AlmaLinux, RHEL sau Oracle Linux

Avertismente

  1. Verificați pagina README a lui migrate2rocky (legată mai sus), deoarece există confruntări cunoscute între script și depozitele lui Katello. În timp, probabil vom descoperi (și eventual vom repara) mai multe ciocniri și incompatibilități, așa că veți dori să știți despre acestea, în special pentru serverele de producție.
  2. Acest script este cel mai probabil să funcționeze fără incidente la instalări complet noi. Dacă doriți să convertiți un server de producție, faceți o copie de siguranță a datelor și un instantaneu al sistemului sau faceți-o mai întâi într-un mediu de procesare.

Descărcați fișierele comprimate din GitHub și extrageți-l pe cel de care aveți nevoie (acesta va fi migrate2rocky.sh sau migrate2rocky9.sh ). Puteți găsi fișiere zip pentru orice depozit GitHub în partea dreaptă a paginii principale a depozitului:

Apoi, încărcați executabilul pe serverul dvs. cu SSH, rulând această comandă pe mașina dvs. locală:

Nota

Dacă rulați un sistem 9.x, adăugați un 9 înainte de.sh

scp PATH/TO/FILE/migrate2rocky.sh root@yourdomain.com:/home/

Ajustați toate căile de fișiere și domeniile serverului sau adresele IP după cum este necesar.

Modul în gitcare

Instalați gitpe serverul dvs. cu:

dnf install git

Apoi clonează depozitul rocky-tools cu:

git clone https://github.com/rocky-linux/rocky-tools.git

Notă: Această metodă va descărca toate scripturile și fișierele din depozitul rocky-tools.

Calea ușoară

Acesta este probabil cel mai simplu mod de a obține scriptul. Aveți nevoie doar de un client HTTP adecvat ( , curlși așa mai departe) instalat pe server.wgetlynx

Presupunând că aveți curlutilitarul instalat, rulați următoarea comandă pentru a descărca scriptul în orice director pe care îl utilizați:

Nota

Dacă rulați un sistem 9.x, adăugați un 9 înainte de.sh

curl https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh -o migrate2rocky.sh

Această comandă va descărca fișierul pe serverul dvs. și numai fișierul dorit. Dar din nou, preocupările de securitate sugerează că aceasta nu este neapărat cea mai bună practică, așa că rețineți asta.

Rularea scriptului și instalare

Utilizați cdcomanda pentru a comuta la directorul în care se află scriptul, asigurați-vă că fișierul este executabil și acordați permisiuni proprietarului fișierului script x.

Nota

În comenzile de mai jos, dacă rulați un sistem 9.x, adăugați un 9 înainte de.sh

chmod u+x migrate2rocky.sh

Și acum, în sfârșit, rulați scriptul:

./migrate2rocky.sh -r

Acea opțiune „-r” îi spune scriptului să continue și să instaleze totul. Dacă ați făcut totul corect, fereastra terminalului va arăta cam așa:

Acum, scriptul va dura ceva timp pentru a converti totul, în funcție de mașina reală și de conexiunea acesteia la internetul mai larg.

Dacă vedeți un Complete! mesaj la sfârșit, totul este în regulă și puteți reporni serverul.

Acordați-i ceva timp, conectați-vă din nou și ar trebui să aveți un nou server Rocky Linux. Rulați hostnamectlcomanda pentru a verifica dacă sistemul de operare a migrat corect.

[mai mult...]

Utilizarea System File Checker în Windows 11 si Windows 10

  1. Asigurați-vă că ați instalat cele mai recente actualizări pentru Windows, apoi reporniți computerul.
  2. În caseta de căutare din bara de activități, tastați linie de comandă și faceți clic dreapta sau apăsați lung linie de comandă (aplicație desktop) din lista de rezultate. Selectați Executare ca administrator, apoi selectațiDa.
  3. Tastați DISM.exe /Online /Cleanup-image /Restorehealth (observați spațiul dinainte de fiecare „/”), apoi apăsați Enter. (Notă: pornirea și finalizarea acestui pas poate dura câteva minute.)
  4. După ce vedeți un mesaj care spune “Operațiunea s-a finalizat cu succes”, tastați sfc /scannow (observați spațiul dintre “sfc” și “/”) și apăsați pe Enter.
  5. După ce vedeți un mesaj care spune “Verificare 100% finalizată”, tastați ieșire și apăsați Enter.
[mai mult...]