Serg iakovlev

Cum se construiește un kernel în SUSE

Fiecare distribuție are un set de instrumente specifice pentru construirea kernel-ului din surse. Acest articol va discuta despre asamblarea kernel-ului în SuSE. Sursele vor fi utilizate de la www.kernel.org (kernel vanilla). Acesta va arăta cum să patch-uri sursa kernel-ului.

Toate acestea au fost testate la 10.1.

Aceasta nu este singura modalitate de a îndeplini această sarcină. Nu pot garanta nimic despre faptul că acest lucru va funcționa pentru dvs.

Scopul acestui articol este de a compila pachetul kernel rpm. care pot fi instalate pe sistemul dvs. și apoi pe alte sisteme SUSE.

Minim necesar pentru asamblarea nucleului

Trebuie să instalați pachetul ncurses-devel. care este necesar pentru comanda menuconfig:

yast-i ncurses-devel

Apoi, va trebui să modificați mai multe instrumente. Dacă nu facem acest lucru, vom primi un avertisment în momentul construirii kernel-ului:

/usr/lib/rpm/find-requires.ksyms: linia 12: / usr / bin / nm: lista de argumente este prea lungă

și nu vom putea instala pachetul nostru kernel rpm.

Pentru început, hai să ne asigurăm:

cp /usr/lib/rpm/find-provides.ksyms /usr/lib/rpm/find-provides.ksyms_orig
cp /usr/lib/rpm/find-requires.ksyms /usr/lib/rpm/find-requires.ksyms_orig
cp /usr/lib/rpm/find-supplements.ksyms /usr/lib/rpm/find-supplements.ksyms_orig

Apoi, deschidem fiecare din cele trei script-uri menționate mai sus și înlocuim kernel-ul liniei - *) is_kernel_package = 1 ;;
pe linie
kernel *) is_kernel_package = 1 ;; :

Despachetați și creați linux symlink:

tar xjf linux-2.6.18.2.tar.bz2
Linux linux-2.6.18.2 linux
cd / usr / src / linux

Patches (opțional)

Este posibil să aveți nevoie de drivere care nu sunt în kernel sau aveți nevoie de suport pentru virtualizare sau altă tehnologie care nu există încă în kernel. În toate aceste cazuri, aveți nevoie de un patch.

Acum imaginați-vă că ați descărcat patch-ul de care aveți nevoie (o voi examina cu condiția patch.bz2). Acest lucru se face după cum urmează. (încă sunteți în / usr / src / linux):

bzip2 -dc /usr/src/patch.bz2 | patch -p1 - rulare uscată
bzip2 -dc /usr/src/patch.bz2 | patch-p1

Prima comandă este doar un test care nu face nimic. Dacă nu există erori în ea, numai atunci puteți rula a doua comandă.

Dacă patch-ul are o extensie (.gz) în loc de bzip2 (.bz2), kernel-ul patch-uri astfel:

gunzip -c /usr/src/patch.gz | patch -p1 - rulare uscată
gunzip -c /usr/src/patch.gz | patch-p1

Prepatch-ul este de fapt o eliberare alfa. Locuiește în directorul de testare al arhivei.

Cum se aplică patch-ul patch 2.6.19-rc6 la 2.6.18:

Configurarea kernelului

Vom folosi configurația kernelului curent ca bază pentru noul kernel. Copiați configurația existentă în / usr / src / linux:

face mrproper
cp / boot / config-`uname -r` ./.config

Va apărea meniul de configurare. Selectați Încărcați un fișier de configurare alternativ

Serg iakovlev

Serg iakovlev

Apoi alegeți General Setup --->
(-definită) versiune locală
-lipsă
Pachetul nostru de kernel rpm va fi denumit kernel-2.6.18.2default-1.i386.rpm. Aveți posibilitatea să alegeți - să alegeți gustul.

Am ales -de fapte.

Dacă instalați kernel-2.6.18.2default-1.i386.rpm și apoi decideți să compilați o nouă versiune de kernel 2.6.18.2, trebuie să utilizați o versiune diferită a șirului, adică. -default1. -default2. și așa mai departe. altfel nu îl puteți instala, deoarece kernel-2.6.18.2default-1.i386.rpm este deja acolo!

Serg iakovlev

Serg iakovlev

Serg iakovlev

În final. când faceți clic pe Ieșire. Următoarea întrebare (doriți să salvați noua configurație a kernelului?) Este Da.

Serg iakovlev

Construirea unui kernel

Pentru a construi, tastați comanda:

Și noi ne predăm voinței timpului.

Instalarea unui nou kernel

După compilarea cu succes, vor fi create 2 pachete src.rpm și rpm. src.rpm se află în directorul / usr / src / packages / SRPMS /. Să executăm:

ls -l / usr / src / pachete / SRPMS /

Am denumit kernel-2.6.18.2default-1.src.rpm.

Pachetul rpm este în / usr / src / packages / RPMS / i386 /. / usr / src / pachete / RPMS / i586 /. / usr / src / pachete / RPMS / i686 /. / usr / src / pachete / RPMS / x86_64 /. și așa mai departe. în funcție de arhitectura dvs. Am în / usr / src / packages / RPMS / i386 /. recrut

ls -l / usr / src / pachete / RPMS / i386 /

Este numit kernel-2.6.18.2default-1.i386.rpm.

Acum putem instala pachetul nostru kernel rpm.

cd / usr / src / pachete / RPMS / i386 /
rpm -ivh kernel-2.6.18.2default-1.i386.rpm

Acum puteți instala pe orice mașină SUSE.

Creați un ramdisk pentru kernel, în caz contrar sistemul nu va porni din el:

(De fapt, această comandă emite ramdisk-uri pentru toate nucleele disponibile)

Configurarea GRUB

Trebuie să configurați GRUB. În loc să schimbați /boot/grub/menu.lst, rulați

Accesați System -> Boot Loader.

Serg iakovlev

În ecranul următor, veți vedea conținutul GRUB config. Selectați Adăugați pentru a adăuga:

Serg iakovlev

Selectați secțiunea Clonare selectată pentru a copia o înregistrare GRUB existentă:

Serg iakovlev

Introducem numele pentru kernel. de exemplu, SUSE Linux 10.1 - 2.6.18.2. selectați Kernel -> Browse.

Serg iakovlev

Veți vedea conținutul directorului / boot unde locuiește noul dvs. kernel. Selectați fișierul care începe de obicei cu vmlinuz (cum ar fi vmlinuz-2.6.18.2-default):

Serg iakovlev

Selectați Disk inițial RAM -> Răsfoiți.

Serg iakovlev

Veți vedea conținutul directorului / boot. Trebuie să selectați ramdisk-ul corespunzător. care de obicei începe cu un initrd (de tip initrd-2.6.18.2-default):

Serg iakovlev

Serg iakovlev

Veți vedea o nouă intrare GRUB. Marcați și faceți clic pe Sus.

Serg iakovlev

Apoi faceți clic pe Setare ca implicit.

Serg iakovlev

Serg iakovlev

Serg iakovlev

Acum puteți verifica /boot/grub/menu.lst