Meniu

Recompilarea kernelului in OpenBSD

Sunt cateva motive pentru a-ti compila un kernel propriu, diferit de cel standard.

1. Kernelul standard suporta o multime de hardware, si ocupa degeaba memoria sistemului.

2. Vreti sa incercati optiuni care nu sunt incluse in kernelul default, sau sa scoateti optiuni de care nu aveti nevoie ( de exemplu suport de XFree86 sau pcmcia device-uri pe un server).

3. Vreti sa activati optiuni experimentale.

Un inconvenient - developerii ignora bug reporturile de pe masini cu kernel diferit de cel generic.

Pentru recompilarea kernelului avem nevoie de sursele sale in directorul /usr/src, pe care le putem lua de pe unul din serverele ftp,http sau rsync, mirroruri ale openbsd.org.
Lista poate fi gasita pe openbsd.org/ftp.html
Sursele kernelului se gasesc intr-o arhiva de tipul sys.tar.gz.
Odata downloadate, sursa trebuie dezarhivata:

root@sh:/usr/src# cd /usr/src/
root@sh:/usr/src# tar -xzvf sys.tar.gz

Urmeaza sa updatam sursele kernelului prin CVS.
Daca nu avem setata variabila CVSROOT, o setam in fisierul ~/.profile, sau prin comanda

export CVSROOT=anoncvs@anoncvs.openbsd.org.ua:/cvs

sau oricare cvs server mai apropiat.

root@sh:/usr/src# cvs get -rOPENBSD_3_4 -P sys
root@openbsd:/usr/src# cvs get -rOPENBSD_3_4 -P sys

cvs server: Updating sys
cvs server: Updating sys/adosfs
cvs server: Updating sys/altq
cvs server: Updating sys/arch
cvs server: Updating sys/arch/alpha
etc ...

root@sh:/usr/src# cd /usr/src/sys/arch/i386/conf/
root@sh:/usr/src/sys/arch/i386/conf# cp GENERIC mykernel

Urmeaza sa redactam cu editorul preferat fisierul mykernel (va mai dura mult pana ce cei de la OpenBSD vor scoate un utilitar comod, cum este cel din Linux, bazat pe ncurses, la make menuconfig.

Comentand o linie cu # scoatem optiunea respectiva din kernel, respectiv decomentand o optiune, o activam in kernel.
Daca vrem sa deactivati o optiune deja activata anterior, puteti face asta creand o linie de tipul
rmoption [optiune]

Toate optiunile posibile pot fi vizualizate citind manul la options.

root@sh:/usr/src/sys/arch/i386/conf# man options

Voi comenta mai jos cateva optiuni pe care le-am considerat mai speciale.

Liniile de mai jos specifica tipul procesorului. Am nevoie doar de i686_CPU, asa ca restul le-am comentat.

#option I386_CPU # CPU classes; at least one is REQUIRED
#option I486_CPU
#option I586_CPU
option I686_CPU

La fel am comentat si linia

#option APERTURE # in-kernel aperture driver for XFree86

fiindca nu am nevoie de X pe un server.


Daca avem nevoie de compatibilitate cu binarele altor OS, lasam liniile necomentate.
In cazul meu am lasat:

#option COMPAT_SVR4 # binary compatibility with SVR4
#option COMPAT_IBCS2 # binary compatibility with SCO and ISC
option COMPAT_LINUX # binary compatibility with Linux
option COMPAT_FREEBSD # binary compatibility with FreeBSD
#option COMPAT_BSDOS # binary compatibility with BSD/OS
option COMPAT_AOUT #suport pentru binarele vechi a.out

Numarul aproximativ de useri pe masina:

maxusers 2000 # estimated number of users

Sistemul pe care am recompilat kernelul este un server ce ofera shell hosting, deci va avea un numar impresionant de useri.

In continuare urmeaza o multime de hardware, suport pentru care contine kernelul default.
Cititi cu atentie comentariile fiecarei linii, si lasati suport doar pentru hardwarele pe care il aveti acum, sau pe care il veti putea avea.
Eu am scos totul legat de usb,audio,firewire,pcmcia,joystickuri,etc... tot de ce nu am nevoie pe un server.

Daca doriti o configurare mai fina, puteti redacta si fisierul Makefile.i386, aflat in acelasi director.
Eu am modificat variabilele CPPFLAGS si CMACHFLAGS.

Dupa ce ati incheiat redactarile, urmeaza procesul de compilare propriu-zis.

root@sh:/usr/src/sys/arch/i386/conf# config mykernel
root@sh:/usr/src/sys/arch/i386/conf# cd compile/mykernel/
root@sh:/usr/src/sys/arch/i386/compile/mykernel# make clean
root@sh:/usr/src/sys/arch/i386/compile/mykernel# make depend
root@sh:/usr/src/sys/arch/i386/compile/mykernel# make

Pastram kernelul vechi pentru orice eventualitate ca bsd.generik

root@sh:/usr/src/sys/arch/i386/compile/mykernel# cp /bsd /bsd.generik

Schimbam kernelul generik cu cel compilat de noi:

root@sh:/usr/src/sys/arch/i386/compile/mykernel# cp bsd /bsd

Reboot.

John Doe

Articole publicate de la contributori ce nu detin un cont pe gnulinux.ro. Continutul este verificat sumar, iar raspunderea apartine contributorilor.
  • | 340 articole

Nici un comentariu inca. Fii primul!
  • powered by Verysign