OpenBSD tarkvara kompileerimine

Allikas: Kuutõrvaja

Sissejuhatus

Kuna OpenBSD on vaba tarkvara, siis on võimalik kasutajal operatsioonisüsteem, st tuum ja kasutajamaa (ingl. k. userland) kompileerida lähtetekstidest. Selle tegevuse praktilist vajadust peab iga kasutaja ise hindama, reeglina tavakasutuse puhul ei ole see vajalik. Kogu süsteemi kompileerimisega võiks tegeleda näiteks sellistel põhjustel

  • hoida süsteem vastavuses CVS'i stable haruga
  • tekitada konkreetsele arvutile arvestatavat koormust, et veenduda süsteemi korrektses toimimises

Lisaks annab OpenBSD kompileerimisest ettekujutuse omamine parema lähtepunkti lähtetekstidena jagatavate errata paikade juurutamiseks.

Süsteem tuleb kompileerida ja uuendused kasutusele võtta sellises järjekorras

  • kompileerida uus tuum
  • alglaadida arvuti uue tuumaga
  • kompileerida uus kasutajamaa
  • tingimata pole vajalik just alglaadimise teel tagada, et uued teegid kasutusele võetakse, aga nii on ilmselt kõige otsekohesem

OpenBSD lähtetekstide kopeerimine

OpenBSD tarkvara lähtetekstid saab kopeerida anonüümsest CVSi hoidlast, soovitatav on seda teha kahes etapis

  • kopeerida reliisile vastav osa ftp peeglist
  • rakendada reliisile CVSist uuendus (ingl. k. update)

Operatsioonisüsteemi kasutajamaale (st kõik va tuum) vastav osa asub ftp peeglites failis src.tar.gz, tuuma lähtetekst asub failis sys.tar.gz. Mõlemad failid tuleb kopeerida kataloogi /usr/src ja seal lahti pakkida, selliselt

 # cd /usr/src
 # wget ftp://ftp.aso.ee/pub/OpenBSD/4.7/sys.tar.gz
 # wget ftp://ftp.aso.ee/pub/OpenBSD/4.7/src.tar.gz
 # tar zxf sys.tar.gz
 # tar zxf src.tar.gz

Seejärel tuleb /usr/src kataloogis asudes rakendada CVS'ist uuendused

 # export CVSROOT=anoncvs@anoncvs.se.openbsd.org:/cvs
 # cvs -d$CVSROOT up -rOPENBSD_4_7 -Pd

Tuuma kompileerimine

Tuuma kompileerimiseks tuleb öelda i386 arhitektuuril (nb! amd64 arhitektuuril on vastav kataloog /usr/src/sys/arch/amd64/conf)

# cd /usr/src/sys/arch/i386/conf
# config GENERIC
# cd ../compile/GENERIC
# make clean && make depend && make

Kusjuures SMP toega tuuma tekitamiseks tuleb kasutada 'GENERIC' asemel 'GENERIC.MP'. Uue tuuma paigaldamiseks tuleb öelda, kusjuures rm, ln jt käsud annab make ise

# make install
rm -f /obsd
ln /bsd /obsd
cp bsd /nbsd
mv /nbsd /bsd

Tulemusena kopeeritakse vana tuum faili /obsd ning uus tuum on /bsd. OpenBSD bootloaderit ennast tuuma paigaldamine otseselt ei mõjuta. Uue tuuma kasutuselevõtmiseks tuleb süsteem alglaadida, kompileerimise kohta on märge ka dmesg teisel real

OpenBSD 4.5 (GENERIC) #0: Sat May  3 20:13:53 EEST 2009
  root@loomaaed.tartu.ee:/usr/src/sys/arch/i386/compile/GENERIC

Tuuma versiooni sobib küsida töötavas süsteemis ka selliselt

# sysctl kern.version
 kern.version=OpenBSD 4.5 (GENERIC) #0: Sat May  3 20:13:53 EEST 2009
  root@loomaaed.tartu.ee:/usr/src/sys/arch/i386/compile/GENERIC

NB! Kui tuuma kompileerimine leiab aset seoses OpenBSD stabiilsele versioonile errata paikade rakendamisega, siis pole tarvis CVS'st uuendusi kopeerida. Piisab kasutada src.tar.gz ja sys.tar.gz arhiive ja rakendada patch programmi abil paigad nagu on kirjeldatus palas http://kuutorvaja.eenet.ee/wiki/OpenBSD_paigaldamine#Operatsioonis.C3.BCsteemi_tarkvara_uuendamine ja kompileerida ja paigaldada uus tuum nagu on kirjeldatud käesolevas tekstis.

Märkused
  • MP tuuma kompileerimiseks tuleb öelda
cd /usr/src/sys/arch/amd64/conf
config GENERIC.MP
cd ../compile/GENERIC.MP
make clean && make depend && make
sudo make install

Operatsioonisüsteemi kompileerimine

Operatsioonisüsteemi teekide ja binaaride ehk kasutajamaa kompileerimiseks tuleb öelda

 # rm -rf /usr/obj/*
 # cd /usr/src
 # make obj
 # cd /usr/src/etc && env DESTDIR=/ make distrib-dirs
 # cd /usr/src
 # make build

NB! Viimane käsk kompileerib ning ka paigaldab uue tarkvara asendades töötava süsteemi vastavad failid.

Kompileerimisel tuleb arvestada, et /usr/obj all võiks mõni GB vaba ruumi olla, ja samuti /usr/src all. Kui kompileerimine ebaõnnestub, siis saab lähteasendisse tagasi pöörduda käsudega

 # cd /usr/src
 # find . -type l -name obj | xargs rm
 # make cleandir
 # rm -rf /usr/obj/*
 # make obj

Pakettide kompileerimine portsudest