Primii pasi in lumea FreeBSD-ului

Acest articol este menit sa va faca o idee despre sistemul de operare FreeBSD. El se adreseaza atat utilizatorilor de Linux, cat si celor care nu au incercat inca un sistem de operare bazat pe UNIX.

FreeBSD este un sistem de operare bazat pe 4.4BSD Lite pentru calculatoare Intel (x86 si Itanium), AMD64, Alpha, Sun UltraSPARC. Portarea spre alte arhitecturi este inca in lucru. Nasterea freeBSD-ului a avut loc la inceputul anului 1993. Scopul principal a fost producerea unui sistem de operare care sa inlature deficientele sistemului 386BSD

Dezvoltarea FreeBSD este un proces deschis si flexibil, bazandu-se pe contributia miilor de oameni din toata lumea ce colaboreaza prin intermediul Internetului.

Initialele BSD provin de la "Berkeley Software Distribution". Partile principale ale sistemul de operare sunt: kernelul, librariile C, utilitare ca shell-uri, utilitare pentru lucrul cu fisiere, compilatoare, link-editoare, etc., sistemul X Window cu rolul de display.

Sistemul de operare FreeBSD este mai putin cunoscut, din mai multe motive, printre care: dezvoltatorii sistemului sunt interesati mai mult de optimizarea codului decat de marketing-ul sistemului de operare, interesul dezvoltatorilor este de a face un sistem stabil, nu unul usor de folosit, din acest motiv incepatorii nu se simt prea "confortabil".

Majoritatea utilizatorilor de computere folosesc sistemul de operare Windows, putin folosesc o distributie de Linux si foarte putini folosesc freeBSD. Sa facem o mica comparatie intre Linux si FreeBSD. Ambele sunt sisteme de operare derivate din UNIX, ambele sunt dezvoltate de proiecte necomerciale (exceptie facand distributiile de Linux comerciale, care au aparut in ultimul timp).

Kernelul FreeBSD este dezvoltat si updatat urmand modelul Open Source. Astfel se mentine sub Concurrent Versions System (CVS) un "source tree" public, care contine toate fisierele, incluzand documentatia, de unde utilizatorii pot sa isi copie versiunea dorita a sistemului de operare.

Persoanele din lumea intraga care isi aduc contributia la dezvoltarea sistemului de operare se impart in trei categorii. Cei din prima categorie scriu cod sau documentatie, dar ei nu au voie sa adauge direct cod sursa in sistemul de operare, pentru acest lucru este necesar ca cei din a doua categorie sa verifice codul sursa. A treia categorie se ocupa de menagement-ul proiectului, fiind numita "core team". Se observa deja diferente fata de Linux: nici o persoana nu controleaza intreg continutul sistemului de operare, pe cand in proiectele Linux multor persoane li se permite sa faca modificari. Apoi mai exista un loc central, public, numit "central repository", unde se poat gasi toate sursele sistemului de operare, chiar in in cazul versiunilor mai vechi.

Lansarile de freeBSD se fac in mai multe variante. Asemanator Linux-ului, se asigneaza un numar, de exemplu, 4.8, 5.3. Dar, in plus, mai apare un sufix, indicand scopul. Astfel, versiunea pentru dezvoltatori se numeste CURENT, apoi, la intervale regulate de timp, se lanseaza versiunea RELEASE, care este disponibila pe CD sau se poate downloada prin ftp de pe site-uri.Bug-urile gasite in aceasta versiune sunt remediate, rezultand versiunea STABLE.

Spre deosebire de acest sistem, la Linux exista versiunea stabila si versiunea pentru dezvoltatori. Versiunea stabila are un versiunea minora un numar par (2.0,2.2,2.4, etc), pe cand cele pentru dezvoltatori au un numar impar (2.1,2.3,2.5,etc). In fiecare caz, mai exista un alt numar, specificand exact versiunea. Aditional, fiecare producator incorporeaza anumite utilitati pentru utilizator, de accea numele distributiei este important.

In contrast cu varietatea mare de distributii Linux existente, exista doar trei sisteme open source bazate pe BSD, unul din ele fiind FreeBSD, alaturi de NetBSD si OpenBSD.

FreeBSD-ul este distribuit sub licenta BSD, fiind mai atractiva pentru aplicatiile embedded, fata de Linux, care se distribuie sub licenta GPL (GNU General Public License).

Deoarece pentru FreeBSD sunt create mai putine aplicatii decat pentru Linux, dezvoltatorii FreeBSD-ului au creat un pachet ce permite aplicatiilor realizate pentru Linux sa fie rulate pe FreeBSD. Pachetul include modificarile necesare asupra kernelului pentru a prelucra corect apelurile de sistem din Linux, dar si alte fisiere necesare, cum ar fi librariile C. (Librariile C din freeBSD sunt scrise avand la baza cod sursa Berkeley, nu din GNU). Nu exista diferente notabile de viteza la rularea unei aplicatii Linux pe o masina ce are instalat Linux si rularea aceleasi aplicatii pe o masina ce are instalat FreeBSD (presupunem caracteristicile masinilor ca fiind aceleasi).

Sistemele BSD, in general, si FreeBSD, in particular, au o performanta mult mai ridicata decat sistemele Linux in majoritatea situatiilor, dar este posibil ca in unele situatii este sa nu existe o diferenta de performanta notabila. O remarca importanta este ca FreeBSD-ul poate executa cod Linux, pe cand invers nu este posibil. De remarcat este codul sursa mult mai matur al FreeBSD-ului, ce il fac mai stabil, castigand si prestigiu pe baza acestui fapt.

Va voi prezenta in continuare modalitatea de instalare a sistemului de operare FreeBSD pe o masina PC compatibila i386. Fisierele necesare instalarii pot fi pe un CD/DVD, o partitie DOS pe acelasi calculator, floppy-disk, o locatie FTP ( chiar daca sunteti in spatele unui gateway sau a unui proxy HTTP), un server NFS. Aici voi prezenta metoda de instalare de pe un CD.

Primul pas este sa obtineti ISO-urile necesare de pe un ftp public (recomand ftp://ftp1.ro.freebsd.org/pub/FreeBSD/releases/i386/ISO-IMAGES/5.3/ pentru versiunea 5.3-RELEASE), si sa le ardeti pe CD. Este de preferat sa verificati checksum-ul fisierului downloadat, sa vedeti daca corespunde cu cel publicat pe ftp.

<!–
google_ad_client = "pub-8310769609493718";
/* 300x250_as */
google_ad_slot = "3266981394";
google_ad_width = 300;
google_ad_height = 250;
//–>

Instalarea se face prin bootare de pe CD-ul respectiv, neexistand un executabil care sa fie apelat din alt sistem de operare. Pentru a putea face acest lucru este necesari sa modificati in BIOS ca primul dispozitiv de bootare sa fie CD-ROM-ul. Programul de instalare se numeste sysinstall , fiind de fapt o interfata text.

FreeBSD-ul trebuie instalat pe o partitie primara, unde isi va tine toate fisierele, inclusiv pe cele create de voi. O instalare foarte minima necesita doar 100MB liberi pe hard-disk, dar in acest caz nu va mai ramane loc pentru fisierele pe care doriti sa le creati voi. Un mimin realistic este de 250MB fara interfata grafica si aproximativ 350MB cu interfata grafica. Cu toate acestea aveti nevoie de mai mult spatiu daca doriti sa instalatii si alte aplicatii in afara de sistemul de operare.

Utilitarul principal de insalare se numeste sysinstall (il puteti apela mai tarziu, dupa instalare cu /stand/sysinstall). Acesta se prezinta ca un meniu cu mai multe optiuni. Navigarea facandu-se cu ajutorul tastelor sagesti, a tastei Space si a tastei Enter. In cele ce urmeaza voi prezenta modul de instalare standard. Se selecteaza deci a doua optiune (Standard). Pasul urmator este sa facem slice-ul unde va fi instalat FreeBSD-ul prin apasarea tastei C (Create Slice), specificam apoi spatiul pe care dorim sa il ocupe (sau lasam valoarea implicita data de sistem pentru ocuparea intregului spatiu de pe hard -disc. Tipul slice-ului il lasam default la 165. In cadrul slice-ului astefel creat se vor realize partitiile necesare . Pentru a trece la pasul urmator se apasa tasta Q ( Finish). Dupa ce se alege si boot-managerul, este momentul sa definim partitiile si mount-point-urile acestora. Se poate folosi tasta A (Auto Defaults).

Recomand o instalare minima a sistemului de operare. Alegem mediul unde avem fisierele respective si anume CD/DVD. Dupa terminarea instalarii vom fi intrebati despre cateva setari de baza pe care le dorim sa le realizam la acest moment (setari de retea, timp, mouse,etc), indicatiile fiind destul de sugestive.

Este indicat sa instalati si colectia de porturi. Va fi foarte utila mai tarziu.

Din motive de securitate, nu trebuie sa va logati tot timpul ca si root si de accea adaugati un nou user, de preferabil ca acesta sa fie in grupul wheel pentru a putea executa comanda su root.

Dupa ce terminam de facut toate setarile, iesim din sysinstall, scoatem cd-ul din unitate si ar trebui ca dupa restart sa se incarce sistemul de operare proaspat instalat.

Instalarea aplicatiilor se poate face in doua moduri: folosind pachetele sau porturile. Exista situatii cand un port sau un pachet depinde de altul, in acest caz, se instaleaza automat si pachetul/portul necesar. Recomand copierea pe hard-disk a colectiei de porturi cu mentiunea ca spatial ocupat de acestea nu este mare. In cazul porturilor, la instalarea lor, se downloadeaza de pe internet fisierele cu codul sursa si se compileaza pe sistemul vostru. Acest lucru implica un spatiu suplimentare pe hard-disk deoarece se genereaza fisierele obiect. Pentru economisirea spatiului, puteti sterge apoi fisierele sursa care s-au folosit la copiere.

Copierea colectiei de porturi se poate face imediat dupa instalare alegand din meniul de instalare optiunea Configure, apoi Distribution, selectam ports si apasand OK se trece la copierea lor pe hard-disk.

Inainte de a pregati serverul sa ruleze serviciile de care avem nevoie ar fi bine sa ne asiguram ca acesta ruleaza ultima versiune STABLE disponibila.

La momentul scrierii acestui articol ultima versiune disponibila pentru download era 5.3-RELEASE. Va voi prezenta modalitatea de trece la versiunea 5.3-STABLE. Pentru aceasta este nevoie sa facem cvsup la porturi si la surse, operatie pentru care avem nevoie de o conexiune la internet. Pentru instalarea utilitarului cvsup executam urmatoarele comenzi:

cd /usr/ports/net/cvsup-without-gui
make
make install clean

Deoarece ne-am propus ca functia masinii sa fie de server care sa asigure diverse servicii de retea, nu avem nevoie de interfata grafica si din acest motiv vom folosi cvsup-without-gui. Dupa ce dam comanda make se downloadeaza de pe net pachetul corespunzator si dependintele sale in /usr/ports/distfiles.

Dupa terminarea instalarii, editam folosind editorul ee un fisier de configurare pentru porturi. De exemplu:

ee /usr/local/etc/cvsup-ports

In care vom scrie:

*default host=cvsup2.ro.FreeBSD.org
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=.
*default delete use-rel-suffix
*default compress
ports-all

Iesim din editor cu ajutorul tastei ESC si salvam. La default host putem trece un alt server de pe care sa facem cvsup.

Executam:

/usr/local/bin/cvsup –g –L 2 /usr/local/etc/cvsup-ports

Urmeaza sa facem apoi update si la surse. Editam un fisier de cofigurare:

ee /usr/local/etc/cvsup-src

In care scriem:

*default host=cvsup1.ro.FreeBSD.org
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=RELENG_5
*default delete use-rel-suffix
*default compress
src-all

Facem update cu comanda:

/usr/local/bin/cvsup –g –L 2 /usr/local/etc/cvsup-src

Dupa terminarea executie avem pe hard-disc ultimele surse si porturi.

Urmatorul pas este sa editam fisierul de configurare pentru kernel. Implicit el este /usr/src/sys/i386/conf/GENERIC. Il copiem pe acesta, dandu-i ce nume dorim. De exemplu:

cp /usr/src/sys/i386/conf/GENERIC /usr/src/sys/i386/conf/CUSTOM

apoi:

ee /usr/src/sys/i386/conf/CUSTOM

Observam ca este comentariu in drept la fiecare linie cu explicatia respectivei linii. Pastram ce avem nevoie din acest fisier (in functie de hardware-ul pe care il avem pe sistemul respectiv), restul stergem sau comentam punand un # (diez) la inceputul liniei.Pentru mai multe detalii cititi si fisierul /usr/src/sys/i386/conf/NOTES sau handbook-ul.

La sfarsitul fisierului adaugam si urmatoarele linii:

options VESA
options QUOTA
# IP Firewall
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=10000
options IPFIREWALL_DEFAULT_TO_ACCEPT
options DUMMYNET
# PF+ALTQ Support
device pf
options ALTQ # ALTQ queueing
options ALTQ_CBQ # ALTQ Class Based Queueing
options ALTQ_RED # ALTQ Random Early Detection
options ALTQ_RIO # ALTQ RED In/Out
# Device Polling
options DEVICE_POLLING
options HZ=1000 # Fine-grained kernel timer

Adaugam in fisierul /etc/make.conf urmatoarele linii:

CPUTYPE?= athlon-xp
NOPROFILE= true
COMPAT4X= true
DOC_LANG= en_US.ISO8859-1

Pentru a alege corect valoarea pentru CPUTYPE?= aruncati o privire in /usr/share/examples/etc/make.conf.

Dam apoi urmatoarele comenzi:

make buildworld
make buildkernel KERNCONF=CUSTOM
make installkernel KERNCONF=CUSTOM

unde, in loc de CUSTOM puneti numele fisierului de configurare pentru kernelul vostru.

Urmeaza sa rebooti in single user mode. Puteti face asta tastand:

init 1

Daca insa folositi shurdown –r now si apoi alegi „Boot in single user mode” este necesar sa mai dati si comanda mount –a inainte de a urma pasii de mai jos, pentru a remonta partitiile.

Dupa ce am boot in single user mode, dam urmatoarele comenzi:

/etc/rc.d/preseedrandom
mergemaster -p
make installworld
mergemaster

Rebootam sistemul si il lasam sa porneasca normal. Dupa ce ne logam, executand uname –a ar trebuie sa afiseze ceva de genul:

FreeBSD host.domeniu.tld 5.3-STABLE FreeBSD 5.3-STABLE #0: Tue Jan 11 09:57:46 EET 2005 root@host.domeniu.tld:/usr/obj/usr/src/sys/CUSTOM i386

Putem spune ca am recompilat cu succes kernelul si avem acum functionala versiune 5.3-STABLE.
Inainte de a trece mai departe, va voi prezenta cateva comenzi uzuale.

cd <dir> schimba directorul curent cu <dir>
ls arata continutul directorului
cp copie un fisier dintr-ul director in altul
date afiseaza sau seteaza data
df afiseaza spatiul liber pe disk (recomandabil df –h)
kill <pid> termina preocesul ce ruleaza cu pid-ul respectiv
locate <fisier> cauta fisierul pe disc
mkdir <dir_name> creaza directorul <dir_name>
mv muta un fisier dintr-un director in altul
passwd seteaza sau modifica parola unui user
ps afiseaza procesele care ruleaza
pwd afiseaza calea absoluta a directorului in care ne aflam

Pentru a afla mai multe detalii despre aceste comenzi sau altele, precum si parametrii pe care acestea le primesc, folositi comanda man urmata de numele comenzii care afiseaza manualul pentru comanda respectiva.

Pentru a se permite logarea prin SSH trebuie sa existe in fisierul /etc/rc.conf linia:

sshd_enable="YES"

O observatie importanta este ca implicit FreeBSD nu accepta logari prin shh ca si root, ci trebuie mai intai sa va logati ca un user normal si apoi, daca userul respectiv se afla im grupul wheel puteti da comanda su –l .

Pentru sporirea securitatii, editati fisierul /etc/hosts.allow si puneti ca prima linie:

ALL : ALL : deny

In acest moment, nimeni nu se poate conecta la masina voastra, nici macar voi.Toate liniile care sunt scrise dupa aceasta nu sunt luate in considerare, deci nu au nici un efect. Regulile din acest fisier se aplica in ordinea aparitiei lor de sus in jos.

Pentru a permite accesul SSH de pe un anumit ip, adaugati, deasupra acestei linii, urmatoarea (bineinteles specificand ip-ul dorit de voi):

sshd : 192.168.0.2 : allow

Plecand de la premiza ca majoritatea utilizatorilor de Linux folosesc acest sistem de operare pentru a asigura accesul unei retele (LAN) la internet, voi explica cum se configureaza FreeBSD-ul pentru a permite acest lucru.

<!–
google_ad_client = "pub-8310769609493718";
/* 300x250_as */
google_ad_slot = "3266981394";
google_ad_width = 300;
google_ad_height = 250;
//–>

Avem nevoie de minim doua placi de retea instalate pe acest calculator. Spre deosebire de linux, unde placile sunt notate eth0, eth1, in FreeBSD acestea primesc nume in functie de producator (rl0, dc0, ep0,etc). Pentru a vedea starea placilor instalate (ce ip au, daca au sau nu link, MAC-ul acestora, etc) se foloseste comanda ifconfig care arata toate interfetele sau ifconfig urmat de numele interfetei pentru a afisa informatii numai despre o anumita interfata. Pentru asignarea unei adrese ip unei interfete se foloseste:

ifconfig <nume_interfata> inet <ip> netmask <netmask>

De exemplu:

ifconfig rl0 inet 192.168.0.1 netmask 255.255.255.0

Pentru ca aceste setari sa se pastreze si dupa rebootarea sistemului, se scrie in /etc/rc.conf:

ifconfig_rl0=”inet 192.168.0.1 netmask 255.255.255.0”

Translatarea de adrese (NAT-Network Adress Translation) se poate realiza in doua moduri: fie folosind ipfilter (ipf) sau mai noul pachet-filter (pf). Pentru utilizatorii care sunt la inceput ipf este mai usor de configurat. Astfel, vom adauga in fisierul /etc/rc.conf:

gateway_enable="YES"
inetd_enable="YES"
ipnat_enable=”YES”
ipnat_rules="/etc/ipnat.rules"

Exemplul fictiv ce urmeaza sper sa ajuta la intelegerea setarilor necesare:

-presupunem ca avem un singur ip dat de catre ISP-ul la care suntem conectat si anume 194.100.2.4, netmask 255.255.255.248 si o retea LAN cu mai multe calculatoare ce au ip-uri din clasa 192.168.0.0/24 (adica de la 192.168.0.1 pana la 192.168.0.254). Legatura cu providerul se face pe rl0 iar reteaua se conecteaza prin intermediul unui switch pe interfata rl1.

-in fisierul /etc/rc.conf vom avea:
ifconfig_rl0=”inet 194.100.2.4 netmask 255.255.255.248”
ifconfig_rl1=”inet 192.168.0.1 netmask 255.255.255.0”
gateway_enable="YES"
inetd_enable="YES"
ipnat_enable=”YES”
ipnat_rules="/etc/ipnat.rules"
defaultrouter=” 194.100.2.1” #gateway-ul providerului

– pentru ca toate calculatoarele din retea sa aiba acces la internet vom scrie in /etc/ipnat.rules:

map rl0 192.168.0.0/24 -> 0.0.0.0/32

-statiile din retea le vom configura cu ip-uri din clasa 192.168.0.0/32, specificand gateway-ul ca fiind 192.168.0.1 (adresa ip a interfetei rl1 de pe router) si DNS-ul dat de provider.

-restart la router si acum toate statiile pot sa acceseze internetul.

-in cazul in care avem mai multe ip-uri date de provider, atunci putem face ca anumite statii din reteaua locala sa iasa pe un unimit ip:

map rl0 192.168.0.10/32 -> 194.100.2.3/32

-daca pe statia respectiva ruleaza un serviciu ce trebuie sa fie accesibil din exteriorul retelei (un server http, ftp, etc), atunci putem face bimap in loc de map, sintaxa fiind aceasi, shimbandu-se doar cuvantul cheie folosit. Atentie: se poate face un singur bimap pentru un ip dat de provider.

Reincarcarea regulilor se face cu:

ipnat –C –F –f /etc/ipnat.rules

Este recomandata citirea Handbook-ului disponibil la adresa: http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/

Articole asemanatoare:

Bogdan Turcanu

Bogdan Turcanu

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.