Ghid Gentoo Pentru Actualizarea Versiunii de Kernel
1.
Introducere
Kernel-ul este unul dintre puţinele clase de pachete din portage care necesită
intervenţie manuală pentru a finaliza actualizarea. Portage va descărca şi
instala sursa de kernel pentru dvs., dar aici trebuie să interveniţi şi să
compilaţi noul kernel inainte ca orice schimbări să aibă efect.
Deşi acest ghid ţinteşte utilizatorii care actualizează de la o versiune de
kernel la alta, el poate fi folositor deasemenea utilizatorilor ce migrează de
la un pachet de kernel la altul.
gentoo-sources este folosit ca exemplu în acest document, totuşi,
instrucţiunile de aici se aplică de asemenea şi celorlalte pachete prezente in
portage.
2.
De ce să actualizăm kernel-ul?
În general, actualizarea de la o versiune minoră de kernel la următoarea nu va
aduce mari schimbări. Există mai multe motive pentru a actualiza kernel-ul.
Unul îl reprezintă avantajele unei noi funcţii sau driver; altul, pentru a fi
protejat împotriva unei vulnerabilităţi de securitate, sau doar pentru a
menţine un sistem la zi şi viabil.
Chiar dacă alegeţi sa nu actualizaţi la fiecare nouă revizie de kernel, este
recomandat ca măcar din când în când să actualizaţi. Este foarte recomandat să
actualizaţi la o nouă versiune de kernel dacă aceasta rezolvă o problemă legată
de securitate.
3.
Obţinerea unor surse noi prin Portage
Actualizarea surselor de kernel se face ca în cazul celorlalte pachete -
folosind utilitarul emerge. Acesta va fi probabil cazul când veţi vrea
să actualizaţi pachetul de kernel când veţi observa că a apărut un o
actualizare în lista de actualizări world. De exemplu:
Cod 3.1: Surse noi de kernel ce apar in lista de actualizări |
# emerge -Dup world
Calculating dependencies ...done!
[ebuild NS ] sys-kernel/gentoo-sources-2.6.9-r2 [2.6.8-r5]
|
Notă:
Indicatorul "NS" din textul afişat mai sus, reprezintă faptul că noul kernel va
fi instalat într-un Slot Nou (în engleză: New Slot), spre ex. sursele versiunii
precedente de kernel vor fi păstrate, până când le veţi dezinstala dvs. manual.
|
Puteţi continua cu instalarea pachetului actualizat, spre ex:
Cod 3.2: Actualizarea surselor de kernel |
# emerge -u gentoo-sources
|
Sursele de kernel vor fi, apoi, instalate într-un subdirector al
/usr/src. În exemplul de sus, noile surse de kernel vor fi
instalate în /usr/src/linux-2.6.9-gentoo-r2.
4.
Refacerea link-ului simbolic /usr/src/linux
Gentoo necesită ca link-ul simbolic /usr/src/linux să indice către
sursele kernel-ului pe care îl rulaţi.
Portage poate actualiza link-ul simbolic automat când instalaţi un nou pachet
de surse de kernel. Tot ce trebuie să faceţi este să adăugaţi indicatorul
symlink în variabila USE din /etc/make.conf.
Cod 4.1: Examplu de variabilă USE în /etc/make.conf |
USE="symlink x86 3dnow 3dnowex X aac aalib adns alsa apache2"
|
Alternativ, puteţi utiliza app-admin/eselect pentru a modifica link-ul
simbolic.
Cod 4.2: Utilizarea eselect pentru a crea link-ul simbolic |
# emerge eselect
# eselect kernel list
Available kernel symlink targets:
[1] linux-2.6.9-gentoo-r1
[2] linux-2.6.9-gentoo-r2
# eselect kernel set 1
|
Dacă doriţi să efectuaţi personal această operaţie, următorul exemplu vă
explică cum să faceţi ca link-ul simbolic să indice către
linux-2.6.9-gentoo-r2:
Cod 4.3: Refacerea manuală a link-ului simbolic /usr/src/linux |
# cd /usr/src
# ln -sfn linux-2.6.9-gentoo-r2 linux
|
5.
Configurarea, compilarea şi instalarea noului kernel
Pentru oricare dintre aceste opţiuni, ar trebui să consultaţi instrucţiunile
oferite de Manualul Gentoo cu
legătură la Configurarea Kernelului şi Configurarea Aplicaţiei
Bootloader. În continuare, este evidenţiată o serie de acţiuni necesare:
Opţiunea 1: Configurarea automată a kernelului cu Genkernel
Dacă aţi mai folosit genkernel, trebuie doar să repetaţi etapele prin care aţi
trecut când aţi instalat kernelul pentru prima dată.
Rulaţi genkernel in mod obişnuit:
Cod 5.1: Invocarea genkernel |
# genkernel all
# genkernel --udev all
|
Puteţi de asemenea să folosiţi şi alţi parametri pentru alte utilităţi
genkernel. De exemplu, dacă doriţi să configuraţi şi alte opţiuni din kernel
folosind menuconfig şi doriţi ca genkernel să reactualizeze configuraţia
aplicaţiei boot loader grub, atunci rulaţi genkernel astfel:
Cod 5.2: Rularea genkernel cu unele argumente comune |
# genkernel --menuconfig --bootloader=grub all
|
Pentru mai multe detalii consultaţi Ghidul
Genkernel pentru Gentoo Linux, sau Manualul Gentoo. Multe dintre opţiuni
pot fi setate în fişierul de configurare pentru genkernel,
/etc/genkernel.conf.
Opţiunea 2: Configurarea manuală
Pentru a incepe lansaţi opţiunea menuconfig in interiorul sursei
kernel-ului:
Cod 5.3: Lansarea menuconfig |
# cd /usr/src/linux
# make menuconfig
|
Selectaţi opţiunile în conformitate cu configuraţia sistemului dvs. şi al
sistemului de operare. Pentru mai multe informaţii despre configurarea de
kernel, consultaţi capitolul intitulat Configurarea Kernel-ului din
Manualul Gentoo.
Apoi compilaţi kernelul şi copiaţi-l pe partiţia de boot. Incă o dată urmaţi
instrucţiunile din Manualul
Gentoo, explicate în capitolul despre Configurarea Aplicaţiei
Bootloader. Dacă /boot este o partiţie separată, asiguraţi-vă
că este mount-ată înainte de a copia imaginea de kernel compilată în acest
director! Dacă nu faceţi acest pas, nu veţi mai putea porni sistemul cu noul
kernel.
Cod 5.4: Compilarea şi instalarea noului kernel |
# make && make modules_install
# mount /boot
# cp arch/i386/boot/bzImage /boot/bzImage-2.6.9-gentoo-r2
|
La sfârşit ar trebui să actualizaţi configuraţia aplicaţiei bootloader,
adăugând o nouă intrare pentru imaginea nouă de kernel (nu o ştergeţi pe cea
veche incă!) şi demount-aţi partiţia /boot. Încă o dată consultaţi
manualul pentru alte instrucţiuni.
6.
Reinstalarea modulelor externe
Dacă folosiţi module de kernel care nu sunt incluse in sursa kernel-ului,
dar sunt disponibile în portage (ex. driver-ele ALSA sau driver-ele grafice
NVIDIA sau ATI), atunci trebuie să le reinstalaţi la fiecare actualizare de
kernel. Aceasta este la fel de simplă ca o recompilare a pachetului
respectiv. Pentru mai multe informaţii consulaţi capitolul despre
Configurarea Kernel-ului din Manualul Gentoo.
Există disponibil un utilitar simplu (sys-kernel/module-rebuild) ce
recompilează toate modulele instalate de pachete separate pentru kernel-ul
din /usr/src/linux. Utilizarea acestuia este destul de uşoară.
După instalarea acestuia, pur şi simplu rulaţi module-rebuild
populate pentru a popula baza de date cu o listă de pachete ce vor trebui
recompilate după actualizarea versiunii de kernel. Odată ce aţi terminat
actualizarea sau recompilarea kernel-ului dvs., rulaţi module-rebuild
rebuild pentru a recompila toate driver-ele pentru noul dvs. kernel.
Pentru mai multe informaţii, rulaţi module-rebuild fără nici o
opţiune pentru a vedea o listă de comenzi ce pot fi utilizate cu această
aplicaţie.
7.
Repornirea în noul kernel
Acum, închideţi toate aplicaţiile şi reporniţi sistemul. Dacă aţi urmat
instrucţiunile de mai sus corect, meniul aplicaţiei bootloader ar trebui să
includă o intrare pentru noul kernel. Selectaţi noul kernel şi lăsaţi sistemul
să pornească.
În mod normal, sistemul dvs. va efectua boot fară probleme în noul kernel şi
veţi putea să vă autentificaţi şi să continuaţi ceea ce făceaţi înainte. Dacă
acesta este şi cazul dvs., atunci actualizarea este completă.
Dacă aţi făcut o greşeală şi sistemul dvs. nu va efectua boot în kernel-ul nou,
atunci reporniţi şi selectaţi intrarea din meniul aplicaţiei bootloader, ce
corespunde ultimei imagini de kernel, cunoscută ca funcţională. Puteţi să
reîncepeţi de la etapa Configurarea, compilarea şi
instalarea noului kernel -- făcând schimbările necesare pentru a corecta
greşeala. În unele cazuri nici nu este neapărată nevoie să reporniţi (spre
ex., aţi uitat un driver de placă audio sau de reţea).
8.
Folosirea mai multor versiuni de kernel
Poate că aţi observat că atunci când instalaţi sursele pentru versiunea nouă de
kernel, sursele kernel-ului actual nu au fost şterse. Acest comportament este
intenţionat -- vă permite să comutaţi uşor între versiuni diferite de kernel.
Schimbarea între mai multe versiuni de kernel este simplă, lăsând sursele
kernel-ului din /usr/src/ şi binarele bzImage în
partiţia dvs. /boot (la care se referă intrările din configuraţia
aplicaţiei dvs. boot loader). De fiecare dată când efectuaţi boot, vi se va
prezenta un meniu din care să vă alegeţi kernelul cu care să porniţi sistemul.
9.
Ştergerea versiunilor vechi de kernel
Continuând de la ultima secţiune, probabil sunteţi mulţumit de noul kernel şi
nu este nevoie să păstraţi vechile versiuni. Pentru a îndepărta uşor toate
sursele unui kernel, cu excepţia celui mai nou, puteţi beneficia de avantajele
opţiunii prune disponibilă prin intermediul emerge. În continuare
vom folosi drept exemplu gentoo-sources:
Cod 9.1: Înlăturarea versiunilor vechi utilizând prune |
# emerge -P gentoo-sources
|
În majoritatea cazurilor fişierele temporare folosite în timpul compilării vor
rămâne în directorul sursei aflat în /usr/src. Le puteţi şterge
folosind rm.
De asemenea puteţi şterge fară probleme şi modulele care erau folosite de
această versiune de kernel. Aceasta se poate face ştergând directoarele
corespunzătoare din /lib/modules care fac legătura cu versiunea
kernelului pe care îl ştergeţi. Aveţi însă grijă să nu ştergeţi
modulele ce aparţin versiunilor de kernel pe care, incă, le folosiţi!
La final, puteţi efectua mount pentru partiţia /boot şi să
ştergeţi fişierele bzImage pentru versiunea de kernel la care
renunţaţi. Ar trebui de asemenea să editaţi configuraţia aplicaţiei
bootloader, astfel ca acesta să nu mai facă referiri la acest(e) kernel(-uri).
10.
Avansat: Utilizarea fişierului .config din versiunea precedentă pentru a
configura o nouă versiune de kernel
Este posibil ca, uneori, să salvaţi timp prin reutilizarea fişierului de
configurare din versiunea precedentă de kernel în momentul configurării unei
noi versiuni. Notaţi faptul că această metodă este, în general, nesigură --
prea multe schimbări între fiecare versiune de kernel pentru ca aceasta să fie
o actualizare de încredere.
Singura situaţie potrivită este în momentul actualizării de la o revizie Gentoo
la alta. Spre exemplu, modificările efectuate între
gentoo-sources-2.6.9-r1 şi gentoo-sources-2.6.9-r2 vor fi foarte
puţine, şi în general este OK să utilizaţi următoarea metodă. În orice caz, nu
este potrivit să o utilizaţi ca în exemplul de pe parcursul acestui document:
actualizarea de la 2.6.8 la 2.6.9. Prea multe modificări între versiunile
publicate oficial, adesea au ca rezultat unele probleme pentru utilizator,
deoarece aceştia au dezactivat opţiuni pe care nu le doreau dezactivate.
Pentru a reutiliza fişierul .config amintit anterior, trebuie doar
să-l copiaţi şi apoi să rulaţi make oldconfig. În următorul exemplu vom
importa fişierul de configurare din gentoo-sources-2.6.9-r1 în
gentoo-sources-2.6.9-r2.
Cod 10.1: Reutilizarea fişierului de configurare anterior |
# cd /usr/src/linux-2.6.9-gentoo-r2
# cp ../linux-2.6.9-gentoo-r1/.config .
# make oldconfig
|
În acest punct, vi se vor putea cere răspunsul în cazul unor opţiuni de
configurare ce au fost modificate între două versiuni. Odată ce aţi efectuat
acest pas, puteţi compila şi instala kernel-ul în mod normal, fără a trebui să
utilizaţi meniul procesului de configurare menuconfig.
11.
Probleme după o actualizare de kernel?
Odată cu rapida dezvoltare a kernel-ului de Linux, inevitabil au apărut şi
unele schimbări de la o versiune de kernel la alta, fapt ce poate cauza unele
probleme. Dacă aveţi probleme cu ultimele versiuni ale pachetelor de
kernel suportate de Gentoo atunci vă rugăm să ni le raportaţi.
Conţinutul acestui document este publicat sub licenţa Creative Commons -
Attribution / Share Alike.
|