DragonFly BSD - telepítés, cvsup, kernel fordítás, buildworld

Címkék

Ma folytatjuk a BSD rendszerekkel való ismerkedést. A mai nap témája a DragonFly BSD, amely egy ígéretes FreeBSD fork.

A Dragonfly BSD Matthew Dillon korábbi FreeBSD fejlesztő FreeBSD 4.x forkja. A terjesztés jelenleg még fejlesztés alatt áll, belőle publikus kiadás még nem jelent meg soha. A rendszer annyira fejlesztés alatt álló, hogy még telepítője sincs. A rendszer telepítésére több módszer is létezik, ebből az egyik a Live CD-ROM-ról való telepítés. Ezt (plusz a kernel fordítást és a rendszer újrafordítást (buildworld)) ismerteti ez a kicsit hosszabb, 32 képpel illusztrált útmutató.

1.) A DragonFly BSD fejlesztői CD verziójának előkészítése

1.1) Töltsük le a dfly-20040506.iso névre hallgató fejlesztői snapshot ISO image gzip-pelt verzióját innen.

1.2) Bontsuk ki az archive-ból:

# gzip -d dfly-20040506.iso.gz

majd írjuk CD-re (használj újraírható CD-t, óvd a környezeted!).

A CD-ROM-ra rábootolva egy teljesen működő DragonFly BSD-t kapunk. A merevlemezed nem módosul azzal, hogy bebootolsz a CD-ROM-ról.

FIGYELEM!!! A DRAGONFLY BSD FEJLESZTÉS ALATT ÁLL ÉS JELENLEG KÍSÉRLETI JELLEGGEL MŰKÖDIK. A CD-ROM FELHASZNÁLÁSÁHOZ ERŐSEN AJÁNLOTT VALAMILYEN BSD RENDSZEREN SZERZETT ELŐZETES TAPASZTALAT. Ha csak tesztelni szeretnéd a DragonFly BSD-t, akkor a CD-vel bebootolva egy teljesen működő konzolos rendszert kapsz. A rendszer ilyenkor swap nélkül működik, ezért a fizikai memóriád mérete korlátozhatja a használatot.

2.0) Automatikus telepítés

A DragonFly BSD egyelőre nem rendelkezik automatikus telepítővel. A fejlesztők jelenleg dolgoznak ilyen keretrendszeren, de ezt nem tartalmazza a CD-ROM.

3.) Manuális telepítés

3.1) A manuális telepítés során a következő parancsok végrehajtásával tudod a DragonFly BSD operációs rendszert a merevlemezedre telepíteni. A sikeres telepítéshez ismerned kell a BSD-szerű UNIX rendszereket. Az elsődleges IDE merevlemezed általában a ``ad0'' névre hallgat, és a DragonFly BSD általában az merevlemez első slice-ára települ.

A telepítés megkezdéséhez bootoljunk rá a frissen sütött CD-ROM-ra. Ha rábootoltunk a CD-ROM-ra várjuk meg, hogy bejelentkezzen a boot menü:



3.2) Ha a kernel elindította a rendszert, és megkaptuk a prompt-ot, akkor bejelentkezhetünk ``root'' felhasználóként. A bejelentkezésnél nincs ``root'' jelszó!

3.3) Ha a merevlemezünk már használatban volt, akkor a sikeres telepítés érdekében távolítsuk el a régi boot blokkot.

FIGYELEM! A KÖVETKEZŐ LÉPÉSEK TELJESEN TÖRLIK ÉS ÚJRAPARTÍCIONÁLJÁK A MEREVLEMEZT! CSAK AKKOR FOLYTASD A TELEPÍTÉST, HA TUDOD MIT TESZEL!

# dd if=/dev/zero of=/dev/ad0 bs=32k count=16

# fdisk -IB ad0

3.4) A következő lépés az, hogy boot blokkot telepítünk a merevlemezre és ellenőrizzük a telepítést:

# boot0cfg -B ad0

# boot0cfg -v ad0

3.5) Ezután létre kell hoznunk egy kezdeti címkét (initial label) a HDD kiválasztott slice-án. Ha problémád van a bootolással, akkor próbáld meg kinullázni slice első 32 blokkját dd-vel (dd if=/dev/zero of=/dev/ad0s1 bs=32k count=16), majd telepítsd újra a label-t.

# disklabel -B -r -w ad0s1 auto

3.6) Szerkeszd meg a label-t. Hozz létre különböző partíciókat. A tipikus (ajánlott) konfiguráció:


ad0s1a 256m /
ad0s1b 1024m swap
ad0s1c (ezt hagyd békén)
ad0s1d 256m /var
ad0s1e 256m /tmp
ad0s1f 8192m /usr (minimum 4096m)
ad0s1g * /home (az összes többi szabad hely)




Egy példát találsz a /etc/disklabel.ad0s1 fileban.

A disklabel-t a

# disklabel -e ad0s1

parancs kiadásával tudod szerkeszteni. A parancs kiadásával ``vi'' editorban szerkeszthetjük a merevlemez adatait.

A kezdeti felépítést láthatod a következő képen:




Adjuk hozzá a fent leírt partíciókat:

3.7) Készítsük el a filerendszereket a newfs paranccsal. A root (/) filerendszeren ne engedélyezzük a softupdate-eket, mert nagy kernel vagy world install/upgrade esetén kifuthatunk a helyből a softupdate késleltetett bitmap felszabadító kódjának következtében.

# newfs /dev/ad0s1a

# newfs -U /dev/ad0s1d

# newfs -U /dev/ad0s1e

# newfs -U /dev/ad0s1f

# newfs -U /dev/ad0s1g

A formázásnál a b: és a c: partíció kimarad, mert a b: a swap, a c: pedig magát a merevlemezt jelöli.

3.8) Csatoljuk fel a /dev/ad0s1a partíciót a /mnt alá, és hozzuk létre a leendő filerendszerünk többi könytárát. Ha ez kész, csatoljuk fel azokba a megfelelő partíciókat:

# mount /dev/ad0s1a /mnt

# mkdir /mnt/var

# mkdir /mnt/tmp

# mkdir /mnt/usr

# mkdir /mnt/home

# mount /dev/ad0s1d /mnt/var

# mount /dev/ad0s1e /mnt/tmp

# mount /dev/ad0s1f /mnt/usr

# mount /dev/ad0s1g /mnt/home

3.9) Másoljuk át a CD-ROM tartalmát a helyére. A ``cpdup'' program nem tudja követni a mount határokat a forráson, ezért az alábbi néhány parancsot kell kiadnunk:

# cpdup / /mnt

# cpdup /var /mnt/var

# cpdup /etc /mnt/etc

# cpdup /dev /mnt/dev

# cpdup /usr /mnt/usr

3.10) Takarítás. A /var/tmp legyen egy softlink a /tmp-re.

# chmod 1777 /mnt/tmp

# rm -rf /mnt/var/tmp

# ln -s /tmp /mnt/var/tmp

3.11) Szerkesszük a /mnt/etc/fstab állományt a mountolt partícióknak megfelelően. Egy példa fstab filet találsz a /mnt/etc/fstab.example helyen, amelyet át tudsz nevezni /mnt/etc/fstab-ra.

# mv /mnt/etc/fstab.example /mnt/etc/fstab

# vi /mnt/etc/fstab

3.12) Mentsük el a disklabel-ünket. Jó ötlet eltenni a /etc-be, később jól jöhet vész rendszervisszaállítás esetén.

# disklabel ad0s1 > /mnt/etc/disklabel.ad0s1

3.13) Most kész vagyunk a rendszer CD-ről HDD-re való másolásával. Néhány dolgot be kell állítanunk, hogy a rendszerünk probléma nélkül el is induljon a merevlemezről. Az első dolog az, hogy el kell távolítani a /mnt/boot/loader.conf file-t, amely tudatta a kernellel, hogy a root partíciót a CD-n kell keresnie. Ezen kívül takarítsunk is egy kicsit.

# rm /mnt/boot/loader.conf

# rm /mnt/README*

# rm /mnt/boot.catalog

# rm -r /mnt/rr_moved

3.14) Elérkeztünk ahhoz a ponthoz, hogy a rendszerünket újraindíthatjuk, majd bebootolhatunk az elkészített merevlemezről.

# reboot

3.15) Miután a rendszerünk elindult a merevlemezről, azonnal adjunk a root felhasználónak jelszót!


4.) Használjuk fel a cvsup-ot a forrás, ports kinyeréséhez, majd csináljunk egy buildworld-öt

A cvsup segítségével férhetünk hozzá a DragonFly repóhoz (repository), a FreeBSD ports fához (FreeBSD ports collection), stb. A ``man cvsup''-al kaphatunk bővebb információt a cvsup felhasználási lehetőségeiről. A cvsup egy port (azaz nem része az alaprendszernek), de megtalálható a CD-n. A cvsup példafileokat megtaláljuk a /usr/share/examples/cvsup helyen. Ami elsősorban minket érdekelhet a fileok közül az a következő: DragonFly-supfile (ezzel férhetünk hozzá a DragonFly repóhoz), és a FreeBSD-ports-supfile (ezzel férhetünk hozzá a FreeBSD ports-hoz).

Ha már egyszer végrehajtottad az első cvsup-ot, akkor a későbbiekben időzítheted ezt a folyamatot egy cron job-bal, hogy állandóan a legfrissebb forrással rendelkezz. Egy dologra figyelj: NE állíts be többet napi egy cvsup-nál!

4.1) A cvsup használata előtt be kell állítani a hálózatot:

# ifconfig le0 192.168.5.10 netmask 255.255.255.0 up

# route add default 192.168.5.1

4.2) Állítsuk be a DNS-t

# vi /etc/resolv.conf

4.3) Teszteljük le az Internetes kapcsolatot

4.4) Nyerjük ki a CVS repository-t (a /home/dcvs-be kerül alapértelmezés szerint)

# cvsup /usr/share/examples/cvsup/DragonFly-supfile

majd telepítsük a forrást a CVS hierarchiából a helyére:

# cd /usr

# cvs -R -d /home/dcvs checkout src

# cvs -R -d /home/dcvs checkout dfports

4.5) Nyerjük ki a FreeBSD ports fát (ennek a helye a /usr/ports akárcsak a FreeBSD-n):

# cvsup -h cvsup.hu.freebsd.org /usr/share/examples/cvsup/FreeBSD-ports-supfile

4.6) Példa a buildworld-re és az installworld-re

# cd /usr/src

# make buildworld

# make installworld

(# mergemaster)

4.7) Példa a buildkernel-re és installkernel-re

Hozz létre egy saját kernel konfigurációs filet a /usr/src/sys/i386/conf/YOURKERNEL helyen.

# cp /usr/src/sys/i386/conf/GENERIC YOURKERNEL

Ezután elkészítheted és telepítheted a saját kerneled.

FIGYELEM! Mindig legyen egy teljesen jól működő elmentett kerneled a /-ben arra az esetre, ha az új, általad fordított kernel nem indulna el. Arra figyelj, hogy a make installkernel felülírja a /kernel.old-ot! Jó ötlet, ha tartasz egy jól működő kernelt a /-ben mondjuk /kernel.GENERIC vagy /kernel.bak néven. Ha végképp nem tudsz bootolni, akkor végszükség esetén bootolhatsz a CD-ROM-ról!

# cd /usr/src

# make buildkernel KERNCONF=KESSEL

# make installkernel KERNCONF=KESSEL

Ha ez készen van, akkor rebootolhatunk az új kernellel. A sikeres újraindítás után jelentkezzünk be a teljesen friss rendszerünkbe:

5.) Nem bootoló rendszer helyreállítása a CD-ROM segítségével

Ha a rendszered valamilyen oknál fogva nem bootol (például rossz kernelt fordítottál, és nincs helyesen működő elmentett kerneled), akkor kénytelen vagy a CD-ROM-ról bootolni. Ha bebootolsz a CD-ROM-ról, akkor egy teljesen működő rendszert kapsz, amely segítségével filerendszer ellenőrzést (fsck), filerendszer felcsatolást (mount) tudsz végrehajtani. Felcsatolhatod a merevlemezed partícióit és elvégezheted a szükséges javításokat.

A merevlemezed általában a az első IDE merevlemez. Ez a /dev/ad0 eszköz. A DragonFly általában az első slice-on található, amely a /dev/ad0s1, míg a root (/) partíció mindig az ``a'' jelű, amelyet a /dev/ad0s1a útvonalon érhetsz el.

Helyreállítás:

5.1) mountolás előtt fsck-zunk

# fsck /dev/ad0s1a

5.2) mountoljuk fel a root (/) partíciót a /mnt-be írható-olvashatóra (rw)

# mount /dev/ad0s1a /mnt

5.3) Másoljuk fel a CD-ről a bootoláshoz szükséges fileokat, jelen esetben a működő kernelt (figyeljünk arra, hogy a /mnt/kernel flags-protected lehet)

# chflags noschg /mnt/kernel

# cp /kernel /mnt/kernel

# cp /modules/* /mnt/modules/

Ha más partíciókon szeretnénk dolgozni, akkor azokat hasonlóképpen csatolhatunk fel.

5.4) Ha végeztünk a javítással, akkor csatoljuk le a mount-olt filerendszert

# umount /mnt

A további partíciók listájához egyszerűen gépeld be a ``cat /mnt/etc/fstab'' parancsot.




Bővebb információt a DragonFly BSD weboldalán találsz. Az írás a CD-n található README alapján készült.


Folytatása következik.

Hozzászólások

[picit off]

Szerintetek az 1000 linux felhasználóra jutó disztribuciók száma, vagy az 1000 BSD felhasználóra jutó *BSD-k száma a nagyobb?

;-)

[/picit off]

Ha lenne már belőle kiadás, akkor tuti alapoznék rá... Sok igéretes dolog van benne és a FreeBSD-vel ellentétben alapból meg van patchelve a gcc is propoliceal jól! ;)

Azóta új iso került kiadásra, így a cikkben szereplő link már nem él, az új kiadás: ftp://ftp.dragonflybsd.org/iso-images/dfly-20040510.iso.gz

Amúgy tényleg ígéretes project, habár én sem szeretem a disztró war-okat, de úgy látszik nem fért bele a meglévő keménymagokba.

Amiket olvastam róla az alapján mind technológiában és funkcionalitásban is kezelhetőbbé fog válni ... úgy legyen.

Lehet nem is baj hogy nem meglévő csapathoz csatlakoztak, mert a

kompatibilitás és régimódi ódivatú dolgok esetleg visszahúzták volna, bár ezt már

senki sem fogja megtudni.

Itt azért óriási különbség, hogy az új disztribúció nem csupán na egy "no mi is összepakoltuk a kernelre a binárisokat" jelent, hanem valóban új filozófiát, más kernelmagot, tehát valóban jelentős különbség van két bsd disztrib között, ellentétben a linuxokkal, kivéve persze a debiant :))

Linuxon tényleg az figyelhető meg, hogy mindenki megcsinálja az n+1-dik disztribúciót, amivel ő és kis csapata tapasztalatot nyer ugyan, de igazán jól használható közkincs ritkán kerekedik belőle.

Lehet holnap én is nekiállok a Vidra linux-nak, szervezek egy kis csapatot, aztán nekiállunk a fejlesztésnek. Első körben arra gondoltam, hogy fogunk egy debian testinget, hogy jó alapja legyen a dolognak, aztán lecseréljük az összes debian logot és hivatkozást vidrára és egy mókás vidra logóra. Ja és a csomagok kiterjesztése .deb helyett .vid lesz. Ez lesz mondjuk 0.1beta, ezt hamar ki is tudjuk adni, lényeg hogy a Vidra orrán-száján follyan belőle :) Persze ez csak egy hatalmas vicc, de ilyeneket látok sokat. Inkább csatlakoznának egy már meglévő fejlesztőgárdához és tennének hozzá olyat amivel az a pár disztrib tényleg felveheti a harcot a redmondi monopóliummal. Ez mondjuk nem csak OS szinten igaz, sok opensource project halad fej-fej mellett ugyanazt a célt megvalósítva és sok elhal, mert kevesen vannak és adott esetben nem is kerül ki túlélő, pedig ha összefognának lehetne maradandót alkotni.

Na nemtom mi van itt 3kor elkapott az írhatnék, most letudtam egy évre :)