FreeBSD - hogyan frissítsük rendszerünket

A HupWiki-ből...

Tartalomjegyzék

Előszó

Ez a HOWTO leírja, hogy milyen módon tudjuk FreeBSD rendszerünket frissíteni az Internet segítségével. Az, hogy miért kell frissíteni az nem kérdéses. Naponta jelennek meg biztonsági réseket, programhibákat javító bugfixek. És rendszeresen jelenik meg egy-egy OS újabb verziója is. Nincs ez máshogy a FreeBSD-nél sem. Ebből a dokumentumból az derül ki, hogy miként frissíthetjük teljes rendszerünket a következő kiadásra.

Előfeltételek

Természetesen kell egy telepített FreeBSD rendszernek lenni a gépeden. Ezen kívül kell hozzá internetes kapcsolat. Ez a HOWTO nem tárgyalja a FreeBSD telepítését, és nem tárgyalja a hálózati konfigurációt sem. Ezeknek nézz utána. A frissítéshez kell a cvsup nevű program. Ezt régen külön kellett telepíteni, de egy ideje már a C-ben újraírt változata, a csup az alaprendszer része.

Előkészítés

Legelőször is szükség lesz egy könnyen szerkeszthető /etc/make.conf fájlra. Mivel alapból csak pár, a telepítés közben belekerült sor van benne, ezért csinálunk egy trükköt:

# cat /usr/share/examples/etc/make.conf >> /etc/make.conf

Már csak ki kell szedni a hash-t pár helyről és átírni a default értékeket.

Tegyük fel, hogy egy Intel Pentium III-as processzorunk van, és erre akarjuk az egész rendszert fordítani. Ezt az alábbi módon állíthatjuk be:

CPUTYPE?=p3 # A CPU típusa, a lehetséges értékekről a GCC kézikönyvében van a leghitelesebb lista

Itt kell megadni a forrás frissítéséhez szükséges adatokat is:

SUP_UPDATE=     yes
SUP= /usr/bin/csup
SUPFLAGS= -g -L 2
SUPHOST= cvsup.freebsd.org
SUPFILE= /usr/share/examples/cvsup/standard-supfile

Vagy, ha szeretnénk a legújabb stabil kiadásra firssíteni, akkor:

SUPFILE=        /usr/share/examples/cvsup/stable-supfile

A cvsup.freebsd.org hostnév helyett természetesen bármilyen tetszőleges FreeBSD-s cvsup kiszolgálót megadhatunk, én a cvsup.de.freebsd.org-ot szoktam használni.

A forrás frissítése

Ha a file-t elmentettük, lépjünk be az /usr/src könyvtárba:

# cd /usr/src

A forrásfa frissítéséhez itt egyetlen parancsot kell kiadnunk:

# make update

A cvsup kliens a Makefile alapján, és az /etc/make.conf-ban meghatározott adatok szerint kapcsolódik az adott kiszolgálóhoz, és frissíti a forrást.

A rendszer lefordítása

A /usr/src/UPDATING file-ban természetesen mindig megtalálható az éppen aktuális módi, habár ez igen ritkán szokott változni, azert mindenképpen érdemes elolvasni, nehogy meglepetés érjen minket. A jelenlegi divat szerint a következőket kell tennünk. A parancsok/műveletek sorrendjének biztonsági/logikai okai vannak, így nem nagyon illik őket felcserélni. A BSD-s rendszerek nem igazán tolerálják, ha más forrásból fordult a kernel, és az alap rendszer, így tehát a cél az, hogy szinkronban legyen a kettő.


Ha biztosak vagyunk abban, hogy minden feltétel adott a frissítéshet, akkor el is kezdhetjük:

# cd /usr/src
# make buildworld
# make buildkernel

Az új kernel telepítése

Lefordult a rendszerforrás, kész a kernel, természetesen eddig a pontig még egyik se szól bele a működő rendszer dolgaiba.

# make installkernel
# shutdown -r now # single user módba bootoljunk, ha lehetőség van rá (távolról pl. nincs :)

A ha közvetlenül single userbe boot-oltunk, akkor adjuk ki az alabbi parancsokat:

# fsck -p
# mount -u /
# mount -a -t ufs
# swapon -a

Valamint, ha a hardveróra nem UTC szerint jár, hanem helyi idő szerint, akkor szükség van az alábbira is:

# adjkerntz -i

Azért kell előbb a kernelt kipróbálni, mert a régi kernel/modulok visszamásolására ilyenkor még van mód (a régi kernel /kernel.old, a régi modulok pedig /modules.old/ néven találhatóak majd meg). Szinten nem túl gyakran, de előfordulhat, hogy egy driverbug miatt nem áll fel a gép, esetleg nem működik benne a hálókártya, vagy valami egyéb fontos holmi.

A userland telepítése

Mivel a buildworld résznél szükség lehet olyan /etc-ben lévő bejegyzésekre, mint az új verzióban lévő csoportok, vagy felhasználók, ezért adjuk ki az alábbi parancsokat:

# cd /usr/src/usr.sbin/mergemaster
# ./mergemaster.sh -p

Azért a forrásban lévőt használjuk, mert a jelenleg telepített változat elavult lehet.

Ezzel a mergemaster létrehozza a telepítéshez szükséges újításokat a konfigfájljainkban. Ezután akár telepíthetjük is az új userland-et:

# make installworld

Konfigurációs állományok összefésülése

Ha ez is lefutott, akkor jöhet a konfigurációs file-ok össze'fésülése' a mergemaster parancs segítségével:

# cd /usr/src/usr.sbin/mergemaster
# ./mergemaster.sh

A macerásabb configok módosulása esetén a végén rakerdez majd, hogy generálja-e újra az oda kapcsolódó dolgokat (pl /dev/MAKEDEV -> /dev/*, /etc/mail/aliases -> /etc/mail/aliases.db, /etc/master.passwd -> /etc/pwd.db), de persze erre később kézzel is van mód.

Újraindítás

Ha pedig ezzel is megvagyunk, akkor jöhet egy utolsó reboot, hogy mindenből a friss kerüljön a memóriába:

# reboot

Ha nem single userben voltunk, akkor:

# shutdown -r now

Távoli frissítés esetén a külön kernellel való bootolás elhagyható (persze a bugos driver kockázatát vállalva), így egy reboot-tal megolható a frissítés.

Feláll a gép, és örülünk, kész a zsír új FreeBSD-s rendszerünk.

Megjegyzések

Ha a kernelt saját konfiggal szeretnénk fordítani, akkor azt így tehetjük meg:

# make buildkernel KERNCONF=SAJATKONFIG

Telepíteni pedig így:

# make installkernel KERNCONF=SAJATKONFIG

Szerzők

Az eredeti "FreeBSD - hogyan frissítsük rendszerünket (cvsup)" leírást Micskó Gábor írta,
a leírás aktualizált, átdolgozott változatát Hóka Ádám szerkesztette jelenlegi formájába.