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
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!
Î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.
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.
În ecranul următor, veți vedea conținutul GRUB config. Selectați Adăugați pentru a adăuga:
Selectați secțiunea Clonare selectată pentru a copia o înregistrare GRUB existentă:
Introducem numele pentru kernel. de exemplu, SUSE Linux 10.1 - 2.6.18.2. selectați Kernel -> Browse.
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):
Selectați Disk inițial RAM -> Răsfoiți.
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):
Veți vedea o nouă intrare GRUB. Marcați și faceți clic pe Sus.
Apoi faceți clic pe Setare ca implicit.
Acum puteți verifica /boot/grub/menu.lst