ot zlatozar(24-02-2006)

reiting (57)   [ dobre ]  [ zle ]

Printer Friendly Variant za otpechatvane

     Za men razlikata v poddruzhkata na UNIX sistemite nai-obshto mozhe da se svede do instalirane i pravilen update. Razbira se ima mnogo drugi neshta, no kato za nachalo triabva da se nauchim da pravim tova. Ot tam natatuk svikvame s ideologiiata i nauchavame "trikovete". Dali ni haresva? Mnogoznaiaitelno se kazva - vupros na vkus. Kogato zapochnah da se zanimavam s FreeBSD neshtata pri update mi izglezhdaha slozhni. Te shte ostanat takiva ako chovek ne proiavi lyubopitstvo i zhelanie za razvitie. Nauchete kakvo e CVS, make, merge i razbira se ezika S! Eksperimetiraite! Pitaite! Na men mi triabvashe dosta vreme da razbera i da avtomatiziram update-a. V tazi statiia shte se opitam da opisha neshtata, makar i s pravopisni greshki. Iskam mi se da buda polezen i za tova ne se kolebaite da me pitate i popraviate. Nadiavam se da uchim zaedno.

    Purvata trudnost idva s razdelianeto na tvurdiia disk(HDD). Dosta po-razlichno pod FreeBSD i zatova reshih da otdelia spetsialno miasto i da go razgledam podrobno. Za tselta shte go sravnia s DOS/Linux nachina. Za da vi e lesno triabva da zapomnte:
"UNUX partition" e neshto razlichno ot "DOS/LINUX partition" !

    Sega veche mozhem da zapochnem. Linux sledva putia ostaven ot MS-DOS, pri razdelianeto na diska. Tozi put obache e ogranichen ot PS BIOS . Eto kakvo imam vpredvid. Vsiako HDD mozhe da ima nai-mnogo 4(chetiri) Primary partitions . Ako iskate da imate poveche ot 4 partitions triabva da izpolzvate hack -a vuveden v MS-DOS 3 (mislia, che purvo tam se poiaviava purvo). V kakvo se sustoi toi? Hack -a pozvoliava da se konvertira edin ot dialovete ot Primary v t.n. Extended . Samiiat Extended ot svoia strana se razdelia na Logical . BIOS -a "vizhda" samo chetiri diala, no na praktika mozhete da imate poveche. Uhaaa, slozhno a? SHTe se opitam da ilyustriram: Nai-starata ideia

   Primary 1
   Primary 2
   Primary 3
   Primary 4
 
Evolyutsiiata na MS DOS ideiata
   Primary 1
   Primary 2
   Primary 3
   Extended
     Logical 1
     Logical 2
     Logical 3
     etc...
 
S tazi shema na razdeliane mozhe da slagate i napasvate razlichni operatsionni sistemi, no zatova sa nuzhni dosta dialove, zashtoto triabva da se pridurzhame kum shemata. Edin primer. Da predpolozhim, che iskame da instalirame Windows 98, Windows 2000 i Linux. Eto i rezultata:
   Primary 1:  Linux /boot
   Primary 2:  Windows 98
   Primary 3:  Windows 2000
   Extended :
       Logical 1: Linux /
       Logical 2: Linux /home
       Logical 3: Linux /usr
       Logical 4: Linux swap
       Logical 5: Shared Data
 
 
Zabeliazvate li prehvurlianeto ot Primary kum Logical . Istinata e niakude drugade? Unix sistemi, kato *BSD i Solaris izpolzvat druga shema na razdeliane, koiato e dalech po-guvkava i iasna. V PC arhitekturata BIOS -a vse oshte razpoznava samo chetiri diala(ima i sistemi, v koito tozi problem ne sushtestvuva). Hm, a kak togava shte se zaobikoli problema? Unix tretira vseki Primary partition (Unix vuvezhda termina - slice ) kato Extended partition ! Tezi slice -ve se razdeliat dopulnitelno za nuzhnite ni dialove, za da razpolozhim direktoriite. Oburnete vnimanie, che termina partition v UNIX ima drug smisul - toi e dial ot slice ! Taka che, ako triabva da se vurnem kum gorniia primer (Windows 98, Windows 2000 i Unix) shte poluchim slednata shema:
   Primary 1:  Unix slice
   Primary 2:  Windows 98
   Primary 3:  Windows 2000
   Extended :
       Logical 1: Shared Data
 
V samiia UNIX slice se razpolagame udobno:
   Primary 1:  Unix slice
                 /boot
                 /
                 /home
                 /usr
                 /var
                 /tmp
                 swap
   Primary 2:  Windows 98
   Primary 3:  Windows 2000
   Extended :
       Logical 1: Shared Data
 
Ako izpolzvate Linux modela, pri puskane na DOS fdisk shte vidite 3 Primary i 5 Logical v Extended diala. Sushtoto shte e i pri puskane na Linux fdisk . Ako puk minete po putia na UNIX i pusnete DOS fdisk shte vidite 3 Primary i 1 Logical v Extended diala. Pri puskane na UNIX fdisk vizhdate sushtoto, no dopulnitelno oshte se pokazvat i UNIX partitions v UNIX slice -a. Ne moga da kazha, koia ideia e po-dobra. Sravniavam dvata metoda, za da obiasnia po-dobre ideiata za UNIX slice . Za men lichno pri UNIX neshtata stoiat po-dobre, edna operatsionna sistema na edno miasto, a spodelenite neshta na drugo. Pri DOS/LINUX neshtata se smesvat, niama iasna granitsa i lesno mozhe da se oburka chovek. Za pulnota shte kazha i niakolko dumi za imenovaneto. Vseki partition v FreeBSD se identifitsira s bukvi ot a do h . Vseki partition mozhe da sudurzha samo edna failova sistema. Eto i tablitsa na imenata na ustroistvata:
 ad                 ATAPI (IDE) disk 
 da                 SCSI direct access disk 
 acd                ATAPI (IDE) CDROM 
 cd                 SCSI CDROM 
 fd                 Floppy disk 
 
Shemata na sustaviane na imenata e slednata:
   (ime na ustroistvo)(nomer na slice)(partition)
 
Vednaga davam primer:
 ad0s1a  The first partition (a) on the first slice (s1) on the first IDE disk (ad0). 
 da1s2e  The fifth partition (e) on the second slice (s2) on the second SCSI disk (da1). 
 
Sega zapis ot vida:
 Filesystem     Size    Used   Avail Capacity  Mounted on
 /dev/ad6s1a    496M     63M    394M    14%    /
 /dev/ad6s1e     17G     26K     16G     0%    /home
 /dev/ad6s1d     16G    2.0G     13G    13%    /usr
 /dev/ad6s1f    1.8G     27M    1.6G     2%    /var
 
vi govori mnogo poveche. Dano sum go obiasnil dobre, zashtoto pochvam s instalatsiiata i niama vrushtane nazad.

   Vodia se ot printsipa: "Ako se chupi neshto, to da e kolkoto se mozhe po-rano". Taka se predpazvam ot bezkraino tursene v FreeBSD Google za reshavaneto na niakoi problem. Pravia bazovata sistema i ne burzam s X - desktop . Stupkite, koito shte predlozha tuk sa suvsem nachalni, no te sa dostatuchni za lesna po-natatuchna nadstroika i podruzhka. Niakoi neshta sum spestil, a v niakoi sum izlozhil v dulbochina. Instalatsiiata obache mozhe da poeme v tolkova mnogo posoki, che e nevuzmozhno da se opishe. Nalaga se da mi se doverite.

   Kogato se poiavi menyuto izbiram Custom . Ot tam razdeliam diska (40G):
 
 
 Filesystem     Size      Mounted on
 /dev/ad6s1a    512M        /
 /dev/ad6s1b      1G        swap
 /dev/ad6s1e     22G        /home
 /dev/ad6s1d     10G        /usr
 /dev/ad6s1f      2G        /var
 /dev/ad6s1g    838M        /tmp  (kakvoto e ostanalo, no po-goliamo ot 512MB)
 
Otedlil sum 1G (2hRAM priblizitelno) za SWAP po vuzmozhnost v nachaloto na diska. SHTe imate i nuzhdata ot linprocfs shte ia razberete, kogato zapochnete da instalirate java virtualnata mashina. Ne go zabraviaite! V edin momen trabva da dobavite v fstab:
linprocfs   /compat/linux/proc   linprocfs   rw   0  0

Kato vtora stupka instaliram suvsem malko neshta, koito shte mi sa nuzhni za nachalo. Ot menyuto izbiram Distributions i selektiram: src (za da moga da kompiliram iadroto), binaries (te sa required ). Taka, do tuk dobre veche imame bazovata sistema. Ostanaha niakoi drebni dobavki - Root Password , Time Zone , Mouse enable , Network(enable interface) . Tuk e i momenta da se dobavi user . Kogato se pravi nov potrebitel, dobre e da se znae, che samo potrebiteli ot grupata wheel mogat da izpolzvat komandata su . Pretsenete sami. E, mozhe da ne viarvate, no imame raboteshta bazova FreeBSD sistema! Kogato menyutata sa pred vas shte vi bude po-lesno. Tuk iskam da napravia edno goliamo otklonenie. Neshto kato raziasniavne na ideologiiata, malko istoriia i leko namigvane kum Linux fenovte. SHTe se opitam i da vi vuveda v FreeBSD terminologiiata.

Mnogo hora izpolzvat Linux (niakoia ot mnogoto distributsii). Obshto vzeto vsichki sme suglasni, che e dobre da se izpolzva tip Unix operatsionna sistema, no vinagi sme na razlichno mnenie za tova koia ot mnogoto raznovidnosti e "viarnata". Za da razberem kak i zashto edna Unix sistema e po-dobra ot druga, triabva da navlezem dulboko pod povurhnostta. Neshto, koeto ostava chesto nezabeliazano e nachina na razrabotka, ierarhiiata v ekipite i nachina na puskane na versiia. Poniakoga se otchitat samo poliraniia grafichen interfeis i nachina na instalatsiia ili na gradski sluhove ot roda "edin pich mi kaza".
CHesto sreshtan tsitat ot BSD folklora e:

"BSD e togava, kogato grupa Unix hakeri se opitvat da portnat Unix na PC i e Linux, kogato grupa PC hakeri opitvat da napishat UNIX za PC"

I tova e taka. Istoriiata na dvete operatsionni sistemi go dokazva. Dokato BSD se sistematizira i se proekira, Linux prosto nabubva. SHTe pripomnia, che BSD e priak naslednik na UNIX razraboten ot prez 60-te godini ot Ken Tomson i Denis Ritchi. Dokato Linux se zapochva ot samoto "nishto" ot Linus kato student. I e vazhno da se otbelezhi, che tova e samo iadro na OS. Linux e shtastliva prikazka. I taka neka da zapochnem s neshtata, za koito si zasluzhava da oburnete po-spetsialno otnoshenie na BSD operatsionata sistema.

Purvo: The Base System

Termina "bazova sistema" oburkva dosta Linux potrebitelite, zashtoto tazi ideia ne sushtestvuva v tehniia sviat. Linux vinagi e bil konglomerat. ls, ps, tar i t.n sa "dopunitelni ekstri" vzeti ot niakude. Za da bude kompyutura izpolzvaem mu triabva neshto poveche ot iadro. Linux niama iasna granitsa mezhdu "bazova sistema" i "ekstri". Kak stoiat neshtata pri BSD? BSD vinagi e imal tsentraliziran nachin na razrabotka. "Bazova sistema" se razrabotva kato samostoiatelen modul i v nego ima vsichko, koeto pravi kompyutura rabotesht i e gotov za dopulnitelna nadstroika. Vidahte kolko burzo instalirahme neshtata. BSD niama GNU ls ili GNU libc, BSD izpolzva BSD ls i BSD libc. X-a ne e chast ot "bazovata sistema" toi e dopulnitelen paket, koito mozhe da se instalira. Osnovnata razlika e, kude se razrabotvat. Dori i da se izpolzva niakoi GNU paket, toi se "pipva", taka che da mozhe da "pasne" v BSD shemata. Primerno:

gcc e FreeBSD kompilator baziran na GNU gcc

Vsichko se pravi taka, che sistemata da raboti kato tsialo, a ne na parche. V Linux, "Linux distribuorite" reshavat, koe shte bude neobhodimiia minimum. Distributsii kato Debian i Gentoo se spraviat dosta dobre. I vupreki vsichko Vie mozhete da podmenite primerno libc s paket vzet ot niakoi treti, dokato tova v FreeBSD ne mozhe da stane.

Vtoro: The Ports System

"Ekstrite" sa po zhelanie na klienta. V BSD te se narichat "portove". Tui kato tova sa programi ot "treti litsa", sa neohodimi dopulnitelni usiliia te da stanat chast ot distributsiiata, toest na zhargon te triabva da budat "portnati". Do sega ima 13654 portnati prilozheniia i te neprekusnato rastat. Edna ot razlikite e, che Linux potrebitelite instalirat binary paketi, dokato FreeBSD potrebitelite kompilirat sorsove(mogat i binary). Pri BSD e taka zaradi instrumenite, koito se predostaviat za update i install. Tova shte go razgledame po-kusno. V Gentoo sushtestvuva podobna ideia Portage sistemata.

Treto: Release Engineering

FreeBSD izpolzva CVS, za da sledi versiite na vseki fail. Kakvo e CVS, predpolagam che znaete. Vsichki BSD-a davat nachin da vidite koda, da chetete komentarite i da namirate razlikata. Mnogo strano e, che Linux ne polzvashe do skoro revision system. Sega kakto znaete Linus izpolzva BitKeeper, koiato zabelezhete e komersialna. Izpolzvaneto na CVS-a e vazhno, zashtoto neshtata se razvivat ustoichivo i konsistentno vsiaka edna minuta. Vie po vsiako vreme mozhete da izteglite sorsovete i da kompilirate. Linux po-skoro se asemblira! Dava se opredeleno iadro i vsichko zapochva da se "zahvashta" za nego. V FreeBSD ima dve osnovni napravleniia sled puskane na versiiata - "CURRENT" i "STABLE", koiato e i produktsionnata. Kato pravilo, v "STABLE" se slagat security paches, a v "STABLE" osven tova kato dopulnitelno mogat da se slagat i novi neshta. Debian imat pochti sushtiia plan za rabota - "stable", "unstable". Triabva da podchertaia, che tova sa "branches" v CVS durvoto, tova ne se release. Za da poemem edin ot dvata putia izpolzvame suotvtnite CVS tags RELENG_X_Y i HEAD.

CHetvurto: Upgrading

Tui kato FreeBSD se razrabotva kato edno tsialo, nie mozhem lesno da vzemem tsialata "base system" i vsichki sorsove na portnatite prilozheniia. Zabelezhete, che vzemame promenite do poslednata sekunda! Posle startirate "buildworld", za da kompilirate t.n. userland i posle "buildkernel" i imate kompilirana raboteshta operatsionna sistema. Pak propuskam podrobnostite, koito shte razgledame po-natatuk.

Peto: Ports

Kogato instalirate dopulnitelnite prilozheniia vie mozhete da izbirate, dali da instalirate kato "ports"(source) ili kato "packages" (precompiled binaries). I v dvata sluchaia vsichki "dependancy" shte budat resheni. Posle shte vi predlozha nachin za podurzhane na sistemata vi up-to-date posredstvom CVSup. Ako znaete malko C i neshtichko za Makefile shte vi bude ot polza. Vsiako prilozhenie se namira v opredelena direktoriia.
Bih kazal, che BSD e po-porodista i vuzpitavana v po-strogi pravila. Kato tsialo e testvana ot niakolko pokoleniia programisti Tia vinagi raboti i ot tam logoto: "The Power to Serve". Dava izbor HEAD, CURRENT i STABLE. Ako se poiavi problem toi se popravia mnogo burzo i vie mozhete da gi vzemete na minutata(CVS). Tui kato imate i sorsovete mozhete da fiksnete problema sami. FreeBSD e napravena da raboti kato edno tsialo. I ne na posledno miasto FreeBSD mozhe da startira Linux prilozheniia.

Stiga otkloneniia, vlizame v putia.

   Mozhe bi e dobre da raziasnia kakva mi e ideiata. Iskam da napravia kompyutur, koito da go polzvam za workstation . Moeto PC ne e purva mladost, taka che se staria da optimiziram maksimalno FreeBSD-to. Edna ot purvite stupki v tazi posoka e instalatsiiata na prilozheniiata. Iskam da instaliram ot sorsovete t.n. ports . Kakva e podgotovkata? Instaliram nadlezhno kakto sledva:
 # pkg_add -r cvsup-without-gui
 # pkg_add -r fastest_cvsup
 # pkg_add -r portupgrade
 # pkg_add -r docproj-nojadetex
 
Prigotviam neshtata za izpolzvaneto na cvsup . Suzdavam /root/cvs-supfile sus slednoto sudurzhanie:
 *default host=cvsup.freebsd.org
 *default base=/var/db
 *default prefix=/usr
 *default tag=RELENG_6
 *default release=cvs delete use-rel-suffix compress
 src-all
 doc-all tag=.
 
Ne se izkushavaite da vzemate poslednoto iadro dori i tova da ne e survur(s optsiiata *default tag=. ). V HEAD-a na CVS popadat dosta eksperimentalni(niakoi neuspeshni) neshta ima i mnogo debug suobshteniia, zatova kato tsialo sistemata vi shte raboti po-bavno. Ako e produktsionna sistemata, slozhete *default tag=RELENG_6 (STABLE release) naprimer. Za da ne teglia vsichko moga da ukazha koi dokumenti NEiskam. Za tselta suzdavam direktoriite /var/db/sup i /var/db/sup/doc-all . V /var/db/sup/doc-all postaviam faila refuse . Eto kakvo ima v nego:
 doc/bn_*
 doc/da_*
 doc/de_*
 doc/el_*
 doc/es_*
 doc/fr_*
 doc/it_*
 doc/ja_*
 doc/nl_*
 doc/no_*
 doc/pl_*
 doc/pt_*
 doc/ru_*
 doc/sr_*
 doc/tr_*
 doc/zh_*
 
Mmmda gotovi sme za purviia start na cvsup .
# cvsup -L2 -h  cvsup.freebsd.org /root/cvs-supfile
Tia shte obnovi vsichki sorsove v bazovata sistema i dokumentatsiiata. SHTe polozhim malko usiliia i za portovte. Izpolzva se portsnap .
 # portsnap fetch
 # portsnap extract
 
Purvata komanda pravi download na "port durvoto", a vtorata go slaga v /usr/ports . Upravliavashtiia fail e /etc/portsnap.conf . Priemete neshtata tam "po default" - mahnete komentarite. Tam mozhe i da okazhete NEzhelanite portove, za da spestite malko vreme.
 REFUSE arabic chinese french german hebrew hungarian japanese korean
 REFUSE polish portuguese russian ukrainian vietnamese
 REFUSE astro biology
 
Kroia planove i za avtomatizatsiia. Edin skript, koito da puskam, dokato si piia sutrishnoto kafe i toi da mi podskazva kakvo triabva da update-na. Ideiata si struva, shte znam dali sum up-to-date samo s edna komanda. Preminavam kum deistvie. Za da imam dokumentatsiiata samo na angliiski sa nuzhni malko obhodni stupki. Promeniam edna chast ot /usr/doc/Makefile faila:
 .if defined(DOC_LANG) && !empty(DOC_LANG)
 SUBDIR = ${DOC_LANG}
 .else
 SUBDIR = en_US.ISO8859-1
 .endif
 
Za suzhalenie cvsup shte "zaburshe" moite promeni, i zatova pravia hitrinka:
 # cp /usr/doc/Makefile /usr/doc/Makefile.orig
 
Eto i moia rabotesht cvsupScript.sh :
 #!/bin/sh
 
 #Use fastest_cvsup to find fastest geographically
 #close mirror; I'll check Russion, Germany
 
    if SERVER=`fastest_cvsup -q -c ru,de`
      then
         echo "Running cvsup...(src, doc)"
         cvsup -g -L 2 -h $SERVER /root/cvs-supfile
      else
         echo "Oooops! There's a problem" 1>&2
         exit 1
 
    fi
 
 # Before this you have to run:
 # portsnap fetch && portsnap extract
    echo "Updating ports tree...(/usr/ports)"
    cd /usr/ports
    portsnap fetch
    portsnap update
    make fetchindex
    portsdb -u
 
 # Also see /var/db/refuse
    echo "Buiding docs..."
    cd /usr/doc
    cp Makefile.orig Makefile
    make install > /dev/null
 
 
    echo "The following ports need upgrading: "
    portversion -l "<"
 
 
 echo "DONE. Finished at `/bin/date`."
 echo "=========================================
 
 This script will NOT upgrade your ports!
    Manually run:
    (Do NOT forget to read /usr/ports/UPDATING before!)
 
         portupgrade -varR
 
    Only sources download:
 
         portupgrade -aFrR
 
 Tip: To delete unused downloaded sources run:
 
         portsclean -D
 
 ========================================="
 exit
 
Ura! Veche ne e problem da poddurzhame sistemata up-to-date . Sled kato se startira skripta, toi podskazva po-natatuk kak da se protsedira.

Zabelezhka 1: Ne sluchaino v kraia na skripta otpechatvam suobshtenie da se prochete /usr/ports/UPDATING. Tova chesto se zabravia i se dopuskat nelepi greshki. Eto primer:
 ===>  kdelibs-3.5.0 conflicts with installed package(s):
       kdebase-3.4.3_1
 
       They install files into the same place.
       Please remove them first with pkg_delete(1).
 *** Error code 1
 
 Stop in /usr/ports/x11/kdelibs3.
 *** Error code 1
 
V novata versiia na kdelibs ima smeneni putishta na niakoi biblioteki i portupgrade niama da se spravi. Suobshtenieto Please remove them first with pkg_delete(1) e viarno, no ne i dostatuchno. TSeliia algoritum v sluchaia e opisan v UPDATING faila. Namerete go:
  cat /usr/ports/UPDATING |grep -B 2 -e "AFFECTS\:.*kdebase.*" |less
 
Orientiraite se po datata(nai-blizkata) i nauchete C, pomaga pri razgadavaneto na suobshteniiata za greshka.

Zabelezhka 2: portupgrade -varR ne vinagi minava gladko! Poniakoga ni napomnia, che triabva da se pusne pkgdb -F . Vuprosite, koito zadava pkgdb -F sa trudni i zatova shte gi ilyustriram s primer:
 # pkgdb -F 
  --->  Checking the package registry database 
  Stale dependency: digikam-0.5.1 -> openldap-client-2.1.23 
  (net/openldap21-client): 
  open-motif-2.2.2_2 (score:23%) ? ([y]es/[n]o/[a]ll) [no] 
  New dependency? (? to help): 
  Skip this? ([y]es/[n]o/[a]ll) [yes] 
 
Kakvo znachi tova? Ami niama instaliran openldap-client-2.1.23 ! Opitva se da nameri "neshto podobno" s ne mnogo dobur uspeh kakto se vizhda - score: 23% . Ako obache rezultata e poveche ot 70% izberete yes ! Inache lekarstvoto e:
 # cd /usr/ports/net/openldap21-client
 # make install && make clean
 
 
Suveta mi e: ne burzaite s otgovorite! Pravete provreki. Eto i drug primer:
 # pkgdb -F  
 --->  Checking the package registry database 
 Stale dependency: Mesa-3.4.2_2 -> fontconfig-2.2.0 (x11-fonts/fontconfig): 
 New dependency? (? to help): ? 
 [Enter] to skip, [Ctrl]+[D] to delete, [.][Enter] to abort, [Tab] to complete 
 
Hmmm. Q burzo edna spravka:
 # pkg_info -I fontconfig\* 
 
E? Kakuv e rezultata? Ako ima instaliran fontconfig , koia versiia e? Ako ste dovolen ot otgovorite na zadadenite vuprosi posochete fontconfig-2.2.0 . Ako go niama - instaliraite. Think!
Do tuk s "loshite" strani na portupgrade. Edna nova vuzmozhnost, koiato nauchih naskoro e da nakaram portupgrade da izpolzva pakages vmesto ports pri update. Taka izbiagvam kompilatsiiata na golemi paketi, primerno na OpenOffice, koito e instaliran kato:
 pkg_add -r openoffice.org
 
(FreeBSD ne se "burka" pri instaliraneto i na packages, i na ports! )
Parametrite sa slednite:
 portupgrade -varRPP
 
Idva red na optimizatsiiata na iadroto. Kak se pravi novo iadro? Eto podgotovkata:
 # cd /usr/src/sys/i386/conf
 # mkdir /root/kernels
 # cp GENERIC /root/kernels/NEX_KERNEL
 # ln -s /root/kernels/NEX_KERNEL
 
Predi da se zahvana s iadroto optimiziram malko kompilatora. Dobaviam tipa na protsesora( Duron 1.3G ) v /etc/make.conf
 CPUTYPE?=k7
 
i zapochvam s redaktsiiata na parametrite na iadroto (moeto sum go krustil NEX_KERNEL). Az lichno maham vsichko, koeto ne mi e nuzhno na purvo chetene. Posle dobaviam parametrite za optimizatsiia, v sluchaia:
 machine         i386
 cpu             I686_CPU
 ident           NEX_KERNEL
 makeoptions     COPTFLAGS="-O2 -pipe -funroll-loops -ffast-math"
 
 options         SCHED_ULE              # NEW scheduler instead of SCHED_4BSD
 
Nai-nakraia slagam dopulnitelnite neshta:
 # Better console
 options         VESA
 options         SC_PIXEL_MODE
 
 # Security: PF
 device          pf              #PF OpenBSD packet-filter firewall
 device          pflog           #logging support interface for PF
 device          pfsync          #synchronization interface for PF
 
 # Traffic bandwidth( to test it use pchar, iperf )
 options         ALTQ
 options         ALTQ_CBQ        # Class Bases Queueing
 options         ALTQ_RED        # Random Early Detection
 options         ALTQ_RIO        # RED In/Out
 options         ALTQ_HFSC       # Hierarchical Packet Scheduler
 options         ALTQ_CDNR       # Traffic conditioner
 options         ALTQ_PRIQ       # Priority Queueing
 
Haide da napravim novoto iadro:
 cd /usr/src
 make buildkernel KERNCONF=NEX_KERNEL
 make installkernel KERNCONF=NEX_KERNEL
 
Za da izpolzvam pf dobaviam v /etc/rc.conf
 ## My firewall will needs this
 # To read logs use: tcpdump -n -e -ttt -r /var/log/pflog > /var/log/pflog.txt
 pf_enable="YES"                 # Enable PF (load module if required)
 pf_rules="/etc/pf.conf"         # rules definition file for pf
 pf_flags=""                     # additional flags for pfctl startup
 pflog_enable="YES"              # start pflogd(8)
 pflog_logfile="/var/log/pflog"  # where pflogd should store the logfile
 pflog_flags=""                  # additional flags for pflogd startup
 
 ## ...and to be a getaway
 gateway_enable="YES"            # Enable as LAN gateway
 
 ## Better console resolution
 allscreens_flags="-g 100x37 VESA_800x600"
 
i v /etc/pf.conf (Skoro shte publikuvam i spetsialna tema za PF i traffic bandwidth )
 ext_if="xl0"
 
 altq on $ext_if priq bandwidth 150Kb queue { q_pri, q_def }
   queue q_pri priority 7
   queue q_def priority 1 priq(default)
 
 pass out on $ext_if proto tcp from $ext_if to any flags S/SA keep state queue (q_def, q_pri)
 
 pass in  on $ext_if proto tcp from any to $ext_if flags S/SA keep state queue (q_def, q_pri)
 
Krai! Gotovo! Sled reboot triabva da imame perfektna FreeBSD osnova. Nadgrazhdaneto na sistemata veche e v nashi rutse. Eto kak protsediram az, kogato dobaviam prilozhenie. Predi vsichko triabva da go nameria v CVS durvoto.
 # cd /usr/ports
 # make search key= |less
 
ili
 # make search name=
 
Sled kato go nameria, instaliram:
 # cd /
 # make install && make clean
 
I taka, malko po malko izgrazhdam moia workstation instaliranite prilozheniia sa dostatuchno optimizirani, a imam i nachin za lesen update. Iskam da kazha, pochti lesen. Poniakoga niakoi prilozheniia gi instalirame s opredeleni optsii. Naprimer Apache, da mozhe da raboti s subversion.
 cd /usr/ports/www/apache20
 make install WITH_BERKELEYDB=db42 && make clean
 
 cd /usr/ports/devel/subversion
 make install -DWITH_MOD_DAV_SVN && make clean
 
Ako mashinalno napishem (ili se podvedete ot tova, koeto sum pisal po-gore hehehe):
 portupgrade -varR
 
Vsichki prilozheniia shte se upgraidnat s parametrite, koito sa po default. Pomisleno e za vsichko.
 emacs /usr/local/etc/pkgtools.conf
 
Orientiram se otnovo po komentarite i primerite. V sluchaia:
 ## Apache, Subversion
   MAKE_ARGS = {
   'www/apache20' => 'WITH_BERKELEYDB=db42',
   'devel/subversion' => 'WITH_MOD_DAV_SVN=1' 
   }
 
Prilozheniiata se izbroiavat sus zapetaia, a parametrite im sa razdeleni s interval. Relax - FreeBSD raboti veche za men.

Zabelezhka 3: Za da kompiliram tsialata sistema izpolzvam slednata protsedura:
 cd /usr/src
 make buildworld (shte triabva dosta da izchakate!)
 make buildkernel KERNCONF=NEX_KERNEL
 make installkernel KERNCONF=NEX_KERNEL
 shutdown now
 -> shte napravi sistemata v "single user mode". Oshte malko usiliia: 
 # fsck -p
 # mount -u /
 # mount -a -t ufs
 # swapon -a
 
 -> Znaete kakvo e "merge" v CVS, nali? SHTe vi triabva pri sledvashtata komanda
 mergemaster -p
 make installworld
 mergemaster
 
 shutdown -r now
 

Sega kato ia preprochitam "materiiata e dosta slozhna". Nadiavam se pone malko da sum pomognal i da sum suzdal interes. Trudno mi e da oprostia neshtata shte se iska dopulnitelno chetene, da znaete. Za men i FreeBSD mozhe da namerite poveche tuk http://zlatozar.blogspot.com


<< Razmisli po HFSC | Vuvedenie v dinamichnata optimizatsiia >>