Az első frissítés
A telepítés során előfordulhat, hogy egy pár hónapos telepítőkészletről telepítünk, hiszen nagyjából fél-egy évente kerül ki újabb kiadás, amely telepítő készlettel jár, ezt hívjuk bináris disztribúciónak. Két bináris disztribúció között forrásból fordítva tudjuk frissen tartani a FreeBSD alaprendszerünket. Nagyon fontos, hogy rendbe tegyük az alaprendszert, a kernelt és a telepített csomagokat, hiszen a frissítés nélkül a szerver stabilitását vagy biztonságát veszélyeztetjük!
Az alaprendszer frissítése
Mivel a telepítés után egy olyan FreeBSD van a szerverünkön, amely elavult lehet, ezért frissíteni kell rajta. Ehhez a FreeBSD alaprendszer teljes forrását le kell hoznunk, amely némi előzetes munkát jelent. Először is kell egy /etc/make.conf ahol a make parancs globális változóit tároljuk:
WITHOUT_X11=yes KERNCONF=JAVAFORUM OPENSSLBASE=/usr/local WRKDIRPREFIX=/tmp
A FreeBSD frissítéséhez először a ports adatbázist kell frissítenünk, hogy friss programokhoz juthassunk, ugyanis a feltelepített ports adatbázis az alaprendszerrel együtt elavult, egyébként is érdemes naponta frissíteni, s az első futás el fog tartani egy jó darabig:
freebsd# portsnap fetch extract Looking up portsnap.FreeBSD.org mirrors... none found. Fetching public key from portsnap.FreeBSD.org... done. Fetching snapshot tag from portsnap.FreeBSD.org... done. Fetching snapshot metadata... done. Fetching snapshot generated at Fri Aug 22 02:21:34 CEST 2008: [...] /usr/ports/x11/yelp/ /usr/ports/x11/zenity/ Building new INDEX files... done.
Ezek után telepítsük fel a cvsup programot, amely a FreeBSD forrásait szinkronba hozza majd a CVS-ben tárolt forrás aktuális állapotával, a telepítés során a -P azt jelzi, hogy próbáljon meg bináris csomagot szerezni a portinstall, ha ez nem sikerül, akkor fordítson forrásból, így időt tudunk nyerni, s később majd le tudjuk fordítani a telepített programokat:
freebsd# portinstall -P cvsup [...] ===> Cleaning for ezm3-1.2_1 ===> Cleaning for cvsup-without-gui-16.1h_4 [Updating the pkgdb <format:bdb_btree> in /var/db/pkg ... - 15 packages found (-0 +2) .. done]
Most, hogy megvan a cvsup program, hozzuk létre a /usr/local/etc/supfile.sources fájlt az alábbi tartalommal (a _RELENG_7_1 jelenti, hogy a 7.1-es FreeBSD kiadáshoz tartozó forrás érdekel minket):
*default host=cvsup.hu.FreeBSD.org *default base=/usr/local/etc *default prefix=/usr *default release=cvs tag=RELENG_7_1 *default delete use-rel-suffix src-all
Majd frissítsük le az alaprendszer forrásokat is:
freebsd# /usr/local/bin/cvsup -g -L 2 /usr/local/etc/supfile.sources Parsing supfile "/usr/local/etc/supfile.sources" Connecting to cvsup.hu.FreeBSD.org Connected to cvsup.hu.FreeBSD.org Server software version: SNAP_16_1h Negotiating file attribute support Exchanging collection information Establishing multiplexed-mode data connection Running Updating collection src-all/cvs [...] Edit src/usr.sbin/ypserv/ypserv.8 Add delta 1.41.10.1 2008.03.30.19.39.29 matteo Shutting down connection to server Finished successfully
Nos, a FreeBSD kernelhez kell egy saját konfiguráció, amely jelen esetben csak a nevében különbözik a GENERIC nevű kerneltől (ha nem AMD64 a gépünk típusa, akkor keressük meg a nekünk megfelelő architektúrát):
freebsd# cd /usr/src/sys/amd64/conf/ freebsd# sed s/GENERIC/JAVAFORUM/g <GENERIC >JAVAFORUM
Ha szükségünk van a DTrace tudásra, akkor ezt be kell kapcsolnunk a kernel fordítása előtt:
options KDTRACE_FRAME # Ensure frames are compiled in options KDTRACE_HOOKS # Kernel DTrace hooks options DDB_CTF # all architectures - kernel ELF linker loads CTF data
A fordításkor ebben az esetben az alábbi paramétert is meg kell adni:
make buildkernel WITH_CTF=1
Ezek után mehet a fordítás, amely a gép sebességétől függő időt vesz igénybe igénybe (egy átlagos kiszolgón 30 percre lehet számítani):
freebsd# cd /usr/src freebsd# time make buildworld -------------------------------------------------------------- >>> World build started on Tue Jan 13 20:46:58 CET 2009 -------------------------------------------------------------- [...] -------------------------------------------------------------- >>> World build completed on Tue Jan 13 22:06:07 CET 2009 -------------------------------------------------------------- real 79m10.056s user 61m19.016s sys 11m49.993s freebsd# time make buildkernel -------------------------------------------------------------- >>> Kernel build for JAVAFORUM started on Tue Jan 13 22:12:18 CET 2009 -------------------------------------------------------------- [...] -------------------------------------------------------------- >>> Kernel build for JAVAFORUM completed on Tue Jan 13 22:32:37 CET 2009 -------------------------------------------------------------- real 20m19.106s user 13m46.135s sys 2m5.310s
A fordítás közben esetleg csinálhatunk snapshot-ot a ports és az src mostani állásáról, így folyamatosan tudunk frissíteni adatbázist és forrásokat, szükséges esetben pedig vissza tudunk állni egy korábbi állapotra, másrészt pedig amint külön fájlrendszert hozunk létre, arra a szülő fájlrendszer snapshot-ja nem érvényes (lásd: usr@install):
freebsd# zfs snapshot bpool/usr/ports@install freebsd# zfs snapshot bpool/usr/src@install freebsd# zfs snapshot bpool/usr/local@install
Ha elkészült a buildworld és az buildkernel, akkor újra single-user módba kell ugranunk, és felcsatolni a ZFS köteteket, a / fájlrendszert pedig írhatóan újracsatolni:
# /etc/rc.d/hostid start Setting hostuuid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. Setting hostid: 0xFFFFFFFF. # /etc/rc.d/zfs start # mount -u / freebsd# zfs list NAME USED AVAIL REFER MOUNTPOINT bpool 2.34G 5.47G 19K /bpool bpool/tmp 1.46M 5.47G 1.44M /tmp bpool/usr 2.27G 5.47G 224M /usr bpool/usr@install 155M - 214M - bpool/usr/local 90.8M 5.47G 90.8M /usr/local bpool/usr/local@install 48K - 90.8M - bpool/usr/obj 1.51G 5.47G 1.51G /usr/obj bpool/usr/ports 146M 5.47G 146M /usr/ports bpool/usr/ports@install 0 - 146M - bpool/usr/src 162M 5.47G 153M /usr/src bpool/usr/src@install 9.46M - 153M - bpool/var 69.8M 5.47G 69.7M /var bpool/var@install 167K - 244K - dpool 105K 207G 18K /dpool
Ha minden rendben van, akkor telepíthetjük az új alaprendszert:
# cd /usr/src # time make installworld [...] rm -rf /tmp/install.PNth69uR 19.573u 24.694s 2:53.19 25.5% 351+572k 48+2664io 436pf+0w # make installkernel [...] kldxref /boot/kernel 5.264u 2.768s 1:30.34 8.8% 444+2362k 4+3358io 132pf+0w # exit
A single-user módban bármikor ki tudjuk adni az exit parancsot, amelynek hatására a multi-user módba kerülünk, tehát nem szükséges egy reboot ahhoz, hogy távolról is hozzáférhessünk a FreeBSD szerverünkhöz.
Az újraindítás után ellenőrizzük, hogy a saját kernelünk fut-e:
# uname -a FreeBSD freebsd.javaforum.hu 7.0-STABLE FreeBSD 7.0-STABLE #0: Thu Aug 7 16:02:12 CEST 2008 toor@freebsd.javaforum.hu:/usr/obj/usr/src/sys/JAVAFORUM amd64
A telepített csomagok frissítése
A telepített csomagokat mindenképpen frissíteni kell, hiszen ezek is a feltelepített kiadással együtt érkeztek – és ugyanúgy elavultak, napi szinten 10-50 csomag frissül, általában mindig van olyan programunk, amelyet tudunk frissíteni.
A csomagok frissítését mindig azzal kezdjük, hogy frissítjük a ports adatbázist:
freebsd# portsnap fetch update Looking up portsnap.FreeBSD.org mirrors... 3 mirrors found. Fetching snapshot tag from portsnap1.FreeBSD.org... done. Fetching snapshot metadata... done. Updating from Wed Aug 6 21:55:43 CEST 2008 to Thu Aug 7 13:56:25 CEST 2008. Fetching 3 metadata patches.. done. Applying metadata patches... done. Fetching 0 metadata files... done. Fetching 52 patches.....10....20....30....40....50. done. Applying patches... done. Fetching 4 new ports or files... done. Removing old files and directories... done. Extracting new files: /usr/ports/UPDATING [...] /usr/ports/x11/xtset/ Building new INDEX files... done.
A csomagok telepítéséhez hasonlóan a frissítés is egyszerű:
# portupgrade -a -i ---> Session started at: Thu, 07 Aug 2008 16:20:23 +0200 ** No need to upgrade 'perl-5.8.8_1' (>= perl-5.8.8_1). (specify -f to force) ---> ** Upgrade tasks 15: 0 done, 1 ignored, 0 skipped and 0 failed ---> Upgrade of devel/pcre started at: Thu, 07 Aug 2008 16:20:29 +0200 ---> Upgrading 'pcre-7.4' to 'pcre-7.7' (devel/pcre) OK? [yes] [...] ---> Packages processed: 9 done, 5 ignored, 0 skipped and 1 failed ---> Session ended at: Thu, 07 Aug 2008 19:06:03 +0200 (consumed 02:45:39)
Nos, elkészült a lehető legfrissebb FreeBSD szerverünk, a lehető legfrissebb kernellel és a legfrissebb csomagokkal.