Bsd operativni sistem. Po čemu se FreeBSD razlikuje od Linuxa

Prilikom projektovanja korporativnog IT sistema potrebno je odrediti opseg zadataka koji se rešavaju i zahteve za sigurnošću, brzinom i pouzdanošću. Ove karakteristike direktno zavise od izbora operativnog sistema (OS) instaliranog na serveru. Sistemi nalik UNIX-u koji se slobodno mogu distribuirati BSD i GNU/Linux postepeno zamjenjuju poznati Windows. Oni su sigurniji, jer se pristup odvija po principu "sve je zabranjeno, šta nije dozvoljeno", tako da praktički nisu podložni napadima virusa, imaju visoke performanse i pouzdanost.

BSD operativni sistemi

Sistem za distribuciju softvera Berkeley Software Distribution (BSD) kreirali su ranih 90-ih alumni Univerziteta Berkeley (Kalifornija). Programeri operativnog sistema nalik UNIX-u 386BSD objavili su izvorni kod za otvoreni pristup, a na njihovoj osnovi su napisani osnovni operativni sistemi:

  • BSD/OS, komercijalna verzija.
  • NetBSD, otvorenog koda.
  • FreeBSD, otvorenog koda.

Komercijalna verzija više nije podržana, a drugi otvoreni projekti se uspješno razvijaju. Trenutno postoje 4 BSD projekta otvorenog koda. Svaki projekat je zasnovan na sopstvenom jezgru; stvoreni su za različite svrhe, ali se praktično ne razlikuju mnogo jedni od drugih.

BSD porodica:

  • FreeBSD - Projekat ima za cilj stvaranje sistema sa visokim performansama lakim za upravljanje.
  • DragonFlyBSD - skalabilni OS visokih performansi dizajniran da podrži višeprocesiranje (SMP), izveden iz FreeBSD projekta;
  • NetBSD - podržava maksimalnu prenosivost koda za različite računarske resurse; podržava zastarjeli hardver; ovaj OS je korišten u NASA-inim svemirskim projektima.
  • OpenBSD - pouzdan OS sa povećanim nivoom sigurnosti zasnovan na NetBSD projektu; instaliran je u bankama i vladinim agencijama u Sjedinjenim Državama.

TrueOS (ranije PC-BSD), operativni sistem zasnovan na FreeBSD-u i orijentisan za upotrebu na radnim stanicama, može se posebno istaći.

Najčešći je FreeBSD, sa 80% korisnika BSD-a koji ga ima instaliran.

U online režimu, detaljna dokumentacija je dostupna u različitim formatima za konfigurisanje i upravljanje sistemom.

Na FreeBSD-u, aplikacije se mogu instalirati na dva načina:

  • korišćenje menadžera paketa (počevši od verzije 9.1, podrazumevano se nudi nova, fleksibilnija implementacija paketa, praktično u skladu sa verzijama u portovima);
  • koristeći kolekciju portova.

Kolekcija portova — automatizovani sistem za pravljenje softvera iz izvora — uveliko pojednostavljuje proces instalacije. Trenutno ima preko 33.000 prijava. Dovoljno je podesiti parametre izgradnje odabirom potrebnih stavki iz menija i pokrenuti proces za izvršenje.

Linux operativni sistemi

Linux, za razliku od BSD-a, je samo jezgro OS-a. Dodavanjem GNU programa u kernel, formiraju se GNU/Linux operativni sistemi sa sopstvenim skupom aplikativnih i sistemskih komponenti. Linux distribucije se distribuiraju u obliku instalacionih paketa besplatno ili po razumnoj cijeni; možete kompajlirati sistem iz izvora.

Glavne Linux distribucije:

  • Debian je jedna od prvih distribucija.
  • Ubuntu je najpopularniji Linux baziran na Debianu.
  • Fedora - Održava RedHat.
  • RHEL je komercijalna verzija Fedora Linuxa.
  • Gentoo je u potpunosti izgrađen od izvornih kodova, možete fleksibilno prilagoditi sistem.
  • Mint - Kompatibilan sa Ubuntuom, sadrži Javu i Adobe Flash.
  • Slackware je najstariji Linux.
  • Arch je distribucija koja se stalno ažurira koja podržava binarni format i instalaciju iz izvora.
  • CentOS - Zasnovan na komercijalnoj RedHat distribuciji, stabilan serverski OS.
  • PCLinuxOS je prenosiva LiveCD distribucija.

Svaki Linux je kreiran za specifične zadatke. Instaliranje Gentoo-a i Arch zahtijeva bogato iskustvo u rješavanju problema ovisnosti i drajvera. Ubuntu i Debian distribucije su relativno jednostavne za instaliranje.

Savjeti iskusnih stručnjaka iz neformalne Linux zajednice pomažu u razumijevanju zamršenosti rada sa sistemom. Većina aplikacija napisanih za Linux može se besplatno preuzeti iz repozitorija na Internetu.

Poređenje FreeBSD-a i Linuxa

I BSD porodica i Linux najčešće se razvijaju na nekomercijalnoj osnovi i dostupni su za besplatnu upotrebu. Korisnici mogu uzeti izvorne kodove i modificirati ih kako žele.

I FreeBSD i Linux distribucije su operativni sistemi slični UNIX-u. Linux je prvobitno kreirao Linus Torvalds kao besplatnu alternativu MINIX sistemu nalik UNIX-u, dok je FreeBSD bliži originalnoj verziji UNIX-a: prvi BSD OS se čak zvao Berkeley Unix.

Zajedničko UNIX nasleđe obe porodice se manifestuje u upotrebi sličnih obrazaca. U oba slučaja, interakcija korisnika sa sistemom se odvija uglavnom pomoću interpretatora komandi (ljuske), sučelje za programiranje aplikacije (API) ima sličnu funkcionalnost, postoji sličnost u hijerarhiji sistema datoteka. Ovo čini mnogo lakšim prenos aplikacija sa FreeBSD-a na Linux i obrnuto nego sa drugih sistema koji nisu slični UNIX-u.

Jedna od glavnih razlika između BSD porodice i distribucija baziranih na Linux kernelu je vrsta licenciranja.

Većina Linux distribucija i njihovih aplikacija licencirane su pod GNU GPL, također poznatom kao copyleft, što vam omogućava da koristite originalni kod za kreiranje novih proizvoda bez traženja dozvole od vlasnika izvora, ali uz pridržavanje uvjeta distribucije. Ova licenca promovira ideju besplatne distribucije i otvorenosti iznad svega. Stoga, kada razvijate vlasnički softver, vodite računa o korištenju proizvoda licenciranih pod GPL.

Operativni sistemi iz porodice BSD, uključujući FreeBSD, distribuiraju se pod BSD licencom, koja sadrži više slobode od GPL licence, bez potrebe da svi derivati ​​zadrže sve uslove originalne licence. BSD licencirani softver je besplatan za korištenje za razvoj vlasničkih aplikacija zatvorenog koda.

Još jedna fundamentalna razlika je u tome što FreeBSD sadrži ne samo kernel, već i osnovne komponente operativnog sistema koje je razvio FreeBSD tim. Dok je linux samo kernel. Ali već određeni distributivni komplet uključuje, osim kernela, određeni skup softvera, često prikupljen iz različitih izvora.

Koristeći FreeBSD i Linux

Zanimljivo je da su i FreeBSD i Linux u srcu mnogih drugih sistema otvorenog koda i vlasničkih sistema i koriste se na raznim uređajima.

Na primjer, FreeBSD je osnova za sljedeće proizvode:

  • FreeNAS je operativni sistem za mrežno skladištenje podataka.
  • pfSense je distribucija zaštitnog zida.
  • m0n0wal je ugrađeni firewall distribucijski komplet.
  • Darwin je jezgro macOS, iOS sistema.
  • Junos je operativni sistem za mrežnu opremu kompanije Juniper Networks.
  • OneFS kompanije Isilon Systems je operativni sistem za NAS kompanije Dell EMC.
  • Netflix Open Connect uređaji - serveri za striming.
  • Igraće konzole PlayStation 3, PlayStation 4, PlayStation Vita kompanije Sony Computer Entertainment.
  • i sl.

Na osnovu Linux kernela kreiraju se sljedeće:

  • Android je operativni sistem za mobilne uređaje (Google).
  • Tizen je operativni sistem za mobilne uređaje (Samsung).
  • VMware ESXi je hipervizor.
  • ChromeOS je operativni sistem za Chromebook laptop.
  • OS za Cotton Candy i Raspberry Pi računare na jednoj ploči.
  • OS za Linksys mrežnu opremu.
  • i sl.

Zaključak

Sistemi otvorenog koda su evoluirali tokom vremena i savremenom korisniku je mnogo lakše da ih instalira i koristi nego ranije. Sistemi koji se razmatraju su veoma slični, a izbor se može napraviti na osnovu dostupnosti određenog zadatka i odgovarajućih stručnjaka koji razumeju konkretan sistem.

ATLEX koristi CentOS distribuciju na serverima i serverima za pružanje usluge bazirane na Xen-u. Za OpenStack usluge u oblaku koristi se Ubuntu distribucija. I FreeBSD pokreće neke servisne servere.

Kod nas možete instalirati i testirati bilo koji OS na virtuelnim mašinama, a stručnjaci kompanije će vam uvek pružiti kvalifikovanu podršku.

U oblasti modernog softvera otvorenog koda, riječ "Linux" je praktično postala sinonim za koncept "operativnog sistema", iako malo ljudi zna da je to u stvarnosti daleko od jedinog OS-a poput Unixa danas čiji su izvorni kodovi dostupni. za svakoga.

U 1999. godini, prema podacima IOSC-a, skoro trećina svih mašina koje su bile povezane na Internet je pokretala Linux, dok je skoro 15% pokretalo FreeBSD. O kakvom se sistemu radi, a do danas samo nekoliko savremenih korisnika računara zna, uprkos svim njegovim prednostima i širokoj upotrebi u jednom trenutku. Vrijedi napomenuti činjenicu da mnogi svjetski lideri u oblasti web-usluga aktivno rade na ovom sistemu. Posebno treba napomenuti da je Yahoo sistem danas baziran na FreeBSD-u. Šta to korisnicima daje, oni sami jedva da znaju i razmišljaju, ali su vlasnici sistema sigurni da je to prava odluka.

Šta je BSD?

BSD je skraćenica od Berkeley Software Distribution. Ovo je bio naziv softvera koji se distribuirao u izvornim kodovima na Berkliju. Vrijedi napomenuti da je originalni dodatak standardnom UNIX operativnom sistemu bio jedina stvar koju je FreeBSD predstavljao. Šta je to bilo u poređenju sa trenutnom verzijom sistema?

Nekoliko operativnih sistema otvorenog koda je kreirano na osnovu verzije 4.4 BSD-Lite-a. Konkretno, sastav ovih sistema uključivao je razvoj drugih projekata, među kojima posebnu pažnju zaslužuje GNU projekat.

Struktura

Prednosti i karakteristike ovog sistema razlikuju se u strukturi FreeBSD-a. Koja je ova struktura:

  • Jezgro koje je dizajnirano da pažljivo planira sve procese, upravlja memorijom, radi sa raznim uređajima i podržava višeprocesorske sisteme. Treba napomenuti da, za razliku od Linux OS-a, u ovom slučaju postoji nekoliko tipova BSD kernela, koji se razlikuju po različitim karakteristikama.
  • Biblioteka C, koja se koristi kao glavni interfejs sistemskog programiranja, i zasnovana je na kodu sa Berklija, a ne iz GNI projekta.
  • Sve vrste uslužnih programa za datoteke, kompajlera, školjki, linkera i drugih programa za krajnje korisnike, od kojih su neki bazirani na GNU kodu.
  • FreeBSD UNIX je operativni sistem, uključujući X Window, koji je direktno odgovoran za Ovaj sistem se koristi u velikoj većini BSD verzija i zvanično je podržan od strane X.Org projekta. Ovaj sistem omogućava korisniku da bira između nekoliko grafičkih skinova kao i niza laganih menadžera prozora.
  • Veliki broj drugih sistemskih i aplikativnih programa.

Šta je pravi UNIX?

Vrijedi napomenuti da je sam FreeBSD UNIX uvijek drugačiji operativni sistem. A tipovi takvih sistema nisu klonovi jedni drugih. Oni su samo potomci zajedničkog pretka, tradicionalnog UNIX operativnog sistema. Ova činjenica može biti donekle iznenađujuća, posebno ako se sjetite da programer ovog operativnog sistema nikada nije otkrio kodove svojih razvoja široj javnosti.

Da li je BSD UNIX?

Zaista, UNIX operativni sistem nikada nije bio softver otvorenog koda, tako da se BSD definitivno ne može nazvati UNIX sistemom, samo zato što je grafički interfejs operativnih sistema drugačiji. Međutim, u isto vrijeme, kompanija koja je razvila UNIX aktivno je koristila razvoje drugih ljudi, a posebno se to odnosi na softver koji je razvila organizacija CSRG.

U početku su BSD distribucije, kao i grafički interfejs operativnih sistema, bili kompleksi korisničkih programa, a ova situacija se nastavila tačno sve dok kompanija nije sklopila ugovor sa DARPA-om, podređenom. Svrha ovog ugovora je ažuriranje različitih komunikacionih protokola na kojima je podržana kompjuterska mreža agencije ...

Nekoliko kompanija za radne stanice pojavilo se tokom 1980-ih, a mnoge su kupile UNIX licence umjesto da pokušavaju da razviju vlastiti softver od nule. Posebno treba istaći Sun, koji je to uradio i odlučio da na kraju izda sopstveni operativni sistem zasnovan na verziji 4.2BSD, koji se zvao SunOSTM. Kada je UNIX kompanija AT&T na kraju odlučila da komercijalizuje svoj operativni sistem, pojavila se prilično stroga implementacija - System III, nakon čega je vremenom usledilo izdavanje System V.

Iz kog razloga ovaj operativni sistem ostaje nepotražen?

Postoji nekoliko razloga zašto je FreeBSD 10 danas manje popularan:

  • Programeri su najčešće zainteresirani za kvalitet vlastitog koda, i više za njegovo poliranje, a ne za oglašavanje.
  • Uglavnom, popularnost Linuxa je posledica niza eksternih faktora vezanih za ovaj projekat, a posebno se tiče medija, kao i kompanija koje su odlučile da formiraju sopstveni biznis, pružajući usluge korisnicima ovog operativnog sistema. .
  • BSD programeri su u velikoj mjeri iskusniji od Linux programera, pa stoga posvećuju mnogo manje pažnje olakšavanju života običnim korisnicima. Drugim riječima, postavljanje FreeBSD-a za prosječnog korisnika je složenije od toga
  • 1992. UNIX programer je odlučio da tuži BSDI, koji je isporučio BSD/386 operativni sistem. Glavna poenta optužbe u ovom slučaju bila je da je OS sadržavao zatvoreni kod u vlasništvu tužioca, te se čini da je slučaj na kraju vansudski riješen 1994. godine, ali čitav kompleks sporednih parnica i danas truje živote. mnogih ljudi.
  • Vjeruje se da se sami projekti BSD-a razlikuju i da se mogu čak međusobno sukobiti. Ovo mišljenje je zasnovano na događajima koji su se desili davno.

Što je bolje - Linux ili BSD?

Danas je najčešći izbor instaliranja Apache servera FreeBSD umjesto tradicionalnog Linux sistema za većinu drugih sistema. Za prosječnog korisnika, razlika između ovih sistema je iznenađujuće mala, budući da su oba proizvoda bazirana na UNIX-u. Oba sistema su razvijena na nekomercijalnoj osnovi.

Ko je vlasnik BSD-a?

Vrijedi napomenuti da ne postoji određena osoba ili kompanija koja posjeduje razvoj BSD-a. Razvoj i naknadnu distribuciju ovog sistema vrši čitava grupa visoko kvalifikovanih i istovremeno posvećenih projektnim stručnjacima okupljenih iz celog sveta. Određene BSD komponente su zasebni projekti otvorenog koda, koji imaju svoje zakone i razvojne timove.

Šta odabrati?

Izbor između ovih operativnih sistema je zaista prilično težak, pa postoji nekoliko savjeta koji vam omogućavaju da odaberete koja je opcija optimalna - Linux ili FreeBSD. Naredbe u oba slučaja su prilično slične, pa se izbor najčešće može zasnivati ​​na sljedećem:

  • Ako već koristite određeni OS otvorenog koda, ne biste ni trebali nešto mijenjati.
  • FreeBSD sistemi mogu raditi mnogo bolje, ali ovo pravilo nije univerzalno.
  • BSD sistemi imaju prilično dobru reputaciju, posebno kada je u pitanju pouzdanost.
  • BSD projekti imaju bolju reputaciju zbog visokog kvaliteta i kompletnosti dostupne dokumentacije.
  • BSD može koristiti ogromnu većinu Linux izvršnih datoteka, dok Linux ne može koristiti mnoge BSD izvršne datoteke.

Pruža tehničku podršku i usluge za FreeBSD - portove i sisteme - FreeBSD Mall, Inc.

Događaji u svijetu slobodne distribucije operativnih sistema BSD porodice: FreeBSD, OpenBSD i NetBSD, dugo su privlačili pažnju OS programera. Informacije o mogućnostima, prednostima i nedostacima ovakvih sistema, kao i informacije o njihovim komercijalnim implementacijama (BSD/OS) bit će korisne kada se korisnik ponovo suoči sa pitanjem: da li kupiti komercijalni Unix sistem ili napraviti korak ka besplatnom softvera. Osim toga, članak bi mogao biti od interesa za svakoga ko želi znati samu povijest Unix OS-a.

Istorija BSD Unixa počela je kada je operativni sistem Unix došao na Univerzitet Berkli (Kalifornija, SAD) 1974. godine. U to vrijeme, Bell Technical Labs (BTL) je ovaj OS već nekoliko godina distribuirao uz nominalnu naknadu među univerzitetima i drugim obrazovnim institucijama, nakon što je uspio pridobiti simpatije korisnika kojima se svidjela otvorenost sistema: Unix je isporučen u izvornom kodu (bez BTL podrške i garancija), a korisnici su imali priliku da ga samostalno proučavaju, popravljaju i proširuju. Sve je to izazvalo želju da podijele svoj rad sa drugim Unix entuzijastima i na mnogo načina oblikovalo specifičan način razmišljanja i Unix kulturu. Treba napomenuti da je osoblje Bell Technical Labs-a postupilo vrlo mudro (možda i ne svjesno) puštajući Unix da slobodno pluta. Freedom je učinio uslugu kako samom sistemu tako i njegovim korisnicima - na Unixu je izraslo mnogo profesionalaca, a da ne spominjemo broj odbranjenih diploma na teme vezane za ovaj OS. Dakle, može se smatrati da je Unix OS ušao u komercijalni svijet sa punim fakultetskim obrazovanjem. Inače, nedavno se BSDI odlučio na takav korak - prebacivanje izvornog koda na obrazovne institucije. Pitam se da li će se istorija ponoviti?

Ali vratimo se na Berkeley. Tamo su se rodile mnoge ideje koje su sada postale opšteprihvaćene - podrška za TCP/IP protokol u Unixu, sistem virtuelne memorije, brzi sistem datoteka (FFS), ex i vi editori, BSD utičnice (programski interfejs mrežne aplikacije ), sendmail, csh i još mnogo toga... Univerzitet je takođe pružio svetu sjajne stručnjake koji su oblikovali razvoj Unixa na mnogo načina - pomislite na Erica Allmana, Billa Joya ili Chucka Haleyja. Oni su bili prvi koji su dobili Unix tekstove koji su se "naselili" u Berkliju. Unix je ovdje razvila Grupa za istraživanje kompjuterskih sistema (CSRG), koja se nažalost raspala 1992. godine. Međutim, njegove najbolje tradicije nastavili su BSDI (Berkeley Software Development, Inc.) i FreeBSD i NetBSD razvojne grupe. Nedavno je dodat OpenBSD projektni tim.

1. Sve je počelo sa 386BSD

Postojalo je nekoliko verzija BSD Unixa koje je lutalo svijetom u to vrijeme, ali sve su imale jednu zajedničku stvar: zahtijevale su licencu za originalni Unix izvorni kod za korištenje. Većina BSD koda je napisana na Berkliju, i jednog dana neko je primetio da nije ostalo mnogo od originalnog koda; tako se rodila ideja da se napravi besplatni Unix i počne ga distribuirati preko Neta (Net distribucija).

William i Lyna Jolitz odlučili su da prepišu dijelove sistema koji su nedostajali kako bi stvorili BSD Unix otvorenog koda. Rezultat je bio 386BSD verzija 0.0. Još nije spreman za upotrebu, 386BSD je imao jednu neospornu prednost: više nije zahtijevao strašnu izvornu licencu za kreiranje operativne verzije sistema. Ubrzo je uslijedio 386BSD 0.1 (do tada je Linux, još jedan član porodice besplatnih Unix sistema, postojao više od godinu dana). Mnogi ljudi, želeći da se pomuče sa izvornim kodom koji su im već bili upoznati, odlučili su da počnu koristiti i zakrpe 386BSD 0.1. Kao rezultat toga, od juna 1992. godine, veliki broj popravki i poboljšanja je napravljen na sistemu. Mnogi FTP serveri su čak imali i nezvanični patchkit (skup popravki) koji je učinio 386BSD stabilnijim i lakšim za korišćenje - mnogi problemi u sistemu su rešeni pomoću patchkita. Ali danas, nakon nekih pravnih problema sa nekim kodom koji pripada AT & T / Berkeley, originalni sistem je postalo prilično teško pronaći – uklonjen je sa FTP servera širom svijeta.

Treba imati na umu da kada je nekomercijalna BSD porodica prvi put stvorena, William i Lynn su kao osnovu koristili traku pod nazivom Berkeley Net Release / 2. Izgradivši tako čvrste temelje, postavili su, nesvjesno, i tempiranu bombu. Kao rezultat pravnih bitaka, neki od fajlova na originalnoj Net / 2 traci su označeni samo kao binarni. Stoga su morali biti ponovo kreirani od nule kako bi dobili istinski besplatni sistem distribucije. Ovo je glavni razlog zašto je sada gotovo nemoguće pronaći originalnu verziju 386BSD 0.1. Kako bi zamijenili 386BSD, rođena su tri nova sistema pod novim imenima. Prvi je bio NetBSD, ubrzo potom FreeBSD, a nedavno se OpenBSD pridružio grupi.

Ako pogledate README fajl koji dolazi sa svakim BSD sistemom, videćete da su ovi sistemi zasnovani na BSD 4.4-Lite. Razvojni tim FreeBSD-a koristio je BSD 4.4-Lite distribuciju i generirao dijelove koda koji nedostaju; sve je to, nakon daljeg razvoja, postalo FreeBSD. NetBSD programeri su započeli razvoj sa 386BSD, dodajući i dostupne dijelove iz BSD 4.4. OpenBSD sistem se svojevremeno odvojio od NetBSD-a - programeri su odlučili da kombinuju najbolje karakteristike FreeBSD-a (upotrebljivost i funkcionalnost) i NetBSD-a (prenosivost na veliki broj platformi). Stoga su razvojni timovi Open/Free/NetBSD ponovo kreirali one datoteke koje nisu bile u originalnom BSD 4.4-Lite paketu ili se nisu mogle slobodno distribuirati. Svi sistemi su što je moguće bliži BSD 4.4, iako svaki ima svoje prednosti i nedostatke.

Razmotrimo ove sisteme detaljnije, ali odmah treba napomenuti da se vrlo često mnogo toga što je rečeno o jednom sistemu odnosi na drugi: svi ovi OpenBSD, FreeBSD i NetBSD operativni sistemi se razvijaju odvojeno, ali ne izolovano.

2. NetBSD

NetBSD projekat je rezultat napora velike grupe entuzijasta da stvori besplatni operativni sistem kompatibilan sa Unixom. NetBSD je baziran na velikom broju besplatnog softvera, od kojih je najznačajniji Univerzitet Berkeley BSD4.4-Lite. Sistem radi na raznim platformama - od DEC Alpha do Apple Macintosh-a i z80, dolazi sa punim izvornim kodom i podržan je od strane programera i korisnika sistema. Programeri su se fokusirali na pouzdanost i podršku velikog broja platformi. Gotovo da ne postoji hardverska konfiguracija danas u kojoj se NetBSD ne može instalirati.

Implementacija projekta počela je u januaru 1993. godine, a do aprila se pojavilo prvo službeno izdanje - verzija 0.8, koja je još uvijek radila samo na i386 platformi. Slijedila je verzija 0.9 u avgustu te godine. NetBSD je prvobitno naslijeđen od 386BSD koji je koristio Berkeley Net Release 2 (BNR / 2) i prirodno je, kao i drugi operativni sistemi bazirani na BNR / 2, u nekom trenutku naišao na poteškoće. Samo godinu dana nakon izdanja 0.9, u oktobru 1994. godine, pojavljuje se NetBSD 1.0 – prva verzija NetBSD-a koja je bazirana na BSD4.4-Lite. Pored toga, sistem je portovan na HP300 / 9000, Macintosh, PC532, Sun SPARC i Amigu. U septembru 1995. formirana je NetBSD fondacija, neprofitna organizacija koja je postala koordinaciono tijelo NetBSD projekta. Uskoro (novembar 1995.) NetBSD je portiran na Atari, DECstation, VAX, Sun3; dodaje binarnu kompatibilnost (unutar iste platforme) sa FreeBSD, iBCS2, SunOS, Ultrix, HPUX, Linux, OSF / 1, SVR4. Verzija je označena brojem 1.1. Najnovija verzija NetBSD-a bila je implementacija 1.2 (oktobar 1996.), a uz mnoga poboljšanja i promjene pojavila se podrška za DEC Alpha platforme, Motorola MVME ploče, SPARC / Sun4m.

NetBSD se distribuira u dva tipa: formalno izdanje i NetBSD-current. FreeBSD i OpenBSD imaju isti raspored. Formalno izdanje ima broj verzije i uključuje dobro otklonjene uslužne programe, kernel, izvore i alate za instalaciju. Izdanje predstavlja balans između funkcija i stabilnosti — lakše se instalira od trenutnog izdanja. Takve verzije su dobro otklonjene i pojavljuju se relativno rijetko, tako da su pogodne za one koji žele da imaju stabilan radni sistem. Ove verzije su praktičnije za održavanje, jer je uvijek jasno o čemu je riječ. Najveći problem sa formalnim verzijama je taj što korisnik ne dobija pristup bazi izvornog koda sa najnovijim poboljšanjima i popravkama. Formalnu verziju je lako instalirati - svaka platforma ima detaljna uputstva, slike diska za pokretanje ili miniroot sistem datoteka. Obično postoji procedura za laku migraciju sa prethodne verzije na novu.

Sa NetBSD-current, situacija je potpuno drugačija. Trenutna verzija se pojavljuje svake večeri i predstavlja snimak izvornog stabla NetBSD-a koje treba ponovo kompajlirati na vašoj platformi. Budući da se posao obavlja stalno, trenutna verzija ponekad nije potpuno otklonjena, može sadržavati greške, možda čak ni kompajlirati. Trenutna verzija je korisna za programere drajvera, programere sistemskog softvera i one koji doprinose stvaranju NetBSD-a. Trenutna verzija omogućava programerima da se "drže zajedno", uhvate greške i brzo izvrše promjene. U nekom trenutku, trenutna verzija počinje da se pretvara u formalno izdanje, odvija se beta testiranje, a iz ove grane izrasta nova aktuelna verzija itd. Dakle, razvoj ne staje ni na trenutak, a istovremeno ni u jednoj fazi skriveno od zajednice - uvijek možete predložiti vlastite izmjene i dopune, koje će (ako imaju smisla) biti uključene u trenutnu.

NetBSD projekat ima za cilj da prati industrijske standarde kao što su POSIX i Standard C. Podsjetimo da je POSIX (Sučelje prijenosnog operativnog sistema) naziv grupe koju finansira IEEE i koja razvija standardni API za operativne sisteme slične Unixu. Postoji POSIX.1 (IEEE Std1003.1-1990), koji standardizira API za C POSIX.2 (IEEE Std1003.1-1992), koji standardizira kako ljuska i uslužni programi rade. Drugi POSIX standardi opisuju jezike Ada i Fortran, ekstenzije u realnom vremenu itd. NetBSD je sada veoma blizak POSIX.1, tako da je prenos softvera na NetBSD jednostavan. Ali malo je verovatno da će NetBSD ikada dobiti status sistema koji je kompatibilan sa POSIX, pošto sertifikacija košta mnogo novca. Međutim, programeri vjeruju da je NetBSD bliži POSIX-u i Standardu C od bilo kojeg drugog besplatnog operativnog sistema.

3. FreeBSD

FreeBSD projekat je rođen početkom 1992. godine i dijelom je izrastao iz 386BSD Unofficial Patch Kit-a, tačnije, patchkita, koji su predvodili Nate Williams, Rod Grimes i Jordan Hubbard. Osim toga, David Greenman i Julian Elisher su učestvovali u razvoju, iako su se zvanično priključili projektu tek mjesec dana nakon početka implementacije. Budući da organizacija rada preko patchkit-a više nije mogla spasiti stvar, glavni cilj projekta je bio kreiranje srednje verzije 386BSD, koja bi ispravila većinu grešaka. Možda se neko još uvijek može sjetiti radnih naslova projekta poput 386BSD 0.5 ili 386BSD Interim, koji odražavaju trenutno stanje stvari.

Otprilike u to vrijeme Bill Jolitz se povukao iz dalje podrške i razvoja sistema, kao rezultat čega je projekat nadogradnje 386BSD evoluirao u ono što sada znamo kao FreeBSD (ime je skovao David Greenman). Jordan Hubbard se obratio Walnut Creek CDROM-u (SAD) u nadi da će otvoriti dodatne kanale za distribuciju za operativni sistem koji je još izgrađen. Walnut Creek CDROM ne samo da je podržao ideju distribucije FreeBSD-a na CD-u, već je pomogao i sa hardverom i brzim internet vezama. Prvi FreeBSD CD pojavio se u decembru 1993. godine - to je bio FreeBSD 1.0, čija je verzija takođe distribuirana preko Neta. Sistem je zasnovan na 4.3 BSD Lite (Net / 2) traci iz Berkeleya i dopunjen komponentama iz 386BSD i Free Software Foundation. Za prvu verziju uspjeh je bio prilično značajan, a ubrzo, u maju 1994. godine, rođena je vrlo uspješna verzija 1.1.

Međutim, tada su se oblaci počeli skupljati na horizontu. Novell, nasljednik AT&T-a, pokrenuo je tužbu zbog zabrane isječaka koda na traci Berkeley Net/2 koja je nastala u AT&T-u. Univerzitet Berkeley je bio primoran izdati "laganu" verziju, nazvanu BSD4.4-Lite, i preporučiti svim Net/2 korisnicima da pređu na nju. Stoga, krajem jula 1994. godine, FreeBSD projekat prestaje sa isporukom FreeBSD-a, ali, prema licencnom ugovoru, ima pravo da objavi drugu verziju prije "X-hour". Rezultat je FreeBSD 1.1.5.1 - rezultat godine na Net/2. Ova verzija je imala bolje performanse od svih prethodnih, imala je veću pouzdanost i sama po sebi bila je odličan proizvod.

Ali sada su programeri morali da počnu iznova, na osnovu novog i nekompletnog BSD 4.4-Lite seta. Zbog raznih zakonskih ograničenja, Berkeley CSRG tim je uklonio mnogo koda koji se koristio za kreiranje sistema koji se može pokrenuti, a u stvari port na Intel x86 je bio vrlo nekompletan. FreeBSD projekat je ponovo počeo sa radom u decembru 1994. godine, a već u januaru 1995. godine, FreeBSD verzija 2.0 se pojavila na webu i na CD-u. Uprkos nekim grubim ivicama, sistem je bio veliki uspjeh, a ubrzo ga je pratio brži i lakši za instalaciju FreeBSD 2.0.5, objavljen u junu 1995. godine.

Krajem ove godine izašla je verzija 2.1, vrlo stabilna, po mnogo čemu poboljšana, koja je po svim aspektima nadmašila verziju FreeBSD 1.1.5.1. Tokom dve godine, urađen je ogroman posao da se nepotpuni BSD 4.4-Lite paket pretvori u funkcionalan, pouzdan i lak za korišćenje operativni sistem. Ne možemo a da se ne divimo razvojnom timu, kojem se do tada pridružilo mnogo vrsnih i entuzijastičnih programera. Nešto kasnije, 2.1 se pretvorio u 2.1.5, pa u 2.1.6. U oba slučaja poboljšana je stabilnost, dodani su dodatni drajveri i ispravljene greške. U februaru 1997. otkrivena je nepreciznost u sistemskoj biblioteci u rukovaču varijabli okruženja PATH_LOCALE, a zatim je razvojni tim FreeBSD-a uklonio verziju 2.1.5 / 2.1.6 sa svih FTP servera i objavio verziju 2.1.7 (sigurnosno izdanje). Zatim je objavljena verzija 2.2 i počeo je rad na FreeBSD 3.0, koji planira da poboljša kvalitet virtuelne mašine (VM), što će poboljšati emulaciju DOS i Windows aplikacija.

Pored toga, nedavno je pokrenut ambiciozan projekat za ponavljanje čitavog FreeBSD koda (oko 120 MB) red po red. Cilj projekta je riješiti se sigurnosnih problema, popraviti pronađene greške i poboljšati cjelokupni stil. Stablo izvornog koda je podijeljeno na zasebne dijelove koje pregledavaju različiti programski timovi; sve popravke više puta provjeravaju nezavisni stručnjaci. Sve ovo daje nadu da će FreeBSD postati sigurniji sistem. Inače, nakon analize BUGTRAQ mailing liste za posljednjih šest mjeseci, možete vidjeti da komercijalni operativni sistemi kao što su Solaris, IRIX, da ne spominjemo NT, značajno nadmašuju FreeBSD po broju grešaka u sigurnosnim kritičnim programima. Više informacija o FreeBSD Audit projektu možete pronaći na: http://www.freebsd.org/auditors.html.

Stoga, FreeBSD razvoj nije zatvoren proces, već održava dugu tradiciju saradnje između stručnjaka iz cijelog svijeta koji rade na istom zadatku. Najaktivniji programeri prelaze u jezgro FreeBSD tima, koji je odgovoran za cjelokupni smjer i koordinaciju cilja projekta.

4. OpenBSD

OpenBSD projekat se nedavno odvojio od NetBSD-a i takođe je član BSD4.4-Lite porodice. OpenBSD se danas razvija samostalno; pored sopstvenog razvoja, uključuje dobre ideje drugih grupa (FreeBSD / NetBSD). Razvoj OpenBSD-a započeo je Theo de Raadt, jedan od četiri kreatora NetBSD-a. I ako je ranije o OpenBSD-u još bilo moguće reći: "OpenBSD je NetBSD plus dodatne mogućnosti", sada je, nakon dugog rada, očigledno da je OpenBSD nezavisan sistem iz porodice BSD - mnogo, u poređenju sa originalnom verzijom , je dodan i popravljen.

OpenBSD je naslijedio dobru podršku za više platformi, ali se proces prijenosa nastavlja. OpenBSD grupa posebnu pažnju posvećuje sigurnosti sistema: posebno, davno je učinjen pokušaj da se preradi izvorni kod kako bi se spriječili mogući napadi povezani s fiksnom veličinom bafera, kao i popravak mnogih programa. OpenBSD ima odličnu POSIX kompatibilnost, pouzdanost i sigurnost. OpenBSD tim uvek promptno reaguje na izveštaje o netačnostima i mogućim problemima, otvoren je za nove programere, a svaki specijalista ima priliku da doda sistemu ono što joj nedostaje.

OpenBSD je kompatibilan sa mnogim FreeBSD ekstenzijama (posebno sa FreeBSD sistemom portova); Nedavno se pojavila podrška za ATM, a radi se na omogućavanju IPX-a i niza drugih mrežnih protokola. Jedna od glavnih prednosti OpenBSD-a je razumijevanje potrebe za sigurnošću sistema. OpenBSD ostaje daleko najpouzdaniji PC sistem sličan Unixu u ovom pogledu. Najnovija verzija OpenBSD-a je 2.0, sa 2.1 uskoro (na CD i FTP serverima).

5. Net / Free / OpenBSD karakteristike

Dakle, šta je danas BSD Unix porodica besplatnih distributivnih sistema?

FreeBSD je operativni sistem sličan Unixu za računare zasnovan na Intel arhitekturi, koji uključuje 386, 486 i Pentium procesore. Osim toga, NetBSD / OpenBSD podržava mnoge druge platforme. Sva tri sistema pružaju mnoge funkcije koje su ranije bile dostupne samo na snažnijim i skupljim mašinama.

  • Preventivni multitasking sa dinamičkim prioritetima osigurava da se računarski resursi pouzdano i brzo dijele između pokrenutih aplikacija i korisnika.
  • Višekorisnički pristup omogućava istovremenu upotrebu mašine u različite svrhe. Sistemske periferije, kao što su štampači ili trake, automatski se dijele između korisnika.
  • TCP/IP mrežna podrška uključuje SLIP, PPP, NFS i NIS. To znači da mašina može lako da komunicira sa drugim sistemima, na primer, da deluje kao server preduzeća koji pruža vitalne funkcije kao što su NFS, e-pošta, WWW i FTP server, kontrola rutiranja pomoću ugrađenih zaštitnih zidova.
  • Zaštita memorije osigurava sigurno izvršavanje programa. Nijedan program ili korisnik ne može utjecati na izvršavanje drugih programa ako za to nemaju dozvolu.
  • Implementacija industrijskog standarda X Window System (X11R6) pruža grafičko korisničko sučelje; većina grafičkih kartica i monitora je podržana, dostupni su puni izvori.
  • Binarna kompatibilnost sa mnogim programima izgrađenim na SCO, BSD / OS, Net / Free / OpenBSD, 386BSD i Linux.
  • Hiljade dodatnih visoko prilagodljivih aplikacija dostupne su preko Interneta. BSD sistemi su kompatibilni sa izvorom sa mnogim popularnim komercijalnim Unix sistemima, tako da većina aplikacija može ili ne mora zahtevati manje promene.
  • Sistem virtuelne memorije i virtuelnih mašina omogućava pokretanje aplikacija koje zahtevaju velike količine memorije; međutim, ne stvaraju poteškoće i kašnjenja u interakciji sa korisnikom.
  • Zajedničke biblioteke (ekvivalent DLL-ova koje je MS Windows pozajmio od Unixa) omogućavaju efikasno korištenje prostora na disku i RAM-a.
  • BSD Unix uključuje kompletan set razvojnih alata za C, C++ i Fortran. Pored toga, mnoga druga razvojna okruženja su dostupna kroz FreeBSD portove i kolekciju paketa.
  • Posjedovanje kompletnog izvornog koda za operativni sistem znači da korisnik ima maksimalan nivo kontrole nad okruženjem. Zašto se ograničavati na djelomično rješenje i ovisiti o dobavljaču kada možete imati istinski otvoren sistem?
  • Podršku pružaju programeri preko Usenet news grupa i mailing lista na kojima možete postaviti bilo koje pitanje.
  • 6. Karakteristike implementacije

    Pored glavne distribucije, FreeBSD nudi veliku kolekciju portovanih softverskih proizvoda od nekoliko stotina naslova. Lista uključuje softver za umrežavanje, sisteme za programiranje, igre i još mnogo toga. Kompletna kolekcija zauzima samo 10 MB prostora na disku, jer sadrži samo liste promjena koje je potrebno izvršiti u izvornom kodu prije kompilacije. Za instalaciju samo ukucajte komandu "make", nakon čega će sistem automatski preuzeti osnovnu verziju programa sa CD-a ili sa FTP servera, izvršiti potrebne izmjene i kompajlirati. Za one koji neće sami kompajlirati programe, prikladna je zbirka gotovog softvera (paketa). Da biste instalirali program, potrebno je da unesete jednu naredbu "pkg_add" sa imenom arhive, koja se može naći na CD-u ili FTP-u.

    FreeBSD je bogat funkcijama, pouzdan i brz. Možda se ovaj sistem iz cijele porodice besplatnih BSD sistema trenutno najdinamičnije razvija. Velika pažnja se poklanja kompatibilnosti sa drugim sistemima i upotrebljivosti. Ako korisnik radi na x86, onda treba obratiti pažnju na FreeBSD - to će vam omogućiti da vrlo glatko uđete u svijet BSD sistema. NetBSD se više fokusira na podršku za više platformi, dok OpenBSD pokušava da kombinuje najbolje od FreeBSD-a i NetBSD-a sa fokusom na bezbednost sistema. Pored odličnog posla koji je CSRG obavio, razvojni timovi su proveli hiljade sati usavršavajući sisteme za maksimalne performanse i pouzdanost. Dok se komercijalni giganti bore na polju PC operativnih sistema, FreeBSD, NetBSD i OpenBSD ih sada nude.

    7. Primjeri upotrebe

    Područja primjene u kojima se BSD Unix može koristiti ograničena su samo maštom korisnika - od razvoja softvera za automatizaciju preduzeća do automatske kontrole satelitskih antena. Ako se nešto može uraditi pomoću komercijalne implementacije Unixa, onda se to najvjerovatnije može učiniti korištenjem BSD Unixa, koji besplatno nudi puno visokokvalitetnog softvera iz istraživačkih centara i univerziteta širom svijeta. Broj dostupnih komercijalnih aplikacija raste svakim danom.

    Budući da je izvorni kod sistema potpuno dostupan, sistem se može prilagoditi i/ili prilagoditi za rješavanje specifičnih problema, pružajući fleksibilnost kakvu nema u mnogim komercijalnim zatvorenim sistemima. Evo samo nekoliko primjera korištenja FreeBSD-a, NetBSD-a ili OpenBSD-a:

  • Internet server: brza i pouzdana TCP/IP implementacija čini BSD Unix idealnom platformom za FTP, World Wide Web, Gopher, email, BBS i Usenet servere;
  • obrazovanje: BSD Unix će pomoći budućim administratorima da nauče o arhitekturi operativnih sistema i mrežnim mogućnostima hardverskih konfiguracija;
  • istraživanje: BSD Unix, sa svojim kompletnim izvornim kodom, može poslužiti kao dobra platforma za istraživanje i razvoj operativnog sistema. Ovo je takođe olakšano odsustvom ograničenja licenciranja;
  • mreže: FreeBSD ili Open / NetBSD mogu lako pretvoriti stari 386/486 računar u DNS server ili moćni ruter sa mogućnostima filtriranja paketa;
  • radna stanica za X Window: BSD Unix može dobro poslužiti kao jeftin X terminal. Zahvaljujući besplatnom XFree86 serveru, možete raditi i sa komercijalnim X serverima. Za razliku od običnog X terminala, BSD Unix dozvoljava X aplikacijama da se pokreću lokalno, skidajući opterećenje sa servera. BSD Unix podržava daljinsko pokretanje radi lakše administracije;
  • razvoj softvera: osnovni BSD Unix sistem dolazi sa kompletnim skupom alata, koji uključuju GNU C / C ++ kompajler i debager.
  • BSD Unix generalno ne uključuje DES kod za podršku kako bi se izbjeglo kršenje američkih izvoznih ograničenja, gdje je dostupna opciona komponenta za pružanje DES-a; za stanovnike Evrope i drugih zemalja postoji i DES implementacija distribuirana preko evropskih FTP servera. Ako je zaštita lozinkom sve što je potrebno za funkciju crypt (), a ne morate koristiti lozinke na drugim sistemima (Sun, DEC, itd.), FreeBSD nudi snažnu kriptografsku zaštitu zasnovanu na MD5. Ovaj model pruža sigurnost na nivou DES-a, ili ga čak i prevazilazi, pa odgovara većini korisnika sistema. OpenBSD podržava MD5 i radi se na dodavanju blowfish modela šifriranja. FreeBSD se takođe kreće ka implementaciji dodatnih šema šifriranja koje se mogu prebacivati ​​između.

    8. BSD / OS je komercijalni BSD sistem

    Do sada je fokus bio na besplatnim BSD sistemima, ali ima smisla spomenuti i komercijalnu BSD/OS verziju Berkeley Software-a, DesingBSD/OS. Nekoliko vodećih CSRG stručnjaka osnovalo je BSD Inc. 1991. godine kako bi razvili BSD tehnologiju i doveli je do komercijalnih kupaca.

    BSD/OS je potpuno opremljen, POSIX-kompatibilan Unix sistem za 386, 486 i Pentium procesore. Sistem je zasnovan na softveru sa Univerziteta Berkli, kao i na drugim izvorima i komponentama razvijenim u BSDI. Prva BSD/OS verzija isporučena je kupcu u martu 1993. godine. Danas je BSDI Internet Server baziran na BSD/OS široko priznat u svojoj klasi sistema i dobio je nekoliko nagrada (na primjer, InfoWorld Top Score Award 1995.). Kao i drugi BSD sistemi, ovaj OS može poslužiti kao WWW server, ruter, itd. BSDI Internet server donosi u PC svijet mnogo od onoga što je ranije bilo moguće samo na moćnijim sistemima: multitasking, mrežna podrška. Dakle, BSDI testovi brzine su pokazali da BSD/OS na Intel 486/66 razvija brzinu na nivou Sun SPARCStation II, a Pentium procesor je već uporediv sa SUN SS10.

    BSD/OS uključuje sve komponente kompletnog sistema: X11R6, TCP/IP (+ SLIP/PPP), NFS, C/C++ razvojni alati, set aplikacija itd. BSD/OS se isporučuje u binarnom obliku, a uz posebnu naknadu - sa izvornim tekstovima. Možda jedina stvar u kojoj BSD/OS očigledno nadmašuje svoje besplatne konkurente je podrška. BSD/OS je komercijalni proizvod, a njegovi korisnici imaju telefonske linije, odjele za podršku itd.

    9. Dakle, šta je bolje?

    Ne postoji definitivan odgovor na ovo pitanje. Svaki argument u "svetom ratu" je gubljenje vremena. Ali na to možete gledati i sa druge strane. Svi sistemi pružaju dugo očekivane i jedinstvene mogućnosti: potpuno funkcionalan operativni sistem radi na popularnom hardveru, a njegov izvorni kod je u potpunosti dostupan. Oni koji već dugo rade u kompjuterskoj industriji zapamtit će da su operativne sisteme gotovo uvijek kreirali dobavljači određenog hardvera i da po pravilu nije bilo alternative njihovom sistemu. Izvorni kod nikada nije objavljen (mnoge kompanije i dalje nastavljaju ovu "dobru" tradiciju). Pravi profesionalac je bilo moguće postati samo samostalnim razumijevanjem strukture sistema, logike njegovog rada.

    Ali danas se situacija promijenila. Korisnik ima mogućnost da kupi računar koji će biti nekoliko puta moćniji od višekorisničkog VAX-a, a da pritom bira između nekoliko besplatnih operativnih sistema (BSD, Linux itd.) Klasično pitanje: ako nešto liči na patku , hoda kao patka i kvoca kao patka, kako se to zove? Odgovor zavisi od toga da li je reč "patka" zaštitni znak! Ako je tako, onda je najbolje na šta možete računati bez pristanka vlasnika zaštitnog znaka da je "stvore poput patke". Unix je zaštitni znak kompanije X / Open Company, tako da drugi sistemi koji nisu ovlašteni da ga koriste svoje proizvode nazivaju Unix-like ili čak "UN * X-like". Dakle, nijedan od navedenih OS-a se formalno ne može nazvati Unixom, ali jesu li od ovoga postali gori?

    Danas se besplatni operativni sistemi dinamično razvijaju, ni na koji način ne inferiorni, au mnogim aspektima čak i nadmašuju svoje komercijalne konkurente. Štaviše, korisnicima se pruža mogućnost da lično utiču na razvoj sistema - dovoljno je imati dobre programere u kadru da bi postali nezavisni od dobavljača operativnog sistema. Ne morate čekati nekoliko sedmica ako se pronađe neka nepreciznost ili postoji potreba da se nešto poboljša ili doda. Umjesto zatvorenog tima programera (koliko ljudi zna imena kreatora Windows 95?), postoji zajednica entuzijasta otvorena za saradnju.

    Možete odabrati operativni sistem koji vam najviše odgovara: FreeBSD, OpenBSD, Linux, NetBSD ili bilo šta drugo. Ali šta god da odaberete, to je dobar posao. Mnoga mala preduzeća, internet provajderi, druge organizacije i korisnici odbijaju da troše novac na ono što se može dobiti besplatno i sve više koriste besplatne Unix sisteme. Plašite li se da nećete moći pronaći softver koji vam je potreban? Prvo, za vaše Internet usluge, drugo, možete kupiti softver za BSD / OS i / ili Linux i koristiti ga na svom sistemu - binarna kompatibilnost je dobro otklonjena. Osim toga, mnogi komercijalni programeri sada se okreću besplatnim BSD sistemima.

    Književnost

    V. Kolontsov. Pronađite, provjerite i neutralizirajte. Otvoreni sistemi. - 1996, br. 6, str. 58-63.

    Više informacija o BSD operativnim sistemima

    386BSD - starije verzije BSD-a su sada fokusirane isključivo na akademsku i istraživačku zajednicu, distribuirane preko Dr. Dobbov časopis na CD-ovima.

    FreeBSD - BSD verzija za Intel platformu cilja široku upotrebu, distribuira se na CD-u (Walnut Creek CD-ROM, http://www.cdrom.com) i preko FTP-a ( http://www.freebsd.org).

    BSD / OS (BSDI Internet Server) - komercijalni BSD sistem kompanije Berkeley Software Development, Inc. za Intel platforme ( http://www.bsdi.com).

    Usenet grupe: comp.Unix.bsd. * Fidonet: ru.Unix ru.Unix.bsd IRC: #netbsd, #freebsd, #openbsd itd.


    BSD OS je živio, živi i živjet će


    Ova napomena je nastala u toku brojnih prelazaka sa jednog sistema na drugi, tokom višegodišnjeg (u IT vremenskim okvirima) njihovog zajedničkog korišćenja, kao i u toku razmišljanja o temi: na koji sistem da instaliram nova mašina? Neposredni poticaj za nju bila je prepiska s brojnim autorima i snovi o idealnoj distribuciji, o kojima se nije tako dugo razgovaralo. Ali prvo, nekoliko upozorenja

    Moram vas odmah upozoriti - odgovora na pitanje predstavljeno kao naslov neće biti. Jer ga ni sam ne poznajem. Ali za činjenicu da slijedim testament velikog rimskog istoričara - mogu jamčiti. Zato što volim oba sistema i, štaviše, koristim oba sistema u svakodnevnom životu - nekad zajedno, nekad odvojeno, u zavisnosti od zadataka, okolnosti i samo mog raspoloženja.

    I još nešto: dalje se neće reći ni riječi o korištenju Linuxa ili FreeBSD-a kao servera, lokalnih mrežnih čvorova i sličnih pitanja administratora sistema. I to isključivo - o korisniku, odnosno desktopu, njihovim kvalitetima. Predviđajući reakciju određene kategorije čitatelja, spreman sam označiti posljednju frazu oznakom i ponovi dva i tri puta :-) Subjektivni uvod

    Uskoro su prošle četiri godine otkako se FreeBSD i Linux izmjenjuju na mojim strojevima (kući i na poslu) u redovnim intervalima. Ili mirno koegzistirati u jednoj, odvojeno uzetoj sistemskoj jedinici. I za to vrijeme primijetio sam zanimljiv obrazac.

    U periodima kada imam FreeBSD na svojoj mašini, moje radno vreme je raspoređeno otprilike ovako: 90% je praktičan rad (uopšte nije bitno o kakvom se poslu radi u ovom trenutku), a 10% je manje-više nezdravo eksperimenti na sistemu. Čim se neki Linux ugnijezdi u kut tvrdog diska - i vremenski udio eksperimenata odmah skoči na 50%. I tokom perioda kada sam gradio Linux od nule, eksperimentalni način je zapravo postao trajan.

    I postavio sam sebi pitanje - zašto? I – za sebe – odgovorio: FreeBSD je koherentan i harmoničan sistem u kojem nakon kompleksa početnih postavki nema želje da se bilo šta dodaje ili oduzima. Nije slučajno da se pokret, koji s vremena na vrijeme obuhvata širok spektar korisnika Linuxa, praktički nije razvio u FreeBSD svijetu: poznati rad Jensa Schweikhardta (postoji u) više je opis automatizirane alternative sysinstall , umjesto da ručno gradite vlastiti sistem od nule.

    Linux ne može pokazati takvu unutrašnju harmoniju. I stoga se stalno javlja želja da se nešto promijeni u već instaliranom sistemu, da se sve poboljša, doda, očisti, pa čak i samo ponovo izgradi, a savladava je samo nedostatak vremena.

    Međutim, to ne znači da ja nedvosmisleno smatram da je FreeBSD najbolji sistem za taj posao. Jer moj posao se, između ostalog, sastoji od kreiranja raznih bilješki oko kompjutera. Zapleti koji isporučuju iste nezdrave eksperimente na sistemu koje je Linux tako omiljen - a koje FreeBSD nema.

    Međutim, ponavljam, sve je to čisto subjektivno, jer se ne bave svi sastavljanjem bilješki oko kompjutera. I zato ću pokušati da napravim objektivnije poređenje. Prvi pokušaj objektivizma: "gvožđe"

    Šta je većini korisnika potrebno od operativnog sistema kao takvog? Prije svega, naravno, podrška za hardver, koji, kao što znate, ne pati od monotonije na desktop personalnim računarima.

    Vjeruje se da Linux podržava širi raspon hardvera od FreeBSD-a. Zaista, za ovo drugo nećemo naći, recimo, drajvere za štampač od proizvođača. Potpuna podrška za moderne video kartice ostvaruje se samo ako su iz NVIDIA-e (a i tada su, prema recenzijama, znatno lošije nego za Linux). Vjerovatno će doći do napetosti u ovom OS-u i sa tzv. win – modemi. Ovo je s jedne strane.

    S druge strane, svi donedavni sretni vlasnici ATA RAID i Serial ATA kontrolera u Linuxu morali su pribjeći svakojakim trikovima. Štaviše, to nije uvijek uspješno, posebno ako bi se diskovi priključeni na takve kontrolere trebali koristiti kao uređaji za pokretanje. Zapravo, situacija se može smatrati normalizovanom samo u najnovijim kernelima 2.6.X ...

    U FreeBSD-u, peta grana, manje-više paralelno, na kojoj se nalazi hard disk kontroler IDE porodice: zahvaljujući CAM-u (Common Access Method), s njim će se nekako moći raditi u svakom slučaju, i ako također je ispravno identificiran, tada neće biti prepreka za preuzimanje sa njega. I u 4. grani - nikada nisam naišao na probleme za "istodobne" ATA RAID kontrolere.

    Drugi primjer su zvučne kartice. Svi oni bazirani na manje-više uobičajenim čipovima radili su u FreeBSD-u bez imalo truda (ruke ili misli). Isto se može reći i za "chipset" zvuk. U Linuxu su slični uređaji često zahtijevali ne baš trivijalne manipulacije s ALSA drajverima, budući da su sada ugrađeni u kernel. Međutim, čak iu ovom drugom slučaju ne može se bez nekih radnji prilagođavanja. Ali to je već predmet drugog pokušaja objektivizma.

    A rezultat "gvozdenog" objektivizma, formulirao bih ovako: možda Linux podržava širi spektar svih vrsta opreme (uključujući i neku egzotičnu), ali sav "hardver" koji podržava FreeBSD (a ovo je skoro sve standardno i široko rasprostranjeno "gvožđe"), u većini slučajeva lakše je koristiti. I ovdje glatko prelazimo na drugi uzbudljiv trenutak za korisnika, posebno za početnika (a koji nisu početnici odavno izabrali) trenutak, čiji je naziv Postavljanje

    Dugotrajno (i pažljivo kultivirano) mišljenje da je FreeBSD teže instalirati i konfigurirati od Linuxa ne može se pripisati ničemu drugom do nesporazumu. Jer to nema veze sa realnošću.

    Počnimo s instalacijom. Instalacija FreeBSD-a standardnim sredstvima (pomoću sysinstall uslužnog programa) se izvodi za pola sata, ne zahtijeva neophodan pristup mreži (iako to neće biti suvišno) i kao rezultat daje potpuno funkcionalan sistem sa ćiriličnom konzolom, funkcionalni dial-up (ili, ovisno o situaciji, lokalku), pokrenut od strane X i minimalno potreban za pokretanje praktičnih aktivnosti (iz unaprijed kompajliranih binarnih datoteka). Sve postavke, kako za cijeli sistem tako i za pakete aplikacija, su razumne (iako nisu idealne sa stanovišta određenog korisnika).

    Naravno, instaliranje FreeBSD-a zahtijeva određeno predznanje. Što se svodi na a) ideju particioniranja diska u BSD stilu, nomenklaturu pogona koja je ovdje usvojena i strategiju za kreiranje sistema datoteka. Ne zato što su ovi trenuci tako komplikovani - oni su samo po tome što su veoma različiti od svega što je korisnik mogao ranije da zna (iz iskustva komunikacije sa DOS/Windows ili Linux). Osim toga, particioniranje diska i sistema datoteka na njima je jedina stvar koju korisnik ne može promijeniti nakon instalacije (bez potpune ponovne instalacije, naravno). Međutim, to i nije tako loše: podrazumevani raspored i šema sistema datoteka predložena u sysinstallu je sasvim prikladna za desktop personalni računar, iako nije idealna u nekim posebnim slučajevima.

    Većina instalatera koje poznajem iz različitih Linux distribucija razlikuju se od Free sysinstall u dva suprotna smjera:

    • postoje jednostavniji instalateri - iako je, po mom mišljenju, ovo ista jednostavnost, što je još gore ... znate šta;
    • a postoje instalateri koji su fleksibilniji - ali oni već zahtijevaju od korisnika dovoljno duboko znanje i jasno razumijevanje suštine radnji koje se izvode.

    Uz Free-shny sysinstall instalirao bih (od svih meni poznatih) samo instalater iz Archlinuxa. Napisan pod uticajem prvog, svjedoči njegov developer, pruža gotovo istu kombinaciju jednostavnosti i fleksibilnosti.

    Međutim (a to je već specifičnost Linuxa kao sistemskog integriteta), čak ni u ovom slučaju, kompletan izvediv sistem ne radi na izlazu. Neće biti moguće bez ručnog usavršavanja.

    Naravno, post-instalacijsko podešavanje nije zabranjeno ni u FreeBSD-u. Međutim, ovdje je usmjereno na postizanje ideala, a ne na pružanje osnovne funkcionalnosti. Što bih ilustrovao nizom primjera.

    Počnimo sa istom rusifikacijom. Odmah nakon instaliranja FreeBSD-a, korisnik, po želji, dobija potpuno ćiriliziranu konzolu. Međutim, u jednoj verziji, sa internim kOI8 – R kodiranjem, ulazom u njega i ekranskim izlazom u DOS kodiranju, pa čak i sa ne baš idealnim fontovima. Ali od njega se ne zahtijeva nikakva daljnja radnja oko osnovne rusifikacije. A rasporede i fontove može uskladiti sa svojim idealom i kasnije. U Linux distribucijama, koje baš i ne insistiraju na jednostavnosti korisnika, možda se ne može izbjeći ručno uređivanje nekoliko konfiguracija. Neću se zadržavati na razlozima za to (za one koji zamišljaju razliku između konzole u Linuxu i FreeBSD-u, oni su očigledni).

    Naravno, u korisnički orijentisanim Linux distribucijama domaćeg porekla, korisnik dobija 100% rusifikovanu konzolu iz kutije. Međutim, napravljen je u skladu sa idejama programera. Koji se nikako ne moraju poklapati sa idejama (i, što je najvažnije, potrebama) ovog konkretnog korisnika. I u ovom slučaju, on će morati uložiti mnogo više truda na ispravku nego kada rusificira ispočetka bilo koji distribucijski komplet sa liste zasnovane na izvoru. U prilog tome, prisjetimo se brojnih članaka posvećenih vraćanju u Red Hat (i Fedoreu od strane gospodina Corea) sa "progresivnog" UTF kodiranja na KOI8, doduše, "nezadovoljavajuće" jedno, ali dosta zadovoljavajuće za mnoge, mnogo ...

    Rusifikacija konzole je usko povezana sa stilom init fajlova usvojenih u ovom sistemu. I ovdje linearni BSD stil sa stanovišta korisnika izgleda jednostavnije od pokretanja System V stila usvojenog u Linuxu, zasnovanog na konceptu runlevels, čiji prijevod kao "runlevels" može potpuno zbuniti korisnika početnika.

    Gospodo, administratori industrijskog servera će tvrditi da vam sistem V stil omogućava fleksibilno povezivanje i isključivanje različitih servisa za pokretanje. Neću se raspravljati. Međutim, koliko često se korisnik desktopa suočava s takvim zadatkom? Mnogo češće, njegov cilj je da jednom za svagda ubije brojne servise koje su održavaoci distribucije smatrali vitalnim za njegovu sreću...

    Nije slučajno što mnoge moderne distribucije Linuxa imaju tendenciju da koriste pokretanje u BSD stilu, čiji primjeri, pored klasičnog Slackwarea, i CRUX-a i Gentooa. A u Archlinuxu, koncept nivoa pokretanja generalno gubi svoje značenje, iako se odgovarajuće riječi u datoteci / etc / inittab mogu pronaći, u praksi se nivoi pokretanja uopće ne igraju pri pokretanju sistema. Ali pokušaji implementacije "progresivnog" stila System V u BSD sisteme se ne primjećuju. Nemojte smatrati takvima grupisanje skripti raznih servisa u jednom poddirektorijumu u / etc u FreeBSD 5. grani.

    Što se tiče rusifikacije X - X, kao što znate, postoji i u Africi X. A radnje unosa putanja do datoteka sa ćiriličnim fontovima, ispravljanje rasporeda tastature i podešavanje prebacivanja sa latinice na ćirilicu biće neizbježne, bez obzira na čemu je OS X na vrhu.

    Drugi slučaj je podešavanje zvuka. U FreeBSD-u, ovo zahtijeva (za ogromnu većinu uobičajenih čipova i zvuka čipseta) dodavanje jedne (i iste u svim slučajevima) linije u konfiguraciju kernela i ponovno kompajliranje potonje. Nakon toga možete jednostavno zaboraviti na zvuk - on će raditi bilo kada i bilo gdje.

    Usput, možete učiniti bez ponovnog kompajliranja kernela, modul za zvučnu podršku (kao i skoro svi moduli) je bez greške kompajliran u FreeBSD-u, samo ga trebate ručno učitati ili osigurati da se učita pri pokretanju sistema.

    Na Linuxu: počinjemo s činjenicom da isti audio čipset (i sa postepenim izumiranjem kartica poput SB AWE128, postaje poželjniji za sve korisnike bez tvrdnji o ovisnosti o muzici ili komponovanju), svakako zahtijeva ALSA drajvere. Na sreću, sada su ugrađeni u kernel i u većini distribucija su uključeni u zadane kernele kao moduli. Ako ne, onda ponovno kompajliranje kernela neće biti velika stvar.

    Međutim, stvar nije ograničena na ponovno kompajliranje kernela. Također je potrebno instalirati odgovarajući ALSA-toolkit (i, po pravilu, sredstva njegove kompatibilnosti sa starim zvučnim sistemom OSS), aktivirati odgovarajući demon i, koristeći ne sasvim očigledna sredstva, osigurati njegovo "samoizlječenje" . I nakon svega ovoga, opet se suočite sa iznenađenjima. Na primjer, uz nevoljnost mirnog suživota ALSA-e i umjetnosti (KDE zvučni sistem). Naravno, ljudi bi mogli tvrditi da su to KDE problemi, ali FreeBSD ih uopće nema.

    Usput, o instalaciji alata (i drugih programa)... Za ovo je potreban sistem upravljanja paketima

    Ovdje je do nedavno FreeBSD nesumnjivo držao prednost. Njegov sistem portova pružio je neuporedivu kombinaciju jednostavnosti i fleksibilnosti, uvijek ostavljajući mogućnost pravljenja paketa iz izvora ili instaliranja iz binarnih datoteka. Ne isključujući kombinaciju ovih metoda. Od svih Linux bogatstava u ovoj oblasti, samo Debianov apt, asimiliran u dubinama mnogih distribucija zasnovanih na rpm, mogao bi se usporediti s portovima. Međutim, iako apt pretpostavlja mogućnost izrade vlastitih paketa, glavna metoda za to je korištenje unaprijed kompajliranih binarnih datoteka, sastavljenih u skladu s idejama održavatelja o njihovim ovisnostima.

    Sada se situacija promijenila i u Source Based Linux distribucijama se široko koriste sistemi slični portovima, koji su se razvili pod snažnim utjecajem njihovog FreeBSD prototipa: Gentoo portages, Sorcery from Sorcerer, CRUX portovi, Archlinux Building System iz distributivnog kompleta isto ime fleksibilnost, globalizacija konfiguracije ili transparentnost uređaja, upotreba i modernizacija. Osim toga, tokom decenije njihovog razvoja, FreeBSD portovi su postali veoma glomazna i teško uočljiva struktura, a njihovo ažuriranje je poseban zadatak koji sam po sebi više nije dio osnovnog sistema, već sistema portova).

    I ovdje je prikladno reći nekoliko riječi o još jednoj široko rasprostranjenoj legendi - kao da izgradnja iz izvora pomoću kontrolnih kompleksa nalik portovima uvijek vodi do "čišćeg" (tj. oslobođenog nepotrebnih komponenti) sistema. To nije uvijek slučaj.

    Prvo, u samoj prirodi portova (i njihovih klonova), često postoji neka redundancija u instaliranim komponentama. Primer iz udžbenika je cvs-up, koji zahteva i osnovni sistem i FreeBSD portove za ažuriranje: u binarnom obliku, to je lagani kompaktni paket koji čak ni korisnika ne opterećuje modemskom vezom. Prilikom izgradnje preko portova, povlači distribuciju modula (pošto je na njoj napisana), što nikome neće biti od koristi osim pristašama ovog programskog jezika.

    Ono što me oduvijek iznenađuje u vezi sa FreeBSD portovima je situacija izgradnje mog omiljenog editora Joea. Što je, kao zavisnost, svakako zahtijevalo GNU make verziju 3.80, iako je njegov vlastiti make uključen u FreeBSD distribucije i nije teško kompajlirati s njim koristeći joe ručno.

    Općenito, "čistoća" instalacije paketa vrlo ovisi o specifičnoj implementaciji porta. Nedavno sam u vijestima otkrio poruku o novom upravitelju prozora zvanom edo - malom, kako su rekli, kompaktnom i brzom. Takođe je pronađen u FreeBSD portovima, odakle sam odlučio da ga napravim. Kao rezultat toga, ovaj mali :–) WM je povukao (kao zavisnost) ništa više od MySQL...

    Međutim, ako mislite da je ovakvo ponašanje portova karakteristika FreeBSD-a, a kreatori njihovih klonova Linuxa uzeli su u obzir greške iz prošlosti, uvjeravam vas da to nije uvijek slučaj. Štaviše, u Linuxu je situacija pogoršana posebnostima osnovnog sistema, tačnije nedoslednošću u razvoju njegovih pojedinačnih komponenti.

    Svako ko je ikada kompajlirao Linux od nule zna da neke verzije Base Linux paketa imaju tendenciju da se grade samo sa određenim (nipošto najnovijim) verzijama uslužnih programa kao što su autoconf i automake, odlučno odbijajući da to rade sa svojim drugim verzijama (čak i novijeg i progresivnog).

    Programeri Linux distribucija zasnovanih na izvoru ponekad zaobilaze ovu poteškoću tako što nasilno dodaju takve "ljigave" autoconf i automake pakete iz prošlogodišnjeg punjenja na listu zavisnosti, dok sam osnovni komplet uključuje njihove trenutne verzije. Kao rezultat, na primjer, u Gentoo-u, kada izvodite bootstrapping ili emerge sistem, možete se iznenaditi kada vidite da sistem surfa internetom za bradati, poput Karla Marxa, autoconf, iako je njegova svježa verzija upravo puštena u rad sa faze1 tarball. A ako se setite da mnogi ljudi veruju da se zaista stabilno jezgro Linuxa može izgraditi samo sa gcc verzijom 2.9.X, što rezultira prisustvom dva kompajlera u sistemu, onda o kakvoj "čistoj" verziji možemo još govoriti ?

    Međutim, postizanje razumne ravnoteže između postavljanja prethodno kompajliranih paketa, njihove instalacije sa sistema nalik portu, i samostalnog sastavljanja je potpuno zasebna tema. U međuvremenu bih se usudio da formulišem još par "sočiva":

    • FreeBSD je, suprotno uvriježenom mišljenju, znatno lakši za konfiguraciju i lokalno administriranje. Čak i bez uzimanja u obzir činjenice da je jedan, a da postoji mnogo Linuxa;
    • nasuprot tome, FreeBSD sistem portova trenutno (za razliku od nedavne prošlosti) nema značajne prednosti u odnosu na slične alate iz distribucija Linuxa zasnovanih na izvornom izvoru.

    Ako pažljivo izračunate gore navedene prednosti i nedostatke oba operativna sistema, možete doći do zaključka da je rezultat između njih jednak. Možda sa malom pozicionom prednošću za FreeBSD, ali toliko beznačajnom da je sasvim razumno pristati na remi. Međutim, svaki OS se instalira, konfiguriše i proširuje aplikacijama ne radi sebe, već radi praktične upotrebe. I stoga ih treba razmotriti u poređenju sa njihovim korisničkim kvalitetama

    Ovdje bih se, za početak, usudio da iznesem buntovno, sa stanovišta fanatika bilo kojeg od sistema o kojima se raspravlja, mišljenje (međutim, fanatici će svako mišljenje koje se ne poklapa s njihovim mišljenjem smatrati buntovnim). naime:

    Za grafičke korisnike, mala je razlika između FreeBSD-a i Linuxa.

    Jer takav korisnik većinu svog vremena provodi u X-u i apsolutno mu je svejedno na kom operativnom sistemu ovi X rade. Samo mu se čini da radi u Linuxu ili FreeBSD-u (NetBSD, OpenBSD - usudio bih se proširiti ovu listu). U stvari, radi u KDE-u (Gnome, XFce, WindowMaker - dodajte potrebno). A da nije morao unaprijed instalirati i konfigurirati svoj operativni sistem, imao bi priliku da nikada ne sazna na kojem od POSIX-kompatibilnih sistema radi: imat će iste elemente interfejsa, iste alate za konfiguraciju i aplikacije. ..

    Dakle, u komparativnom aspektu, možemo govoriti samo o radu u konzolnom režimu koristeći sistemske i korisničke uslužne programe osnovnog skupa.

    I ovdje ne mogu a da ne izgovorim odu FreeBSD tekstualnoj konzoli i njenim alatima za upravljanje. Koje uključuju samo dvije naredbe: vidcontrol i kbdcontrol, čija svrha nedvosmisleno slijedi iz imena. I koji vam omogućavaju da konfigurišete apsolutno sve u konzoli - od gustine znakova na ekranu (tzv. rezolucija) do boje ivica koje su različite za svaki virtuelni terminal.

    Korisnik Linuxa prvo mora shvatiti koji se od dva paketa za upravljanje konzolom - kbd ili console-tools - koristi u njegovoj distribuciji. Naravno, sada su gotovo identične u svojim mogućnostima, ali svaka ima svoj skup naredbi s malo drugačijom sintaksom. A neka podešavanja (na primjer, boje teksta i pozadine) zahtijevaju da koristi komande koje nisu uključene ni u jedan od paketa. A nešto (na primjer, iste boje obruba) će mu i dalje ostati nedostupno.

    Isto važi i za osnovne komande oba sistema. FreeBSD Distributions je monolit koji je čvrsto vezan za kernel i uključuje sve što korisniku može biti potrebno da administrira i koristi sistem (a administriranje lokalne radne površine je isto toliko korisnički zadatak kao i obrada teksta ili manipulacija datotekama).

    Naravno, Linux ima isti skup klasičnih Unix uslužnih programa (tačnije, poput FreeBSD-a, njihovih kolega). Međutim, to su upravo raščlanjeni paketi koje je razvio GNU projekat, u suštini nezavisni od operativnog sistema. I već zbog toga nisu tako blisko integrirani s njim i jedni s drugima.

    Dakle, šta je FreeBSD vodeći u režimu konzole? Po mom mišljenju, apsolutno. Ali samo ako govorimo o čisto tekstualnoj konzoli. Ako okrenemo pogled na tzv. grafičku konzolu (implementiranu Frame Bufferom), onda sve izgleda malo drugačije.

    Za početak, FreeBSD grafička konzola (tzv. Raster Mode) je ograničena na jednu rezoluciju od 800x600 (ovdje govorimo o stvarnoj rezoluciji piksela, a ne o gustini karaktera). Čak i tada na nekim čipovima ovaj način rada uopće ne radi, na drugima izgleda prilično gadno. Zapravo, nisam mogao postići normalan rezultat u Raster modu ni na jednoj video kartici koja mi je na raspolaganju.

    U Linuxu je grafička konzola jednostavno ugodna oku. Čak i uz podršku za Frame Buffer za apstraktne VESA kompatibilne kartice, rezolucije mogu varirati od 640x480 do 1280x1024, s dubinom boje koja varira unutar standardnog raspona. To omogućava ne samo udobno gledanje slika, već i vrlo pristojnu (po mom mišljenju - više nego pristojnu) reprodukciju videa. Za kartice sa dobro implementiranim izvornim drajverima u Linux kernelu (Matrox, ATI, čipset video od Intela), ovome se dodaje mogućnost postavljanja nestandardnih rezolucija ekrana.

    Naravno, niko ne koristi konzolu za manipulaciju slikama, a vrlo mali broj za gledanje videa. Zašto pridajem toliki značaj grafičkoj konzoli? Da, jer neprimjetno, ali dolazi era ekrana s tekućim kristalima, koja označava smrt čisto tekstualnog načina rada (ali ne i konzolnog moda kao takvog). Zašto - oni koji su vidjeli standardni tekstualni mod od 80x25 karaktera na 18-inčnom LCD-monitoru sa fizičkom matričnom rezolucijom od 1280x1024, lako će razumjeti. A kako bi to izgledalo na ekranu sa omjerom 16:9, bojim se i zamisliti...

    Na kraju, postoji još jedno pitanje koje je važno za korisnika - o performansama.

    Ideja da je FreeBSD brži od Linuxa je tradicionalna kao i ideja da ga je teže konfigurirati. Međutim, da li je sve tako jasno?

    Prvo, brzina preuzimanja se smatra jednim od glavnih kriterijuma, čija je korelacija sa brzinom izvršavanja aplikacije pomalo sumnjiva. Sjećam se da se od velikog broja operativnih sistema koje sam slučajno vidio u životu, najbrže učitavao MS DOS :-)

    Drugo, čak i ako uzmemo u obzir brzinu pokretanja kao jedan od kriterija performansi, samo je FreeBSD 4. grana superiornija od Linuxa. Peta grana se učitava tačno onoliko dugo koliko i bilo koja Linux distribucija koja koristi sistem datoteka devfs uređaja. Naravno, u plemenitoj Linux porodici možete pokupiti takve predstavnike koji se učitavaju i duže, ali ovo su vrlo jednostavni sistemi, opterećeni ... obiljem start-up usluga (posebno kudzu hardverski autodetektor) .

    Iz mog čisto korisničkog iskustva, rekao bih da razlika u performansama na korisničkim zadacima između Linuxa i FreeBSD-a obično nije organoleptički uočljiva. Uz dva izuzetka, od kojih su prvi operacije sa datotekama.

    Očigledno, na performanse operacija datoteka svakog OS-a utiču dva faktora - implementacija interakcije sa podsistemom diska (za desktop - posebno sa ATA interfejsom) i organizacija podržanih sistema datoteka. I tu je FreeBSD u nepovoljnijem položaju u odnosu na Linux.

    Gore je spomenuto da je zahvaljujući CAM-u u FreeBSD-u (govorimo o 5. grani) postignut univerzalizam u radu sa disk kontrolerima - stekao sam utisak da nije baš briga na kojem kontroleru je disk (ako se samo prepozna od strane BIOS-a - ali ovo je potrebno samo za učitavanje kernela iz njega.) Međutim, morate platiti za univerzalizam. I čini se da se u ovom slučaju obračun dolazi u obliku smanjenja brzine rada diska - iako Nisam našao pouzdane informacije o ovom pitanju, na osnovu opštih razmatranja, izgleda kao istina.

    Ovo je prva strana pitanja. Drugi je FreeBSD sistem datoteka, koji je UFS i (po defaultu u 5. grani) njegova poboljšana nadogradnja UFS2. Tradicionalno, u ovom OS-u, oba se koriste u djelomično sinhronom načinu (noasync mod), kada se promjene metapodataka datoteke odmah zapisuju na disk, a promjene blokova podataka se keširaju u RAM-u.

    Linux usvaja drugačiji model za rad sa ATA diskovima: različiti tipovi kontrolera imaju (ili nemaju) sopstvenu podršku u kernelu. To isključuje upotrebu očigledno nepodržanih uređaja, ali za one podržane, po svemu sudeći, daje bolje performanse. Sistemi datoteka (a Linux podržava nekoliko njih kao izvorne) prema zadanim postavkama svi (osim, moguće, JFS) se koriste u potpuno asinhronom načinu (asinhroni način), kada su i podaci i metapodaci keširani u RAM-u.

    Kao rezultat kombinacije ovih faktora, operacije sa datotekama su znatno brže na Linuxu nego na FreeBSD-u. Zapravo, uvijek sam sumnjao u to, ali to je samo pokazalo koliko je zaostajanje FreeBSD 5. grane u tom pogledu značajno - čak ni mehanizam SoftUpdates, dizajniran da poveća pouzdanost i performanse manipulacije datotekama, ne spašava situaciju. Usput - u FreeBSD 4. grani takvo zaostajanje ranije nije primećeno, što indirektno potvrđuje negativan uticaj rada sa podsistemom diska (pogoršava degradaciju sinhronih operacija) - ne koristi CAM model (barem je bio nije korišten kada sam koristio). Ali u Linuxu sa njegovom isključivo asinhronom upotrebom sistema datoteka, prema mojim zapažanjima, skoro da i nema zavisnosti brzine rada sa fajlovima o performansama hardvera diska.

    Drugi od obećanih izuzetaka odnosi se na zamjene. Koji se na Linuxu i FreeBSD-u izvode znatno drugačije. Da biste saznali šta je dovoljno pogledati izlaz naredbe top u oba operativna sistema sa prosječnim opterećenjem korisnika. U Linuxu možete vidjeti da s dovoljnom količinom RAM-a postotak iskorištenosti swap prostora teži nuli. Na primjer, na mom laptopu sa Linuxom (512 MB memorije) u vrijeme pisanja ovih redova, sa učitanim KDE-om, html editorom Quanta, konsolom, dvije kopije konqueror-a i pokrenutim mplayer-om (reproducira mpeg i RealAudio), swap se ne koristi uopšte. Na desktopu sa FreeBSD-om (1 GB memorije), pod istim opterećenjem, iskorištena swap površina je manje od 10% gotovo nikada ne pada.

    To je zbog činjenice da Linux pribjegava zamjeni samo kada je RAM puna, dok se u FreeBSD-u, u svakom slučaju (čak i sa viškom RAM-a), memorijske stranice kojima se određeno vrijeme nije pristupalo zamjenjuju se u disk. U suštini, RAM u ovom OS-u djeluje kao neka vrsta keš memorije za swap područje (tačnije, za virtualnu memoriju općenito). Što je efikasno s obzirom na ograničenu zapreminu i bilo je opravdano u stara vremena, kada su procesori bili spori, a memorija oskudna. U današnje vrijeme ovaj model korištenja swap-a u nekim situacijama dovodi do usporavanja rada. Primjer je KDE sa velikim brojem desktopa i periodičnim prebacivanjem između njih, gdje je takvo usporavanje vidljivo golim okom.

    Sve ovo vodi ka višim objektivnim (utvrđenim testovima) i posebno subjektivnim performansama Linuxa u odnosu na FreeBSD. Iako moram još jednom naglasiti - govorimo o desktop sferi: na jako opterećenom serveru, FreeBSD mehanizam keširanja može pokazati svoje prednosti, a omjeri brzina između ovih sistema mogu se u nekim slučajevima pokazati upravo suprotnim.

    Na samom početku ovog članka nisam obećao da ću dati nedvosmislen odgovor na pitanje postavljeno u njegovom naslovu. Tačnije, obećao je da neće biti. Zaista, za sebe ne vidim jednoznačan odgovor. Ali dozvoliću sebi da napravim neke obrise za njega.

    Ono što osvaja FreeBSD je a) jednostavnost instalacije, b) logička konfiguracija i c) lakoća administracije na lokalnom nivou. Međutim, iste karakteristike (barem većina njih) sada su karakteristične za najbolje (po mom mišljenju) moderne predstavnike Linux porodice (CRUX i Archlinux, donekle - Gentoo). Iako, iz očiglednih razloga, nije potrebno očekivati ​​od njih unutrašnju harmoniju i integritet FreeBSD-a u bliskoj budućnosti.

    U isto vrijeme, svjestan sam arhaične prirode FreeBSD sistema datoteka, posebno jasno vidljive u poređenju sa modernim implementacijama ReiserFS i XFS za Linux. I skoro mesec dana rada FreeBSD-desktop-a i Linux-laptop-a - mašina sa skoro jednakim nominalnim performansama - odnosno licem u lice, uverava me u brže performanse potonjeg. Ali šta ima veću težinu za korisnika - na svakom je da odluči za sebe. Nažalost, čini se da je Linux trenutno najbolji izbor za desktop korištenje.

    Međutim, želio bih da naglasim - u ovom trenutku, jer bi objavljivanje FreeBSD 5.3 moglo značajno promijeniti situaciju. Međutim, šta god da se desi, voleo bih da budućnost vidim kao međusobni uticaj oba operativna sistema, međusobnu asimilaciju svih pluseva i otklanjanje minusa. Zato bih svoju razvučenu naraciju završio sloganom u duhu sovjetskih vremena:

    Demon sa pingvinom - braća zauvek!

    Uvod

    Pokretanje sistema pada u dvije faze, koje su samo indirektno povezane jedna s drugom - zapravo učitavanje i inicijalizacija.

    Dizanje operativnog sistema znači pokretanje posebnog programa za izvršenje, koji se naziva slika kernela sistema (ili jednostavno kernel). Slika kernela je skoro obična binarna izvršna datoteka. A specifičnost njegovog pokretanja je samo u činjenici da ako se bilo koji drugi program pokreće pod kontrolom bilo kojeg OS-a, čitajući iz sistema datoteka, koji ovaj OS doživljava kao native (native), tada kernel mora pokrenuti kao da sam od sebe , bez ikakvog operativnog sistema (jer to je operativni sistem), i sa medija o kojem sistem ne zna ništa (pošto on sam još nije učitan). Nije slučajno što u engleskoj literaturi postoji općeprihvaćena metafora za proces podizanja pod nazivom bootstrapping, što se jednako alegorijski može prevesti kao "podizanje za pertle na cipelama". I iako ne uspijevaju svi u tome u stvarnom životu, u svijetu POSIX sistema ovaj postupak se provodi redovno - i po pravilu uspješno.

    Slika kernela sistema sadrži sve što vam je potrebno za čisto pokretanje sistema. Međutim, može se izvršiti samo na ovaj način sa medija bez sistema datoteka. I stoga, direktno pokretanje kernela, koliko ja znam, koristi se samo kada se diže sa diskete. Uz uobičajeno pokretanje OS-a sa tvrdog diska, u ovaj posao je uključena i određena vanjska sila - poseban program koji se zove bootloader. Učitava kernel sistema, odgovoran je za otkrivanje hardvera, učitavanje objektnih modula (moduli kernela koji se mogu učitati) i montiranje korijenskog sistema datoteka (samo za čitanje). U međuvremenu, kernel pokreće sistemske (tj. nevezane za izvršne datoteke) procese koji upravljaju virtuelnom memorijom, baferima, memorijskim stranicama itd., sve do swappera, a po završetku - svoj i prvi "normalan" ( koja je povezana sa izvršnom datotekom na disku) init proces (/ sbin / init).

    Nakon toga, sistem init ulazi u igru. Njegova uloga je da kroz odgovarajuće skripte za pokretanje (one su i skripte za inicijalizaciju), omogući montiranje sistema datoteka (i ponovno montiranje root-a u "čitanje/pisanje" modu), pokretanje osnovnih sistemskih usluga ili demona, pozivanje komandi za dobijanje terminala (getty procesi) i autorizacija korisnika (prijava). Kraj pokretanja sistema je označen pozivom na autorizaciju.

    Vizuelno, faze učitavanja i inicijalizacije se razlikuju na ovaj ili onaj način vizuelnog prikaza prikazanih poruka. U DragonFlyBSD-u, na primjer, poruke o napretku pokretanja se prikazuju u radikalno bijelim znakovima, koji se u fazi inicijalizacije zamjenjuju uobičajenom prigušenom bijelom bojom.

    Učitavanje i inicijalizacija je prva stvar koju korisnik vidi u bilo kojem OS-u. Istina, korisnik POSIX-kompatibilnog sistema doživljava takvo zadovoljstvo mnogo rjeđe nego "prozorska daska". Normalan rad kućne Unix mašine je da se ona uključi rano ujutro i isključi kasno uveče. (Istina, svako ima svoje ideje o "ranom" i "kasnom"). A servisna Unix mašina ne bi trebalo da se ugasi zauvek - do potpune fizičke amortizacije. Pa, potreba za ponovnim pokretanjem sistema dok radite u Linuxu ili BSD-u je izuzetno rijetka. Zapravo, tek nakon rekonstrukcije i ponovne instalacije novog kernela (ili premještanja korijenske particije - ali to je generalno izuzetan slučaj) - u svim ostalim slučajevima rekonfiguracije sistema, možete bez toga.

    Dakle, čini se, šta korisnika briga kako se sistem pokreće i koliko dugo traje? Međutim, potrebni su neki koraci za postavljanje obje faze ovog procesa. Jer na startu sistema se ne prikazuje samo početni ekran i, eventualno, meni sa opcijama pokretanja, već se učitavaju i moduli kernela koji odgovaraju dostupnom hardveru, montiraju se sistemi datoteka, pokreću se inicijalizacione skripte, virtuelni terminali su otvorio, i tako dalje i tako dalje. Naravno, od svih ovih radnji, naravno, samo je stvarno učitavanje kernela apsolutno obavezno - ostalo se može izvršiti kasnije. Međutim, zar ne bi bilo bolje da sistem konfigurišete tako da odmah nakon završetka procedure pokretanja dobijete potpuno spreman sistem za upotrebu, nego da ga kasnije ručno dovodite u ovo stanje?

    Osim toga, razumijevanje napretka učitavanja i inicijalizacije neće biti suvišno ako ručno intervenišete u ovom procesu. A potreba za takvom intervencijom - nažalost - s vremena na vrijeme se javlja u vanrednim situacijama...

    Pa hajde da pratimo glavne faze učitavanja i inicijalizacije DragonFly-a i da vidimo šta treba da konfigurišu, kao i gde i kako (i najvažnije - zašto) se mogu mešati u njih.

    O pokretanju i pokretačima

    Razumno je početi proučavati početak sistema od njegove prve faze – odnosno stvarnog opterećenja. Kao što je već spomenuto, ove faze kontrolira poseban program, koji se na ruskom naziva bootloader. iako se na engleskom za to koriste dva termina - loader i boot manager (što su, kako ćemo s vremenom vidjeti, malo različite stvari, ali to sada nije važno).

    U stvari, svaki pokretač pokretanja uključuje dva ili čak tri relativno nezavisna dijela - čak i ako se distribuira kao jedan paket kao što su Lilo ili GRUB. Da bismo se u to uverili, zamislimo kako se mašina pokreće na "gvozdenom", da tako kažem, nivou (znači - lični računar kompatibilan sa Intelom, na drugim arhitekturama je sve malo drugačije).

    Prije svega, nakon uključivanja napajanja, pokreće se program koji se flešuje u ROM (BIOS) računara. Provjerava hardver, nakon čega pronalazi medij instaliran u BIOS Setup-u kao prvi uređaj za pokretanje (tačnije, tvrdi disk), na njemu je prvi fizički blok koji sadrži takozvani Master Boot Record (MBR).

    Sadržaj MBR-a je, prvo, tabela particija diska, te četiri, u jednu od kojih smo prethodno instalirali DragonFly. I drugo – neki kod koji preuzima kontrolu od BIOS-a na kraju svog rada. U standardnom MBR-u - to jest, koji je napisan na "svježe zeznutom" tvrdom disku ili se vraća nakon DOS-naredbe FDISK/mbr - ovaj kod može pronaći samo prvu fizičku particiju diska (primarnu particiju) i kontrolu prijenosa u svoj sektor za pokretanje. Što je sasvim dovoljno za pokretanje operativnih sistema poput DOS-a ili Windows 9X/ME sa prve (ili jedine) particije. Ali očigledno nije dovoljno ni u jednom drugom slučaju - na primjer, ako je na disku instalirano nekoliko operativnih sistema, koji, naravno, ne mogu stati u jednu particiju.

    Stoga, svaki pokretač mora uključiti program napisan u MBR. Budući da je volumen potonjeg samo 512 kbajta (veličina bloka fizičkog diska), od kojih su neke već zauzete particionom tablicom, ovaj program ne može odgovarati posebno bogatim funkcijama. Obično je u stanju da identifikuje sve korišćene primarne particije, navede ih i dozvoli korisniku da odabere particiju za pokretanje, a zatim prenese kontrolu na sektor za pokretanje izabrane particije.

    Kao i MBR, sektor za pokretanje particije (Boot Record nije više Master!) Sadrži informacije o njegovom particioniranju (Disk Label), u zavisnosti od šeme koja se koristi u ovom OS-u, i kontrolni kod koji preuzima od programa napisanog u the MBR. A ovaj kod je drugi dio bootloadera. Istina, njegove mogućnosti također ne mogu biti bogate - na kraju krajeva, veličina sektora za pokretanje particije je istih 512 KB. I stoga, ima samo jednu funkciju - da prenese kontrolu na program koji se nalazi izvan sektora za pokretanje. Koja bi, u stvari, trebalo da identifikuje OS root particiju i sistem datoteka koji nosi, a zatim, direktno ili indirektno, učita njen kernel.

    Lako je pretpostaviti da prve dvije komponente bootloadera, u stvari, nemaju nikakve veze ni sa jednim operativnim sistemom, i da uopće nisu dio sistema datoteka. Ali sa trećim - opcije su moguće. Može biti uključen u hijerarhiju datoteka OS-a za pokretanje, kao što je Lilo, ili može biti nešto poput nezavisnog mini-OS-a, poput GRUB-a (nije slučajno što se toplo preporučuje da ga instalirate na vlastitu particiju diska, što nije montiran prema zadanim postavkama na root bilo kojeg operativnog sistema koji pokreće). A što je s uređajem za pokretanje za našu heroinu - DragonFlyBSD?

    Faze učitavanja

    U ovom OS-u se koristi program za pokretanje sistema, što je zajedničko svim BSD operativnim sistemima. Ima svoje ime, a ime je, začudo, BSD Loader (iako je, kako će malo kasnije postati jasno, ovo pomalo proizvoljno).

    Moram se pokajati - zbog nekoliko godina komunikacije sa FreeBSD-om i povremenog poznanstva sa njegovim sestrama (OpenBSD, pa čak i NetBSD) nekako nisam imao razloga da se bavim njihovim bootloader uređajem. Pa, savršeno učitava izvorni sistem - i odlično (na primjer, FreeBSD). Takođe učitava druge BSD sisteme - još bolje. To što se Linux može pokrenuti bez stresa je općenito tako sjajno. A ono što također može učitati Windows je samo besplatna aplikacija ...

    Kako bih bio u srećnom neznanju, da nekako, u vezi sa instaliranjem FreeBSD-a na Toshiba laptop, ne bih morao malo da kopam sa opcijama BSD Loader-a. A onda se pokazalo da je ovo program sa moćnim interaktivnim mogućnostima, pa čak i sa mogućnošću prilagođavanja. Da ne poredim sa GRUB-om, naravno, ali ako ne eksperimentišete sa brojnim operativnim sistemima na mnogim čvrstim diskovima, funkcije učitavanja su više nego dovoljne. Ono što ću pokušati pokazati u nastavku na primjeru DragonFlyBSD OS-a. Međutim, skoro sve što je rečeno važi za sve ostale BSD sisteme (i za FreeBSD - i bez klauzule "skoro").

    Glavna karakteristika DragonFly boot loadera (iako gotovo sve što je rečeno važi i za sve ostale BSD sisteme - i za FreeBSD i bez rezerve "skoro"), po čemu se razlikuje od Lila i, u manjoj meri, GRUB-a, je da ne prikriva svoju višekomponentnu prirodu, uključujući četiri (skoro) nezavisna programa.

    Prvi dio bootloadera (tzv. boot0) je program napisan tokom instalacije sistema u boot sektor diska sa kojeg se mašina pokreće prema postavkama BIOS-a. Obično je to Master na prvom IDE kanalu (ovdje nećemo govoriti o SCSI diskovima), ali opcije su moguće (na primjer, ako imate hardverski ATA RAID ili dodatne ATA kontrolere). Ovaj program je odgovoran za prvu fazu faze pokretanja, koja čita tabelu primarnih particija diska, prikazuje njihovu listu (ako postoji više od jedne particije), određeni period čekanja da korisnik odabere (podrazumevano, particija odabrana u prethodnoj sesiji će se moći pokrenuti) i nakon toga (ili nakon fiksnog perioda čekanja), prijenos kontrole na kod napisan u sektoru za pokretanje odabrane (ili zadane) particije. Odjeljak se bira pritiskom na tipke F1F4). Ako postoje dva diska, pritiskom na F5 jednostavno će prenijeti kontrolu na sektor za pokretanje drugog od njih - i tamo će događaji teći ovisno o tome šta je u njemu napisano: sam boot0 nije sposoban čitati particije na drugom fizičkom disku.

    Lista particija koje možete izabrati uključuje njihova imena prema identifikatorima tipa sistema datoteka, na primjer:

    F1 DOS F2 Linux F3 BSD F5 pogon 1

    Do nedavno, BSD Loader nije mogao prepoznati logičke particije unutar Extended DOS-a, niti učitati bilo koji operativni sistem sa njih. Međutim, sada se situacija očito promijenila: to se može zaključiti iz poruka o mogućnosti instaliranja DragonFlyBSD-a u prošireni dio (jedini, koliko znam, iz BSD sistema, to može). Da li je moguće zamisliti instalaciju sistema bez mogućnosti učitavanja standardnim sredstvima?

    U principu, prisustvo prvog dijela BSD pokretačkog programa je opciono: može se zamijeniti Linux pokretačkim programom (isti Lilo, koji prenosi kontrolu na BSD slice boot sektor "u lancu") ili multi- sistem GRUB, koji je direktno sposoban za rad sa sistemima datoteka i učitavanje kernela različitih operativnih sistema.

    Drugi dio (boot1) nalazi se u boot sektoru primarne particije koja nosi BSD sistem (BSD slice). To jest, i boot0 i boot1 ne leže samo izvan sistema datoteka, već, u stvari, izvan samog BSD isječka. Treći dio (boot2) već leži unutar isječka, ali nije uključen ni u jednu od njegovih logičkih particija.

    Drugi i treći dio pokretačkog programa su, u suštini, jedan program, podijeljen samo zbog ograničenja veličine sektora za pokretanje particije (512 bajtova). Dakle, zadatak boot1 uključuje samo identifikaciju BSD isječka, pronalaženje boot2 na njemu i prijenos kontrole na njega. I on mora, nakon što je neko vrijeme čekao, identificirati korijenski sistem datoteka, pronaći na njemu i pokrenuti binarnu izvršnu datoteku - /boot/loader, koja čini četvrti dio loadera; striktno govoreći pojam BSD loader odnosi se samo na ovaj program.

    Dakle, možete vidjeti da prva tri dijela BSD pokretačkog programa (boot0, boot1 i boot2) leže izvan sistema datoteka instaliranog BSD OS-a. U kojoj dobijamo tek počevši od pokretanja loadera, regularnu izvršnu datoteku smještenu u poseban direktorij/boot korijenskog sistema datoteka.

    Istina, u direktoriju /boot (ovo je "podrazumevana" lokacija učitavača), zajedno sa njegovom izvršnom datotekom, možete vidjeti i datoteke pod nazivom boot0, boot1 i boot2. Ali oni su samo kopije odgovarajućeg koda koji se nalazi (i radi) izvan BSD sistema datoteka. Njihova svrha je da povrate mogućnost pokretanja nakon hitnih slučajeva.

    Zadatak loader-a je da brzo učita kernel i set zadanih modula, nakon čega prikazuje svoj meni sa logom projekta, na kojem možete prepoznati vretenca (zamjenjujući đavola vilama iz FreeBSD-a). Meni sadrži sljedeće stavke:

    1. Boot DragonFly- normalno učitavanje kernela sa svim stavljenim (ko je i gdje stavio - pričaj unaprijed) modulima, montiranje sistema datoteka i izrada propisanih startup skripti;
    2. Pokrenite DragonFly sa onemogućenim ACPI- ista stvar, samo sa isključenim acpi modulima, što ponekad može biti potrebno na nekim laptopovima;
    3. Pokrenite DragonFly u sigurnom načinu rada- učitavanje u sigurnom načinu rada, odnosno bez povezivanja modula;
    4. Pokrenite DragonFly u modu za jednog korisnika- učitavanje u jednokorisničkom načinu, u kojem se montira samo korijenski sistem datoteka (pa čak i samo za čitanje), a faza inicijalizacije se zanemaruje;
    5. Pokrenite DragonFly sa opširnim evidentiranjem- normalno preuzimanje, ali sa izlazom detaljnih poruka;
    6. Escape to loader prompt- izlaz na komandnu liniju bootloadera;
    7. Ponovo pokreni- Pa ovo znamo kao tri prsta, samo još bolje.

    Ako ne napravite bilo kakav izbor, zadana opcija će se početi učitavati za deset sekundi. Da biste to spriječili (i dobili više vremena za razmišljanje), samo pritisnite Razmaknica- odbrojavanje će se zaustaviti i neće biti preuzimanja do eksplicitnog odabira.

    Nakon odabira ili isteka roka ograničenja, počinje prilično dugotrajan proces identifikacije hardvera tokom kojeg se na ekranu - za razliku od normalnih poruka - prikazuju brojne poruke jezgra u svijetlo bijeloj "boji" simbola. Ove poruke su veoma zanimljive, ali ih nije lako pročitati. Što, međutim, nije zastrašujuće - u budućnosti se mogu pregledati pomoću naredbe dmesg. Nakon toga se montira korijenski sistem datoteka i iz njega (sa uobičajenom izvršnom datotekom / sbin / init) se pokreće init proces, izvršavaju se skripte za pokretanje. U znak sjećanja na to, svijetlo bijela boja poruka kernela mijenja se u uobičajenu sivkastu - faza pokretanja, koja nas trenutno zanima, je završena.

    Interaktivna kontrola procesa utovara

    Postavlja se pitanje - može li korisnik utjecati na proces preuzimanja? Odgovor će biti da. Tokom rada sistema za pokretanje, korisniku se daje sloboda izbora tri puta: odabirom particije za pokretanje u početnoj fazi boot0, odabirom interaktivne kontrole u fazi boot2 i odabirom režima pokretanja neposredno nakon pokretanja loadera. I u svim tim slučajevima korisnik može svojim rukama intervenirati u proces. Zašto? Ovo je drugo pitanje, a odgovor na njega će, nadam se, biti jasan iz narednog izlaganja.

    Sa izborom sekcije za pokretanje, sve je jasno: omogućava vam da pokrenete jedan od OS, ako je nekoliko njih instalirano na datom stroju. Ali u fazi boot2 operacije, možete prekinuti njegovo izvršenje, odnosno izbjeći pokretanje učitavača. Da biste to učinili, u pauzi između izbora pokretanja sa BSD particije i pojavljivanja poruka o učitavanju kernela i modula (ova pauza je označena pojavom trepćućeg simbola _ na ekranu), pritisnite bilo koji taster. Kao odgovor, slijedi upit za obrazac:

    >> BSD / i386 BOOT Default: 0: ad (0, a) / boot / loader boot:

    A u liniji s promptom možete odrediti opciju pokretanja koja nije zadana. Na primjer, možete direktno učitati datoteku slike jezgra sistema. Ovo može imati nekog smisla nakon ponovne izgradnje kernela - ako novi nije dovoljno ispravno konfigurisan za pokretanje (ali - nažalost - dovoljno za kompajliranje).

    Da biste to učinili, morate konstruirati putanju do starog kernela na slici i sličnosti zadane verzije. Odnosno, naznačite:

    • broj diska u automobilu u skladu sa onim što BIOS razume (0 - prvi od gotovine, 1 - drugi, i tako dalje, bez obzira na redosled povezivanja);
    • njegovo sučelje - u primjeru oglas simbolizira ATA disk (za SCSI disk to bi bilo da, za floppy disk bi bilo fd);
    • Broj IDE kanala (0 - master, 1 - slave);
    • particija u smislu koji koristi BSD oznaka, to jest, dio isječka koji je rezervisan za osnovni sistem datoteka BSD (a;
    • staro ime datoteke slike kernela je /kernel.old.

    Ako na disku postoji nekoliko primarnih particija različitih tipova, tada će particije koje nisu BSD biti preskočene, a slovo a (očigledno, slika kernela može biti samo u korijenskom sistemu datoteka) odnosit će se na prvi pododjeljak isječka sa identifikator 165 (čak i ako će biti četvrti).

    Ako ste u nedoumici oko tačnog naziva datoteke (a može ih biti nekoliko - prije instaliranja svakog novog neprovjerenog kernela, preporuča se napraviti kopiju prethodnog, očito izvodljivog), možete unijeti upitnik u liniju s promptom , odgovor na koji će biti lista korijenskog direktorija (ali ne dublje - pregled poddirektorija sadržaja, čak i u istom sistemu datoteka, neće uspjeti pri pokretanju2).

    Međutim, isti postupak - učitavanje starog kernela - može (i trebao bi biti, pošto je mnogo lakši) da se izvede kroz loader, a sada prelazimo na razmatranje njegovih interaktivnih mogućnosti.

    Meni loader nudi dovoljan izbor režima za standardne situacije, ali očigledno ne pokriva sve nestandardne (zato i jesu). Konkretno, opcija za pokretanje starog kernela nije data u meniju. Srećom, pretposljednja stavka menija rješava ovaj problem (i mnoge druge zajedno s njim).

    Dakle, odabirom šeste stavke menija - Escape to loader prompt, - nalazimo se u okruženju naredbe interpreter loader 'a. Ima interfejs sličan ljusci - komande sa njihovim opcijama i argumentima se unose nakon prompta koji izgleda kao

    Sa stanovišta pogodnosti interaktivnog rada - ne GRUB, naravno: ni automatsko dovršavanje ni istorija komandi, mogućnosti uređivanja su ograničene ključem Backspace... Ali sa svojom glavnom ulogom - unosom i izvršavanjem ugrađenih komandi - loader se prilično dobro nosi.

    Štaviše, ima dosta ovih naredbi: potpuna lista njih se može dobiti unošenjem upitnika u komandnu liniju. Pomoć je također dostupna - naredba za pomoć će dati kratak savjet, pomoć command_name - detaljnije informacije o korištenju naredbe-argumenta. Međutim, sintaksa naredbe je također slična ljusci, tako da ne bi trebalo biti nikakvih poteškoća s tim.

    Ugrađene komande učitavača mogu se podijeliti u tri dijela prema njihovoj namjeni:

    • dobiti informacije;
    • da konfigurišete bootloader;
    • zapravo za kontrolu procesa pokretanja.

    Od prve grupe naredbi, obratite pažnju na sljedeće: ls, lsdev, lsmod, show, više. Prvi je namijenjen pregledu korijenskog sistema datoteka i njegovih poddirektorija, međutim, samo onih koji ne leže u posebnim pododjeljcima. Ali pošto se svi fajlovi potrebni za učitavanje nalaze u poddirektorijumima samog root (u /boot, /dev, / modules), ovo ograničenje nije značajno. Opcija naredbe ls -l navodi datoteke (i direktorije) s njihovom veličinom - bez ove opcije, direktoriji su označeni samo sa d.

    Naredba lsdev navodi disk uređaje na stroju, njihove primarne particije i potključeve (ovi posljednji su samo za particije označene prema pravilima BSD oznake). Opcija -v daje opsežan izlaz.

    Komanda lsmod prikazuje module koje je učitan učitavač prije nego što se pojavi meni (ili komandna linija). Kao iu prethodnom slučaju, postoji opcija opširnosti - -v.

    Naredba show obavlja sličnu funkciju, ali za varijable pokretača. Dato bez argumenta, ispisuje vrijednosti za sve definirane varijable. Ako navedete ime varijable kao argument, tada će biti prikazana samo njena vrijednost. Dozvoljeno je više argumenata, odvojenih tačkom i zarezom.

    Pa, more radi istu stvar kao njen imenjak za Unix uslužni program. Omogućava vam da vidite sadržaj tekstualne datoteke - to jest, budući da smo u ljusci za učitavanje, možemo se upoznati sa konfiguracijama koje su važne za učitavanje (i bilo koje druge).

    Konfiguracijske naredbe vam omogućavaju da definirate ili uklonite varijable pokretačkog programa, učitate ili uklonite module kernela. Kao što je već pomenuto, sam kernel sa određenim unapred definisanim skupom modula i varijabli se učitava pre menija učitavača i njegovog interpretatora komandi. Dakle, uz pomoć odgovarajućih naredbi, ovi predefinirani skupovi se mogu malo prilagoditi (ili potpuno promijeniti). Ovo može biti neophodno ako se podrazumevana konfiguracija kernela ne učita iz nekog razloga (čest slučaj je sukob između sistema za uštedu energije notebook računara i ACPI sistemskih modula), u svrhu otklanjanja grešaka ili samo da bi se zadovoljila radoznalost.

    Pogledajmo prvo komande za upravljanje modulima. Ovo je par naredbi za učitavanje i uklanjanje modula za učitavanje i uklanjanje modula. Prvi se koristi sa argumentom ime_modula, koji se, ako je potrebno, može špijunirati (koristeći ls) u / modules direktorijumu - ime u argumentu se daje bez sufiksa * .ko. Naredba unload sa istim argumentom će ukloniti navedeni modul, bez argumenata - uklonit će sve module u potpunosti, omogućavajući vam da počnete od nule u konfiguraciji.

    Naredbe load i unload također se odnose na jezgro u cjelini. Dakle, preko komande

    OK unload kernel

    možete isprazniti zadani kernel iz memorije (na primjer, ako se ispostavilo da nije operativan) i pomoću naredbe

    OK učitaj kernel.old

    učitajte stari, radni kernel.

    Par sličnih namjena - set i unset - takođe postoji za varijable okruženja pokretačkog programa. Ove varijable se koriste za promjenu trenutnog diska, specificiranje lokacije korijenskog sistema datoteka, definiranje staza do modula kernela koji nisu zadani / moduli i slično. Ovo se radi pomoću naredbe set u skladu sa sintaksom C-ljuske, na primjer:

    OK set currdev = "disk1s1a"

    Određuje trenutni disk uređaj u smislu "drive # _slice # _section".

    Za jednu varijablu je dozvoljeno nekoliko vrijednosti - one su odvojene tačkom i zarezom. Na primjer,

    OK set module_path = "/; / modules; mymodule_path"

    definira lokaciju modula kernela - root, default modules direktorij i / mymodule_path direktorij: očito je da ako jednostavno definirate putanju do vlastitih modula u ovoj varijabli, informacije o lokaciji zadanih modula će biti izgubljene . Skrećem vam pažnju na prisustvo vrijednosti / u definiciji varijable - ova staza je potrebna za učitavanje kernela pomoću naredbe load (u DragonFlyBSD, kernel je instaliran u korijenskom direktoriju po defaultu).

    Neke varijable jednostavno omogućavaju ili onemogućuju neke radnje i, shodno tome, njihove logičke vrijednosti - DA ili NE. Naravno, potrebne su im granularne varijable da definišu šta im je dozvoljeno. Na primjer, varijabla

    OK set userconfig_script_load = "DA"

    dozvoljava samo izvršavanje skripti prilagođene konfiguracije i varijable

    OK set userconfig_script_name = "/boot / my.conf"

    određuje koji scenario treba primijeniti u ovom slučaju.

    Koristeći varijable, također možete definirati načine pokretanja. Na primjer, nakon postavljanja varijable

    OK postavi boot_single

    Definicija varijable može se poništiti naredbom

    Poništi ime_varijable

    U nekim slučajevima, njegov ekvivalent bi bio da se definiše promenljiva sa logičkom vrednošću NO ili reč disable u imenu.

    Kompletan spisak ugrađenih varijabli okruženja bootloadera može se naći na odgovarajućoj man stranici:

    $ man 8 utovarivač

    I na kraju, komande za kontrolu preuzimanja. Najvažniji od njih je boot, koji, bez opcija i argumenata, uzrokuje da se kernel odmah pokrene u svojoj zadanoj ili trenutnoj (tj. sa nadjačanim varijablama i modulima) konfiguraciji. / p>

    Opcije komande za pokretanje određuju način pokretanja. Na primjer, naredba

    OK boot -s

    će uzrokovati dizanje u jednom korisničkom modu. Ovo je ekvivalentno pokretanju iste naredbe bez opcija, nakon što je prethodno postavljena varijabla boot_single.

    Argumenti naredbe za pokretanje mogu specificirati ime slike kernela, izvršnu skriptu za pokretanje i tako dalje. Isti sakramentalni primjer: zapovijest

    OK boot kernel.old

    će pokrenuti stari kernel, slično naredbi za pokretanje bez opcija nakon što se par izvrši

    OK unload kernel OK load kernel.old

    Ipak, prvi tim ovog para ipak neće škoditi - da bi se izbjeglo... Pogotovo ako se novo jezgro skupilo prilično krivo.

    Ovdje nisu opisane sve karakteristike interaktivnog moda BSD loadera - samo one koje sam slučajno koristio. Detaljnije informacije možete pronaći ne samo u man (8) loaderu, već i čitanjem datoteke pomoći direktno:

    $ manje /boot/loader.help

    I to uopće nije potrebno u procesu upravljanja preuzimanjem - bolje je to učiniti unaprijed.

    Konfigurisanje pokretača

    Korisnik koji je uspio ući u duh Unix Way-a (ili ga je barem osjetio) ima pravo pitati: ako se u proces pokretanja može intervenirati interaktivno, da li je moguće jednom zauvijek popraviti ručno definirane parametre ? A odgovor će mu biti: pa, naravno, možete.

    Intuitivno je jasno da budući da je intervencija korisnika moguća u prvoj (boot0) i posljednjoj (loader) fazi pokretanja, oni su ti koji se mogu prilagoditi. I tako ispada.

    Istina, u prvoj fazi preuzimanja nema toliko toga što možete konfigurirati, naime:

    • promijenite vrijeme čekanja za odabir sekcije (podrazumevano je jednako čudnoj cifri od 18,2 sekunde - to kaže dokumentacija);
    • popravi jednu od particija kao zadanu za pokretanje - bez ovoga, kao što je već pomenuto, podrazumevana je particija izabrana pri prethodnom pokretanju mašine;
    • još neke sitnice koje nemaju praktičan značaj.

    Naredba boot0cfg služi u ove svrhe. Vrijedi zapamtiti samo da je njegova upotreba povezana s promjenom glavnog pokretačkog zapisa (MBR), čije uništavanje onemogućuje pokretanje stroja s diska. Verovatnoća da se MBR zezne ovom komandom je izuzetno mala i nema strašnih posledica. Međutim (Bog čuva one o kojima se brine) - bolje je držati DFBSD instalacioni disk pri ruci. Ne da ponovo instalirate sistem, naravno, već da vratite boot record - ovo je velika disketa za spašavanje. A kako - bit će tema sljedećeg članka u ciklusu.

    Dakle, možete promijeniti vrijeme čekanja koristeći opciju -t #, gdje je # vrijednost u sekundama (nula vrijednost nije dozvoljena). Koristeći opciju -s #, jedna određena particija diska se po defaultu čini zauvek mogućom za pokretanje (a ne ona sa koje je pokrenuta kada je mašina poslednji put uključena). Očigledno, vrijednosti 1-4 su ovdje prihvatljive (prema broju mogućih primarnih particija) plus 5 - prijenos kontrole na MBR drugog diska. A opcija -v će nam dati detaljnije informacije o rezultatima izvršene operacije. I, naravno, potreban je argument - ime disk uređaja čiji MBR mijenjamo. Odnosno, komanda

    $ boot0cfg -t 30 -s 2 -v -f /boot/boot0.old ad0

    modifikuje MBR prvog IDE diska (argument ad0) tako da će njegova 2. isečka postati podrazumevano pokretanje, vreme za izbor particije će se povećati na 30 sekundi, a rezultate svog rada će izvesti u obliku nečega poput sljedeće:

    # oznaka početak chs tip kraj chs veličina pomaka 1 0x00 0: 1: 1 0x83 850: 254: 63 63 13671252 2 0x80 851: 0: 1 0xa5 261: 254: 613 261: = 254: 713 15 verzija = 2536: 713 15 0 x 71315 verzija 30 opcija = paket, noupdate, nosetdrv default_selection = F2 (Slice 2)

    Oh da, opcija -f će kreirati kopiju trenutnog zapisa za pokretanje u /boot direktorijumu; Istina, datoteka /boot/boot0 je kopija MBR-a svježe instaliranog sistema, ali - za osiguranje, još jedno duplo neće škoditi.

    Obratimo pažnju na opciju noupdate u konačnom izlazu naredbe: to je ta opcija koja popravlja jedan od rezova kao što je učitano po defaultu. Ako vam se iz nekog razloga ne sviđa ova pozicija, lako je promijeniti ponavljanjem naredbe u ovom obliku:

    $ $ boot0cfg -o ažuriranje oglasa0

    Pa, značenje drugih opcija (i drugih načina korišćenja komande) može se razjasniti sa tetom Mani: man (8) boot0cfg.

    Dakle, došli smo do postavljanja samog utovarivača. Jednom sam spomenuo da pre nego što se pojavi meni i mogućnost prelaska u interaktivni režim, kernel već uspeva da se pokrene sa određenim skupom parametara, i obećao sam da će reći gde i ko postavlja ove parametre. Vrijeme je da održi obećanje.

    Dakle, parametri pokretanja kernela su postavljeni skriptom za inicijalizaciju pokretača - /boot/loader.rc. Zapravo, ovo je vrsta batch datoteke iz koje se poziva nekoliko zasebnih skripti, ali za nas to sada nije bitno. I ono što je važno je da su zadane varijable okruženja loadera i njihove vrijednosti postavljene u uparenoj konfiguracijskoj skripti - /boot/defaults/loader.conf datoteci. Opisuje putanje za traženje modula, podrazumevano ime kernela, trenutni disk uređaj i root fajl sistem, kao i kašnjenje pre učitavanja - sve što se može navesti kao varijable okruženja interaktivno. Takođe sadrži listu svih vrsta modula kernela (općenito govoreći, sve moguće) i pokazuje da li treba da se učitavaju automatski pri pokretanju ili ne.

    Sam po sebi, /boot/defaults/loader.conf nije namijenjen za uređivanje, već samo prikazuje sve moguće parametre pokretanja i popravlja njihove zadane vrijednosti. I stoga, stvarna svrha konfigurisanja loadera nije on, već datoteka /boot/loader.conf.

    Međutim, odmah nakon instaliranja sistema nećemo vidjeti takav fajl u sistemu. Morate ga sami kreirati, prenijeti potrebne opcije iz datoteke /boot/default/loader.conf i u skladu s tim promijeniti njihove vrijednosti.

    U postavljanju bilo kog sistema obično je lakše pokazati kako se to radi nego pričati o tome. I zato ću dati svoj /boot/loader.conf kao primjer sa nekim komentarima. Ja sam jednostavna osoba, ne sklona ekscesima, pa mi je ovaj fajl jako mali.

    Autoboot_delay = "5" # Vrijeme čekanja prije automatskog učitavanja beastie_disable = "DA" # Otkazivanje prikaza menija bootloadera usb_load = "DA" # Učitavanje modula podrške USB magistrale ugen_load = "DA" # Učitavanje podrške za USB uređaj općenito ums_load = "DA " # Učitavanje podrške za USB miš # Ove linije su potrebne ako odgovarajuće funkcije # nisu tvrdo kodirane snd_pcm_load = "YES" # Učitajte modul podrške za zvuk snd_ich_load = "DA" # Učitajte modul zvučnog uređaja # U primjeru - audio čipset od Intela ICH #

    Dodatno, ovdje možete omogućiti učitavanje modula čuvara zaslona općenito i, nakon toga, određenog modula (odgovarajuće datoteke se nalaze u direktoriju / modules i imaju oblik * _saver.ko):

    Vesa_load = "DA" screensave_load = "DA" screensave_name = "fire_saver"

    Takođe možete prenijeti svoju vlastitu splash sliku (o kreiranju koje, u * .bmp ili * .pcx formatu, i njenom postavljanju u /boot direktorij treba se pobrinuti unaprijed):

    Splash_bmp_load = "DA" bitmap_load = "DA" bitmap_name = "ime datoteke.bmp"

    Obratimo pažnju na liniju vesa_load, koja učitava modul podrške istoimenog moda u konzolu: potreban je za neke, grafičke, screensavere (na primjer, "plamen" prikazan u primjeru) i, za naravno, splash slike. Međutim, VESA podrška može biti ugrađena u kernel (pogledajte ciklus).

    Navedeni primjer ne iscrpljuje mogućnosti za rekonfiguraciju pokretača - druge mogućnosti možete pronaći ako pogledate datoteku /boot/defaults/loader.conf. Samo trebate imati na umu da neke funkcije koje pružaju moduli koji se mogu učitati mogu već biti kompajlirani u kernel - zadano ili kompajlirani vlastitim rukama - i da ih ne morate duplicirati. Stoga je dobra ideja provjeriti svoju trenutnu konfiguraciju kernela prije uređivanja /boot/loader.rc. Za svježe instaliran sistem opisan je u datoteci /usr / src / sys / i386 / conf / GENERIC, a za samo-sastavljeni ... međutim, ako ste već kompajlirali kernel, onda znate bolje od ime njegove konfiguracijske datoteke i ono što je napisano u njoj.

    Dozvolite mi da kažem samo nekoliko riječi o modulima podrške sistemu datoteka. Očigledno, nema smisla graditi podršku za one od njih koji se koriste samo povremeno (kao što je msdos) u kernel: u ovom slučaju, za sve njih (uključujući ext2fs), moduli koji se mogu učitati bit će kompajlirani prema zadanim postavkama prilikom kompajliranja kernel. Međutim, nema potrebe za učitavanjem ovih modula pri pokretanju (iako postoje odgovarajući redovi u datoteci /boot / defaults). Prilikom pristupa uređaju sa stranim sistemom datoteka, potrebni modul će se automatski učitati. Isto važi i za module podrške za uređaje kao što su diskovi u RAM-u (md - Memory Disk), osim ako, naravno, sistem ne treba da krene od njih.

    Ali to se ne dešava sa zvučnim uređajima. I stoga, ako je lijeno učitavati odgovarajuće module svaki put prije slušanja muzike (gledajući unaprijed, napominjem da se to radi naredbom kldload module_name), onda je bolje propisati da se automatski učitavaju pri pokretanju sistema, kao što je urađeno u primjeru.

    Lako je pronaći module koji su vam potrebni - oni sadrže komponentu snd u svom nazivu. Odnosno, možete pribjeći naredbi poput

    $ ls / moduli | grep snd

    i izaberite odgovarajuće realnosti sa izlazne liste. Istovremeno, za mnoge nekada rasprostranjene zvučne kartice na PCI magistrali dovoljan je snd_pcm modul.

    U gornjem primjeru, učitavač menija je otkazan. Ovaj meni je opisan u datoteci /boot/beastie.4th, čija je upotreba propisana u datoteci /boot/loader.rc linijom

    Uključuje /boot/beastie.4th

    Naravno, to nije neophodno. Alternativno, možete prepraviti /boot/beastie.4th tako da pojedinačne stavke menija odgovaraju njihovim vlastitim opcijama pokretanja - na primjer, sa različitim skupovima dodataka, za koje ćete morati kreirati nekoliko alternativnih konfiguracijskih datoteka za učitavač. Ili - slike kernela kompajlirane sa raznim opcijama. A ako znate i da vezete (izvinite, crtajte ASCII simbolima), onda vilin konjic koji ukrašava meni možete zamijeniti nečim svojim.

    Zadaci inicijalizacije

    Pretpostavimo, međutim, da je na ovaj ili onaj način učitavanje kernela i cjelokupne ekonomije koja ga prati uspješno završeno. Ovdje dolazi do izražaja glavni kalibar svakog POSIX sistema - proces init. Ovo je prvi (bukvalno i figurativno - u BSD sistemima, njegov identifikator je jednak jedan) korisnički (tj. rad u korisničkom prostoru kernela, userland), proces, a pokreće se izvršavanjem istoimene datoteke /sbin / u tome.

    U stvarnosti, to mogu biti (i zaista postoje u različitim sistemima) veoma različiti programi. Štaviše, može se nadjačati interaktivnom kontrolom procesa pokretanja sa drugim programom, kao što je komandna ljuska. Međutim, to sada nije mnogo važno - razmotrićemo samo redovne zadatke programa /sbin / init.

    Prvi od ovih zadataka, iu smislu vremena izvođenja i vrijednosti, je provjeriti integritet dostupnih sistema datoteka. Da bi se to postiglo, svaki od njih se provjerava na prisustvo bita "čisti bajt", koji se automatski postavlja tokom ispravnog završetka prethodne sesije. Ako se takav bit nađe na svakom sistemu datoteka - sve je u redu, stvari idu dalje. Ako ne, moguće su opcije o kojima će biti riječi u sljedećem članku.

    Treba napomenuti da sam po sebi "clean unmount bit" ne garantuje sigurnost sistema datoteka, a posebno njegovih podataka. To samo pokazuje da je sistem datoteka ispravno isključen u prethodnoj sesiji. U ovom slučaju, init čini razumnu pretpostavku da su metapodaci i podaci u redu i prelazi na sljedeći zadatak.

    I sljedeći zadatak init procesa je da pozove i izvrši init skripte, ili startup skripte, sakupljene u / etc direktoriju i (ili) njegovim poddirektorijumima. Ovo su redovne shell skripte dizajnirane da ih izvršava standardna POSIX ljuska i uključuju sekvence komandi za montiranje sistema datoteka, aktiviranje swap područja, postavljanje sistemskog sata i pokretanje određenih servisa i demona.

    Naredbe koje formiraju skripte za pokretanje dobivaju svoje opcije, njihove vrijednosti i argumente iz posebnih konfiguracijskih datoteka, koje također imaju svoju lokaciju u / etc i njegovim poddirektorijumima. Konfiguracijske datoteke (ili jednostavno konfiguracije) su ili jednostavne baze podataka opcija i argumenata naredbi, ili liste imena varijabli (koje odgovaraju opcijama komandi koje se koriste u skriptama) sa vrijednostima koje su im dodijeljene. Konfiguracije od skripti se lako razlikuju kada se gleda u / etc direktorij po odsustvu prvih bitova izvršavanja.

    Konačno, treći neophodan zadatak init procesa - takozvano preuzimanje terminala (pokretanje getty procesa), postavljanje njegovih svojstava i priprema za autorizaciju - zamjenjuje se procesom prijave. Izvršenje ove procedure je također određeno parametrima iz odgovarajuće konfiguracijske datoteke.

    Sekvencijalno odvajanje skripti za pokretanje i njihovih konfiguracijskih datoteka jedan je od kamena temeljaca konfiguracije na nivou cijelog sistema. U stvari, tokom normalnog toka podešavanja, korisnik praktički ne mora ni da se upozna sa sadržajem skripti (iako to nije štetno), niti, još manje, da menja bilo šta u njima (potonje je dozvoljeno samo ako ovaj korisnik sa sigurnošću zna šta zna, inače se sistem može lako dovesti u neoperativno stanje). Ali ne samo da je moguće, već je i potrebno promijeniti vrijednosti parametara konfiguracijskih datoteka - naravno, takva dozvola ne oslobađa korisnika od razumijevanja značenja njihovih radnji.

    Razumijevanje ovoga, međutim, otežava činjenica da se i init skripte i njihove konfiguracijske datoteke vrlo različito implementiraju u različitim operativnim sistemima i njihovim distribucijama. Međutim, ova raznolikost se može svesti na dva stila - BSD, čije su sve varijacije na temu vrlo slične jedna drugoj, i System V, čiji je svaki predstavnik originalan na svoj način. Prvi stil pokretanja koristi se u operativnim sistemima istoimene porodice. Sistem V stil prevladava u najčešćim Linux distribucijama. Iako u posljednje vrijeme, mnogi od njih (CRUX, Archlinux, Gentoo) sve više koriste sheme inicijacije slične BSD-u.

    Inicijalizacija DragonFly-a

    U DragonFly-u je učitavanje u BSD stilu prihvaćeno kako bi trebalo biti za predstavnika BSD porodice. Njegova glavna razlika od System V stila je odsustvo koncepta nivoa pokreta (koji se često netačno prevodi kao nivoa opterećenja ili čak nivoi okidača). Umjesto toga, postoji koncept načina pokretanja, kojih postoje samo dva - jednokorisnički i višekorisnički.

    U režimu za jednog korisnika, učitavanje se događa a) kada odaberete odgovarajuću stavku ( Pokrenite u modu za jednog korisnika) u bootloader meniju, b) kada navedete komandu boot -s u komandnoj liniji pokretača (nakon odabira njegove stavke menija Escape to loader prompt), i c) ako se otkriju ozbiljne (automatski nepopravljive) povrede integriteta sistema datoteka tokom njegove provjere u prvoj fazi inicijalizacije).

    Prilikom učitavanja u režimu za jednog korisnika, stanje nakon izvršenja učitavača je zapravo sačuvano. Odnosno, nema montiranja sistema datoteka (sa izuzetkom root-a, iz kojeg je jezgro prethodno učitano - pa čak i on je montiran u modu samo za čitanje), nema skripti za pokretanje, nema aktivacije virtuelnih terminala, nema poziva ovlastiti korisnike. Aktivira se samo prva, sistemska, konzola sa automatskom, podrazumevano, bez lozinke, registracijom superkorisnika na njoj.

    Očigledno, normalan rad u režimu za jednog korisnika je nemoguć - namijenjen je hitnim operacijama oporavka nakon kvarova i nekih sistemskih manipulacija. Za svakodnevne radnje namijenjen je normalni multiplayer mod.

    Prilikom dizanja u višekorisničkom režimu (a to se podrazumevano izvodi kada se mašina uključi ili ponovo pokrene), sve faze inicijacije su završene u potpunosti: nakon provere se montiraju sistemi datoteka namenjeni za to (i root fajl sistema se popravlja u režimu čitanja/pisanja), aktiviraju se određene početne skripte (videćemo gde i od koga - videćemo uskoro), i svi unapred definisani virtuelni terminali (o kojima će takođe biti reči kasnije) se aktiviraju sa pozivima za autorizacija. Autorizacija je moguća i za administratora i za svakog korisnika, ali morate zaboraviti na prijavu bez lozinke. Ukratko, odvija se normalan civilizovan rad...

    Ne postoji nepremostivi jaz između jednokorisničkih i višekorisničkih načina rada: prijelaz iz jednog načina rada u drugi moguć je ne samo pri ponovnom pokretanju stroja, već i tokom jedne sesije. Da biste odmah prešli na jednokorisnički način rada, koristite naredbu

    $ isključite sada

    Povratak u režim za više igrača se dešava naredbom

    Ova metoda se široko koristi za ponovno pokretanje sistema bez potpunog ponovnog pokretanja nakon promjene bilo kakvih konfiguracijskih parametara - odvija se mnogo brže od potpunog ponovnog pokretanja. Samo treba da zapamtite da nisu sve usluge i demoni potrebni da rade ispravno. Na primjer, demon konzolnog miša odbija poslužiti.

    Dizanje u višekorisničkom modu - a to je karakteristična karakteristika BSD stila - potencijalno podrazumijeva dostupnost apsolutno svih sistemskih usluga i demona za pokretanje: skripte koje ih inicijaliziraju (nalaze se u direktoriju /etc/rc.d) mogu teoretski se pokreće iz glavne skripte za pokretanje - datoteke / etc / rc. Ali koji će od njih zapravo biti pokrenut, određuju opcije njegove konfiguracijske datoteke - /etc/rc.conf. Prisustvo nekoliko glavne skripte za pokretanje i njene konfiguracijske datoteke je druga karakteristika DragonFly-a (i općenito BSD stil pokretanja).

    Kada je DragonFly instaliran, zadani /etc/rc.conf se upisuje u / etc direktorij na disku, čiji redovi izgledaju kao

    Servicename_enable = "vrijednost"

    Varijabla = "vrijednost"

    Vrijednost nizova prve vrste = "DA" ili "NE". Lako je pretpostaviti da dozvoljavaju (ili odbijaju) pokretanje imenovanog servisa pomoću odgovarajuće (i, po pravilu, istoimene) skripte iz /etc/rc.d direktorija. Vrijednosti nizova druge vrste su parametri proslijeđeni naredbama uključenim u skripte za inicijalizaciju.

    Podrazumevano, DragonFly - a to je takođe tradicija BSD sistema - u /etc/rc.conf datoteci je dozvoljeno da pokrene samo minimalni broj sistemskih usluga neophodnih za početak. Većina njih je obično zabranjena - ili eksplicitno, navođenjem vrijednosti "NE", ili po defaultu (a odakle ove zadane postavke - vidjet ćemo sada). Dakle, omogućavanje demona neophodnih korisniku (na primjer, istog konzolnog miša) je posao samog korisnika.

    Početne podrazumevane vrednosti su preuzete iz /etc/defaults/rc.conf datoteke, koja opisuje sve moguće (i sve moguće) servise za pokretanje i njihove parametre (zapamtite - videli smo sličan par podrazumevanih i radnih konfiguracija za program za učitavanje). Ova datoteka nije namijenjena za direktno uređivanje (iako nije zabranjena svojim atributima pristupa). Umjesto toga, trebalo bi u njemu pronaći linije koje se odnose na tražene servise, prenijeti ih u /etc/rc.conf i omogućiti im pokretanje (ili, naprotiv, odbiti ih, ako je to po defaultu dozvoljeno, ali u ovom u slučaju da nije potrebno). Opcije koje se kvalifikuju za uslugu su takođe preuzete iz /etc/defaults/rc.conf, prenete u /etc/rc.conf i dodeljene im željene vrednosti.

    U principu, to se radi, na primjer, ovako: u jednoj virtuelnoj konzoli (na kojoj se morate registrovati kao root ili dobiti njena prava komandom su) otvara se datoteka /etc/rc.conf u uređivaču teksta, u drugom (možete se prijaviti kao običan korisnik) daje komandu poput

    $ manje /etc/defaults/rc.conf

    A potrebne linije iz potonjeg jednostavno se prenose u prvi, gdje se modificiraju prema potrebi. Nije štetno koristiti treću korisničku konzolu za čitanje man (5) rc.conf.

    Kako se sve to dešava u praksi lakše je razmotriti uz nekoliko primjera. U članku o instaliranju DragonFly-a je pokazano da je za konfiguraciju konzolnog miša sa USB sučeljem dovoljno aktivirati demon odgovarajućih uređaja unosom linije u /etc/rc.conf fajl

    Usbd_enable = "DA"

    Međutim, za sve ostale tipove miševa potrebno je definirati niz drugih varijabli. Koje nije teško odrediti. Idemo do prethodno otvorene datoteke /etc/defaults/rc.conf i tražimo u njoj linije vezane za miša - u ovom slučaju je zgodno koristiti naredbu kao što je

    $ grep mouse defaults / rc.conf

    - i pogledajte izlaz rezultata pretraživanja:

    Moused_enable = "NE" # Pokreni demona miša. moused_type = "auto" # Pogledajte man stranicu za rc.conf (5) za dostupna # podešavanja. moused_port = "/ dev / psm0" # Postavite na port vašeg miša. moused_flags = "" # Bilo koje dodatne zastavice za moused. mousechar_start = "NE" # ako je 0xd0-0xd3 podrazumevani opseg zauzet u vašem # startu kao mousechar_start = 3, pogledajte vidcontrol (1)

    Iz čega, zapravo, postaju očigledne dalje radnje. Prvo, demonu miša treba dozvoliti da se pokrene - za koji se linija dodaje u /etc/rc.conf

    Moused_enable = "DA"

    Naredba / usr / sbin / moused (a možete omogućiti podršku miša iz komandne linije, ali samo u ovoj sesiji - o tome će biti riječi malo kasnije) općenito zahtijeva dvije opcije - specificiranje protokola (ovo je opisano u moused_type linija) i priključni port (serijski, PS/2, USB - bus miševi su najvjerovatnije van upotrebe). Kada se opisuje protokol, red

    Moused_type = "automatski"

    pogodan za sve, koliko ja znam, moderne glodare sa PS/2 konektorima, iako se može tačno odrediti - ps/2. Ali za serijske (a još više sabirne) miševe, protokol mora biti eksplicitno postavljen. Šta - gledamo u čovjeka (5) rc.conf ili čovjeka (8) miša (ja sam grešnim djelom već zaboravio na ova stvorenja).

    Eksplicitna indikacija porta je također neophodna samo za serijske i gumene miševe ("Znate li tetku Manju? - Znam tetku Manju. - Vjerujete li teti Mani? - Vjerujem tetki Mani. - Pa, pitajte je za takve životinje.. .") ... Mada ako navedete

    Moused_port = "/ dev / psm0"

    za PS-pola zvijer, neće biti ni najmanje štete.

    Moused_flags = ""

    možete podesiti različite opcije predviđene za komandu /usr / sbin / moused, kao što su: emulacija srednjeg dugmeta za modele sa dva dugmeta (na miševima koji se pomeraju, kotačić radi slično kao i srednje dugme), brzina reakcije, ubrzanje pri kretanju kursor i tako dalje. Za detalje - opet Mana, Mana, Mana...

    Pa, o liniji

    Mousechar_start = "NE"

    razgovor je već bio: ako se KOI8-R koristi kao izlazno kodiranje, a kernel nije ponovo izgrađen, ili je ponovo izgrađen bez opcije

    Opcije SC_MOUSE_CHAR = 0x3

    zadani NO treba zamijeniti sa 3. U svakom drugom slučaju jednostavno nije potrebno.

    Kao što ćete vidjeti u sljedećem članku, jedan od ciljeva ponovne izgradnje kernela bio je pružanje podrške za grafičku konzolu. Međutim, nije dovoljno uključiti odgovarajuću opciju u konfiguraciju kernela - odgovarajući video način još uvijek treba aktivirati. Ovo obezbeđuje /etc/rc.d/syscons skripta, koja izvršava, posebno, naredbu vidcontrol, koja je odgovorna za sve što se odnosi na postavke prikaza. I ova komanda ponovo dobija svoje parametre iz /etc/rc.conf datoteke. Konkretno, video mod je određen varijablom

    Allscreens_flags = ""

    za koji trebate definirati odgovarajuću vrijednost u obliku MODE_ # moda. Na primjer, ako želite imati rezoluciju od 800 × 600 i 32-bitnu dubinu boje, ova linija će poprimiti oblik

    Allscreens_flags = "MODE_277"

    Sada o završnoj fazi inicijacije - procesu dobivanja terminala. Kontroliše se unosima u / etc / ttys datoteci, što je ukratko spomenuto u članku o instalaciji sistema. Prisutnost posebne datoteke za konfiguriranje virtuelnih terminala je treća od važnih razlika između BSD sistema: u Linuxu, bez obzira na stil init skripte usvojene u određenoj distribuciji, postavljanje virtualnih terminala opisano je u općoj konfiguraciji init-a. proces.

    Sadržaj / etc / ttys datoteke izgleda ovako (izostavljam redove koji opisuju terminale dobijene dial-up pristupom mašini kao irelevantne):

    Konzola none unknown off secure # ttyv0 "/ usr / libexec / getty PC" cons25 na sigurnom # Virtual terminali ttyv1 "/ usr / libexec / getty Pc" cons25 na sigurnom ttyv2 "/ usr / libexec / getty PC" cons25 na sigurnom " / usr / libexec / getty PC "cons25 na sigurnom ttyv4" / usr / libexec / getty PC "cons25 na sigurnom ttyv5" / usr / libexec / getty PC "cons25 na sigurnom ttyv6" / usr / libexec / getty PC "cons25 na sigurnom ttyv7 "/ usr / libexec / getty Pc" cons25 na sigurnom ttyv8 "/ usr / X11R6 / bin / xdm -nodaemon" xterm isključen siguran

    Kao što vidite, ovo je jednostavna baza podataka, čija polja imaju sljedeći sadržaj:

    1. naziv terminalnog uređaja, koji ima vrijednosti konzole za takozvanu sistemsku konzolu, i naziv virtualnog terminala (ttyv #, gdje je # redni broj) za sve ostale;
    2. proces pokrenut na ovom terminalu da bi se aktivirao; nijedan proces se ne pokreće na sistemskoj konzoli, njegovu ulogu (prije svega mjesto gdje se postavljaju sistemske poruke) igra prvi virtuelni terminal; na drugima, osim posljednjeg (o kojem će biti posebna diskusija), takav proces je standardni getty;
    3. tip terminala - podrazumevano za standardni video režim 80 × 25;
    4. status terminala, koji određuje da li je aktiviran (uključen) ili ne (isključen); Zadana "negativna" vrijednost se može vidjeti u dva zapisa - prvom i posljednjem;
    5. stepen sigurnosti terminala; zadana vrijednost secure pretpostavlja da je ovaj terminal fizički, da tako kažemo, nedostupan napadaču, pa se stoga superkorisnik može bezbedno registrovati na njemu; ako ga promijenite u nesigurno, tada će root autorizacija s ovog terminala biti nemoguća; navođenje nesigurnog za sistemsku konzolu će uzrokovati postavljanje lozinke superkorisnika prilikom podizanja sistema u jednom korisničkom modu.

    Šta je ovdje podložno promjenama? Prvo, tip terminala: u slučaju rusifikacije režima konzole, podrazumevanu vrednost cons25 treba zameniti sa cons25r; međutim, mi smo to uradili odmah nakon instalacije, zar ne? Ako koristite gustinu znakova različitu od standardne gustine znakova, tip terminala se također mora promijeniti. Na primjer, ako koristite način rada 80x30, zamijenite cons30r ovdje. Kompletna lista važećih vrijednosti tipa terminala može se naći u datoteci / etc / termcap.

    Nadalje, sa sigurnosne tačke gledišta, nije bez razloga dozvoliti autorizaciju superkorisnika samo na bilo kojoj virtuelnoj konzoli, na primjer, prvoj: ona još uvijek nije baš pogodna za praktičan rad, jer se na njoj gomilaju sistemske poruke. . Većina ih se, naravno, može riješiti uređivanjem datoteke /etc/syslog.conf, preusmjeravanjem njihovog izlaza opisanog linijom

    * .err; kern.debug; auth.notice; mail.crit / dev / console

    sa sistemske konzole na neki fajl (ili čak na / dev / null uređaj). Međutim, nekoliko stvari će se i dalje pojaviti na konzoli - na primjer, poruke o povezivanju i odvajanju hot-plug uređaja (kao što su USB stickovi ili PC kartice).

    U principu, registracija administratora može biti potpuno zabranjena: dobijanje privremenih root-operatorskih prava komandom

    To nikako nije prepreka.Naravno, broj virtuelnih terminala koji se aktiviraju pri pokretanju sistema može se mijenjati u jednom ili drugom smjeru. Jasno je da da bi se njihov broj smanjio, dovoljno je jednostavno obrisati ili komentirati "dodatne" redove, a da ih povećate - unesite nedostajuće po slici i sličnosti postojećih (ne zaboravite da preimenujete datoteke odgovarajućih uređaja). Samo imajte na umu da podrazumevani GENERIC kernel podržava 16 virtuelnih terminala, od kojih najmanje jedan mora biti rezervisan za pokretanje X prozorskog sistema - bilo ručno ili automatski. I još nešto - kada se broj virtualnih terminala poveća, morate voditi računa o prisutnosti datoteka odgovarajućih uređaja (poput ttyv #) - po defaultu ih ima "samo" 12 u / dev direktoriju.

    Inače, o X. Korisnici Linuxa imaju mogućnost da obezbede grafičku autorizaciju (i automatsko učitavanje X) jednostavnim metodom - promenom podrazumevanog nivoa pokretanja. A šta je sa korisnicima BSD sistema, koji nemaju koncept runlevel-a - onima koji uglavnom rade u X-u i koji su umorni od kucanja startx komande? Da, sve je jednako jednostavno: dovoljno je aktivirati virtuelni terminal "x", zamjenjujući isključeno sa uključeno u posljednjem redu. Ovo će automatski učitati grafički menadžer za prijavu - xdm. Što se, naravno, može zamijeniti naprednijim analogom. Na primjer, linija

    Ttyv8 "/ usr / local / bin / kdm -nodaemon" xterm isključen siguran

    Loša strana inicijalizacije sistema je njegovo zaustavljanje ili ponovno pokretanje, praktički nema razlike između ovih procesa. A za to je odgovorna komanda za isključivanje, koja se može dati u ime superkorisnika ili člana grupe operatera. Sa -h opcijom, uzrokuje zaustavljanje mašine, sa -r opcijom se ponovo pokreće. I ova komanda također zahtijeva argument - vrijeme kada bi trebalo da dođe do zaustavljanja ili ponovnog pokretanja. Međutim, postoji način da se trenutno zaustavi ili ponovo pokrene:

    $ shutdown -h sada

    $ shutdown -r sada

    respektivno.

    Osim toga, postoje i komande za zaustavljanje i ponovno pokretanje za istu svrhu. Međutim, oni ne igraju nezavisnu ulogu, jednostavnim pozivanjem naredbe za isključivanje s opcijom zaustavljanja i ponovnog pokretanja.

    Sistem se zaustavlja obrnutim redoslijedom od njegove inicijalizacije. Prvo se pokušava graciozno prekinuti svi korisnički procesi slanjem im TERM signala. Nakon određenog vremenskog perioda, KILL signal se šalje svim još "živim" procesima - kako bi se osiguralo da su uništeni. Tada se sve usluge pokretanja i demoni zaustavljaju. Konačno, sadržaj predmemorije diska se upisuje na disk (preko naredbe sync) i sistem datoteka se demontažu. Nakon toga se obično pojavljuje poruka koja ukazuje da mašina može bezbedno da isključi napajanje ili da se automatski isključuje. Prilikom ponovnog pokretanja, sve se dešava potpuno isto, ali nakon što se sistem zaustavi, mašina se automatski ponovo pokreće.

    Kao što je već spomenuto, skripte odgovorne za pokretanje servisa za pokretanje nalaze se u direktoriju /etc/rc.d. Većina programa koje pokreću su takozvani daemoni (daemon - Disk And Execution MONitor), nešto poput TSR programa koji rade u pozadini i čekaju na zahtjev da izvrše svoju funkciju (štampanje, slanje pošte, pristup ftp ili http serveru, i itd). U skladu s tim, skripte koje ih pokreću raspoređene su po principu start-stop. A ako se prva funkcija izvršava kada se sistem pokrene, onda kada se zaustavi, kao što možete pretpostaviti, druga.

    Napredak procesa gašenja kontroliše /etc/rc.shutdown skripta. Njegova svrha je da izvrši stop funkciju u skriptama svih servisa pokrenutih iz / etc / rc skripte u skladu sa opisom datim u /etc/rc.conf i /etc/defaults/rc.conf.

    Podijelite ovo