diff --git a/hu_HU.ISO8859-2/books/faq/book.sgml b/hu_HU.ISO8859-2/books/faq/book.sgml
index 6dabfb0514..04a59d1361 100644
--- a/hu_HU.ISO8859-2/books/faq/book.sgml
+++ b/hu_HU.ISO8859-2/books/faq/book.sgml
@@ -1,15411 +1,15426 @@
%books.ent;
]>
Gyakran Ismételt Kérdések a &os;
6.X, 7.X
és 8.X
változatairólA &os; Dokumentációs Projekt$FreeBSD$1995199619971998199920002001200220032004200520062007200820092010A &os; Dokumentációs Projekt
&bookinfo.legalnotice;
&tm-attrib.freebsd;
&tm-attrib.3com;
&tm-attrib.adobe;
&tm-attrib.creative;
&tm-attrib.cvsup;
&tm-attrib.ibm;
&tm-attrib.ieee;
&tm-attrib.intel;
&tm-attrib.iomega;
&tm-attrib.linux;
&tm-attrib.microsoft;
&tm-attrib.mips;
&tm-attrib.netscape;
&tm-attrib.opengroup;
&tm-attrib.oracle;
&tm-attrib.sgi;
&tm-attrib.sparc;
&tm-attrib.sun;
&tm-attrib.usrobotics;
&tm-attrib.xfree86;
&tm-attrib.general;
Ezek a gyakran ismételt kérdések a &os;
6.X, 7.X
és 8.X változataira
vonatkoznak. Az összes bejegyzés a &os;
6.X vagy annál újabb
változataira vonatkozik, hacsak azt külön nem
jelezzük. Ha szeretnénk segíteni a
projektnek, akkor küldjünk egy levelet a &a.doc;
címére! Ennek a dokumentumnak a legfrissebb
változata mindig elérhetõ a &os; World Wide Web szerverérõl.
HTTP-n keresztül letölthetõ egyetlen nagy HTML állományként,
vagy a &os;
FTP szerverérõl szöveges, &postscript;
PDF stb. formátumban. Továbbá keresni is tudunk a
GYIK-ban.Fordította és a
fordítást karbantartja: &a.hu.pgj;BevezetésÜdvözöljük a &os;
6.X-8.X
Gyakran Ismételt Kérdéseiben!Hasonlóan a Usenetes GYIK-okhoz, ennek a dokumentumnak
is az a célja, hogy a &os; operációs
rendszerrel kapcsolatban feltegye a legyakrabban ismételt
kérdéseket (és persze megválaszolja
ezeket!). Habár eredetileg azért
íródott, hogy megspórolja a feleslegesen
elvesztegetett sávszélességet és hogy
megelõzze a régóta ismert
kérdések újbóli
feltételét, a GYIK idõközben egy
értékes
információforrássá is
vált.Igyekeztünk minden megtenni annak
érdekében, hogy a GYIK a lehetõ legtöbb
információt szolgáltassa. Ha
szeretnénk javaslatokat tenni a
továbbfejlesztésére, írjunk
bátran a &a.doc; címére!Mi az a &os;?Ha tömören akarjuk összefoglalni, akkor a
&os; egy AMD64, &intel; EM64T, &i386;, PC-98, IA-64, &arm;,
&powerpc; és &ultrasparc; platformokra fejlesztett
&unix;-szerû operációs rendszer, amely a
Kaliforniai Egyetem (Berkeley) rendszerének
4.4BSD-Lite kiadására
épül, valamint a 4.4BSD-Lite2
kiadásból tartalmaz még
néhány továbbfejlesztést.
Továbbá közvetett módon még
felhasználja a Berkeley Net/2
kiadásának &i386; architektúrára
készített portját, a
386BSD forrásait is, amit annak
idején William Jolitz készített, noha
ebbõl ténylegesen már csak nagyon
kevés található a rendszerben. A &os;
részletesebb bemutatása és annak
tulajdonságai a &os; honlapján
találhatóak.A &os;-t munkához, oktatáshoz és
szórakozáshoz rengeteg cég,
internetszolgáltató, kutató,
informatikus, diák és otthoni
felhasználó használja a világ
minden táján.A &os; bõvebb bemutatásához olvassuk
el a &os;
kézikönyvet.Mi a &os; Projekt célja?A &os; Projektnek az a célja, hogy olyan
szoftvereket állítson elõ, amelyek
tetszõlegesen felhasználhatóak,
mindenféle kötöttségek
nélkül. A fejlesztõk közül sokan
nagyon sok idõt és munkát fektetnek a
forráskódba (és így a
Projektbe), ami nyilván megérdemelne
némi anyagi ellensúlyozást olykor, de
egyáltalán nem ragaszkodunk hozzá.
Úgy érezzük, mindenek elõtt az a
küldetésünk, hogy
feltétel nélkül segítsünk
mindenkit a munkánkkal, függetlenül annak
szándékaitól, így a
munkánk a lehetõ legnagyobb körben
kerül felhasználására és
így nyújtja a lehetõ legtöbb
hasznot. Véleményünk szerint ez az egyik
legalapvetõbb célja a szabad szoftvereknek
és ezt a hozzáállást
támogatjuk a leginkább.A forrásaink között
található, GNU General
Public License (GPL) vagy a GNU
Library General Public License (LGPL)
licencelésû munkák azonban már
valamivel több kötöttséggel
járnak, habár ezek inkább a
közzétételükre vonatkoznak, nem
pedig annak ellenkezõjére, ahogy azt
általában megszokhattuk. A GPL licencû
szoftverek kereskedelmi célú
felhasználásának további
esetleges nehézségei miatt azonban
lehetõségeink szerint igyekszünk ezeket
olyan szoftverekkel felváltani, amelyek a kevésbé
szigorúbb &os; licencet
alkalmazzák.A &os; licenc tartalmaz valamilyen
megszorítást?Igen. Ezek a megszorítások azonban nem az
adott munka felhasználását
szabályozzák, hanem csupán azt, hogy
miként viszonyuljunk a &os; Projekthez. Ha komoly
kétségeink lennének a
licenceléssel kapcsolatban, olvassuk a jelenleg
érvényes
licencet (angolul). Az egyszerû
kíváncsiskodók kedvéért
nagyjából így tudnánk
összefoglalni a licencet:Ne állítsuk, hogy mi
készítettük.Ne pereljük a Projektet, ha nem
mûködik.A &os; képes kiváltani a jelenleg
használt operációs
rendszerünket?A legtöbb ember számára igen. A
kérdés megválaszolása azonban
természetesen nem ennyire
egyértelmû.Sokan nem is magát az operációs
rendszert, hanem inkább az alkalmazásokat
használják. Valójában pedig
maguk az alkalmazások azok, amelyek az
operációs rendszert használják.
A &os;-t úgy alakították ki, hogy az
alkalmazások számára egy szilárd
és mindentudó környezetet
nyújtson. Támogatja a
böngészõk, irodai programcsomagok,
levelezõ programok, grafikus programok,
programozási környezetek, hálózati
szerverek széles választékát,
és szinte minden mást, amire csak
szükségünk lehet. Az ilyen
alkalmazások legnagyobb része
elérhetõ a Portgyûjteményen
keresztül.Ha viszont olyan alkalmazást
kívánunk használni, amely csak bizonyos
operációs rendszereken érhetõ el,
nem tudjuk magát az operációs rendszert
egyszerûen lecserélni alatta. Bizonyos
esetekben azonban elõfordulhat, hogy &os; alatt is
találunk hozzá hasonló
alkalmazásokat. Amikor egy stabil irodai vagy
internet szerverre van szükségünk, esetleg
egy megbízható munkaállomásra,
vagy egyszerûen csak megszakítások
nélkül szeretnénk végezni a
munkánkat, a &os;-ben igényeinkhez
mérten szinte minden megtalálhatunk. A
világon rengeteg felhasználó,
beleértve a kezdõket és a tapasztalt
&unix; rendszergazdákat egyaránt, asztali
operációs rendszerként is a &os;-t
használja.Ha egy másik &unix; környezetrõl
akarunk &os;-re váltani, akkor a legtöbb dolog
már ismerõs lehet számunkra. Amennyiben
viszont valamilyen grafikus operációs
rendszerrõl, például &windows;-ról
vagy a &macos; valamelyik régebbi
változatáról szándékozunk
átállni, minden bizonnyal idõt kell majd
szánnunk a feladatok &unix; stílusú
megvalósításának
megismerésére. Ez a GYIK és a &os;
kézikönyv ehhez tökéletes
kiindulási alapot biztosít.Miért hívják &os;-nek?Szabadon (mint free)
felhasználható, akár kereskedelmi
célokra is.Az operációs rendszer teljes
forráskódja bárki által
szabadon elérhetõ, minimális
megkötésekkel arra vonatkozóan, hogy
miként használható és
más (kereskedelmi vagy nem kereskedelmi)
munkák részeként miként
építhetõ be,
terjeszthetõ.Bárki, akinek fejlesztési vagy
hibajavítási javaslata van a rendszerrel
kapcsolatban, szabadon benyújthatja azt, amely
aztán bekerül a források
közé (egy-két
nyilvánvaló ellenõrzést
követõen).Érdemes valamint rámutatni, hogy a
szabad szót az imént két
értelemben is használtuk: az egyik
jelentése szerint költségek
nélkül, míg a másik
jelentése szerint tetszés
szerint. Egy-két
tiltott dologtól,
például azt állítjuk, hogy mi
írtuk, eltekintve tényleg bármit
csinálhatunk vele.Mi a különbség a &os;, a NetBSD,
OpenBSD és a többi nyílt
forráskódú BSD operációs
rendszerek között?James Howard The BSD Family Tree
címmel (angolul) készített egy alapos
leírást a különbözõ
projektek közti eltérések
bemutatására.Melyik a &os; legújabb változata?Jelen pillanatban a &os; fejlesztése két
párhuzamos ágon folyik, és mind a
kettõbõl készülnek kiadások. A
7.X sorozat kiadásai a
7-STABLE ágból,
míg a 8.X sorozat
kiadásai a 8-STABLE
ágból készülnek.A 8.0-s kiadás megjelenéséig a
7.X sorozat volt a
-STABLE. A 8.0 kiadás
megjelenésével azonban a
7.X ág
meghosszabbított
támogatást kapott, és
már csak a nagyobb hibákat,
például a biztonsági hibákat
javítják benne. Az
7-STABLE ágból még
várhatóak további kiadások is,
azonban ezt jelenleg már
örökségi ágnak
tekintjük, és a legtöbb munka már a
8-STABLE részeként
jelenik meg.A &rel.current;
változat a 8-STABLE ág
legfrissebb kiadása, amely &rel.current.date;ban
jelent meg. Az 7-STABLE
ágból a &rel2.current;
a legfrissebb kiadás, amely &rel2.current.date;ban
jelent meg.Ha röviden össze akarjuk foglalni, akkor a
-STABLE változatokat
elsõsorban az internet-szolgáltatók,
vállalkozások számára
ajánljuk, illetve minden olyan
felhasználó számára, aki a
legújabb (és minden bizonnyal még
instabil) -CURRENT
pillanatkiadásokhoz viszonyítottan a
legkevesebb változtatással
kívánnak egy megbízható, stabil
verziót használni a rendszerbõl. Ugyan
bármelyik ágból
készülhetnek, azonban a
-CURRENT esetében
meglehetõsen sok változásra kell
felkészülnünk (a
-STABLE ághoz képest) az
egyes kiadások között.A kiadások néhány havonta
készülnek. Mivel a legtöbben ennél
pontosabban követik a &os; forrásait
(lásd a &os.current;
és &os.stable;
változatokra vonatkozó
kérdéseket), ennél valamire többre
van szükségünk, hiszen a források
folyamatosan változnak.A &os; egyes kiadásairól a Kiadások
megjelentetését összefoglaló
oldalon tájékozódhatunk a &os;
honlapján.Mi az a &os;-CURRENT?A &os.current;
az operációs rendszer aktív
fejlesztés alatt álló változata,
amely idõvel az új &os.stable;
ággá válik. Ez a változat
tulajdonképpen csak a rendszeren dolgozó
fejlesztõk és a megátalkodott
hobbifelhasználók számára
érdekes. A kézikönyverre vonatkozó szakaszában
olvashatunk részletesebben a
-CURRENT
használatáról.Ha nem mozgunk otthonosan az operációs
rendszerek világában, vagy ha nem tudjuk
megmondani a különbséget egy valódi
és egy ideiglenes probléma között,
akkor nem javasoljuk a &os.current;
használatát. Ez a fejlesztési vonal
nagyon gyorsan fejlõdik és néha
lefordíthatatlan állapotba kerül. A
&os.current; változat
használóitól elvárjuk, hogy
képesek legyenek felmérni a felbukkanó
problémákat, és közülük
csak azokat jelenteni, amelyek valóban hibákat
takarnak és nem pedig csak apró
bökkenõk. Ezért a
&a.current; olvasói általában A
make world parancs valami csoportra panaszkodik
típusú kérdéseket
általában figyelembe se veszik.A -CURRENT és
-STABLE ágak aktuális
állapotáról minden hónapban
pillanatkiadások
készülnek. Célunk ezzel:A telepítõ legfrissebb
változatának tesztelése.Idõt és
sávszélességet szeretnénk
megspórolni a -CURRENT vagy
-STABLE változatok azon
felhasználóinak, akik az iméntiek
hiányából fakadóan nem
tudják naponta frissíteni a
rendszerüket.Kiindulási pontokat
rögzítünk a kód aktuális
állapota alapján, ha késõbb
netalán valamilyen szörnyûség
történne. (Noha a CVS
általában védelmet nyújt az
ilyen rémisztõ dolgok
bekövetkezése ellen.)Az összes tesztelendõ
újítást és
javítást ezen a módon
kívánjuk a lehetõ legszélesebb
körben elérhetõvé tenni.Egyik -CURRENT
pillanatkiadás sem tekinthetõ
hétköznapi felhasználásra
alkalmasnak. Ha egy megbízható
és széles körben tesztelt rendszerre van
szükségünk, akkor vagy maradjunk a
kiadásoknál vagy használjuk a
-STABLE vonalból
készült pillanatkiadásokat.A pillanatkiadások innen
érhetõek el.Minden aktívan fejlesztett ághoz havonta
készülnek hivatalos pillanatkiadások. A
népszerûbb &arch.i386; és &arch.amd64;
ágakból azonban napi kiadások is
elérhetõek a a
címen.Mit takar a &os;-STABLE?Amikor a &os; 2.0.5 megjelent, a &os;
fejlesztése kettévált. Az egyik
ág neve -STABLE,
a másiké pedig -CURRENT
lett. A &os;-STABLE az olyan
internet-szolgáltatók és egyéb
vállalkozások számára
készült, ahol a fejlesztés alatt
álló újítások vagy a
hirtelen váltások által okozott
problémák gyakran nem engedhetõek meg.
Ide csak olyan hibajavítások és kisebb
módosítások kerülnek, amelyeket
alaposan leteszteltek. A &os;-CURRENT
ezzel szemben a 2.0 megjelenése óta egyetlen,
szakadásmentes fejlesztési vonalat
képvisel, amely a &rel.current;-RELEASE és az
azon túli kiadások felé halad. Ha
többet szeretnénk megtudni a jelenlegi
ágak állapotáról és a
következõ kiadások
ütemezésérõl, akkor ezzel
kapcsolatban olvassuk el a &os; Release Engineering
címû cikk kiadások
leágaztatásáról
szóló részét (angolul). Az
ágak jelenlegi állapota és a
jövõbeni kiadások ütemterve a Kiadások információk oldalán
található (angolul).A 2.2-STABLE ág a 2.2.8
megjelenésével nyugdíjba vonult. A
3-STABLE ág a 3.5.1 mint az utolsó 3.X
kiadás megjelenésével ért
véget. A 4-STABLE ág a 4.11 mint az
utolsó 4.X kiadással fejezõdött be.
Ezekbe az ágakban a legtöbb esetben már
csak biztonsági javításokat
végeznek. Az 5-STABLE ág fejlesztése
az utolsó 5.X
kiadás, az 5.5 megjelenésével
lezárult. A 6-STABLE ág fejlesztése
még folytatódik valameddig, de ez alatt
leginkább már csak a biztonsági
rések és egyéb komoly
problémák javításait kell
érteni.A &rel.current;-STABLE a jelenleg fejlesztett
-STABLE ág. A
&rel.current;-STABLE ágból megjelent
legfrissebb kiadás a &rel.current;-RELEASE, amely
&rel.current.date;ban jelent meg.A 9-CURRENT a -CURRENT ág
legfrissebb változata, és ez a &os;
következõ generációja. Errõl
az ágról a Mi az a &os;-CURRENT?
kérdésnél szolgálunk
részletesebb információkkal.Mikor készülnek &os; kiadások?A &a.re; átlagosan a &os; egy újabb
nagyobb változatát 18 havonta, míg egy
kisebb kiadását 8 havonta jelenteti meg. A
kiadások dátumát elõre kihirdetik,
így a rendszeren dolgozó emberek pontosan
tudják, hogy mikorra kell befejezniük a
munkájukat és letesztelni azt. Minden
kiadást egy tesztelési idõszak elõz
meg, ahol megbizonyosodnak róla, hogy az
elkészült újítások nem
veszélyeztetik az új kiadás
megbízhatóságát. A legtöbb
felhasználó pontosan ezt a
típusú elõvigyázatosságot
szereti legjobban a &os;-ben, még annak
árán is, hogy a legújabb
finomságok bekerülésére még
a -STABLE ág esetén
gyakran sokat kell várni.A kiadások szerkesztésérõl
(valamint a soronkövetkezõ kiadások
ütemezésérõl) a &os;
honlapján belül ezen
az oldalon olvashatunk részletesebben
(angolul).Akik egy kicsivel több izgalomra vágynak,
azok részére az elõbb említett,
naponta készített bináris
pillanatkiadásokat ajánljuk.Ki felel a &os;-ért?A &os; Projektre vonatkozó fontosabb
döntéseket, mint például a Projekt
haladási irányát vagy hogy vehet
részt a forráskód
fejlesztésében, egy 9 fõs irányító
csoport hozza. Rajtuk kívül még
egy több mint 350 fõs
fejlesztõi csapat jogosult
közvetlenül módosítani a &os;
forrásait.A legtöbb bonyolultabb változtatást
általában azonban a megfelelõ levelezési listákon
is megvitatják, amiben bárki
különösebb korlátozás
nélkül részt vehet.Honnan lehet a &os;-t beszerezni?A &os; összes fontosabb kiadása
elérhetõ anonim FTP-n keresztül a &os; FTP
oldaláról:A legfrissebb 8-STABLE kiadás, a
&rel.current;-RELEASE ebbõl
a könyvtárból érhetõ
el.Havonta készülnek pillanatkiadások
a -CURRENT és a
-STABLE
ágakból, de ezek leginkább a
legújabb változatot tesztelõk
és a fejlesztõk számára
fontosak.A legfrissebb 7-STABLE kiadás, a
&rel2.current;-RELEASE ebbõl
a könyvtárból érhetõ
el.Ha a &os;-t CD-n, DVD-n vagy más egyéb
telepítõeszközön szeretnénk
megkapni, akkor ezzel kapcsolatban nézzük meg
a
kézikönyvet.Hogyan lehet elérni a hibajelentések
adatbázisát?A felhasználók kéréseit
tartalmazó hibajelentések
adatbázisát a honlap webes
hibajelentésekkel foglalkozó felületén
keresztül érhetjük el.A &man.send-pr.1; parancs
segítségével tudunk e-mailen
keresztül hibajelentéseket és
egyéb változtatási
kéréseket küldeni. Emellett még
böngészõ segítségével
is tudunk hibajelentéseket küldeni a honlap
webes
hibabejelentõ felületén.Mielõtt beküldenénk egy
hibajelentést, olvassuk el a Writing
&os; Problem Reports címû cikket
(angolul), amelybõl megtudhatjuk, hogyan
készítsünk jól
hasznosítható hibajelentéseket.Honnan tudhatunk meg még többet?Nézzük meg a &os; Projekt
honlapjáról elérhetõ dokumentációkat.
Dokumentációs és
támogatásMilyen jó könyvek szólnak a
&os;-rõl?A Projekt igen széles körû
dokumentációval rendelkezik, amely a
következõ linkrõl érhetõ el:
.
Emellett a GYIK végén szereplõ,
valamint a kézikönyvben található
irodalomjegyzék
tartalmazza az ajánlott könyveket.A dokumentáció elérhetõ
más formátumokban is, például
szöveges (ASCII) állományban vagy
&postscript;-ben?Igen. A dokumentáció több
különbözõ állomány-
és tömörítési
formátumban elérhetõ az &os; FTP
oldalán belül a /pub/FreeBSD/doc/
könyvtárból.A dokumentációt több
különbözõ módon
osztályozhatjuk. Többek közt:A dokumentum neve alapján,
például faq (GYIK), vagy
handbook
(kézikönyv).A dokumentum nyelv és
karakterkódolása alapján. Ezeket a
&os; rendszerekben, a
/usr/share/locale
könyvtárban megtalálható
nyelvi beállítások nevei szerint
adjuk meg. Jelenleg a következõ nyelveken
és kódolásokban érhetõ
el a dokumentáció:NévLeírásen_US.ISO8859-1Angol (Egyesült
Államok)bn_BD.ISO10646-1Bengáli vagy bangla
(Banglades)da_DK.ISO8859-1Dán (Dánia)de_DE.ISO8859-1Német
(Németország)el_GR.ISO8859-7Görög
(Görögország)es_ES.ISO8859-1Spanyol (Spanyolország)fr_FR.ISO8859-1Francia (Franciaország)hu_HU.ISO8859-2Magyar (Magyarország)it_IT.ISO8859-15Olasz (Olaszország)ja_JP.eucJPJapán (Japán, EUC
kódolás)mn_MN.UTF-8Mongol (Mongólia, UTF-8
kódolás)nl_NL.ISO8859-1Holland (Hollandia)no_NO.ISO8859-1Norvég (Norvégia)pl_PL.ISO8859-2Lengyel (Lengyelország)pt_BR.ISO8859-1Portugál (Brazília)ru_RU.KOI8-ROrosz (Oroszország, KOI8-R
kódolás)sr_YU.ISO8859-2Szerb (Szerbia)tr_TR.ISO8859-9Török
(Törökország)zh_CN.GB2312Egyszerûsített kínai
(Kína, GB2312
kódolás)zh_TW.Big5Hagyományos kínai (Tajvan,
Big5 kódolás)Nem mindegyik dokumentum érthetõ el
mindegyik nyelven.A dokumentum formátuma alapján. A
dokumentumok több különbözõ
formátumban állnak rendelkezésre.
Mindegyik formátum használatának
megvannak az elõnyei és
hátrányai. Egyes formátumok
inkább az interneten keresztüli
olvasgatásra megfelelõek, mások pedig
nyomtatott formában nyújtanak
esztétikus hatást. A több
különbözõ formátumnak
köszönhetõen az olvasók
igényeik szerint el tudják olvasni a
dokumentáció különbözõ
részeit akár a képernyõn,
akár papíron. Jelenleg a
következõ formátumokban
érhetõek el a dokumentumok:FormátumLeíráshtml-splitKis méretû,
hiperhivatkozásokkal ellátott HTML
állományok
gyûjteményehtmlEgyetlen óriási, az
egész dokumentumot tartalmazó HTML
állománypdbA Palm Pilot adatbázisának
formátuma, amelyet az iSilo
segítségével tudunk
olvasnipdfAz Adobe-féle Portable Document
Formatps&postscript;rtfA Microsoft Rich Text
formátumatxtEgyszerû szöveges
állományAmikor egy ilyen dokumentumot betöltünk
a Wordbe, akkor az oldalszámok maguktól
nem frissülnek. Ehhez a dokumentum
betöltése után nyomjuk le a
CtrlA,
CtrlEnd,
F9 billentyûket.A tömörítés és
csomagolás típusa alapján. Ezek
közül jelenleg hármat
használunk.Ahol a formátum
html-split, ott az
állományokat a &man.tar.1;
segítségével csomagoltuk
össze. Az így keletkezõ
.tar állományt
ezek után az alábbi részben
szereplõ tömörítési
megoldásokkal
tömörítettük.Az összes többi formátum
esetén csak egyetlen állomány
keletkezik, amelynek a neve
típus.formátum
(tehát például
article.pdf,
book.html és így
tovább).Ezeket az állományokat
azután két
tömörítési
eljárással
tömörítjük.EljárásLeírászipA zip
formátum. &os; alatt ezt úgy
tudjuk kitömöríteni, ha
elõször telepítjük a
archivers/unzip
portot.bz2A bzip2
formátum. Nem olyan elterjedt, mint a
zip, de
általában kisebb
méretû
állományokat
készít. Ilyen
állományokat akkor tudunk
kitömöríteni, ha
telepítjük a archivers/bzip2
portot.Ennek megfelelõen tehát a
kézikönyv bzip2-vel
tömörített &postscript;
változata a handbook/
könyvtáron belül
book.ps.bz2 néven
található.Miután kiválasztottuk a számunkra
megfelelõ letöltendõ formátumot
és tömörítési
módszert, magunknak kell letölteni a
kiválasztott tömörített
állományokat, majd kibontani ezeket és
átmásolni a megfelelõ helyre.Például, ha a GYIK fejezetekre darabolt,
&man.bzip2.1; segítségével
tömörített változata a
doc/en_US.ISO8859-1/books/faq/book.html-split.tar.bz2
állományban található meg. A
letöltéséhez és
kibontásához a következõket kell
tennünk:&prompt.root; fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/en_US.ISO8859-1/books/faq/book.html-split.tar.bz2
&prompt.root; bzip2 -d book.html-split.tar.bz2
&prompt.root; tar xvf book.html-split.tarA mûvelet befejezõdésével kapunk
néhány .html
kiterjesztésû állományt. Ezek
közül az egyik neve
index.html, ebben
található a tartalomjegyzék, a
bevezetés és a dokumentum többi
részére mutató hivatkozások.
Ezeket az állományokat kell
szükség szerint átmásolnunk vagy
átmozgatnunk a megfelelõ helyre.Hol található információ a
&os; levelezési listáiról?Az összes velük kapcsolatos
információt a kézikönyv
levelezési listákról
szóló részében
találjuk.Milyen &os; hírcsoportok léteznek?Az összes rájuk vonatkozó
információt a kézikönyv
hírcsoportokról szóló
részében találjuk meg.Vannak &os;-s IRC (Internet Relay Chat)
csatornák?Igen, a legtöbb nagyobb IRC hálózaton
található &os;-vel foglalkozó
csatorna:Az EFNet
hálózaton található
#FreeBSD csatorna
lényegében egy &os;-vel foglalkozó
fórum, de itt ne nagyon
próbálkozzunk segítséget
kérni a többiektõl, ha netalán
lusták lennénk elolvasni a man oldalakat
vagy éppen kutatunk valamit. Ez a hely
elsõsorban csevegésre szolgál, ahol
mindenféle téma felmerül, a
szextõl kezdve a sportokon keresztül a
nukleáris fegyverekig éppen úgy,
ahogy a &os;-rõl is. Mi szóltunk
elõre! A szerver a irc.efnet.org
címen érhetõ el.Az EFNet
hálózaton található
#FreeBSDhelp csatorna kifejezetten a
&os; felhasználók
megsegítését veszi célba.
Az itt levõk sokkal szívesebben
válaszolnak a kérdéseinkre, mint a
#FreeBSD csatornán.A Freenode
hálózaton található
##FreeBSD csatornán mindig
sokan vannak, itt bármilyen
témában kérhetünk
segítséget. A beszélgetések
idõnként ugyan kifutnak a szigorú
szakmai témákból, de a &os;-vel
kapcsolatos kérdések itt mindig
elsõbbséget élveznek.
Szívesen segítünk bárkinek,
és lehetõség szerint igyekszünk
a kézikönyv megfelelõ részeire
hivatkozni, vagy adni valamilyen
útmutatást arra vonatkozóan, hogy
merre tájékozódhatunk
részletesebben a problémánkkal
kapcsolatban. Ez alapvetõen egy angol nyelvû
csatorna, habár a világ minden
tájáról érkeznek tagjaink.
Ha az anyanyelvünkön szeretnénk
inkább csevegni, akkor elõször
tegyük fel a kérdésünket
angolul, aztán próbálkozzunk a
megfelelõ
##freebsd-nyelv
csatornán.A DALNET
hálózaton található
#FreeBSD csatorna az Egyesült
Államokból a irc.dal.net
szerveren, Európából pedig az
irc.eu.dal.net szerveren keresztül
érhetõ el.A DALNET
hálózaton található
#FreeBSDHelp csatorna az
Egyesült Államokból a
irc.dal.net szerveren,
Európából pedig a
irc.eu.dal.net szerveren keresztül
érhetõ el.Az UNDERNET
hálózaton található
#FreeBSD csatorna az Egyesült
Államokból a
us.undernet.org,
Európából pedig a
eu.undernet.org szerveren
keresztül érhetõ el. Mivel ez a
csatornát leginkább
segítségnyújtásra tartjuk
fenn, készüljünk fel arra, hogy a
hivatkozott dokumentumokat is el kell olvasnunk.A RUSNET
hálózaton található
#FreeBSD csatorna az oroszul
beszélõ &os; felhasználók
számára igyekszik segítséget
nyújtani. Emellett viszont remek hely a nem
szakmai jellegû témák
megvitatásához is.A Freenode
hálózaton található
#bsdchat csatorna a
hagyományos kínai (UTF-8
kódolású) nyelvet
beszélõ &os; felhasználókat
igyekszik segíteni. A nem szakmai jellegû
témák részére is egy remek
hely.Az említett csatornák mindegyike
egymástól független, és nem
állnak egymással kapcsolatban. Sõt,
még a csevegési stílusuk is
eltérõ, ezért érdemes a
saját stílusunkhoz leginkább
illeszkedõt megkeresni. Mint ahogy az
összes IRC csatorna
esetében elõfordul, itt is könnyedén
érhetnek bennünket személyes
sértések vagy egyszerûen csak sok
szóbeli sárdobálást
láthatunk (mivel jóval több az ilyen
helyeken a balga ifjú, mint a higgadtabb idõs)
— ezekkel ne is törõdjünk!Hol kaphatok kereskedelmi szintû &os;
tréninget és támogatást?A DaemonNews nyújt kereskedelmi szintû
támogatást és tréninget a
&os;-hez. Errõl részletesebb
információkat a BSD Mall
honlapján kaphatunk.A &os; Mall is nyújt keresdelmi
támogatást a &os;-hez. Errõl a honlapjunkon
tudhatunk meg többet.A BSD Certification Group, Inc. DragonFly BSD,
&os;, NetBSD és OpenBSD rendszerekhez ad
rendszergazdai képesítéseket.
Amennyiben érdekel minket, látogassunk el a
honlapjukra.
Kérünk minden olyan további
szervezetet, amely tréninget vagy
támogatást kíván nyújtani
a Projektnek, hogy jelentkezzenek és felvesszük
õket a listánkra!NikClaytonnik@FreeBSD.orgTelepítésMilyen állományokat kell
letöltenünk a &os;
telepítéséhez?Ehhez a következõ három floppy image-re
lesz alapvetõen szükségünk:
floppies/boot.flp,
floppies/kern1.flp és
floppies/kern2.flp. Ezeket az
image-eket az fdimage vagy &man.dd.1;
segédprogramokkal kell rámásolnunk
lemezekre.Ha magukat a terjesztéseket akarjuk
letölteni (mert például egy DOS
típusú állományrendszerrõl
akarunk telepíteni), akkor az alábbi
terjesztéseket kell beszereznünk:base/manpages/compat*/doc/src/ssys.*A teljes folyamatot, valamint a
telepítéssel kapcsolatos általános
tudnivalókat valamivel bõvebben a kézikönyv
&os; telepítésével foglalkozó
részébõl ismerhetjük
meg.Mit tegyünk, ha a floppy image-ek nem férnek
rá egyetlen lemezre?Egy 3,5 colos (1,44 MB
kapacitású) lemezen
1 474 560 byte-nyi adat fér el. A
rendszerindításhoz használt image
mérete is pontosan
1 474 560 byte.A rendszerindító lemezek
elõkészítése során
elkövetett hibák általában a
következõk:Amikor az image-eket FTP-n keresztül
töltjük le, elfelejtünk
bináris (binary)
átviteli módot használni.Egyes FTP kliensek alapértelmezés
szerint szöveges (ascii)
módban viszik át az
állományokat, és ennek során
megpróbálják a sorvége
karaktereket az adott operációs rendszer
konvenciói szerint átalakítani.
Ilyenkor szinte kétségtelen, hogy ezzel
tönkreteszik az image-et. Ezért ne
felejtsük el ellenõrizni a letöltött
image-eket: ha a méretük nem egyezik meg
pontosan a szerveren levõ
változatukéval, akkor
gyaníthatóan a letöltés
közben történt velük
valami.Megoldás: miután csatlakoztunk a
szerverhez, de még mielõtt elkezdük volna
a letöltést, az FTP kliens
parancssorában gépeljük be, hogy
binary.Az image lemezre másolása a DOS
copy parancsának (vagy
hasonló grafikus eszközök)
használatával.A copy és a hozzá
hasonló programok nem használhatóak
erre a célra, mivel az image-eket
közvetlenül a rendszeindításhoz
hozták létre. Ennek megfelelõen az
egyes image-ek a lemezek teljes tartalmát
sávról sávra tartalmazzák,
és így nem hétköznapi
állományként kell velük
bánni. Ezeket a floppykra alacsonyszintû
eszközök (például az
fdimage vagy
rawrite)
segítségével, nyers
módban kell felvinni, ahogy azt a &os;
telepítését leíró
útmutatóban is olvashatjuk.Hol található leírás a &os;
telepítésérõl?A telepítés részletes
leírása a kézikönyv &os; telepítésérõl szóló részében
olvasható.Mire van szükség a &os;
használatához?A &os; használatához egy 486-os vagy jobb
processzorral rendelkezõ
számítógépre, 24 MB vagy
annál több memóriára, és
legalább 150 MB tárhelyre lesz
szükségünk.A &os; összes változata képes futni
szinte bármilyen olcsó MDA típusú
grafikus kártyával, de az &xorg;
használatához már VGA vagy annál
jobb videokártya szükségeltetik.Lásd .Hogyan lehet saját telepítõfloppyt
készíteni?Jelen pillanatban ennek nincs
egyszerû módja. Minden
egyes kiadáshoz tartoznak
telepítõfloppyk, használjuk
ezeket.Ha egy módosított kiadást akarunk
készíteni, kövessük a(z angol
nyelvû) Release Engineering
cikk útmutatásait.A számítógépre lehet
egynél több operációs rendszert is
telepíteni?Olvassuk el a A &os;
telepítése és használata
más operációs rendszerekkel
együtt címû cikket.&windows; mellé is telepíhetõ
&os;?Elõször telepítsük a &windows;t,
majd a &os;-t. A &os; boot managere ekkor képes lesz
a &windows; és a &os; indítására
is. Vigyázzunk, mert ha a &windows;t
telepítjük fel másodikként, akkor
az minden figyelmeztetés nélkül
durván felülírja az aktuális boot
managert. Ha ezt tapasztaljuk, akkor olvassuk el a
következõ szakaszt.A &windows; letörölte a boot managert! Hogyan
lehet visszaállítani?A &os;-hez tartozó boot managert
háromféleképpen tudjuk
újratelepíteni:Indítsuk el a DOS-t, lépjünk be a
&os; terjesztéshez tartozó tools
könyvtárba és keressük meg a
bootinst.exe nevû
állományt. Indítsuk el a
következõ módon:...\TOOLS>bootinst.exe boot.binEkkor a boot manager visszakerül a
helyére.Használjuk a &os;-hez létrehozott
rendszerindító lemezeket, és a
telepítõben válasszuk a
Custom (Egyéni
telepítés) menüpontot, majd azon
belül válasszuk a
Partition
(Partíció) pontot. Itt válasszuk
ki azt a meghajtót, ahol korábban a boot
managerünk volt (ez valószínûleg
a felsorolásban az elsõ lesz) és
amikor belépünk a
partíciószerkesztõbe, akkor
egybõl válasszuk a Write
(W) opciót (tehát ne
változtassunk semmit). Ez
megerõsítést fog kérni, amire
válasszuk a &gui.yes; gombot, és amikor a
boot manager kiválasztása rész
jelenik meg, válasszuk a FreeBSD
Boot Manager pontot. Ezzel a boot manager
újra a lemezre íródik.
Miután ezzel végeztünk,
lépjünk ki a telepítõbõl
és indítsuk újra a
rendszerünket a megszokott módon.Indítsuk a rendszerünket a &os;
rendszerindító lemezérõl (vagy
CD-jérõl), majd válasszuk a
telepítõben a
Fixit (Javítás)
menüpontot. Ezután válasszuk a
javítófloppy vagy a(z
élõ
állományrendszerrel rendelkezõ) 2.
CD használatát, majd lépjünk
be a javításhoz elindított
parancsértelmezõbe. Ezt követõen
adjuk ki az alábbi parancsot:Fixit#fdisk -B -b /boot/boot0 eszközA parancsban az
eszköz helyére
annak az eszköznek a nevét adjuk meg,
amelyrõl a rendszert szoktuk indítani,
például ad0 (az
elsõ IDE-lemez), ad4 (az
elsõ IDE-lemez valamelyik vezérlõn),
da0 (az elsõ SCSI-lemez)
stb.Az A, T és X sorozatú IBM Thinkpad
laptopok lefagynak a &os; telepítése
utáni elsõ indulásuk során. Hogy
lehet ezen segíteni?Ezeken a gépeken az IBM BIOS-ának egy
korai hibás változata található,
amely a &os; által használt
partíciókat tévesen
suspend-to-disk típusú
partícióknak tekinti. Ennek
következtében amikor a BIOS
megpróbálja értelmezni a &os;
által létrehozott partíciót,
megakad.Az IBM
Ahogy Keith Frechette
(kfrechet@us.ibm.com) írta
levelében. szerint az alábbi típus/BIOS
változatokban található meg ez a
hiba.TípusBIOST20IYET49WW vagy késõbbiT21KZET22WW vagy késõbbiA20pIVET62WW vagy késõbbiA20mIWET54WW vagy késõbbiA21pKYET27WW vagy késõbbiA21mKXET24WW vagy késõbbiA21eKUET30WWÚgy értesültünk, hogy az IBM
BIOS-ok késõbbi változataiban ismét
felbukkant ez a típusú hiba.
Ebben az üzenetben &a.nectar; a &a.mobile;
tagjainak egy olyan módszert mutat be, ami
segíthet, ha az újabb típusú IBM
laptopunk nem tudja elindítani a &os;-t, és
így váltani tudunk a BIOS elõzõ vagy
következõ verziójára.Ha régebbi típusú BIOS-szal
rendelkezünk és a frissítés nem
megoldható, akkor a &os;-t telepíthetjük
úgy is, hogy megváltoztatjuk a &os;
által használt partíció
azonosítóját és egy olyan
rendszerindító blokkot telepítünk,
amelyik képes ezt kezelni.Ehhez elõször is a gépet egy olyan
állapotba kell visszahoznunk, ahol már
túl tudunk jutni a rendszerindító
képernyõn. Ezt úgy tudjuk elérni,
ha nem engedjük, hogy a gép indulása
közben észrevegye az elsõdleges lemezen
található &os; partíciót. Erre
az egyik lehetséges megoldás, ha a
gépbõl ideiglenesen eltávolítjuk a
merevlemezt és átrakjuk egy régebbi
ThinkPadba (például egy ThinkPad 600-as
típusba) vagy a megfelelõ
átalakító használatával
az asztali számítógépünkbe.
Miután ezzel megvagyunk, töröljük le a
&os; partícióját és tegyük
vissza a lemezt. Ekkor a ThinkPad újból
mûködõképes lesz.Ezt követõen az alábbi
utasításokat követve tudjuk
telepíteni a &os;-t:Töltsük le a boot1
és boot2
állományokat a
címrõl. Olyan helyre tegyük ezeket,
ahol késõbb is még el tudjuk
érni.A megszokott módon telepítsük a
&os;-t a ThinkPadre. Ilyenkor ne
használjuk a Veszélyesen
dedikált (Dangerously Dedicated)
módot. A telepítés
befejezése után ne
indítsuk újra a gépet.Váltsunk át a vészhelyzetekben
használatos parancsértelmezõre
(Emergency Holographic Shell, AltF4)
vagy indítsuk el egy javításhoz
használt (fixit)
parancsértelmezõt.Az &man.fdisk.8; segítségével
változtassuk meg a &os;-s partíció
azonosítóját a
165 értékrõl a
166 értékre (ezt a
típust az OpenBSD használja).Másoljuk át az imént
letöltött boot1 és
boot2 állományokat a
helyi állományrendszerre.A &man.disklabel.8;
segítségével
rögzítsük a boot1
és boot2 tartalmát a
&os; slice-unkra.&prompt.root; disklabel -B -b boot1 -s boot2 ad0snahol az n annak a
slice-nak a sorszáma, ahová a &os;-t
telepítettük.Indítsuk újra a gépet. A
rendszerindító parancssorban ekkora
megjelenik az OpenBSD
indításának lehetõsége.
Ezen keresztül tudjuk a &os;-t
elindítani.A kedves Olvasónak meghagytuk azt az esetet,
amikor ugyanezen a konfiguráción OpenBSD
és &os; rendszereket akarunk egyszerre
használni.Lehet telepíteni hibás szektorokat
tartalmazó lemezre is?Igen, ez lehetséges, de egyáltalán
nem ajánlott.Manapság ha egy IDE-meghajtón hibás
szektorokat találunk, akkor az arra utal, hogy
hamarosan tönkremegy (a meghajtó belsõ
átképezõ funkciói már
képesek megbirkózni a rossz szektorok
növekvõ számával, ami arra enged
következtetni, hogy a lemez felülete jelentõs
mértékben sérült). Ezért
inkább egy új merevlemezes meghajtó
vásárlását javasoljuk.Ha hibás SCSI-meghajtónk van, ezt a választ olvassuk
el.Furcsa dolgok történnek a
telepítõfloppy használata közben! Mi
okozhatja?Ha olyan furcsa dolgokkal találkozunk a
telepítõfloppy használata során,
mint például a lemez állandó
darálása vagy a rendszer váratlan
újraindulása, akkor a következõ
három kérdést érdemes
feltennünk magunknak:Biztos, hogy új, frissen formázott,
teljesen hibamentes floppykat használunk
(tehát olyanokat, amelyeket egy frissen bontott
dobozból vettünk ki, és nem
olyanokat, amelyeket valamelyik magazin
mellékletébõl szedtük ki vagy
éppen három évig az ágy
alatt tároltunk)?Biztos, hogy bináris (vagy image)
módban töltöttük le a lemezek
image-eit? (Ne szégyelljük, mindenki
életében legalább egyszer
töltött már le véletlenül
bináris állományt szöveges
formátumban!)&windows; 95 vagy &windows; 98 alatt DOS
módban használtuk az
fdimage vagy
rawrite parancsot? Ezek az
operációs rendszerek
általában nem férnek össze az
olyan programokkal, amelyek közvetlenül a
hardverrel akarnak kommunikálni, amire a lemezek
írásához is szükség
van. Ez a probléma leginkább akkor
merülhet fel, amikor a grafikus felületen
belül egy DOS ablakban futtatjuk ezeket a
programokat.Kaptunk olyan visszajelzést is, hogy gondjaink
lehetnek, ha &netscape;-pel töltjük le a
rendszerindító lemezeket, ezért
lehetõség szerint igyekezzünk más
FTP klienst használni.ATAPI CD-meghajtóról indult a rendszer, de
a telepítõ szerint nem található
semmilyen CD-meghajtó. Hova tûnt?Ezt a problémát általában
egy rosszul beállított CD-meghajtó
okozza. A CD-meghajtó rengeteg
számítógépben a
másodlagos IDE-vezérlõ slave (szolga)
portján található, a master (mester)
port használata nélkül. Ez az ATAPI
specifikációi szerint nem szabályos, de
a &windows; ezzel különösebben nem
törõdik, a BIOS pedig egyszerûen figyelmen
kívül hagyja a rendszer indítása
során. Ezért képes a BIOS ilyenkor
látni a CD-meghajtót, és ezért
nem képes a &os; teljes
telepítésnél használni.Ezen úgy tudunk segíteni, ha a
CD-meghajtónkat az IDE-vezérlõn
átállítjuk masterre, vagy arra az
IDE-vezérlõre teszünk egy master
eszközt.PLIP (Parallel Line IP) használatával
lehet laptopra telepíteni?Igen. Ehhez csupán egy szabványos
Laplink-kábel kell. Amennyiben szükséges,
a párhuzamos vonali
hálózatkezelés
beállításához olvassuk el kézikönyv
PLIP-rõl szóló
részét.A lemezmeghajtók esetében milyen
geometriai beállításokat érdemes
használni?A lemez geometriája alatt a
lemezen található cilinderek, fejek
és a sávonkénti szektorok
számát értjük. Ezt a
továbbiakban csak CHS-értéknek
nevezzük (mint Cylinder/Head/Sector). Ebbõl
állapítja meg a PC-s BIOS, hogy a lemezen
honnan kell olvasnia és hova kell
írnia.Ez rengeteg félreértést okoz az
újdonsült rendszergazdák
számára. Elõször is
megemlítenénk, hogy egy SCSI-lemez
fizikai geometriája ebben az
esetben teljesen lényegtelen, mivel a &os;
lemezblokkokban gondolkozik. Igazából nem
létezik a fizikai geometria fogalma,
ugyanis a szektorok sûrûsége a lemezen
felületén belül sem állandó.
Amit a gyártók általában
fizikai geometriának hívnak, az
általában az a geometria, amely a legkevesebb
helyveszteséggel jár. Az IDE-lemezek
esetében a &os; ugyan CHS-értékekkel
dolgozik, de ezt minden modernebb meghajtó
legbelül blokkhivatkozásokká
alakítja.Egyedül tehát a logikai
geometria számít. Ez a válasz, amikor a
BIOS megkérdezi a meghajtónkat: Mik a
geometriai beállításaid?,
és ennek felhasználásával
kommunikál vele a késõbbiekben. Mivel a
&os; is ezt az értéket használja fel a
rendszer indításánál, fontos,
hogy jól adjuk meg. Ez különösen
abban az esetben számít, amikor több
operációs rendszer is található
a lemezen, hiszen mindegyiküknek azonos geometriai
beállításokat kell használniuk.
Ellenkezõ esetben komoly gondok léphetnek fel a
rendszer indítása során!A SCSI-lemezek esetében a
beállítandó geometria
értéke attól függ, hogy a
vezérlõn használjuk-e a
bõvített fordítás
támogatását (extended translation
support, amelyet gyakran csak úgy neveznek, hogy
Support for DOS disks >1GB vagy ehhez
hasonlóan). Ha ezt letiltottuk, akkor
használjuk az N cilinder,
64 fej és 32 szektor
sávonkénti felírást, ahol
N a lemez MB-okban
számított mérete. Így
például egy 2 GB méretû lemez
geometriai beállítása
2048 cilinder, 64 fej és 32 szektor
sávonként.Ha viszont
engedélyeztük (ami gyakran
elõfordul, mivel így lehet az &ms-dos; bizonyos
korlátozásait megkerülni) és a
lemez kapacitása 1 GB-nál több,
adjunk meg M cilindert, 255
fejet, 63 (és nem 64) szektort
sávonként, ahol az
M a lemez MB-okban mért
kapacitása osztva 7,844238-al (!). Tehát az
iménti példában is említett
2 GB-os meghajtó esetében 261 cilindert,
255 fejet és sávonként 63 szektort
kapunk.Ha nem lennénk benne biztosak, vagy a &os;-nek a
telepítés közben nem sikerül
megállapítania a lemez geometriai
beállításait, mi magunk is könnyen
meg tudjuk határozni, ha készítünk
egy kis méretû DOS partíciót a
lemezen. A BIOS ekkor észlelni fogja a
megfelelõ geometriai
beállításokat, és ha már
nincs rá tovább szükségünk,
akkor a partíciószerkesztõben nyugodtan
törölhetjük. Hálózati
kártyák és hasonló hardverek
programozásához azonban még a
késõbbiekben hasznos lehet.Használhatjuk viszont a &os;-hez mellékelt
pfdisk.exe segédprogramot is.
Ezt a &os; CD vagy a &os; FTP oldalainak tools
könyvtárában találhatjuk meg.
Ennek a programnak a segítségével ki
tudjuk deríteni, hogy a lemezen levõ többi
operációs rendszer milyen geometriai
beállításokat használ. Az
így kapott értékeket fel tudjuk
használni a
partíciószerkesztõben.Van valamilyen korlátozás a lemezek
felosztására vonatkozóan?Igen. A rendszerindításhoz
használt (gyökér)partíciónak
az 1024. cilinder alatt kell kezdõdnie, mivel a BIOS
csak így képes betölteni onnan a
rendszermagot. (Ez a korlátozás a PC-s
BIOS-ok miatt van, nem a &os; miatt.)A SCSI-lemezek esetében ez
általában azt jelenti, hogy
rendszerindításhoz használt
partíciónak az elsõ 1024 MB alatt
kell kezdõdnie (vagy az elsõ 4096 MB alatt,
ha a bõvített fordítást is
engedélyeztük — lásd az
elõzõ kérdést). Az IDE-lemezek
esetében ez 504 MB-nak felel meg.A &os; kompatibilis valamilyen disk managerrel?A &os; felismeri az Ontrack Disk
Managert és figyelembe veszi. A
többi disk managert nem támogatja.Ha egyedül csak a &os;-t akarjuk használni,
akkor nincs szükségünk disk managerre.
Egyszerûen csak állítsunk be egy akkora
méretû lemezt, amivel a BIOS képes
még megbirkózni (a határ
általában 504 MB) és majd a &os;
kideríti, hogy valójában mennyi hely
áll a rendelkezésére. Ha
régebbi gyártmányú
merevlemezünk van MFM-vezérlõvel, akkor a
&os;-nek konkrétan meg kell mondanunk, hogy mennyi
cilindert használhat.Ha a &os; mellett más operációs
rendszereket akarunk használni, akkor ezt disk manager
nélkül is megtehetjük. Egyedül arra
kell vigyáznunk, hogy a &os;
indításához használt
partíció és a másik
operációs rendszer slice-a az elsõ 1024
cilinder alatt kezdõdjön. Ha nagyon
körültekintõek akarunk lenni, akkor erre a
célra egy 20 MB méretû
rendszerindító partíció
tökéletesen megfelel.Amikor a &os;-t telepítése után
elõször elindul, akkor egy
Hiányzó operációs
rendszer vagy egy Missing Operating
System hiba jelenik meg. Mi
történt?Ez általában akkor fordul elõ, amikor
a &os; és a DOS vagy más operációs
rendszerek nem értenek egyet a lemez geometriai
beállításaiban.
Telepítsük újra a &os;-t és
ezúttal figyelmesen kövessük a fentebb
adott utasításokat!Miért nem lehet továbblépni a boot
manager F?
menüjénél?Ez az elõbbi kérdéssel kapcsolatos
probléma egy másik tünete: a BIOS és
a &os; által használt geometriai
beállítások nem egyeznek! Amennyiben a
vezérlõ vagy a BIOS támogatja a
cilinderek fordítását (amelyet gyakran
>1GB driver support néven
találhatunk meg), akkor próbáljuk meg
átállítani és így
újratelepíteni a &os;-t.Az összes forrást telepíteni
kell?Alapvetõen nem. Ettõl függetlenül
azonban javasoljuk legalább a base
források telepítését, ahol
számos olyan állomány
megtalálható, amelyekre a
késõbbiekben még hivatkozni fogunk,
valamint a sys (rendszermag)
források telepítését, amelyben a
rendszermag forrásai találhatóak. A
rendszeren belül azonban a mûködéshez
semmi sem igényli közvetlenül a
források jelenlétét, egyedül
talán a rendszermag
beállítását végzõ
&man.config.8; program. A rendszermag forrásainak
kivételével a rendszerben a
fordítás menetét úgy
építettük fel, hogy akár egy
írásvédett módon csatlakoztatott
NFS állományrendszerrõl is képes
legyen dolgozni (a rendszermag forrásaira
vonatkozó megszorítások miatt azonban
azt javasoljuk, hogy ezt közvetlenül ne a
/usr/src
könyvtárba csatlakoztassuk, hanem egy
másik helyre, ahol aztán szimbolikus linkek
segítségével másoljuk le a
forráskód
könyvtárszerkezetének legfelsõ
szintjét).Ha kéznél vannak a források
és tisztában vagyunk a
rendszerfordítás folyamatával, akkor a
késõbbiekben sokkal könnyebben tudjuk a
&os; rendszerünket frissíteni.A források egyes részeinek
kiválasztásához lépjünk be a
telepítõprogram
Custom (Egyéni
telepítés), majd a
Distributions
(Terjesztések) menübe. Kell rendszermagot fordítani?Egy új rendszermag fordítása
korábban fontos része volt a &os;
telepítésének, de a legújabb
kiadások már kihasználják a
rendszermag beállításának sokkal
baratságosabb módszereit is. A &os; 5.X
és az azt követõ változatokban
már a betöltõbõl könnyen be
tudjuk állítani a rendszermagot a
beépített hints
(eszközökre vonatkozó
útmutatások) módszere által
felkínált rugalmasabb
lehetõségeknek
köszönhetõen.Egy új rendszermag készítése
viszont olyan esetekben még továbbra is hasznos
lehet, amikor csak azokat a meghajtókat akarjuk
megtartani benne, amelyekre ténylegesen
szükségünk van. Ezzel többnyire
memóriát tudunk megspórolni,
habár a legtöbb rendszer esetében erre
igazából nincs
szükségünk.A jelszavak tárolására
használható-e DES, Blowfish vagy MD5,
és ha igen, akkor hogyan lehet megadni?A &os; alapértelmezés szerint
MD5-alapú jelszavakat
használ. Ezeket a DES
algoritmuson alapuló hagyományos &unix;-os
jelszavaknál sokkal megbízhatóbbnak
tartják. A DES formátum természetesen
továbbra is elérhetõ olyan esetekben,
amikor a kevésbé biztonságos
jelszavakat használó régi
operációs rendszerekkel akarunk
együttmûködni. Emellett a &os;-ben
lehetõségünk van a sokkal
biztonságosabb Blowfish jelszóformátum
használatára is. Az új jelszavak
formátumát az
/etc/login.conf
állományban található
passwd_format bejelentkezési
tulajdonság adja meg, amelynek értéke
des, blf (amennyiben
elérhetõ), illetve md5 lehet.
A bejelentkezési tulajdonságokkal kapcsolatban
a &man.login.conf.5; man oldalt érdemes
elolvasni.A rendszerindító lemez elõször
elindul, de aztán miért akad meg a
Probing Devices...
képernyõn?Ha a rendszerünkhöz IDE-s &iomegazip; vagy
&jaz; meghajtót csatlakoztattunk, akkor
próbálkozzunk újra az
eltávolítása után. A
rendszerindító floppy ugyanis hajlamos
összekeverni a meghajtókat. A rendszer
telepítése után természetesen
újra csatlakoztathatjuk a meghajtót. Ezt
remélhetõleg egy következõ
verzióban már kijavítják.A rendszer telepítését
követõ újraindítás után
miért jelenik meg a panic: can't mount
root hibaüzenet?Ez a hiba a rendszerindító blokk és
a rendszermag közti
félreértésbõl, a lemezes
eszközök helytelen kezelésébõl
fakad. Ilyen hibát általában olyan
rendszerekben kapunk, ahol két masternek
beállított IDE-lemez található
vagy ha az egyes IDE-vezérlõkre csak egy-egy
eszközt csatlakoztattunk és a &os;-t a
másodlagos IDE-vezérlõre
kapcsolódó lemezre telepítettük.
Ekkor a rendszerindító blokk szerint a
rendszert az ad0 (de a BIOS-ban a
második) lemezre telepítettük,
miközben a rendszermag szerint ez a másodlagos
IDE-vezérlõn elhelyezkedõ elsõ lemez,
az ad2. Az eszközök
felkutatása után a rendszermag
megpróbálja a rendszerindító
blokk által nyilvántartott
eszközrõl, az ad0
lemezrõl csatlakoztatni a rendszerindító
partíciót, ami viszont számára a
ad2 eszköz lesz, így ez
a próbálkozása meghiúsul.Ezt a félreértést a
következõ módokon lehet helyretenni:Indítsuk újra a rendszert és
nyomjuk le az Enter billentyût,
amikor a Booting kernel in 10 seconds; hit
[Enter] to interrupt szöveg megjelenik.
Ezzel a rendszerbetöltõ parancssorába
kerülünk.Ezután gépeljük be a
set
root_disk_unit="lemezszám"
sort. Itt a
lemezszám
értéke 0 lesz, ha a
&os;-t az elsõdleges IDE-vezérlõ
master portján levõ merevlemezre
telepítettük, 1, ha az
elsõdleges IDE-vezérlõ slave
portjára, 2, ha a
másodlagos IDE-vezérlõ master
portjára, és végül
3, ha a másodlagos
IDE-vezérlõ slave portjára.Most már begépelhetjük, hogy
boot, és így a
rendszernek el is kell indulnia.Ha ezt a változtatást
véglegesíteni akarjuk (vagyis nem akarjuk
ugyanezt eljátszani a &os; minden egyes
indítása során), akkor a
/boot/loader.conf.local
állományba vegyünk fel a
root_disk_unit="lemezszám"
sort.Tegyük át a &os;-t tartalmazó
lemezt az elsõdleges IDE-vezérlõre,
és ezzel megszûnik az iménti
félreértés.Mennyi memóriát tudunk
használni?A memóriára vonatkozó
korlátozások platformonként
változnak. Egy szabványos &i386;
telepítés esetén például
ez a határ 4 GB, de &man.pae.4;
segítségével akár még
ennél több is elérhetõ. Ehhez
olvassuk el az &i386; platformon 4 GB-nál
több memória használatára
vonatkozó utasításokat.
A &os;/pc98 esetén a korlát szintén
4 GB, azonban itt a PAE nem használható.
A &os; által támogatott összes többi
architektúra elméletileg ennél
több memóriát képes kezelni
(több terabyte-ot).Mik az FFS állományrendszerek
korlátai?Az FFS állományrendszerek
méretének elméleti határa
8 TB (2 milliárd blokk), illetve az
alapértelmezett 8 KB-os blokkméret
esetén 16 TB. A gyakorlatban azonban
szoftveresen ebbõl 1 TB használható
ki, de kisebb módosításokkal
akár 4 TB-os állományrendszer is
használható (és létezik).Egyetlen FFS állományrendszerbeli
állomány mérete
megközelítõleg legfeljebb
1 milliárd blokk lehet, ami 4 KB-os
blokkmérettel számolva 4 TB-ot
jelent.
4 KB-os blokkméret esetén a
háromszoros indirekcióval származtatott
blokkok a gyakorlatban is kihasználhatóak,
és az egészet elméletben egyedül
csak az állományrendszerben így
ábrázolható blokkok maximális
száma korlátozná (ami kb.
10243 + 10242 + 1024),
azonban a gyakorlatban ezt az
állományrendszeri blokkokra vonatkozó
1 GB - 1 méretû (rossz) határ
korlátozza. Az állományrendszeri
blokkok számát ugyanis ki kellene terjeszteni
a 2 GB - 1 méretig. 2 GB - 1
számú blokk használata körül
jelentkezik ugyan néhány hiba, de ezek
4 KB-os blokkméret esetén nem is
érhetõek el.A 8 KB-nál nagyobb blokkméretek
esetén mindenre a blokkok 2 GB - 1
maximális mennyisége érvényes,
de a gyakorlatban ezt a blokkok számának
1 GB - 1 határa korlátozza. Az
eredeti 2 GB - 1 mennyiségû blokk
használata gondokat okozhat.Egy új rendszermag fordítása
után miért jelenik meg a
archsw.readin.failed hibaüzenet
az indítás során?Mert a rendszermag és a
felhasználói programok verziója
eltér. A rendszermag frissítésekor
feltétlenül használjuk a make
buildworld és a
make buildkernel
parancsokat is!A rendszerindítás második
fokozatában közvetlenül meg tudjuk adni a
betöltendõ rendszermagot, ha a betöltõ
indítása elõtt, a |
jel megjelenésekor lenyomunk egy
billentyût.A telepítés megszakad a rendszer
indítása közben, mit lehet ezzel
kezdeni?Próbáljuk meg letiltani az ACPI
támogatást. Ezt úgy tudjuk megtenni,
hogy amikor a rendszertöltõ elindul, lenyomjuk a
Szóköz billentyût. Ekkor
a következõt kapjuk:OKItt gépeljük be az alábbi
parancsot:unset acpi_loadMajd ezt:bootHardverkompatibilitásÁltalános kérdésekA &os; rendszerükhöz szeretnénk
hardvert vásárolni. Melyik
gyártmány/márka/típus a
legjobb?Ez állandó téma a &os;
levelezési listákon. Mivel a hardverek gyorsan
változnak, nem is számíthatunk
másra. Továbbra is
határozottan javasoljuk, hogy olvassuk át
figyelmesen a &os; &rel.current; vagy
&rel2.current;
változatához tartozó
hardverjegyzéket (Hardware Notes) és
nézzünk után a levelezési
listák
archívumában mielõtt
bármire is rákérdeznéünk a
legfrissebb és legjobb hardverek ügyében.
Könnyen elõfordulhat, hogy éppen a
múlt héten esett szó arról a
típusú eszközrõl, amirõl
éppen érdeklõdni
szeretnénk.Ha laptoppal kapcsolatban lenne
kérdésünk, akkor nézzük meg a
&a.mobile; archívumát. Minden más
esetben érdemes inkább a &a.questions;
archívumait megnézni vagy az adott hardverhez
tartozó levelezési listát
böngészni.MemóriaA &os; képes 4 GB-nál,
16 GB-nál vagy akár
48 GB-nál több memóriát
(RAM-ot) támogatni?Igen. A &os; operációs
rendszerként képes az adott platformon
kihasználni az összes rendelkezésre
álló fizikai memóriát. Ne
felejtsük el azonban, hogy az egyes platformokon
ennek határa eltér. Például
az &i386; platformon a PAE
használata nélkül legfeljebb csak
4 GB memóriát tudunk elérni
(amely azonban a PCI számára fenntartott
címtér miatt a valóságban
némileg kevesebb), illetve a
PAE használatával
legfeljebb 64 GB memóriát. Az AMD64
platformokon viszont már egészen 1 TB
memóriáig is elmehetünk.A &os; miért jelez 4 GB-nál
kevesebb memóriát &i386;
architektúrájú
számítógépeken?Az &i386; platformon a címtér
32 bites, ami azt jelenti, hogy itt legfeljebb
4 GB memória címezhetõ meg
(és érhetõ el).
Ráadásul a címtér bizonyos
tartományait a hardvereszközök
számára tartják fenn
különbözõ célokra,
például a PCI eszközök
mûködtetésére és
vezérlésére, a videomemória
hozzáférésére stb.
Ennélfogva az operációs rendszer
és annak rendszermagja által
felhasználható teljes memória
mérete jelentõsen kevesebb, mint 4 GB.
Ezen a típusú
konfigurációkon általában
3,2 GB és 3,7 GB között mozog
a maximálisan kihasználható fizikai
memória mérete.Ha mégis 3,2 vagy
3,7 GB-nál több memóriát
szeretnénk elérni (4 GB-ot vagy
akár annál is többet), akkor ahhoz a
PAE nevû speciális
módosításra lesz
szükségünk. A PAE a
Physical Address Extension
(Fizikai címkiterjesztés)
rövidítése, és egy olyan
módszerre utal, amellyel a 32 bites x86
típusú processzorokon tudunk
4 GB-nál több memóriát
címezni. Lényegében nem
csinál mást, csak 4 GB-os
határ felé képezi le azokat a
memóriaterületeket, amelyeket
egyébként a hardverek
részére tartanak fenn, ezzel
kiegészíti a fizikai
memóriát (&man.pae.4;). A
PAE használatának
számos hátránya van: ebben a
módban a megszokottnál (vagyis
PAE nélkül)
némileg lassabb a memória
elérése, illetve ilyenkor a
betölthetõ rendszermag-modulok (lásd
&man.kld.4;) sem támogatottak. Emiatt az
összes meghajtót bele kell
fordítanunk a rendszermagba.A PAE használatát
általában a PAE
nevû, a rendszermaghoz gyárilag
mellékelt konfigurációs
állománnyal engedélyezhetjük.
Ezt eleve úgy állították
össze, hogy gond nélkül
készíteni tudjuk egy ilyen rendszermagot.
Érdemes azonban megemlíteni, hogy a
konfigurációs állomány
bizonyos tekintetben egy kissé
konzervatív, mivel egyes PAE
esetén használhatatlannak megjelölt
meghajtók valójában mégis
minden gond nélkül
hozzáadhatóak a
konfigurációhoz. Ezzel kapcsolatban azt
javasoljuk, hogy ha az adott meghajtó
használható valamelyik 64 bites
architektúrán (például
AMD64-en), akkor nagy
valószínûséggel
PAE-vel is mûködni fog.
Amennyiben saját magunk szeretnénk egy
PAE-rendszermagot
készíteni, akkor a következõ
sort tegyük bele a konfigurációs
állományba:options PAEA PAE alkalmazása
napjainkban annyira már nem jellemzõ, mivel az
újabb x86 hardverek mindegyike képes
64 bites (AMD64 vagy &intel; 64) módban
futni. Ebben az esetben már lényegesen
nagyobb címtér használatára
nyílik lehetõségünk, így
nincs szükségünk további
trükkökre. A &os; támogatja az AMD64
architektúrát, így ha
4 GB-nál több memóriát
szeretnénk elérni, akkor inkább a
&os; ezen változatát érdemes
alkalmazni.Architektúrák és
processzorokA &os; az x86-on kívül támogat
más architektúrájú rendszereket
is?Igen. A &os; jelenleg az Intel x86 és az AMD64
architektúrákon mûködik. A Az Intel
EM64T, IA-64, &arm;, &powerpc;, sun4v és &sparc64;
architektúrák is támogatottak. A
további tervezett platformok között van
még a &mips; és az &s390;, a &mips;
aktuális állapotáról és
&a.mips; segítségével
értesülhetünk. Az újabb
architektúrákhoz kapcsolódó
általános jellegû
megbeszéléseket a &a.platforms; foglalja
össze.Amennyiben a
számítógépünk
architektúrája nem szerepel a jelenleg
támogatottak között, és valamilyen
gyors megoldásra lenne szükségünk,
akkor javasoljuk a NetBSD vagy az OpenBSD
használatát.A &os; támogatja a szimmetrikus
többprocesszoros (SMP) rendszereket?A &os; általánosságban véve
támogatja a többprocesszoros rendszereket, noha
egyes esetekben a BIOS vagy az alaplap
hibájából fakadóan
problémáink adódhatnak. A &a.smp;
átolvasása segíthet tisztázni
ezeket.A &os; képes kihasználni az Intel
processzorai által felkínált
HyperThreading (HTT) támogatás elõnyeit.
Az options SMP
beállítással fordított
rendszermagok alapból maguktól felismerik a
rendszerünkben található logikai
processzorokat. A &os; alapértelmezett
ütemezõje ezeket a logikai processzorokat a
többivel teljesen egyenrangúnak tekinti, vagyis
semmilyen ütemezési kérdés
eldöntésénél nem fogja
figyelembevenni az egy processzoron belül
elhelyezkedõ logikai processzorokat. Ezen naív
ütemezési felfogás miatt bizonyos
esetekben a rendszerünk teljesítménye nem
tökéletesen optimális, ezért
adódhatnak olyan helyzetek, amikor a
machdep.hlt_logical_cpus
sysctl-változó
segítségével szükséges
lehet a logikai processzorok használatának
letiltása. Ezenkívül még a
machdep.hlt_logical_cpus
sysctl-változón keresztül
lehetõségünk van leállítani
az üresjáratban mûködõ
processzorokat. Ennek részleteirõl
bõvebben a &man.smp.4; man oldalon olvashatunk.Merevlemezes, szalagos, CD- és
DVD-meghajtókA &os; milyen típusú merevlemezes
meghajtókat ismer?A &os; ismeri az EIDE-, SATA-, SCSI- és
SAS-meghajtókat (és a velük kompatibilis
vezérlõket, errõl bõvebben lásd
a következõ szakaszt), valamint az összes
olyan meghajtót, amely az eredeti Western
Digital (MFM, RLL, ESDI és
természetesen az IDE) interfészt
használja. Néhány egyedi
fejlesztésû ESDI vezérlõ nem fog
mûködni, ezért lehetõleg maradjunk a
WD1002/3/6/7 interfészeknél és azok
másolatainál.Milyen SCSI- vagy SAS-vezérlõket
ismer?A teljes listát a &os;
hardverjegyzékében találhatjuk meg a
&rel.current;
vagy &rel2.current;
kiadásban.Milyen szalagos meghajtókat ismer?A &os; a SCSI és QIC-36 (QIC-02
interfésszel) szabványokat ismeri. Ezek
közé értendõek a 8 mm-es
(más néven Exabyte) és
DAT-meghajtók is.Bizonyos régebbi 8 mm-es meghajtók
nem egészen kompatibilisek a SCSI-2 szabvánnyal,
ezért a &os;-vel sem feltétlenül
képesek együttmûködni.A &os; támogatja a szalagok
cseréjét?A &os; &man.ch.4; eszközön és a
&man.chio.1; parancson keresztül támogatja a SCSI
szabványú szalagcserélõket. A
használat pontos részleteirõl a
&man.chio.1; man oldalán olvashatunk
részletesebben.Ha nem az AMANDA vagy a
hozzá hasonló programokat használjuk,
amelyek alapból ismerik a
szalagcserélés lehetõségét,
akkor ne feledkezzünk meg arról, hogy a szalagot
csak az egyik helyrõl a másikra tudjuk mozgatni,
ezért nekünk kell figyelnünk arra, hogy
melyik rekeszben vannak szalagok és a
meghajtónak ezek közül melyiket kell
használnia.A &os; milyen CD-meghajtókat ismer?Bármilyen támogatott
SCSI-vezérlõhöz csatlakoztatható
SCSI-meghajtót ismer.Ezenkívül még az alábbi
CD-interfészek ismertek:Mitsumi LU002 (8 bites), LU005
(16 bites) és FX001D (16 bites, dupla
sebességû).Sony CDU 31/33ASound Blaster nem-SCSI CD-meghajtókMatsushita/Panasonic CD-meghajtókATAPI kompatibilis IDE CD-meghajtókAz összes ismert nem-SCSI kártya nagyon
lassan mûködik a SCSI-meghajtókhoz
képest, és bizonyos ATAPI CD-meghajtók
nem használhatóak.A Daemon News-tól és a
&os; Mall-tól rendelhetõ hivatalos &os;
CD-krõl akár közvetlenül el is tudjuk
indítani a rendszert.A &os; milyen CD-RW meghajtókat ismer?A &os; bármilyen ATAPI-kompatibilis IDE CD-R vagy
CD-RW meghajtót ismer. Ennek részleteit
lásd a &man.burncd.8; man oldalán.A &os; ezeken kívül még
tetszõleges SCSI CD-R vagy CD-RW meghajtót
támogat. A használatukhoz
telepítsük a cdrecord
programot a portok vagy csomagok közül, és
gondoskodjunk róla, hogy a
pass eszköz
támogatása benne legyen a
rendszermagban.A &os; ismeri az &iomegazip; meghajtókat?A &os; alapból ismeri a SCSI és ATAPI
(IDE) interfészen kommunikáló
&iomegazip; meghajtókat. A SCSI ZIP-meghajtók
ugyan egyedül az 5 és 6 target ID-krõl
hajlandóak mûködni, de ha a
SCSI-kártyánk BIOS-a támogatja, akkor
még a rendszert is el tudjuk indítani
róluk. Egyelõre nem tisztázott, hogy
milyen kártyák képesek a 0 és 1
ID-ken kívül máshonnan is rendszert
indítani, ezért ennek a
hozzá tartozó dokumentációben
érdemes utánajárnunk.A &os; ezenkívül még a
párhuzamos porton csatlakoztatható
ZIP-meghajtókat is ismeri. Ehhez
ellenõrizzük, hogy a rendszermagunkban
megtalálhatóak az
scbus0,
da0,
ppbus0 és
vp0 meghajtók (a
GENERIC rendszermagban a
vp0 kivételével
mindegyik szerepel). Segítségükkel a
párhuzamos vonalon csatlakozó meghajtó
a da0s4 eszközön
keresztül érhetõ el. Ennek
megfelelõen az állományrendszerek a
mount /dev/da0s4 /mntvagy (DOS
esetén) a mount -t msdosfs /dev/da0s4
/mnt parancs kiadásával
csatlakoztathatóak.Emellett még érdemes a GYIK cserélhetõ lemezes
meghajtókról szóló
részét is elolvasnunk ebben a
fejezetben, valamint a
formázásról
szóló megjegyzést az
adminisztrációról szóló
fejezetben.A &os; ismeri a &jaz;, EZ és a többi
cserélhetõ lemezes meghajtót?Használhatóak. Ezek többsége
SCSI eszköz, ezért a &os; SCSI-lemezként
látja, az IDE csatolós EZ pedig
IDE-meghajtóként érhetõ el.A rendszer indítása elõtt ne
felejtsük el bekapcsolni a külsõ
egységeket.Ha
tárolóeszközt akarunk cserélni a
rendszer mûködése közben, olvassuk el
a &man.mount.8;, &man.umount.8; és (SCSI
eszközök esetén) a &man.camcontrol.8; vagy
(IDE eszközök esetén) a &man.atacontrol.8;
man oldalakat, valamint a GYIK egy késõbbi
részében található részt a
cserélhetõ lemezes
meghajtókról.Egér és billentyûzetA &os; ismeri az USB billentyûzeket?A &os; alapból ismeri az USB billentyûzeket.
Miután engedélyeztük rendszerünkben
az USB billentyûzet támogatását,
az AT billentyûzet /dev/kbd0
lesz és az USB billentyûzet pedig
/dev/kbd1, már amennyiben
mind a kettõt csatlakoztattuk a
számítógépünkhöz. Ha
viszont csak USB billentyûzetünk van, akkor az a
/dev/ukbd0 lesz.Ha az USB billentyûzetet konzolban akarjuk
használni, akkor erre figyelmeztetnünk kell a
konzolos meghajtót. Ezt úgy tudjuk megtenni,
ha a következõ parancsot lefuttatjuk a rendszer
indítása közben:&prompt.root; kbdcontrol -k /dev/kbd1 < /dev/console > /dev/nullAmikor viszont csak USB billentyûzetünk van,
akkor az /dev/ukbd0
eszközön keresztül tudjuk elérni,
ezért a parancsnak ilyenkor így kell
kinéznie:&prompt.root; kbdcontrol -k /dev/ukbd0 < /dev/console > /dev/nullHa véglegesíteni akarjuk ezt a
beállítást, akkor tegyük a
keyboard="/dev/ukbd0" sort az
/etc/rc.conf
állományba.Miután ezt megcsináltuk, az USB
billentyûzet X alatt is mûködni fog minden
további beállítás
nélkül.Ezzel a paranccsal tudunk visszaváltani az
alapértelmezett billentyûzetre:&prompt.root; kbdcontrol -k /dev/kbd0 > /dev/nullA &man.kbdmux.4; meghajtón keresztül az
alábbi parancsok kiadásával
engedélyezhetjük az elsõdleges AT
billentyûzet és a másodlagos USB
billentyûzet párhuzamos
használatát a konzolon:&prompt.root; kbdcontrol -K < /dev/console > /dev/null
&prompt.root; kbdcontrol -a atkbd0 < /dev/kbdmux0 > /dev/null
&prompt.root; kbdcontrol -a ukbd1 < /dev/kbdmux0 > /dev/null
&prompt.root; kbdcontrol -k /dev/kbdmux0 < /dev/console > /dev/nullRészletesebb információkat az
&man.ukbd.4;, &man.kbdcontrol.1; és &man.kbdmux.4;
man oldalakon találhatunk.Az USB billentyûzet menet közbeni
csatlakoztatása és
leválasztása nem feltétlenül fog
mûködni. Ezért a problémák
elkerülése érdekében azt
javasoljuk, hogy a rendszer indítása
elõtt mindenképpen csatlakoztassuk a
billentyûzetet és hagyjuk egészen
úgy, amíg le nem
állítottuk.A nem szabványos buszos egereket hogyan lehet
beállítani?A &os; ismeri a buszos, illetve a Microsoft, Logitech
és az ATI által gyártott InPort buszos
egereket. A GENERIC rendszermag azonban
ehhez nem tartalmaz meghajtót. A rendszermag
konfigurációs állományába
a következõ sort kell megadni, ha egy buszos
egereket támogató rendszermagot akarunk
készíteni:device mse0 at isa? port 0x23c irq5A buszos egerekhez általában saját
interfészkártya is tartozik. Ezeket a
kártyákat a fentitõl eltérõ
portcímre és IRQ megszakításra
is beállíthatjuk. Részletesebb
információkat az egerünk man
oldalán és a &man.mse.4; man oldalon
olvashatunk.Hogyan lehet PS/2 (egérportos vagy
billentyûzetes) egeret
használni?Az PS/2 egereket alapból támogatjuk. Az
ehhez szükséges psm
meghajtó megtalálható a
rendszermagban.Ha a saját magunk által
összeállított rendszermagunk nem
tartalmazza ezt a meghajtót, akkor a
következõ sort kell felvennünk a
konfigurációs állományba:device psm0 at atkbdc? irq 12Miután a rendszermag a rendszer
indítása során helyesen észlelte
a psm0 eszközt,
magától létrejön.Az egeret az X Window Systemen kívül is
lehet valamilyen módon használni?Ha az alapértelmezett konzolos &man.syscons.4;
meghajtót használjuk, akkor a szöveges
felületû konzolokon az egérmutató
segítségével tudunk
szövegrészeket kijelölni és
másolni. Ehhez nem kell mást tennünk,
csupán elindítani a &man.moused.8;
egérdémont és engedélyezni az
egérmutatót a virtuális
konzolokon:&prompt.root; moused -p /dev/xxxx -t yyyy
&prompt.root; vidcontrol -m onItt az xxxx az egeret
leképezõ eszköz neve és az
yyyy az egérhez
használt protokoll típusa. Az
egérdémon a legtöbb egér
esetén képes magától
megállapítani az alkalmazott protokoll
típusát, kivéve a régebbi soros
egereket. Az auto érték
megadásával tudjuk aktiválni ezt az
automatikus felderítést. Amennyiben ez nem
mûködik, a &man.moused.8; man oldalán
nézhetünk után a támogatott
protokolloknak.Ha PS/2 egerünk van, akkor egyszerûen csak
vegyük fel a moused_enable="YES" sor
az /etc/rc.conf
állományba, és az
egérdémon elindul a rendszer
indítása közben. Valamint hogy ha az
egérdémont a konzol helyett az összes
virtuális konzolon is használni akarjuk, akkor
az /etc/rc.conf
állományba tegyük bele a
allscreens_flags="-m on" sort.Miután az egérdémon elindult,
valamilyen módon koordinálni kell az egér
hozzáférését az
egérdémon és az összes többi
program, például az X Window System
között. Errõl a
problémáról a GYIK Miért nem mûködik X
alatt az egér? kérdésében
olvashatunk részletesebb.Hogyan lehet szöveget kijelölni és
másolni a szöveges konzolban?Ahogy sikerült elindítanunk az
egérdémont (lásd az elõzõ szakaszt), tartsuk
lenyomva az egér elsõ (bal oldali)
gombját és az egér
mozgatásával jelöljük ki a
szöveget. Ezután nyomjuk le a második
(középsõ) gombját, amivel a kurzor
mellett megjelenik az imént kijelölt
szöveg. A harmadik (jobb oldali) gomb
segítségével a szöveg
kijelölését tudjuk
kiterjeszteni.Amennyiben az egerünkön nem
található középsõ gomb, az
egérdémon beállításainak
segítségével
megpróbálkozhatunk emulálni vagy
áthelyezni a vele kapcsolatos funkciókat egy
másik gombra. A &man.moused.8; man oldalán
olvashatunk errõl részletesebben.Az egéren van mindenféle görgõ
és gomb. Ki lehet ezeket valahogy használni
&os; alatt is?A válaszunk erre sajnos csupán annyi, hogy
Attól függ. A
különbözõ
kiegészítõkkel rendelkezõ egerekhez
általában egy külön meghajtó
szükségeltetik. Hacsak az egér
meghajtóprogramja vagy a hozzá tartozó
felhasználói program nem nyújt
valamilyen támogatást, az eszköz
egyszerûen csak egy szabványos két- vagy
háromgombos egérként fog
funkcionálni.Ha az X Window környezetben akarunk
görgõket használni, esetleg ezt a szakaszt érdemes
elolvasnunk.A laptopokon megtalálható
egér/trackball/touchpad hogyan
használható?Olvassuk el az elõzõ
kérdésre adott választ.A Delete billentyû hogyan
használható a sh és
csh
parancsértelmezõkben?A Bourne Shell
esetében az alábbi sorokat kell megadnunk az
.shrc állományunkban.
Lásd &man.sh.1; és &man.editrc.5;.bind ^? ed-delete-next-char # a konzolhoz
bind ^[[3~ ed-delete-next-char # az xtermhezA C Shell esetében a
következõ soroknak kell az
.cshrc állományba
kerülnie. Lásd &man.csh.1;.bindkey ^? delete-char # a konzolhoz
bindkey ^[[3~ delete-char # az xtermhezTovábbi információkat ezen az
oldalon találhatunk.Hálózati és soros
eszközökA &os; milyen hálózati
kártyákat ismer?Ezek teljes listáját a &os; egyes
kiadásaihoz tartozó hardverjegyzékben
találjuk meg.A &os; ismer szoftveres modemeket, például
winmodemeket?A &os; különbözõ
kiegészítõ szoftvereken keresztül
több szoftveres modemet is támogat. A
comms/ltmdm port
például a szélesebb körben
elterjedt Lucent LT chipsetes modemekhez ad
támogatást.A &os; azonban nem telepíthetõ szoftveres
modemen keresztül. A hozzá tartozó
szoftvert csak az operációs rendszer
telepítése után tudjuk
telepíteni.Van natív meghajtó a Broadcom 43xx
típusú kártyákhoz?Nem, és valószínûleg nem is
lesz.A Broadcom nem hajlandó nyilvánossá
tenni azokat az információkat, amik az
általuk gyártott vezeték
nélküli chipsetek programozásához
lennének szükségesek, mivel szoftveresen
vezérelt rádiót használnak. Az
alkatrészeik FCC szintû
engedélyeztetéséhez ugyanis valamilyen
módon gondoskodniuk kell róla, hogy a
felhasználók nem képesek bizonyos
dolgokat módosítani vele kapcsolatban,
például a mûködési
frekvenciát, a modulációs
paramétereket vagy a kimenõ
teljesítményt. A chipsetek
programozásának ismerete nélkül
azonban szinte lehetetlen elkészíteni
hozzájuk a megfelelõ meghajtót.A &os; milyen többportos soros vonali
kártyákat ismer?Ezek listáját a kézikönyv
Soros vonali
kommunikációról szóló
része tartalmazza.Bizonyos névtelen másolatok is
használhatók, különösen azok,
amelyek magukat AST-kompatibilisnek nevezik.Az ilyen kártyák
beállításáról a &man.sio.4;
man oldalon olvashatunk részletesebben.Hogyan lehet a boot: parancssort
elõhozni soros vonali konzolon?Olvassuk el a kézikönyvben ezt a
fejezetet.HangA &os; milyen hangkártyákat ismer?A &os; rengeteg hangkártyát ismer, (ennek
részleteit lásd a &os; kiadásait
tartalmazó honlapon és a &man.snd.4;
man oldalon). Korlátozott módon az MPU-401
és a vele kompatibilis MIDI-kártyákat
is támogatja. A µsoft; Sound System
specifikációinak megfelelõ
kártyákat tudjuk használni.Ez azonban csak a hangra vonatkozik! Ez a
meghajtó a &soundblaster; kivételével
nem támogatja a kártyákon
található CD-, SCSI- és joystick
csatlakozásokat. A &soundblaster; SCSI
csatlakozása és bizonyos nem-SCSI
CD-meghajtókat ugyan támogat, de rendszert
például nem tudunk róluk
indítani.Miért nincs hang a &man.pcm.4; által
támogatott hangkártyán?Egyes hangkártyák esetében a
hangerõ minden indításkor nullára
állítódik. Ezért ilyenkor
mindig ki kell adni a következõ parancsot:&prompt.root; mixer pcm 100 vol 100 cd 100Egyéb eszközökKépes a &os; kihasználni az
energiagazdálkodási lehetõségeket
egy laptopon?A &os; bizonyos gépeken képes az
APM használatára.
Errõl az &man.apm.4; man oldalon találunk
pontosabb leírást.A &os; ezenkívül még a
legújabb hardverekben megtalálható
ACPI lehetõségeit is
igyekezik kihasználni. Errõl
részletesebben az &man.acpi.4; man oldalon
olvashatunk. Amennyiben a rendszerünk egyaránt
tartalmazza az APM és az
ACPI támogatását,
bármelyiket használhatjuk. Ilyen esetben
javasoljuk mind a kettõ
kipróbálását és az
igényeinkhez leginkább illeszkedõ
megoldás kiválasztását.Hogy lehet letiltani az ACPI
támogatását?Tegyük bele az alábbi sort az
/boot/device.hints
állományba:hint.acpi.0.disabled="1"Miért fagynak le a Micron típusú
rendszerek indulás közben?Egyes Micron gyártmányú alaplapokon
olyan PCI BIOS található, amely nem felel meg az
szabványoknak, és ezért a &os; nem tud
elindulni, mivel a PCI eszközök nem jelentik le az
általuk használt címeket.Ezt a problémát úgy tudjuk
megoldani, ha a BIOS-ban kikapcsoljuk
(Disabled értékûre
állítjuk) a Plug and Play Operating
System beállítást.A rendszerindító lemez nem képes az
ASUS K7V alaplapokkal mûködni. Hogyan lehet
ezt orvosolni?Menjünk be a BIOS-ba és kapcsoljuk ki
(állítsuk Disabled
értékre) a Boot Virus
Protection beállítást.Miért nem mûködnek a &tm.3com; PCI
hálózati kártyák a Micron
típusú
számítógépekben?Nézzük meg az elõzõ választ.HibaelhárításMiért állapítja meg rosszul a &os;
a memória mennyiségét &i386;
hardveren?A válasz nagy
valószínûséggel a fizikai
és virtuális memóriacímek
közti különbségben rejlik.A legtöbb PC-s hardvereszköz megegyezés
szerint a 3,5 GB és 4 GB közti
memóriaterületet speciális célokra
tartja fenn (általában a PCI
számára). Ezen a címterületen
keresztül éri a PCI eszközöket. Ennek
egyik következménye, hogy a fizikai
memória ezen a részen nem érhetõ
el.Hogy pontosan mi történik az itt
elhelyezkedõ memóriával, teljesen a
hardvertõl függ. Sajnálatos módon
bizonyos eszközök semmilyen megoldást nem
nyújtanak a problémára, és
így lényegében az utolsó
500 MB-nyi memória elveszik.Szerencsére a legtöbb eszköz azonban
képes ezt a területet egy felsõbb
címre leképezni, így ki tudjuk
használni. Ilyenkor azonban tapasztalhatunk
némi félreértést, amikor
megnézzük a rendszerindítás
közben megjelenõ üzeneteket.A &os; 32 bites változata esetén ez a
memóriaterület elveszik, mivel a címe a
4 GB-os határ felé kerül, amelyet a
32 bites módban futó rendszermag
már nem képes elérni. Ezen egy PAE
támogatással rendelkezõ rendszermag
használatával segíthetünk. A
GYIK-on belül ebben a bejegyzésben
olvashatunk bõvebben a
memóriakorlátokról, valamint ebben a részben
láthatjuk a különbözõ
platformokra vonatkozó
memóriakorlátozásokat.A &os; 64 bites változata vagy a PAE
használata esetén azonban a &os; rendesen
felismeri és leképezi a fennmaradó
memóriaterületeket, így azok
használhatóvá válnak. A
rendszerindítás során azonban az
elõbb említett leképezés miatt
látszólag úgy fog tûnni, mintha a
&os; több memóriát észlelne, mint
amennyivel valójában rendelkezünk. Ez
teljesen normálisnak tekinthetõ és a
ténylegesen elérhetõ memória
mennyisége a folyamat végén be fog
állítódni.Mit tegyünk, ha meghibásodott szektorokat
találunk a merevlemezünkön?A SCSI-meghajtók esetében a
meghajtó általában képes
önmagától átképezni az
ilyen szektorokat. A legtöbb meghajtóban ez a
lehetõség viszont alapból nem
engedélyezett.A hibás szektorok
átképezéséhez az eszköz
elsõ lapmódját kell átírnunk,
amelyet (root
felhasználóként) így
tehetünk meg:&prompt.root; camcontrol modepage sd0 -m 1 -e -P 3Változtassuk meg az AWRE (az írás
automatikus átképzése) és ARRE (az
olvasás automatikus átképzése)
beállítások értékeit
0-ról 1-re:AWRE (Auto Write Reallocation Enbld): 1
ARRE (Auto Read Reallocation Enbld): 1A modernebb IDE-meghajtók is képesek a
vezérlõjükkel nyilvántartani az
idõközben meghibásodott szektorokat,
és ezt általában alapból
engdélyezik.Ha rossz szektorokra figyelmeztetõ
hibaüzeneteket látunk (akármilyen
típusú meghajtónk is legyen), az
kétségtelenül arra utal, hogy ideje
lecserélnünk a hardvert. A hibás
szektorok használatát esetleg a
gyártó saját diagnosztikai
programjával le tudjuk tiltani, de hosszabb
távon mindenképpen az lesz a legjobb, ha
veszünk egy újat.A &os; miért nem találja meg a
HP Netserver SCSI-vezérlõjét?Ez tulajdonképpen egy ismert probléma. A
HP Netserver gépekben egy integrált EISA
buszos SCSI-vezérlõ található,
amely a 11-es EISA bõvítõhelyen
található, ezért az összes
valódi EISA
bõvítõhely ez elõtt helyezkedik el.
Sajnos a 10 feletti EISA bõvítõhelyek
címei ütköznek a PCI eszközök
számára kiosztott címekkel,
ezért a &os; önmagától nem tudja
valami jól kezelni az ilyen helyzeteket.Ezért a legjobban akkor járunk, ha
egyszerûen letagadjuk a címterek
ütközését :) Ezt úgy tudjuk
megtenni, ha a rendszermag EISA_SLOTS
nevû beállítását a 12
értékre állítjuk. Ezután
már csak be kell konfigurálunk és
újra kell fordítanunk a rendszermagot, ahogy
azt a kézikönyv
megfelelõ része is
tárgyalja.Természetesen, amikor egy ilyen gépre
akarunk telepíteni, a helyzet tovább
bonyolódik. A telepítést úgy
tudjuk megoldani, ha a UserConfig
programon belül alkalmazunk egy apró
trükköt. Most ne a vizuális
felületét használjuk, hanem a
parancssoros részt. Gépeljük be, majd a
megszokottak szerint telepítsük a
rendszert:eisa 12
quitEttõl függetlenül természetesen
továbbra is javasolt egy, az elõbbiek szerint
módosított rendszermagot fordítanunk
és telepítenünk.A következõ verziókban
remélhetõleg már lesz valamilyen
megoldás erre a problémára.A HP Netserver esetén nem tudunk a
lemezeken Veszélyesen
dedikált (Dangerously
Dedicated) módot használni.
Errõl itt
olvashatunk bõvebben.Állandóan ed1:
timeout és ahhoz hasonló
üzenetek jelennek meg. Mi lehet velük
kezdeni?Ezt a hibát általában a
megszakítások ütközése okozza
(például két kártya ugyanazt a
megszakítást akarja használni).
Indítsuk a rendszerünket a
beállítás használatával
és az
ed0/de0/...
bejegyzéseket változtassuk meg a
kártyáknak megfelelõen.Ha a hálózati kártyánkon BNC
típusú csatlakozó
található, akkor még elõfordulhat,
hogy azért látunk ilyen hibaüzeneteket,
mert nem jól zártuk le a csatlakozást.
Ezt úgy tudjuk könnyen ellenõrizni, ha a
lezárót közvetlenül a
kártyára dugjuk rá (kábel
nélkül) és figyeljük, hogy
továbbra is jönnek-e a hibaüzenetek.Egyes NE2000-kompatibilis kártyák akkor
adják ezt a hibát, ha az UTP portjukon nincs
aktív összeköttetés vagy nem dugtuk
be a kábelt.Miért állnak le a &tm.3com; 3C509
kártyák minden különösebb ok
nélkül?Az ilyen típusú kártyák
néha hajlamosak elfelejteni a
beállításaikat. Frissítsük
a kártya beállításait a
3c5x9.exe program
segítségével.A párhuzamos nyomtató nevetségesen
lassú. Mi lehet ezzel kezdeni?Ha csupán annyi a problémánk, hogy
a nyomtató irdatlanul lassan mûködik, akkor
próbáljuk meg a kézikönyv nyomtatásról
szóló részében
leírtakhoz hasonlóan
átállítani a nyomtató
portkezelését.A programok miért állnak le
idõnként Signal 11
hibákkal?Ezek a hibák akkor keletkeznek, amikor a
futó programok olyan memóriaterülethez
próbálnak meg hozzáférni, amihez
eredetileg nem lenne szabad. Ha valami ehhez hasonló
történik a rendszerünkben
látszólag teljesen
véletlenszerûen, akkor nagyon óvatosan
kezdjünk el vizsgálódni.A lehetséges okok az alábbiak
lehetnek:Ha csak olyan alkalmazások esetében
jelentkezik ez a hiba, amelyeket mi magunk
fejlesztünk, akkor az
valószínûleg arra utal, hogy
valamelyik része hibásan
mûködik.Ha a &os; alaprendszerének valamelyik
részében tapasztalunk ilyen hibákat,
akkor azt szintén okozhatja hibás
kód, de az ilyen hibákat
általában hamarabb meg szokták
találni és ki szokták
javítani, mint ahogy a GYIK-ot olvasók
többsége találkozna velük (a
-CURRENT ág pontosan ezt a
célt szolgálja).Elõfordulhat, hogy ez egy olyan furcsaság
eredménye, amely nem a &os;
hibája: például ugyanazon program
fordításakor mindig mást csinál
a fordítóprogram.Például tegyük fel, hogy a
make buildworld
parancsot futtatjuk, és a fordítás
félbeszakad, amikor az ls.c
állományból el akarja
készíteni az ls.o
állományt. Ha ezután megint
megpróbáljuk kiadni a make
buildworld parancsot,
akkor a fordítás ugyanazon a helyen
újból meghiúsul —
valószínûleg hibás a
forráskód, frissítsük a
forrásainkat és próbáljuk meg
ismét. Ha viszont a fordítás ilyenkor
már egy másik helyen akad el, akkor szinte
biztos, hogy hardverhibával akadtunk
össze.Amit ilyenkor tenni tudunk:Az elsõ esetben egy nyomkövetõ,
például a &man.gdb.1;
segítségével keressük meg a program
azon pontját, ahol rossz
memóriaterülethez próbál meg
hozzáférni és javítsuk
ki.A második esetben ellenõrizzük, hogy
nem a hardver a hibás.Ennek okai többek közt a következõk
lehetnek:Túlmelegednek a merevlemezeink:
ellenõrizzük, hogy a gépben
található ventillátorok rendesen
mûködnek-e (persze elõfordulhat, hogy
más eszközök melegednek
túl).A processzor túlmelegedett: lehet, hogy mert
túlságosan nagy órajelen
járatjuk, vagy mert egyszerûen leállt
a hûtése. Akármelyik eset is
következett be, legalább a hiba
felderítéséig
állítsuk vissza a hivatalos
sebességére.Ha feltétlenül ragaszkodunk a
rendszerünk tuningolásához, akkor
érdemes elgondolkoznunk azon, hogy egy lassabb
rendszerrel jobban járunk, mint egy
állandóan cserélendõ,
ropogósra sült rendszerrel. Az emberek
általában nem is nagyon szeretik az ilyen
rendszereket, független attól, hogy
szerintünk érdemes-e ilyet csinálni
vagy sem.Hibás memóriamodulok: ha több
SIMM és DIMM modul is található a
gépünkben, akkor vegyük ki az
összeset és próbáljuk ki
mindegyiket egyesével, ezzel is
leszûkíthetjük a probléma
felderítését a hibás
DIMM/SIMM modulokra vagy azok
kombinációjára.Az alaplap túlbecslõ
értékei: a BIOS
beállításai között vagy
az alaplapon található jumperekkel
szabályozni tudjuk a
különbözõ
idõzítéseket, ahol
általában az alapértelmezett
értékek megfelelnek, de néha
elõfordulhat, hogy a memóriamodulok
késleltetését lassúra, vagy
éppen turbó sebességre
állítják (RAM Speed:
Turbo vagy ehhez hasonló néven
keressük a BIOS-ban), ami szintén okozhat
furcsa viselkedést. Próbáljuk meg
visszaállítani az BIOS
alapértelmezett értékeit, de
elõtte érdemes lejegyezni az aktuális
beállításainkat.Az alaplap zajos vagy kevés áramot
kap: ha vannak használaton kívüli I/O
kártyáink, merevlemezeink,
CD-meghajtóink a rendszerünkben, akkor
próbáljuk meg ideiglenesen
eltávolítani ezeket vagy egyszerûen
csak lehúzni róluk a
tápkábelt. Ezzel tudjuk vizsgálni,
hogy a számítógépünk
tápegysége képes-e
megbirkózni a kisebb terheléssel. Esetleg
kipróbálhatunk egy másik
tápegységet is, lehetõleg egy
kicsivel erõsebbet (például ha a
jelenlegi tápegységünk
teljesítménye 250 watt, akkor
használjunk helyette egy
300 wattosat).Továbbá érdemes lehet még
elolvasnunk a SIG11 GYIK-ot (lásd lentebb), ahol
mindezeket a problémákat részletesen
kifejtik, noha a &linux;
nézõpontjából. Arról is
olvashatunk benne, hogy egy hibás
memóriát miért nem képesek
észlelni a szoftveres vagy hardveres
tesztelõeszközök.Végezetül, ha az egyik javaslat sem
segített a probléma megoldásában,
akkor valószínûleg sikerült
hibát találnunk a &os; kódjában,
amirõl nyugodtan írhatunk a fejlesztõknek
egy hibajelentést.A problémáról minden
részletre kiterjedõ módon A SIG11-es probléma GYIK-ja
írásban olvashatunk (angolul).A rendszer összeomlik vagy egy Fatal
trap 12: page fault in kernel mode vagy pedig
valamilyen panic: hibaüzenettel
és egy halom számot ír ki. Mit
tegyünk?A &os; fejlesztõi nagyon kíváncsiak
az ilyen hibákra, de a
felderítéséhez sajnos jóval
több információra van
szükségük, mint amennyit láthattunk.
Másoljuk le az összeomláshoz
tartozó teljes üzenetet. Ezután
nézzük meg a GYIK-nak azt a
részét, amely a rendszermag
összeomlásáról szól,
készítsünk egy nyomkövetési
információkkal ellátott rendszermagot
és kérjük le a hívási
láncot. Ez elsõre talán bonyolultnak
hangzik, de ehhez igazából nem igényel
semmilyen programozási tudást, egyszerûen
csak a megadott utasításokat kell
követnünk.A rendszer indulása közben miért
sötétül a képernyõ és megy
el rajta a kép?Ez az ATI Mach 64 videokártyák
esetében jelentkezõ probléma. Ilyenkor az
a gond, hogy a kártya a 0x2e8
címet használja, akárcsak a negyedik
soros port. A &man.sio.4; meghajtóban levõ hiba
(vagy netalán beállítás?) miatt
azonban a negyedik soros portot
még akkor is használni
fogja, ha kikapcsoljuk a sio3 (a
negyedik soros port) eszközt.A hibát kijavításáig
így kerülhetjük meg:A betöltõ parancssorában adjuk meg
a paramétert. (Így
elõ tudjuk hozni a rendszermag
konfigurációs
módját.)Kapcsoljuk ki a sio0,
sio1,
sio2 és
sio3 eszközöket
(tehát mindegyiket). Emiatt a &man.sio.4;
meghajtó nem indul el, és így nem
okoz problémát.Lépjünk ki és folytassuk a
rendszer indítását.Ha a soros portokat is használni akarjuk, akkor
következõ módosításokkal
készítsünk egy új rendszermagot: a
/usr/src/sys/dev/sio/sio.c (vagy pc98
esetén a
/usr/src/sys/pc98/cbus/sio.c)
állományban keressük meg a
0x2e8 karakterláncot és az
azt megelõzõ vesszõt távolítsuk
el (de az utána következõt tartsuk meg).
Miután végrehajtottuk ezt a
módosítást, a megszokott módon
fordítsuk újra a rendszermagot.A &os; miért csak 64 MB
memóriát használ, amikor 128 MB van
a gépben?Mivel &os; a BIOS-tól próbálja
megtudni a rendelkezésre álló
memória méretét, ezért csak
16 biten képes lekérdezni a KB-okban
(vagyis 65 535 KByte = 64 MB, vagy még
ennél is kevesebb, mivel egyes BIOS-ok legfeljebb
16 MB memóriát engednek látni).
Tehát ha 64 MB-nál több
memóriával rendelkezünk, akkor a &os;
ugyan megpróbálja azt felderíteni, de
nem feltétlenül fog sikerülni.Ezt úgy tudjuk megoldani, ha a rendszermag
alábbi beállítását
használjuk. Alapvetõen ugyanis létezik
egy módszer, amivel le lehet kérdezni a
memória teljes méretét a
BIOS-tól, de a hozzá tartozó rutin nem
fért el a rendszerindító blokkban. Ha
egyszer majd sikerül neki helyet csinálni, akkor
a rendszer képes lesz kizárólag ezzel a
módszerrel dolgozni. Amíg viszont ez nem
így van, addig kénytelenek leszünk a most
következõ megoldást
választani:options MAXMEM=Nahol N a memória
Kilobyte-okban megadott mérete. Tehát egy
128 MB memóriával rendelkezõ
számítógép esetén ez
131072.A számítógépben több
mint 1 GB memória van, de mégis
kmem_map too small üzenetek
jelennek meg. Mi a gond?A &os; általában a rendszermag
néhány fontos paraméterét, mint
például az egyszerre megnyitható
állományok maximális
számát a
számítógépben
található memória
méretébõl származtatja. Az
1 GB memóriánál több
esetén azonban elképzelhetõ, hogy ez az
automatikus méretezés
túlságosan is nagy értékeket
választ. Így a rendszer
indításakor a rendszermag olyan nagy
méretû táblázatokat és
egyéb struktúrákat foglal le, amelyek
betöltik a rendelkezésére
bocsátott terület nagy részét.
Késõbb, a rendszer futása közben
pedig a rendszermag szépen lassan kifogy a dinamikus
memóriaterületekbõl és
összeomlik.Készítsünk egy olyan saját
rendszermagot, ahol a
beállítást megnöveljük
egészen a maximális 400 MB-os
értékig (). 400 MB
használata valószínûleg
elég lesz egészen 6 GB
memóriáig.A számítógépben nincs
1 GB memória, a &os; mégis
kmem_map too small hibával
leáll!Ez a hibaüzenet arra utal, hogy a rendszer
kifogyott a hálózati pufferek
(különösen az mbuf klaszterek)
számára kiosztott virtuális
memóriából. Az mbuf klaszterek
részére fenntartott virtuális
memória méretének
beállításáról a
kézikönyv Hálózati
korlátozások címû
szakaszában olvashatunk.Miért jelenik meg a kernel: proc:
table is full hibaüzenet?A &os; rendszermagja egyszerre csak bizonyos
számú programot enged futni. Ezek
konkrét száma a
kern.maxusers
&man.sysctl.8;-változótól függ. A
kern.maxusers ezenkívül
még hatással van más belsõ
korlátokra is, például a
hálózati pufferekre (lásd ezt a
korábbi kérdést). Ha a
számítógépünk
túlságosan leterhelt, akkor érdemes
megpróbálkoznunk a
kern.maxusers
értékének
növelésével. Ennek
átállítása a rendszerben
egyszerre futtatható maximális programok
számával együtt sok más
rendszerszintû korlátozást is
finomít.A kern.maxusers
értékének
beállításához nézzük
meg a kézikönyv Az állományok és futó programok korlátozásairól
szóló szakaszát. (Miközben ez a
rész a megnyitható állományok
maximális számáról szól,
addig ugyanez érvényes a futó
programokra is.)Ha viszont a
számítógépünk nem éri
akkora terhelés, de mégis szeretnénk
egyszerre nagyobb számú programot is futtatni
rajta, akkor ehhez elegendõ csak
kern.maxproc változót
átállítanunk. Ezt úgy tudjuk
megtenni, ha felvesszük a
/boot/loader.conf
állományba. Ez az érték
természetesen addig nem
beállítódni, amíg a
rendszerünket újra nem indítjuk.
Ezekrõl a változókról a
&man.loader.conf.5; és &man.sysctl.conf.5; man
oldalakon tájékozódhatunk
részletesebben. Ha az összes programot egyetlen
felhasználóval akarjuk futtatni, akkor a
kern.maxprocperuid változót
értékét is át kell
állítanunk, méghozzá a
kern.maxproc új
értékénél eggyel kisebbre.
(Ezért kell így csinálni, mert egy
rendszerprogram, az &man.init.8; mindig fut.)A sysctl változók
beállításait úgy is tudjuk
véglegesíteni, ha felvesszük ezeket az
/etc/sysctl.conf
állományba. A kézikönyv A
rendszermag korlátainak finomhangolása
címû szakaszában részletesebb is
olvashatunk róla, hogy miként
állítsuk be a rendszerünket.Az új rendszermag indításakor
miért keletkezik CMAP busy
hibaüzenet?Az elavult /var/db/kvm_*.db
állományokat összegyûjtõ rutin
idõnként nem mûködik megfelelõen,
és a nem egyezõ állományok
esetén össze is omolhat.Amikor ilyen történik, indítsuk
újra a rendszert egyfelhasználós
módban és gépeljük be:&prompt.root; rm /var/db/kvm_*.dbMit jelent az ahc0: brkadrint, Illegal Host
Access at seqaddr 0x0 üzenet?Ez az Ultrastor SCSI vezérlõkártya
ütközésére utal.A rendszerindítás közben
lépjünk be a rendszermag
konfigurációs menüjébe és
tiltsuk le a gondot okozó
uha0 eszközt.Amikor elindul a rendszer, egy ahc0: illegal
cable configuration hibaüzenet jelenik meg.
A kábelek bekötésével semmilyen
gond nincs. Mégis akkor mi a baj?Az alaplapon nem található olyan
áramkör, amely támogatja az automatikus
lezárást (automatic
termination). A SCSI BIOS-ban az automatikus
lezárás helyett adjuk meg a megfelelõ
lezárást. Az &man.ahc.4; meghajtója
nem képes rendesen érzékelni a
kábeleket, ha az alaplapon van ilyen
érzékelés (és így
automatikus lezárás). A meghajtó
egyszerûen annyit feltételez, hogy ennek
támogatása csak akkor érhetõ el,
ha az EEPROM-ban megadtuk az automatic
termination beállítást. A
megfelelõ kábeldetektáló
eszköz nélkül a meghajtó gyakran
rosszul állapítja meg a
lezárást, ami pedig így
veszélyezteti a SCSI busz
megbízhatóságát.Miért küld a
sendmailmail loops back
to myself hibaüzenetet?Errõl részletesebben a kézikönyvben
olvashatunk.A távoli gépeken miért viselkednek
olyan furcsán a teljes képernyõs
alkalmazások?Elõfordulhat, hogy az adott távoli
gépen a terminál típusa nem
cons25, amire viszont a &os; konzolnak a
megfelelõ mûködéshez
szüksége lenne.Ezt a problémát többféle
módon is meg tudjuk kerülni:Mikor bejelentkezünk a távoli
gépre, állítsuk a TERM
környezeti változót az
ansi vagy sco
értékre, amibõl kiderül, hogy
egyáltalán ismeri ezeket a
termináltípusokat.A &os; konzolban használjunk VT100
emulátort, például a
screen alkalmazást. A
screen
segítségével egyetlen
terminálról egyszerre több
munkamenetet is tudunk indítani, de
egyébként is egy nagyon jó program.
Minden screen által
létrehozott ablak VT100-as
terminálként mûködik,
ezért a távoli gépen a
TERM környezeti
változó nyugodtan
beállítható a
vt100 értékre.Tegyük hozzá a cons25
bejegyzést a távoli gép
terminálokat tároló
adatbázisához. Ez pontos módszere
jelentõs mértékben függ az adott
gépen található
operációs rendszertõl. Ebben
leginkább az adott gépen
található man oldalak tudnak
segíteni.Indítsunk el a &os; rendszert futtató
gépen egy X szervert és a távoli
géprõl egy X rendszerre
íródott terminálemulátorral,
például az xterm vagy
az rxvt programmal jelentkezzük
be. A távoli gépen ekkor a
TERM változó
értéke vagy xterm, vagy
pedig vt100 lesz.A Plug and Play kártyákat miért nem
találja meg (vagy unknown
típusúként látja) a
&os;?Ennek az okait a következõ levélben
fejtette ki &a.peter; a &a.questions; tagjainak, amelyben
arra válaszolt, hogy egy belsõ modemet
miért nem észlel a rendszer miután
frissítették
&os; 4.X-re (az
érthetõség kedvéért
szögletes zárójelek között
hozzáadtunk néhány
kiegészítést is).Az eredeti szövegbõl készült
idézetet frissítettük.
A PNP BIOS beállította [a modemet]
és magára hagyta valahol a portok
számára fenntartott címtérben,
így az ISA eszközök régi
típusú [3.X-ben
levõ] eszközpróbálgatásai
ott találták meg.A 4.0 esetében azonban az ISA
eszközöket kezelõ kód már
sokkal inkább a PnP
támogatására koncentrál.
Korábban [a 3.X verziókban]
elõfordulhatott az is, hogy az ISA eszközök
keresése során a rendszer egy
kóbor eszközt talált,
majd ugyanazt megtalálta PnP eszközként
és ütköztek az így duplán
lefoglalni kívánt erõforrások.
Ennek kivédésére elõször
tehát letiltjuk a programozható
kártyák felderítését,
így ez a típusú kettõs
detektálás nem történhet meg.
Ez továbbá azt is jelenti, hogy a
támogatott PnP hardverek azonosítóit
elõre ismerni kell. Ennek
hangolhatóságát már
tervbevettük.
Tehát egy ilyen eszköz
mûködtetéséhez
szükségünk lesz a PnP
azonosítójára, valamint arra, hogy
felvegyük a felderítendõ PnP
eszközök ISA eszközök közé.
Ezt a &man.pnpinfo.8; segítségével
kérhetjük le, amely például egy
belsõ modem esetén a következõ
kimenetet fogja adni:&prompt.root; pnpinfo
Checking for Plug-n-Play devices...
Card assigned CSN #1
Vendor ID PMC2430 (0x3024a341), Serial Number 0xffffffff
PnP Version 1.0, Vendor Version 0
Device Description: Pace 56 Voice Internal Plug & Play Modem
Logical Device ID: PMC2430 0x3024a341 #0
Device supports I/O Range Check
TAG Start DF
I/O Range 0x3f8 .. 0x3f8, alignment 0x8, len 0x8
[16-bit addr]
IRQ: 4 - only one type (true/edge)[a többi részt kihagytuk]TAG End DF
End Tag
Successfully got 31 resources, 1 logical fdevs
-- card select # 0x0001
CSN PMC2430 (0x3024a341), Serial Number 0xffffffff
Logical device #0
IO: 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8
IRQ 5 0
DMA 4 0
IO range check 0x00 activate 0x01Innen a Vendor ID kezdetû sorra
lesz szükségünk. A zárójelek
között szereplõ hexadecimális
szám (ami a példában a
0x3024a341) lesz az eszköz PnP
azonosítója, valamint a közvetlenül
ez elõtt szereplõ karakterlánc az egyedi
ASCII azonosítója
(PMC2430).Ha a &man.pnpinfo.8; lefuttatásának
eredményeképpen megjelenõ lista nem
tartalmazza a kérdéses eszközt, akkor
helyette a &man.pciconf.8; használatával is
próbálkozhatunk. Íme a
pciconf -vl parancs kimenete egy
integrált hangkártya esetében:&prompt.root; pciconf -vl
chip1@pci0:31:5: class=0x040100 card=0x00931028 chip=0x24158086 rev=0x02 hdr=0x00
vendor = 'Intel Corporation'
device = '82801AA 8xx Chipset AC'97 Audio Controller'
class = multimedia
subclass = audioEbbõl a chip
változót, vagyis a
0x24158086 értéket kell
felhasználnunk.Ezt az információt (a Vendor
ID vagy a chip
értékét) ezután a
/usr/src/sys/dev/sio/sio_isa.c
állományba kell felvennünk.Ehhez elõször is készítsünk
egy biztonsági másolatát a
sio_isa.c
állományról arra az esetre, ha
véletlenül valami rossz történne.
Ez azért is hasznunkra fog válni, mert
így tudunk egy javítást
mellékelni a hibajelentésünk mellé
(mert ugye írni fogunk róla
hibajelentést, ugye?). Szóval, keressük
meg a sio_isa.c
állományban a következõ sort:static struct isa_pnp_id sio_ids[] = {Menjük lentebb egészen addig, amíg
nem találunk egy helyet, ahova be tudunk szúrni
egy bejegyzést az eszközünkhöz. A
bejegyzések megadásának módja
lentebb látható, és a jobb oldalt
megjegyzésbe tett ASCII Vendor ID szerint
rendezettek, amelyek mellett még
megtalálható (amennyiben kifér) a
&man.pnpinfo.8; Device Description
kimenetében kapott érték is:{0x0f804f3f, NULL}, /* OZO800f - Zoom 2812 (56k Modem) */
{0x39804f3f, NULL}, /* OZO8039 - Zoom 56k flex */
{0x3024a341, NULL}, /* PMC2430 - Pace 56 Voice Internal Modem */
{0x1000eb49, NULL}, /* ROK0010 - Rockwell ? */
{0x5002734a, NULL}, /* RSS0250 - 5614Jx3(G) Internal Modem */A megfelelõ helyre ezután vegyük fel az
eszközünkhöz tartozó
hexadecimális Vendor ID értéket,
mentsük el az állományt, fordítsuk
újra a rendszermagot és indítsuk
újra vele a rendszerünket. Ha mindent
jól csináltunk, akkor az eszköz
sio eszközként fog
megjelenni.Miért keletkezik nlist
failed hiba például a
top vagy systat
parancsok futtatásakor?A gondot alapvetõen az okozza, hogy a
kérdéses alkalmazás valamiért egy
olyan rendszermagbeli szimbólumot keres, amit nem
talál. Ez a típusú hiba a
következõkbõl eredhet:A rendszermag és a hozzá tartozó
programok nincsenek szinkronban (vagyis
fordítottunk egy új rendszermagot, de nem
volt installworld vagy
fordítva) és emiatt a szimbólumokat
tároló táblázat nem teljesen
úgy épül fel, ahogy azt az
alkalmazás gondolja. Ha errõl lenne
szó, akkor egyszerûen nincs más
teendõnk, mint befejezni a frissítést
(ennek pontos részleteit lásd a
/usr/src/UPDATING
állományban).Nem a /boot/loader, hanem
közvetlenül a boot2
(lásd &man.boot.8;)
segítségével töltjük be a
rendszermagot. Noha alapvetõen semmilyen
problémát nem nem okoz a
/boot/loader kihagyása,
általánosságban véve
azért mégis jobban
elérhetõvé tudja tenni a
rendszermagban található
szimbólumokat a felhasználói
programok felé.Miért tart olyan sokáig
ssh vagy telnet
használatával csatlakozni a
számítógéphez?A tünet: nagyon sok idõ telik
aközött, amíg a TCP kapcsolat
felépül és a kliens bekéri a
jelszót (vagy a &man.telnet.1; esetében
amíg a bejelentkezõ képernyõ
megjelenik).A betegség: nagyon valószínû,
hogy a késlekedést az okozza, amikor a szerver
megpróbálja a kliens IP-címét
feloldani hálózati névvé. Sok
szerver, köztük a &os;-ben is
megtalálható Telnet
és SSH szerver is ezt
csinálja, többek közt azért, hogy
a rendszergazda számára el tudja
tárolni egy naplóban ezt a
hálózati nevet.Az orvosság: ha az említett
jelenség minden olyan esetben jelentkezik, amikor a
számítógéprõl (mint
kliensrõl) valamilyen szerverhez csatlakozni akarunk,
akkor a kliens oldalán lesz a gond. Ehhez
hasonlóan, ha csak egy adott szervernél
tapasztaljuk, akkor azzal a
számítógéppel
történhetett valami.Amennyiben a problémákat a kliens okozza,
nem tehetünk mást, a névoldáson kell
úgy javítanunk, hogy a szerver
normálisan fel tudja oldani. Ha helyi
hálózaton tapasztaljuk mindezt, akkor ez
már a szerver problémája és
olvassunk tovább. Ellenkezõ esetben az internet
a felelõs, ezért nagyon
valószínû, hogy fel kell vennünk a
kapcsolatot az internet-szolgáltatónkkal
és segítséget kérni
tõlük a hiba
elhárításában.Ha a problémát viszont a helyi
hálózaton található szerver
okozza, akkor úgy kell azt
beállítanunk, hogy a helyi neveket
képes legyen rendesen feloldani. Ezzel kapcsolatban
a &man.hosts.5; és &man.named.8; man oldalakat
érdemes elolvasnunk. Ha a probléma viszont az
interneten jelenik meg, akkor valószínû,
hogy a szerver névfeloldása nem üzemel
rendesen. Nézzünk meg egy másik
gépet — például a
www.yahoo.com címet. Ha ez sem
mûködik, akkor nálunk van a gond.A &os; friss telepítését
követõen az is elképzelhetõ, hogy
egyszerûen csak hiányoznak a
tartományokkal és névszerverekkel
kapcsolatos megfelelõ adatok az
/etc/resolv.conf
állományból. Ez gyakran okoz
késlekedést az SSH
mûködésében, mivel az /etc/ssh
könyvtárban található
sshd_config állományban
alapértelmezés szerint a
UseDNS beállítás
értéke yes (tehát a
névfeloldás használata
engedélyezett). Ha valóban ez okozza a
problémát, akkor a pótoljuk az
/etc/resolv.conf
állományból hiányzó
adatokat vagy az sshd_config
állományban a UseDNS
értéke ideiglenesen legyen
no.Mire utal a stray IRQ
(kóbor megszakítási kérés)
üzenet?A kóbor megszakítási
kéréseket jelzõ üzenetek
általában a hardveres megszakítási
kérések egyenletlenségeire utalnak,
ezen belül is leginkább olyan esetekre, amikor
az eszköz egy megszakítási
kérés nyugtázása
közepén eltávolítja az adott
kérést.Három dolgot tehetünk ezzel
kapcsolatban:Elviseljük ezeket a figyelmeztetéseket.
Megszakítási
kérésenként az elsõ öt
üzenet után amúgy sem jelez
többet a rendszer.Ha platformunkhoz (mint például
&i386;) tartozó intr_machdep.c
állományban található
MAX_STRAY_LOG
értékét átírjuk
5-rõl 0-ra
és így újrafordítjuk a
rendszermagot, akkor ezzel teljesen letilthatjuk a
figyelmeztetéseket.Megszüntetjük az üzeneteket
úgy, hogy csatlakoztatunk a rendszerhez egy olyan
párhuzamos vonali eszközt, amely a 7-es
IRQ-t használja, és rakunk fel
hozzá egy PPP meghajtót (a legtöbb
helyen egyébként ezzel lesz a gond),
valamint a 15-ös IRQ-ra pedig rakunk egy
IDE-meghajtót vagy más hasonló
eszközt és telepítjük
hozzá a megfelelõ meghajtót.Miért jelenik meg folyamatosan a file:
table is full üzenet a
rendszernaplóban?Ha ilyen hibaüzenetet látunk, akkor az arra
utal, hogy kifogytunk a rendszerünkben egyszerre
használható
állományleírókból. A
probléma leírásával és
megoldásával kapcsolatban olvassuk el a
kézikönyvben a kern.maxfiles
változóról szóló
részt A
rendszermag korlátainak finomhangolása
címû szakaszban.Miért árasztják el
calcru: negative runtime vagy
calcru: runtime went backwards
üzenetek a konzolt?Ismert egy olyan probléma, hogy a BIOS-ban
engedélyezzük az &intel; Enhanced SpeedStep
technológiáját, akkor a rendszermag
ehhez hasonló calcru
üzeneteket kezd el küldözgetni:calcru: runtime went backwards from 6 usec to 3 usec for pid 37 (pagezero)
calcru: runtime went backwards from 6 usec to 3 usec for pid 36 (vmdaemon)
calcru: runtime went backwards from 170 usec to 138 usec for pid 35 (pagedaemon)
calcru: runtime went backwards from 553 usec to 291 usec for pid 15 (swi6: task queue)
calcru: runtime went backwards from 15521 usec to 10366 usec for pid 2 (g_event)
calcru: runtime went backwards from 25 usec to 12 usec for pid 11 (swi1: net)
calcru: runtime went backwards from 4417 usec to 3960 usec for pid 1 (init)
calcru: runtime went backwards from 2084385 usec to 1793542 usec for pid 1 (init)
calcru: runtime went backwards from 408 usec to 204 usec for pid 0 (swapper)Ennek oka, hogy az &intel; SpeedStep (EIST) egyes
alaplapokkal nem kompatibilis.Megoldás: Tiltsuk le a BIOS-ban az EIST
használatát. Ekkor még az
ACPI-alapú
processzorfrekvencia-szabályozás
továbbra is elérhetõ a &man.powerd.8;
használatán keresztül.Miért jár rosszul az óra a
számítógépen?A számítógépnek kettõ
vagy több idõmérõ eszköze van,
és a &os; pont a rosszabbikat
választotta.Adjuk ki a &man.dmesg.8; parancsot és
vizsgáljuk meg a Timecounter
kezdetû sorokat. Ezek közül a &os; a
legnagyobb quality értékkel
rendelkezõt választotta.&prompt.root; dmesg | grep Timecounter
Timecounter "i8254" frequency 1193182 Hz quality 0
Timecounter "ACPI-fast" frequency 3579545 Hz quality 1000
Timecounter "TSC" frequency 2998570050 Hz quality 800
Timecounters tick every 1.000 msecErrõl a
kern.timecounter.hardware &man.sysctl.3;
változó lekérdezésével
tudunk ténylegesen megbizonyosodni:&prompt.root; sysctl kern.timecounter.hardware
kern.timecounter.hardware: ACPI-fastElõfordulhat, hogy az ACPI-idõzítõ
hibás. Ilyenkor az a legegyszerûbb, ha az
/etc/loader.conf
állományban letiltjuk az
ACPI-idõzítõ
használatát:debug.acpi.disabled="timer"Vagy a BIOS is tudja módosítani a TSC
idõzítõt — például
azért, hogy csökkentse a processzor
sebességét, amikor merül az
akkumulátor vagy energiatakarékos módra
vált. A &os; sajnos nem figyel ezekre a
változtatásokra és elcsúszik az
idõméréssel.Ahogy viszont az iménti példában is
látható, itt még az
i8254 idõzítõ is
használható, méghozzá
úgy, hogy a
kern.timecounter.hardware &man.sysctl.8;
változó értékét
átállítjuk erre az
értékre:&prompt.root; sysctl -w kern.timecounter.hardware=i8254
kern.timecounter.hardware: TSC -> i8254Innentõl kezdve a
számítógépünk már
sokkal pontosabban mutatja az idõt.Ezt a változtatást úgy tudjuk
minden rendszerindítás során
automatikusan megtenni, ha felvesszük a
következõ sort az
/etc/sysctl.conf
állományba:kern.timecounter.hardware=i8254A rendszer laptopon miért nem tudja rendesen
megtalálni a PC-kártyákat?Ez a probléma gyakran megjelenik olyan
laptopokon, amelyek egynél több
operációs rendszert is futtatnak, egyes
nem-BSD típusú rendszerek ugyanis hajlamosak a
hardvert inkonzisztens állapotban hagyni. Emiatt a
&man.pccardd.8; parancs az adott kártyát
"(null)""(null)" néven
észleli a valós típusa helyett.A hardvert innen teljesen csak úgy tudjuk
alapállapotába hozni, ha a PC-kártya
foglalatát áramtalanítjuk. Ehhez ki
kell kapcsolnunk a laptopot. (Tehát ne tegyük
se készenléti, se pedig hibernált
állapotba — teljesen ki kell kapcsolni.) A
PC-kártya ezután várhatóan
már mûködni fog.Némely laptopok hazudnak arról, hogy
rendesen ki vannak-e kapcsolva. Amennyiben az elõbbi
módszer nem válna be, próbáljuk
meg úgy, hogy kikapcsoljuk a gépet,
kivesszük az akkumulátort, várunk egy
keveset, visszarakjuk és újra
bekapcsoljuk.Miért ad a &os; rendszertöltõje
Read error hibát és
áll meg a BIOS képernyõn?A &os; rendszertöltõje rosszul ismerte fel a
merevlemez geometriáját. Ezt a &os; slice-ok
létrehozásakor és
módosításakor külön meg kell
adni az &man.fdisk.8; használatakor.A meghajtóhoz tartozó megfelelõ
geometriai beállítások a
számítógép BIOS-ában
találhatóak. Keressük meg az adott
meghajtó cilinder-fej-szektor (Cylinder/Head/Sector)
értékét.A &man.sysinstall.8;
partíciószerkesztõjében a
G billentyû lenyomásával
tudjuk beállítani ezt.Ekkor egy párbeszédablak jelenik meg, ahol
meg tudjuk adni a cilinderek, fejek és a
sávonkénti szektorok számát.
Ide perjelekkel elválasztva gépeljük e a
BIOS-ban talált értékeket.
Például ha a merevlemez geometriája
5000 cilinder, 250 fej és sávonként 60
szektor, akkor a 5000/250/60
értéket kell megadnunk.Az Enter billentyû
lenyomására ezek az értékek
beállítódnak, és a
W lenyomására pedig az
új partíciós tábla
kiíródik a lemezre.Egy másik operációs rendszer
letörölte a boot managert. Hogyan lehet
visszaállítani?Indítsuk el a &man.sysinstall.8; programot, majd
válasszuk a Configure
és Fdisk
menüpontokat. A
partíciószerkesztõben a
Space billentyûvel tudjuk
kiválasztani azt a partíciót, amelyen
korábban a boot manager volt. Ezután az
W billentyû lenyomásával
tudjuk a változtatásainkat lemezre menteni.
Ekkor egy menü jelenik meg, ahol a telepíteni
kívánt rendszertöltõt
választhatjuk ki. Adjuk meg és ekkor
visszakerül a helyére.Mit jelent a swap_pager: indefinite wait
buffer: hibaüzenet?Ez arra utal, hogy egy futó program
megpróbált kiírni egy lapot a
memóriából a lemezre, azonban 20
másodperce már nem tudott
hozzáférni a lemezhez. Ezt okozhatják
hibás szektorok a lemezen, a lemez hibás
kábelezése vagy esetleg valamilyen
lemezmûveletekkel kapcsolatos hardver
meghibásodása. Amennyiben maga a
meghajtó a rossz, akkor az ilyen hibaüzenetek
mellett még más, a lemez hibás
mûködésére utaló
üzenetet is látnunk kell a
/var/log/messages
állományban vagy a dmesg
kimenetében. Minden más esetben
érdemes a meghajtó csatlakozásait
és kábelezését
ellenõrizni.Mik azok a UDMA ICRC hibák
és hogyan lehet ellenük tenni valamit?A &man.ata.4; meghajtó jelenti ezeket a
UDMA ICRC hibákat olyan esetekben,
amikor a merevlemezre vagy a merevlemezrõl
érkezõ DMA átvitel hibás. A
meghajtó ilyenkor még párszor
megpróbálja megismételni a
mûveletet. Amennyiben ezek a mûveletek is
meghiúsulnak, a DMA átvitel helyett a lassabb
PIO átviteli módra állítja
át a merevlemez felé irányuló
kommunikációt.Ezt a problémát több
tényezõ is okozhatja, habár ennek a
leggyakoribb oka a hibás vagy rossz
kábelezés. Ilyenkor mindig
ellenõrizzük, hogy a merevlemezhez
csatlakozó ATA-kábelek sértetlenek
és a használni kívánt
Ultra DMA átviteli módra alkalmasak. Ha
cserélhetõ lemezes meghajtót
használunk, akkor kompatibilisnek is kell
lenniük. Ez a gond akkor jelentkezhet, amikor
ugyanarra az ATA-csatornára egy
Ultra DMA 66-os (vagy annál is gyorsabb)
és egy régebbi meghajtót
csatlakoztatunk. Végezetül ezek a
hibaüzenetek arra is utalhatnak, hogy a meghajtó
meghibásodott. A legtöbb gyártó
külön szoftver ajánl fel ennek
vizsgálatára, ezért ilyenkor
érdemes letesztelnünk az érintett
meghajtót, illetve amennyiben szükséges,
biztonsági másolatot készíteni
az adatainkról és kicserélni az
eszközt.Az &man.atacontrol.8; segédprogram
használatával ellenõrizni tudjuk, hogy
jelenleg az egyes ATA-eszközök milyen DMA vagy PIO
módban mûködnek. Erre a célra
különösen az atacontrol mode
csatorna parancsot
javasoljuk, amivel képesek vagyünk
megnézni az adott ATA-csatornára
csatlakozó eszközök átviteli
módjait. Itt a csatorna
értéke nullától indul.Mi az a lock order
reversal?Erre a kérdésre a választ a &os;-s
szakkifejezések gyûjteményében
találjuk meg a LOR
címszó alatt.Mit jelent a Called ... with the following
non-sleepable locks held üzenet?Ez az üzenet arra utalhat, hogy egy
függvény lepihent miközben nála volt
egy mutex (vagy más, nem pihentethetõ)
típusú zárolás.Azért keletkezik ilyen hiba, mert a mutexeket nem
úgy tervezték, hogy hosszabb ideig is meg
lehessen tartani, kizárólag csak rövid
idõtartamra vonatkozó
szinkronizációt lehet velük
végezni. Ez a programozói megegyezés
lehetõvé teszi az eszközmeghajtók
számára, hogy a megszakítások
közben mutexek segítségével
képesek legyenek szinkronizálni a rendszermag
többi részével. A
megszakítások (&os; alatt) pedig nem
pihenhetnek. Ezért a rendszermagon belül
semmilyen olyan alrendszer nem blokkolódhat
huzamosabb ideig, amelyik mutexet tart
magánál.Ezeket a hibákat úgy tudjuk
elcsípni, ha olyan ellenõrzéseket
teszünk a rendszermagba, amelyek jeleznek a
&man.witness.4; alrendszernek, hogy küldjön
figyelmeztetést vagy akár végzetes
hibát (a rendszer
konfigurációjától
függõen) azokban a helyzetekben, amikor egy
sejthetõen hosszabb ideig blokkolt hívás
tart magánál egy mutexet.Röviden úgy foglalhatnánk össze,
hogy ezek a hibák alapvetõen nem
végzetesek, de egy kis balszerencsével az
egyszerû kis megakadásoktól kezdve a
teljes lefagyásig szinte bármilyen
hibáért felelõsek lehetnek.A
buildworld/installworld
miért áll le touch: not
found hibával?Ez a hibaüzenet nem azt jelenti, hogy a
&man.touch.1; segédprogram nem található,
hanem inkább azt, hogy az érintett
állományok dátuma a jövõre
állítódott be. Ha a CMOS
óránkat a helyi idõ szerint
állítottuk be, akkor
egyfelhasználós módban indítsuk
újra a rendszert és a
adjkerntz -i parancs
kiadásával állítsuk be a
rendszermag óráját.Kereskedelmi alkalmazásokEz a fejezet még nagyon rövid, de
természetesen reméljük, hogy a
különbözõ cégek hamarosan
bõvíteni fogják! :) A &os;
fejlesztõinek ezzel kapcsolatban semmilyen anyagi
érdekük nincs, csupán szeretnék
felsorolni a nyilvánosan is elérhetõ
szolgáltatásokat (de úgy
érezzük, hogy a &os; kereskedelmi
irányú megközelítése a &os;
fejlõdésére is jó hatással
lehet hosszabb távon). Javasoljuk minden kereskedelmi
fejlesztõnek, hogy küldjék be ide is a
saját kérdéseiket. A gyártók
honlapján olvashatjuk a teljes
listájukat.Honnan lehet a &os;-hez irodai programcsomagokat
szerezni?A nyílt forráskódú
OpenOffice.org
irodai programcsomag &os; alatt natívan is
futtatható. StarOffice
linuxos változata, amely az
OpenOffice.org zárt
forráskódú, továbbfejlesztett
változata, szintén mûködik &os;
alatt.A &os; ezeken kívül még számos
szövegszerkesztõt,
táblázatkezelõt és rajzprogramot
is tartalmaz a Portgyûjteményében.Honnan lehet a &motif;-ot
szerezni a &os;-hez?A The Open Group kiadta a
&motif; 2.2.2
változatának
forráskódját. Ez az x11-toolkits/open-motif
csomagból vagy portból érhetõ el.
A telepítésével kapcsolatban olvassuk
el a kézikönyv portokról szóló részét.
Az Open &motif;
kizárólag csak nyílt forráskódú
operációs rendszereken
terjeszthetõ.Ezenkívül még
használhatóak a
&motif; kereskedelmi
változatai is. Ezek viszont már nem
ingyenesek, de a licencük megengedi azt, hogy
zárt forráskódú szoftverekben is
felhasználhassuk. Az Apps2gonál
érdeklõdjünk a &os;-re elérhetõ
legolcsóbb
&motif; 2.1.20 ELF (&i386;)
típusú terjesztésekkel kapcsolatban.
Kétfajta terjesztés létezik, a
fejlesztõi változat és a
futásidejû változat
(valamivel olcsóbb). Az egyes terjesztésekben
a következõk találhatóak:OSF/&motif; manager,
xmbind,
panner,
wsmFejlesztõi készlet: uil, mrm, xm,
xmcxx, include és
Imake
állományokStatikus és dinamikus ELF
könyvtárakPélda alkalmazásokA megrendelés során ne felejtsük el
megadni, hogy a &motif; melyik &os;
verzióhoz készített
változatát kérjük (valamint az
architektúrát se)! Az
Apps2go NetBSD és OpenBSD
rendszerekkel is foglalkozik, ezeket a változatokat
jelenleg csak FTP-n keresztül lehet
elérni.További információkAz Apps2go honlapjailletvesales@apps2go.com vagy
support@apps2go.comvagytelefonon: (817) 431 8775 és
+1 817 431-8775Honnan lehet &os;-re CDE-t
szerezni?A Xi Graphics korábban
kínált fel CDE-t
&os;-hez, de manapság már nem foglalkoznak
ezzel.A KDE
a CDE-hez nagyon sok tekintetben
hasonló nyílt forráskódú
X11 munkakörnyezet, de érdemes
pillanatást vetnünk az xfce-re
is. A KDE és az
xfce egyaránt
megtalalálható a portok között.
Használhatóak adatbázisrendszerek
&os; alatt?Igen! A &os; hivatalos honlapján
megtaláljuk ezeket a
kereskedelmi gyártók
között.Érdemes még megnéznünk a
Portgyûjteményeben a adatbázisokat
tartalmazó szekciót.Az &oracle; fut &os;
alatt?Igen. A következõ oldalakon találunk
arról információt, hogyan
telepíthetjük &os;-re az
&oracle; &linux;
változatát:
http://www.unixcities.com/oracle/index.html
http://www.shadowcom.net/freebsd-oracle9i/Felhasználói alkalmazásokHol vannak a felhasználói
programok?Nézzünk szét a portok között
és láthatjuk, hogy milyen szoftvereket
portoltak eddig &os;-re. A listában pillanatnyilag
&os.numports; port található és naponta
növekszik, ezért érdemes folyamatosan
figyelni vagy az új portokról úgy is
értesülhetünk rendszeresen, ha
feliratkozunk a &a.announce; címére.A legtöbb portnak mûködnie kell a
6.X,
7.X és
8.X ágak használata
esetén is. Mindegyik &os; kiadás
elkészítésekor készül egy
pillanatfelvétel a portokat tartalmazó
könyvtárról és bekerül a
ports/
könyvtárba.Ezenkívül még csomagok
is rendelkezésünkre állnak, amelyek
lényegében egy tömörített
bináris terjesztési formát takarnak,
némi plusz információval
kiegészítve az egyéni
telepítésekhez
elvégzéséhez. A csomagok könnyen
telepíthetõek és
eltávolíthatóak anélkül,
hogy pontosan ismernénk a benne
található állományok összes
apró részletét.A különbözõ csomagokat a
&man.sysinstall.8; programban (a
Configure menün belül)
található Packages
menüpontban tudjuk telepíteni, vagy
meghívjuk meg a &man.pkg.add.1; parancsot. A
csomagokat leginkább .tbz
kiterjesztésükrõl lehet megismerni,
valamint a telepítõ CD-ken a packages/All
könyvtárban találhatóak. Az
interneten keresztül is le tudjuk tölteni ezek
közül a &os; különbözõ
verzióihoz tartozó változatukat a
hozzánk legközelebbi
tükrözésekrõl:6.X-RELEASE/6-STABLE
esetén:
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-6-stable/7.X-RELEASE/7-STABLE
esetén:
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-7-stable8.X-RELEASE/8-STABLE
esetén:
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-8-stable9-CURRENT esetén:
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-9-currentNem mindegyik port érhetõ el
csomagként, mivel folyamatosan készülnek az
újabbak. Ezért mindig érdemes bizonyos
idõközönként ellenõrizni a
központi ftp.FreeBSD.org
oldalon található csomagokat.Hogyan tudjuk beállítani az INN (Internet
News) szolgáltatást a
gépünkön?Telepítsük az news/inn csomagot vagy portot
és utána kiindulásképpen
nézzük meg Dave Barr INN
oldalát, ahol (angolul) találhatunk
egy INN GYIK-ot.A &os; rendelkezik &java;
támogatással?Igen. Látogassunk el a http://www.FreeBSD.org/java/
oldalra.Miért nem fordul egy port a
6.X-STABLE,
7.X-STABLE vagy
8.X-STABLE változatot
futtató gépeken?Ha olyan &os; verziónk van, amely egy kicsit
lemaradt az aktuális -CURRENT
vagy -STABLE ágak
mögött, akkor valószínûleg
frissítenünk kell a
Portgyûjteményünket. Ennek
részleteirõl a Porterek
kézikönyvében, a Keeping Up
címû részben olvashatunk (angolul). Ha
viszont rendszerünkben minden a lehetõ
legfrissebb, akkor elõfordulhat, hogy valaki olyan
változtatást rakott fel a porthoz, amely a
-CURRENT esetén
mûködik, de a -STABLE
változatban már nem. Ilyenkor
feltétlenül küldjünk egy
hibajelentést a &man.send-pr.1; paranccsal, hiszen a
Portgyûjteménynek a -CURRENT és -STABLE
ágak esetén egyaránt mûködnie
kell.A make index
paranccsal nem sikerült létrehozni az
INDEX állomyánt. Mi a
gond?Elsõként mindig ellenõrizzük, hogy
a Portgyûjteményünk a lehetõ
legfrissebb. A legfrissebb változatnál
jelentkezõ INDEX
készítési hibák mindig szem
elõtt vannak, ezért általában
gyorsan megjavulnak.Ha viszont egy friss verzióval rendelkezünk,
akkor elképzelhetõ, hogy egy másik
hibával kerültünk szembe. A
make index
parancsnak van egy olyan hibája, amely miatt nem
képes a Portgyûjtemény hiányos
példányával dolgozni.
Feltételezi ugyanis, hogy az összes olyan port
megtalálható a rendszerünkben, amely
telepítése szükséges az adott
porthoz. Ennek megértéséhez most
képzeljük el, hogy megvan az
ize/mize port a lemezen, amely
függ az aze/maze porttól,
és emiatt az aze/maze portnak
és függõségeinek is rajta kell
lennie a lemezünkön. Minden más esetben a
make index nem
tud összegyûjteni elegendõ
információt ahhoz, hogy létre tudja
hozni a függõségi gráfot.Ez különösen olyan &os;
felhasználókkal fordul elõ, akik a
&man.cvsup.1; (vagy &man.csup.1;)
használatával frissítik a
Portgyûjteményüket, de a
refuse állományokban
kizártak néhány
kategóriát. Elméletben
természetesen ki lehet zárni akármilyen
kategóriát, azonban a gyakorlat azt mutatja,
hogy ez szinte lehetetlen, mivel túlságosan
sok port függ más kategóriákban
található portoktól. Amíg
valaki meg nem oldja ezt a problémát, addig
fogadjuk el általános szabálynak, hogy
az INDEX
létrehozásához a teljes
Portgyûjteménnyel rendelkeznünk
kell.Néhány ritka esetben még
elõfordulhat, hogy az INDEX
azért nem jön létre, mert a
make.conf állományban
megadtunk valamilyen
WITH_* vagy
WITHOUT_*
változót. Ha úgy érezzük,
hogy ez okozhatja a problémát, akkor
próbáljuk meg elõször ezen
változók nélkül
létrehozatni az INDEX
állományt és csak utána
jelenteni a hibát a &a.ports;
címére.A CVSup miért nincs a
&os; forrásai között?A &os; alaprendszerét úgy
állították össze, hogy saját
magát legyen képes legyen lefordítani,
vagyis az egész operációs rendszer
elõállítható legyen
néhány alapvetõ eszköz
használatával. Ezért a források
között leginkább csak az
található meg, ami feltétlenül
kell a források lefordításához.
Ilyen például a C fordító
(&man.gcc.1;), a &man.make.1;, &man.awk.1; és a
többi.Mivel a CVSup a Modula-3
programozási nyelven íródott, csak
úgy tudnánk beletenni a &os; alaprendszerbe,
ha hozzávennénk és
karbantartanánk egy Modula-3 fordítót
is. Ezzel együtt viszont növekedne a &os;
forrása, amelyet aztán karban is kellene
tartani. Ezért mind a fejlesztõk, mind pedig a
felhasználók számára
egyszerûbb, ha a CVSup egy
külön portként érhetõ el a
rendszerhez. Ez viszont gyorsan telepíthetõ a
&os; telepítõ CD-ken található
csomagokból.Azonban a &os; 6.2-RELEASE
megjelenésétõl kezdve a &os;
felhasználók nem maradnak integrált
CVSup kliens nélkül.
&a.mux; munkájának köszönhetõen
a CVSup alkalmazásnak
elkészült a C nyelven újraírt
változata, a &man.csup.1;, amely most már az
alaprendszer része. Noha jelenleg nem még nem
képes mindarra, amire a
CVSup, elegendõ (és
nagyon gyors!) ahhoz, hogy a forrásainkat frissen
tartsuk. A 6.2 elõtt kiadott rendszerek
esetében ezt portból vagy csomagból is
felrakhatjuk (lásd net/csup).A forrásokon kívül a
telepített portokat is lehet valahogy
frissíteni?A &os; alaprendszere ehhez nem kínál fel
semmilyen eszközt, de léteznek olyan
segédeszközök, amelyekkel valamennyire meg
tudjuk könnyíteni a frissítés
folyamatát. További segédprogramok
telepítésével pedig a portok
kezelését tudjuk tovább
egyszerûsíteni, amirõl a &os;
kézikönyv A portok frissítése
címû szakaszában olvashatunk
bõvebben.Minden nagyobb
verziófrissítésnél újra
kell fordítani az összes telepített portot
a rendszeren?Mindenképpen! Noha látszólag a
frissített rendszeren is remekül futnak a
korábbi verzióra telepített
alkalmazások, könnyen elõfordulhat, hogy az
újabb portok telepítésékor vagy
a meglevõek frissítésekor
véletlenszerû összeomlásokat vagy
egyéb hibákat tapasztalunk.Ne felejtsük el, hogy a rendszer
frissítésekor a különféle
osztott könyvtárak, betölthetõ modulok
és a rendszer egyéb komponensei is
lecserélõdnek. Ezért a régebbi
változataikhoz fordított alkalmazások
egyáltalán nem fognak elindulni vagy nem
mûködnek rendesen.Ezzel kapcsolatban olvassuk el a &os;
kézikönyvének frissítérõl
szóló szakaszát.Minden kisebb
verziófrissítésnél újra
kell fordítani az összes telepített portot
a rendszeren?Általánosságban véve nem. A
&os; fejlesztõi ugyanis mindent megtesznek azért,
hogy ugyanazon a fõ fejlesztési ágon
belüli verziók között megmaradjon a
bináris szintû kompatibilitás. Az
esetleges kivételeket pedig dokumentálni
szokták a kiadásokhoz tartozó
jegyzetekben, ahol többnyire megadják az adott
változtatáshoz tartozóan a
követendõ tanácsokat.A /bin/sh miért ilyen
egyszerû? A &os;-ben miért nincs
bash vagy valamilyen más rendes
parancsértelmezõ?Mert a &posix; szerint lennie kell egy ilyen
parancsértelmezõnek.A valamivel bonyolultabb válasz: sokan
szeretnének olyan szkripteket írni, amelyek
több rendszer közt is átvihetõek.
Ezért a &posix; a parancsértelmezõkre
és a segédprogramokra vonatkozó
parancsokat igen részletesen tárgyalja. A
legtöbb ilyen szkriptet a Bourne-féle
parancsértelmezõben készítik,
és több fontos programozói felület
(&man.make.1;, &man.system.3;, &man.popen.3; és ezek
magasabb szintû, például Perl és
Tcl nyelvi megfelelõi) a
Bourne-parancsértelmezõ
használatán alapszik. Mivel a
Bourne-parancsértelmezõ használata ilyen
széles körben elterjedt, fontos, hogy gyorsan
induljon, elõre megjósolható legyen a
mûködése és ne foglaljon
túlságosan sok memóriát.A jelenlegi implementáció igyekszik ezek
közül az elvárások közül
egyszerre a lehetõ legtöbbet teljesíteni.
A /bin/sh programot csak úgy
tudjuk a megfelelõ méreten tartani, ha nem
tesszük bele az összes többi
parancsértelmezõben megtalálható
kényelmi funkciót. Pontosan ezért
találhatjuk meg viszont a
Portgyûjteményben a többi,
például a bash,
scsh, tcsh és
zsh parancsértelmezõket.
(Ezek konkrét memóriahasználatát
össze is tudjuk vetni, ha a ps
parancs kimenetének
VSZ és RSS oszlopait
megnézzük.)A &netscape; és az
Opera indítása
miért tart olyan sokáig?Erre az az általános válasz, hogy a
névfeloldás valószínûleg
rosszul mûködik a rendszerünkön. A
&netscape; és az
Opera is ellenõrzi a
névfeloldást az indulásakor.
Ezért a böngészõ egészen
addig nem jelenik meg az asztalon, amíg
választ nem kap vagy rá nem jön, hogy
nincs aktív hálózati kapcsolat.Ha a CVSup
használatával frissítjük a
Portgyûjteményt, akkor sok port nem fordul le
mindenféle rejtélyes hibaüzenet
kíséretében! Valami nagy baj van a
Portgyûjteménnyel?Ha úgy korábban úgy
frissítettük a CVSup
használatával a Portgyûjteményt,
hogy nem adtuk meg a ports-allCVSup algyûjteményt,
akkor a ports-base
algyûjteményt is mindig
frissítenünk kell! Ennek okairól a
kézikönyvben olvashatunk.Hogyan lehet MIDI állományokból
audio CD-t készíteni?Ha MIDI állományokból akarunk audio
CD-t készíteni, akkor elõször
telepítsük fel a
Portgyûjteménybõl a audio/timidity++ portot, majd
kézzel tegyük hozzá Eric A. Welsh GUS
patch-eit, melyek a
címrõl tölthetõek le. Miután a
TiMidity++ sikeresen
felkerült a rendszerünkre, a MIDI
állományokat a következõ paranccsal
tudjuk átkonvertálni WAV
állományokra:&prompt.user; timidity -Ow -s 44100 -o /tmp/juke/01.wav01.midA WAV állományok ezek után
tetszõleges formátumba
konvertálhatóak tovább vagy
készíthetõ belõlük egy audio
CD, ahogy azt a &os; kézikönyvben
is olvashatjuk.A rendszermag beállításaNehéz testreszabni a rendszermagot?Egyáltalán nem! Ezzel kapcsolatban
olvassuk el a &os;
kézikönyv rendszermag
beállításairól
szóló részét.Az új kernel
állomány a hozzá tartozó
modulokkal együtt a /boot/kernel
könyvtárba települ, míg a
rendszermag korábbi változata és a
moduljai a /boot/kernel.old
könyvtárba kerül át, így
ha netalán valamit elrontottunk volna, akkor a
rendszermag korábbi változatának
betöltésével
lehetõségünk lesz kijavítani a
hibát.A rendszermag nem fordul le, mert a
_hw_float nem található.
Hogyan lehet megoldani ezt a problémát?Ez valószínûleg azért
következett be, mert eltávolítottuk az
npx0 (lásd &man.npx.4;)
támogatást a rendszermag
beállításai közül, mert a
rendszerünkben nincs matematikai társprocesszor.
Az npx0 eszköz
jelenléte azonban
kötelezõ. Valahol a
gépünkben lennie kell olyan eszköznek,
amely a lebegõpontos számok hardveres
kezelését végzi, annak ellenére,
hogy nem egy különálló eszköz,
ahogy régen a 386-osoknál volt. A
rendszermagban szerepelnie kell az
npx0 eszköznek. Ha
netalán még sikerülne is
npx0 támogatás
nélkül fordítanunk egy rendszermagot,
akkor sem tud elindulni.Miért ilyen nagy a rendszermag mérete
(közel 10 MB)?Nagyon valószínû, hogy a
rendszermagunk debug módban
készült el. A debug módú
rendszermagokban rengeteg olyan szimbólum
található, amely hasznos lehet a hibák
keresése és a rendszer vizsgálata
során, ezért emiatt jelentõs
mértékben növekszik a mérete.
Emiatt nem kell aggódnunk, mert egy
hibakeresésre felkészített rendszermag
egyáltalán nem vagy csak egy kicsivel lassabb,
mint a hagyományos változat, illetve a
rendszer összeomlásakor mindig mindig
szükségünk lehet ezekre a debug
információkra.Ha viszont kevés a lemezterület vagy
egyszerûen csak nem akarunk debug módú
rendszermagot akarunk futtatni, akkor a
következõkre kell figyelnünk:Vegyük ki a rendszermag
konfigurációs
állományából a
következõ sort:makeoptions DEBUG=-gA &man.config.8; használata során ne
használjuk a
beállítást.A fentiek közül akármelyiket is
választjuk, a rendszermagunk debug módban
jön létre. Ha azonban sikerült betartani a
fentebb javasolt lépéseket, akkor egy
normál rendszermagot kapunk, amely mérete
ilyenkor jelentõs mértékben visszaesik: a
legtöbbjük olyan 1,5 és 2 MB
körül van.Miért ütköznek a
megszakítások, amikor többportos soros
vonali kártyákat akarunk
használni?Ha a rendszermagot a többportos soros vonali
kártyák támogatásával
fordítjuk le, akkor a rendszertõl azt az
üzenetet kapjuk, hogy csak az elsõ
megszakítást fogja használni, a
többit pedig ütközés miatt (interrupt
conflict) kihagyja. Hogyan lehet ezen
javítani?A gondot alapvetõen az okozza, hogy a &os; a
rendszermagban fixen letárolja ezeket, nehogy
valamilyen hardveres vagy szoftveres
ütközés miatt elkallódjanak. Ezen
úgy tudunk segíteni, ha egyetlen IRQ vonal
kivételével az összes többi
beállítását szabadon hagyjuk.
Íme erre egy példa:#
# Többportos nagysebességû soros vonali eszközök - 16550 UART
#
device sio2 at isa? port 0x2a0 tty irq 5 flags 0x501 vector siointr
device sio3 at isa? port 0x2a8 tty flags 0x501 vector siointr
device sio4 at isa? port 0x2b0 tty flags 0x501 vector siointr
device sio5 at isa? port 0x2b8 tty flags 0x501 vector siointrMiért nem lehet lefordítani a
rendszermagot, még a GENERIC
beállításaival sem?Ennek több oka is lehet. Ezek közül
néhány, de nem feltétlenül ebben a
sorrendben:Nem a
make buildkernel
és
make installkernel
parancsokat használtuk és
valószínûleg a forrásaink sem
egyeznek meg a jelenleg futó rendszerével
(például egy &rel.current;-RELEASE
rendszert akarunk fordítani egy
&rel2.current;-RELEASE rendszeren). Ha
frissíteni akarunk, akkor olvassuk el a
/usr/src/UPDATING
állományt, különös
tekintettel a végén
található COMMON ITEMS
címû szakaszra.A
make buildkernel
és
make installkernel
parancsokat használtuk, de elõtte nem futott
le rendesen a
make buildworld
parancs. A
make buildkernel
parancs ugyanis erõsen támaszkodik a
make buildworld
által végzett munkára.Gyakran a &os;-STABLE
változat használata esetén is
elõfordulhat, hogy olyan pillanatban
töltöttük le a forrásokat, amikor
módosítás alatt voltak vagy
valamiért nem mûködtek rendesen.
Kizárólag a kiadások esetén
tudjuk szavatolni a hibátlan
fordítást, noha a &os;-STABLE
verzióból készült
változatok is többnyire megfelelõek.
Próbáljuk meg újra letölteni a
forrásokat, ha eddig még nem
próbálkoztunk volna vele, és
nézzük meg, hogy ez segít-e megoldani
a problémát. Keressük másik
szervert, ha gondjaink vannak a
frissítéssel.Honnan tudhatjuk meg milyen ütemezõvel
dolgozik a rendszerünk?Nézzük meg, hogy a rendszerünkben
elérhetõ-e a kern.sched.quantum
változó. Ha van ilyenünk, akkor valami
ilyesmit kell tapasztalnunk:&prompt.user; sysctl kern.sched.quantum
kern.sched.quantum: 99960Ha létezik a
kern.sched.quantum nevû sysctl
változó, akkor a 4BSD ütemezõ fut
(lásd &man.sched.4bsd.4;). Ha nem, akkor egy ilyen
hibát kapunk a &man.sysctl.8; parancstól (ezt
nyugodtan figyelmen kívül hagyhatjuk):&prompt.user; sysctl kern.sched.quantum
sysctl: unknown oid 'kern.sched.quantum'Az aktuálisan használt ütemezõ
neve közvetlenül elérhetõ a
kern.sched.name sysctl
változó lekérdezésén
keresztül:&prompt.user; sysctl kern.sched.name
kern.sched.name: 4BSDMi az a kern.sched.quantum?A kern.sched.quantum
értéke határozza meg, hogy egy
futó program legfeljebb mennyi órajelet futhat
egyszerre, megszakítás nélkül.
Ezt az értéket a 4BSD ütemezõ
használja, ezért a
jelenlétébõl vagy
hiányából következtetni tudunk a
pillanatnyilag használatban levõ
ütemezõre.Lemezek, állományrendszerek és
rendszertöltõkHogyan adjunk lemezeket a &os;
rendszerünkhöz?Ezzel kapcsolatban olvassuk el a lemezek
hozzáadásáról
szóló részt a &os; kézikönyvben.
Hogyan lehet átteni a rendszert egy nagyobb
lemezre?Ezt legegyszerûbben úgy tudjuk
megcsinálni, ha újratelepítjük az
operációs rendszert az új lemezre
és külön áttesszük a
felhasználói adatokat. Ez
különösen ajánlott abban az esetben,
ha már több kiadás óta
követjük a -STABLE
változatot, vagy ha korábban már
frissítettük a kiadásunkat. A
&man.boot0cfg.8; segítségével fel
tudjuk rakni a booteasyt mind a két lemezre és
így egészen addig váltogatni tudjuk a
kettõt, amíg teljesen át nem
álltunk. Ugorjuk át a következõ
bekezdést, és olvassuk el, hogy rakjuk
át az adatokat.Úgy is dönthetünk, hogy nem
telepítjük újra a rendszert. Ekkor vagy a
&man.sysinstall.8;, vagy pedig a &man.fdisk.8; és a
&man.disklabel.8; használatával osszuk fel
és címkézzük meg az új
lemezt. Érdemes még a &man.boot0cfg.8;
segítségével felraknunk a booteasyt
mind a két lemezre, így miután
átmásoltuk a régi rendszerünket az
új lemezre, ennek megtartásával ki
tudjuk próbálni az új rendszert. A
lemezek formázásáról szóló
cikkben olvashatunk ennek pontosabb
részleteirõl.Most, miután sikeresen beállítottuk
az új lemezt, készen állunk az adatok
átmásolására. Sajnos nem lehet
csak úgy vakon átmásolni ezeket egyik
lemezrõl a másikra. Ilyenkor ugyanis bizonyos
dolgok (például a /dev könyvtárban
található eszközleírók, az
állományjelzõk és a linkek stb.)
hajlamosak elromlani. Ezért ehhez olyan
eszközökre lesz szükségünk,
amelyek ismerik ezeket a dolgokat, mint
például a &man.dump.8;. Továbbá
javasoljuk, hogy egyfelhasználós módban
végezzük el az átvitelt, noha ez nem
feltétlenül szükséges.A rendszerindító
állományrendszer
átmozgatásához egyedül a
&man.dump.8; és &man.restore.8;
segédprogramokra lesz szükségünk.
Esetleg a &man.tar.1; parancs is használható,
de nem minden esetben. A &man.dump.8; és
&man.restore.8; páros akkor is remekül
használható, ha egy partíció
tartalmát egy üres partícióra
akarjuk átvinni. A következõ
lépések szükségesek ahhoz, hogy a
dump parancs
segítségével átvigyük egyik
partícióról a másikra az
adatokat:Hozzunk létre egy új
partíciót.Ideiglenesen csatlakoztassuk egy
könyvtárba.Lépjünk be abba a
könyvtárba.Mentsük le a régi
partíciót és az eredményt
küldjük át az újra.Például, ha a /mnt
könyvtárba csatlakoztatott
/dev/ad1s1a
eszközrõl akarjuk átvinni a jelenlegi
gyökérpartíciónkat, akkor ezeket a
parancsokat kell kiadnunk:&prompt.root; newfs /dev/ad1s1a
&prompt.root; mount /dev/ad1s1a/mnt
&prompt.root; cd /mnt
&prompt.root; dump 0af - / | restore rf -További munkát igényel, ha a
dump parancs
segítségével a
partícióinkat is át akarjuk szervezni.
Például a /var partíciót
úgy tudjuk beleolvasztani a tövébe, ha
létrehozunk egy olyan partíciót, amely
mind a kettõ számára elegendõ nagy,
majd a fentebb leírt módszerrel
elõször átmozgatjuk a tövét,
utána pedig átmozgatjuk az
alpartíció tartalmát az elsõ
mozgatás során létrejött egyik
üres könyvtárba:&prompt.root; newfs /dev/ad1s1a
&prompt.root; mount /dev/ad1s1a/mnt
&prompt.root; cd /mnt
&prompt.root; dump 0af - / | restore rf -
&prompt.root; cd var
&prompt.root; dump 0af - /var | restore rf -Egy könyvtárat, például
/var tartalmát
pedig úgy tudunk leválasztani a
tövérõl, vagyis átrakni egy
korábban nem létezõ
partícióra, ha elõször
létrehozzuk mind a két
partíciót, csatlakoztatjuk a leendõ
alpartíciót az ideiglenes csatlakozási
ponton belül a megfelelõ könyvtárba
és mindkettõre átmozgatjuk a régi
partíció teljes tartalmát:&prompt.root; newfs /dev/ad1s1a
&prompt.root; newfs /dev/ad1s1d
&prompt.root; mount /dev/ad1s1a/mnt
&prompt.root; mkdir /mnt/var
&prompt.root; mount /dev/ad1s1d/mnt/var
&prompt.root; cd /mnt
&prompt.root; dump 0af - / | restore rf -A felhasználói adatok esetén a
&man.cpio.1;, &man.pax.1;, &man.tar.1; és &man.dump.8;
eszközöket ajánljuk. Az írás
pillanatában még úgy tudjuk, hogy nem
tartják meg az állományjelzõkkel
kapcsolatos információkat, ezért csak
óvatosan használjuk ezeket!A Veszélyesen dedikált
(Dangerously Dedicated) lemezek
veszélyesek a felhasználóra?A telepítés
során két különbözõ
módon tudjuk partícionálni a
lemezeinket. Alapértelmezés szerint a
rendszer igyekszik kompatbilis maradni a
gépünkön található többi
operációs rendszerrel. Ilyenkor
normális partíciós táblabeli
bejegyzéseket készít (amelyeket &os;
alatt slice-oknak hívnak), és
egy ilyen slice-ba teszi az összes saját
partícióját. Emellé még
telepíteni tudjuk az operációs
rendszerek választásának
lehetõségét is a rendszer
indításakor. A másik
lehetõség választása esetén
azonban a &os; teljesen kisajátítja a lemezt
és nem is próbál meg kompatibilis
maradni a többi operációs
rendszerrel.Miért is nevezzük ezt
veszélyesnek? A lemez ebben az esetben
nem tartalmaz semmi olyat, amelyet a hétköznapi
programok partíciós táblaként
tudnának beazonosítani. Attól
függõen, hogy mennyire illedelmes, egy ilyen
program panaszkodni fog, amikor megpróbálja
értelmezni a lemez tartalmát, de rosszabb
esetben anélkül felülírja a
rendszerbetöltõt, hogy bármit is jelzett
volna. Ráadásul a veszélyesen
dedikált módon kiosztott lemezek
még bizonyos BIOS-okat is képesek megzavarni,
többek közt az Award (például
amelyek a HP NetServer, Micronics és hasonló
rendszerekben találhatóak) vagy Symbios/NCR
(népszerû 53C8xx SCSI-vezérlõk)
típusúak esetén találkozhatunk
ezzel a problémával. Ez a lista persze nem
teljes, más gyártók termékeivel
is gondok akadhatnak. Ennek a hibának jellemzõ
tünete a read error
hibaüzenet, amely arra utal, hogy a &os;
betöltõje nem találja saját
magát a lemezen, vagy éppen az egész
rendszer megáll a rendszer indítása
közben.Akkor mégis mi értelme van ennek? Csak
néhány kilobyte-tot spórolunk vele,
miközben komoly gondokat okozhat egy frissen
telepített rendszer esetében. A
veszélyesen dedikált mód
eredetileg az új &os; telepítõket
veszélyeztetõ egyik komoly hibát
szeretné kiküszöbölni: a merevlemezek
BIOS és lemez önmaga által ismert
geometriai beállításainak
egyeztetése.A lemezgeometria fogalma
tulajdonképpen már egy elavult fogalom, de a
PC-k BIOS-a legbelül még mind a mai napig
így kommunikál a lemezekkel. Amikor a &os;
telepítõjével slice-okat hozunk
létre, olyan módon kell
rögzítenünk a lemezre ezek
pozícióját, hogy a BIOS képes
legyen megtalálni. Ha ez nem sikerül, akkor nem
tudjuk elindítani a rendszert.A veszélyesen dedikált
mód ezt a problémát az
egyszerûsítésén keresztül
próbálja megoldani, és néha
sikerül is neki. Ezt azonban csak akkor javasoljuk, ha
semmi más nem mûködik, hiszen az esetek
túlnyomó részében más
megoldás is létezik.Hogy tudjuk tehát akkor elkerülni a
veszélyesen dedikált mód
használatát a telepítés
során? Jegyezzük fel, hogy mik a BIOS szerint a
merevlemezünk geometriai
beállításai. Ezt a
rendszerindítás közben a
rendszermagtól is megkérdezhetjük
úgy, hogy a boot:
paranccsorába megadjuk a
beállítást, vagy a betöltõben
a boot -v parancsot használjuk.
Így pontosan a telepítõ
indítása elõtt a rendszermag ki fogja
írni a BIOS által ismert geometriai
beállításokat. Ne essünk
pánikba, várjuk meg, amíg a
telepítõ elindul, tekerjünk vissza a
számokhoz és olvassuk le ezeket. A lemezek
általában a BIOS sorrendjében jelennek
meg, tehát elõször az IDE aztán a
SCSI típusúak.A lemez partícionálásakor
ellenõrizzük, hogy az FDISK
képernyõjén megjelenõ geometriai
beállítások megfelelõek
(tehát egyeznek a BIOS által ismert
értékekkel). Ha eltérést
tapasztalunk, akkor a G billentyû
lenyomásával tudjuk átjavítani.
Erre leginkább akkor lesz
szükségünk, ha a lemez teljesen üres,
vagy ha a lemezt egy másik rendszerbõl hoztuk
át. Ez egyébként csak azoknál a
lemezeknél okoz gondot, amelyekrõl a rendszert
akarjuk indítani, a &os; a többi lemezzel
már remekül elboldogul.Miután sikerült egyeztetnünk a BIOS
és a &os; geometriai
beállításait, szinte biztos, hogy nem
kell már emiatt aggódnunk, így a
veszélyesen dedikált
módra sincs szükségünk. Ha viszont
mégis egy read error
hibaüzenetet kapnánk a rendszer
indítása közben, akkor tegyünk egy
próbát. Semmit sem
veszíthetünk.Ha a veszélyesen dedikált
mód használatáról
szeretnénk visszatérni a megszokottra, akkor
két lehetõségünk van.
Elõször is teljesen le kell nulláznunk az
MBR-t, így biztosra vehetjük, hogy az
ezután következõ telepítések
során egy teljesen üres lemezt látunk.
Ezt például így lehet megtenni:&prompt.root; dd if=/dev/zero of=/dev/rda0 count=15A másik módszer egy hivatalosan nem
dokumentált DOS-os lehetõség
használata:C:\>fdisk /mbrEzzel egy új Master Boot Recordot tudunk
telepíteni, ami ezzel együtt felülírja
a BSD rendszertöltõjét is.Milyen partíciókon lehet Soft Updatest
használni? A Soft Updates
állítólag nem mûködik
rendesen a gyökérpartíció
esetén.A rövid válasz: A Soft Updates
bármelyik partíción minden
további nélkül
használható.A hosszabb válasz: Korábban voltak
bizonyos kétségek afelõl, hogy a Soft
Updates jól mûködik a
rendszerindító partíciókon is.
Ez alapvetõen a Soft Updates két
jellemzõjére vezethetõ vissza.
Elõször is, a Soft Updatest alkalmazó
partíciók esetén elõfordulhat,
hogy a rendszerösszeomlás során elveszik
valamennyi adat (maga a partíció nem lesz
hibás, csupán némi adat tûnik el),
illetve a Soft Updates ideiglenesen kifogyhat a
tárhelybõl.A Soft Updates használata során a
rendszermag legfeljebb harminc másodperc múlva
írja ki fizikailag a változtatásokat a
lemezre. Tehát amikor egy nagyobb
állományt törlünk, akkor ez az
állomány egészen addig a lemezen marad,
amíg a rendszermag ténylegesen el nem
végzi ezt a törlést. Ezzel viszont
nagyon egyszerûen létrehozható egy
ütközés (race condition) az
állományrendszeren. Tegyük fel, hogy
letörlünk egy nagyobb állományt
és utána közvetlenül
létrehozunk egy másik nagyobb
állományt. Mivel az elsõ
állomány ilyenkor még nem
törlõdik le valójában a
lemezrõl, ezért a második
számára már nem lesz elegendõ
helyünk. A rendszer ekkor egy hibaüzenetben fog
figyelmeztetni minket, miközben pontosan az
imént töröltünk le egy
óriási állományt! Ha
néhány másodperccel késõbb
újra megpróbáljuk létrehozni ezt
az állományt, akkor már minden a
megfelelõ módon fog zajlani. Ezt
régebben sok &os; felhasználó nem tudta
mire vélni.Ha a rendszerünk olyankor omlik össze, amikor
a rendszermag már elkezdte egy nagyobb
mennyiségû adat kiírását a
lemezre, de még nem fejezõdött be, akkor
könnyen elõfordulhat, hogy ez az adat elveszik
vagy meghibásodik. Ennek kockázata nagyon
kicsi, és általában kezelhetõ,
viszont az IDE-meghajtókban található
írási gyorsítótár
használata jelentõsen növeli ezt.
Ezért a Soft Updates alkalmazása során
nem javasoljuk ennek használatát.Ezek a problémák az összes Soft
Updates partíciót veszélyeztetik.
Mennyiben vonatkoznak viszont ezek a
gyökérpartícióra?A gyökérpartíción nagyon
ritkán változnak fontos
információk. A
/boot/kernel/kernel és az
/etc egyedül a
rendszer karbantartása során frissül,
vagy például amikor a
felhasználók jelszót
változtatnak. Ha a rendszer egy ilyen
változtatás harminc másodperces
idején belül omlik össze, akkor megvan
rá az esélyünk, hogy elvesznek az
adataink. Ez a kockázat a legtöbb
alkalmazás számára elfogadható,
de semmiképpen sem szabad figyelmen kívül
hagynunk. Ha a rendszerünk nem képes
vállalni még ennyi kockázatot sem,
akkor a rendszerindító partíción
tiltsuk le a Soft Updates használatát!A gyökérpartíció
hagyományosan az egyik legkisebb
partíció. Ha viszont az ideiglenes
állományok tárolására
szánt /tmp
könyvtárat is ezen belülre tesszük
és gyakran használjuk, akkor ebbõl
idõszakosan tárhelyproblémáink
adódhatnak. Könnyen megoldhatjuk azonban ezt a
problémát, ha a /tmp könyvtárhoz
létrehoznunk egy szimbolikus linket a /var/tmp
könyvtárra.Mi történt a &man.ccd.4;
eszközzel?A hibajelenség:&prompt.root; ccdconfig -C
ccdconfig: ioctl (CCDIOCSET): /dev/ccd0c: Inappropriate file type or formatEz általában olyankor
történik, amikor olyan c
partíciókat próbálunk meg
összefûzni, amelyek alapértelmezés
szerint unused (nem
használt) típusúak. A
&man.ccd.4; meghajtó azonban megköveteli, hogy
az érintett partíciók
FS_BSDFFS típusúak
legyenek. Szerkesszük át a lemezeken
található címkéket és
változtassuk meg a partíciók
típusát a 4.2BSD
értékre.Miért nem lehet a &man.ccd.4; eszköz
lemezcímkéjét szerkeszteni?A hibajelenség:&prompt.root; disklabel ccd0
(itt valami gondot ír ki, ezért megpróbáljuk szerkeszteni a címkét)
&prompt.root; disklabel -e ccd0
(edit, save, quit)
disklabel: ioctl DIOCWDINFO: No disk label on disk;
use "disklabel -r" to install initial labelEzt általában azért kapjuk, mert a
&man.ccd.4; által visszaadott lemezcímke
valójában nem létezik a
lemezen. Ezen úgy tudunk segíteni, ha
explicit módon visszaírjuk, valahogy
így:&prompt.root; disklabel ccd0 > /tmp/lemezcimke.tmp
&prompt.root; disklabel -Rr ccd0/tmp/lemezcimke.tmp
&prompt.root; disklabel -e ccd0
(most már mûködni fog)Lehet más operációs rendszerek
állományrendszerét is csatlakoztatni &os;
alatt?A &os; több más
állományrendszert is ismer.UFSAz UFS formátumú CD-k &os; alatt
közvetlenül csatlakoztathatóak. A
Digital UNIX és más rendszerek UFS
partícióit nem már annyira
könnyû csatlakoztatni, ez leginkább a
kérdéses operációs
rendszer partícionálási
megoldásaitól függ.ext2/ext3A &os; támogatja az
ext2fs és ext3fs
partíciókat. Errõl bõvebben
lásd a &man.mount.ext2fs.8; man oldalt.NTFSA &os; csak olvasni képes az NTFS
partíciókat. Ezzel kapcsolatban a
&man.mount.ntfs.8; man oldalán találunk
részletesebb információkat. Az
írhatóság
használatához az ntfs-3g
portolt változatát javasoljuk
(lásd sysutils/fusefs-ntfs).
FATA &os; egyaránt képes írni
és olvasni a FAT típusú
partíciókat. Errõl a
&man.mount.msdosfs.8; man oldalán tudhatunk meg
többet.ReiserFSA &os; tudja olvasni a ReiserFS
partíciókat. Ezt a &man.mount.reiserfs.8;
man oldalon olvashatjuk.ZFSA &os; jelen pillanatban a &sun; ZFS
meghajtójának átiratát is
tartalmazza. Jelenleg azonban csak elegendõ
memóriával rendelkezõ &arch.amd64;
platformokon javasoljuk a használatát.
Részletesebb
információkért lásd a
&man.zfs.8; man oldalt.A &os; hálózati
állományrendszereket is támogat,
többek közt az NFS-t (lásd
&man.mount.nfs.8;), a NetWare-t (lásd
&man.mount.nwfs.8;), és Microsoft-féle SMB
állományrendszereket (lásd
&man.mount.smbfs.8;). Más egyéb
FUSE-alapú állományrendszer (sysutils/fusefs-kmod)
támogatását is megtalálhatjuk a
portok között.Hogyan lehet másodlagos (logikai) DOS
partíciókat csatlakoztatni?A logikai DOS partíciók az elsõdleges
partíciók után
találhatóak. Például, ha van
egy E betûjelû logikai
partíciónk a második
SCSI-meghajtónkon, akkor lennie kell egy
ötödik slice-nak a /dev könyvtárban,
amelyet majd csatlakoztatni tudunk:&prompt.root; mount -t msdosfs /dev/da1s5 /dos/eHasználható titkosított
állományrendszer &os; alatt?Igen. Erre a célra a &man.gbde.8; és a
&man.geli.8; is tökéletesen alkalmas. A
részleteket lásd a &os; kézikönyv
A lemezpartíciók titkosítása
címû fejezetében.A &windowsnt; rendszertöltõjével is el
lehet indítani a &os;-t?Ehhez tulajdonképpen csak annyit kell
csinálnunk, hogy átmásoljuk a &os;
rendszerindító
partíciójának az elsõ
szektorát egy állományba a
DOS/&windowsnt; partíción belül. Legyen
ez például a
C:\BOOTSECT.BSD állomány
(a C:\BOOTSECT.DOS
mintájára), amelyhez aztán így
igazítjuk a c:\boot.ini
állományt:[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows NT"
C:\BOOTSECT.BSD="&os;"
C:\="DOS"Ha a &os; ugyanazon a lemezen található,
ahonnan a &windowsnt; is indul, akkor egyszerûen csak
másoljuk át a /boot/boot1
állományt C:\BOOTSECT.BSD
néven. Ha viszont a &os; egy másik lemezen
található, akkor a
/boot/boot1 önmagában
már nem elegendõ, hanem helyette a
/boot/boot0 állományra
lesz szükségünk.A /boot/boot0
állományt a &man.sysinstall.8;
használatával kell telepíteni
abból a menübõl, ahol a &os; boot
managerét kell kiválasztani. Erre
azért van szükség, mert a
/boot/boot0 állományon
belül a partíciós tábla teljesen
üres, azonban a &man.sysinstall.8; át fogja
másolni a partíciós
táblát mielõtt a
/boot/boot0 állományt az
MBR-be tenné.Ne másoljunk át csak
úgy egyszerûen a
/boot/boot0 állományt
a /boot/boot1 helyett! Ezzel
felülíródik a partíciós
táblánk és így a
számítógépet nem tudjuk
elindítani!Amikor a &os; boot managere lefut, az utoljára
indított operációs rendszert a
partíciós táblában
aktívként jelöli meg (ezzel
lényegében megjegyzi), majd ezután
beírja magát az MBR-be. Emiatt, hogy ha csak
egyszerûen átmásoljuk a
/boot/boot0 állományt a
C:\BOOTSECT.BSD
állományba, akkor csak egy egyetlen
aktív bejegyzést tartalmazó üres
partíciós táblát fog
visszaírni az MBR-be.A LILO-ból hogyan lehet &os;-t és Linuxot
is indítani?Ha a &os; és a &linux; is ugyanazon a lemezen
helyezkedik el, akkor nincs más teendõnk, mint
követni a LILO telepítési
útmutatójában a nem-&linux;
típusú operációs rendszerek
indítására vonatkozó
utasításokat. Ezek röviden
összefoglalva a következõk:Indítsuk el a Linuxot és vegyük fel a
következõ sort az
/etc/lilo.conf
állományba:other=/dev/hda2
table=/dev/hda
label=&os;(A fentiekben feltételeztük, hogy a &os;-t
tartalmazó slice a &linux; számára
/dev/hda2 néven
érhetõ el. Ez természetesen a
saját konfigurációnkhoz kell szabni.)
Ezután egyszerûen csak futtassuk le a
lilo parancsot root
felhasználóként és már
készen is vagyunk.Ha a &os; egy másik lemezen
található, akkor a
loader=/boot/chain.b
LILO-bejegyzést kell használnunk.
Például:other=/dev/dab4
table=/dev/dab
loader=/boot/chain.b
label=&os;Bizonyos helyzetekben elõfordulhat, hogy a &os;
rendszertöltõjének át kell adnunk a
meghajtó BIOS szerinti sorszámát, mert
csak így tudjuk rendesen elindítani a
második lemezrõl. Például, ha a
&os; szerint a SCSI-lemezünk a BIOS-ban az 1-es lemez,
akkor ezt kell megadnunk a &os;
rendszertöltõjének:Boot: 1:da(0,a)/boot/kernel/kernelA &man.boot.8; beállítható
úgy, hogy a rendszer indításakor
automatikusan mindig ezt a beállítást
használja.A &os; és &linux; együttes
használatáról további
részleteket a &linux;+&os; mini-HOWTO
címû írásból tudhatunk
meg.Hogyan lehet a GRUB használatával &os;-t
és Linuxot is indítani?A &os;-t nagyon könnyû elindítani a
GRUB segítségével. Ehhez csupán
annyit kell tennünk, hogy felvesszük a
következõ sorokat a GRUB
konfigurációs állományába
(/boot/grub/menu.lst, vagy bizonyos,
például Red Hat-típusú
rendszerekben a
/boot/grub/grub.conf):title &os; 6.1
root (hd0,a)
kernel /boot/loader
Itt a hd0,a az elsõ
lemezen található rendszerindító
partícióra mutat. Ha a lemezen belül a
slice számát is szeretnénk megadni,
akkor írhatjuk így is:
(hd0,2,a). Ha ezt nem adjuk meg,
akkor a GRUB alapértelmezés szerint a lemezen
levõ elsõ a
partícióval rendelkezõ slice-ot keresi
meg.Hogyan lehet a BootEasy
használatával elindítani a &os;-t
és a Linuxot?A LILO-t ne a Master Boot Recordba, hanem a linuxos
partíciónk elejére
telepítsük. Ezután a
BootEasybõl már el
tudjuk indítani a LILO-t.Abban az esetben is ezt javasoljuk, ha &windows;
és &linux; is van a gépünkön, mivel
így szintén egyszerûbb lesz
elindítani a Linuxot, ha netalán valamikor
újra kellene telepíteni a &windows;-t (ami
viszont egy irigy operációs
rendszer, mert nem tûr meg semmilyen más
operációs rendszert maga mellett a Master Boot
Recordban).A rendszerindításkor látható
??? hogyan írható át
valami értelmesre?Ez az szabványos boot managerrel csak úgy
lehet megoldani, ha újratelepítjük. A
portok között viszont a sysutils
kategóriában rengeteg olyan más boot
managert találhatunk, amely tud ilyet is.Cserélhetõ lemezes meghajtókat hogyan
lehet használni?Legyen az akár egy &iomegazip;, EZ drive
meghajtó (esetleg egy floppy, ha így akarjuk
használni), vagy éppen egy új
merevlemez, miután már
telepítettük és felismerte a rendszert,
illetve behelyeztük a lemezt, kártyát
vagy akármit, minden esetben szinte ugyanaz a
teendõ.(Ez a válasz leginkább Mark Mayo ZIP GYIK
címû írásán
alapszik.)Ha tehát egy ZIP meghajtóról vagy
floppylemezrõl beszélünk, amelyen egy DOS-os
állományrendszer található,
akkor azt parancssorból így
érhetjük el, ha floppy:&prompt.root; mount -t msdosfs /dev/fd0c /floppyvagy így, ha egy gyári
beállításokkal rendelkezõ
ZIP-lemez:&prompt.root; mount -t msdosfs /dev/da2s4 /zipA többi lemez esetén a &man.fdisk.8; vagy a
&man.sysinstall.8; segítségével
nézzük meg, hogy milyen partíciók
és hogyan találhatóak meg
rajtuk.A következõ példákban egy
da2 eszközként, vagyis
egy harmadik SCSI-lemezként megjelenõ
ZIP-meghajtót fogunk használni.Hacsak nem floppyval van dolgunk, illetve nem
tervezzük másoknak is odaadni a
cserélhetõ médiumot, akkor érdemes
inkább BSD típusú
állományrendszert telepíteni rá.
Így támogatottak lesznek a hosszú
állománynevek, és legalább egy
kétszer gyorsabb és egy sokkal
megbízhatóbb megoldást kapunk. Ehhez
elõször is le kell szednünk a DOS-szintû
partíciókat és
állományrendszereket. Erre a célra
egyaránt megfelel a &man.fdisk.8; vagy a
&man.sysinstall.8;, illetve kisebb lemezek esetén
valószínûleg nem is lesz
szükségünk több
operációs rendszer
támogatására, így aztán
közvetlenül is törülhetjük
ezeket:&prompt.root; dd if=/dev/zero of=/dev/rda2 count=2
&prompt.root; disklabel -Brw da2 autoA &man.disklabel.8; vagy a &man.sysinstall.8;
használatával ezután létre
tudunk hozni BSD típusú
partíciókat. Valószínûleg
erre lesz szükségünk, ha
lapozóállományt is tenni akarunk a
lemezre, noha ennek nem sok értelme van
például egy ZIP-meghajtó
esetén.Végezetül hozzunk létre egy új
állományrendszert. Itt most ez egész
ZIP-lemezen egyetlen partíció lesz:&prompt.root; newfs /dev/rda2cCsatlakoztassuk:&prompt.root; mount /dev/da2c /zipEmellett még hasznos lehet felvenni hozzá
egy sort az /etc/fstab
állományba is (lásd &man.fstab.5;),
így a jövõben elegendõ csak a
mount /zip parancsot kiadnunk a
csatlakoztatásához:/dev/da2c /zip ffs rw,noauto 0 0Miért ad a rendszer Incorrect super
block hibát CD-k
csatlakoztatásánál?Fel kell világosítanunk a &man.mount.8;
parancsot a csatlakoztatandó eszköz
típusáról. Errõl a kézikönyv lézeres tárolóeszközökrõl szóló részében
olvashatunk, innen is különösen a
Adat CD-k használata
címû szakaszt ajánljuk.Miért ad a rendszer Device not
configured hibaüzenetet CD-k
csatlakoztatásakor?Ez általában arra utal, hogy nincs CD a
meghajtóban, vagy a meghajtó nem
érhetõ el a buszon. Ezzel kapcsolatban a
kézikönyv Adat CD-k használata
címû szakaszát javasoljuk
elolvasásra.Miért jelenik meg az összes nemzeti karakter
helyén ?, amikor &os; alatt
csatlakoztatunk egy CD-t?A CD-n valószínûleg a
Joliet kiterjesztés
használatával tárolják az
állományok és könyvtárak
adatait. Erre vonatkozóan a kézikönyvben
a Lézeres tárolóeszközök (CD-k) létrehozása és használata
címû rész elolvasását
javasoljuk, különös tekintettel az Adat CD-k használata
címû szakaszra.A &os; alatt készített CD-ket nem lehet
más operációs rendszerekkel olvasni.
Miért nem?Ez minden bizonnyal abból fakad, hogy nem egy
ISO 9660 állományrendszert vettük
fel rá, hanem közvetlenül maguk az
állományokat. Olvassuk el a
kézikönyvben a Lézeres tárolóeszközök (CD-k) létrehozása és használata
címû fejezetet, de különösen a
Nyers adat CD-k írása
címû részt.Hogyan lehet lementeni egy adat CD tartalmát a
merevlemezre?Errõl a kézikönyvben találunk
hasznos információkat, azon belül is az
Adat CD-k másolása
címû szakaszban. A CD-kkel
végezhetõ további mûveletekrõl
a kézikönyv Lézeres tárolóeszközök (CD-k) létrehozása és használata
címû részében találhatunk
részletes útmutatásokat.Miért nem lehet audio CD-ket csatlakoztatni a
mount paranccsal?Ha zenei CD-ket próbálunk meg
csatlakoztatni, akkor például egy
cd9660: /dev/acd0c: Invalid argument
hibát fogunk kapni a rendszertõl. Ez
azért történik, mert a
mount parancs csak
állományrendszerekkel
használható. A zenei CD-ken viszont semmilyen
állományrendszer nincs, egyszerûen csak
maga az adat. Az olvasásukhoz olyan programra lesz
szükségünk, amely képes zenei
CD-kkel dolgozni, mint például az audio/xmcd port.Hogyan lehet többmenetes (multisession) CD-ket
csatlakoztatni a mount paranccsal?A &man.mount.8; alapértelmezés szerint az
CD-n található utolsó adatsávot
(menetet, vagy sessiont) próbálja meg olvasni.
Ha viszont egy korábbi menetet szeretnénk vele
betöltetni, akkor erre használjuk a
paranccsori paramétert. Erre a
&man.mount.cd9660.8; man oldalon találhatunk
különbözõ példákat.Hogyan képesek az egyszerû
felhasználók floppykat, CD-ket és
más egyéb cserélhetõ lemezes
eszközöket használni?A normál felhasználók
számára engedélyezni tudjuk az
eszközök csatlakoztatását.
Íme:root
felhasználóként
állítsuk be a
vfs.usermount sysctl
változót az 1
értékre:&prompt.root; sysctl -w vfs.usermount=1A cserélhetõ eszközöket
képviselõ eszközleírókra
állítsuk be root
felhasználóként a megfelelõ
engedélyeket.Például a
felhasználóknak így tudjuk
engedélyezni az elsõ floppymeghajtó
használatát:&prompt.root; chmod 666 /dev/fd0Az operator csoportban
levõ felhasználók pedig így
fognak tudni CD-ket csatlakoztatni:&prompt.root; chgrp operator /dev/acd0c
&prompt.root; chmod 640 /dev/acd0cFel kell vennünk ezeket a
módosításokat az
/etc/devfs.conf
állományba is, mivel csak így
maradnak meg a következõ
rendszerindítás után.Ehhez root
felhasználóként a vegyük fel a
megfelelõ sorokat az
/etc/devfs.conf
állományba. Például, ha a
felhasználóknak engedélyezni
akarjuk az elsõ floppymeghajtó
használatát, akkor:# Bármelyik felhasználó képes floppykat csatlakoztatni.
own /dev/fd0 root:operator
perm /dev/fd0 0666Így engedélyezhetjük az
operator csoport tagjainak a CD-k
csatlakoztatását:# Az operator csoport tagjai csatlakoztathatnak CD-ket.
own /dev/acd0 root:operator
perm /dev/acd0 0660Végezetül tegyük a
vfs.usermount=1
sort az /etc/sysctl.conf
állományba, így a rendszer
következõ indításakor is
megmarad ez a beállítás.Most már mindegyik felhasználó
képes csatlakoztatni a
/dev/fd0
eszközleírón keresztül
elérhetõ lemezt a saját
könyvtárába:&prompt.user; mkdir ~/az-én-csatlakozási-pontom
&prompt.user; mount -t msdosfs /dev/fd0 ~/az-én-csatlakozási-pontomA operator csoport tagjai is
képesek most már az
/dev/acd0c
eszközleírón keresztül
elérhetõ CD-ket csatlakoztatni a saját
könyvtárukba:&prompt.user; mkdir ~/az-én-csatlakozási-pontom
&prompt.user; mount -t cd9660 /dev/acd0c ~/az-én-csatlakozási-pontomAz eszközök leválasztása is
hasonlóan egyszerû:&prompt.user; umount ~/az-én-csatlakozási-pontomA vfs.usermount
engedélyezésével azonban
együttjár némi biztonsági
kockázat is. Az &ms-dos; formátumú
lemezek csatlakoztatására ezért
inkább a Portgyûjteményben
található emulators/mtools csomagot
javasoljuk.A példákban használt
eszközneveket természetesen a
konfigurációnknak megfelelõen meg kell
változtatnunk.A du és a
df parancsok eltérõ
mennyiségû szabad helyet mutatnak. Mi okozza
ezt?A válaszhoz meg kell értenünk a
du és a df
mûködését. A du
végigmegy a könyvtárszerkezeten és
megnézi, hogy mekkorák az egyes
állományok, majd megjeleníti a
végösszegüket. A df
ezzel szemben egyszerûen csak lekérdezi az
állományrendszertõl, hogy mennyi szabad
hely maradt rajta. Ezek látszólag ugyanazt a
módszer fedik, azonban miközben a
könyvtár nélkül
állományok befolyásolják a
df parancsot, addig a
du parancsot nem.Amikor egy program használ egy olyan
állományt, amelyet eközben
letörlünk, egészen addig létezni
fog, amíg a program be nem fejezi a
használatát. Ettõl függetlenül
viszont az állomány azonnal eltûnik a
könyvtárból. Ezt nagyon könnyen ki
is tudjuk próbálni egy olyan programmal, mint
például a more.
Tegyük fel, hogy van akkora állományunk,
amely elég nagy ahhoz, hogy feltûnjön a
du és a df
kimenetében. (Mivel manapság már
nagyok a tárolóeszközök, ennek egy
igen nagy állománynak
kell lennie!) Ha letöröljük ezt az
állományt, miközben a
more paranccsal még
használjuk, a more nem fog
rögtön leállni és panaszkodni az
állomány hiányára. Egyedül
csak az állományhoz tartozó
bejegyzés tûnik el a
könyvtárból, így más
program már nem tud hozzáférni. A
du erre már azt mondja, hogy nem
létezik — bejárta a
könyvtárat és nem találta. A
df szerint azonban még mindig ott
van, hiszen az állományrendszer tudja, hogy a
more parancsnak még
szüksége van rá. Ahogy a
more befejezte a dolgát, a
du és a df
által mutatott értékek ismét
egyezni fognak.Azt sem szabad elfelejtenünk, hogy a Soft Updates
használata esetén akár 30
másodpercet is várnunk kell, hogy a
változtatásaink láthatóvá
váljanak!Ez a helyzet nagyon gyakori webszerverek esetén.
Sokan úgy állítanak be a &os;
rendszerükön webszervert, hogy elfelejtik
beállítani hozzá a naplók
archiválását és
váltását. Ilyenkor a
hozzáférések naplózása
gyorsan meg tudja tölteni a /var könyvtárat.
Ekkor a rendszergazda törli az adott
állományt, de a rendszer még mindig
panaszkodik a szabad hely hiánya miatt. A webszerver
leállítása és
újraindítása ekkor segít
felszabadítani az állományt, így
az állományrendszerrõl is
törlõdhet. Ennek megelõzésére
használjuk a &man.newsyslog.8; programot.Hogyan lehet növelni a
lapozóterületet?A kézikönyv Beállítás és finomhangolás
címû fejezetében található
egyik szakaszban
olvashatunk errõl.A &os; miért látja kisebbnek a lemezeket
mint amekkorának a gyártó mondja
ezeket?A merevlemezek gyártói
általában a gigabyte-okat egy milliárd
byte-ként számolják, miközben a
&os; pedig 1 073 741 824 byte-nak. Ez
remekül megmagyarázza, hogy a &os;
rendszerüzenetei között egy
elméletileg 80 GB méretû lemez
miért 76 319 MB-osnak jelenik meg.Emellett érdemes még tisztában
lennünk azzal is, hogy a &os;
(alapértelmezés szerint) fenntartja a
lemezterület
8 százalékát.Hogyan lehet egy partíció
100 százaléknál is jobban
megtelt?Az UFS partíciók egy részét
(amely alapértelmezés szerint a teljes
kapacitás 8 százaléka) az
operációs rendszer fenntartja a saját
és a root
felhasználó számára. A
&man.df.1; ezt a területet nem számolja a
Capacity oszlopban megjelenõ
értékhez, ezért tudja
átlépni a 100 százalékos
arányt. Sõt még azt is láthatjuk,
hogy a blokkok számát jelzõ
Blocks oszlopban megjelenõ
érték mindig, általában pontosan
8 százalékkal nagyobb, mint a
használt blokkokat jelzõ Used
és a rendelkezésre álló
blokkokat jelzõ Avail oszlopokban
szereplõ értékek összege.A részleteket a &man.tunefs.8; man oldalon
belül a opció
bemutatásánál olvashatjuk.RendszeradminisztrációHol vannak a rendszerindítás
beállításáért felelõs
állományok?Az ezzel kapcsolatos beállítások
elsõsorban az
/etc/defaults/rc.conf
állományban találhatóak
(lásd &man.rc.conf.5;). A rendszer
indításáért felelõs
szkriptek, mint például az /etc/rc vagy az /etc/rc.d könyvtár
tartalma (lásd &man.rc.8;) ezt használja.
Ezt az állományt tilos
közvetlenül szerkeszteni! Ha valamit
meg akarunk változtatni az
/etc/defaults/rc.conf
állományban szereplõ
beállítások közül, akkor
ehelyett egyszerûen csak másoljuk le az
/etc/rc.conf állományba
és állítsuk be ott az
értékét.Például, ha el akarjuk indítani a
beépített névfeloldó
szolgáltatást, a &man.named.8; démont,
akkor ennyit kell tennünk:&prompt.root; echo named_enable="YES" >> /etc/rc.confHa helyi szolgáltatásokat akarunk
futtatni, akkor tegyük a hozzá tartozó
szkripteket az /usr/local/etc/rc.d
könyvtárba. Ezek a szkriptek legyenek
végrehajthatóak és az
alapértelmezett állománymóduk
legyen 555.Hogyan lehet felhasználókat
egyszerûen létrehozni?Használjuk a &man.adduser.8;, vagy bonyolultabb
esetekben a &man.pw.8; parancsot.Felhasználókat törölni a
&man.rmuser.8;, vagy amennyiben szükséges, a
&man.pw.8; paranccsal tudunk.A crontab szerkesztése
után miért jelennek meg a root: not
found és a hozzá hasonló
hibaüzenetek?Ilyen általában olyankor
történik, amikor a rendszerszintû
crontab állományt
módosítjuk
(/etc/crontab), majd a &man.crontab.1;
használatával megpróbáljuk
telepíteni:&prompt.root; crontab /etc/crontabEzt nem így kell megoldani. A
rendszerszintû crontab
felépítése eltér a
felhasználókhoz tartozó
crontab
állományokétól (a
&man.crontab.5; man oldal szemlélteti
részletesebben ezeket az eltéréseket),
amelyet a &man.crontab.1; próbál meg ilyenkor
telepíteni.Ha így csináltuk, akkor a
crontab nem lesz több, mint az
/etc/crontab hibás
formátumú változata.
Töröljük le:&prompt.root; crontab -rLegközelebb, amikor az
/etc/crontab állományt
módosítjuk, nem kell
értesítenünk a &man.cron.8;
démont, mivel magától észre
fogja venni az elvégzett
változtatásokat.Ha valamit napi, heti vagy havi rendszerességgel
akarunk futtatni, akkor ehelyett inkább másoljuk
be az /usr/local/etc/periodic
könyvtárba, és hagyjuk, hogy a
cron hívja meg a &man.periodic.8;
parancson keresztül az összes többi
rendszeresen elvégzendõ feladattal
együtt.Ez a hiba egyébként onnan jön, hogy
rendszerszintû crontab
állomány esetén van még egy
további mezõ, amely megadja, hogy az adott
parancsot melyik felhasználóval kell futtatni.
Az alapértelmezett rendszerszintû
crontab állomány
esetén ez mindenhol a root.
Amikor ezt a crontab
állományt a rootcrontab
állományaként használjuk (amely
nem ugyanaz, mint a rendszerszintû
crontab), akkor a &man.cron.8; a
root szót a
végrehajtandó parancs részének
fogja tekinteni, amely viszont nem létezik.Miért jelenik meg a you are not in the
correct group to su root hibaüzenet, amikor a
su paranccsal át akarunk
váltani a root
felhasználóra?Ez egy biztonsági megszorítás.
Csak úgy tudunk átváltani a
root felhasználóra (vagy
bármilyen más olyan
hozzáférésre, amely
rendszeradminisztrátori jogosultságokkal
rendelkezik), ha a wheel csoport
tagjai vagyunk. Ha nem létezne ez a
korlátozás, akkor a rendszerben szinte
bárki képes lenne
rendszeradminisztrátori jogosultságokat
szerezni csupán úgy, hogy ha megszerzi
valahogy a root jelszavát.
Ennek a korlátozásnak
köszönhetõen ez viszont már nem lesz
feltétlenül helytálló. A
&man.su.1; még a jelszót sem engedi megadni
azoknak, akik nem tagjai a wheel
csoportnak.Ha engedélyezni akarjuk valakinek a
root felhasználóra
váltást, akkor nincs más teendõnk,
mint egyszerûen a hozzáadni a
wheel csoporthoz.Az rc.conf
állományban vagy valamelyik másik
konfigurációs állományban
rosszul adtuk meg a beállításokat,
és nem lehet módosítani ezeket, mert
így írásvédett lett az
állományrendszer. Mi a
megoldás?Indítsuk újra a rendszert és a
rendszertöltõ parancssorában adjuk ki a
boot -s parancsot, amivel így
egyfelhasználós módba váltunk.
Amikor meg kell adnunk a használni
kívánt parancsértelmezõ
nevét, egyszerûen csak nyomjuk le az
Enter billentyût, majd a
mount -urw / parancs
kiadásával csatlakoztassuk újra
írható módban
rendszerindító
állományrendszert. Emellett még
valószínûleg a mount -a -t
ufs paranccsal azokat az
állományrendszereket is érdemes lesz
csatlakoztatnunk, ahol a kedvenc
szövegszerkesztõnk található.
Amennyiben az érintett szövegszerkesztõ egy
hálózati állományrendszeren
található, akkor helyette használjunk
egy helyben elérhetõ
szövegszerkesztõt, például az
&man.ed.1; programot, vagy manuálisan
állítsuk be a hálózat
elérését a hálózati
állományrendszerek
csatlakoztatásához.Ha a &man.vi.1; vagy &man.emacs.1; programokhoz
hasonló teljes képernyõs
szövegszerkesztõt akarunk használni, akkor
elõtte nem árt a export
TERM=cons25 parancsot sem kiadnunk, így a
&man.termcap.5; adatbázisból
elérhetõvé válnak az ehhez
szükséges adatok.Miután megtettük ezeket a
lépéseket, már a szokásos
módon át tudjuk szerkeszteni az
/etc/rc.conf állományt.
A rendszermag indulása után
közvetlenül megjelenõ üzenetekben
találhatjuk meg azon sorok számait, amelyeket
a rendszer nem tudott értelmezni.Miért nem sikerül beállítani a
nyomtatót?Olvassuk el a kézikönyv nyomtatókkal foglalkozó
részét, minden bizonnyal választ ad a
legtöbb kérdésünkre.Bizonyos nyomtatókat azonban akkor tudunk
használni, ha van hozzá meghajtónk.
Ezeket gyakran csak WinPrinter néven
emlegetik, amelyeket viszont a &os; nem támogat. Ha
a nyomtatónk nem használható DOS vagy
&windows; alatt, akkor valószínûleg egy
ilyen WinPrinterrel van dolgunk. Ebben az esetben
egyedül abban reménykedhetünk, hogy a
print/pnm2ppa port
támogatja.Hogyan lehet módosítani a
rendszerünkhöz tartozó
billentyûkiosztást?Olvassuk el a kézikönyv honosításssal
foglalkozó részét,
különös tekintettel a konzol beállításaira.Miért jelenik meg az unknown:
<PNP0303> can't assign resources
hibaüzenet a rendszer indulásakor?Erre a &a.current; címére postázott
egyik levél adja meg a választ:
&a.wollman;, 2001. április
24.A can't assign resources üzenetek
rendszerünkben olyan ISA eszközök
jelenlétére utalnak, amelyekhez a
rendszermagban PnP támogatást nem
tartalmazó meghajtók tartoznak. Ilyenek
többek közt a
billentyûzetvezérlõk, a
programozható
megszakítás-vezérlõ chip
és sok más alapvetõ elem a
gépünkben. Ezek az erõforrások
nem oszthatóak ki, mivel már valamelyik
meghajtó használatba vette ezeket.
Miért nem mûködnek rendesen a
kvóták?Elõfordulhat, hogy a rendszermag nem
támogatja a kvóták
használatát. Ha errõl lenne
szó, akkor vegyük fel az alábbi
sort a rendszermag konfigurációs
állományába és
fordítsuk újra:options QUOTAEnnek részleteit a kézikönyv
kvótákkal foglalkozó
részében találjuk.Az /
állományrendszeren ne
engedélyezzük a kvóták
használatát.Tegyünk
kvótaállományokat azokra az
állományrendszerekre, ahol be akarjuk
vezetni a használatukat,
például:ÁllományrendszerKvótaállomány/usr/usr/admin/quotas/home/home/admin/quotas……A &os; tartalmazza a System V IPC
alapeszközeit?Igen, a &os; a GENERIC
típusú rendszermagban támogatja a System
V típusú IPC megoldást,
beleértve az osztott memória, az üzenetek
és a szemaforok használatát. Ha
saját rendszermagunk van, akkor az alábbi
beállítások használatával
engedélyezhetjük a használatukat:options SYSVSHM # az osztott memória engedélyezése
options SYSVSEM # a szemaforok engedélyeze
options SYSVMSG # az üzenetek kezeléseFordítsuk és telepítsük
újra a rendszermagot.A sendmail helyett milyen
más levelezõ szerver használható
még?A sendmail
a &os;-ben található alapértelmezett
levelezõ szerver, de könnyen le tudjuk
cserélni másikra (például
amelyet a portok közül
telepítettünk).A Portgyûjteményben több
különbözõ levelezõ szerver is
megtalálható, amelyek közül a
mail/exim, mail/postfix, mail/qmail és a mail/zmailer portok a
leginkább népszerûek.Szép dolog, hogy lehet válogatni a
különbözõ megoldások
között és hogy ilyen sok levelezõ
szerver használható. Ezért
lehetõleg a levelezési listákon ne
kérdezzünk senkitõl olyat, hogy De a
sendmail akkor most miért
jobb, mint a qmail? Ha
ilyen kérdéseink vannak, akkor
elõször inkább olvassuk át az
archívumokat. Szinte biztos, hogy már szinte
az összes levelezõ szerver elõnyét
és hátrányát
kivesézték jó
néhányszor.Elveszett a root
felhasználó jelszava! Mit tegyünk?Ne essünk kétségbe! Indítsuk
újra a rendszerünket
egyfelhasználós módban. Ehhez
gépeljük be a boot -s
parancsot a rendszertöltõ Boot:
parancssorában. Amikor a
parancsértelmezõt kell megadnunk,
egyszerûen csak nyomjuk le az Enter
billentyût. Ekkor kapunk egy &prompt.root;
parancssort. A mount -urw / parancs
begépelésével csatlakoztassuk
újra a rendszerindító
partíciónkat írható
módban, majd a mount -a paranccsal
csatlakoztassuk az összes többi
állományrendszert. Ezt követõen a
passwd root parancs
kiadásával változtassuk meg a
root felhasználó
jelszavát és a &man.exit.1;
futtatásával folytassuk a rendszer
indítását.Ha az egyfelhasználós módra
váltás során a rendszer a
root felhasználó
jelszavát kérné, akkor az arra utal,
hogy a konzol (/dev/console) az
/etc/ttys állomány
szerint insecure (nem
biztonságos) típusú. Ebben az
esetben szereznünk kell egy &os;
telepítõlemezt, elindítanunk
róla a rendszert, majd a &man.sysinstall.8;
programban a Fixit
menüponton keresztül indított
parancsértelmezõben kiadni az elõbb
említett parancsokat.Ha egyfelhasználós módban nem
tudjuk csatlakoztatni a rendszerindító
partíciót, akkor ennek könnyen az lehet
az oka, hogy a partíciókat
titkosították, ezért a megfelelõ
kulcsok nélkül nem tudjuk elérni
ezeket. Ez leginkább adott
implementációtól függ. A
&os;-ben elõforduló
lemeztitkosításokkal kapcsolatban a kézikönyv
ad bõvebb útmutatást.Hogyan akadályozható meg, hogy a ControlAltDelete
billentyûkombináció
újraindítsa a rendszert?Ha a &man.syscons.4; (vagyis az alapértelmezett)
konzolt használjuk, akkor ehhez a következõ
beállításokkal kell fordítanunk
és telepítenünk egy rendszermagot:options SC_DISABLE_REBOOTMindezt a rendszermag újrafordítása
és a újraindítása
nélkül is le tudjuk tiltani, ha
beállítjuk az alábbi
&man.sysctl.8;-változót:&prompt.root; sysctl hw.syscons.kbd_reboot=0Az elõbb említett két
módszer kizárja egymást. A
&man.sysctl.8; változó nem létezik,
ha a rendszermagot a SC_DISABLE_REBOOT
beállítással fordítjuk
újra.Ha viszont a &man.pcvt.4; konzolt használjuk,
akkor a következõ konfigurációs
beállítást kell megadnunk a rendszermag
újrafordításakor:options PCVT_CTRL_ALT_DELHogyan lehet szöveges DOS
állományokat &unix; formátumúra
alakítani?Használjuk a következõ &man.perl.1;
parancsot:&prompt.user; perl -i.bak -npe 's/\r\n/\n/g' állományokahol az
állományok az
átalakítandó állományok.
A konverzió helyben történik, illetve az
eredeti állományokról
.bak kiterjesztéssel
létrejön egy biztonsági
mentés.Erre a célra viszont ugyanígy megfelel a
&man.tr.1; parancs is:&prompt.user; tr -d '\r' < dos-szöveges-állomány > unix-szöveges-állományEkkor a
dos-szöveges-állomány
lesz a DOS formátumú szöveges
állomány, miközben a
unix-szöveges-állomány
fogja az eredményt tartalmazni. Ez valamivel
gyorsabb a perl
megoldásánál.Ez említett megoldásokon kívül
a DOS szöveges állományait a
Portgyûjteményben található
converters/dosunix porttal is
könnyedén át tudjuk alakítani.
Ennek részleteit a hozzá tartozó
dokumentációból tudjuk meg.Hogyan lehet futó programokat név szerint
leállítani?Lásd &man.killall.1;.A &man.su.1; miért írja folyton, hogy a
felhasználó nincs a root
ACL-jében?Ezt a hibát az elosztott
hitelesítést végzõ
Kerberos rendszer adja. Maga a
probléma nem végzetes, viszont annál
inkább idegesítõ. Ilyenkor vagy a
kapcsolóval kell futtatni a
&man.su.1; programot, vagy a következõ
kérdésben megadottak szerint el kell
távolítani a
Kerberos
alkalmazást.Hogyan távolítható el a
Kerberos?A Kerberos úgy
távolítható el a rendszerbõl, ha
újratelepítjük a base
terjesztés tartalmát. Ha CD-rõl
telepítettük a rendszert, akkor csatlakoztassuk
(most tegyük fel, hogy a /cdrom könyvtárba)
és futassuk a következõ parancsot:&prompt.root; cd /cdrom/base
&prompt.root; ./install.shMásik lehetõség, ha hozzáadjuk
a NO_KERBEROS
beállítást a
/etc/make.conf
állományhoz és
újrafordítjuk az alaprendszert.Mi történt a
/dev/MAKEDEV
állománnyal?A &os; 5.X és
a késõbbi változatok már a
&man.devfs.8; által felkínált
automatikus megoldást alkalmazzák. Ilyenkor
az eszközmeghajtók igény szerint hoznak
létre eszközleírókat, és
ezzel lényegében
szükségtelenné teszik a
/dev/MAKEDEV
használatát.Hogyan lehet még több
pszeudoterminált létrehozni?Ha sok telnet,
ssh, X esetleg screen
felhasználónk van, akkor könnyen
elõfordulhat, hogy kifogyunk a
pszeudoterminálokból. A &os; 6.2
és az azt megelõzõ változatokban
alapértelmezés szerint 256
pszeudoterminál, a &os; 6.3 és
késõbbi változatokban pedig 512
pszeudoterminál áll
rendelkezésünkre.Szükség esetén további
pszeudoterminálok is hozzáadhatóak a
rendszerhez. Ehhez azonban módosítanunk
kell a szabványos C
függvénykönyvtárakat, a
rendszermagot és az /etc/ttys
állományt. Például a
1152 pszeudoterminál használatát
teszi lehetõvé. Ez a konkrét
javítás viszont csak a &os; 6.3
és késõbbi változatok
esetén alkalmazható
zökkenõmentesen.Hogyan lehet újraindítás
nélkül az /etc/rc.conf
tartalmát újraolvastatni és
újraindítani az /etc/rc
szkriptet?Váltsunk egyfelhasználós
módba, majd vissza többfelhasználós
módba.Konzolon ez így oldható meg:&prompt.root; shutdown now
(Megjegyzés: nincs -r vagy -h!)
&prompt.root; return
&prompt.root; exitA -STABLE rendszer
frissítésekor
-BETAx,
-RC vagy
-PRERELEASE verzió jelenik meg!
Mi történt?Röviden: Ez csak egy elnevezés. Az
RC jelentése Release
Candidate, vagyis kiadásra
jelölt. Ez egy küszöbön
álló kiadásra utal. A &os;-ben a
-PRERELEASE elnevezés
általában egyenlõ a kiadások
elõtt bekövetkezõ
kódfagyasztással. (Bizonyos kiadások
esetén pedig a -BETA
címkét a -PRERELEASE
megjelöléshez hasonlóan
használják.)Valamivel bõvebben: A &os;
fejlesztésében a kiadások
általában két helyrõl
származnak. A nagyobb, ún.
nullás kiadások, mint
például 7.0-RELEASE és 8.0-RELEASE, a
fejlesztési ág legfrissebb
állapotából készülnek,
amelyet gyakran csak -CURRENT
néven emlegetnek. A kisebb kiadások, mint
például a 6.3-RELEASE vagy az 5.2-RELEASE, az
aktív -STABLE
ágból származnak. A 4.3-RELEASE
kiadástól kezdõdõen mindegyik
kiadás saját ággal rendelkezik, amelyet
elsõsorban olyanoknak ajánlunk, akiknek csak
nagyon visszafogott változtatásokra van
szükségük a rendszerben (ezek
általában csak különbözõ
biztonsági javításokat
takarnak).Amikor a fejlesztõk készíteni akarnak
egy újabb kiadást, az alapjául
szolgáló fejlesztési ágon
elvégeznek bizonyos mûveleteket. Ennek egy
része a források
befagyasztása. Amikor ez
megkezdõdik, az ág neve megváltozik,
és ezzel jelzik, hogy hamarosan kiadás
készül belõle. Például, ha
egy ág a 6.2-STABLE nevet viseli, akkor a
6.3-PRERELEASE névre vált arra az
idõszakra, amíg tart a
kódfagyasztás és lezajlik a
kiadások megjelentetéséhez
szükség további tesztelés.
Hibajavítások ekkor továbbra is
rakhatóak bele. Ahogy a források
elérik a kiadáshoz szükséges
szintet, az ág neve 6.3-RC-re vált, és
ezzel jelzik, hogy a kiadás
elõkészítése hamarosan
befejezõdik. Az RC
állapotban csak a legfontosabb hibákat keresik
meg és javítják. Miután a
kiadás (jelen esetünkben a 6.3-RELEASE
kiadás) és a hozzá tartozó
ág elkészült, az ág neve
ismét 6.3-STABLE lesz.A verziószámokról és a
CVS-ben található különbözõ
ágakról a Release
Engineering címû cikkben olvashatunk
(angolul).Az új rendszermag telepítése
során a &man.chflags.1; program hibát jelez.
Hogyan javítható ez a hiba?Rövid válasz: A rendszerünk
valószínûleg nullánál nagyobb
biztonsági szinten fut. Indítsuk újra
a rendszerünket egyfelhasználós
módban és úgy telepítsük a
rendszermagot.A hosszabb válasz: A &os; nem engedi
megváltoztatni a rendszerszintû
állományjelzõket nullától a
nagyobb biztonsági szinteken. A jelenleg
érvényben levõ biztonsági szintet
a következõ paranccsal lehet
lekérdezni:&prompt.root; sysctl kern.securelevelA biztonsági szintet nem lehet csökkenteni.
A rendszert egyfelhasználós módban kell
újraindítani, mert csak úgy tudjuk
újratelepíteni a rendszermagot. Másik
lehetõségünk, ha
átállítjuk a biztonsági szintet
az /etc/rc.conf
állományban és úgy
indítjuk újra a rendszerünket. Az
&man.init.8; man oldalán olvashatunk bõvebben a
biztonsági szintek (securelevel)
beállításáról, az
rc.conf
használatáról pedig az
/etc/defaults/rc.conf
állományból és a &man.rc.conf.5;
man oldalon tudhatunk meg többet.A rendszeren nem lehet egyszerre egy
másodpercnél többel megváltoztatni
az idõt! Hogyan lehet megkerülni ezt a
korlátozást?A rövid válasz: A rendszerünkben a
biztonsági szintet (securelevel)
minden bizonnyal egynél nagyobbra
állították. Indítsuk
újra a rendszert egyfelhasználós
módban és változtassuk meg a
dátumot.Egy hosszabb válasz: A &os; nem engedi egy
másodpercnél többel megváltoztatni
az idõt, ha az aktuális biztonsági szint
értéke egy felett van. Ezt a
következõ parancs kiadásával tudjuk
ellenõrizni:&prompt.root; sysctl kern.securelevelA biztonsági szint futás közben nem
csökkenthetõ. A dátum
megváltoztatásához ezért a
rendszert egyfelhasználós módban kell
indítanunk, vagy az /etc/rc.conf
állományban csökkentenünk kell a
biztonsági szintet. Az &man.init.8; man oldalon
olvashatunk részletesebben a biztonsági
szintek mûködésérõl, illetve az
/etc/defaults/rc.conf
állományból és az
&man.rc.conf.5; man oldalról tudhatunk meg
többet az rc.conf
mûködésérõl.Az rpc.statd parancsnak miért
kell 256 MB memória?Nem, itt szó sincs semmiféle
memóriaszivárgásról, és
egyébként sem használ 256 MB
memóriát. Az rpc.statd
parancs egyszerûen csak kényelmi
megfontolásokból iszonyatos
mennyiségû memóriát képez
le a címterébe. Ebben technikailag semmi
kivetnivaló nincsen, ezzel egyedül a
&man.top.1;, &man.ps.1; és a hozzá
hasonló programokat zavarja meg egy kicsit.A &man.rpc.statd.8; tehát leképezi az
állapotát rögzítõ
állományt (amely a /var könyvtárban
található a címterébe. Ilyenkor
igyekszik egy kicsit elõre gondolkodni és
felkészülni a
megnövekedésére, ezért viszonylag
nagy méretben hozza létre ezt a
leképezést. Ezt nagyon jól
megfigyelhetjük a
forráskódjából is, ahol
látszik, hogy a &man.mmap.2; függvényt a
0x10000000 értékkel
hívja meg, tehát az 32 bites Intel
architektúrán megcímezhetõ
memória egytizenhatod részével, ami
pontosan 256 MB.Miért nem törölhetõ az
schg
állományjelzõ?Rendszerünkben a biztonsági szint
(securelevel) nagyobb
nullánál. Próbáljuk meg
csökkenteni az értékét és
próbálkozzunk ismét. Ezzel
kapcsolatban részletesebb információkat
a a biztonsági
szintekrõl szóló
kérdésbõl vagy az &man.init.8; man
oldalról tudhatunk meg.Az .shosts állományon
keresztül alapértelmezés szerint
miért enged hitelesíteni a legújabb
&os; verziókban megtalálható
SSH?A legújabb &os; verziókban azért
nem tudjuk az .shosts
állományon keresztül hitelesíteni
magunkat, mert az &man.ssh.1; alapértelmezés
szerint rendszeradminisztrátori jogok
nélkül kerül telepítésre.
Ezt a hibát többféle
módon ki tudjuk
javítani:Ha tartós megoldásra van
szükségünk, akkor az
/etc/make.conf
állományban állítsuk az
ENABLE_SUID_SSH
változót a true
értékre, majd fordítsuk újra
az &man.ssh.1; programot (vagy futtassuk le a
make world
parancsot).Ha ideiglenesen akarjuk csak javítani, akkor
az /usr/bin/ssh
állomány engedélyeit
root
felhasználóként
állítsuk a 4555
értékre a chmod 4555
/usr/bin/ssh parancs kiadásával.
Ezután vegyük fel az
ENABLE_SUID_SSH=
true sort az
/etc/make.conf
állományt, így ez a
változtatás a make
world
következõ futtatásakor is
megmarad.Mi az a vnlru?A vnlru törli és
szabadítja fel a rendszerben keringõ vnode-okat,
amikor a rendszermagban elérik a
kern.maxvnodes változó
által beállított határt. Ez a
rendszermagban futó szál többnyire csak
tétlenül ül a háttérben,
és csak olyankor lép
mûködésben, amikor rengeteg
memóriát használunk és
éppen több tízezernyi apró
állományhoz akarunk egyszerre
hozzáférni.Mit jelentenek top parancs
által megjelenített
különbözõ
memóriaállapotok?Active (Aktív): az
utóbbi idõben használt lapok.Inactive (Inaktív): az
utóbbi idõben nem használt
lapok.Cache (Tárazott):
(leginkább) azok a lapok, amelyeket még
használnak, de gyakran azonnal
újrafelhasználódnak (akár a
régi, akár egy új
hozzárendelésben). Egyes lapok az
active állapotból
közvetlenül a cache
állapotba váltanak, ha tiszták (nem
módosították), de ez az
átmenet függ a házirendtõl,
vagyis a VM alrendszer karbantartója által
kiválasztott algoritmustól.Free (Szabad): effektív
tartalom nélküli lapok, amelyek akár
közvetlenül fel is használhatóak
olyan esetekben, amikor a tárazott lapok erre nem
alkalmasak. A szabad lapokat
megszakításokban és a futó
programokban is felhasználhatjuk.Wired (Rögzített):
olyan lapok, amelyek a memória egy
rögzített pontján foglalnak helyet.
Ezeket többnyire a rendszermag használja, de
speciális esetekben a programoknak is
szükségük lehet rá.A lapok általában akkor kerülnek ki a
lemezre (valamilyen VM alrendszerbeli
szinkronizáció során), amikor
inaktív állapotban vannak, de akár az
aktív lapok is szinkronizálhatóak. Ez
attól függ, hogy a processzor képes-e
nyomkövetni a lapok
módosítását, és
némely helyzetekben elõnyös lehet a
rendszer számára, ha annak megfelelõen
szinkronizálja a VM lapjait, hogy azok aktívak
vagy inaktívak. A legtöbb esetben itt
egyszerûen csak egy olyan sort kell elképzelni,
ahol a program számára viszonylag
inaktív lapok találhatóak, amelyeket a
rendszer tetszõlegesen a lemezre írhat. A
tárazott lapok általában már
eleve szinkronizáltak, nem leképzettek,
közvetlenül a programok régi és
új hozzárendelései
használják ezeket. A szabad lapokat
akár a megszakítások szintjén is
lehet használni, miközben a tárazott vagy
szabad lapokat a futó programokban
érthetjük el. A tárazott lapok
zárolása nem megfelelõ ahhoz, hogy
megszakításokban is el lehessen érni
ezeket.Vannak még bizonyos jelzések
(például a foglaltságot vagy
foglaltság mértékét jelzõ
értékek), amelyek még hatással
vannak a fentebb leírt szabályokra.Mekkora a rendelkezésre álló
memória mérete?A rendelkezésre álló
memóriának rengeteg típusa
létezik. Ezek közül egyik az a
memória, amely közvetlenül
anélkül elérhetõ, hogy bármi
mást ki kellene hozzá lapoznunk. Ennek a
mérete nagyjából a tárazott
és a szabad lapokat tároló sorok
hosszával arányos (amelyet még a
rendszer beállításaitól
függõ további tényezõk is
módosíthatnak). A rendelkezésre
álló memória másik
típusa a teljes VM terület
mérete. Ezt nem olyan könnyû
meghatározni, de leginkább a
lapozóterület és a fizikai memória
méretétõl függ. A
rendelkezésre álló
memória több más
lehetséges megfogalmazása is létezik,
de szinte teljesen felesleges beszélni róluk.
Egyedül az a fontos, hogy a igyekezzünk
mérsékelni a lapozást és mindig
legyen elegendõ
lapozóterületünk.Mi az a /var/empty? Nem lehet
letörölni!A /var/empty
könyvtárat az &man.sshd.8; program
használja a privilégiumok
elkülönítéséhez. A /var/empty
könyvtárnak üresnek kell lennie, legyen a
root tulajdonában és
legyen rajta a schg
állományjelzõ.Noha semmiképpen sem javasoljuk a
könyvtár törlését, úgy
tudjuk elvégezni, ha elõször az
schg állományjelzõt
töröljük róla. A &man.chflags.1; man
oldalán olvashatunk ezzel kapcsolatban
részletesebb információkat (azonban ne
felejtsük el számításba venni az esetleges nehézségeket).
Az X Window System és a virtuális konzolok
használataMi az X Window System?Az X Window System (vagy gyakran csak
X11) a &unix; és &unix;-szerû
operációs rendszereken, így többek
közt a &os;-n is az egyik leginkább elterjedt
ablakozórendszer. A The X.Org Foundation
felügyeli az X
protokoll szabványait, azok aktuális
referencia implementációival együtt.
Ezek hivatalos megnevezése Version 11 Release
&xorg.version;, de ezt gyakran csak
X11 néven
rövidítik.Számos implementációja is
elérhetõ több különbözõ
architektúrára és
operációs rendszerre. A protokoll szerver
oldali funkcióit megvalósító
programokat hivatalosan X szervereknek
nevezik.&os; alatt milyen X implementációk
használhatóak?Kezdetben a &os; alapértelmezett X
implementációja az &xfree86; volt, amelyet a
The XFree86 Project,
Inc. tartott karban. Ez a változat volt
használatban alapértelmezés szerint
egészen a &os; 4.10 és 5.2
verziójáig. Habár eközben az
&xorg; maga is karbantartotta a saját
változatát, kizárólag csak
referencia célokat használt és az
évek során teljesen leromlott az
állapota.2004 elején azonban az XFree86
néhány korábbi fejlesztõje elhagyta
a projektjüket, mivel nem értettek egyet
bizonyos kérdésekben, például a
forráskód ütemét, a
jövõbeni irányokat és egyéb
személyes konfliktusokat illetõen, és
helyette közvetlenül az &xorg;
kódját kezdték el fejleszteni. Ekkor
az &xorg; hozzáigazította forrásait az
utolsó &xfree86; kiadás forrásaihoz
(XFree86 4.3.99.903), majd
megváltoztatta a licencelését.
és beolvasztott több, korábban
külön karbantartott változtatást,
aminek eredményeképpen végül
megszületett az X11R6.7.0.
Egy különálló, de velük
együttmûködõ projekt, a freedesktop.org
(vagy röviden csak fd.o) jelenleg is
az eredeti &xfree86; források
újraszervezésén dolgozik, aminek
célja a napjainkban megjelenõ grafikus
kártyák minél nagyobb
mértékû kihasználása
(és ezáltal a rendszer
gyorsítása), a rendszer modularisabbá
tétele (ezáltal a rendszer
karbantarthatóságának
javítása, ami a kiadások gyorsabb
elõkészítését és
könnyebb
beállíthatóságát teszi
lehetõvé). Az &xorg; a jövõben
tervezi a freedesktop.org
fejlesztéseit is átvenni.2004 júliusától kezdõdõen
a &os.current; változatban az &xfree86; helyett az
&xorg; lett az alapértelmezett X
implementáció. A &os;-ben azóta is
alapból az &xorg; X11 implementációja
található meg.A témával kapcsolatban a
kézikönyv X11-rõl
szóló fejezetében kaphatunk
részletesebb
felvilágosítást.Mégis miért vált szét a
két X projekt?Ezt a kérdést ez a GYIK nem tudja
megválaszolni. Ezzel kapcsolatban viszont
érdemes elolvasnunk a különbözõ
levelezési listák archívumait szerte az
interneten. Keressünk rá a válaszra a
kedvenc keresõnkben, de ezzel a kérdéssel
ne a &os; levelezési listáit zavarjuk. Az is
elképzelhetõ, hogy ennek a valós okait
csak néhányan ismerik egész
teljesen.A &os; miért az &xorg; változatát
választotta alapértelmezettnek?Az &xorg; fejlesztõi azt
ígérték, hogy gyorsabban fognak
újabb verziókat kiadni, amelyek sokkal
több újítást is fognak
tartalmazni. Nos, amennyiben tényleg
állják a szavukat, azzal mindenki jól
jár. Emellett az õ változatuk
továbbra is a hagyományos X licenc alatt
érhetõ el, miközben az &xfree86; licence
ettõl némileg eltér.Hogyan lehet használni az X-et?Amennyiben már egy meglévõ rendszerre
szeretnénk telepíteni az X-et, úgy
érdemes a x11/xorg metaportot
választanunk, amely magától
feltelepíti az összes szükséges
komponenst, vagy egyszerûen telepítsük az
&xorg; alkalmazást csomagból:&prompt.root; pkg_add -r xorgEmellett az &xorg; a &man.sysinstall.8;
használatával is telepíthetõ:
válasszuk a Configure
(Beállítások),
Distributions
(Terjesztések), végül a The
X.Org Distribution (Az X.Org
terjesztés) menüpontokat.Az &xorg; sikeres telepítése után
kövessük a kézikönyv X11
beállításával
foglalkozó szakaszában
leírtakat.Az X indításakor egy KDENABIO
failed (Operation not permitted) hiba
keletkezik, közvetlenül a
startx parancs kiadása
után. Mi lehet ezzel kezdeni?A rendszerünkön
valószínûleg túlságosan
magas a biztonsági szint
(securelevel) értéke.
Ilyenkor az X-et nem tudjuk elindítani, mivel a
mûködéséhez szüksége van
a &man.io.4; eszköz írására.
Ezzel kapcsolatban az &man.init.8; man oldal ad
részletesebb útmutatást.A kérdés tehát az, hogy mit kellene
ezzel csinálni. Alapvetõen két
lehetõségünk van: vagy
visszaállítjuk a biztonsági szintet
nullára (ezt általában az
/etc/rc.conf állományon
keresztül lehet megtenni), vagy az &man.xdm.1;
programot még a rendszerindítás
során elindítjuk (mielõtt a
biztonsági szintet magasabbra
állítanánk).A szolgál arról
bõvebb információval, hogy miként
tudjuk használni az &man.xdm.1; programot a rendszer
indítása során.Miért nem mûködik X alatt az
egér?Ha a &man.syscons.4; (vagyis az alapértelmezett
konzol) meghajtót használjuk, akkor be tudjuk
úgy állítani a &os;-t, hogy minden
virtuális képernyõn látható
legyen az egérkurzor. A &man.syscons.4; egy
/dev/sysmouse nevû
virtuális eszköz
támogatásával igyekszik elkerülni
azt, hogy összeakadjon az X-szel. A valós
egértõl érkezõ összes
eseményt a &man.moused.8; démon írja
folyamatosan a &man.sysmouse.4; eszközre. Amennyiben
az egerünket egy vagy több virtuális
konzolon is használni akarjuk az X-szel
együtt, akkor nézzük
meg a
válaszát és állítsuk be
annak megfelelõen a &man.moused.8;
démont.Ezt követõen nyissuk meg az
/etc/X11/xorg.conf
állományt és gondoskodjunk róla,
hogy a következõ sorok feltétlenül
szerepeljenek benne:Section "InputDevice"
Option "Protocol" "SysMouse"
Option "Device" "/dev/sysmouse"
.....
+ Az &xorg; 7.4 változatától
+ kezdõdõen az xorg.conf
+ állomány InputDevice
+ szekciói nem kerülnek feldolgozásra a
+ csatlakoztatott eszközök automatikus
+ érzékelése esetén. A
+ korábbi viselkedési mód
+ visszaállításához vegyük
+ fel a következõ sort a
+ ServerLayout vagy
+ ServerFlags szekciók
+ valamelyikébe:
+
+ Option "AutoAddDevices" "false"
+
Néhányan inkább a
/dev/mouse eszközt szeretik
használni X alatt. Ha mi is így akarjuk
használni, akkor a
/dev/mouse eszközhöz
hozzunk létre egy szimbolikus linket a
/dev/sysmouse eszközre
(lásd &man.sysmouse.4;). Ezt úgy tudjuk
megtenni, ha az /etc/devfs.conf
állományba (lásd &man.devfs.conf.5;)
felvesszük a következõ sort:link sysmouse mouseA link maga közvetlenül a &man.devfs.5;
újraindításával keletkezik. Ehhez
(root
felhasználóként) a következõ
parancsot kell kiadnunk:&prompt.root; /etc/rc.d/devfs restartX alatt lehet használni görgõs
egeret?Igen.Jelezni kell az X-nek, hogy ötgombos egerünk
van. Ezt úgy tudjuk megcsinálni, ha az
/etc/X11/xorg.conf
állományba felvesszük a Buttons
5 és ZAxisMapping 4 5
sorokat az InputDevice szakaszba.
Vegyük például, hogy az
/etc/X11/xorg.conf
állományunkban a következõ
InputDevice szakasz
található.Egy példa &xorg; konfigurációs
állomány InputDevice szakasza
görgõs egerekhezSection "InputDevice"
Identifier "Mouse1"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/sysmouse"
Option "Buttons" "5"
Option "ZAxisMapping" "4 5"
EndSectionEgy egyszerû példa .emacs
állomány görgõs egerek
(opcionális) használatához;; görgõs egér
(global-set-key [mouse-4] 'scroll-down)
(global-set-key [mouse-5] 'scroll-up)Hogyan lehet távoli X szervereket
elérni?Biztonsági okokból a szerver
alapértelmezés szerint nem engedélyezi,
hogy egy távoli géprõl ablakot lehessen
nyitni rajta.Ha szükségünk lenne erre a
lehetõségre, akkor nem kell mást
tennünk, mint az X-et a
paraméterrel
indítani:&prompt.user; startx -listen_tcpMi az a virtuális konzol és hogyan lehet
belõle többet létrehozni?A virtuális konzolok röviden szólva
arra alkalmasak, hogy egyetlen gépen is több
párhuzamos munkamenetben tudjunk dolgozni,
hálózat vagy X beállítása
nélkül.Amikor a rendszer elindul, a rendszerüzenetek
után általában egy bejelentkezõ
képernyõ jelenik meg. Ekkor az elsõ
virtuális konzolon keresztül tudjuk megadni a
felhasználói nevünket és
jelszavunkat, majd nekilátni a munkának (vagy
éppen a játszadozásnak).Késõbb aztán elõfordulhat, hogy
egy másik munkamenetet is szeretnénk
elindítani, például elõkeresni az
éppen használt program
dokumentációját vagy elolvasni a
leveleinket, amíg FTP-n keresztül
letöltünk egy állományt. Ehhez nem
kell mást csinálnunk, csak le kell nyomni az
AltF2
(tartsuk lenyomva az Alt billentyût
miközben megnyomjuk az F2
billentyût) billentyûkombinációt
és máris egy másik virtuális
konzolon találjuk magunkat! Ha innen vissza
szeretnénk térni az elõzõ
munkamenetbe, akkor nyomjuk le az AltF1
billentyûkombinációt.A frissen telepített &os; rendszerekben
alapértelmezés szerint nyolc virtuális
konzol engedélyezett. Az AltF1,
AltF2,
AltF3,
stb. lenyomásával tudunk váltogatni
köztük.Ha ennél többet szeretnénk egyszerre
használni, akkor nyissuk meg az
/etc/ttys állományt
(lásd &man.ttys.5;) és a Virtual
terminals részben vegyünk még fel
a ttyv8 eszköz után
továbbiakat, egészen a
ttyvc eszközig:# Írjuk át az eredeti ttyv8 bejegyzést az /etc/ttys
# állományban és engedélyezzük.
ttyv8 "/usr/libexec/getty Pc" cons25 on secure
ttyv9 "/usr/libexec/getty Pc" cons25 on secure
ttyva "/usr/libexec/getty Pc" cons25 on secure
ttyvb "/usr/libexec/getty Pc" cons25 on secureAkármennyit használhatunk
belõlük. Ne felejtsük el azonban, hogy
minél több virtuális terminálunk
van, annál több erõforrásra lesz
hozzájuk szükségünk. Ezt
leginkább akkor érdemes megfontolni, ha
8 MB memóriánál kevesebbel
rendelkezünk. Emellett még érdemes a
secure értéket is az
insecure értékre
átállítani.Ha X szervert is akarunk futtatni, akkor
legalább egy virtuális konzolt szabadon
(vagy kikapcsolva) kell hagynunk a
számára. Így tehát, ha mind
a tizenkét funkcióbillentyûre
szeretnénk elindítani egy-egy
virtuális konzolt, nos, akkor nincs
szerencsénk — ha X szervert is akarunk
használni a gépen, akkor legfeljebb csak
tizenegyet használhatunk
belõlük.Az egyes konzolokat legegyszerûbben úgy
tudjuk letiltani, ha kikapcsoljuk ezeket.
Például, ha az elõbb említettek
szerint tizenkét terminálunk van, és
X-et akarunk futtatni, akkor a tizenkettedik terminál
beállításait meg kell
változtatnunk errõl:ttyvb "/usr/libexec/getty Pc" cons25 on secureerre:ttyvb "/usr/libexec/getty Pc" cons25 off secureAmennyiben a billentyûzetünkön csak
tíz funkcióbillentyû
található, elengedõ ennyi is:ttyv9 "/usr/libexec/getty Pc" cons25 off secure
ttyva "/usr/libexec/getty Pc" cons25 off secure
ttyvb "/usr/libexec/getty Pc" cons25 off secure(Ezeket a sorokat akár ki is
törölhetjük.)Ezt követõen a legegyszerûbben (és
egyben a legtisztábban) úgy tudjuk
aktiválni a virtuális konzolokat, ha
újraindítjuk a rendszerünket. Ha viszont
nem akarjuk ezt feltétlenül megtenni, akkor
állítsuk le az X szervert, majd
(root
felhasználóként) adjuk ki az
alábbi parancsot:&prompt.root; kill -HUP 1Fontos, hogy a parancs végrehajtás
elõtt teljesen leállítsuk az X szervert,
amennyiben az fut. Ha nem tesszük meg, akkor
könnyen elõfordulhat, hogy a
kill parancs hatására
lemerevedik vagy megáll a rendszerünk.Hogyan lehet elérni a virtuális konzolokat
X-bõl?A virtuális konzolokra a
CtrlAltFN billentyûkombinációval lehet
visszaváltani. Ennek megfelelõen tehát a
CtrlAltF1 kombinációval az elsõ
virtuális konzolra tudunk
visszaváltani.Ahogy visszajutottunk a szöveges konzolra, az
AltFn billentyûkombinációval a
megszokott módon tudunk váltani
köztük.Ha innen az X szerverre akarunk visszaváltani,
akkor egyszerûen csak váltsunk arra a
virtuális konzolra, ahol az X fut. Ha az X-et a
paranccsorból indítottuk el
(például a startx
paranccsal), akkor az X nem arra a virtuális konzolra
kapcsolódik automatikusan, amelyen a parancsot
kiadtuk, hanem az utána következõ,
használatban még nem levõ konzolra. Ha
nyolc aktív virtuális terminálunk van,
akkor az X a kilencediken fog futni, ezért ide az
AltF9 lenyomásával tudunk
visszatérni.Hogyan indítható el az
XDM a rendszer
indításakor?Alapvetõen kétféle
megközelítés létezik az
&man.xdm.1; elindításával kapcsolatban.
Az egyik megközelítés szerint az
xdm parancsot az
/etc/ttys
állományból (lásd &man.ttys.5;)
tudjuk megadni a megadott példa alapján, a
másikban pedig egyszerûen az
rc.local
állományból (lásd &man.rc.8;)
vagy a /usr/local/etc/rc.d
könyvtárban megadható
X szkripttel. Mind a kettõ
ugyanazt képviseli, de vannak bizonyos helyzetek,
ahol a kettõ közül csak az egyik
mûködik. Az eredmény mind a két
esetben azonos, hatásukra az X egy grafikus
bejelentkezõ képernyõvel
jelentkezik.A &man.ttys.5; módszernek van egy olyan
elõnye, hogy pontosan megadja, melyik virtuális
terminálon fog futni az X és a szerver
elindítását az &man.init.8; programra
bízza. Az &man.rc.8; használata esetén
viszont könnyû leállítani az
xdm programot, ha netalán
valamilyen gondunk adódna az X szerver
indításakor.Ha az &man.rc.8; állományból
töltöttük be, akkor az xdm
futtatásához semmilyen paramétert nem
kell megadni (például, hogy
démonként fusson). Az &man.xdm.1; azonban
csak az összes &man.getty.8;
elindulása után indítható,
máskülönben a két program
ütközni fog és a konzol nem tud
létrejönni. Ezt a legkönnyebben úgy
lehet megakadályozni, ha az xdm
indítása elõtt várunk kb. 10
másodpercet a szkriptben.Amennyiben az /etc/ttys
állományból adjuk ki az
xdm parancsot, úgy továbbra
is fennáll az &man.xdm.1; és a &man.getty.8;
ütközésének veszélye. Ezt
például úgy tudjuk elkerülni, ha
felvesszük a megfelelõ virtuális
terminál sorszámát a
/usr/local/lib/X11/xdm/Xservers
állományba::0 local /usr/local/bin/X vt4A fenti példában az X szervert a
/dev/ttyv3 eszközre
irányitjuk. A számozást azonban eggyel
el kell tolnunk, mert míg az X szerver egytõl
számozza a virtuális konzolokat, addig a &os;
rendszermagja nullától.Az xconsole indításakor
miért jelenik meg a Couldn't open
console hibaüzenet?Ha az X-et a startx paranccsal
indítottuk el, akkor a
/dev/console eszközre
nem állítódnak be
a szükséges engedélyek, ezért az
xterm -C és az
xconsole parancsok nem fognak
mûködni.Ez a konzolok engedélyeinek
alapértelmezett beállítási
módjától függ. Egy
többfelhasználós rendszer esetén
nem feltétlenül van szükségünk
arra, hogy bármelyik felhasználó
kedvére írhasson a rendszerkonzolra. Az
&man.fbtab.5; állomány
segítségével engedélyezni tudjuk
azon felhasználók számára, akik
a helyi gépen, virtuális konzolon
keresztül jelentkeznek be.Dióhéjban az
/etc/fbtab állományban
(lásd &man.fbtab.5;) kell kivennünk a
következõ sort a megjegyzésbõl:/dev/ttyv0 0600 /dev/consoleEnnek köszönhetõen bárki, aki az
/dev/ttyv0 eszközön
keresztül jelentkezik be a rendszerbe, el tudja
érni a konzolt.Régebben egyszerû
felhasználóként is el lehetett
indítani az &xfree86; szervert. Most miért
kell root
felhasználóként indítani?Az X szerverek csak úgy képesek
közvetlenül elérni a
videokártyát, ha root
felhasználóként futtatjuk ezeket. Az
&xfree86; régebbi (3.3.6 elõtti)
változatai az összes szervert úgy
telepítették fel automatikusan, hogy a
root felhasználó jogaival
fussanak (setuid bittel). Ennek viszont megvan a maga
nyilvánvaló biztonsági
kockázata, hiszen az X szerverek
általában nagy és bonyolult programok.
Az &xfree86; újabb változatai azonban
már pontosan ebbõl kifolyólag nem
állítanak be setuid root
bitet a szerverekre.Értelemszerûen az a megoldás nem
fogadható el és nem is annyira
biztonságos, hogy az X szervert
root
felhasználóként futtassuk.
Kétféleképpen tudjuk egyszerû
felhasználóként futtatni az X-et.
Használhatjuk az xdm vagy
más egyéb bejelentkeztetõ
képernyõ (mint például a
kdm) megoldását, vagy az
Xwrapper programot.Az xdm egy grafikus
bejelentkeztetésért felelõs démon.
Általában a rendszer indításakor
aktiválódik, feladata a
felhasználók hitelesítése
és a hozzájuk tartozó munkamenetek
elindítása. Lényegében a
&man.getty.8; és a &man.login.1; grafikus
megfelelõje. Az xdm démonnal
kapcsolatban még az &xfree86;
dokumentációját, illetve a
GYIK-ban ezt a
kérdést érdemes
elolvasnunk.Az Xwrapper az X szerverhez
tartozó burkolóprogram (wrapper). Ez egy
apró segédprogram, amely lehetõvé
teszi az X szerver manuális
indítását miközben igyekszik
ügyelni a biztonságra is. Elvégez
néhány alapvetõ ellenõrzést a
paramétereken, és ha megfelelõnek
találja ezeket, akkor elindítja a
megfelelõ X szervert. Ha valamiért nem akarunk
bejelentkeztetõ képernyõt indítani,
akkor ezt pontosan nekünk találták ki!
Ha telepítettük a teljes
Portgyûjteményt, akkor a /usr/ports/x11/wrapper portban
találjuk meg.Miért viselkednek furcsán a PS/2-es egerek
X alatt?Valószínûleg az egér és
az egérmeghajtó kiesett a
szinkronból.Nagyon ritkán elõfordul, hogy a
meghajtó hibásan szinkronizációs
hibát jelez, és ekkor a rendszermag a
következõ üzenetet küldi:psmintr: out of sync (xxxx != yyyy)Közben természetesen azt tapasztaljuk, hogy
az egerünk nem mûködik rendesen.Ha ilyen történne velünk, akkor tiltsuk
le a meghajtó szinkronizáció
ellenõrzéséért felelõs
rutinjait. Ezt úgy tudjuk megtenni, ha a
meghajtónak beállítjuk a
0x100 értéket. Ehhez a
rendszertöltõ parancssorában a
kapcsolóval tudjuk behozni a
UserConfig részt:boot: -cEzután a UserConfig
parancssorában gépeljük be a
következõt:UserConfig> flags psm0 0x100
UserConfig> quitMiért nem mûködnek a MouseSystems
által gyártott PS/2-es egerek?Kaptunk néhány visszajelzést arra
vonatkozóan, hogy a MouseSystems által
gyártott PS/2-es egerek bizonyos típusai csak
abban az esetben mûködnek rendesen, ha nagy
felbontású módban
használjuk ezeket. Minden más esetben az
egér néha fel-felugrik a képernyõ
bal felsõ sarkába.Úgy tudjuk nagy felbontású
módban használni az egerünket, ha a PS/2-es
egérmeghajtónak a 0x04
beállítást adjuk meg. Ehhez a
rendszertöltõ parancssorában
gépeljük be a
kapcsolót:boot: -cAhogy bejön a UserConfig
parancssora, gépeljük be a
következõt:UserConfig> flags psm0 0x04
UserConfig> quitAz elõzõ részben olvashatunk egy
másik hasonló egeres
problémáról.Hogyan lehet megcserélni a gombokat az
egéren?Futtassuk le a xmodmap -e "pointer = 3 2
1" parancsot az .xinitrc vagy
.xsession
állományunkból.Hogyan lehet betöltõképet
telepíteni és hol találhatóak
ilyen képek?Erre a kérdésre részletes
választ a &os; kézikönyv Rendszerbetöltõ
képernyõk
címû szakaszában kapunk.X alatt lehet használni a billentyûzeten
található Windows
billentyûket?Igen. Ehhez mindössze az &man.xmodmap.1;
használatával meg kell adni a hozzájuk
tartozó funkciót.Feltéve, hogy mindegyik Windows
billentyûzet szabványos, a következõ
billentyûkódok tartoznak ehhez a három
plusz gombhoz:115 —
Windows billentyû, a bal oldali
Ctrl és Alt
billentyûk között116 —
Windows billentyû, az
AltGr mellett jobbra117 —
Menü gomb, a jobb oldali
Ctrl mellett balraPéldául így lehet
beállítani a bal oldali
Windows billentyût
vesszõre:&prompt.root; xmodmap -e "keycode 115 = comma"A változatatások
valószínûleg csak akkor fognak
életbelépni, ha újraindítjuk az
ablakkezelõnket.Ha azt szeretnénk, hogy a
Windows billentyûkhöz rendelt
funkciók az X indításakor automatikusan
beállítódjanak, akkor tegyük az
xmodmap parancs
hívását az
~/.xinitrc állományunkba.
Sokkal jobban járunk viszont, ha ehelyett
inkább az ~/.xmodmaprc
állományunkba vesszük fel az
xmodmap
beállításait, soronként
egyesével, és a következõ sor
tesszük az ~/.xinitrc
állományunkba:xmodmap $HOME/.xmodmaprcPéldául ezeket a gombokat be lehet
állítani az F13,
F14 és F15
billentyûkre is. Ezekre aztán az
alkalmazásokban vagy az ablakkezelõben
további hasznos funkciókat tudunk
beállítani.Ehhez a következõt kell megadnunk az
~/.xmodmaprc
állományban:keycode 115 = F13
keycode 116 = F14
keycode 117 = F15Ha például az x11-wm/fvwm2 ablakkezelõt
használjuk, akkor az F13 gombra be
tudjuk állítani a kurzor alatt
álló ablak
lekicsinyítésére (vagy
visszanagyítására); az
F14 billentyûvel az
elõtérbe tudjuk hozni a kurzor alatt levõ
ablakot, vagy ha már elöl van, akkor
hátra tudjuk rakni; az F15 gomb
elõhozza a munkakörnyezet (alkalmazás)
menüjét még olyankor is, amikor a kurzor
nincs is az asztalon. Ez utóbbi abban az esetben
lehet hasznos, amikor az asztal egyáltalán nem
látható (és a billentyûn
látható rajz pontosan is ezt mutatja).A következõ beállítások
valósítják meg az imént
említett funkciókat az
~/.fvwmrc állományon
belül:Key F13 FTIWS A Iconify
Key F14 FTIWS A RaiseLower
Key F15 A A Menu Workplace NopHogyan lehet hardveres 3D gyorsítást
használni az &opengl;-hez?Az &xorg; pillanatnyilag használt
verziójától és a
videokártyánktól függ, hogy
tudunk-e 3D gyorsítást alkalmazni. Ha nVidia
kártyánk van, akkor a portok közül
telepíteni tudjuk a &os;-hez készített
bináris meghajtót:A legújabb nVidia-kártyákat az
x11/nvidia-driver
port támogatja.A GeForce2 MX/3/4 sorozatú
nVidia-kártyákat a meghajtó 96XX
változata támogatja, amely az x11/nvidia-driver-96xx
portból telepíthetõ.Az ettõl is régebbi
kártyák, például a GeForce
vagy Riva TNT esetén a meghajtó 71XX
változata javasolt, amely az x11/nvidia-driver-71xx
porton keresztül érhetõ el.Az nVidia honlapján részletes
leírást találhatunk arról, hogy
melyik kártyát melyik meghajtó ismeri.
Ez az információ a következõ
címen érhetõ el: .
A Matrox G200/G400 esetén az x11-servers/mga_hal portot
érdemes megnéznünk.ATI Rage 128 és Radeon
kártyák számára a &man.ati.4x;,
&man.r128.4x; és &man.radeon.4x; man oldalakat
ajánljuk.3dfx Voodoo 3, 4, 5 és Banshee
kártyák számára az x11-servers/driglide port
áll rendelkezésre.HálózatokHonnan lehet többet megtudni a lemez
nélküli
mûködésrõl?A lemez nélküli
mûködés kifejezés arra utal,
hogy a &os; rendszerünk hálózaton
keresztül indul el, valamint a
mûködéséhez szükséges
állományokat nem merevlemezrõl, hanem
egy szerverrõl olvassa be. Ennek
részleteirõl kézikönyv lemez
nélküli mûködésrõl szóló részében
olvashatunk.A &os; használható kizárólag
csak hálózati
útválasztóként?Igen. Ezzel kapcsolatban a kézikönyv
Egyéb haladó hálózati
témák címû
fejezetét javasoljuk elolvasásra,
különös tekintettel az útválasztás és az átjárók
bemutatására.&os;-n keresztül lehet &windows;
operációs rendszerrel internetre
csatlakozni?Ezt a kérdést általában
olyanok teszik fel, akiknek két
számítógépük van otthon,
és ezek közül az egyiken a &os;, a
másikon pedig a &windows; valamelyik változata
fut. A &os; rendszer fog az internethez csatlakozni,
és ezen keresztül szeretnénk a
windowsos géprõl is elérni azt. Ez
tulajdonképpen az elõzõ
kérdés egy speciális esete, és
remekül megoldható.Ha betárcsázós kapcsolattal
csatlakozunk az internethez, akkor érdemes tudnunk,
hogy a felhasználói módban futó
&man.ppp.8; tartalmaz egy
kapcsolót. A &man.ppp.8; programot úgy tudjuk
a kapcsolóval futtatni, ha az
/etc/rc.conf állományban
a gateway_enable
beállítást a YES
értékre állítjuk. Ezután
állítsuk be a windowsos gépünket
ennek megfelelõen és minden mûködni
fog. A további részletekrõl a
&man.ppp.8; man oldalán vagy a kézikönyv
felhasználói PPP-rõl
szóló bejegyzésében
olvashatunk.Amennyiben rendszerszintû PPP-t használunk
vagy Ethernettel csatlakozunk az internethez, akkor a
&man.natd.8; démonra lesz
szükségünk. Erre vonatkozóan a
kézikönyv natd
démonról szóló
szakaszában találhatunk részletesebb
információkat.A &os; támogatja a SLIP és a PPP
használatát?Igen. Érdemes elolvasnunk az &man.slattach.8;,
&man.sliplogin.8;, &man.ppp.8; és &man.pppd.8; man
oldalakat. A &man.ppp.8; és a &man.pppd.8;
egyaránt támogatja a beérkezõ
és kimenõ kapcsolatokat, miközben a
&man.sliplogin.8; kizárólag csak
beérkezõ kapcsolatokkal dolgozik, valamint a
&man.slattach.8; pedig csak kimenõ
kapcsolatokkal.Ezek pontos használatáról olvassuk
el a kézikönyv
PPP-rõl és a SLIP-rõl szóló
fejezetét.Ha viszont csak egy shellen
keresztül érjük el az internetet, akkor
hasznos lehet megnéznünk a net/slirp csomagot.
Segítségével a helyi géprõl
(korlátozott módon) hozzá tudunk
férni különbözõ FTP és
HTTP szolgáltatásokhoz.A &os; támogat hálózati
címfordítást (NAT) vagy
maszkolást?Igen. Ha egy felhasználói PPP kapcsolat
esetén szeretnénk hálózati
címfordítást alkalmazni, akkor olvassuk
el a kézikönyv
felhasználói PPP-vel foglalkozó
részét. Ha viszont
más típusú hálózati
kapcsolatok esetén kívánunk
címfordítást használni, akkor
ahhoz a kézikönyv natd
démonnal kapcsolatos részét kell
fellapoznunk.A PLIP segítségével hogyan tudok
két &os; rendszert összekapcsolni
párhuzamos porton keresztül?Ezt illetõen a kézikönyv PLIP-rõl
szóló szakaszát
érdemes megnéznünk.Hogyan lehet álneveket megadni az Ethernet
eszközöknek?Amennyiben az álnév ugyanazon az
alhálózaton található, mint a
hozzá tartozó interfész, akkor
egyszerûen csak adjuk meg a netmask
0xffffffff paramétert az &man.ifconfig.8;
parancs meghívásakor, például
így:&prompt.root; ifconfig ed0 alias 192.0.2.2 netmask 0xffffffffMinden más esetben a hagyományos
módon adjunk meg egy hálózati
címet és egy hálózati
maszkot:&prompt.root; ifconfig ed0 alias 172.16.141.5 netmask 0xffffff00Errõl bõvebben a &os; kézikönyvben
olvashatunk.A 3C503 kártya hogyan
állítható másik
hálózati portra?Ha a kártyán egy másik portot
szeretnénk használni, akkor ahhoz meg kell
adnunk egy további paramétert a
&man.ifconfig.8; meghívásakor. Itt az
alapértelmezett port a link0. Ha
a BNC helyett az AUI portot akarjuk használni, akkor
ennek a link2 értéket kell
megadnunk. Az ilyen típusú
beállítások az
/etc/rc.conf állomány
(lásd &man.rc.conf.5;) ifconfig_*
változóival adhatóak meg.Miért okoz gondot az NFS használata &os;
alatt?A személyi
számítógépekben
található bizonyos hálózati
kártyák (szépen szólva)
ügyesebbek a többieknél, ami az olyan
komolyabb hálózati alkalmazások, mint
például az NFS esetén gondokat
okozhat.Ezzel kapcsolatban
kézikönyv NFS-rõl szóló
részét érdemes
megnéznünk.Miért nem lehet hálózati
állományrendszereket csatlakoztatni &linux;
alól?A &linux; egyes változataiban
található NFS kód csak bizonyos
privilegizált portokról fogad el
kéréseket. Próbáljuk meg a
következõt:&prompt.root; mount -o -P linux:/valami/mntMiért nem lehet hálózati
állományrendszereket csatlakoztatni &sun;
típusú rendszerek alól?A &sunos; 4.X
változatait futtató munkaállomások
csak privilegizált portokról fognak el
kéréseket. Próbálkozzunk az
alábbi paranccsal:&prompt.root; mount -o -P sun:/valami/mntA mountd miért küld
folyton can't change attributes
hibaüzenetet és miért jelenik meg a
bad exports list hibaüzenet a
&os; alapú NFS szerveren?Ez leginkább azért történik,
mert nem jól adtuk meg az
/etc/exports állomány
tartalmát. Olvassuk át a &man.exports.5; man
oldalt és a kéziköny
NFS-rõl
szóló részét,
különös tekintettel az NFS
beállítására.A NeXTStep gépekkel
miért nem sikerül PPP-n keresztül
kommunikálni?Próbáljuk meg az
/etc/rc.conf állományban
(lásd &man.rc.conf.5;) kikapcsolni a TCP
kiterjesztések használatát úgy,
hogy az alábbi változót a
NO értékre
állítjuk:tcp_extensions=NOA Xylogic által
gyártott Annex
típusú gépek esetén is javasolt
megtenni a fenti változtatást.Hogyan lehet engedélyezni a multicast
használatát az IP-n belül?A &os; alapértelmezés szerint
támogatja a multicast mûveleteket. Amennyiben egy
multicast küldéseket közvetítõ
útválasztót szeretnénk
beállítani, akkor újra kell
fordítanunk a rendszermagunkat a
MROUTING beállítás
használatával és elindítani a
&man.mrouted.8; démont. Ez a démon úgy
aktiválható a rendszer minden egyes
indításakor, ha az
/etc/rc.conf állományban
az mrouted_enable változót
YES értékûre
állítjuk.A &os; újabb változataiban az
&man.mrouted.8; multicast útválasztó
démon, a &man.map-mbone.8; valamint az
&man.mrinfo.8; segédprogramok már nem
szerepelnek az alaprendszerben. Ezek a programok
már a &os; Portgyûjteményében az
net/mrouted portban
találhatóak meg.Az MBONE használatához további
eszközök találhatóak a külön
mbone
kategóriában a Portgyûjeményen
belül. Ha a vic és
vat nevû konferenciaszervezõ
eszközöket keressük, akkor itt érdemes
szétnéznünk!Milyen hálózati kártyák
épülnek a DEC PCI
chipkészletére?Glen Foster (gfoster@driver.nsta.org) a
következõ listát állította
össze róluk, amelyet
kiegészítettünk még
néhány további elemmel:
Miért kell teljes hálózati neveket
megadni?Erre a &os; kézikönyvben
találjuk meg a választ.Miért jelenik meg a Permission
denied hibaüzenet minden egyes
hálózati mûvelet esetén?Amennyiben a rendszermagot az
IPFIREWALL
beállítással fordítottuk le,
akkor nem szabad elfelejtenünk, hogy ez
alapértelmezés szerint minden olyan csomagot
eldob, amelyet külön nem
engedélyeztünk.Ha véletlenül rosszul
állítottuk volna be a rendszerünkön
futó tûzfalat, akkor a hálózat
mûködését úgy tudjuk
visszaállítani, ha root
felhasználóként kiadjuk a
következõ parancsot:&prompt.root; ipfw add 65534 allow all from any to anyAz /etc/rc.conf
állományban is megadhatjuk ehhez a
firewall_type="open" sort.Ha a tûzfalak
beállításáról
szeretnénk többet megtudni &os; alatt, akkor
olvassuk el a kézikönyv
erre vonatkozó fejezetét.Az ipfwfwd
szabálya miért nem irányít
át más gépekre
szolgáltatásokat?Valószínûleg azért, mert nem
egyszerûen a csomagok
továbbítására (forward) van
szükségünk, hanem hálózati
címfordításra. Az fwd
szabály pontosan azt csinálja, amirõl a
nevét kapta: csomagokat továbbít, de
azokon belül semmit sem változtat meg.
Tegyük fel, hogy van egy ilyen
szabályunk:01000 fwd 10.0.0.1 from any to ize 21Amikor egy csomag az ize
célcímmel megérkezik a
10.0.0.1 gépre, akkor
benne a cél címe továbbra is az
ize lesz! A csomag
célcíme nem fog
magától megváltozni a
10.0.0.1 címre. A
legtöbb gép általában eldobja
azokat a csomagokat, amelyeket nem egyenesen neki
címeztek. Emiatt a fwd szabály
használata nem minden esetben úgy
mûködik, ahogy arra a felhasználó
számít. Ez viszont ilyen, semmilyen hiba
nincs benne.Részletesebb információkat a szolgáltatások
átirányításával
foglalkozó GYIK-ban, a &man.natd.8; man
oldalán vagy a Portgyûjtemény
valamelyik port átirányítással
foglalkozó portjának
dokumentációjában
találhatunk.Hogyan lehet egyik géprõl a másikra
szolgáltatásokat
átirányítani?Az FTP (vagy más egyéb
szolgáltatás-) kéréseket a
Portgyûjteményen belül
található sysutils/socket porttal tudunk
átirányítani. Az adott
szolgáltatás helyett egyszerûen csak
adjuk meg a socket parancsot és
annak paramétereit, valahogy így:ftp stream tcp nowait nobody /usr/local/bin/socket socket ftp.minta.comftpahol az ftp.minta.com az a
gép, ahová át akarjuk
irányítani a szolgáltatást, az
ftp pedig a konkrét
szolgáltatás.Hogyan lehet a sávszélességet
szabályozni?&os; alatt alapvetõen három eszköz
szolgál erre a célra. A &man.dummynet.4; a &os;
részeként megtalálható
&man.ipfw.4; egyik komponense. Az ALTQ
a &os;-ben található &man.pf.4; rendszer
része, az Emerging Technologies
által fejlesztett Bandwith
Manager pedig egy kereskedelmi
termék.Miért jelenik meg a /dev/bpf0: device
not configured hibaüzenet?Olyan programot akarunk futtatni, amelynek
szüksége van a Berkeley Packet Filter
(&man.bpf.4;) használatára, azonban a
rendszermag ezt nem tartalmazza. Úgy tudjuk
aktiválni, ha a rendszermag
konfigurációs állományába
felvesszük a következõ sort, majd
fordítunk egy új rendszermagot:device bpf # Berkeley Packet FilterHogyan lehet a hálózaton
elérhetõ &windows; típusú
partíciókat csatlakoztatni, mint ahogy az
smbmount csinálja &linux; alatt?Erre az SMBFS eszközeit
használhatjuk, amely tartalmazza az ehhez
szükséges rendszermagbeli
módosításokat és a
hozzá tartozó felhasználói
programokat. Ezek a programok és a hozzájuk
tartozó &man.mount.smbfs.8; man oldal az alaprendszer
részei.Mik azok az Limiting icmp/open port/closed
port response üzenetek a
naplókban?Ilyen üzeneteket akkor kapunk a
rendszermagtól, ha valaminek a hatására
több ICMP vagy TCP reset (RST) választ
küld, mint amennyit kellene. Az ICMP válaszok
sokszor olyankor generálódnak, amikor
használaton kívüli UDP portokat akarnak
elérni a rendszerünkön. A TCP reset pedig
általában olyankor keletkezik, amikor meg nem
nyitott TCP porthoz akarnak csatlakozni. Többek
közt ilyenek okozhatják:A rendszer túlterhelését
célzó, nyers erõvel indított
Denial of Service (Dos)
támadások (ellentétben az
egycsomagos, adott sebezhetõség
kihasználó
támadásokkal).A portok szisztematikus letapogatása,
amelynek során egyszerre nagy
mennyiségû portot próbálnak
meg átvizsgálni (ellentétben azzal,
amikor csak néhány jól ismert
portot nyitnak meg).Az üzenetben olvasható elsõ szám
azt mondja meg, hogy a rendszermag mennyi csomagot
küldött volna, ha nem korlátoztuk volna, a
második pedig magát a határt jelzi.
Ezt a net.inet.icmp.icmplim sysctl
változó segítségével
tudjuk beállítani, ahogy például
most megnöveljük az értékét
300-ra:&prompt.root; sysctl -w net.inet.icmp.icmplim=300Amennyiben le szeretnénk tiltani az ilyen
jellegû üzeneteket a naplókban, viszont
még továbbra is szükségünk
lenne a válaszküldés
korlátozására, a
net.inet.icmp.icmplim_output sysctl
változó segítségével
így tudjuk ezt megtenni:&prompt.root; sysctl -w net.inet.icmp.icmplim_output=0Végezetül, ha teljesen ki akarjuk kapcsolni
a válaszküldés
korlátozását, akkor
állítsuk a
net.inet.icmp.icmplim sysctl
változót (lásd az elõbbi
példában) a 0 nulla
értékre. A korlát törlése
azonban a fenti okok miatt egyáltalán nem
ajánlott.Mik azok az arp: unknown hardware address
format hibaüzenetek?Ez arra utal, hogy valamelyik gép a helyi
Ethernet-alapú hálózatunkon olyan
MAC-címet használ, amelynek a &os; nem ismeri
a formátumát. Valószínûleg
olyankor kapjuk ezt a hibaüzenetet, amikor valaki
más kísérletezik az Ethernet
kártyája beállításaival
valahol a hálózaton. Leggyakrabban
kábelmodemes hálózatokon
tapasztalhatunk ilyet. Megnyugodhatunk, teljesen
veszélytelen, semmilyen hatással nincs a &os;
gépünk
teljesítményére.Miért jelennek meg 192.168.0.10 is on
fxp1 but got reply from 00:15:17:67:cf:82 on rl0
üzenetek a konzolon és hogyan lehet ezeket
kikapcsolni?Ilyen üzeneteket akkor kapunk, amikor a
hálózaton kívülrõl
érkezik hozzánk váratlanul egy csomag.
A letiltásukhoz állítsuk a
net.link.ether.inet.log_arp_wrong_iface
értékét 0-ra.A CVSup programot
telepítése után nem lehet
elindítani, mert hibákat jelez. Mi a
gond?Elõször is nézzük meg, hogy az
iménti hibaüzenet mellett nem látunk-e
valami hasonlót:/usr/libexec/ld-elf.so.1: Shared object "libXaw.so.6" not foundAz ilyen jellegû hibák
általában olyankor keletkeznek, amikor olyan
gépre telepítjük a net/cvsup portot, amelyen
viszont nem található meg a
&xorg; programcsomag.
Amennyiben szükségünk lenne
CVSup programhoz mellékelt
grafikus felületre, akkor kénytelenek
leszünk mellé az
&xorg; programjait is
telepíteni. Ha viszont egyszerûen csak
parancssorból szeretnénk használni a
CVSup lehetõségeit,
töröljük le a korábban
telepített csomagot, majd helyette rakjuk fel a
net/cvsup-without-gui
vagy a net/csup portot.
A &os; újabb változataiban
megpróbálkozhatunk a &man.csup.1;
használatával is. Ezzel a
témával részletesebban a
kézikönyv CVSup használatáról
szóló része foglalkozik.BiztonságMi az a járóka
(sandbox)?A járóka alapvetõen egy
biztonsági szakkifejezés. Két dolgot
jelenthet:Egy virtuális falak között
futó programot, melyeket azért emeltek a
program köré, hogy a
feltörését követõen
megakadályozzák a rendszer többi
részének
elérését.A program csak a falon belül
játszhat. Ilyenkor semmilyen
olyan kódot nem képes futtatni, amellyel
át tudna lépni a falakon, így a
használatához nem kell elõzetesen
átvizsgálni a forrásait ahhoz,
hogy meg tudjuk gyõzõdni a
biztonságosságáról.Ez a fal lehet például egy
felhasználói azonosító. A
&man.security.7; és &man.named.8; man oldalakon
is ezt a definíciót találjuk
meg.Vegyük például az
ntalk szolgáltatást
(lásd &man.inetd.8;). Ezt a
szolgáltatást korábban a
root felhasználó
azonosítójával futtatták,
de manapság viszont már a
tty felhasználóval
fut. A tty
felhasználó lényegében egy
olyan járóka, amely az
ntalk szolgáltatás
feltörésekor nem engedi, hogy a rendszer
többi részéhez is hozzá
lehessen férni.A valódi gépet utánzó
rendszerben futó programot. Ez már egy
sokkal kifinomultabb megoldás. Ha ilyenkor
valakinek sikerül betörnie a programba,
akkor könnyen azt hiheti, hogy sikerült a
rendszer többi részét is
elérnie, de valójában csak egy
szimulált gépen van, és semmilyen
valós adatot nem képes
módosítani.Leggyakrabban ezt úgy szokták
elérni, hogy egy könyvtárban
létrehoznak egy szimulált
környezetet, majd itt futtatják az adott
programot a &man.chroot.8;
segítségével. (Ekkor az
iménti könyvtár lesz a
gyökérkönyvtár az adott
folyamat számára, nem pedig a rendszer
igazi gyökere.)Másik szintén gyakori
megoldás a használt
állományrendszerek
írásvédett
csatlakoztatása, amely felett aztán
kialakítanak a program számára
egy látszólag írható
réteget. Ilyenkor a program teljesen
úgy érzékeli, hogy képes a
rendszerben elérhetõ
állományokat módosítani,
azonban egyedül csak saját maga
látja ezeket, a rendszerben futó
többi program viszont nem
feltétlenül.Ezeket a járókákat
általában úgy szokták
felépíteni, hogy a
felhasználók (vagy a
támadók) számára teljesen
észrevétlenek legyenek.A &unix; két alapvetõ
járókát valósít meg. Az
egyik a futó programok, a másik pedig a
felhasználói azonosítók
szintjén mûködik.Futása közben minden &unix; program teljesen
elszigetelt minden más &unix; programtól,
így az egyik nem képes
módosítani a másik
memóriában tárolt adatait. A
&windows;-tól eltérõen, ahol
ugyebár az egyik program könnyedén el
tudja érni egy másik
memóriaterületét, ezért a program
nem képesek egymásban kárt
tenni.A &unix; alatt futó programok mindig egy adott
felhasználóhoz tartoznak. Ha ez nem a
root felhasználó, akkor
azzal lényegében egy tûzfalat hozunk
létre a különbözõ
felhasználók által birtokolt folyamatok
között. A felhasználók
azonosítói emellett segítenek a lemezen
tárolt adatokat is elszigetelni
egymástól.Mi az a biztonsági szint (securelevel)?A biztonsági szintek egy rendszermagon belül
megvalósított védelmi módszert
képviselnek. A pozitív
értékû biztonsági szintek
esetén a rendszermag korlátoz bizonyos
feladatokat, amelyeket ilyenkor még a
rendszeradminisztrátor (vagyis a
root felhasználó) sem
képes elvégezni. Az írás
pillanatában a biztonsági szintek, több
más dolog mellett, a következõk
szabályozására alkalmasak:a különbözõ
állományjelzõk, például
az schg (a system
immutable jelzés)
törlése;a rendszermag memóriájának
elérése a /dev/mem
és /dev/kmem
eszközökön keresztül;a rendszermag moduljainak
betöltése;a tûzfal szabályainak
módosítása.A jelenleg futó rendszer biztonsági
szintjét a következõ parancs
segítségével lehet
lekérdezni:&prompt.root; sysctl kern.securelevelA parancs eredménye az adott &man.sysctl.8;
változó (vagyis esetünkben a
kern.securelevel) és annak
értéke lesz, amely egy szám. Ez
utóbbi adja meg a biztonsági szint
aktuális értékét. Amennyiben ez
pozitív (vagyis nullánál nagyobb),
akkor érvényben vannak a biztonsági
szintekhez kapcsolódó bizonyos
korlátozások.Egy mûködõ rendszer biztonsági
szintjét nem lehet csökkenteni, hiszen ezzel
tulajdonképpen hatástalanná
tennénk. Ha olyan feladatot akarunk
végrehajtani, amely nem pozitív
biztonsági szintet igényel
(például az alaprendszer
frissítése vagy a dátum
átállítása), akkor ahhoz
elõször módosítanunk kell az
/etc/rc.conf állományt
(lásd kern_securelevel és
kern_securelevel_enable
változók), majd újraindítani a
rendszert.A biztonsági szintekkel és rájuk
vonatkozó információkkal kapcsolatban
olvassuk el az &man.init.8; man oldalt.A biztonsági szintek nem
feltétlenül jelentenek minden
problémára tökéletes
megoldást. Rentegeg ismert
hátulütõvel rendelkeznek, és
gyakran a biztonság hamis érzetét
keltik.Ezzel kapcsolatban az egyik legnagyobb gond, hogy
csak abban az esetben mûködik rendesen a
rendszer, ha a rendszerindítás
során a biztonsági szintek
beállításáig minden
állományt levédünk. Ha a
támadó képes lefuttatni a
saját programját még a
biztonsági szint beállítása
elõtt (amely viszont elég késõn
történik meg, hiszen a
rendszerindítás során számos
olyan dolog feladat van, amely nem végezhetõ
el magasabb biztonsági szinteken), akkor azzal az
egész védelmi módszer
hatástalanítható. Habár a
rendszerindítás folyamán
felhasznált állományok
biztonságba helyezése technikailag
egyáltalán nem lehetetlen,
nehezebbé válik tõle a rendszer
karbantartása, mivel ilyenkor az egész
rendszert át kell állítanunk
legalább egyfelhasználós
módba és úgy
módosítani a konfigurációs
állományokat.Ezt és az ehhez hasonló
problémák gyakran felmerülnek a
levelezési listákon,
különösen a &a.security;
archívumaiban. Ezen a
funkción keresztül nézhetünk
után a téma részletesebb
tárgyalásának.
Néhányan reménykednek, hogy a
biztonsági szinteket hamarosan leváltja
valami sokkal finomabb beállítási
lehetõségekkel rendelkezõ
megoldás, azonban a dolgok még
eléggé homályosak ebbõl a
szempontból.Figyelmeztettünk mindenkit!A BIND (named)
különféle nagyobb sorszámú
portokat használ. Miért?A BIND a kimenõ kérésekhez
véletlenszerûen kiválaszt egy nagyobb
sorszámú portot. A legújabb
változataiban már minden egyes
kéréshez külön
véletlenszerûen keres új UDP portot. Ez
bizonyos hálózati konfigurációk
esetén problémákhoz vezethet,
különösen olyankor, amikor a
beérkezõ UDP csomagokat egy tûzfal
megállítja. A tûzfalak által
blokkolt porttartományok használatát az
avoid-v4-udp-ports vagy az
avoid-v6-udp-ports
beállítással tilthatjuk le a program
számára.Ha ezt a portot (mint például az 53) az
/etc/namedb/named.conf
állományban a
query-source vagy a
query-source-v6
beállításokkal adjuk meg explicit
módon, akkor a program nem fogja
véletlenszerûen váltogatni a portokat.
Határozottan javasoljuk, hogy ezekkel az
opciókkal ne adjunk meg elõre
rögzített portokat.Mindenesetre örülünk, hogy ezt is valaki
megkérdezte! Hiába, nem árt néha
nézegetni a &man.sockstat.1; kimenetét
és észrevenni benne néhány
furcsaságot.A sendmail a
szabványos 25-ös port mellett az 587-es portot
használja! Miért?A sendmail újabb
verzióiban felfedezhetõ
levélküldési lehetõségek az
587-es portot használják. Jelenleg ezt
még nem sokan használják ki, de
növekszik a népszerûsége.Kié az a nullás felhasználói
azonosítójú toor
fiók? Betörtek a gépre?Ne aggódjunk! A toor egy
alternatív rendszergazdai
hozzáférés (a toor a
root visszafelé). Korábban
csak a &man.bash.1; parancsértelmezõ
telepítésekor jött létre, azonban
manapság már alapértelmezés
szerint létrejön. A nem szabványos
parancsértelmezõk számára
találták ki, így nem a
root alapértelmezett
parancsértelmezõjét kell
megváltoztatnunk. Ez különösen olyan
parancsértelmezõk esetén fontos, amelyek
nem részei az alaprendszernek (például
a portként vagy csomagként telepített
parancsértelmezõk esetén) és
ezért a /usr/local/bin
könyvtárba fognak kerülni. Ez a
könyvtár alapértelmezés szerint
azonban egy külön állományrendszeren
található. Ha a root
parancsértelmezõje viszont a /usr/local/bin
könyvtárban lenne, miközben a /usr (vagy bármelyik
más állományrendszer, amely az
imént említett könyvtárat
tartalmazza) nem csatlakoztatható valamilyen
oknál fogva, akkor a root nem
lenne képes bejelentkezni és kijavítani
a problémát. (Noha amikor
újraindítjuk a rendszerünket
egyfelhasználós módban, akkor a
rendszer rá fog kérdezni, hogy melyik
parancsértelmezõt akarjuk
használni.)Egyesek nem szabványos
parancsértelmezõn keresztül a
toor felhasználóval
végzik el a root mindennapi
teendõit, így a szabványos
parancsértelmezõt csak a vészhelyzetekre
tartogatják. Alapértelmezés szerint a
toor felhasználóval nem
tudunk bejelentkezni, mivel nincs jelszava, ezért ha
használni akarjuk, akkor elõször
jelentkezzünk be a root
felhasználóval, majd állítsunk
be neki egy jelszót.A suidperl parancs miért nem
mûködik rendesen?Biztonsági okokból a
suidperl parancs
alapértelmezés szerint nem kerül
telepítésre. Ha forrásból
frissítjük rendszerünket és azt
szeretnénk, hogy ennek során a
suidperl is leforduljon, akkor a
perl fordításának
megkezdése elõtt vegyük fel a
ENABLE_SUIDPERL=true
sort az /etc/make.conf
állományba.PPPNem mûködik a &man.ppp.8;. Mit lehet a
gond?Elsõként mindenképpen olvassuk el a
&man.ppp.8; man oldalt és a kézikönyv
PPP-vel
foglalkozó részét. A
következõ paranccsal engedélyezzük a
naplózást:set log Phase Chat Connect Carrier lcp ipcp ccp commandEzt a parancsot a &man.ppp.8; parancssorában vagy
az /etc/ppp/ppp.conf
konfigurációs állományban kell
megadnunk (leginkább a default
szakasz elejére érdemes betennünk).
Gondoskodjunk róla, hogy az
/etc/syslog.conf állomány
(lásd &man.syslog.conf.5;) tartalmazza az
alábbi sort, illetve az
/var/log/ppp.log állomány
létezzen:!ppp
*.* /var/log/ppp.logA napló segítségével
már több mindent ki tudunk deríteni a
&man.ppp.8; mûködésérõl. Ne
aggódjunk, ha nem értünk belõle
semmit. Kérjünk segítséget
másoktól, nekik minden bizonnyal
segíteni fog a probléma
felderítésében.A &man.ppp.8; miért bontja a vonalat, amikor
elindul?Ilyen általában azért
történik, mert nem tudta feloldani a
hálózati nevet. Ezt a legkönnyebben
úgy tudjuk orvosolni, ha az
/etc/host.conf állományba
elõre rakjuk a hosts sort,
így a névfeloldó elõször az
/etc/hosts állománnyal
fog próbálkozni. Ezután a
/etc/hosts állományba
vegyük fel a helyi gépet. Ha nincs helyi
hálózatunk, akkor így írjuk
át a localhost sort:127.0.0.1 ize.minta.com ize localhostMinden más esetben egyszerûen csak
vegyünk fel egy újabb bejegyzést a
gépünkhöz. Ennek pontosabb
részleteivel kapcsolatban nézzük meg a
megfelelõ man oldalakat.Ha mindent jól csináltunk, akkor a
ping -c1 `hostname` parancs hiba
nélkül tér vissza.A &man.ppp.8; miért nem tárcsáz
-auto módban?Elõször is ellenõrizzük, hogy
létezik az alapértelmezett útvonal. A
netstat -rn parancs (lásd
&man.netstat.1;) kiadása után
nagyjából a következõ két
bejegyzést kell látnunk:Destination Gateway Flags Refs Use Netif Expire
default 10.0.0.2 UGSc 0 0 tun0
10.0.0.2 10.0.0.1 UH 0 0 tun0Feltételezzük, hogy a
kézikönyvbõl, a man oldalról vagy
ppp.conf.sample
állományból másoltuk ki ezeket a
címeket. Ha nincs alapértelmezett
útvonalunk, akkor annak az lehet az oka, hogy a
ppp.conf állományba
elfelejtettük felvenni a HISADDR
kulcsszót.Az alapértelmezett útvonal
hiányának másik oka lehet még, ha
az /etc/rc.conf
állományban (lásd &man.rc.conf.5;)
beállítottunk egy alapértelmezett
átjárót, de elfelejtettük az
ppp.conf állományba
betenni a következõ sort:delete ALLEbben az esetben menjünk vissza a
kézikönyv A rendszer végsõ beállítása
címû részéhez.Mit jelent a No route to host
hibaüzenet?Általában azért jelentkezik, mert
az /etc/ppp/ppp.linkup
állományban nem adtuk meg az
alábbiakat:MYADDR:
delete ALL
add 0 0 HISADDRErre csak akkor van szükségünk, ha
dinamikus IP-címünk van, vagy nem ismerjük az
átjáró címét. Ha az
interaktív módot használjuk, akkor
ehhez a következõket kell begépelni
csomag módba lépés után (a
csomag módot a csupa nagybetûs
PPP jelzi a parancssorban):delete ALL
add 0 0 HISADDRA kézikönyv A PPP és a dinamikus IP-címek
címû részében olvashatunk
errõl bõvebben.Miért szakad meg a kapcsolat 3 perc
után?A PPP alrendszer alapértelmezett lejárati
ideje 3 perc. Ezt a beállítást a
következõ sor megadásával tudjuk
módosítani:set timeout NNNahol az NNN
másodpercekben megadja a kapcsolat
lezárása elõtti inaktivitás
maximális idejét. Ha az
NNN értéke nulla,
akkor a kapcsolat idõtúllépés
miatt soha nem fog magától megszakadni. Ezt a
parancsot a ppp.conf
állományba tudjuk felvenni, vagy
interaktív módban a parancssorban
gépelhetjük be. Emellett menet közben is
állítani tudjuk ezt az értéket,
ha a ppp szerverre a
&man.telnet.1; vagy a &man.pppctl.8;
segítségével rácsatlakozunk.
Errõl a &man.ppp.8; man oldal ad részletesebb
tájékoztatást.A kapcsolat miért szakad meg nagyobb
terhelést alatt?Ha beállítottuk a Link Quality Reporting
(LQR) használatát, akkor elõfordulhat,
hogy túlságosan sok csomag veszik el a
gépünk és a másik oldal
között. A &man.ppp.8; ezért a vonalat
rossznak érzékeli és bontja. A
&os; 2.2.5 változata elõtt az LQR
alapértelmezés szerint engedélyezett
volt. Az LQR így tiltható le:disable lqrA kapcsolat miért szakad meg
véletlenszerûen?Néha elõfordulhat, hogy a zajos telefonvonal
esetén vagy a
hívásvárakoztatás
használatakor a modem bontja a vonalat, mivel
(helytelenül) azt hiszi, hogy nincs kapcsolat.Manapság a legtöbb modemen
általában be lehet valahogy
állítani, hogy mennyire legyenek
elnézõek a kapcsolat ideiglenes
megszakadásával szemben.
Például egy &usrobotics; &sportster;
esetén ezt tizedmásodpercekben mérik az
S10 regiszter
segítségével. A modemünk ilyenkor
tehát úgy tehetõ sokkal
toleránsabbá, ha a következõ
hívási beállítást
adjuk:set dial "...... ATS10=10 OK ......"További részleteket a modem
kézikönyvébõl tudhatunk meg.A kapcsolat miért fullad le
véletlenszerûen?Sokan tapasztalják, hogy a kapcsolat minden
különösebb magyarázat nélkül
lefullad. Ilyenkor elsõként azt érdemes
tisztázni, hogy az összeköttetés
melyik oldalán történt a vonal
bontása.Ha belsõ modemet használunk, akkor
próbáljuk meg a &man.ping.8; paranccsal
ellenõrizni, hogy a modem TD
lámpája villog-e az adatok
küldésekor. Amennyiben igen (miközben az
RD lámpa viszont nem), akkor a
gond a vonal másik végén lesz. Ha
viszont a TD nem villog, akkor a
probléma a mi oldalunkon áll fenn. A
belsõ modemek esetében a
ppp.conf állományban a
set server parancsot is érdemes
megadnunk, így amikor a kapcsolat
leállását tapasztaljuk, a
&man.pppctl.8; segítségével rá
tudunk csatlakozni a &man.ppp.8; démonra. Ha a
hálózati kapcsolat ekkor hirtelen erõre
kapna (mivel rácsatlakoztunk
kívülrõl) vagy egyáltalán nem
tudunk csatlakozni (feltételezve, hogy a set
socket parancs sikeresen lefutott az
induláskor), akkor a probléma még
mindig nálunk lesz. Ha viszont sikerül
csatlakoznunk és a vonallal még mindig gondok
vannak, akkor próbáljuk a set log
local async parancs használatával
engedélyezni a helyi aszinkron
naplózást, majd egy másik
konzolból a &man.ping.8; parancs
segítségével kezdjük el
használni az összeköttetést. Az
aszinkron naplózás jelezni fogja, ha
sikerül adatokat átvinni és fogadni a
kapcsolaton keresztül. Ha ilyenkor nem látunk
visszafele érkezõ adatokat, akkor az arra utal,
hogy a gond a vonal távoli végén
van.Miután sikeresen kiderítettük, hogy
az adott probléma helyi vagy távoli, két
lehetõségünk van:Amennyiben távoli, olvassuk el a
válaszát.Amennyiben helyi, olvassuk el a válaszát.A vonal túlsó végérõl
nem érkezik válasz. Mi lehet tenni?Ezzel szemben nagyon keveset tudunk mi,
felhasználók tenni. A legtöbb
internetszolgáltató egyszerûen nem
hajlandó segítséget nyújtani
abban az esetben, ha nem valamelyik µsoft;
operációs rendszert használjuk. A
ppp.conf állományunkban a
enable lqr sor megadásával
engedélyezni tudjuk a &man.ppp.8;
számára, hogy észlelhesse a
távoli hibákat és bontsa a vonalat, de
ez a vizsgálat viszonylag idõigényes
és ennélfogva nem túlságosan
hasznos. A szolgáltatónknak pedig ne nagyon
emlegessük, hogy felhasználói PPP-t
futtatunk.Elõször próbáljunk meg letiltani
mindenféle tömörítést a
következõ sor megadásával:disable pred1 deflate deflate24 protocomp acfcomp shortseq vj
deny pred1 deflate deflate24 protocomp acfcomp shortseq vjKapcsolódjunk újra és
ellenõrizzük, hogy továbbra is
mûködõképes a kapcsolat. Ha ennek
hatására javul a helyzet vagy a
probléma teljesen megoldódik, akkor a
beállítások egyenkénti
próbálgatásával keressük
meg, hogy melyik okozta a gondot. Ez már
elegendõ lesz ahhoz, hogy komolyabban felvegyük a
kapcsolatot a szolgáltatónkkal (habár
ebbõl gyorsan ki fog derülni, hogy nem µsoft;
terméket használunk).Mielõtt szólnánk a
szolgáltatónknak, a gépünkön
engedélyezzük az aszinkron
naplózást és várjuk meg,
amíg a kapcsolat újra megszakad. Erre nem
árt felkészülnünk, mert viszonylag
sok tárhelyet igényel. Innen majd a
portról utoljára olvasott adat lesz a
lényeges. Ez általában szöveges
adat és akár a probléma konkrét
okára is utalhat (Memory
fault, Core
dumped?).Ha segítõkész
szolgáltatót választottuk, akkor a
naplózást akár az õ oldalunkon is
engedélyezhetjük, így amikor a vonal
megszakad, az õ szemszögükbõl is
képesek leszünk elemezni a
problémát. Ilyen esetben nyugodtan
küldjünk egy levelet &a.brian;
címére vagy kérjük meg a
szolgáltatónkat, hogy közvetlenül
vele tárgyaljon.A &man.ppp.8; teljesen megállt. Mi lehet
tenni?A legjobban úgy járunk, ha a &man.ppp.8;
programot nyomkövetési
információkkal fordítjuk újra,
majd a &man.gdb.1; segítségével
lekérünk egy hívási láncot
az éppen megakadt ppp
példánytól. A
ppp alkalmazást a
következõ parancsokkal tudjuk úgy
újrafordítani, hogy tartalmazza a
kívánt információkat:&prompt.root; gdb ppp `pgrep ppp`Ezt követõen a gdb
parancssorában a bt és
where parancsok
segítségével hozzá tudunk jutni
a hívási lánchoz. Mentsük el
valahova a gdb által
kinyert adatokat, majd a detach
paranccsal váljunk le a futó programról
és a quit
begépelésével lépjünk ki a
gdb programból.Végezetül az elmentett eredményeket
küldjük el &a.brian; címére.Miért nem történik semmi a
Login OK! üzenet után?A &os; 2.2.5 elõtti kiadásaiban a
&man.ppp.8; az összeköttetés
létrejötte után megvárta, hogy a
távoli pont kezdeményezze a
kapcsolatvezérlõ protokoll (Line Control
Protocol, LCP) használatát. Sok
szolgáltató azonban nem csinál ilyet,
ehelyett inkább a klienstõl várják
mindezt. Az LCP kezdeményezését
így kényszeríthetjük ki a
&man.ppp.8; használata során:set openmode activeÁltalában semmilyen gond nem
származik abból, ha a mind a két
oldal kezdeményez, így az
openmode alapértelmezés
szerint active
értékû. A következõ
szakaszban azonban bemutatjuk mikor gondot
okoz a használata.Folyamatosan Magic is same
hibák jelennek meg. Ez mire utal?Csatlakozás után idõnként
elõfordulhat, hogy magic is the
same hibaüzeneteket látunk a
naplóban. Ezek az üzenetek bizonyos esetekben
teljesen ártalmatlanok, máskor viszont
akár komolyabb problémákat is jelezhet.
A legtöbb PPP implementáció nem él
túl egy ilyen hibát, és még ha
látszólag létre is jön ilyenkor a
kapcsolat, folyamatosan konfigurációs
kérések és válaszok
jönnek-mennek a naplóban egészen addig,
amíg a &man.ppp.8; végül fel nem adja
és lezárja a kapcsolatot.Ez általában olyan szervereken jelenik
meg, ahol nem elég gyorsak a lemezek és minden
kapcsolathoz elindítanak egy &man.getty.8; és
a bejelentkezéskor vagy azt következõ
elindítják a &man.ppp.8; programot. Egyes
visszajelzések szerint ilyen egyébként
gyakran elõfordul a slirp használatakor. A
problémát egyébként a
&man.getty.8; és a &man.ppp.8; indítása
között eltelt idõ okozza, amikor a kliens
oldalán futó &man.ppp.8; elkezdi küldeni
a kapcsolatvezérlõ (Line Control Protocol, LCP)
csomagokat. Mivel ilyenkor az ECHO még mindig
aktív a szerver adott portján, a kliens
&man.ppp.8; a saját csomagjainak
tükrözõdését
fogja látni.Az LCP beállításának
része az összeköttetés két
oldalán egy-egy bûvös szám
(magic number)
megállapítása, amellyel ezután
észlelhetõek az ilyen
tükrözõdések. A
protokoll szerint amikor a két pont
megpróbálja ugyanazt a bûvös
számot használni, akkor visszautasítja
(NAK jelzést küld) és egy másikat
választ. Ha ilyenkor még a szerver
portján aktív az ECHO, akkor a kliens oldali
&man.ppp.8; azt tapasztalja, hogy elkezd LCP csomagokat
küldeni, majd mivel ugyanazt kapja vissza, erre egy NAK
jelzést válaszol. Ugyanígy
látja magát a NAK jelzést (aminek
hatására a &man.ppp.8; megváltoztatja a
bûvös számát) is. Ennek
eredményeképpen hirtelen nagy
mennyiségû
bûvösszám-váltás keletkezik,
ami pedig szépen felhalmozódik a szerver
terminálpufferében. Ahogy a &man.ppp.8;
végre elindul a szerveren, elönti ez a rengeteg
információ, aminek alapján
sikertelennek ítéli meg az LCP
beállítását és feladja a
további próbálkozást.
Eközben a kliens számára megszûnnek
a visszaverõdõ csomagok és csak annyit
lát, hogy a szerver bontja a kapcsolatot.Ezt úgy tudjuk elkerülni, ha a
ppp.conf állományban a
távoli pontra bízzuk az
beállítás
kezdeményezését:set openmode passiveEnnek hatására a &man.ppp.8;
megvárja, hogy a szerver kezdeményezze az LCP
beállítását. Egyes szerverek
azonban sosem teszik meg ezt. Ilyenkor valami ilyesmit
tudunk tenni:set openmode active 3Így a &man.ppp.8; 3 másodpercig
passzív marad, majd csak ezután kezd el LCP
kérésket küldeni. Ha a távoli
pont eközben küld valamilyen kérést,
az &man.ppp.8; azonnal válaszol rá és
nem várja végig a 3 másodperces
idõtartamot.Az LCP beállítása egészen a
kapcsolat befejezõdéséig
folytatódik. Mi lehet a probléma?A &man.ppp.8; programban jelenleg van egy olyan
hibásan implementált jellemzõ, ahol az LCP,
CCP és IPCP válaszokat nem
társítja az eredeti kérésekhez.
Ennek következményeképpen, ha az egyik
PPP implementáció 6 másodperccel
lassabb a másik oldalnál, akkor az még
két további LCP konfigurációs
kérést is küld, ami viszont
végzetesnek bizonyul.Vegyünk például két
implementációt, az A és
a B pontokat. Az A
már közvetlenül a csatlakozás
után LCP kéréseket kezd el
küldeni, miközben a B csak
7 másodperc múlva tud elindulni. Mire
végre a B pont is elindul, addigra
az A már kiküldött 3 LCP
kérést. Most feltételezzük, hogy
nincs ECHO, máskülönben az elõzõ
szakaszban leírt, bûvös számokkal
kapcsolatos problémába
ütköznénk. A B ekkor
tehát küld egy kérést, majd
nyugtázza az A ponttól kapott
korábbi kérést. Ennek
hatására az A pont
OPENED állapotba megy át,
újra küld és nyugtázza az
elõzõ kérést B
felé. Eközben a B
további két nyugtázást küld
az A pontról kapott további
két kérésre, a B
indulása elõttrõl. A B
ekkor megkapja az A elsõ
nyugtáját és átvált
OPENED állapotba. Az
A ekkor megkapja a második
nyugtát a B ponttól és
visszavált REQ-SENT
állapotba, majd az RFC szerint elküld
(elõre) egy újabb kérést. Ekkor
megkapja a harmadik nyugtát és
OPENED állapotba vált.
Eközben a B megkapja elõre
küldött kérést a A
ponttól, amelynek hatására
ACK-SENT állapotba vált
vissza, és az RFC szerint ismét küld egy
(második) kérést és egy
nyugtázást. Az A erre
megkapja a kérést, visszavált
REQ-SENT állapotban és
küld egy újabb kérést. Ekkor
közvetlenül megkapja a
rákövetkezõ nyugtázást
és átvált OPENED
állapotba.Ez egészen addig folytatódik, amíg
az egyik oldal rá nem eszmél, hogy ennek nincs
túlságosan sok értelme és
feladja a próbálkozást.Ez legkönnyebben úgy kerülhetõ el,
ha ilyenkor az egyik oldalt passive
típusúra állítjuk, vagyis az
egyik oldalon várunk egy keveset a
beállítás
kezdeményezésére. Ezt a
következõ paranccsal lehet megoldani:set openmode passiveÓvatosan bánjunk ezzel a
paraméterrel! A beállítás
kezdeményezésének
várakoztatási idejét a
következõ paraméterrel tudjuk
megadni:set stopped NHasználhatjuk viszont ezt a parancsot is (ahol
N adja meg, hogy mennyi
másodperc teljen el a beállítás
megkezdése elõtt):set openmode active NAz ezzel kapcsolatos további részleteket a
man oldalon olvashatjuk.Miért akad meg a &man.ppp.8;, ha egy
külsõ parancsot adunk ki alatta?A shell vagy !
parancsok végrehajtásakor a &man.ppp.8;
elindít egy parancsértelmezõt (illetve ha
paramétereket is adtunk meg, akkor a &man.ppp.8;
átadja azokat is), majd megvárja annak
befejezõdését. Ha a parancs
futtatása közben éppen egy PPP
kapcsolatot akartunk használni, akkor erre az
idõre az elõbbiek miatt látszólag
meg fog állni. Ez tehát azért
történik, mert a &man.ppp.8; megvárja a
parancs lefutását.Ha nem akarjuk megvárni a parancs
befejezõdését, akkor inkább
használjuk a !bg parancsot. Ennek
hatására az adott parancs a
háttérben fog lefutni és a &man.ppp.8;
képes lesz folyamatosan szemmel tartani az
összeköttetést.A &man.ppp.8; null-modem kábel
használatakor miért nem lép ki
soha?A &man.ppp.8; ilyen esetekben nem képes
magától megállapítani, hogy mikor
bontották a vonalat. Ennek oka a tûk null-modem
kábelben kiosztott szerepében keresendõ.
Amikor ilyen típusú kapcsolattal dolgozunk, a
következõ sor megadásával ne
felejtsük el engedélyezni az LQR
használatát:enable lqrHa a távoli pont LQR csomagokat küld, akkor
a &man.ppp.8; alapértelmezés szerint fogadja
azokat.A &man.ppp.8; miért tárcsáz
látszólag minden különösebb ok
nélkül
módban?Amennyiben a &man.ppp.8; szándékainkkal
szemben váratlanul kezdene el tárcsázni,
akkor keressük meg kiváltó okát
és használjunk hívási
szûrést (Dial filter, dfilter) ennek
megelõzésére.A tárcsázás okát a
következõ sor használatával tudjuk
kideríteni:set log +tcp/ipEnnek hatására a kapcsolaton
keresztüláramló összes forgalmat
naplózni fogjuk. Így a legközelebb,
amikor a vonal hirtelen aktív lesz, a
hozzá tartozó idõbélyegek
alapján könnyen elõ tudjuk keresni, hogy
pontosan miért is történt.Az automatikus tárcsázást bizonyos
esetekben le tudjuk tiltani. Ez általában egy
olyan probléma, amely a névfeloldások
miatt keletkezik. Úgy tudjuk megakadályozni,
hogy a névfeloldások
felépítsék a kapcsolatot (ami viszont
nem gátolja abban a &man.ppp.8;
programot, hogy egy már meglevõ kapcsolaton
keresztül küldjön ilyen csomagokat), ha az
alábbi beállításokat adjuk
meg:set dfilter 1 deny udp src eq 53
set dfilter 2 deny udp dst eq 53
set dfilter 3 permit 0/0 0/0Ezek az értékek nem minden esetben
megfelelõek számunkra, hiszen ezzel együtt az
igény szerinti tárcsázás
kényelmét is szûkítjük, mivel
a legtöbb program közvetlenül
névfeloldással kezd, mielõtt komolyabb
hálózati forgalmat bonyolítana
le.A névfeloldás esetében
igyekezzünk kideríteni, hogy pontosan melyik
program is próbál hálózati
neveket feloldatni. Az esetek
többségében
valószínûleg a &man.sendmail.8; lesz a
bûnös. Amennyiben ez a helyzet, akkor az
sendmail démonnak a
saját konfigurációs
állományában kell
beállítanunk, hogy ne oldasson fel
hálózati neveket. Az érintett
konfigurációs állomány
módosításának pontos
részleteirõl a kézikönyv Levelezés
betárcsázós kapcsolattal
címû szakszában olvashatunk
bõvebben. Továbbá az
.mc állományunkba a
következõ sort is érdemes
felvennünk:define(`confDELIVERY_MODE', `d')dnlEzzel a sendmail
beindításáig mindent egy sorban fog
eltárolni (általában a
sendmail démont a
paraméterekkel
szokták meghívni, ami arra utasítja,
hogy 30 percenként dolgozza fel a sorát)
vagy amíg a sendmail
parancs le nem fut
(például a ppp.linkup
állományból).Mit jelentenek a CCP hibák?A naplóban folyamatosan a következõ
üzeneteket lehet látni:CCP: CcpSendConfigReq
CCP: Received Terminate Ack (1) state = Req-Sent (6)Ilyenek azért keletkeznek, mert a &man.ppp.8; a
Predictor1
tömörítési eljárást
próbálja meg beállítani, azonban
a távoli pont egyáltalán semmilyen
tömörítést nem akar
használni. Az ilyen üzenetek többnyire
ártalmatlanok, de ha el akarjuk tüntetni ezeket,
akkor próbáljuk meg a következõ
módon kikapcsolni a Predictor1
tömörítés
használatát:disable pred1A &man.ppp.8; miért nem naplózza a
kapcsolat sebességét?A modemmel végzett teljes
beszélgetés
szövegének
rögzítéséhez a
következõket kell engedélyezni:set log +connectEnnek eredményeképpen a &man.ppp.8;
egészen az utolsóként lekért
karakterláncig naplóz mindent.Ha PAP vagy CHAP hitelesítést
használunk (ezért a CONNECT
parancs kiadása után már nincs semmi
mondanivalónk a
hívószkriptben, tehát nincs
set login szkript), és
szeretnénk látni a csatlakozási
sebességet, ne felejtsük el utasítani a
&man.ppp.8; programot, hogy a teljes
CONNECT sort kérje le, valahogy
így:set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 4 \
\"\" ATZ OK-ATZ-OK ATDT\\T TIMEOUT 60 CONNECT \\c \\n"Itt most megkapjuk a CONNECT sort,
ezután nem küldünk semmit, majd
várunk egy soremelést, aminek
hatására a &man.ppp.8; arra
kényszerül, hogy a teljes
CONNECT választ beolvassa.A &man.ppp.8; miért hagyja figyelmen
kívül a \ karaktereket a
szkriptekben?A ppp a
konfigurációs állományokból
minden sort külön beolvas, ezért a
set phone "123 456 789" és
hozzá hasonló karakterláncok
esetén képes felismerni, hogy a megadott
számok valójában
egyetlen paramétert
formáznak. A "
megadásához a visszaper karaktert
(\) kell használnunk.Amikor tárcsázásért
felelõs értelmezõ beolvassa az egyes
paramétereket, újraértelmezi ezeket
olyan speciális helyettesítési
szekvenciák után kutatva, mint
például a \P vagy
\T (részletesebben lásd a
man oldalon). A kettõs elemzés miatt
nekünk is a megfelelõ számban kell
megadnunk ezeket a helyettesítendõ
karaktereket.Ha tehát egy \ karaktert
szeretnénk átküldeni a modemünknek,
akkor nagyjából valami ilyesmit kellene
írnunk:set dial "\"\" ATZ OK-ATZ-OK AT\\\\X OK"Ennek az eredménye a következõ
lesz:ATZ
OK
AT\X
OKVagy:set phone 1234567
set dial "\"\" ATZ OK ATDT\\T"Ez pedig a következõ szekvenciát
adja:ATZ
OK
ATDT1234567A &man.ppp.8; miért küld
Segmentation Fault hibát,
miközben nem is keletkezik
ppp.core állomány?A ppp (vagy más
hasonló program) elméletileg soha nem hoz
létre .core
állományt. Mivel a &man.ppp.8;
tulajdonképpen a nullás
felhasználói azonosítóval fut,
az operációs rendszer soha nem fogja a
&man.ppp.8; memórialenyomatát
leállítása elõtt a lemezre
menteni. Ha viszont &man.ppp.8; mûködése
valóban leáll egy szegmentációs
hiba vagy bármilyen más
.core állományt
eredményezõ jelzés miatt,
és valóban a legfrissebb
változatát használjuk (lásd a
fejezet elejét), akkor a következõt
tehetjük:&prompt.root; cd/usr/src/usr.sbin/ppp
&prompt.root; echoSTRIP= >> /etc/make.conf
&prompt.root; echoCFLAGS+= >> /etc/make.conf
&prompt.root; makeinstallcleanA fenti parancsokkal telepíteni tudjuk a
&man.ppp.8; egy nyomonkövethetõ
változatát. A &man.ppp.8;
futtatásához root
felhasználónak kell lennünk, mivel minden
korábbi engedélyét
felülírtuk az elõbbiek során. A
&man.ppp.8; indításakor ne felejtsük el
megjegyezni pontosan az aktuális
könyvtárat sem.Innentõl kezdve, amikor a &man.ppp.8; kap egy
szegmentációs hibára vonatkozó
jelzést, létre fog hozni egy
ppp.core nevû
állományt. Ennek birtokában a
következõt kell csinálnunk:&prompt.user; su
&prompt.root; gdb /usr/sbin/ppp ppp.core(gdb)bt
.....
(gdb)f 0
....
(gdb)i args
....
(gdb)l
.....Az így beszerzett információkat
mellékelve nagyobb
valószínûséggel kaphatunk
választ az ezzel kapcsolatos
kérdésünkre.Ha járatosak vagyunk a &man.gdb.1;
használatában, akkor a
.core állományban
további részletek és
információk utáni is kutathatunk,
például mi okozta a hibát, milyen
változóknak ekkor milyen értékei
voltak stb.Miért nem csatlakozik soha az a program, amely a
hívást kezdeményezte
módban?Ez korábban egy ismert probléma volt a
&man.ppp.8; használatával kapcsolatban, amikor
dinamikus helyi IP-címet akart
beállítani
módban. Ez a hiba az újabb
változatokban már nem nincs meg (a man oldalon
keressünk rá az iface
részre).A gondot az okozta, hogy amikor a
tárcsázást elindító
program meghívja a &man.connect.2;
rendszerhívást, akkor a &man.tun.4;
interfészhez tartozó IP-cím a
végpontot képviselõ sockethez
társul. A rendszermag létrehozza az elsõ
kimenõ csomagot és kiírja a &man.tun.4;
eszközre. A &man.ppp.8; ekkor beolvassa a csomagot
és felépíti a kapcsolatot. Ha a
&man.ppp.8; dinamikus IP-cím
kiosztásának eredményeképpen
ilyenkor az interfész címe megváltozik,
akkor azzal egyidõben az eredeti socket végpont
érvénytelenné válik. Így
a távoli végpont felé küldött
további csomagok általában
eldobódnak. Ha valahogy mégis
eljutnának a céljukhoz, a válasz
már semmiképpen sem érkezhet meg, mivel
a küldéshez használt IP-címnek
már nem az adott gép a tulajdonosa.Számos elméleti
megközelítés létezik az
imént felvázolt probléma
megoldására. A legszebb az lenne, ha a
távoli pont lehetõség szerint a
korábban használt IP-címet
osztaná ki újra. A &man.ppp.8; jelenlegi
változata pontosan ugyanezt teszi, viszont a
legtöbbi implementáció már
nem.Részünkrõl az bizonyulna a
legegyszerûbb megoldásnak, ha a &man.tun.4;
intefész IP-címe egyáltalán nem
változhatna meg, hanem helyette menet közben az
összes kimenõ csomag, köztük
természetesen a forrás IP-címe az
interfész IP-címérõl az
idõközben beállított IP-címre
változna. Ez lényegében az, amit a
&man.ppp.8; legújabb változataiban
felbukkanó iface-alias
opció is csinál (a &man.libalias.3; és
a &man.ppp.8; kapcsolója
segítségével): karbantartja az
összes korábban használt interfész
címét és átfordítja
ezeket az utoljára beállított
címre.A másik (és
valószínûleg a sokkal
megbízhatóbb) lehetõség egy olyan
rendszerhívás implementálása
lenne, amely képes az összes használatban
levõ socketet egyik IP-címrõl a
másik IP-címre
átállítani. A &man.ppp.8; ekkor fel
tudná használni ezt arra, hogy
módosítsa az összes addig futó
program socketjét az új IP-cím
beállításakor. Ugyanezzel a
rendszerhívással a DHCP
kliensek is képesek lennének
átállítani a socketjeiket.Lehetõségünk van még
IP-cím nélkül is létrehozni
interfészeket. A kimenõ csomagok ekkor a
255.255.255.255
IP-címet használnák egészen
addig, amíg az elsõ
SIOCAIFADDR &man.ioctl.2;
rendszerhívás le nem zajlik. A &man.ppp.8;
feladata ilyenkor a forrás IP-cím
megváltoztatása, de ha ez 255.255.255.255, akkor egyedül
csak az IP-címnek és az
ellenõrzõösszegnek kell megváltoznia.
Ez viszont már valamilyen mértékben
trükközést a rendszermagon belül,
mivel így könnyen tudunk csomagokat küldeni
egy rosszul beállított interfészre is,
feltételezve, hogy valamilyen módon
képesek vagyunk ilyeneket visszamenõleg
helyreállítani.A legtöbb játék miért nem
mûködik a kapcsoló
megadásával?A játékok és a hozzájuk
hasonló alkalmazások általában
azért nem mûködnek, amikor a
&man.libalias.3; könyvtárat használjuk,
mert a távoli gép megpróbál
kapcsolódni a belsõ hálózatunkon
levõ géphez és kéretlen UDP
csomagokat kezd el küldeni neki. A
címfordítást végzõ
programnak fogalma sincs róla, hogy ezeket a
csomagokat egy belsõ gépnek kell
továbbküldenie.Akkor lehetünk biztosak ebben, ha egyedül csak
azt a szoftvert indítjuk el, amellyel gondjaink
akadtak, majd a vagy az átjáró
&man.tun.4; interfészét kezdjük el a
&man.tcpdump.1; segítségével, vagy
pedig engedélyezzük az
átjárón a &man.ppp.8; TCP/IP
naplózó funkcióját (set
log +tcp/ip).Ahogy elindítjuk a gondokat okozó
programot, látnunk kell a csomagjait, ahogy
megpróbálnak keresztüljutni az
átjárón. Az erre érkezõ
válaszolok eldobódnak (ez jelenti a
problémát). Jegyezzük fel a csomagokhoz
társuló portszámokat és
állítsuk el a programot. Csináljuk meg
néhányszor ezt a vizsgálatot,
így ellenõrizni tudjuk, hogy mindig ugyanazokat
a portokat használja-e. Amennyiben úgy
tapasztaljuk, hogy igen, akkor az
/etc/ppp/ppp.conf
állományba a következõ sort kell
betenni a megfelelõ helyre a mûködés
helyreállításához:nat port protokollbelsõ-gép:portportahol a protokoll lehet
tcp vagy udp, a
belsõ-gép annak a
gépnek a címe, ahova tovább akarjuk
küldeni a csomagokat, valamint a
port a csomagok
célportját adja meg.A fenti parancs megváltoztatása
nélkül nem tudjuk ugyanezt a szoftvert más
gépeken is használni, és itt azzal most
nem is foglalkozunk, hogy miként lehet két
belsõ géprõl használni ugyanazt a
programot. Mindenesetre annyi biztos, hogy a
külvilág felé a belsõ
hálózatunk csupán egyetlen
gépnek fog látszani.Ha azt látjuk, hogy az alkalmazás nem
mindig ugyanazt a portot használja, akkor három
választási lehetõségünk
van:Készítsük el a
támogatását a &man.libalias.3;
függvénykönyvtárhoz. A
különbözõ
szélsõséges esetekre a
/usr/src/sys/netinet/libalias/alias_*.c
állományokban találhatunk
példákat (az
alias_ftp.c tökéletes
kiindulási alap). Ez általában
annyit jelent, hogy beolvasunk bizonyos ismert
kimenõ csomagokat, beazonosítjuk benne azt
az utasítást, amelynek
hatására a külsõ gép
csatlakozni próbál a belsõ
géphez egy adott (véletlenszerûen
választott) porton, majd beállítunk
hozzá egy útvonalat,
így a rákövetkezõ csomagok
már tudni fogják, hogy merre
menjenek.Ez ugyan a legnehezebb megoldás, de egyben ez
is a legjobb, ráadásul így a szoftver
több gépen is
mûködtethetõ.Proxy használata. Elõfordulhat, hogy az
alkalmazás támogatja a
socks5 protokollt vagy (mint ahogy a
cvsup is csinálja) rendelkezik
passzív móddal, és
így lehetõleg igyekszik elkerülni azt,
hogy a távoli géprõl kapcsolatot
próbáljanak meg indítani a helyi
gépre.A nat addr
használatával irányítsunk
át mindent a belsõ gépre. Ez viszont
egy nagyon durva megközelítés.Valaki összeírta már a hasznosabb
portok sorszámait?Egyelõre még nem, de
szándékunkban áll
összeállítani egy ilyen listát
(már amennyiben igény lesz rá). Minden
itt szereplõ példában az
belsõ helyett mindig annak a
gépnek a belsõ IP-címét
írjuk, amelyrõl játszani akarunk.Asheron's Callnat port udp
belsõ :65000
65000Manuálisan változtassuk meg a
játékon belül a portszámot
65000-re. Ha a belsõ
hálózatunkról több
gépen is szeretnénk játszni, akkor
mindegyiknek adjuk meg egy egyedi portot (vagyis
65001, 65002
stb.), majd vegyünk fel mindegyikhez egy-egy
nat port sort.Half Lifenat port udp
belsõ:27005
27015PCAnywhere 8.0nat port udp
belsõ:5632
5632nat port tcp
belsõ:5631
5631Quakenat port udp
belsõ:6112
6112Quake 2nat port udp
belsõ:27901
27910nat port udp
belsõ:60021
60021nat port udp
belsõ:60040
60040Red Alertnat port udp
belsõ:8675
8675nat port udp
belsõ:5009
5009Mik azok az FCS hibák?Az FCS jelentése Frame
Check Sequence, vagyis
az Adatkeret ellenõrzésének
sorozata. Mindegyik PPP csomaghoz tartozik egy
ellenõrzõösszeg, amely arról
gondoskodik, hogy ugyanaz az adat érkezzen meg, mint
amit elküldtek. Amennyiben egy bejövõ csomag
FCS értéke érvénytelennek
minõsül, a csomag eldobódik és a
HDLC FCS számláló
értékkel eggyel növekszik. A HDLC
hibaszámlálói a show
hdlc parancs segítségével
tekinthetõek meg.Ha rosszul mûködik az
összeköttetés (vagy a soros vonali
meghajtónk folyamatosan eldobja a csomagokat), akkor
láthatunk helyenként FCS hibákat.
Többnyire nem érdemes az ilyenek miatt
aggódni, habár ez jelentõs
mértékben lassítja a
tömörítést végzõ
protokollok munkáját. Ha külsõ
modemünk van, akkor ne felejtsük el a
megfelelõ módon leárnyékolni,
mivel ebbõl is származhat a
probléma.Ha a vonal a kapcsolódást
követõen szinte azonnal lemerevedik és
hirtelen nagy mennyiségû FCS hiba jelentkezik,
akkor az arra is utalhat, hogy az
összeköttetés nem tisztán
8 bites. Gondoskodjunk róla, hogy a modem ne a
szoftveres forgalomirányítást
(XON/XOFF) használja. Ha viszont az adatok
közvetítéséhez mégis
szoftveres forgalomirányítást
kell használnunk, akkor a
set accmap 0x000a0000 parancs
kiadásával jelezzük a &man.ppp.8;
felé, hogy a ^Q és
^S karaktereket
helyettesítse.Nagy mennyiségû FCS hibát olyan
esetekben is tapasztalhatunk, amikor a távoli pont
abbahagyta a PPP üzenetek
küldését. Ilyenkor javasolt
engedélyezni az aszinkron naplózás
használatát, aminek
segítségével gyorsan meg tudjuk
állapítani, hogy a beérkezõ adatok
bejelentkezõ vagy shell üzeneteket. Ha a
másik oldalon egy shell parancssorát kapjuk
meg, akkor a &man.ppp.8; a close lcp
megadásával a vonal eldobása
nélkül leállítható (az
utána következõ term
paranccsal pedig a távoli gépen futó
shellre tudunk csatlakozni).Ha a naplókban látszólag semmi sem
indokolja az összeköttetés
leállását, próbáljunk meg
erre rákérdezni a távoli pont
(talán a szolgáltató?)
karbantartójánál.A &macos; és &windows; 98 alól
indított kapcsolatok miért állnak le, ha
PPPoE fut az átjárón?A probléma megoldását Michael
Wozniak (mwozniak@netcom.ca) adta meg, valamint
Dan Flemming (danflemming@mac.com) alkalmazta
ugyanezt Macre:Ennek oka az ún.
útválasztási fekete lyuk.
A &macos; és a &windows; 98 (de
valószínûleg az összes többi
µsoft; operációs rendszer) olyan nagy
méretû TCP csomagokat küld, amelyek
már nem férnek bele egy PPPoE keretbe (amely
mérete Ethernet estén 1500 byte
alapértelmezés szerint)
és beállítja
hozzá a darabolás letiltását
jelzõ (do not fragment) bitet (TCP
esetén ez alapértelmezett), és a Telco
útválasztó pedig nem küldi el a
must fragment (darabolni kell)
ICMP csomagot a letölteni kívánt oldal
szolgáltatója felé. (Másik
lehetõség, hogy az
útválasztó ugyan küld egy ilyen
ICMP csomagot, de ezt a
tartalomszolgáltatónál
található tûzfal eldobja.) Amikor
válaszul a szolgáltató olyan kereteket
kezd el küldeni, amelyek nem illeszkednek a PPPoE
keresztmetszetébe, a Telco
útválasztó egyszerûen eldobja
ezeket és a lap nem pedig nem lesz
elérhetõ (egyes képek és oldalak
esetén elõfordul). Úgy tûnik, ez az
alapbeállítás a legtöbb Telco
PPPoE konfiguráció esetében.Ezt a hibát úgy javíthatjuk, ha a
&windows; 95/98 rendszerekben megtalálható
regedit segítségével
felvesszük a következõ
regisztrációs bejegyzést:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans\0000\MaxMTUA karakterlánc értéke legyen
1436, mivel bizonyos ADSL
útválasztók
állítólag nem képesek
ennél nagyobb méretû csomagokat kezelni.
&windows; 2000 esetén ezt a
beállítást a
Tcpip\Parameters\Interfaces\a
hálózati kártya
azonosítója\MTU helyen kell keresni
és típusa duplaszó (DWORD).A &windows; MTU beállításaival
kapcsolatban olvassuk el a Microsoft Knowledge Base
címén található dokumentumokat:
Q158474
- Windows TCPIP Registry Entries és Q120642
- TCPIP & NBT Configuration Parameters for &windowsnt;
.&windows; 2000 alatt a regisztrációs
adatbázisban érdemes még a
Tcpip\Parameters\Interfaces\a
hálózati kártya
azonosítója\EnablePMTUBHDetect
duplaszó értékét
1-re állítani, ahogy arra
az imént említett 120642-es µsoft;
dokumentum is hivatkozik.Sajnos a &macos; nem nyújt semmilyen
beállítási lehetõséget a
TCP/IP beállítások
megváltoztatására. Léteznek
viszont kereskedelmi termékek, amelyek
lehetõvé teszi a felhasználók
számára, hogy igényeik szerint
módosítsák rendszerük TCP/IP
beállításait. A hálózati
címfordítást használók
keressék meg az MTU
beállításaikat és adják
meg az 1450 értéket az
eredeti 1500 helyett.A &man.ppp.8; újabb (2.3 vagy afeletti)
változatai már tartalmaznak egy
enable tcpmssfixup parancsot, amellyel az
MSS értéke tetszõlegesen
átállítható. Ez
alapértelmezés szerint engedélyezett.
Ha valamiért mégis a &man.ppp.8; egy
korábbi változatával kellene
dolgoznunk, akkor érdemes megnéznünk
net/tcpmssd
portot.Ezek közül egyik sem használt —
segítség! Mit lehetne még
tenni?Ha eddig minden más csõdött mondott,
akkor próbáljuk meg elküldeni az
összes beszerezhetõ információt,
beleértve a konfigurációs
állományokat, hogyan indítjuk el a
&man.ppp.8; programot, a naplók fontosabb
részeit és a netstat -rn
parancs kimenetét (a csatlakozás elõtt
és után) a &a.questions; címére
vagy a comp.unix.bsd.freebsd.misc
hírcsoportba, és valaki talán majd
megmutatja a helyes irányt.Soros vonali kommunikációEbben a szakaszban a &os; alatti soros vonali
kommunikációval kapcsolatos kérdéseket
tárgyaljuk. A PPP és SLIP
használatáról a Hálózatok
címû részben esik szó.Honnan deríthetõ ki, hogy a &os; felismerte
a soros portokat a gépben?Ahogy a &os; rendszermagja az elindulása
után azokat a soros portokat fogja keresni, amelyeket a
konfigurációs állományban
beállítottunk. Figyeljük a rendszer
indulása közben megjelenõ üzeneteket
vagy adjuk ki a következõ parancsot a rendszer
indulásának befejeztével:&prompt.user; dmesg | grep -E "^sio[0-9]"Íme egy példa az iménti parancs
kimenetére:sio0: <16550A-compatible COM port> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0
sio0: type 16550A
sio1: <16550A-compatible COM port> port 0x2f8-0x2ff irq 3 on acpi0
sio1: type 16550AEzen két soros portot láthatunk. Az
elsõ a negyedik megszakítást és a
0x3f8 címet használja
és egy 16550A típusú UART chip. A
második ugyanolyan chip, de a harmadik
megszakítást és a
0x2f8 címet használja. A
belsõ modemeket a rendszer úgy kezeli, mintha
soros portok lennének, azzal a kivétellel,
hogy a modem mindig kapcsolódik az
adott porthoz.A GENERIC rendszermag
alapértelmezés szerint két soros portot
támogat, a példában szereplõ
megszakítási- és
memóriaértékek
felhasználásával. Ha ezek a
beállítások nem felelnek meg a
rendszerünk számára, esetleg modemet
raktunk a gépünkbe vagy a rendszermagban
több soros portot is támogatni
szeretnénk, akkor nincs más teendõnk,
mint ennek megfelelõen megváltoztatni a
rendszermag paramétereit. A rendszermag fordításáról szóló
rész tárgyalja ennek részleteit.Honnan deríthetõ ki, hogy a &os; felismerte
a modemkártyát a gépben?Olvassuk el az elõzõ kérdésre
adott választ.Hogyan lehet a soros portokat elérni &os;
alatt?A harmadik soros port, a sio2
(lásd &man.sio.4;, DOS alatt
COM3) a
/dev/cuad2 eszközön
keresztül érhetõ el
tárcsázó eszközként,
és a /dev/ttyd2
eszközön keresztül behívó
eszközként. Mi a különbség a
két eszközosztály
között?A
ttydX
eszközöket behívásra
használjuk. Amikor tehát a
/dev/ttydX
eszközt blokkoló módban nyitjuk meg,
akkor a hívó program egészen addig
várni fog, amíg a megfelelõ
cuadX
eszköz inaktívvá nem válik, majd
kivárja, hogy megérkezzen a
hívás fogadását
tolmácsoló jelzés. Amikor megnyitjuk a
cuadX
eszközt, gondoskodik róla, hogy a soros portot
ekkor ne használja a
ttydX
eszköz. Ha a port szabaddá válik,
egyszerûen ellopja a
ttydX
eszköztõl. Sõt, a
cuadX
eszközt egyáltalán nem érdekli a
hívás fogadása jelzés. Ezzel a
megoldással és egy automata modem
segítségével a távoli
felhasználók bármikor be tudnak
jelentkezni a rendszerünkbe, hogy közben
ugyanezzel a modemmel továbbra is tudunk
tárcsázni, mivel a rendszer elintézi a
többit.Hogyan lehet engedélyezi a többportos soros
vonali kártyák
támogatását?Ismét megemlítjük, hogy a rendszermag
beállításával foglalkozó
részben olvashatunk bõvebben a rendszermag
paraméterezésének
mikéntjérõl. A többportos soros
vonali kártyák esetén a
kártyán található mindegyik
soros porthoz vegyünk fel egy-egy &man.sio.4;
bejegyzést a &man.device.hints.5;
állományába. Az IRQ és vektor
értékeket azonban csak az egyiknél
adjuk meg, mivel a kártyán
található összes port egyetlen
megszakításon fog osztozni. A
következetesség kedvéért az
utolsó porthoz adjuk meg a
megszakítást. Ne felejtsük el még
megadni a rendszermag konfigurációs
állományában az alábbi
opciót sem:options COM_MULTIPORTAz alábbi /boot/device.hints
egy AST típusú négyportos soros vonali
kártyát láthatunk a tizenkettedik
megszakításon:hint.sio.4.at="isa"
hint.sio.4.port="0x2a0"
hint.sio.4.flags="0x701"
hint.sio.5.at="isa"
hint.sio.5.port="0x2a8"
hint.sio.5.flags="0x701"
hint.sio.6.at="isa"
hint.sio.6.port="0x2b0"
hint.sio.6.flags="0x701"
hint.sio.7.at="isa"
hint.sio.7.port="0x2b8"
hint.sio.7.flags="0x701"
hint.sio.7.irq="12"A flags paraméterrel megadott
értékek azt jelzik, hogy a fõport
7 alszámmal rendelkezik
(0x700), valamint az összes port
ugyanazon a megszakításon osztozik
(0x001).A &os; képes több többportos soros
vonali kártyát ugyanazon a
megszakításon keresztül
használni?Sajnos még nem. Minden kártyához
másik megszakítást kell megadni.Hogyan lehet beállítani a portok
alapértelmezett paramétereit?Ezzel kapcsolatban olvassuk el a &os;
kézikönyv soros kommunikációt
tárgyaló részét.Hogyan lehet a modemen betárcsázást
beállítani?Erre vonatkozóan olvassuk el a &os;
kézikönyv betárcsázós szolgáltatásokkal
kapcsolatos részét.Hogyan lehet buta terminálokat
&os;-re csatlakoztatni?Az ezzel kapcsolatos információkat a &os;
kézikönyv terminálokról
szóló részében
találhatjuk meg.Miért nem indul el a tip vagy
cu parancs?Elõfordulhat, hogy rendszerünkön a
&man.tip.1; és &man.cu.1; programok csak az
uucp felhasználón
és a dialer csoporton
keresztül tudnak hozzáférni a
mûködésükhöz
szükséges /var/spool/lock
könyvtárhoz. A dialer
csoport segítségével lehet
szabályozni, hogy ki férhessen hozzá a
modemekhez vagy a távoli rendszerekhez. Ilyenkor
egyszerûen csak vegyük fel magunkat a
dialer csoportba.A következõ parancs kiadásával
viszont ettõl függetlenül is
engedélyezhetjük a rendszerünkön
belül, hogy bárki használhassa a
&man.tip.1; vagy &man.cu.1; parancsokat:&prompt.root; chmod 4511 /usr/bin/cu
&prompt.root; chmod 4511 /usr/bin/tipA rendszerhez csatlakozó Hayes
szabványú modem támogatott — mi
ilyenkor teendõ?A &os; kézikönyvben lásd ezt
a választ.Hogyan adjuk meg az AT parancsokat?A &os; kézikönyvben lásd ezt
a választ.A pn tulajdonságnál
miért nem lehet @ jelet
megadni?A &os; kézikönyvben lásd ezt
a választ.Hogyan lehet telefonszámokat
tárcsázni parancssorból?A &os; kézikönyvben lásd ezt
a választ.Minden alkalommal meg kell adni az adatátviteli
sebességet?A &os; kézikönyvben lásd ezt
a választ.Terminálszerver segítségével
hogyan lehet könnyen elérni egyszerre több
gépet is?A &os; kézikönyvben lásd ezt
a választ.A &man.tip.1; képes több vonalat is
használni az egyes gépek
eléréséhez?A &os; kézikönyvben lásd ezt
a választ.Miért kell kétszer lenyomni a CtrlP
billentyûket, hogy egyszer elküldjük
ezeket?A &os; kézikönyvben lásd ezt
a választ.Miért lett hirtelen minden NAGYBETÛS?A &os; kézikönyvben lásd ezt
a választ.Hogyan lehet állományokat mozgatni a
tip használatával?A &os; kézikönyvben lásd ezt
a választ.Hogyan használható a zmodem protokoll a
tip programmal?A &os; kézikönyvben lásd ezt
a választ.Egyéb kérdésekA &os; miért használ sokkal több
lapozóállományt, mint a &linux;?A &os; csupán látszólag
használ több helyet a lapozásra, mint a
&linux;, valójában egyébként
nem. A &os; és a &linux; közt az egyik
leglényegesebb különbség, hogy a
&os; valamivel elõre gondolkodik, és az
összes pillanatnyilag nem használt lapot
kilapozza a központi memóriából a
lapozóterületre. Ezzel igyekszik minél
több memóriát
elõkészíteni az aktív
használatra. A &linux; ezzel szemben a
lapozást csak végsõ esetben
használja. Ennek megfelelõen a
lapozóterület gyakoribb
használatát remekül ellensúlyozza
a fizikai memória hatékonyabb
kihasználása.Habár a &os; igyekszik ebben a tekintetben
elõrelátó lenni, nem minden esetben tudja
pontosan eldönteni, hogy a rendszerben mely lapokat nem
használják éppen. Emiatt nem fogja az
összes memóriát kilapozni, ha
például egész éjszakára
futni hagyjuk a gépünket.A top miért jelez kevés
szabad memóriát, miközben csak
néhány program fut?Röviden úgy válaszolhatnánk
meg ezt a kérdést, hogy a szabad memória
igazából elvesztegetett memória. A
programok által szabadon hagyott
memóriát a &os; rendszermagja többnyire a
lemez gyorsítótárazására
használja fel. A &man.top.1; kimenetében
olvasható Inact,
Cache és Buf
értékek a lényegében
különbözõ öregedési szintek
szerint kategorizált tárazott adatok. A
tárazás lényegében arra utal,
hogy a rendszernek így nem a lassú
elérésû lemezen kell a gyakran
elérni kívánt adatok után
kutatni, aminek köszönhetõen növekszik
az összteljesítmény. A &man.top.1;
kimenetében tehát Free
kategória alacsony értéke
alapvetõen jót jelent, feltéve, ha nem
nagyon kevés.A chmod miért nem
változtatja meg a szimbolikus linkek
engedélyeit?A szimbolikus linkekhez alapértelmezés
szerint nem tartoznak engedélyek, ezért a
&man.chmod.1; ilyen esetekben az eredeti
állomány engedélyeit változtatja
meg. Ezért például, ha adott egy
ize nevû állomány,
valamint erre egy mize nevû
szimbolikus link, akkor a következõ parancs mindig
mûködni fog:&prompt.user; chmod g-w mizeEnnek ellenére az mize
engedélyei nem fognak megváltozni.Ha egy adott könyvtárszerkezetben
elhelyezkedõ állományok engedélyeit
akarjuk egyszerre módosítani, akkor a
opció mellett a
vagy opciókat
is meg kell adnunk. Errõl részletesebb
információkat a &man.chmod.1; és a
&man.symlink.7; man oldalairól tudhatunk meg.A &man.chmod.1; opciója
rekurzív
mûködést tesz lehetõvé.
Óvatosan bánjunk a
könyvtárakkal vagy a
könyvtárakra mutató szimbolikus
linkekkel a &man.chmod.1; használata
során. Ha egy szimbolikus link által
hivatkozott könyvtár engedélyeit
akarjuk megváltoztatni, akkor a &man.chmod.1;
parancsnak ne adjunk meg semmilyen paramétert
és a nevet zárjuk perjellel (/).
Például, ha az ize a
mize
könyvtárra mutató szimbolikus link,
és meg akarjuk változtatni az
ize engedélyeit (ami
valójában a mize engedélyeit
jelenti), akkor valami ilyesmit kellene
megadnunk:&prompt.user; chmod 555 ize/A név végén szereplõ
perjelbõl a &man.chmod.1; tudni fogja, hogy
követnie kell a foo
szimbolikus linket és így az általa
hivatkozott könyvtár, a mize engedélyeit
fogja megváltoztatni.A &os; képes DOS programokat futtatni?Igen, a Portgyûjteményben
található emulators/doscmd, vagyis egy DOS
emulációs program
segítségével.Amennyiben a doscmd
önmagában még nem lenne elegendõ, egy
másik segédprogram, a emulators/pcemu
segítségével emulálni tudunk egy
8088-as processzort, valamint a BIOS annyi
részét, hogy futtatni tudjunk szöveges
DOS alkalmazásokat. A használatához az
X Window Systemre is szükségünk
lesz.Érdemes ezenkívül még
megpróbálnunk a &os;
Portgyûjteményében
található emulators/dosbox portot is. Ez
az alkalmazás elsõsorban a régi DOS-os
játékok futtatásához
szükséges környezet
emulációjára koncentrál, a helyi
állományrendszerben található
állományok
felhasználásával.Hogyan tudjuk az anyanyelvünkre lefordítani
a &os; dokumentációját?Olvassuk el a &os; Dokumentációs Projekt
bevezetõjében található Fordítói
GYIK-ot.A FreeBSD.org
tartományon belüli e-mail címekre
küldött levelek miért pattannak
vissza?A FreeBSD.org
levelezõrendszere a bejövõ levelekre
vonatkozóan átvett néhány
szigorúbb ellenõrzést a
Postfix
alkalmazástól, és ezért eldobja
azokat a leveleket, amelyek formátuma hibás
vagy feltehetõen szemét. A leveleink az
alábbi okok miatt pattanhatnak vissza:A levelet olyan név- vagy
IP-tartományból küldtük, ahonnan
korábban levélszemetet küldtek,
ezért feketelistára került.A &os; levelezõ szerverei eldobnak minden olyan
levelet, amelyek feketelistás
tartományokból érkeznek. Ha olyan
cégen vagy tartományon keresztül
akarunk küldeni, amelyik levélszemetet
gyárt vagy továbbít, akkor
váltsunk szolgáltatót.A levél törzse csak HTML kódot
tartalmaz.A leveleinket egyszerû szöveges
formátumban küldjük.
Állítsuk be a levelezõ
kliensünket erre.A FreeBSD.org
címen üzemelõ levelezõ szerver nem
tudta a csatlakozó gép
IP-címét szimbolikus névre
feloldani.Az ellenkezõ irányú
névfeloldás sikeressége alapvetõ
követelmény a levelek
fogadásához. Gondoskodjunk róla,
hogy a levelezõ szerverünk
IP-címével mûködjön az
inverz névfeloldás, Sok otthoni
szolgáltatás (DSL, kábel,
betárcsázós stb. kapcsolat) erre
nem ad lehetõséget. Ilyenkor a leveleinket
próbáljuk meg a
szolgáltatónk levelezõ szerverein
keresztül küldeni.Az SMTP protokoll EHLO/HELO részében
megadott hálózati név nem
oldható fel valós IP-címre.Egy teljes, feloldható hálózati
név elegendhetetlen a levél
elfogadásához szükséges SMTP
párbeszéd
érvényességéhez. Ha nincs
hivatalosan bejegyzett hálózati
nevünk, akkor a szolgáltató
levelezõ szervereit kell használnunk a
levél elküldéséhez.A küldött üzenet
azonosítója (Message ID) végén
a localhost szerepel.Egyes levelezõ kliensek rossz
azonosítónak hoznak létre az
üzenetekhez, ezért a rendszer nem
hajlandó elfogadni ezeket. Ilyenkor vagy
rávesszük valahogy a levelezõ
kliensünket, hogy rendes azonosítókat
készítsen, vagy úgy
állítjuk be a
levéltovábbítónkat, hogy
érvényes azonosítókra
írja át.Hogyan lehet egyszerûen &os; rendszereket
elérni?Habár a &os; maga nem nyújt akárki
számára hozzáférést a
saját szervereihez, mások viszont
kínálnak bárki által
elérhetõ &unix; rendszereket. Ennek
költsége és minõsége
szolgáltatónként
változik.Az Arbornet,
Inc, vagy másik nevén
M-Net 1983 óta szolgáltat
nyílt hozzáférést &unix;
típusú rendszerekhez. Egy System III
alapokon mûködõ Altos rendszerrõl a
1991-ben BSD/OS-re váltottak, majd 2000
júliusában aztán &os;-re
váltottak. Az M-Nettelnet és
SSH
szolgáltatásokon keresztül is
elérhetõ, és lényegében a
&os; alatt elérhetõ összes programhoz enged
egy alapvetõ hozzáférést. A
hálózati hozzáférés
azonban csak a tagok és a támogatók
számára engedélyezett. Ez egy
non-profit szervezet. Az M-Net
rendelkezik üzenõfallal (bulletin board system,
BBS) és interaktív csevegõrendszerrel
is.A Grex az
M-Net
szolgáltatásához hasonlóan
ugyanúgy kínál üzenõfalat
és csevegési lehetõséget.
Többségében azonban &sun; 4M
gépeik vannak, amelyen &sunos; fut.Mi az a sup és hogyan lehet
használni?A SUP
mozaikszó mögött a Software Update
Protocol (Szoftverfrissítési
protokoll) áll, amelyet fejlesztési
fák szinkronban tartására dolgoztak ki
a Carnegie-Mellon Egyetemen. Régebben ennek
segítségével tartották
frissítették magukat a fejlesztõi
források különbözõ
tükrözései a &os; Projekten
belül.A SUP nem kifejezetten egy
sávszélesség-takarékos
megoldás, és egy ideje már
nyugdíjba vonult. A forrásainkat jelen
pillanatban a CVSup
használatával tudjuk frissíteni.Hogy hívják azt a cuki kis vörös
fickót?Igazából nincs neve, mindenki
egyszerûen csak BSD démonnak
nevezi. Ha mégis hívni szeretnénk
valahogy, akkor szólítsuk csak
beastie-nek, ugyanis a beastie
kiejtése megegyezik a BSD
szóéval
(bíeszdi).A BSD démonról a saját honlapján
tudhatunk meg többet.Felhasználható a BSD démon
képe?Talán. A BSD démon jogait Marshall Kirk
McKusick birtokolja. A felhasználás pontos
lehetõségeivel kapcsolatban olvassuk el Statement
on the Use of the BSD Daemon Figure címû
írást.Röviden úgy foglalhatnánk össze,
hogy ízléses stílusban a saját
céljainkra mindaddig nyugodtan
felhasználhatjuk a képet, amíg
megemlítjük az eredeti szerzõt. Ha
kereskedelmi céljaink vannak, akkor írjunk
&a.mckusick; címére. A pontosabb
részleteket a BSD démon honlapján
olvashatjuk.Található valahol
felhasználható kép a BSD
démonról?EPS és XFig formátumú rajzok a
/usr/share/examples/BSD_daemon/
könyvtárban vannak.A levelezési listákon szerepeltek
ismeretlen kifejezések vagy
rövidítések. Hol lehet ezeknek
utánanézni?Olvassuk el a &os; szakkifejezéseinek gyûjteményét.
Miért fontos annyira a
biciklitároló színe?Erre röviden úgy adhatnánk
választ, hogy ezzel igazából nem kell
annyira törõdnünk. Ha viszont valamivel
terjedelmesebben akarunk válaszolni, akkor azt
mondhatnánk, hogy azért, mert egy
biciklitároló megépítése
még nem tántorít el senkit sem a
válaszott szín
kritizálásától és az
átfestésének
fontolgatásától. Ez a metafora
alapvetõen arról szól, hogy nem kell
feltétlenül minden apró
részletrõl vitatkoznunk csupán
azért, mert jobban értünk hozzá.
Sokak tapasztalata szerint ugyanis a
változtatásokhoz kapcsolódó
megjegyzések által gerjesztett zaj
fordítottan arányos az adott
változtatás
bonyolultságával.A még hosszabb és teljesebb válasz
eredetileg egy nagyon hosszú és
fárasztó vita eredményeképpen
keletkezett, amikor arról esett szó, hogy a
&man.sleep.1; törtekkel dolgozzon-e vagy sem. Erre
válaszul küldte &a.phk; az azóta
híressé vált A
bike shed (any color will do) on greener
grass... ((Bármilyen
színû) biciklitároló megfelelne
egy zöldebb gyepen...) címû
levelét. Ebbõl szeretnénk most
idézni:
&a.phk;, &a.hackers.name;, 1999.
október 2.Mirõl is szól ez a
biciklitároló? —
kérdezték tõlem sokan.Ez egy hosszú, vagy még inkább
régi történet, amely azonban
valójában meglehetõsen rövid. C.
Northcote Parkinson Parkinson
törvénye címmel írt egy
könyvet az 1960-as évek elején,
amelyben elég nagy betekintést adott a
vezetés dinamikájába.[a könyv részletes
bemutatását most
kihagyjuk]A konkrét példában egy
biciklitároló szerepel egy
atomerõmûvel szemben, szóval ez is
eléggé jól érzékelteti
a könyv korát.Parkinson ezen keresztül bemutatja, hogyan kell
egy igazgatói tanács elé járulni
egy több millió vagy akár
milliárd dolláros atomerõmû
megépítéséhez, azonban egy
egyszerû biciklitároló
megépítésekor könnyen
véget nem érõ vitatkozásba
bonyolódhatunk.Parkinson elmagyarázza, mindez azért
van, mert egy atomerõmû annyira
óriási, drága és bonyolult,
hogy az emberek egyszerûen nem értik meg.
Ezért nem szólnak semmit és
megnyugtatják magukat a
feltételezéssel, hogy valaki más
korábban már biztosan
utánajárt a részleteknek. Richard P.
Feynmann is könyveiben rengeteg érdekes
és nagyon találó példát
ad ezekre Los Alamossal kapcsolatban.Vegyünk ezzel szemben most egy
biciklitárolót. Bárki képes egy
hétvége alatt összetákolni egy
ilyet és még így is marad ideje
megnézni a meccset. Ezért nem
számít, mennyire jól megfogalmazott,
elõkészített és logikus is a
javaslatunk, valaki biztosan meg fogja ragadni a
lehetõséget, hogy az orrunk elõtt
fitogtassa a képességeit és
megmutassa magát: õ bizony itt
járt.Dániában ezt mi úgy
hívjuk, hogy otthagyjuk a kezünk
nyomát. Ez mindössze a
személyes büszkeségrõl és
tekintélyrõl szól, vagyis hogy
végre elmondhassuk: Ezt nézd!
Én csináltam.
Ez ugyan leginkább a politikusokra jellemzõ,
de alapvetõen minden emberben ott él.
Gondoljunk csak a friss betonban hagyott
lábnyomokra.
Mókás dolgok a &os;-vel kapcsolatbanMennyire hûsít a &os;?Kérdés: Mérte már valaki,
hogy a &os; futása közben mennyire melengeti meg
a számítógépet? Úgy
hírlik, a &linux; ebben a tekintetben sokkal jobb,
mint a DOS, de &os;-rõl még nem ismert ezzel
kapcsolatban semmi. Mondjuk, elég tüzesnek
tûnik.Válasz: Nem, de korábban már
számos tesztet végeztünk bekötött
szemû önkénteseken, akiknek elõzetesen
250 mikrogram LSD-25-öt adagoltak. A tesztalanyok
35 százaléka szerint a &os; kissé
narancsos ízû volt, míg a &linux;
inkább a rózsaszín ködhöz
hasonlított. A hõmérséklettel
kapcsolatban azonban egyik csoport sem észlelt
komolyabb változást. Végül
aztán teljesen el kellett vetnünk a
kísérlet eredményeit, mert menet
közben túlságosan sok
önkéntes kóborolt el, és ezzel
torzították a mérések
eredményeit. A legtöbb önkéntes
azóta is Apple-nél van, és azóta
is egy új színes, szagos
grafikus felületen dolgoznak. Szép kis
felfordulás!Komolyan: a &os; és a &linux; is egyaránt
a processzorokban található
HLT (halt) utasítást
használja arra, hogy az üresjáratban
levõ rendszer energiafogyasztását
és ezáltal hõtermelését is
valamennyire mérsékelje. Emellett még
az APM (Advanced Power Management) is támogatott,
így a &os; akár tetszés szerint
alacsonyabb energiafogyasztású módba is
tudja tenni a processzort.Mi mocorog a memóriamodulokban?Kérdés: A &os; csinál valami
szokatlan a rendszermag fordítása
közben, ami miatt a memóriák felõl
mocorgást lehet hallani? Amikor fordítok
(vagy egy rövid ideig, amikor az
indításkor a rendszer keresi a
floppymeghajtót) valamilyen furcsa
mocorgásszerû hang jön a
memóriamodulokból.Válasz: Igen! Gyakran utalnak a BSD rendszerek
dokumentációiban mindenféle
démonokra, és ezzel
kapcsolatban a legtöbb ember nem is tudja, hogy ezek
valójában apró, öntudatos,
fizikailag nem létezõ lények, amelyek a
rendszer indulása után
megszállják a
számítógépünket. A
memóriából kiszûrõdõ
mocorgás hangja igazából a
démonok közti magas frekvenciás
beszélgetésbõl ered, amikor éppen
arról egyeztetnek, hogy miként
birkózzanak meg a különbözõ
rendszeradminisztrációs feladatokkal.Ha teljesen megõrjít minket ez a
zajongás, akkor úgy tudunk tõlük
megszabadulni, ha kiadjuk DOS-ból a jó
öreg fdisk /mbr parancsot. Ekkor
viszont ne lepõdjünk meg, ha netalán
visszalõnének és próbálnak
minket megállítani. Ha eközben a
hangszóróinkból Bill Gates
sátáni kacaja harsanna fel, akkor rohanjunk
és ne is nézzünk többet vissza! A
BSD démonok támogatásától
mentesen a &windows; és a DOS ikerördögei
ilyenkor gyakran visszaszerzik gépünk felett a
teljes irányítást és ezzel
örök szenvedésre kárhoztatják
gyarló lelkünket. Ennek tudatában lehet,
hogy mégis csak jobb lenne, ha egyszerûen csak
hozzászoknánk azokhoz a furcsa hangokhoz,
nem?Hány &os; fejlesztõ kell egy
villanykörte kicseréléséhez?Ezeregyszázhatvankilenc:Huszonhárman panaszkodnak a -current
listán, hogy már megint kiment a villany.Négyen erre azt válaszolják, hogy
ez csak konfigurációs probléma,
ezért ennek a -questions listán a
helye.Hárman írnak róla
hibajelentést, de ezek közül az egyik
ráadásul tévesen a
doc kategóriába kerül,
és csak annyi áll benne, hogy
sötét van.Erre az egyikük beszerel egy
kipróbálatlan villanykörtét,
amitõl nem mûködik a rendszer többi
része, így öt perc múlva ki is
szereli.Nyolcan leszidják a hibajelentések
íróit, hogy nem mellékelték a
javítást a jelentéseik
mellé.Öten siránkoznak, hogy nem mûködik
a rendszer.Harmincegyen erre azt válaszolják, hogy
nekik minden remekül mûködik, és az
érintettek minden bizonnyal pont rosszkor
frissítettek.Egy küld egy új villanykörtét a
-hackers listára.Erre egy rászól, hogy õ már
három évvel ezelõtt megcsinálta
ugyanezt, de amikor beküldte a -current listára,
akkor senki sem foglalkozott vele, és
egyébként sem szereti a
hibajelentéseket. Emellett ráadásul az
új villanykörte egyébként sem
tetszik.Huszonheten nekiállnak skandálni, hogy a
villanykörték nem tartoznak az alaprendszerbe,
ezért a committerek a közösség
megkérdezése nélkül nem
csinálhatnak semmit, és különben is:
Mi errõl a -core
véleménye?Kétszázan eközben megvitatják,
milyen színû legyen a
biciklitároló.Hárman jelzik, hogy a javítás nem
felel meg a &man.style.9;
elõírásainak.Tizenheten megjegyzik, hogy az újonnan javasolt
villanykörte GPL licenccel rendelkezik.Ötszázhatvankilencen valóságos
vitaözönt indítanak a GPL, a BSD, MIT
és NPL licencek elõnyeit illetõen, majd
megjegyzéseket tesznek különféle meg
nem nevezett FSF alapítók személyes
higéniajára.Heten a vita bizonyos részeit átviszik a
-chat és -advocacy listákra.Egy végül beszereli a javasolt
villanykörtét, de az valamivel mintha
halványabban világítani, mint az
elõzõ.Ketten leszólják a szerelést,
és összekapnak azon, hogy most akkor a &os;
inkább maradjon sötétségben vagy
érje be a halványabb
világítással.Negyvenhárman rikácsolva követelik a
halványan világító
villanykörte kiszerelését és
panaszukat megírják a -core
listára.Tizenegyen egy kisebb villanykörtét
kérnek, mert ha majd portolni akárják a
Tamagotchijukra a rendszert, akkor ott is
használható legyen.Hetvenhárman felemelik a szavukat a -hackers
és -chat listákon felerõsödött
zaj miatt, és tiltakozásul leiratkoznak
ezekrõl a listákról.Tizenhárman erre egy leiratkozom,
Hogyan kell innen leiratkozni? vagy
Kérlek, vegyetek le errõl a
listáról témájú
levelet küldenek a megszokott stílusban.Egy eközben beszerel végre egy
mûködõ villanykörtét, miközben
mindenki azzal van elfoglalva, hogy szidja a másikat,
így szinte észre sem veszik.Harmincegy ezután hozzáteszi, hogy az
új villanykörte
0,364 százalékkal jobban
világítana, ha TenDRA-val
csinálták volna (akkor viszont kocka
alakú lenne) és a &os;-nek ezért a GCC
helyett TenDRA-t kellene használnia.Egy valaki megemlíti, hogy az új
villanykörtén nincs is burkolat.Kilencen (beleértve a hibajelentések
íróit) azt kérdezgetik folyton, hogy
Mi az az MFC?.Ötvenheten két hét múlva
kezdenek el panaszkodni, hogy a villanykörte
kiment.&a.nik; hozzáteszi:Nagyon jót nevettem
ezen.Közben az jutott az eszembe, hogy
Várjunk csak, nem kellene valahol a
felsorolásban lennie egy egy, aki pedig
ledokumentálja
résznek?És akkor végre
megértettem :-)&a.tabthorpe; szerint: Egy
sem, mert a valódi &os;
fejlesztõk nem félnek a
sötétben!Hova kerül a /dev/null
eszközre küldött adat?A processzoron található speciális
adatsüllyesztõbe kerül, majd hõvé
alakul és elszállítja a felszerelt
hûtõborda és ventillátor.
Ezért is annyira fontos a processzor
hûtése: az emberek minél gyorsabb
géppel rendelkeznek, annál inkább
gondatlanná válnak és annál
több adat köt ki a /dev/null
eszközben. Ha sikerül letörölnünk
a /dev/null eszközt (amivel
így lényegében letiltjuk a processzor
adatsüllyesztõjét), akkor a processzorunk
ugyan kevésbé fog melegedni, viszont gyorsan
eldugul a sok adattól és furcsán kezd
el viselkedni. Ha nagyon gyors hálózati
kapcsolattal rendelkezünk, akkor úgy is le
tudjuk hûteni a processzorunkat, ha folyamatosan
olvassuk a /dev/random eszközt
és valahova elküldjük az eredményt.
Ekkor viszont vigyázzunk arra, hogy ezzel a
módszerrel könnyen túlmelegedhet a
hálózati kártyánk és a
gyökér állományrendszerünk,
valamint a szolgáltató sem fog
örülni ennek, mert akkor a felesleges hõ
náluk keletkezik. Általában viszont
jó a hûtésük, ezért ha okosan
csináljuk, akkor semmi gondunk nem származik belõle.Paul Robinson
hozzáteszi:Vannak még más módszerek is.
Minden jó rendszergazda tudja, hogy szokás a
képernyõre is folyamatosan adatot küldeni,
mert így a pixik is vidámabbak lesznek. A
képernyõt formázó pixik (melyek
gyakran tévesen és hibásan
pixeleknek hívnak) a fejükön
viselt kalapok szerint három csoportba
sorolhatóak (vörös, zöld vagy
kék), és annak megfelelõen bújnak
elõ (illetve mutatják meg a kalapjukat), hogy
kapnak-e enni. A videokártyák felelõsek
azért, hogy a kapott adatokból pixiétel
készüljön és hogy az eljusson a
pixikhez — minél drágább a
kártya, annál jobb minõségû
az elõállított étel, és
annál fegyelmezettebben viselkednek a pixik.
Állandó cirogatásra is
szükségük van — ez a
képernyõvédõk feladata.Az elõbbi javaslatot azzal tudnám még
kiegészíteni, hogy a
/dev/random eszköztõl
származó adatokat akár a konzolra is
küldhetjük, így a pixiket is jól
tudjuk lakatni. Ezzel együtt nem jár semmilyen
hõtermelés, viszont a pixik boldogok lesznek
és így könnyen meg tudunk szabadulni a
felesleges adatoktól is, még úgy is, ha
kissé zavarosnak tûnik közben a
kép.Mellesleg mint az egyik nagy szolgáltató
egykori rendszergazdája elmondhatom, hogy mivel
tapasztalatom szerint a szerverszobában nehéz
tartani a megfelelõ hõmérsékletet,
ezért nem ajánlom senkinek a felesleges adatok
átküldését a
hálózaton. A csomagok
közvetítésével és
irányításával foglalkozó
tündérek sem különösebben szoktak
örülni ennek.Témák haladóknakHonnan lehet többet megtudni a &os; belsõ
felépítésérõl?Jelen pillanatban csak egyetlen mû foglalkozik az
operációs rendszerek
felépítésével a &os;
szemszögébõl, név szerint a Marshall
Kirk McKusick és George V. Neville-Neil által
írt The Design and Implementation of the
&os; Operating System címû könyv
(ISBN 0-201-70245-2), amely a &os;
5.X változatára
koncentrál.Emellett a &unix; típusú rendszerek
használatával kapcsolatos ismeret remekül
alkalmazható a &os; esetén is.A témához tartozó többi
könyvet a kézikönyv Az
operációs rendszerek belsõ
mûködésével
foglalkozó irodalomjegyzékben
találhatjuk meg.Hogyan lehet bekapcsolódni a &os;
fejlesztésébe?Pontosabb tanácsokat akkor kapunk, ha elolvassuk
a &os;
fejlesztésérõl szóló
cikket. Nagyon is számítunk mindenki
segítségére!Mik azok a pillanatkiadások és
kiadások?Jelenleg három aktív és
félig aktív ág van a &os; CVS
repositoryjában. (A korábbi
ágakat már csak nagyon ritkán
módosítják, ezért is csak
három aktív fejlesztési ágon
fejlesztenek):RELENG_7 avagy
7-STABLERELENG_8 avagy
8-STABLEHEAD avagy
-CURRENT avagy
9-CURRENTA HEAD nem olyan ág, mint a
másik kettõ. Ez egyszerûen csak
a jelenlegi, még el nem
ágaztatott fejlesztési
irány jelentéssel
bír, amire pedig sokszor röviden csak
-CURRENT néven
hivatkoznak.Jelen pillanatban a -CURRENT a
9.X fejlesztési
irányát képviseli; az
6-STABLE ág, a
RELENG_6, 2005 novemberében, a
7-STABLE ág, a
RELENG_7, 2008 februárjában,
míg a 8-STABLE ág, a
RELENG_8, 2009 novemberében
vált le a -CURRENT
ágból.Hogyan lehet saját kiadást
készíteni?Olvassuk el a kiadások
készítésérõl
szóló cikket.A make world
parancs miért írja felül a
korábban telepített binárisokat?Mert alapvetõen ez lenne a cél: ahogy a neve
is sugallja, a rendszer újrafordítása,
vagyis a
make world
parancs feladata a rendszerben található
összes bináris
újrafordítása, aminek
eredményeképpen egy tiszta és
összefüggõ környezetet kapunk
(ezért is tart ilyen sokáig).Ha a make
world vagy a make
install parancs
futtatása elõtt megadjuk a
DESTDIR környezeti
változót, akkor a frissen létrehozott
binárisok az általa mutatott
könyvtárba fognak kerülni pontosan
úgy, ahogy az eredeti rendszer. Az osztott
könyvtárak bizonyos
módosításai és egyes programok
fordítása azonban könnyen térdre
kényszerítheti a make
world
futását.Miért nem forgó (round
robin) névfeloldással lehet
elérni a CVSup szervereket
és így megosztani köztük a
terhelést?Habár a CVSup
tükrözések óránként
frissítik magukat a központi
CVSup szerverrõl, maga a
frissítés azonban bármikor
megtörténhet. Ennek
következményeképpen egyes szervereken
frissebb kód található, miközben a
többin még az egy órával
ezelõtti állapot szerepel. Ha a cvsup.FreeBSD.org forgó
névfeloldással mûködne, akkor a
felhasználók mindig egy
véletlenszerûen választott
CVSup szervert kapnának,
és ezért a CVSup
egymás utáni futtatásakor könnyen
elõfordulhatna, hogy a rendszer régebbi
forrásait kapjuk vissza.A -CURRENT forrásait
korlátozott interneteléréssel is lehet
követni?Igen, ezt a CTM
használatával
anélkül is megtudjuk tenni,
hogy le kellene töltenünk az egész
forrásfát.Hogyan lehet 1392 KB-os darabokra felosztani az
egyes terjesztéseket?Az újabb BSD alapú rendszerekben a
&man.split.1; parancsnak már van egy
paramétere, amellyel
tetszõleges méretûre fel tudunk darabolni
állományokat.Íme erre egy példa a
/usr/src/release/Makefile
állományból:ZIPNSPLIT= gzip --no-name -9 -c | split -b 1392k -Hova lehet küldeni a rendszermaghoz írt
kiegészítéseket?Erre vonatkozóan vessünk egy
pillantást a &os; továbbfejlesztésérõl szóló
cikkre.Köszönjük, hogy gondolt
ránk!A rendszer hogyan érzékeli és
inicializálja a Plug and Play ISA
kártyákat?Frank Durda IV
(uhclem@nemesis.lonestar.org)
válasza:Dióhéjban úgy tudnám ezt
elmagyarázni, hogy van néhány I/O port,
amelyet lekérdezve a PnP kártya képes
válaszolni, hogy elérhetõ-e.
Ezért a PnP eszközök keresése azzal
kezdõdik, hogy a rendszer felteszi a
kérdést, van-e PnP kártya a
számítógépben. Erre
aztán a különbözõ
kártyák a típusuk
megjelölésével válaszolnak,
amelyet ugyanezen az I/O porton kell visszaolvasni,
így ha már legalább egy bitet
beállít valaki, akkor folytatható a
keresés. Ezután a keresést
végzõ kódrész letiltja az
X alatti (a µsoft; és az
&intel; által kiosztott) azonosítóval
rendelkezõ kártyákat, majd ismét
megnézi, hogy valaki továbbra is
válaszol-e. Amennyiben a válasz
0, az arra utal, hogy már nincs
aktív kártya az X
azonosító felett. Ezt követõen a
rendszer megpróbálkozik az
X alatti azonosítók
lekérdezésével. Végül
folytatja az X alatti keresést az
X -(korlát / 4)
feletti azonosítók letiltásával,
majd megismétli az iménti
kérdést. Ezzel a félig-meddig
bináris keresési módszerrel
aztán képes 264
lépésnél jóval kevesebbõl
felderíteni a rendszerünkben
megtalálható PnP
kártyákat.Az azonosítók két 32 bit
hosszúságú mezõbõl
(ezért írtunk az elõbb
264 lépést)
és egy 8 bites
ellenõrzõösszegbõl állnak. Az
elsõ 32 bit a gyártót
azonosítja. Ugyan soha nem vallják be, de
úgy tûnik, hogy még ugyanannak a
gyártónak is lehetnek eltérõ
gyártóazonosítóval
rendelkezõ kártyái. A
gyártók számára fenntartott
32 bites mezõ ezért valamennyire
túlzás.A második 32 bit lehet a kártya
sorozatszáma vagy bárki más, amely
alapján egyértelmûen
beazonosítható. A gyártó
ugyanazzal a 32 bites értékkel nem
gyárthat egy másik kártyát, csak
abban az esetben, ha a másik 32 bit is
eltér. Ennek köszönhetõen egy
gépen belül még az azonos
típusú kártyák is el fognak
térni 64 biten.Az iménti 32 bites csoportok nem lehetnek
teljesen nullák, ezért lehetséges, hogy a
bináris keresés során a
válaszban legalább egy bit mindig aktív
lesz.Miután a rendszer sikeresen beazonosította
a rendelkezésre álló
kártyákat, egyenként újra
elindítja ezeket (ugyanazon az I/O porton
keresztül), és megpróbálja
kitalálni, hogy az adott eszközöknek milyen
erõforrásokra van szüksége, milyen
megszakítást akarnak használni stb. Az
összes kártyától lekérdezi
ezeket az információkat.Az így megszerzett információkat
aztán még kiegészíti a
merevlemezen vagy az MLB BIOS-ban található
ECU állományok tartalmával. Az ECU
és az MLB BIOS PnP támogatása
általában viszont nem valódi, és
az ilyen eszközök igazából nem is
állítanak be semmit maguktól. A BIOS
és az ECU átvizsgálása azonban
segít a felderítést végzõ
rutinnak értesíteni a tényleges PnP
eszközöket, hogy ne foglaljanak el olyan
erõforrásokat, amelyeket a rendszer nem tud
áthelyezni.Ezután a PnP eszközöket a kód
még egyszer végigjárja és
átadja nekik a
mûködésükhöz
szükséges I/O, DMA, IRQ és
memóracímek hozzárendeléseit.
Az eszközök ekkor a megadott helyeken
elérhetõvé válnak és
úgy is maradnak a rendszer következõ
indításáig, de igazából
semmi sem rögzíti ezeket.Talán túlságosan is
egyszerûsítettem a fentieket, de szerintem
már ennyi is elegendõ az alapok
megértéséhez.A µsoft; néhány elsõdleges
nyomtatási állapotot jelzõ portot
átrakott PnP-re, azzal a címszóval,
hogy egyik kártya sem kódolta át ezeket
a címeket az ellenkezõ I/O ciklusok
számára. Találtam is egy eredeti IBM
nyomtatókártyát, amely valóban
át tudta írni az állapotjelzõ
portot a PnP kezdeti változataiban, de arra a
µsoft; csak annyit mondott, hogy
fogós. Ezért a
nyomtatási állapotot jelzõ portot a
címek beállítására
használja, illetve még a
0x800-as portot és egy harmadik
I/O portot valahol a 0x200 és a
0x3ff
környékén.Hogyan lehet fõeszközazonosítót
rendelni egy általunk fejlesztett
meghajtóhoz?2003 februárja óta a &os; képes
dinamikusan és önmûködõen
futás közben lefoglalni
fõeszközazonosítókat a
meghajtóknak (lásd &man.devfs.5;),
ezért erre tulajdonképpen már nincs
szükség.A könyvtárakra vonatkozóan milyen
más kiosztási házirendek léteznek
még?A könyvtárak más fajta
kiosztására vonatkozóan annyit tudok
válaszolni, hogy a jelenleg is alkalmazott
sémát az 1983-ban megalkotott változata
óta változatlanul használjuk.
Eredetileg a gyors állományrendszerhez
készítettem, de soha nem ragaszkodtam
hozzá. Remekül megoldja a cilindercsoportok
betelésének problémáját,
azonban sokan megjegyezték már, hogy a
&man.find.1; esetén gyengén mûködik.
A legtöbb állományrendszert
mélységi bejárással
hozzák létre, így a
könyvtárak szétszóródnak a
cilindercsoportok közt és ezzel a
késõbbi mélységi keresések
számára a lehetõ legrosszabb helyzetet
alakítják ki. Ha valaki például
tudja elõre a létrehozni kívánt
könyvtárak számát, akkor ezt
úgy lehet megoldani, ha a mûvelet során
(összes / cilindercsoportok)
mennyiségû könyvtárat hozunk
létre az egyes cilindercsoportokban. Ennek
meghatározására
nyilvánvalóan lehet adni valamilyen
heurisztikát. Már egy kisebb elõre
rögzített szám, mint
például a 10 kiválasztása is
legalább egy nagyságrendnyi javulást
jelent. Ha szeretnénk
megkülönböztetni az
állományrendszerek
visszaállítását a
hagyományos mûködéstõl (amire a
jelenlegi algoritmus sokkal érzékenyebb),
akkor érdemes tizes csoportokba összefogni a
könyvtárakat, feltéve, hogy
10 másodpercen belül hoztuk létre
ezeket. Mindenesetre elmondható, hogy ezzel
nyugodtan lehet kísérletezni.&a.mckusick;, 1998 szeptembereHogyan lehet kinyerni a legtöbb
információt a rendszermag
összeomlásából?Általában így néz ki a
rendszermag összeomlása:Fatal trap 12: page fault while in kernel mode
fault virtual address = 0x40
fault code = supervisor read, page not present
instruction pointer = 0x8:0xf014a7e5
stack pointer = 0x10:0xf4ed6f24
frame pointer = 0x10:0xf4ed6f28
code segment = base 0x0, limit 0xfffff, type 0x1b
= DPL 0, pres 1, def32 1, gran 1
processor eflags = interrupt enabled, resume, IOPL = 0
current process = 80 (mount)
interrupt mask =
trap number = 12
panic: page faultAmikor egy ilyen üzenetet látunk, akkor nem
elegendõ újra elõcsalni a hibát
és beküldeni. Az
utasításszámláló
(instruction pointer) értéke
ugyan nagyon fontos, de sajnos konfigurációk
szerint eltérhet. Más szóval
úgy fogalmazhatnék, hogy ennek az
értéke a használatban levõ
rendszermag értékétõl
függõen változhat. Ha a
GENERIC rendszermagot használjuk
valamelyik kiadásból, akkor viszont már
elképzelhetõ, hogy valaki más is le tudja
nyomozni a hibát okozó függvényt.
Ha viszont egy saját
beállításokkal rendelkezõ
rendszermagot használunk, akkor egyedül csak
mi vagyunk képesek megmondani a
hiba pontos helyét.Ezért a javaslatom a következõ:Jegyezzük le az
utasításszámláló
értékét. A
0x8: rész ebben az esetben
annyira nem fontos, egyedül csak a
0xf0xxxxxx részre van
szükségünk.A rendszer újraindításakor
írjuk be a következõt:&prompt.user; nm/a.hibát.okozó.rendszermag | grep f0xxxxxxahol az f0xxxxxx az
utasításszámláló
értéke. Könnyen elõfordulhat,
hogy ilyenkor még nem találunk
egyezést, mivel a rendszermag
szimbólumtáblájában csak
az egyes függvények belépési
pontjai találhatóak, és ha az
utasításszámláló
általában valamelyikük
belsejébe mutat, nem az elejükre. Ha
tehát nem még látunk semmit,
akkor egyszerûen hagyjuk el az utolsó
számjegyet és
próbálkozzunk így:&prompt.user; nm/a.hibát.okozó.rendszermag | grep f0xxxxxHa még ez sem hoz eredményt, akkor
vágjunk le a végérõl egy
újabb számjegyet. Egészen addig
csináljuk, amíg nem kapunk valami
értékelhetõ eredményt.
Ilyennek tekintjük például azokat a
függvényeket, amelyek a hibát
okozhatták. Ez ugyan egy nem annyira pontos
felderítési eszköz, viszont
még ez is jobb a semminél.A legjobb viszont mégis az, amikor sikerül
lementeni a hiba bekövetkezésekor a memória
tartalmát, majd a &man.kgdb.1;
használatával elõbányászni
belõle egy hívási láncot.Ehhez többnyire a következõ
módszer javasolt:A rendszermag konfigurációs
állományába
(/usr/src/sys/arch/conf/RENDSZERMAGKONFIG)
vegyük fel a következõ sort:makeoptions DEBUG=-g # A rendszermag fordítása gdb(1) szimbólumokkalLépjünk be a /usr/src
könyvtárba:&prompt.root; cd/usr/srcFordítsuk le a rendszermagot:&prompt.root; makebuildkernelKERNCONF=RENDSZERMAGKONFIGVárjuk meg, amíg a &man.make.1;
befejezi a fordítást.&prompt.root; makeinstallkernelKERNCONF=RENDSZERMAGKONFIGIndítsuk újra a gépet.A KERNCONF használata
nélkül a GENERIC
rendszermag fordul és
telepítõdik.A &man.make.1; programnak a folyamat
végeredményeként két rendszermagot
kell készítenie: a
/usr/obj/usr/src/sys/RENDSZERMAGKONFIG/kernel
és a
/usr/obj/usr/src/sys/RENDSZERMAGKONFIG/kernel.debug.
Ezek közül a kernel/boot/kernel/kernel néven
mentõdik el, miközben a
kernel.debug használható
nyomonkövetésre a &man.kgdb.1;
programmal.A rendszer csak akkor fogja elmenteni
összeomláskor a memória tartalmát,
ha az /etc/rc.conf
állományban beállítjuk a
dumpdev értékét a
lapozóállományt tároló
partícióra (vagy az AUTO
értékre). Ennek hatására az
&man.rc.8; szkriptek a &man.dumpon.8; paranccsal
képesek engedélyezni a memória
lementését. A &man.dumpon.8;
természetesen manuálisan is
elindítható. Az összeomlást
követõen a memória lementett
tartalmához a &man.savecore.8; programmal
férhetünk hozzá. Amikor viszont az
/etc/rc.conf állományban
megadjuk a dumpdev
értékét, az &man.rc.8; szkriptek
maguktól lefuttatják a &man.savecore.8;
parancsot és átrakják a mentést
a /var/crash
könyvtárba.A &os; által létrehozott
memóriamentések mérete
általában a
számítógépünkben
levõ fizikai memória
mennyiségével egyezik meg. Tehát
ha 512 MB RAM van a gépünkben, akkor
egy 512 MB méretû mentést fogunk
kapni. Ezért gondoskodjunk róla, hogy a
/var/crash könyvtárban
mindig legyen elegendõ hely az
állomány tárolásához.
A &man.savecore.8; kézzel is lefuttathazó,
és ilyenkor a memóriát akár
egy másik könyvtárba is
menthetjük. A mentés méretét
options
MAXMEM=N
beállítással is
korlátozhatjuk, ahol az
N értéke a
rendszermag által használható
memória mérete KB-okban.
Például, ha 1 GB RAM van a
gépünkben, de a rendszermag által
használható memóriát
lekorlátozzuk 128 MB-ra, akkor a
mentés mérete sem 1 GB lesz, hanem
csak 128 MB.Ahogy sikerült hozzájutnunk a
memóriamentéshez, azonnal is
kérhetünk a &man.kgdb.1;
használatával egy hívási
láncot belõle:&prompt.user; kgdb/usr/obj/usr/sys/RENDSZERMAGKONFIG/kernel.debug/var/crash/vmcore.0(kgdb)backtraceElõfordulhat, hogy ilyenkor több oldalnyi
információ özönlik hirtelen a
képernyõre, ezért javasolt ezeket
lementeni a &man.script.1; programmal. A
nyomkövetési szimbólumokat is
tartalmazó rendszermag esetén még
akár azt a sort is megkapjuk a rendszermagon
belül, ahol a hiba történt. A
hívási láncot általában
alulról felfelé kell olvasni, és
ebbõl deríthetõ, hogy pontosan milyen
események is vezettek az összeomláshoz.
A &man.kgdb.1; használatával még a
különbözõ változók
és struktúrák értékeit is
meg tudjuk vizsgálni, így még
többet megtudhatunk a rendszer
állapotáról az összeomlás
pillanatában.Ha az iméntiek mentén nagyon
fellelkesültünk volna és van egy
másik
számítógépünk is, akkor a
&man.kgdb.1; akár távoli
nyomkövetésre is
beállítható, aminek
köszönhetõen a &man.kgdb.1;
használatával az egyik rendszeren meg tudjuk
állítani a másikon futó
rendszermagot, ellenõrizhetjük a
viselkedését, akárcsak
bármelyik más felhasználói
program esetében.Ha netalán engedélyeztük volna a
DDB beállítást,
és a rendszermag beleáll a
nyomkövetõbe, akkor a rendszert mi magunk is
össze tudjuk omlasztani (és így a
memóriát elmenteni) a ddb
parancssorában a panic parancs
kiadásával. Ilyenkor a nyomkövetõ
általában még egyszer megáll az
összeomláskor. Ekkor a
continue paranccsal fejeztethetjük
be a memória lementését.A dlsym() függvény
miért nem mûködik már az ELF
állományokra?Az ELF állományokhoz tartozó
segédprogramok alapértelmezés szerint nem
teszik láthatóvá a dinamikus linker
számára a végrehajtható
állományban definiált
szimbólumokat. Ennek eredményeképpen a
dlsym() a dlopen(NULL,
flags) függvénytõl kapott
információk alapján nem találja
meg a keresett szimbólumokat.Ha szükségünk lenne ilyen
keresésekre a dlsym()
használata során a program
végrehajtható állományán
belül, akkor az adott programot a
opció
megadásával kell linkelni (lásd
&man.ld.1;).Hogyan növelhetõ vagy csökkenthetõ a
rendszermag címtere &i386;
architektúrán?Az &i386; platformon a rendszermag címtere
alapértelmezés szerint 1 GB
(PAE esetén 2 GB). Ha
komolyabb hálózati forgalmat
bonyolító szerverünk van
(például egy nagyobb FTP vagy HTTP szerver)
vagy rendszerükön használni akarjuk a ZFS
állományrendszert, akkor könnyen
kifuthatunk a címtérbõl.A címtér méretének
megváltoztatásához vegyük fel a
következõ sort a rendszermag
konfigurációs
állományába, majd fordítsuk
újra a rendszermagot:options KVA_PAGES=NAz N megfelelõ
értékének
megállapításához osszuk el a
beállítani kívánt
címtér (MB-okban megadott)
méretét néggyel. (Tehát
például 2 GB esetén ez
512 lesz.)KöszönetnyilvánításEzt a szegény kis ártatlan GYIKocskát
több százan, ha nem is éppen több ezren
írták, újraírták,
szerkesztették, hajtogatták, tekergették,
csonkítgatták, kibelezték,
nézegették, összekutyulták,
emlegették, felöklendezték,
újraépítették,
javítgatták és felpezsdítették
az utóbbi években. Folyamatosan.Ezúton is szeretnénk köszönetet
mondani mindazoknak, akik gondozásukba vették,
és mindenkit csak bátorítani tudunk, hogy
csatlakozzon
hozzájuk a GYIK
továbbfejlesztésében.
&bibliography;
diff --git a/hu_HU.ISO8859-2/books/fdp-primer/sgml-markup/chapter.sgml b/hu_HU.ISO8859-2/books/fdp-primer/sgml-markup/chapter.sgml
index 557a27ff28..47e33a568b 100644
--- a/hu_HU.ISO8859-2/books/fdp-primer/sgml-markup/chapter.sgml
+++ b/hu_HU.ISO8859-2/books/fdp-primer/sgml-markup/chapter.sgml
@@ -1,3428 +1,3428 @@
Az SGML alkalmazásaEbben a fejezetben a &os; Dokumentációs Projekt
keretein belül két leggyakrabban elõforduló
jelölõnyelvet ismerhetjük meg. Az egyes szakaszokban
ezen nyelvek bemutatására, illetve jelenleg
alkalmazott vagy alkalmazandó jelölési
sajátosságaira térünk ki.Az itt tárgyalt jelölõnyelvek nagy
számú elemet tartalmaznak, és ezért
gyakorta zavarba ejtõ lehet az adott helyzetnek
leginkább megfelelõ elemek kiválasztása a
rengeteg kínálkozó alternatíva
közül. Ebben a szakaszban ezért igyekezük
érinteni az összes fontosabb elemet, valamint
példákat mutatni a megfelelõ
használatukra.Ez az összefoglalás természetesen
nem tartalmazza mindegyik elemet, mivel ezzel
lényegében a nyelv saját
dokumentációját írnánk le
ismételten. Ebben a szakaszban elsõsorban inkább
azon elemek ismertetését tûztük ki
célul, amelyek a munkánk során
valószínûleg a leghasznosabbaknak fognak
bizonyulni. A további különbözõ
jelölési megoldásokra vonatkozóan
bátran kérhetünk tanácsot a &a.doc;
tagjaitól!Belsõ elemek kontra blokkokA leírás további részeiben
belsõnek nevezzük azokat az elemeket,
amelyek szerepelhetnek blokkelemekben és nem okoznak
sortörést. Ezzel szemben viszont a
blokk formátumú elemek
feldolgozása sortörést (vagy egyéb
feldolgozási lépéseket)
eredményez.HTMLA HTML, más néven HyperText Markup Language, a
Világháló jelölõnyelve. Ezzel
kapcsolatban részlesebb leírásokat a címen
találhatunk.A HTML használata a &os; honlapján
található oldalak
készítésénél jelenik meg.
Más dokumentációkhoz azonban
(általánosságban) nem szokták
alkalmazni, mivel a DocBook ennél sokkal
bõségesebb eszközöket kínál
fel. Ennek következményeképpen tehát
többnyire csak a honlap fejlesztése során
fogunk HTML oldalakkal találkozni.A HTML létrejötte óta több
verzióváltáson is keresztülment
már, az 1, 2, 3.0, 3.2 verziókat követõen
egészen a legfrissebb 4.0 változatáig (amely
egyaránt elérhetõ
szigorú (strict) és
enyhébb (loose) formáiban
is).A HTML DTD-k a Portgyûjteménybõl a textproc/html porton keresztül
érhetõek el. A textproc/docproj port ezt automatikusan
telepíti.Formális publikus azonosítóA HTML megfelelni kívánt
verziójától (amelyet sokszor szintnek is
szoktak nevezni) függõen különbözõ
formális publikus azonosító (FPI)
áll rendelkezésünkre.A &os; honlapján található
HTML dokumentumok többsége a HTML 4.0 enyhébb
változatának felel meg:PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"A dokumentum részeiA HTML dokumentumok általános esetben
két részre oszthatóak. Az elsõ,
fejnek nevezett rész tartalmazza a
dokumentumhoz tartozó metainformációkat,
például a címét, a szerzõ
nevét, a szülõdokumentumot és így
tovább. A második,
törzsnek hívott rész
pedig a felhasználó részére
megjelenített tartalmat foglalja magában.A dokumentum ezen részeit rendre a
head (mint angolul a fej)
és a body (mint angolul a
törzs) elemekkel jelöljük. Ezeket
az elemeket végül a legfelsõbb szinten
álló html elem
tartalmazza.Egy átlagos HTML dokumentum
felépítése<html>
<head>
<title>A dokumentum címe</title>
</head>
<body>
…
</body>
</html>BlokkokFejlécekA HTML lehetõvé teszi fejlécek
jelölését egészen hat
különbözõ szintig.A legnagyobb és legkiemelkedõbb fejléc
a h1, majd ezt követi a
h2, egészen a h6
címkéig.Az elem tartalma a fejléc szövege lesz.A h1, h2, stb.
elmekA használat módja:]]>Elsõ szakasz
]]>Ez az elsõ szakasz fejléce
]]>Ez az elsõ alszakasz fejléce
]]>Ez a második szakasz fejléce
]]>
A HTML oldalaknak általában
rendelkezniük kell elsõ szintû fejléccel
(h1). Ez tetszõleges
számú második szintû fejlécet
(h2) tartalmazhat, amelyek szintén
tetszõleges mennyiségû harmadik szintû
fejlécet. Ügyeljünk arra, hogy minden
hn elem mindig a
nála eggyel nagyobb szintû elemet tartalmazza, a
sorszámozásban tehát nem javasolt
közöket hagyni.A hn
elemek helytelen sorrendjeA használati módja:]]>Elsõ szakasz
]]>Alszakasz
]]>
BekezdésekA HTML egyetlen bekezdésfajtát ismer, ez a
p.A p elemA használat módja:]]>Ez egy bekezdés. Szinte bármilyen más elemet tartalmazhat.]]>IdézetblokkokAz idézetblokkok más dokumentumok nagyobb
részeinek idézésére
használhatóak az aktuális
bekezdésen túl.A blockquote elemA használat módja:]]>Részlet a Szózatból:
]]>Hazádnak rendületlenûl
Légy híve, oh magyar,
Bölcsõd az 's majdan sírod is,
Melly ápol 's eltakar.
A' nagy világon e' kivûl
Nincsen számodra hely,
Áldjon vagy verjen sors' keze,
Itt élned, halnod kell.
Ez a' föld, mellyen annyiszor
Apáid' vére folyt;
Ez, mellyhez minden szent nevet
Egy ezredév csatolt.
Itt küzdtenek honért a' hõs
Árpádnak hadai,
Itt törtek össze rabigát
Hunyadnak karjai.
Szabadság! Itten hordozák
Véres zászlóidat,
'S elhulltanak legjobbjaink
A' hosszu harcz alatt.]]>
FelsorolásokA dokumentumokban háromféle
felsorolást használhatunk: sorszámozott,
sorszámozás nélkül és
definíciós.Röviden úgy mutathatnánk be ezeket a
formátumokat, hogy a sorszámozott
felsorolásban az elemek elé számok
kerülnek, a sorszámozás nélküli
esetben pontok, a definíciós
felsorolásban pedig a bejegyzések két
részébõl jönnek létre az
elemek. Ezek közül az elsõ részben a
meghatározandó fogalom található,
míg a második részben annak
meghatározása.A sorszámozott felsorolásokat az
ol elem jelzi, a sorszámozás
nélküli felsorolásokat az
ul elem, végül a
definíciós felsorolásokat a
dl elem.A sorszámozott és sorszámozás
nélküli felsorolások a felsorolás
elemeit tartalmazzák, amelyeket a li
elemekkel vezetünk be. A felsorolások elemeinek
szöveges tartalma lehet, vagy ha ezeket becsomagoljuk egy
vagy több p elembe, további
elemeket tartalmazhatnak.A definíciós felsorolások
meghatározandó fogalmakat (dt)
és meghatározásokat
(dd) tartalmazhatnak. A
meghatározandó fogalmat tartalmazó
részben csak belsõ elemek szerepelhetnek. A
meghatározásokban viszont további blokkok
is megjelenhetnek.Az ul és
ol elemekA használat módja:]]>Egy sorszámozás nélkül felsorolás. A felsorolás elemei elõtt minden
bizonnyal pontok fognak megjelenni.
]]>Elsõ elem
]]>Második elem
]]>Harmadik elem
]]>Egy sorszámozott lista, ahol az elemek több bekezdésbõl állnak.
Mindegyik elem (figyelem: nem mindegyik bekezdés) elõtt egy sorszámnak kell
szerepelnie.
]]>Ez az elsõ elem. Ennek csak egy bekezdése van.
]]>Ez a második elem elsõ bekezdése.
]]>Ez a második elem második bekezdése.
]]>Ez az elsõ és egyetlen bekezdés a harmadik elemben.
]]>Definíciós felsorolások a
dl elemmelA használat módja:
]]>Az elsõ fogalom meghatározásának második bekezdése.
]]>Második fogalom
]]>A második fogalom meghatározásának elsõ bekezdése.
]]>Harmadik fogalom
]]>A harmadik fogalom meghatározásának elsõ bekezdése.
]]>Formázott szövegMegadhatjuk, hogy a szöveg egyes részei
pontosan abban a formában kerüljenek a
felhasználó elé, ahogy az eredetileg
szerepel. Ilyenkor általában a szöveg
rögzített szélességû
betûtípussal jelenik meg, az egymás mellett
levõ szóközök nem vonódnak
össze, a sortörések hatása
fontossá válik.Mindezt a pre elemen keresztül
érhetjük el.A pre elemA pre elem például
remekül alkalmas e-mailek
jelölésére: From: Gabor PALI <pgj@FreeBSD.org>
To: bsd@hu.FreeBSD.org
Subject: Uj FreeBSD-cikk forditas: Naplozo UFS hasznalata asztali szamitogepeken
Kedves listatagok!
Nemreg elkeszitettem az ``Implementing UFS Journaling on a Desktop
PC'' neven szerepelo [1] FreeBSD-cikk magyar forditasat [2].
Szeretnek megkerni mindenkit, akit erdekel a honositott valtozat,
hogy olvassa el, nezze at, betatesztelje es mondjon rola velemenyt.
Egyelore meg csak a sajat Perforce repositorynkbol erheto el, de a
megadott linken naponta egyszer automatikusan frissul a HTML valtozat
a feltoltott valtoztatasok (peldaul hibajavitasok) fuggvenyeben.
Elore is nagyon szepen koszonom mindenkinek a segitseget!
:g
[1] http://www.freebsd.org/doc/en/articles/gjournal-desktop/
[2] http://people.freebsd.org/~pgj/gjournal-desktop_hu/]]>Hasznos azonban tudnunk, hogy a <
és & jelek a formázott
szövegben továbbra is speciális
jelentéssel bírnak. A példában
ezért is használtunk
< egyedeket a
< jelek helyett. Ugyanezért a
> a >
helyén is látható. Ezért mindig
körültekintõen bánjunk a nyers
szövegbõl, például e-mailbõl
vagy forráskódból bemásolt
részletekkel, és ne felejtsük el
átalakítani a bennük
található speciális
karaktereket.TáblázatokA legtöbb (Lynx-hez hasonló) szöveges
módban futó böngészõ
kifejezetten ügyetlen módon jeleníti meg
a táblázatokat. Ha az oldalon a
táblázatos felépítést
választjuk, akkor a problémák
elkerüléséhez érdemes egy
alternatív jelölési módszert
alkalmazni.A táblázatos formában
megjeleníteni kívánt
információt jelöljük a
table elemmel. A táblázatok
egy több sorból (tr mint
table row) állnak, amelyek egy vagy
több adatcellát (td mint
table data) tartalmaznak. Mindegyik cella
tartalmazhat további blokkokat, például
bekezdéseket vagy listákat, de akár
táblázatokat (ez a beágyazás
tetszõleges mélységig folytatható).
Ha a cella tartalma csak egyetlen bekezdés, akkor
nincs szükség a p elem
használatára.A table egyszerû
használataA használat módja:]]>Ez egy 2x2-es táblázat.
]]>Bal felsõ cella
]]>Jobb felsõ cella
]]>Bal alsó cella
]]>Jobb alsó cella
]]>Egy cella több sorra vagy oszlopra is
átnyúlhat. Ennek jelzéséhez a
kiterjesztendõ sorokhoz a rowspan
és/vagy oszlopokhoz a colspan
tulajdonságot adjuk meg a megfelelõ
értékkel.A rowspan tulajdonságA használat módja:]]>Egy magas keskeny cella a bal oldalon, mellette jobbra
két rövid cella.
]]>Hosszú és keskeny
]]>Felsõ cella
]]>Alsó cella
]]>A colspan tulajdonságA használat módja:]]>Felül egy hosszú cella, alatt két rövidebb cella.
]]>Felsõ cella
]]>Bal alsó cella
]]>Jobb alsó cella
]]>A rowspan és
colspan tulajdonságok
együttes használataA használat módja:]]>Egy 3x3-as rácson a bal felsõ blokk 2x2 egymásba olvasztott
cellából áll. A többi cella normális.
]]>Bal felsõ nagy cella
]]>Jobb felsõ cella
]]>Jobb középsõ cella
]]>Bal alsó cella
]]>Bal középsõ cella
]]>Jobb alsó cella
]]>Belsõ elemekAz információ kiemeléseA HTML esetén a kiemelésnek két
szintje létezik, az em és a
strong. Ezek közül az
em jelenti a hagyományos
kiemelést és a strong az
erõsebbet.Az em elem tartalma
általában dõlt betûvel jelenik meg,
miközben a strong elem tartalma
félkövéren. Ez a
megállapítás azonban nem minden esetben
igaz, ezért nem szabad semmi ilyesmit
feltételeznünk a használatukkor.A em és
strong elemekA használat módja:]]><em>Ezt</em> a részt kiemeltük, miközben <strong>ezt</strong> részt
erõsebben kiemeltük.]]>Félkövér és dõlt
formázásMivel a HTML tartalmaz konkrétan a
megjelenítésre vonatkozó
jelölõket is, ezért külön jelezni
tudjuk a forrásban, hogy a szöveg melyik
részét szeretnénk
félkövéren vagy dõlten látni.
Ezeket a funkciókat a b, illetve az
i elemekkel érhetjük el.A b és i
elemek]]><b>Ez</b> félkövér, <i>ez</i> pedig dõlt.]]>Írógépszerû
formázásAz írógépszerûen
(rögzített szélességû
karakterekkel) írt szövegek
formázásához a tt
(mint teletype) elemet
használhatjuk.A tt elemA használat módja:]]>Ezt a dokumentumot eredetileg Páli Gábor fordította,
és a következõ címen érhetõ el: <tt>pgj@FreeBSD.org</tt>.]]>MéretezésElõfordulhat, hogy szeretnénk növelni
vagy csökkenteni a szöveg
megjelenítéséhez használt
betûtípus méretét. Erre
alapvetõen három lehetõség
kínálkozik.Ágyazzuk az átméterezendõ
szöveget big és
small elemekbe. Ezeket a
címkéket tetszõleges
mélységig egymásba tudjuk
ágyazni, tehát írható olyan,
hogy <big><big>Ez már sokkal
nagyobb!</big></big>.Használjuk a font elemet,
és a size
tulajdonságát állítsuk a
+1 vagy -1
értékre. Ez hatása szerint
megegyezik a big és a
small elemek
használatával, azonban ez a
típusú megoldás már
elavult.A fontsize
tulajdonsága 1 és
7 között
állítható. A betû
alapértelmezett mérete 3.
Ez a megközelítés már
elavult.A big, small
és a font elemekA következõ kódrészleteknek
ugyanaz a hatása.]]>Ez a szöveg <small>valamivel kisebb</small>. Ez a
a szöveg viszont <big>valamivel nagyobb</big>.
]]>Ez a szöveg <font size="-1">valamivel kisebb</font>. Ez a
szöveg viszont <font size="+1">valamivel nagyobb</font>.
]]>Ez a szöveg <font size="2">valamivel kisebb</font>. Ez a
szöveg viszont <font size="4">valamivel nagyobb</font>.]]>
HivatkozásokA hivatkozások is belsõ elemek.Hivatkozás más dokumentumokra a
VilághálónA Világhálón elhelyezkedõ
dokumentumokat úgy tudjuk hivatkozni, ha ismerjük a
helyüket.A hivatkozást az a elemmel
adhatjuk meg, amelynek a href
tulajdonsága tartalmazza a hivatkozott dokumentum
helyét. Az elem tartalma ekkor egy
hivatkozássá változik, és a
felhasználó számára is jól
látható módon jelenik meg
(aláhúzással, más színnel,
más egérmutatóval és így
tovább).Az <a href="..."> elemA használat módja:]]>Erre vonatkozóan részletesebb információkat a
<a href="http://www.FreeBSD.org/">&os; honlapján</a> találhatunk.]]>Ezeket a hivatkozások a felhasználót
az adott dokumentum elejére
irányítják.A dokumentumok más részeinek
hivatkozásaA dokumentumok egyéb részeire (akár
ugyanazon a dokumentumon belül) csak akkor tudunk
hivatkozni, ha a szerzõ elõzetesen
hivatkozási pontokat helyeztünk el
bennük.Hivatkozási pontokat szintén
a elemekkel adhatunk meg, azonban a
href tulajdonság helyett a
name használatával.Az <a name="..."> elemA használat módja:]]>Ez]]> a bekezdés a hivatkozásokban a ]]>bekezd1]]>
névvel érhetõ el.]]>A dokumentum így megnevezett részét
egy egyszerû hivatkozás
készítésével tudjuk elérni,
azonban a hivatkozási pont neve elé tennünk
kell egy # jelet.Egy másik dokumentum nevesített
részének eléréseTételezzük fel, hogy a
bekezd1 példánk az
ize.html állományban
található.]]>A témáról további információkat az ]]>ize.html]]>
]]>elsõ bekezdésében]]> találhatunk.]]>Ha egy hivatkozási pontra ugyanazon a dokumentumon
belül szeretnénk hivatkozni, akkor nyugodtan
elhagyhatjuk a dokumentum nevét, elegendõ
egyszerûen magát a hivatkozási pontot
megadnunk (természetesen a hozzá tartozó
# jellel együtt).Ugyanazon dokumentum nevesített
részének eléréseTételezzük fel, hogy a
bekezd1 példa ugyanezen a
dokumentumon belül helyezkedik el:]]>A témáról további információkat az
]]>elsõ bekezdésben]]> találhatunk.]]>DocBookA DocBook jelölõnyelvet eredetileg a HaL Computer
Systems és az O'Reilly & Associates dolgozta ki a
mûszaki jellegû dokumentációk
írásáhozEnnek rövid története a
címen olvasható., illetve
1998 óta a
DocBook Mûszaki Bizottság tartja karban. Mint
ilyen nyelv, eltérõen a LinuxDoc és a HTML
megoldásaitól, a DocBook erõsen olyan
jelölések irányába
orientálódik, amelyek nem azt írják le
hogyan, hanem mit
jelenítsünk meg.Formális kontra
informálisBizonyos elemeknek létezik ún.
formális és
informális változata. A
formális változat általában egy
címbõl és az adott elem informális
változatából áll. Az
informális változat nem tartalmaz
címet.A DocBook használatához szükséges
DTD a Portgyûjteménybõl a textproc/docbook porton keresztül
érhetõ el. Ez a textproc/docproj port
részeként automatikusan
telepítõdik.A &os; kiterjesztéseiA &os; Dokumentációs Projekt kiterjesztette a
hivatalos DocBook DTD-t további elemekkel.
Segítségükkel bizonyos jelölések
sokkal pontosabbá tehetõek.A kizárólag a &os; esetén alkalmazott
elemeket egyértelmûen jelezni fogjuk a
felsorolásban.A dokumentum további részében a
DocBook kifejezés a DocBook DTD &os;
kiterjesztéseivel együtt értendõ.Szeretnénk megemlíteni, hogy a
hozzáadott kiegészítésekben azonban
semmi olyan nincs, ami kizárólag a &os;-re
vonatkozna, egyszerûen csak a Projektben felmerült
igények mentén szeretne alkalmazni
néhány javítást. Ha más
&unix; jellegû rendszerek (NetBSD, OpenBSD, Linux, stb.)
fejlesztõit esetleg érdekelné a DocBook
további fejlesztése, kérjük,
vegyék fel velünk a kapcsolatot a &a.doceng;
címén.A &os; kapcsán alkalmazott kiterjesztések
(jelenleg) nem érhetõek el a
Portgyûjteménybõl, hanem a &os; repositoryban
találjuk meg a doc/share/sgml/freebsd.dtd
helyen.Formális publikus azonosítóA DocBook a testreszabott változatok formális
publikus azonosítóira vonatkozó
irányelvei szerint a &os; kiterjesztéseivel
bõvített DocBook DTD formális publikus
azonosítója a következõ lesz:PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN"A dokumentum szerkezeteA DocBook többféle módon
kínál lehetõségeket a dokumentumok
szerkezetének kialakítására. A &os;
Dokumentációs Projektben a DocBook dokumentumok
két alapvetõ fajtáját
használjuk, a könyvet és a cikket.A könyvek fejezetekbõl
(chapter) állnak, amelyek
használata kötelezõ. A könyv és a
fejezetek közé még további
szervezési rétegként beilleszhetõek
részek (part) is.
Például a &os; kézikönyv
szerkezetét is ennek megfelelõen alakítottuk
ki.A fejezetek tartalmazhatnak (vagy sem) egy vagy több
szakaszt, amelyeket sect1 elemekkel
jelezhetünk. Amennyiben egy szakasz újabb szakaszt
tartalmaz, akkor használjuk a sect2
elemet, és így tovább egészen a
sect5 szintig.A fejezetek és a szakaszok tartalmazzák a
dokumentum tartalmának fennmaradó
részét.Egy cikk egy könyvnél egyszerûbb
felépítésû, és nem tartalmaz
fejezeteket. Helyette a cikkek tartalmát egy vagy
több szakaszba szervezzük, a könyvnél
már említett sect1
(sect2 és így tovább)
elemek segítségével.A készítendõ
dokumentációról értelemszerûen
jellegének mérlegelésével tudjuk
eldönteni, hogy könyvként esetleg
cikk-ként érdemesebb jelölni. A cikk
formátum választása leginkább olyan
információk esetén célszerû,
ahol nincs szükségünk külön
fejezetekre. Röviden szólva tehát egy
viszonylag rövid, legfeljebb 20-25 oldalas
írást takar. A könyv formátum ezzel
szemben leginkább olyan esetekben alkalmazható,
amikor az információ fejezetekre bontható,
amelyhez függelékek és hasonlók is
társulhatnak.A &os;-hez készített cikkek
mindegyikét cikk-ként jelöltük,
miközben például ez a dokumentum, a &os; GYIK, és
a &os; kézikönyv
könyvként került jelölésre.Könyv írásaA könyvek tartalmát egy
book elemben adjuk meg. Ez a
jelölõ amellett, hogy magában foglalja a
könyv teljes felépítését,
tovább információkat tud tárolni
magáról a könyvrõl. Ez lehet
akár hivatkozási célokat
szolgáló metainformáció, vagy
éppen a címlap
elkészítéséhez
szükséges egyéb
leírás.A könyvre vonatkozó további
információkat egy bookinfo
elemen belül adhatjuk meg.Egy book és
bookinfo elemek
segítségével definiált
könyvsablon<book>
<bookinfo>
<title>Ide írjuk a címet</title>
<author>
<surname>Vezetéknév</surname>
<firstname>Keresztnév</firstname>
<affiliation>
<address><email>E-mail cím</email></address>
</affiliation>
</author>
<copyright>
<year>2008</year>
<holder role="mailto:E-mail cím">Név</holder>
</copyright>
<releaseinfo>$&os;$</releaseinfo>
<abstract>
<para>Ide kerüljön a könyv tartalmának rövid összefoglalása.</para>
</abstract>
</bookinfo>
…
</book>Cikk írásaA cikk tartalma az article elembe
kerül. A dokumentum szervezésén
kívül ennek az elemnek feladata
lehetõséget kínálni további
információk elhelyezésére. Ez
lehet hivatkozási célokra alkalmas
metainformáció, vagy például a
címlap elõállításához
szükséges egyéb adatok.A cikk-kel kapcsolatos további
információk egy articleinfo
elemben adhatóak meg.Egy article és
articleinfo elemek
segítségével definiált
cikksablon<article>
<articleinfo>
<title>Ide írjuk a címet</title>
<author>
<surname>Vezetéknév</surname>
<firstname>Keresztnév</firstname>
<affiliation>
<address><email>E-mail cím</email></address>
</affiliation>
</author>
<copyright>
<year>2008</year>
<holder role="mailto:E-mail cím">Név</holder>
</copyright>
<releaseinfo>$&os;$</releaseinfo>
<abstract>
<para>Ide kerüljön a cikk tartalmának rövid összefoglalása.</para>
</abstract>
</articleinfo>
…
</article>Fejezetek készítéseA chapter elem
használatával tudunk fejezeteket jelölni.
Minden fejezetnek kötelezõen rendelkeznie kell egy
címmel, vagyis egy title elemmel. A
cikkek nem tartalmazhatnak fejezeteket,
kizárólag könyvek számára
tartják fenn.Egy egyszerû fejezet]]>Fejezetcím
...
]]>
A fejezetek nem lehetnek üresek, a
title elem mellett még tartalmazniuk
kell valamilyen másik elemet is. Az üres
fejezetek készítéséhez
használjunk egy üres bekezdést.Üres fejezetek]]>Ez egy üres fejezet
]]>Szakaszok fejezetek alattA könyvekben a fejezetek további szakaszokra,
alszakaszokra stb. bonthatóak (de nem
kötelezõ). A cikkekben azonban a szakaszok az
alapvetõ szervezõelemek, ezért minden cikknek
legalább egy szakaszt tartalmaznia kell. A szakaszok
létrehozására a
sectn elemet
használhatjuk, ahol az n
szám adja meg a szakasz szintjét.Az elsõ ilyen
sectn elem a
sect1, amelybõl egy fejezetben egy
vagy több is szerepelhet. Ezek egy vagy több
sect2 elemet tartalmazhatnak, és
így tovább egészen az
sect5 szintjéig.Szakaszok fejezetekben]]>Minta fejezet
]]>Egy kis fejezetbeli szöveg.
]]>Elsõ szakasz (1.1)
…
]]>Második szakasz (1.2)
]]>Elsõ alszakasz (1.2.1)
]]>Elsõ al-alszakasz (1.2.1.1)
…
]]>Második alszakasz (1.2.2)
…
]]>Láthatjuk, hogy ebben a példában a
szakaszok neveiben megjelenik a szakaszok
számozása. Ezt azonban ne írjuk bele a
dokumentumainkba! A szakaszok
számozását a stíluslapok
végzik (errõl még késõbb
szó lesz), ezekkel egyáltalán nem kell
foglalkoznunk.A dokumentum felosztása part
elemek használatávalA book és
chapter elemek részérõl
felkínált szervezési szintek
közé a part elemek
alkalmazásával egy újabbat tudunk
illeszteni. Erre a cikkek esetében nincs
lehetõségünk.]]>Bevezetés
]]>Áttekintés
...
]]>Mi a &os;?
...
]]>Történet
...
]]>BlokkokBekezdésekA DocBookban a bekezdések háromféle
típusát találhatjuk meg:
formalpara, para
és simpara.Az iméntiek közül a legtöbb esetben
az para elemre lesz
szükségünk. A formalpara
tartalmaz még egy title elemet,
illetve a simpara nem engedélyezi
bizonyos elemek használatát a
bekezdésben. Érdemes tehát inkább
következetesen a para
használatánál maradni.A para elemA használat módja:]]>Ez egy bekezdés. Tetszõleges egyéb elem megjelenhet benne.]]>Így jelenik meg:Ez egy bekezdés. Tetszõleges egyéb
elem megjelenhet benne.IdézetblokkokAz idézetblokkok egy másik
dokumentumból származó, kiterjedtebb
hosszúságú idézetet jelölnek,
amelyeknek az aktuális bekezdéstõl
függetlenül kell megjelenniük. Erre
valószínûleg csak nagyon ritkán lesz
ténylegesen szükségünk.Az idézetblokkok opcionálisan címeket
és szerzõt is tartalmazhatnak (de akár
szerepelhetnek cím vagy szerzõ
nélkül).A blockquote elemA használat módja:]]>Részlet Szerb Antal <quote>A Pendragon legenda</quote> címû
mûvébõl:
]]>A Pendragon legenda
]]>Szerb Antal
]]>Minden nõben azt élveztem, hogy a szimbóluma volt valaminek. Volt
nõ, akit azért szerettem, mert õ volt Svédország, volt nõ, akit azért,
mert a XVIII. századra emlékeztetett törékeny Sèvres-mivolta.
Volt, akiben Jeanne d'Arc-ot álmodtam, volt, akiben az ezermellû
ephesusi Dianát. Cynthiát, ha megcsókoltam, úgy éreztem, most az
angol szonetekkel flörtölök, ötödfeles jambusokban. Volt, akinek édes
tehénszerûségében svájci, alpesi réteket élveztem.
]]>Így jelenik meg:Részlet Szerb Antal A Pendragon
legenda címû
mûvébõl:
A Pendragon legendaSzerb AntalMinden nõben azt élveztem, hogy a
szimbóluma volt valaminek. Volt nõ, akit
azért szerettem, mert õ volt
Svédország, volt nõ, akit azért,
mert a XVIII. századra emlékeztetett
törékeny Sèvres-mivolta. Volt, akiben
Jeanne d'Arc-ot álmodtam, volt, akiben az
ezermellû ephesusi Dianát. Cynthiát,
ha megcsókoltam, úgy éreztem, most az
angol szonetekkel flörtölök,
ötödfeles jambusokban. Volt, akinek édes
tehénszerûségében svájci,
alpesi réteket élveztem.
Tanácsok, megjegyzések,
felhívások, figyelmeztetések, fontos
és mellékes információkEsetenként szükségünk lehet arra,
hogy bizonyos többletinformációt
közöljünk az olvasóval a
szövegtõl elkülöníthetõ
módon. Ez többnyire olyan
metainformáció, amelyre a
felhasználónak tekintettel érdemes
lennie.Az adott információ jellegétõl
függõen erre a célra a tip
(tanács), note (megjegyzés),
warning (felhívás),
caution (figyelmeztetés) és
important (fontos információ)
elemek valamelyikét tudjuk használni.
Amennyiben a közölni kívánt
információ kötõdik ugyan a
szöveghez, azonban az elõbbiek közül egyik
kategóriába sem sorolható be, akkor
használhatjuk a sidebar
(mellékinformáció) elemet is.Nem teljesen tisztázott, hogy az imént
felsorolt elemek közül pontosan mikor melyiket kell
alkalmazni. A DocBook dokumentációja ezzel
kapcsolatban a következõket javasolja:A note elemek olyan
információkat jelölnek, amelyek az
olvasó részérõl
megszivlelendõek.Az important elemek a
note elemek egyik
változata.A caution elemmel olyan
információt jelölnek, amelyek
ismeretének hiányában
adatvesztés vagy szoftveres károdás
következhet be.A warning elemek olyan
információkat jelölnek, amelyek
ismeretének hiánya hardver
károsodását,
életveszélyt vagy a végtagok
sérülését
eredményezheti.A warning elemA használat módja:]]>A &os; telepítése után könnyen elõfordulhat, hogy a Windowst
teljesen le akarjuk törölni a merevlemezünkrõl.
]]>Így jelenik meg:A &os; telepítése után könnyen
elõfordulhat, hogy a Windowst teljesen le akarjuk
törölni a merevlemezünkrõl.Felsorolások és
eljárásokGyakran adódhatnak olyan helyzetek, amikor az
olvasó felé fel kell sorolnunk valamilyen
információkat, vagy egy adott cél
elérése érdekében be kell
mutatnunk neki egy sorszámozott, egyenként
végrehajtandó
lépéssorozatot.Erre a célra rendelkezésünkre
állnak az itemizedlist, az
orderedlist, illetve a
procedure elemekA felsorolások megadására a
DocBook további lehetõségeket is
felkínál, azonban ezekkel itt most nem
foglalkozunk..Az itemizedlist és az
orderedlist elemek hasonlóak az HTML
esetén már megismert megfelelõikhez, az
ul és ol
elemekhez. Egy vagy több listitem
elembõl állnak és mindegyik
listitem egy vagy több blokkot
tartalmaz. A listitem elemek a HTML
li elemeihez hasonlóak, azonban
ebben az esetben kötelezõ megadni ezeket.A procedure elem ettõl
némileg eltér. Itt step
elemekbõl épül fel, amelyek további
step vagy substep
típusú elemeket foglalhatnak magukban. A
step elemek mindegyike blokkokat
tartalmaz.Az itemizedlist,
orderedlist és
procedure elemekA használat módja:]]>Ez a felsorolás elsõ eleme.
]]>A a felsorolás második eleme.
]]>Ez az elsõ sorszámozott elem.
]]>Ez a második sorszámozott elem.
]]>Csináljuk ezt.
]]>Majd csináljuk azt.
]]>Most pedig csináljuk így.
]]>Így jelenik meg:Ez a felsorolás elsõ eleme.Ez a felsorolás második eleme.Ez az elsõ sorszámozott elem.Ez a második sorszámozott elem.Csináljuk ezt.Majd csináljuk azt.Most pedig csináljuk így.Példák állományokraHa állományrészeket (vagy akár
teljes állományokat) akarunk bemutatni az
olvasónak, akkor érdemes ezeket egy
programlisting elembe illeszteni.A programlisting elemeken belül
alkalmazott tördelés és a
sortörések helye jelentéssel
bír. Ennek egyik fontos
következménye, hogy a
nyitócímkének az állomány
tartalmának elsõ sorával együtt kell
megjelennie, illetve a
zárócímkének pedig az
utolsó sorban, ellenkezõ esetben üres sorok
fognak keletkezni a kimenetben.A programlisting elemA használat módja:]]>Miután befejeztük a feladatot, a programunknak valahogy így kell
majd kinéznie:
#include <stdio.h>
int
main(void)
{
printf("]]>Halló mindenki!]]>Láthatjuk, hogy az #include
után a relációs jeleket nem
közvetlenül adtuk meg, hanem a nekik
megfelelõ egyedekkel.Így jelenik meg:Miután befejeztük a feladatot, a
programunknak valahogy így kell majd
kinéznie:#include <stdio.h>
int
main(void)
{
printf("Halló mindenki!\n");
}Magyarázó szövegekA magyarázó szövegek
használatával a szöveg egy korábbi
részére vagy egy korábbi példa
adott helyére tudunk visszahivatkozni
anélkül, hogy a szövegen magán
belül hivatkoznánk rá.Ehhez a co elem
használatával jelöljük be a példa
(programlisting,
literallayout vagy bármi más)
fontosabb részeit. Mindegyik elemhez egy egyedi
azonosítót kell társítanunk. A
példa után helyezzünk el egy
calloutlist elemet, amelyben a
megfelelõ további magyarázat
megadásával együtt visszahivatkozunk a
példa egyes részeire.A co és
calloutlist elemek]]>Miután befejeztük a feladatot, a programunknak valahogy így kell
majd kinéznie:
#include <stdio.h>
int
main(void)
{
printf("]]>Halló mindenki!
}]]>A szabványos állománymûveleteket tartalmazó header
állomány.
]]>Megadjuk, hogy a <function>main()</function> függvény egy
<literal>int</literal> típusú értékkel térjen vissza.
]]>A <function>printf()</function> hívással egy
<literal>Halló mindenki!</literal> szöveget írunk ki a szabványos
kimenetre.
]]>Így jelenik meg:Miután befejeztük a feladatot, a
programunknak valahogy így kell majd
kinéznie:#include <stdio.h>
int
main(void)
{
printf("Halló mindenki!\n");
}A szabványos
állománymûveleteket tartalmazó
header állomány.Megadjuk, hogy a main()
függvény egy int
típusú értékkel
térjen vissza.A printf()
hívással egy Halló
mindenki! szöveget írunk ki a
szabványos kimenetre.TáblázatokA HTML kapcsán megismertektõl
eltérõen a szöveg elrendezésének
befolyásolásához nem kell
táblázatokat használnunk, mivel
errõl majd a stíluslapok gondoskodnak
helyettünk. Ehelyett egyszerûen csak akkor
használjunk táblázatokat, amikor
táblázatosan akarunk adatokat megadni.Általános értelemben véve
(ennek további részleteit lásd a DocBook
leírásában) a táblázatok
(amelyek lehetnek formálisak vagy informálisak)
egy table elembõl állnak.
Ennek magában kell foglalnia legalább egy
csoportot jelölõ tgroup elemet,
amely (tulajdonságként) megadja, hogy benne
mennyi oszlop található. Ezekben a csoportokban
aztán a thead elemmel
fejlécet adhatunk meg az egyes oszlopoknak, illetve
azok törzseit pedig tbody elemek
specifikálják.A tgroup és
thead elemek egyaránt tartalmaznak
row elemeket, amelyek pedig
entry elemekre bonthatóak
tovább. Mindegyik ilyen entry elem
a táblázat egy celláját
jelöli.Az informaltable elemA használat módja:]]>Ez az elsõ oszlop fejléce
]]>Ez a második oszlop fejléce
]]>Elsõ oszlop, elsõ sor
]]>Második oszlop, elsõ sor
]]>Elsõ oszlop, második sor
]]>Második oszlop, második sor
]]>Így jelenik meg:Ez az elsõ oszlop fejléceEz a második oszlop fejléceElsõ oszlop, elsõ sorMásodik oszlop, elsõ sorElsõ oszlop, második sorMásodik oszlop, második sorAz informaltable elemek esetén a
pgwide tulajdonságot mindig az
1 értékkel használjuk,
ellenkezõ esetben az Internet Explorer egyik
hibája miatt a táblázat nem fog rendesen
megjelenni.Amennyiben nem szeretnénk keretet a
táblázathoz, állítsuk az
informaltable elem frame
tulajdonságát a none
értékre (vagyis <informaltable
frame="none">).A frame="none" típusú
táblázatÍgy jelenik meg:Ez az elsõ oszlop fejléceEz a második oszlop fejléceElsõ oszlop, elsõ sorMásodik oszlop, elsõ sorElsõ oszlop, második sorMásodik oszlop, második sorPéldák mûveletekreRengetegszer elõfordulhat, hogy az olvasónak
valamilyen módon be kell mutatnunk miként kell egy
bizonyos feladatot megoldania a rendszerben. Ezek a
példák általában valamilyen
párbeszédet jelentek a
számítógéppel: az olvasó
begépel egy parancsot, amelyre kap egy választ,
majd begépel egy újabb parancsot és
így tovább.Ilyen helyzetek több különbözõ
elem és egyed alkalmazható.A screen elemAz olvasó a példával
kapcsolatos információkat a elsõsorban
képernyõrõl kapja, ennek
jelölésére használjuk a
screen elemet.A screen elemeken belül
számít a szöveg
tördelése.A prompt elem,
&prompt.root; és
&prompt.user; egyedekAz olvasó a képernyõn mindig
valamilyen promptot is látni fog (ez lehet az
operációs rendszer, a
parancsértelmezõ vagy az adott
alkalmazás). Ezt a prompt
elemmel tudjuk jelölni.Az egyszerû felhasználó és
a rendszergazda számára két
külön egyed létezik a parancssori
promptok jelölésére. Amikor
tehát az olvasónak egy paranccsorban kell
tevékenykednie, akkor a
&prompt.root; vagy a
&prompt.user; egyedek
valamelyikét használjuk. Ezeket nem kell
prompt elembe tenni.A &prompt.root; és
&prompt.user; egyedek nem
részei az eredeti DocBook DTD-nek,
csupán a &os; kiterjesztései.A userinput elemA példában az olvasó
által begépelendõ részeket
tegyük userinput elemekbe. Ez
az olvasó felé
valószínûleg majd
másképpen jelenik meg.A screen, prompt
és userinput elemekA használat módja:&prompt.user; ls -1
ize1
ize2
ize3
&prompt.user; ls -1 | grep ize2
ize2
&prompt.user; suPassword:
&prompt.root; cat ize2
]]>Ez lenne az 'ize2' nevû állomány.]]>Így jelenik meg:&prompt.user; ls -1
ize1
ize2
ize3
&prompt.user; ls -1 | grep ize2
ize2
&prompt.user; suPassword:
&prompt.root; cat ize2
Ez lenne az 'ize2' nevû állomány.Annak ellenére, hogy a példában
szerepeltettük az ize2
állomány tartalmát,
nem a programlisting
elemmel jelöltük. A
programlisting elemeket inkább
állományrészletek
jelölésében alkalmazzuk,
függetlenül az olvasó
részérõl várt
mûveletektõl.Belsõ elemekAz információ kiemeléseAz egyes szavak vagy kifejezések
kiemeléséhez alkalmazzuk az
emphasis elemet. Ennek
hatására a kiemelt szövegrész
dõlten, esetleg félkövéren jelenik
meg, illetve a különbözõ felolvasó
szoftverek más hangsúlyozással
mondják el.A kiemelt szövegrészek tényleges
megjelenését nem tudjuk befolyásolni, nem
tekinthetõ egyenlõnek a HTML b
és i elemeivel. Ha fontos
információt kívánunk
közölni, akkor az emphasis
helyett érdemesebb inkább az
important elem használatát
megfontolni.Az emphasis elemA használat módja:]]>A &os; az Intel architektúrán kétség kívül
<emphasis>a</emphasis> legjobb UNIX-szerû operációs rendszer.]]>Így jelenik meg:A &os; az Intel architektúrán
kétség kívül a
legjobb UNIX-szerû operációs
rendszer.IdézetekHa más dokumentumokból vagy
forrásból akarunk idézni a szövegben,
esetleg valamire csak képletesen szeretnénk
utalni, akkor használjuk a quote
elemet. A quote elemen belül a
legtöbb jelölõ elérhetõ a
szövegben.IdézetekA használat módja:]]>Arra viszont ügyeljünk, hogy hogy a keresési rend ne lépje át a
<quote>helyi és nyilvános adminisztráció között meghúzódó
határt</quote>, ahogy azt az RFC 1535 nevezi.]]>Így jelenik meg:Arra viszont ügyeljünk, hogy hogy a
keresési rend ne lépje át a helyi
és nyilvános adminisztráció
között meghúzódó
határt, ahogy azt az RFC 1535 nevezi.Billentyûk, egérgombok és azok
kombinációjaA billentyûzeten egy adott billentyûre a
keycap elem
segítségével tudunk hivatkozni. Ugyanezt
a lehetõséget az egér gombjaira
vonatkozóan a mousebutton elem
nyújta. A billentyûk és egérgombok
együttes használatát pedig a
keycombo elemmel tudjuk
jelölni.A keycombo elemnek van egy
action (tevékenység)
nevû tulajdonsága, amely lehet
click (kattintás),
double-click (kettõs
kattintás), other (egyéb),
press (nyomva tartás),
seq (egymás utáni), illetve
simul (együttes használat). Az
utóbbi két értékkel
jelölhetjük, hogy a megadott billentyûket vagy
gombokat egymás után esetleg egyszerre kell
lenyomnunk.Az elemben felsorolt billentyûk és gombok
nevei közé a stíluslapok automatikusan
beillesztik a megfelelõ összekapcsoló
szimbólumot, például a
+ jelet.Billentyûk, egérgombok és azok
kombinációjaA használat módja:]]>A második virtuális terminálra az <keycombo
action="simul"><keycap>Alt</keycap><keycap>F1</keycap></keycombo>
billentyûkombinációval tudunk
átváltani.
]]>A <command>vi</command> programból úgy tudunk mentés nélkül kilépni, ha begépeljük a <keycombo
action="seq"><keycap>Esc</keycap><keycap>:</keycap>
<keycap>q</keycap><keycap>!</keycap></keycombo> sorozatot.
]]>Az ablakkezelõt most úgy állítottuk be, hogy az <keycombo
action="simul"><keycap>Alt</keycap>
<mousebutton>jobb</mousebutton></keycombo> egérgomb segítségével
tudjuk mozgatni az ablakokat.]]>Így jelenik meg:A második virtuális terminálra az
AltF1
billentyûkombinációval tudunk
átváltani.A vi programból úgy
tudunk mentés nélkül kilépni, ha
begépeljük az Esc:q!
sorozatot.Az ablakkezelõt most úgy
állítottuk be, hogy az Altjobb
egyérgomb segítségével tudjuk
mozgatni az ablakokat.Alkalmazások, parancsok, kapcsolók
és man hivatkozásokNem szokatlan az igény, hogy a
dokumentáció írása során
gyakran szeretnénk hivatkozni alkalmazásokra
és parancsokra egyaránt. A két fajta
elem közti különbség egyszerû: az
alkalmazás az adott feladatot
megvalósító programcsomag (vagy program)
neve, miközben a parancs konkrétan annak a
programnak a neve, amelyet az olvasó futtatni
tud.Mindezek mellett alkalmanként
szükségünk lehet arra, hogy a parancs
által várt egy vagy több paramétert
valamilyen módon felsoroljuk.Végül hozzátesszük, hogy sokszor
szükségünk lehet a parancsokat a
hozzájuk tartozó man oldalakkal együtt
hivatkozni, a UNIX típusú
kézikönyvek megszokott
parancs(szám)
jelölésben.Az alkalmazások neveit az
application elemmel tudjuk
jelölni.Ha egy parancsot a hozzá tartozó man oldallal
együtt akarunk hivatkozni (amire
valószínûleg az esetek nagy
többségében szükségünk is
lesz), akkor az ennek megfelelõ Docbook elem a
citerefentry lesz. Ez további
két elemet tartalmaz, ezek a
refentrytitle és a
manvolnum. A
refentrytitle tartalma a parancs neve,
illetve a manvolnum lesz a
hozzá tartozó man oldal megfelelõ
szekciója.Az iménti jelölések írása
esetenként nehézkesnek bizonyulhat, ezért
ennek megkönnyítésére
létrehoztunk általános egyedeket.
Az egyedek
&man.man-oldal.man-szekció;
alakban érhetõek el.Ezeket az egyedeket a
doc/share/sgml/man-refs.ent
állományban találjuk meg, amelyre a
következõ formális publikus
azonosító segítségével
tudunk hivatkozni:PUBLIC "-//FreeBSD//ENTITIES DocBook Manual Page Entities//EN"Ezért tehát a dokumentumunk elején
minden bizonnyal szerepelni fog egy ilyen sor:<!DOCTYPE book PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
<!ENTITY % man PUBLIC "-//FreeBSD//ENTITIES DocBook Manual Page Entities//EN">
%man;
…
]>A command elemmel a parancsok neveit
tudjuk a szövegben hivatkozni közvetlenül, az
olvasó által begépelendõ
formában.Az option elem
segítségével a parancsok
számára megadható kapcsolókat
jelölhetjük.Amikor többször ugyanarra a parancsra
hivatkozunk egymáshoz viszonylag közel, a
&man.parancs.szekció;
típusú jelölést érdemes csak
az elsõ hivatkozásnál alkalmazni, a
többi inkább legyen egyszerûen csak
command elemben. Az ebbõl
készített kimenet, különösen a
HTML esetében így kinézetében
sokkal olvashatóbb.A jelölési megoldások közti
választás ettõl függetlenül
idõnként nem mindig egyértelmû, de
remélhetõleg a következõ példa
segít ebben.Alkalmazások, parancsok és
kapcsolókA használat módja:]]>A <application>sendmail</application> az egyik legelterjedtebb
levelezõ alkalmazás UNIX rendszereken.
]]>A <application>sendmail</application> alkalmazás részei a
<citerefentry>
<refentrytitle>sendmail</refentrytitle>
<manvolnum>8</manvolnum>
</citerefentry>, &man.mailq.1; és &man.newaliases.1;
programok.
]]>A <citerefentry>
<refentrytitle>sendmail</refentrytitle>
<manvolnum>8</manvolnum>
</citerefentry> egyik kapcsolója a <option>-bp</option>, amellyel a
levelezési sorban található üzenetek aktuális állapotát kérdezhetjük
le. Ezt a <command>sendmail -bp</command> parancs kiadásával tehetjük
meg.]]>Így jelenik meg:A sendmail az egyik
legelterjedtebb levelezõ alkalmazás UNIX
rendszereken.A sendmail alkalmazás
részei a sendmail8, &man.mailq.1; és &man.newaliases.1;
programok.A sendmail8 egyik kapcsolója a
, amellyel a levelezési sorban
található üzenetek aktuális
állapotát kérdezhetjük le. Ezt a
sendmail -bp parancs
kiadásával tehetjük meg.Figyeljük meg, hogy a
&man.parancs.szekció;
jelölés mennyivel könnyebben
olvasható.Állományok, könyvtárak,
kiterjesztésekAmikor állományok neveire,
könyvtárakra, esetleg kiterjesztésekre
akarunk hivatkozni, használjunk a
filename elemeket.A filename elemA használat módja:]]>A kézikönyv magyar változatának SGML forrása a <filename
class="directory">/usr/doc/hu_HU.ISO8859-2/books/handbook/</filename>
könyvtárban található. Ebben a könyvtárban a
<filename>book.sgml</filename> lesz a fõ forrásállomány. Mellette
láthatunk még egy <filename>Makefile</filename> állományt és több
<filename>.ent</filename> kiterjesztéssel rendelkezõ
állományt.]]>Így jelenik meg:A kézikönyv magyar
változatának SGML forrása a /usr/doc/hu_HU.ISO8859-2/books/handbook
könyvtárban található. Ebben a
könyvtárban a book.sgml lesz
a fõ forrásállomány. Mellette
találhatunk még egy
Makefile állományt
és több .ent
kiterjesztéssel rendelkezõ
állományt.A portok neveiA &os; kiterjesztéseEzek az elemek a &os; DocBookhoz készített
kiterjesztéseinek részei, az eredeti DocBook
DTD-ben nem szerepelnek.Esetenként szükségünk lehet a &os;
Portgyûjteményében található
bizonyos programok nevének
megemlítésére a
dokumentációban. Ezt a
filename elem role
tulajdonságának a package
értékre állításával
tehetjük meg. Mivel a Portgyûjtemény
tetszõleges helyre telepíthetõ, ezért
mindig csak a port kategóriáját és
nevét adjuk meg, a /usr/ports
rész elhagyásával.A filename elem és a
package role együttes
használataA használat módja:]]>A hálózati forgalom figyeléséhez telepítsük a <filename
role="package">net/ethereal</filename> portot.]]>Így jelenik meg:A hálózati forgalom
figyeléséhez telepítsük a net/ethereal portot.EszközökA &os; kiterjesztéseEzek az elemek a &os; DocBookhoz készített
kiterjesztéseinek részei, az eredeti DocBook
DTD-ben nem szerepelnek.Az eszközök hivatkozását
két módon jelölhetjük. Az eszközre
hivatkozhatunk a /dev
könyvtárban megjelenõ neve szerint, vagy
pedig a rendszermagbeli neve szerint. Ez utóbbi
esetben használjuk a devicename
jelölést.Néha elõfordulhat, hogy nincs
választási lehetõségünk.
Bizonyos eszközök, például a
hálózati kártyákhoz nem tartozik
semmilyen bejegyzés a /dev
könyvtárban, esetleg az ott megjelenõ
nevük teljesen eltér.A devicename elemA használat módja:]]>A &os; rendszermagjában a <devicename>sio</devicename>
eszközöket a soros vonali kommunikációra használjuk. A
<devicename>sio</devicename> eszközök az idõk során több különbözõ
alakban jelentek meg a <filename>/dev</filename> könyvtárban, például
<filename>/dev/ttyd0</filename> és <filename>/dev/cuaa0</filename>
néven.
]]>Ezzel szemben a hálózati eszközök, mint például az
<devicename>ed0</devicename> nem jelennek meg a
<filename>/dev</filename> könyvtárban.
]]>Az MS-DOS rendszerekben az elsõdleges hajlékonylemezes meghajtót
az <devicename>a:</devicename> néven érhetjük el, miközben &os;
alatt ennek a neve <filename>/dev/fd0</filename>.]]>Így jelenik meg:A &os; rendszermagjában a
sio eszközöket a soros
vonali kommunikációra használjuk. A
sio eszközök az idõk
során több különbözõ alakban
jelentek meg a /dev
könyvtárban, például
/dev/ttyd0 és
/dev/cuaa0 néven.Ezzel szemben a hálózati
eszközök, mint például az
ed0 nem jelennek meg a
/dev könyvtárban.Az MS-DOS rendszerekben az elsõdleges
hajlékonylemezes meghajtót az
a: néven
érhetjük el, miközben &os; alatt ennek a
neve /dev/fd0.Hálózati nevek, tartományok,
IP-címek és így továbbA &os; kiterjesztéseEzek az elemek a &os; DocBookhoz készített
kiterjesztéseinek részei, az eredeti DocBook
DTD-ben nem szerepelnek.A vonatkozó információ
jellegétõl függõen a
hálózatba kapcsolt
számítógépek
azonosítására szolgáló
adatatokat többféle módon is jelölni
tudjuk. Minden esetben a hostid elemre
fogunk támaszkodni, amely role
tulajdonságával tudjuk megválasztani a
jelölt információ
típusát.Nem szerepel a role
tulajdonság vagy
role="hostname"A role tulajdonság
megadása nélkül (vagyis az elem
hostid…/hostid
alakú) a jelölt információ egy
hálózati név, mint
például freefall vagy
disznohal. Ugyanezt explicit
módon a role="hostname"
hozzáadásával tudjuk
jelölni.role="domainname"Az elem tartalma egy tartomány nevét
jelöli, mint például
FreeBSD.org vagy
inf.elte.hu. Ekkor nincs benne
konkrét hálózati név.role="fqdn"Az elem tartalma egy teljes hálózati
név, amely már tartalmaz
tartománynevet és hálózati
nevet.role="ipaddr"Az elem egy IP-címet jelöl, négy,
pontokkal tagolt szám
formájában.role="ip6addr"Az elem egy IPv6 formátumú
IP-címet jelöl.role="netmask"Az elem tartalma egy hálózati maszk,
amelyet megadhatunk pontokkal elválasztott
számokkal, hexadecimális
számjegyekkel vagy a /
szimbólumot követõen egy
számmal.role="mac"Az elemben egy Ethernet MAC-címet adtunk meg,
kétjegyû hexadecimális számok
kettõspontokkal tagolt sorozataként.A hostid elem és a
különbözõ role
értékekA használat módja:]]>A gépünk mindig elérhetõ <hostid>localhost</hostid> néven,
amelyhez a <hostid role="ipaddr">127.0.0.1</hostid> IP-cím
tartozik.
]]>A <hostid role="domainname">FreeBSD.org</hostid> tartomány több
különbözõ gépet foglal magában, többek közt a <hostid
role="fqdn">freefall.FreeBSD.org</hostid> és <hostid
role="fqdn">pointyhat.FreeBSD.org</hostid> címeket.
]]>Amikor egy interfészhez IP-álnéveket társítunk (az
<command>ifconfig</command> paranccsal), akkor ehhez
<emphasis>mindig</emphasis> a <hostid
role="netmask">255.255.255.255</hostid> hálózati maszkot adjuk meg
(amelyet <hostid role="netmask">0xffffffff</hostid> formában is
írhatunk).
]]>A MAC-cím az összes létezõ hálózati eszközt egyértelmûen
azonosítja. A MAC-címek általában a <hostid
role="mac">08:00:20:87:ef:d0</hostid> címhez hasonlóak.]]>Így jelenik meg:A gépünk mindig elérhetõ
localhost néven, amelyhez a 127.0.0.1 IP-cím tartozik.A FreeBSD.org
tartomány több különbözõ
gépet foglal magában, többek közt a
freefall.FreeBSD.org és
pointyhat.FreeBSD.org
címeket.Amikor egy interfészhez
IP-álnéveket társítunk (az
ifconfig paranccsal), akkor ehhez
mindig a 255.255.255.255
hálózati maszkot adjuk meg (amelyet 0xffffffff formában is
írhatunk).A MAC-cím az összes létezõ
hálózati eszközt egyértelmûen
azonosítja. A MAC-címek
általában a 08:00:20:87:ef:d0 címhez
hasonlóak.Felhasználói nevekA &os; kiterjesztéseEzek az elemek a &os; DocBookhoz készített
kiterjesztéseinek részei, az eredeti DocBook
DTD-ben nem szerepelnek.Ha felhasználókra (például
root vagy bin) kell
hivatkoznunk a szövegben, használjuk a
username elemet.A username elemA felhasználás módja:]]>A rendszerünk karbantartásával kapcsolatos legtöbb feladatot
kizárólag csak a <username>root</username> felhasználóval tudjuk
elvégezni.]]>Így jelenik meg:A rendszerünk karbantartásával
kapcsolatos legtöbb feladatot kizárólag
csak a root
felhasználóval tudjuk elvégezni.A Makefile
állományokkal kapcsolatos
jelölésekA &os; kiterjesztéseEzek az elemek a &os; DocBookhoz készített
kiterjesztéseinek részei, az eredeti DocBook
DTD-ben nem szerepelnek.A Makefile állományok
egyes részeinek jelöléséhez a
maketarget és
makevar elemeket tudjuk
használni.A maketarget azokat a
Makefile állományokban
megadott fordítási célokat
azonosítja, amelyeket a make
paramétereként lehet használni. A
makevar pedig azokat a (környezetben,
a make hívásakor vagy a
Makefile állományon
belül definiált) változókat
azonosítja, amelyekkel a fordítás
folyamát lehet szabályozni.A maketarget és a
makevar elemekA használat módja:]]>A <filename>Makefile</filename> állományokban két igen gyakori cél
az <maketarget>all</maketarget> és a
<maketarget>clean</maketarget>.
]]>Az <maketarget>all</maketarget> megadásakor általában
újrafordítjuk az alkalmazást, a <maketarget>clean</maketarget>
megadásakor pedig eltávolítjuk a fordítás közben keletkezett
ideiglenes állományokat (például az <filename>.o</filename>
állományokat).
]]>A <maketarget>clean</maketarget> viselkedését számos változó
befolyásolja, többek közt a <makevar>CLOBBER</makevar> és a
<makevar>RECURSE</makevar>.]]>Így jelenik meg:A Makefile
állományokban két igen gyakori
cél az all és a
clean.Az all megadásakor
általában újrafordítjuk az
alkalmazást, a clean
megadásakor pedig eltávolítjuk a
fordítás közben keletkezett ideiglenes
állományokat (például az
.o állományokat).A clean
viselkedését számos változó
befolyásolja, többek közt a
CLOBBER és a
RECURSE.Formázatlan szövegSokszor lehet szükségünk
formázatlan szövegekre a
dokumentáció írása közben.
Ilyen szöveg jellemzõ módon egy valamelyik
másik állományból átvett
részlet, vagy amelyet magából a
dokumentációból kell szó szerint
átmásolni egy állományba.Néhány esetben a korábban már
bemutatott programlisting pontosan
elegendõ ehhez a feladathoz. Azonban ez a
jelölési módszer nem minden esetben
megfelelõ, különösen olyan helyzetekben,
amikor az állomány egy részét
magába a bekezdésbe akarjuk tenni.Ilyen alkalmakkor használjuk a
literal elemet.A literal elemA használat módja:]]>A rendszermag konfigurációs állományában a
<literal>maxusers 10</literal> sor határozza meg különbözõ
rendszerszintû táblázatok méretét, és ezáltal ad egy durva becslést
arra, hogy a rendszerünk mennyi bejelentkezést lesz képes egyszerre
kezelni.]]>Így jelenik meg:A rendszermag konfigurációs
állományában a maxusers 10
sor határozza meg különbözõ
rendszerszintû táblázatok
méretét, és ezáltal ad egy durva
becslést arra, hogy a rendszerünk mennyi
bejelentkezést lesz képes egyszerre
kezelni.Az olvasó által
kötelezõen kitöltendõ
részek jelöléseMinden bizonnyal lesznek olyan részek a
dokumentációban, ahol meg szeretnénk
mutatni az olvasónak mit kell csinálnia, esetleg
hivatkozni akarunk egy állomány nevére
vagy egy parancsra stb., viszont nem közvetlenül a
megadott nevet kell bemásolnia, hanem
önmagától kell kipótolnia egy
sémát.Pontosan ilyen eshetõségekre
találták ki a replaceable
elemet. Más elemeken belül
használva olyan részeket tudunk vele
megjelölni, amelyeket az olvasónak kell
kitöltenie.A replaceable elemA használat módja:&prompt.user; man ]]>parancs]]>Így jelenik meg:&prompt.user; man parancsA replaceable több
különbözõ elemen belül is
alkalmazható, egyik ilyen a
literal. Ebben a példában
azt is megmutatjuk, hogy a replaceable
elembe ténylegesen csak azt a részt kell
tennünk, amelyet az
olvasónak kell hozzátennie, rajta
kívül semmi mást nem kell
megváltoztatnia.A használat módja:]]>A rendszermag konfigurációs állományában a <literal>maxusers <replaceable>n</replaceable></literal> sor határozza
meg különbözõ rendszerszintû táblázatok méretét, és ezáltal ad egy
durva becslést arra, hogy a rendszerünk mennyi bejelentkezést
lesz képes egyszerre kezelni.
]]>Asztali munkaállomások esetén az n helyére írhatjuk például a <literal>32</literal>
értéket.]]>Így jelenik meg:A rendszermag konfigurációs
állományában a maxusers
n
sor határozza meg különbözõ
rendszerszintû táblázatok
méretét, és ezáltal ad egy durva
becslést arra, hogy a rendszerünk mennyi
bejelentkezést lesz képes egyszerre
kezelni.Asztali munkaállomások esetén az
n helyére írhatjuk
például a 32
értéket.Hibaüzenetek idézéseOlykor szükségünk lehet a &os;
által jelzett hibák jelölésére.
A hibák során keletkezõ pontos
hibaüzeneteket tegyük errorname
elemekbe.Az errorname elemA használat módja:Panic: cannot mount root]]>
Így jelenik meg:Panic: cannot mount rootKépekA dokumentációban a képek
használatának támogatása jelen
pillanatban még csak kísérleti
jellegû. Az itt leírt ismeretek
valószínûleg nem fognak változni, de
nem szavatoljuk.A különféle képformátumok
közti átalakításokhoz még
telepítenünk kell a graphics/ImageMagick portot. Ez egy
nagy méretû port és a legtöbb
részére nincs is konkrétan
szükségünk, viszont jelentõsen meg tudja
könnyíteni a dolgunkat, amikor
Makefile állományokkal
és egyéb infrastrukturális elemekkel
dolgozunk. Ez a port nem része a
textproc/docproj
metaportnak, külön kell egyedileg
telepítenünk.A képek használatára talán a
legjobb példát a
doc/en_US.ISO8859-1/articles/vm-design
szolgáltatja. Ha tehát nem
értenénk teljesen a szakaszban leírtakat,
nézzük meg ezt az állományt
és a gyakorlatban is látni fogjuk hogyan
kapcsolódnak össze az felhasznált elemek.
Ne restelljünk kísérletezgetni a
különbözõ formázási
stílusokkal, így láthatjuk miként
jelennek meg a jelölt képek a formázott
kimenetben.KépformátumokJelenleg kétféle képformátum
támogatott. A beillesztendõ kép
jellegétõl függ, hogy ezek közül
ténylegesen melyiket kell majd használnunk a
dokumentumban.Az alapvetõen vektoros szerkezetû
képeket, mint például a
hálózati kapcsolatokat bemutató
diagramokat, idõvonalakat és ehhez
hasonlókat Encapsulated Postscript formátumban
érdemes ábrázolnunk. Gondoskodjunk
róla, hogy ezek a képek
.eps kiterjesztéssel
rendelkezzenek.A raszteres képeket, mint például a
képernyõ elmentett tartalmát Portable Network
Graphic formátumban készítsük el.
Figyeljünk rá, hogy az ilyen típusú
képek kiterjesztése mindig
.png legyen.Ezek tehát
kizárólagosan azok a
formátumok, amelyek bekerülhetnek a
repositoryba.A képekhez mindig válasszuk a megfelelõ
formátumot, teljesen elfogadott a
dokumentációban az EPS és PNG
formátumú képek vegyes
alkalmazása. A Makefile
állományok gondoskodni fognak a képek
formátumuknak megfelelõ szabályos
feldolgozásáról. Ugyanazt a
képet a repositoryban ne tároljuk el mind a
két formátumban!A Dokumentációs Projekt
elõreláthatólag a jövõben majd a
vektoros képek
ábrázolására a Scalable Vector
Graphic (SVG) formátumot fogja használni,
azonban jelenleg még nem állnak
rendelkezésre olyan SVG szerkesztõk, amelyek ezt
a gyakorlatban is hatékonnyá
tennék.JelölésekA képek jelölése viszonylag
egyszerû. Elõször is
készítsünk egy
mediaobject elemet. A
mediaobject elembe ezután
további, pontosabban specifikáló
objektumokat helyezhetünk el. Most két ilyen
elemmel foglakozunk, ezek az imageobject
és a textobject.Egy imageobject és két
textobject elemet kell megadnunk. Az
imageobject a beilleszteni
kívánt kép nevére fog hivatkozni
(kiterjesztés nélkül). A
textobject elemekben olyan
információ szerepel, amelyet az olvasó a
kép mellett vagy éppen helyett fog látni
a dokumentumban.Ilyen két esetben fordulat elõ:A dokumentum HTML változatát olvassuk.
Ekkor minden képhez szükség van
még egy helyettesítõ szövegre,
amelyet a kép betöltõdésekor
láthatunk, vagy amikor az egérmutatót
a kép felé visszük.A dokumentumot nyers szöveges formátumban
olvassuk. Ekkor a kép ASCII karakterekbõl
kirakott változatát kellene látnia az
olvasónak.Egy példán keresztül mindez
valószínûleg sokkal könnyebben
érthetõvé válik. Tegyük
tehát most fel, hogy van egy abra1
nevû képünk, amelyet szeretnénk
betenni a dokumentumba. Ez a kép egy A betût
ábrázol egy téglalapban. A
hozzá tartozó jelölés a
következõ lesz:<mediaobject>
<imageobject>
<imagedata fileref="abra1">
</imageobject>
<textobject>
<literallayout class="monospaced">+---------------+
| A |
+---------------+</literallayout>
</textobject>
<textobject>
<phrase>Egy kép</phrase>
</textobject>
</mediaobject>Helyezzünk el egy imagedata
elemet az imageobject elembe. A
fileref tulajdonságban kell
megadnunk kiterjesztés nélkül a
képhez tartozó állomány
nevét. A stíluslapok maguktól
megállapítják a neki megfelelõ
kiterjesztést.Az elsõ textobject elemben
szerepelnie kell egy literallayout
elemnek, ahol a class
tulajdonság értéke
monospaced legyen. Itt tudjuk
megmutatni milyen jól tudunk ASCII karakterekkel
rajzolni. Ezt a dokumentum nyers szöveges
változatának
elõállításakor fogjuk
felhasználni.A literallayout elem
belsejének elsõ és utolsó
sorában megfigyelhetjük, hogy
közvetlenül a szöveges ábra mellett
kezdõdnek, így garantálhatjuk, hogy
semmilyen további felesleges szóköz nem
jelenik meg a generált változatban.A második textobject elemben
egy phrase elemnek kell lennie. Ennek
tartalma lesz a HTML változatban a képhez
tartozó alt tulajdonság
értéke.A Makefile
felépítéseA Makefile
állományokban az IMAGES
változóban kell felsorolnunk a dokumentumhoz
tartozó képeket. Ebben a
változóban kell megadnunk a képek
forrását. Tehát
például, ha van három
ábránk, név szerint az
abra1.eps, abra2.png
és abra3.png, akkor ennek
megfelelõen a Makefile
állománynak a következõ sorokat
kellene tartalmaznia:…
IMAGES= abra1.eps abra2.png abra3.png
…vagy…
IMAGES= abra1.eps
IMAGES+= abra2.png
IMAGES+= abra3.png
…A Makefile magától el
fogja készíteni a dokumentum
lefordításához szükséges
képek teljes listáját, nekünk
egyedül tehát csak azokat a képeket kell
megadnunk, amelyeket mi
készítettünk.Képek és fejezetek
alkönyvtárakbanNem árt óvatosnak lennünk, amikor a
dokumentumunkat kisebb állományokra bontjuk
szét (lásd ) több
különbözõ
alkönyvtárban.Tegyük fel, hogy van egy három fejezetbõl
álló könyvünk, ahol az egyes fejezeteket
a saját könyvtáraikban tároljuk:
fejezet1/fejezet.sgml,
fejezet2/fejezet.sgml és
fejezet3/fejezet.sgml. Ha az egyes
fejezetekhez képeket akartunk társítani,
akkor javasolt ezeket a fejezetek
alkönyvtárába
(fejezet1, fejezet2,
fejezet3) tennünk.Ekkor azonban ne felejtsük el, hogy a
Makefile állomány
IMAGES változójában
és az imagedata
elemekben is a könyvtárak neveivel együtt
kell hivatkoznunk a képekre.Például a
fejezet1/abra.png kép
esetében a fejezet1/fejezet.sgml
állományban a következõt kell
megadnunk:<mediaobject>
<imageobject>
<imagedata fileref="fejezet1/abra1">
</imageobject>
…
</mediaobject>A könyvtár nevét is meg kell adnunk
a fileref tulajdonságban.Az ennek megfelelõ Makefile
állomány tartalma:…
IMAGES= fejezet1/fejezet1.png
…Ezzel már minden remekül
mûködik.HivatkozásokA hivatkozások is belsõ elemek.Hivatkozás ugyazon a dokumentumon
belülA dokumentum belül úgy tudunk
hivatkozásokat készíteni, ha
egyrészt megadjuk honnan hivatkozunk (tehát
szükségünk lesz egy olyan elemre, amelyre az
olvasó kattinthat vagy megjelölhetõ a
hivatkozás forrásaként),
másrészt megadjuk hova hivatkozunk (tehát
a célt).A DocBook összes eleme rendelkezik egy
id tulajdonsággal, amelyben az adott
elem adott példányához tudunk kapcsolni
egy egyedi azonosítót.Ezt az értéket kell megadnunk a
hivatkozás forrásának
megjelölésekor.Általában tehát amikor fejezeteket
vagy szakaszokat hivatkozunk, érdemes felvennünk
hozzájuk egy id
tulajdonságot.Az id tulajdonság
fejezeteknél és szakaszoknál]]>Bevezetés
]]>Ez a bevezetés. Ebben szerepel egy szintén azonosítóval
rendelkezõ alszakasz.
]]>Elsõ alszakasz
]]>Ez az alszakasz.
]]>A dokumentáció írásakor
nyilván ennél beszédesebb
azonosítókat lesz majd érdemes
kitalálnunk. Mindig ügyeljünk arra, hogy az
azonosítóknak egyedieknek kell lenniük a
dokumentumban (tehát nem csak az adott
állományon, hanem a teljes dokumentum
belül). Figyeljük meg hogyan képeztük a
példában az alszakasz id
tulajdonságát a fejezet id
tulajdonságának
értékébõl. Ezzel szavatoltuk az
azonosító egyediségét.Ha a dokumentum valamelyik közbensõ
elemére (jellemzõen egy bekezdés vagy egy
példa közepére) akarunk hivatkozni, akkor
használjuk az anchor elemet. Ennek
az elemnek nincs tartalma, azonban rendelkezik
id tulajdonsággal.Az anchor elem]]>Ebben a bekezdésben elrejtettünk egy <anchor
id="bekezd">hivatkozás forrását. Ez a dokumentumban nem fog
látszani.]]>Ha a dokumentum egy id
tulajdonsággal rendelkezõ részére
szeretnénk létrehozni egy hivatkozást
(amelyet például kattintással el lehet
érni), akkor használjuk az
xref vagy link
elemeket.Mind a két imént említett elemnek van
egy linkend tulajdonsága. Ennek az
értéke lényegében ugyanaz lesz,
amelyet a hivatkozás forrásában az
id tulajdonság
értékének megadtunk (nem
számít, hogy ez szerepelt-e már a
dokumentumban a hivatkozás helye elõtt, mert
elõre és visszafele is lehet hivatkozni).Az xref elem használatakor a
hivatkozás szövege magától jön
létre, nem tudjuk befolyásolni.Az xref elemTegyük fel, hogy felbukkan a következõ
szövegrészlet valahol a dokumentumban, amely
hivatkozik a korábbi id
tulajdonságot bemutató példánk
azonosítóira:]]>A témával kapcsolatos részleteket az
<xref linkend="fejezet1"> foglalja össze.
]]>További részleteket pedig a <xref linkend="fejezet1-szakasz1"> tár
fel.]]>Ekkor tehát a hivatkozás szövege
magától létrejön, így a
következõ szöveget kapjuk (a
kiemelt rész jelzi a
hivatkozás szövegét):
A témával kapcsolatos részleteket
az Elsõ fejezet foglalja
össze.További részleteket pedig az
Elsõ alszakasz tár
fel.
Figyeljük meg hogyan képezõdött a
fejezet számából vagy a szakasz
címébõl a megfelelõ
hivatkozás.Az iméntiekbõl következik, hogy az
xref elemmel nem
lehetanchor elemek
id tulajdonságaira hivatkozni. Az
anchor elemben nincs semmi, ezért
az xref nem képes
magától létrehozni hozzá a
hivatkozás szövegét.Ha szeretnénk kézzel megadni a
hivatkozások szövegét, akkor
használjuk a link elemet, amelynek a
tartalmában szerepeltethetjük ezt.A link elemTegyük fel, hogy a következõ
szövegrészlet jelenik meg valahol a
dokumentumnkban, és az id
tulajdonságot bemutató példában
definiált azonosítókra
hivatkozik.]]>Errõl bõvebb tájékoztatást <link linkend="fejezet1">az elsõ
fejezetben</link> kapunk.
]]>Errõl a részrõl pedig <link linkend="fejezet1-szakasz1">ebben</link> a szakaszban olvashatunk
többet.]]>Ez a következõképpen jelenik meg (ahol
a kiemelt szövegek jelzik a
hivatkozásokat magukat):
Errõl bõvebb
tájékoztatást az elsõ
fejezetben kapunk.Errõl a részrõl pedig
ebben a szakaszban olvashatunk
többet.
Ez utóbbi nem teljesen egy jó
példa. Lehetõleg ne ebben vagy
itt néven hivatkozzunk, mert az
olvasó így nem fogja közvetlenül
látni, hogy az adott hivatkozás pontosan hova
is viszi.A link elemmel már
tudunk hivatkozni
anchor elemek id
tulajdonságaira, hiszen a link
elemben már megadható a hivatkozás
szövege.A Világhálón található
dokumentumok hivatkozásaA külsõ dokumentumok hivatkozása
valamennyivel könnyebb a belsõ hivatkozások
használatánál, mivel ehhez csak annyit
kell tudunk, milyen címre akarunk mutatni. Erre az
ulink elem alkalmas. Rendelkezik egy
url tulajdonsággal, amelyben a
hivatkozni kívánt oldal címét kell
megadnunk. Az elem belsejében pedig a
hivatkozás olvasó felé megjelenõ
szövegét adhatjuk meg.Az ulink elemA használat módja:]]>Természetesen már most felhagyhatunk a dokumentum olvasásával és
helyette megnézhetjük a <ulink
url="&url.base;/index.html">&os; honlapját</ulink>.]]>Így jelenik meg:Természetesen már most felhagyhatunk a
dokumentum olvasásával és helyette
megnézhetjük a &os; honlapját.
diff --git a/hu_HU.ISO8859-2/books/fdp-primer/sgml-primer/chapter.sgml b/hu_HU.ISO8859-2/books/fdp-primer/sgml-primer/chapter.sgml
index 31d81317fe..968347a277 100644
--- a/hu_HU.ISO8859-2/books/fdp-primer/sgml-primer/chapter.sgml
+++ b/hu_HU.ISO8859-2/books/fdp-primer/sgml-primer/chapter.sgml
@@ -1,2127 +1,2128 @@
SGML alapismeretekAz FDP keretében készített
dokumentációk többsége az SGML valamilyen
alkalmazásában íródik. Ebben a
fejezetben részletesebben kifejtjük a mögötte
álló fogalmakat, a dokumentumok alapjául
szolgáló források
megértését és
írását, illetve a dokumentáció
forrásainak tanulmányozása során
elõkerülõ különféle
SGML-trükköket.A bemutatás alapjául szolgáltak Mark
Galassi Get Going With DocBook
címû írásának egyes
részei.ÁttekintésA kezdeti idõkben még viszonylag könnyen el
lehetett boldogulni az elektronikus formában tárolt
szövegekkel. Elegendõ volt csupán annyit tudni.,
hogy az adott írást milyen
karakterkódolással készítették
(ez lehetett ASCII, EBCDIC vagy éppen valami más).
A szöveg nem volt több mint egyszerû szöveg,
és közvetlenül a végleges
formáját adta. Semmi csel, semmi
formázás, semmi hozzáadott
értelem.Ezen a fokon aztán elkerülhetetlen módon
tovább kellett lépni. Hiszen ha egyszer a
szöveges információkat egy
számítógép által kezelhetõ
alakban tároljuk, akkor jogosan elvárhatjuk, hogy az
képes legyen felhasználni és
értelmesen feldolgozni. Szeretnénk a szöveg
bizonyos részeit például kiemelni, felvenni
egy szójegyzékbe, vagy éppen
hivatkozással ellátni. Az állományok
neveit a képernyõn
írógépszerû, a
nyomtatásban viszont már
dõltbetûs stílusban
szeretnénk látni, nem is beszélve a
szöveg megjelenésének számtalan
egyéb módjáról.Egy idõben a Mesterséges Intelligencia (MI)
megjelenésétõl várták a
megváltást ezen a területen. A
számítógépünk majd szépen
beolvassa az általunk írt dokumentumot és
magától felismeri a fontosabb kulcsszavakat,
állományneveket, a felhasználó
által begépelendõ szövegeket, a
példákat és így tovább.
Sajnálatosan azonban a valóságban ez
még egyáltalán nem valósult meg, a
számítógépeknek ezért
szükségünk van némi
segítségre a szöveges adatok értelmes
feldolgozásában.Pontosabban úgy fogalmazhatnánk, hogy
segítenünk kell nekik az egyes elemek
beazonosításában. Nézzük meg
például ezt a szöveget:
Az &man.rm.1; parancs használatával
töröljük a /tmp/ize
állományt:&prompt.user; rm /tmp/ize
Emberi szemmel könnyedén fel tudjuk ismerni benne
az állományneveket, a parancsokat, a man oldalak
hivatkozásait és így tovább, azonban a
számítógép erre
önállóan nem képes. Ezért lesz
szükségünk jelölõkre.A jelölõ szó eredetijét
(markup) gyakran olyan értelemben használják
mint haszonkulcs vagy kockázati
pótlék. Kevés
elvonatkoztatással ugyanez lényegében
alkalmazható a szövegek esetében is. A
jelölõk a dokumentumban szereplõ
kiegészítõ, hasznos, az
azonosítás kockázatát
csökkentõ, a szöveg többi
részétõl egyértelmûen
megkülönböztethetõ további
szöveges információkat jelentik. Ezek
alapján a programok a dokumentumok feldolgozása
során képesek önállóan meghozni
bizonyos döntéseket. A szövegszerkesztõk el
tudják rejteni ezeket a
többletinformációkat az olvasók
elõl, így azok egyáltalán nem
zavarják õket.A jelölõkben tárolt adatok tehát
növelik a dokumentumok hasznát. A
jelölõk hozzáadását, a szöveg
bejelölését értelemszerûen emberek
végzik, hiszen ha erre a
számítógépek is képesek
lennének, akkor nem is lenne rájuk
egyáltalán szükség. Ezzel azonban
pótlékot kell nyújtanunk
(vagyis további költségeket
ráfordítanunk) a dokumentumok
megírásához.Az elõzõ példában szereplõ
szöveget ennek megfelelõen a következõ
módon írjuk meg:Az &man.rm.1; parancs használatával
töröljük a /tmp/ize
állományt:
&prompt.user; rm /tmp/ize]]>Láthatjuk, hogy a jelölõk nagyon jól
elkülöníthetõek a szöveg
tartalmától.A jelölõk használatához
nyilvánvalóan valamilyen módon meg kell
határoznunk, hogy az adott jelölõk mit jelentenek
és hogyan kell azokat értelmezni. A
jelölõk összefogásához tehát
szükségünk van egy ún.
jelölõnyelvre, amely alapján aztán
jelölni fogjuk a dokumentumainkat.Ehhez természetesen egyetlen jelölõnyelv
önmagában még nem feltétlenül lesz
elég. A szaknyelven íródott
dokumentációkhoz igazított
jelölõnyelvvel szemben teljesen másak az
elvárásaink, mint például a receptek
leírásához használt nyelv
esetében, ez pedig megint más, mint amivel verseket
tudunk jelölni. Elõször tehát egy olyan
nyelvet kell megfogalmaznunk, amely ilyen jelölõnyelvek
elõírására használható.
Ezt nevezzük a jelölõnyelvek
jelölõnyelvének, vagyis a
meta-jelölõnyelvnek.Az SGML, avagy Standard Generalized Markup
Language (Szabványos
Általánosított Jelölõnyelv)
pontosan egy ilyen nyelv. Számos jelölõnyelv
készült az SGML segítségével,
többek közt az FDP által leginkább
használt HTML és DocBook.Az egyes nyelvek részletes
leírását hivatalosan
dokumetumtípus-definíciónak
(Documentum Type Definition,
DTD) nevezik. A DTD
felhasználásával adhatjuk meg a
szövegben jelölõként alkalmazható
elemeket, azok sorrendjét (vagy éppen
egymásba ágyazhatóságának
mikéntjét) és a hozzájuk
kapcsolódó egyéb információkat.
A DTD-ket gyakran csak úgy említik mint az SGML
alkalmazásait.A DTD tartalmazza az
összes felhasználható elem
leírását, azok használatának
sorrendjét, megadja, hogy ezek közül melyeknek
kell szerepelniük, illetve melyek hagyhatóak el
és így tovább. Ennek
köszönhetõen készíthetõ egy
olyan SGML alapján mûködõ
elemzõ, amely a DTD és egy
dokumentum birtokában képes
megállapítani, hogy az adott dokumentum megfelel-e a
DTD által meghatározott szabályoknak: a benne
szereplõ elemek a megfelelõ sorrendben vannak, esetleg
tartalmaznak hibákat. Ezt a lépést nevezik
általában a dokumentum
érvényesítésének.Az ellenõrzés folyamán egyszerûen
annyi történik, hogy az elemzõ a megadott DTD
alapján jóváhagyja a dokumentumban
feltüntetett elemeket, azok rendezettségét
és a többit. A jelölõk
helyes használatát azonban
nem vizsgálja. Ha éppen
függvénynévként jelöljük be
a szövegben megjelenõ állományok neveit,
akkor az elemezõ ezt nem fogja hibának tekinteni
(ekkor természetesen feltételezzük, hogy a
DTD definiálja az állomány- és
függvénynevek jelölésére alkalmas
elemeket, illetve ezek ugyanazokon a helyeken
szerepelhetnek).A Dokumentációs Projekt számára
beküldött munkáinkban jó eséllyel a
HTML vagy a DocBook nyelvek valamelyike szerint kell
dokumentumokat megjelölnünk, és nem kell a DTD
módosításával foglalkoznunk.
Ennélfogva ez a leírás sem tér ki a
DTD írásának részleteire.Elemek, címkék és
tulajdonságokAz SGML használatával készített
dokumentumtípus-definíciók mindegyikének
vannak közös jellemzõi. Ez viszont aligha lesz
számunkra meglepõ, ahogy majd fokozatosan
megismerkedünk az SGML kialakítása
mögött álló alapvetõ gondolatokkal.
Ezek közül a legkézenfekvõbbek a
tartalom és az
elem.A dokumentáció minden esetben (legyen az most
egy normál honlap vagy éppen egy vaskos könyv)
rendelkezik valamilyen tartalommal, amelyet aztán
tovább (esetleg még tovább) osztunk elemekre.
A jelölõk elhelyezésének ezen elemek
határainak kijelölésében és
elnevezésében van szerepe a feldolgozás
késõbbi szakaszaiban.Ehhez példaként tekintsünk egy
hagyományos könyvet. A legfelsõ szinten ez a
könyv önmagában egy elemet képvisel. Ez a
könyv elem aztán magától
értetõdõ módon tartalmaz fejezeteket,
amelyek szintén önálló elemeknek
tekinthetõek. Minden ilyen fejezet további elemeket
foglal magában, például bekezdéseket,
idézeteket és lábjegyzeteket. Minden egyes
bekezdésben találhatunk újabb elemeket,
amelyek elárulják nekünk, hogy a bennük
szereplõ szövegben melyik részében
beszélnek egymással a szereplõk, vagy
éppen hogy hívják az egyes
karaktereket.Az egészet úgy képzelhetjük el mint
a tartalom feldarabolását. A
legfelsõ szinten adott egy darab, maga a könyv. Ahogy
haladunk kicsivel lentebb, újabb darabokat találunk,
a fejezeteket. Ezeket aztán tovább bomlanak
bekezdésekre, lábjegyzetekre, a karakterek neveire
és a többi.Meglepõ, hogy az SGML lehetõségeinek
igénybevétele nélkül milyen könnyen
különbséget tudunk tenni az egyes elemek
közt. Ehhez valójában elegendõ a
könyv nyomtatott változata, néhány
különbözõ színû kiemelõ,
amelyekkel aztán bejelöljük a tartalom egyes
részeit.Sajnos a kiemelõknek nem létezik elektronikus
változata, ezért találnunk kell valamilyen
egyéb módot a tartalom egyes részeinek
megjelölésére. Az SGML-ben megfogalmazott
nyelvek (HTML, DocBook és társaik) ezt
címkékkel oldják
meg.A címkékkel mondhatjuk meg hol kezdõdnek
és hol fejezõdnek be az egyes elemek. A
címke nem az elem része. Mivel a DTD
általában azért készül, hogy a
szövegben adott típusú
információkat tudjunk jelölni, adott
típusú elemeket fog elfogadni, ezért ezeknek
megfelelõen kell címkéket
létrehoznunk.Egy elem elemhez tartozó
kezdõcímke általános alakja az
elem. Az
hozzá tartozó zárócímke pedig az
/elem.Elem (kezdõ- és
zárócímkék) használataA HTML-ben a bekezdéseket a p
(mint paragrafus) elemmel jelölhetjük. Ehhez az elemhez
tartozik kezdõ- és
zárócímke.]]>Ez egy bekezdés. A 'p' elem kezdõcímkéjétõl indul és a 'p'
zárócímkéjénél fejezdõdik be.
]]>Ez meg egy másik bekezdés. Ez viszont már rövidebb.]]>
Nem mindegyik elemnél kell
zárócímkét használnunk, egyes
elemekhez ugyanis nem járul semmilyen tartalom.
Például egy HTML állományban
jelölhetjük, hogy legyen a dokumentumban egy
vízszintes elválasztó. Ehhez a vonalhoz
értelemszerûen nem kapcsolódik tartalom,
ezért elég egy kezdõcímkét
beszúrni.Elem (csak kezdõcímke)
használataA HTML-ben van egy hr nevû elem,
amellyel vízszintes elválasztókat (horizontal
rule) jelölhetünk. Ennek az elemnek nincs tartalma,
ezért csak kezdõcímkével
rendelkezik.]]>Ez itt egy bekezdés.
]]>Ez pedig egy másik bekezdés. Az elõzõ bekezdéstõl egy vízszintes
vonal választja el.]]>
Ha eddig még nem sejtettük volna,
megemlítjük, hogy az elemek természetesen
elemeket is tartalmazhatnak. A korábbi könyves
példánkban a könyv elem magában foglalta
az összes fejezet elemet, amelyek pedig a bekezdés
elemeket és így tovább.Elemek elemekben, az em elem]]>Ez egy egyszerû ]]>bekezdés]]>, amelyben néhány ]]>szót]]>
szépen ]]>kiemeltünk.
]]>
A DTD pontosan tartalmazza mely elemek tartalmazhatnak
további elemeket, valamint az elemek egymásba
ágyazhatóságának
szabályait.Az emberek gyakran összetévesztik a
címkéket az általuk jelölt elemekkel,
és egymás szinonímájaként
használják ezeket a kifejezéseket. Ez
viszont helytelen.A dokumentumokat elemekbõl építjük
fel. Minden elem elõre meghatározott módon
kezdõdik és fejezõdik be. Az elemek
kezdetét és végét
címkék jelölik.Amikor ez a dokumentum (vagy bárki, az SGML
használatában járatos személy)
a p címkére
hivatkozik, akkor ez alatt a <,
p, > karakterekbõl
álló sorozatot érti. Ezzel szemben viszont
a p a teljes elemre
vonatkozik.Ez egy nagyon kicsi
eltérés, de mindig tartsuk észben!Az elemeknek lehetnek tulajdonságaik. A
tulajdonságokat nevek és értékek
párosai alkotják, segítségükkel
az elemhez fejthetünk ki további
információkat. Ez lehet az adott elem által
jelölt tartalom megjelenítésére
vonatkozó utasítás, esetleg az elem
valamilyen azonosítója vagy valami
más.Az elemek tulajdonságait mindig az adott elem
kezdõcímkéjén
belül soroljuk fel,
tulajdonság="érték"
alakban.A HTML újabb változataiban például
a p elemnek van egy align
tulajdonsága, amely a HTML megjelenítése
során javasolja, hogy az általa jelölt
bekezdést merre igazítsuk.Ez az align tulajdonság négy
elõre meghatározott érték
valamelyikét kaphatja meg: left (balra
zárt), center (középre
zárt), right (jobbra zárt)
és justify (sorkizárt). Ha nem
adjuk meg a tulajdonság értékét a
kezdõcímkében, akkor
alapértelmezés szerint left
lesz.Tulajdonság használata elemben]]>Az 'align' tulajdonság ebben a bekezdésben igazából
teljesen felesleges, hiszen alapértelmezés szerint is balra zárt
lenne.]]>
]]>Ennek viszont már középre kellene kerülnie.]]>Egyes tulajdonságok csak adott értékeket
vehetnek fel, mint például left
vagy justify, másoknál viszont
lényegében bármit megadhatunk. Ha a
tulajdonság értékének
megfogalmazása során idézõjeleket
(") is használni akarunk, akkor az
egész kifejezést tegyük egyszeres
idézõjelbe.A tulajdonságok értékének
megadása egyszeres idézõjellel]]>Jobbra zárt!]]>Elõfordulhat, hogy az érték
megadásakor egyáltalán nem kell semmilyen
idézõjelet használni. Ennek szabályai
viszont nagyon halványak, ezért sokkal
egyszerûbb mindig idézõjelbe
tenni a tulajdonságok értékeit.Az elemekhez, címkékhez és
tulajdonságokhoz tartozó információk
SGML katalógusokban kerülnek tárolásra.
A Dokumentációs Projektben használt
eszközök ilyen katalógusok mentén
nézik át a munkánkat. A textproc/docproj csomagban a
segédprogramok mellett rengeteg ilyen
SGML-katalógust találhatunk. A &os;
Dokumentációs Projektnek is vannak saját
katalógusai. Az alkalmazott eszközöknek mind a
két fajta katalógusokat ismerniük kell.Egy kis gyakorlás…A szakaszban szereplõ példák
kipróbálásához
telepítenünk kell bizonyos szoftvereket, illetve
beállítani egy környezeti
változó értékét.Töltsük le és telepítsük a
textproc/docproj portot a
&os; Portgyûjteményébõl. Ez
portoknak a portja, tehát egy
metaport, így a
Dokumentációs Projektben használt
összes eszköz rajta keresztül
letöltõdik és
telepítõdik.A parancssorunk konfigurációs
állományában állítsuk be az
SGML_CATALOG_FILES környezeti
változó értékét.
(Amennyiben nem az angol nyelvû
dokumentációval dolgozunk, itt érdemes
a nyelvünknek megfelelõ könyvtárakat
megadni.)Minta .profile
állomány &man.sh.1; és &man.bash.1;
parancssorokhozSGML_ROOT=/usr/local/share/sgml
SGML_CATALOG_FILES=${SGML_ROOT}/jade/catalog
SGML_CATALOG_FILES=${SGML_ROOT}/docbook/4.1/catalog:$SGML_CATALOG_FILES
SGML_CATALOG_FILES=${SGML_ROOT}/html/catalog:$SGML_CATALOG_FILES
SGML_CATALOG_FILES=${SGML_ROOT}/iso8879/catalog:$SGML_CATALOG_FILES
SGML_CATALOG_FILES=/usr/doc/share/sgml/catalog:$SGML_CATALOG_FILES
SGML_CATALOG_FILES=/usr/doc/en_US.ISO8859-1/share/sgml/catalog:$SGML_CATALOG_FILES
export SGML_CATALOG_FILESMinta .cshrc
állomány &man.csh.1; és &man.tcsh.1;
parancssorokhozsetenv SGML_ROOT /usr/local/share/sgml
setenv SGML_CATALOG_FILES ${SGML_ROOT}/jade/catalog
setenv SGML_CATALOG_FILES ${SGML_ROOT}/docbook/4.1/catalog:$SGML_CATALOG_FILES
setenv SGML_CATALOG_FILES ${SGML_ROOT}/html/catalog:$SGML_CATALOG_FILES
setenv SGML_CATALOG_FILES ${SGML_ROOT}/iso8879/catalog:$SGML_CATALOG_FILES
setenv SGML_CATALOG_FILES /usr/doc/share/sgml/catalog:$SGML_CATALOG_FILES
setenv SGML_CATALOG_FILES /usr/doc/en_US.ISO8859-1/share/sgml/catalog:$SGML_CATALOG_FILESA módosítások
elvégzése után vagy jelentkezzük ki
majd be, vagy pedig adjuk ki a közvetlenül
parancssorban az adott parancsokat.Hozzunk létre egy
próba.sgml nevû
állományt, és írjuk bele az
alábbi szöveget:]]>Próba HTML állomány
]]>Ebben a bekezdésben legyen valamennyi szöveg.
]]>Az utána következõ bekezdésbe is rakjunk még valamennyi szöveget.
]]>Ennek a bekezdésnek jobbra zártnak kellene lennie.
]]>
Próbáljuk meg az állományt
érvényesíteni valamelyik SGML
elemezõvel.A textproc/docproj
- csomagnak része az nsgmls
+ csomagnak része az onsgmls
nevû érvényesítést végzõ elemezõ.
- Az nsgmls beolvas egy tetszõleges
+ Az onsgmls beolvas egy tetszõleges
SGML DTD szerint definiált elemekkel jelölt
dokumentumot és ebbõl elkészíti a
hozzá tartozó
elemstruktúra-információs halmazt
(Element Structure Information Set, ESIS, de ezzel itt most
nem foglalkozunk).
- Ha viszont az nsgmls parancsnak
+ Ha viszont az onsgmls parancsnak
megadjuk a paramétert, akkor nem
generál tényleges eredményt,
csupán a hibaüzenetek jeleníti meg.
Ennek köszönhetõen könnyen
ellenõrizni tudjuk, hogy az általunk
készített dokumentum érvényes
vagy sem.
- Az nsgmls parancs
+ Az onsgmls parancs
használatával tehát
ellenõrizzük az imént létrehozott
dokumentumunk
érvényességét:
- &prompt.user; nsgmls -s próba.sgml
+ &prompt.user; onsgmls -s próba.sgml
- Láthatjuk, hogy az nsgmls nem
+ Láthatjuk, hogy az onsgmls nem
jelez semmiféle hibát, ami azt jelenti, hogy a
dokumentumunk valóban érvényes.Nézzük meg mi történik akkor, ha
kihagyjuk a kötelezõ elemeket.
Töröljük például a
title és /title
címkéket, majd próbáljuk meg
újra az
érvényesítést.
- &prompt.user; nsgmls -s próba.sgml
-nsgmls:próba.sgml:5:4:E: character data is not allowed here
-nsgmls:próba.sgml:6:8:E: end tag for "HEAD" which is not finished
+ &prompt.user; onsgmls -s próba.sgml
+onsgmls:próba.sgml:5:4:E: character data is not allowed here
+onsgmls:próba.sgml:6:8:E: end tag for "HEAD" which is not finished
- Az nsgmls által
+ Az onsgmls által
generált hibaüzenetek kettõspontokkal
tagolt csoportokba vagy oszlopokba
sorolhatóak.OszlopJelentés1A hibát jelzõ program neve. Ez
- minden esetben az nsgmls.
+ minden esetben az onsgmls.
2A hibát tartalmazó
állomány neve.3A hibát tartalmazó sor
száma.4A hibát tartalmazó oszlop
száma.5A generált üzenet jellegét
megadó egybetûs kód. Az
I információt, a
W figyelmeztetést, az
E hibát
Ez nem minden esetben az ötödik
- oszlopban szerepel. Az nsgmls
+ oszlopban szerepel. Az onsgmls
-sv például az
- nsgmls:I: SP version "1.3"
+ onsgmls:I: "OpenSP" version "1.5.2"
üzenetet adja vissza (a tényleges
verziójától
függõen). Ez például
egy információs
üzenet., végül pedig az
X a kereszthivatkozást
jelez. Ebbõl
megállapítható, hogy az
iménti üzenetek hibákra
vonatkoznak.6Az üzenet szövege.Egyedül a title címke
elhagyásával két
különbözõ hibát kaptunk.Ezek közül az elsõ jelzi, hogy az SGML
elemzõ olyan helyen találkozott tartalommal (amely
ebben esetben konkrétan karaktereket jelent és
nem az elemet bevezetõ kezdõcímkét),
ahol valami másra számított. Az
elemzõ itt ugyanis valamelyik, a
head elemen belül szabályosan
elhelyezhetõ elem
kezdõcímkéjét várja
(amilyen például a
title).A második hibát pedig azért kaptuk,
mert a head elemeknek tartalmazniuk
kelltitle elemet.
- Az nsgmls ezt azonban nem ebben a
+ Az onsgmls ezt azonban nem ebben a
formában közli: mivel az elemet még a
befejezõdése (tehát a
title megemlítése)
elõtt lezártuk, szerinte egyszerûen csak
nem ért véget rendesen.Tegyük vissza a title
elemet.A DOCTYPE deklarációkA dokumentumok elején mindig meg kell adni annak a
dokumentípus-deklarációnak a nevét,
amely alapján készítjük. Ennek
köszönhetõen az SGML elemzõk elõ
tudják keresni a dokumentum
érvényesítéséhez kellõ
DTD-t.Ezt az információt általában
egyetlen sorban, a DOCTYPE deklarációban adjuk
meg.A HTML DTD 4.0 változatának megfelelõ
dokumentumokat tehát például így
vezetjük be:]]>Ebben a sorban több különbözõ
típusú alkotórészt fedezhetünk
fel.<!Ez egy jelzés, amellyel
jelezzük egy SGML-beli deklaráció
kezdetét. Ez a sor a dokumentum
típusát határozza meg.DOCTYPEA dokumentumtípus SGML-beli
deklarációját vezeti be.htmlA dokumentumban elsõként megjelenõ
elemet
nevezi meg.PUBLIC "-//W3C//DTD HTML 4.0//EN"formális publikus
azonosítóMegadja a dokumentum DTD-jéhez tartozó
formális publikus azonosítót
(Formal Public Identifier,
FPI). Az SGML elemzõ ennek
alapján találja meg a dokumentum
feldolgozása során szükséges
DTD-t.A PUBLIC nem része az
azonosítónak, azonban segít az SGML
elemzõnek megtalálni a benne megfogalmazott
DTD-t. Késõbb
további módszereket is láthatunk majd
erre.>A deklaráció
lezárása.Formális publikus azonosítókformális publikus
azonosítóEbben a szakaszban csupán
kiegészítõ ismeretek szerepelnek. Ezek
viszont hasznos hátteret adhatnak például
olyan esetekben, amikor ki akarjuk deríteni, hogy az
SGML feldolgozó miért nem éri el a
megadott DTD állományokat.A formális publikus azonosítók (FPI)
egy speciális felírással rendelkeznek, amely
a következõ:"Tulajdonos//KulcsszóLeírás//Nyelv"TulajdonosEz határozza meg kihez tartozik az FPI.Ha az értéke az ISO
részlettel kezdõdik, akkor az FPI az ISO
tulajdona. Például a "ISO
8879:1986//ENTITIES Greek Symbols//EN"
esetén a görög szimbólumokat
tartalmazó egyedkészlet tulajdonosa. Az ISO
8879:1986 az SGML szabvány ISO száma.Minden más esetben az értéke a
következõ alakú lesz:
-//Tulajdonos
vagy
+//Tulajdonos
(vegyük észre, hogy a két
változat csak a sor elején levõ
+ és -
jelekben tér el).Ha az érték a -
jellel kezdõdik, akkor a tulajdonos adatai nem
regisztráltak, a +
esetében pedig regisztráltak.Az ISO 9070:1991 szabvány definiálja a
regisztrált nevek
elõállítását, amelynek
értelmében egy ISO publikáció,
egy ISBN kód vagy az adott szervezet ISO 6523
szabványnak megfelelõ kódjának
számából kell származtatni,
illetve a nevek kiosztását egy erre
felhatalmazott szerv végzi. Ezt a feladatot az
Amerikai Nemzeti Szabványügyi Intézetre
(ANSI) bízta az ISO tanácsa.Mivel a &os; Projekt nem regisztrálta
magát, a hozzá tartozó
érték tehát a
-//&os; lesz. Látható
egyébként, hogy a W3C sem
regisztrálta még magát.KulcsszóAz állományban található
információ típusának
megadására különbözõ
kulcsszavak használhatóak. Ezek
általában a DTD,
ELEMENT, ENTITIES
és TEXT. A
DTD csak DTD
állományokhoz használatos, az
ELEMENT pedig olyan DTD
részletekhez, amelyekeben csak egyedek vagy elemek
leírásai találhatóak. A
TEXT SGML tartalmat jelent
(szövegeket és jelölõket).LeírásMinden egyéb adat, amit az
állomány tartalmáról még
meg akarunk adni. Tartalmazhat
verziószámokat, vagy bármilyen
számunkra értelmes és az SGML
rendszer számára egyedien
azonosítható rövid
szöveget.NyelvKétkarakteres, ISO szabvány szerint
megadott kód, amellyel az állomány
natív nyelvét adjuk meg. Az angol
esetében ez az EN.KatalógusokAz SGML feldolgozónak a dokumentum
feldolgozása során valamilyen módon az
így megadott formális publikus
azonosítóból vissza kell tudnia fejtenie
a DTD-t tartalmazó állomány
nevét.Mindehhez egy katalógusra lesz
szükségünk. Ezek (amelyeket
általában catalog
néven találhatunk meg) tartalmazzák az
azonosítók és a hozzájuk
tartozó állománynevek
összerendeléseit. Például, ha egy
katalógusban a következõ sor
található:PUBLIC "-//W3C//DTD HTML 4.0//EN" "4.0/strict.dtd"Az SGML feldolgozó a catalog
állományt tartalmazó könyvtár
4.0 alkönyvtárában
levõ strict.dtd
állományban fogja keresni az adott DTD-t.Nézzünk szét kicsit a
/usr/local/share/sgml/html/catalog
állományban. Ez tartalmazza a textproc/docproj portból
telepített HTML DTD-kre vonatkozó
állományinformációkat.Az SGML_CATALOG_FILES környezeti
változóAz SGML feldolgozónak valahogy tudnia kell hol
keresse a katalógusokat. Számos
implementációjuk parancssori
paramétereken keresztül teszi lehetõvé
a feldolgozás során használni
kívánt katalógus vagy katalógusok
felsorolását.Emellett az SGML_CATALOG_FILES
környezeti változó
segítségével is megadhatóak ezek
az állományok. A változó
értékének a (teljes elérési
útvonallal kifejtett) katalógusok vesszõvel
tagolt felsorolását kell
beállítani.Az esetek döntõ többségében a
következõ állományokat kell ilyen
módon felvennünk:/usr/local/share/sgml/docbook/4.1/catalog/usr/local/share/sgml/html/catalog/usr/local/share/sgml/iso8879/catalog/usr/local/share/sgml/jade/catalogEzt egyébként korábban már elvégeztük.Azonosítók helyettA formális publikus azonosítók
használata helyett akár közvetlenül meg is
adhatjuk a dokumentum érvényességét
definiáló DTD-t tartalmazó konkrét
állomány nevét.Ennek felírása némileg
eltér:/az/elérési/út/állomány.dtd]]>A SYSTEM kulcsszóval
jelezzük, hogy az SGML feldolgozó a DTD
leírását rendszerszinten keresse. Ez
általában (de nem mindig) azt jelenti, hogy a DTD
elérhetõségét
állománynév formájában adjuk
meg.Az FPI használata leginkább a
hordozhatóság támogatása miatt
ajánlott. Ilyenkor nem kell ugyanis a dokumentumokhoz
mellékelni a DTD egy példányát,
illetve ha a SYSTEM kulcsszóval
adnánk meg, akkor mindig az adott helyre kellene tenni a
DTD állományokat.Visszaváltás az SGML
használatáraAz alapismeretek tárgyalása során
már korábban szóba került, hogy az SGML
csak a dokumentumtípus-deklaráció
leírásához használatos. Ez azonban
nem tökéletesen igaz, mivel léteznek olyan
SGML-beli szerkezetek, amelyeket magukban a dokumentumokban is fel
tudunk használni. Például a dokumentumokba
beszúrhatóak az elemzõ
részérõl figyelmen kívül
hagyandó megjegyzések. Ezeket az SGML
szabályai szerint adjuk meg. A többi szerkezet
használatára kicsivel késõbb mutatunk
még példákat.Nyilvánvalóan valamilyen módon
jeleznünk kell az SGML feldolgozónak, hogy a soron
következõ elem tartalmát hagyja figyelmen
kívül, de az elemzõ ezt alapvetõen az SGML
alapján észleli.Az ilyen részeket <! …
> formában jelöljük. Az
elhatárolók között szabályos SGML
szerkezetek szerepelhetnek, pontosan olyanok, amelyeket az DTD-k
készítésénél is
alkalmaznak.Az elõbb bemutatott DOCTYPE deklaráció
erre éppen remek példaként
szolgálhat.MegjegyzésekA megjegyzések tehát SGML-beli
konstrukciók, és általában csak a
DTD-ben érvényes a használatuk. A ban viszont láthattuk,
hogy az SGML szerkezetei akár a dokumentumokban is
használhatóak.Az SGML megjegyzéseket
-- szimbólumok
használatával határolhatjuk el. A
szimbólum elsõ elõfordulásával
kezdjük a megjegyzést és a másodikkal
zárjuk le.Általános SGML megjegyzés<!-- próba megjegyzés --> Most a megjegyzés belsejében vagyunk
]]>A két kötõjel használataA Postscript és PDF változatok esetén
kisebb problémák jelentkeznek ennél a
példánál, ugyanis bennük csak egyetlen
kötõjel fog látszani a <!
és > szimbólumok
mellett.A forráskódban azonban két
- (kötõjel) szimbólumot
kell használnunk,
nem pedig egyet. A Postscript és
PDF változatokban az eredetileg két
kötõjelet összevonják egyetlen hosszabb
kötõjellé, ezáltal elrontják az
iménti példát.A dokumentum HTML, szöveges és RTF
változatait ez nem érinti.
]]>
Ha dolgoztunk már korábban HTML kóddal,
akkor elõfordulhat, hogy más meghatározást
láttunk a megjegyzésekre. Ezért
tévesen azt gondolhattuk, hogy a megjegyzéseket a
<!-- karaktersorozat vezeti be, és
csak a --> zárhatja le.Valójában viszont nem
így van. Sok böngészõ hibás HTML
elemzõt tartalmaz, ezért ezt érvényesnek
fogadják el. A Dokumentációs Projektben
használt SGML elemzõk azonban ennél sokkal
szigorúbbak és az ilyen hibás
dokumentumokat visszadobják.Hibás SGML megjegyzések Most egy megjegyzés belsejében vagyunk
KÍVÜL VAGYUNK A MEGJEGYZÉSEN!
ismét megjegyzésben vagyunk ]]>Az SGML elemzõ ezt valahogy így fogja
értelmezni:<!KÍVÜL VAGYUNK A MEGJEGYZÉSEN>Ez nem szabályos SGML és
ráadásul félrevezetõ hibaüzenetet
eredményez. Ez nem szép dolog! ]]>A példa szövege szerint sem
javasolt ilyen megjegyzéseket írni.]]>Ez már (valamivel) értelmesebb
megoldás, de még feláll a veszélye,
hogy megtéveszti az SGML-ben járatlan
olvasókat.Egy kis gyakorlás…Tegyünk néhány megjegyzést a
korábban készített
próba.sgml
állományunkba, majd az
- nsgmls segítségével
+ onsgmls segítségével
ellenõrizzük, hogy közben
érvényes marad.Tegyünk néhány
érvénytelen megjegyzést a
próba.sgml
állományba, majd nézzük meg, hogy
- az nsgmls milyen hibaüzeneteket ad
+ az onsgmls milyen hibaüzeneteket ad
rájuk.EgyedekAz egyedek felhasználásával neveket
tudunk rendelni a tartalom egyes darabjaihoz. Az SGML elemzõ a
dokumentum feldolgozása közben ezeket az egyedeket
megtalálja és helyükre beszúrja az
általuk hivatkozott tartalmat.Ezzel az SGML dokumentumokban könnyedén ki tudunk
alakítani újrafelhasználható, gyorsan
cserélhetõ tartalmat, illetve kizárólag
ezen a módon lehet jelölõkkel ellátott
SGML állományokat beletenni egy másik
hasonló SGML állományba.Az egyedek kétfajta típusa létezik,
amelyek mindegyike eltérõ helyzetekben
használható: ezek az
általános egyedek és a
paraméteregyedek.Általános egyedekÁltalános egyedeket nem lehet SGML
környezetben használni (habár definiálni
igen), egyedül magában a dokumentumban. Vessük
össze a paraméteregyedekkel.Mindegyik általános egyed rendelkezik egy
névvel. Így tudunk hivatkozni egy
általános egyedre (ezáltal mindarra a
szövegre, amelyet képvisel a dokumentumunkban):
&egyednév;.
Vegyük például, hogy van egy
jelenlegi.valtozat nevû egyedünk,
amely a termékünk jelenlegi
verziószámát helyettesíti be a
szövegbe. Ezt így fogalmaznánk meg:]]>A termékünk jelenlegi változata a(z)
]]>Így a verziószám
változásakor egyszerûen csupán az
általános egyed definícióját
kell megváltoztatni, majd újra feldolgozni a
dokumentumot.Az általános egyedek
segítségével olyan karakterek is
megadhatóvá válnak, amelyeket
egyébként nem tudnánk SGML dokumentumokban
leírni. Például a <
és a & normális esetben
nem lehet része SGML dokumentumoknak. Amikor ugyanis az
SGML elemzõ egy < szimbólumot
észlel, feltételezi, hogy ezzel egy (kezdõ-
vagy záró) címke kezdõdik, illetve
amikor pedig egy & szimbólumot
talál, akkor a következõ lépésben
egy egyed nevét várja.Szerencsére ezek a szimbólumok a
szövegben bármikor kiválthatóak az
< és
& általános egyedek
használatával.Általános egyedek csak SGML környezetben
definiálhatóak. Ezeket általában
közvetlenül a DOCTYPE deklaráció
után sorolják fel.Általános egyedek
definíciója
]>]]>Figyeljük meg, hogy a DOCTYPE
deklarációt a sor végén egy
szögletes nyitó zárójel
elhelyezésével kibõvítettük: a
kiegészítésként felvett két
egyedet az utána következõ két sorban
definiáltuk, majd bezártuk a szögletes
zárójelet és DOCTYPE
deklarációt.A szögletes zárójelek
szükségesek ahhoz, hogy jelezzük a DOCTYPE
deklarációban megadott DTD további
kiegészítéseit.ParaméteregyedekAz általános egyedekhez
hasonlóan a paraméteregyedek is
újrafelhasználható szövegrészek
elnevezését engedik meg. Miközben azonban az
általános egyedek csak a dokumentumokban
alkalmazhatóak, addig a paraméteregyedek csak
SGML környezetekben
használhatóak.A paraméteregyedek az általános
egyedekhez hasonló módon
definiálhatóak, az
&egyednév;
felírás helyett azonban az
%egyednév;
alakban tudunk rájuk hivatkozni. Továbbá a
definíciójukban az ENTITY
kulcsszó és az egyed neve közé be kell
szúrni a % (százalékjel)
szimbólumot.Paraméteregyedek megadásavalami
szöveg
más
]>]]>Ez most még nem tûnik
különösebben hasznosnak. Késõbb
viszont majd az lesz.Egy kis gyakorlás…Tegyük bele a
próba.sgml
állományunkba a következõ
általános egyedet:
]>
]]>Egy minta HTML állomány
]]>Ebben a bekezdésben van egy kis szöveg.
]]>Ez a bekezdés még tartalmaz némi szöveget.
]]>Ennek a bekezdésnek jobbra zártnak kellene lennie.
]]>A dokumentum jelenlegi változata:
]]>
- Az nsgmls használatával
+ Az onsgmls használatával
vizsgáltassuk meg a dokumentum
érvényességét.Töltsük be a
próba.sgml
állományt a böngészõnkbe
(elõfordulhat, hogy másolatot kell
készíteni róla
próba.html néven, mert a
böngészõnk csak így ismerné
fel HTML dokumentumként).Hacsak a böngészõnk nem annyira
fejlett, a dokumentumban a &valtozat;
egyedhivatkozás nem fog lecserélõdni a
verziószámra. A böngészõk
többségében nagyon primitív
elemzõk találhatóak, amelyek nem
képesek rendesen kezelni az SGML
dokumentumokatMicsoda szégyen! Képzeljük csak
el, mennyi gondot és ügyeskedést
(mint például a szerver oldalán
beemelt állományokat) el tudnánk
kerülni, ha rendesen
támogatnák..A megoldást a dokumentum
normalizálása jelenti,
amelyet egy SGML normalizálóval tudunk
elvégezni. A normalizáló beolvas egy
érvényes SGML állományt
és eredményként egy szintén
érvényes, de valamilyen módon
átalakított SGML állományt
készít. Az SGML állományok
átalakításának egyik ilyen
módja a dokumentumban található
egyedhivatkozások helyettesítése az
általuk képviselt szöveggel.
- Erre a célra az sgmlnorm
+ Erre a célra az osgmlnorm
használható.
- &prompt.user; sgmlnorm próba.sgml > próba.html
+ &prompt.user; osgmlnorm próba.sgml > próba.htmlEnnek hatására
próba.html néven
létrejön a dokumentum normalizált (vagyis
a kifejtett egyedhivatkozásokkal létrehozott)
változata, és most már
betölthetõ a böngészõnkbe.Ha most megnézzük az
- sgmlnorm által gyártott
+ osgmlnorm által gyártott
végeredményt, akkor tapasztalhatjuk, hogy az
elején nem szerepel DOCTYPE deklaráció.
Ezt a kapcsolóval tehetjük
hozzá:
- &prompt.user; sgmlnorm -d próba.sgml > próba.html
+ &prompt.user; osgmlnorm -d próba.sgml > próba.htmlÁllományok tartalmának
elérése egyedeken keresztülAz (általános
és paraméter-)
egyedek különösen hasznosak olyan esetekben, amikor
állományok tartalmát akarjuk beilleszteni
másik állományokba.Állományok tartalmának
elérése általános egyedekkelTegyük fel, hogy egy könyvön dolgozunk az
SGML felhasználásával, amelyet
fejezetenként állományokra bontottunk,
fejezet1.sgml,
fejezet2.sgml stb. néven, illetve a
könyv.sgml állomány
tartalmazza ezeket a fejezeket.Az állományok tartalmát a
SYSTEM kulcsszó
használatával tudjuk egyedek
értékeként megadni. Ennek
hatására az SGML elemzõ a megadott
állomány tartalmát adja az egyed
értékének.Állományok tartalmának
elérése általános egyeddel
]>
&fejezet.1;
&fejezet.2;
&fejezet.3;
]]>Amikor általános egyedeken keresztül
illesztünk be állományokat egy másik
állományba, a beillesztett
állományok (amilyen például a
fejezet1.sgml,
fejezet2.sgml és a többi)
nem kezdõdhetnek DOCTYPE
deklarációval. Ez szintaktikai hibát
eredményez!Állományok tartalmának
elérése paraméteregyedekkelEmlékezzünk vissza, hogy a
paraméteregyedek csak SGML környezetben
alkalmazhatóak. Miért akarnánk
állományokat beilleszteni egy SGML
környezetbe?Így tudunk gondoskodni az általános
egyedek
újrafelhasználhatóságáról.Tegyük fel, hogy a dokumentumunkban rengeteg fejezet
található és ezeket két
különbözõ könyvben is
felhasználtuk, azonban eltérõ
stílusban.A könyvek elején fel lehetne sorolni az
egyedeket, de ezzel viszont gyorsan kezelhetetlenné
válnának.Ehelyett csak tegyünk az általános
egyedekre vonatkozó definíciókat egyetlen
állományba és a dokumentumunkban erre
építve paraméteregyedek
beiktatásával végezzük az adott
állományok beillesztését.Állományok beillesztése
paraméteregyedekkelElõször vegyük az egyedek
definícióit egy külön
fejezetek.ent állományba.
Ebben a következõek
találhatóak:
]]>Most pedig hozunk létre egy paraméteregyedet
az állomány tartalmának
hivatkozására. Ezután az iménti
paraméteregyeddel illesszük be az
állományt a dokumentumba, így az
összes általános egyed
elérhetõvé válik. Innentõl
már a megszokott módon használhatjuk az
általános egyedeket: A fejezetekhez tartozó egyedek betöltéséhez definiálunk egy paraméteregyedet
%fejezetek;
]>
&fejezet.1;
&fejezet.2;
&fejezet.3;
]]>Egy kis gyakorlás…Állományok beillesztése
általános egyedek
segítségévelHozzunk létre három
állományt: bekezd1.sgml,
bekezd2.sgml és
bekezd3.sgml.Töltsük fel ezeket valami hasonló
szöveggel:]]>Ez az elsõ bekezdés.]]>Szerkesszük át a
próba.sgml
állományunk tartalmát az
alábbi módon:
]>
]]>Próba HTML állomány
]]>A dokumentum jelenlegi változata:
&bekezd1;
&bekezd2;
&bekezd3;
]]>
A próba.sgml
normalizálásával hozzuk létre a
próba.html
állományt.
- &prompt.user; sgmlnorm -d próba.sgml > próba.html
+ &prompt.user; osgmlnorm -d próba.sgml > próba.htmlNyissuk meg a böngészõnkkel a
próba.html
állományt és ellenõrizzük,
hogy a
bekezdn.sgml
állományok tartalma bekerült a
próba.html
állományba.Állományok beillesztése
paraméteregyedek
segítségévelEhhez elõször végezzük el az
elõbbi lépéseket.Szerkesszük át a
próba.sgml
állományt a következõeknek
megfelelõen: %egyedek;
]>
]]>Próba HTML állomány
]]>A dokumentum jelenlegi változata:
&bekezd1;
&bekezd2;
&bekezd3;
]]>
Hozzunk létre egy új
állományt egyedek.sgml
néven a következõ tartalommal:
]]>A próba.sgml
normalizálásával állítsuk
elõ a próba.html
állományt:
- &prompt.user; sgmlnorm -d próba.sgml > próba.html
+ &prompt.user; osgmlnorm -d próba.sgml > próba.htmlNyissuk meg a böngészõnkben a
próba.html
állományt és ellenõrizzük,
hogy a
bekezdn.sgml
állományok szerepelnek a
próba.html
állományban.Jelölt szakaszokAz SGML tartalmaz olyan megoldást, amellyel a
dokumentum bizonyos részeit speciális
feldolgozásra jelölhetjük meg. Ezeket nevezik
jelölt szakaszoknak.A jelölt szakaszok
felépítése<![ KULCSSZÓ [
A jelölt szakasz tartalma.
]]>A korábbiakban tapasztaltak szerint
természetesen a jelölt szakaszokat az SGML
részeként a <!
szimbólummal vezetjük be.Ezt követõen az elsõ szögletes
zárójel határolja el a jelölt
szakaszt.Az elemzõ a feldolgozás során a
KULCSSZÓ alapján
értelmezi az adott jelölt szakaszt.A második szögletes zárójellel
kezdõdik a jelölt szakasz tényleges
tartalma.A jelölt szakasz az iménti két
szögletes zárójel
lezárásával ér véget, majd a
> szimbólummal visszaváltunk
az SGML környezetbõl a dokumentum
környezetébe.A jelölt szakaszok kulcsszavaiCDATA, RCDATAA kulcsszavakkal a jelölt szakasz tartalmi
modelljét tudjuk
megváltoztatni.Az SGML elemzõ a dokumentum feldolgozása
során tárol egy ún. tartalmi
modellt.Röviden úgy foglalhatnánk össze,
hogy ez a tartalmi modell írja le az elemzõ
részérõl várt
információkat és azok
feldolgozását.A két ilyen leghasznosabb tartalmi modell a
CDATA és az
RCDATA.A CDATA jelentése
Character Data, vagyis karakteres
adat. Az elemzõ ebben a tartalmi modellben
kizárólag csak karaktereket lát. Ebben a
modellben a < és
& szimbólumok
elveszítik különleges
jelentésüket.Az RCDATA jelentése
Entity references and character data, vagyis
egyedhivatkozások és karakteres
adatok. Ebben a tartalmi modellben az elemzõ
karakterekre és egyedekre
számít. A <
szimbólum ilyenkor elveszíti a
különleges jelentését, azonban az
& továbbra is
általános egyedek kezdetét fogja
jelölni.Ezek használata különösen hasznos
abban az esetben, amikor rengeteg <
és & karaktert tartalmazó
nyers szöveget akarunk beilleszteni valahova a
dokumentumba. Természetesen ez megoldható
úgy is, ha minden <
szimbólumot <
karaktersorozattá, illetve minden
& szimbólumot
& karaktersorozattá
alakítunk, de sokkal könnyebb ezeket a szakaszokat
CDATA típusúnak
megjelölni. Az SGML elemzõk ilyenkor tehát
figyelmen kívül hagyják a tartalomban
talált < és
& szimbólumokat.A CDATA vagy
RCDATA kulcsszavakat bemutató SGML
példákkal kapcsolatban megjegyezzük, hogy
a CDATA szakaszok tartalma nem
érvényesítõdik. Az így
beillesztett SGML szöveget valamilyen más
módon kell ellenõrizni. Például
írjuk meg a karakteres szakasz tartalmát egy
másik dokumentumban, ellenõriztessük le,
majd másoljuk be a CDATA
részbe.CDATA típusú jelölt szakaszok
használata<para>Ebben a példában láthatjuk hogyan tudunk sok <literal><</literal>
és <literal>&</literal> szimbólumot tartalmazó szöveget elhelyezni
a dokumentumunkban. A minta most egy HTML kódrészlet lesz, az ezt övezõ
szöveg (<para>) és (<programlisting>) pedig DocBook.</para>
<programlisting>
<![ CDATA [ ]]>Ezzel a példával mutatjuk HTML elemek használatát a
dokumentumban. Mivel elég sok relációjelet kell ilyenkor megadni,
sokkal egyszerûbb azt mondani, hogy legyen az egész példa egy
CDATA szakaszban, mintsem végig egyedekkel jelöljük a balra és
jobb nyitó relációjeleket.
]]>Ez egy listaelem
]]>Ez egy másik listaelem
]]>Ez már egy harmadik listaelem
]]>Itt a vége a példának.]]>
]]>
</programlisting>
Ha megnézzük a dokumentum
forrását, láthatjuk a
jelölésnél alkalmazott
megoldásokat.INCLUDE és
IGNOREAz INCLUDE kulcsszó
megadásakor a jelölt szakasz teljes tartalma
feldolgozódik. Ezzel szemben viszont az
IGNORE kulcsszó esetén a
jelölt szakasz tartalmát figyelmen
kívül fogja hagyni az elemzõ és
ezáltal nem dolgozódik fel, tehát nem
jelenik meg az eredményben.Az INCLUDE és
IGNORE használata jelölt
szakaszokban<![ INCLUDE [
Ez a szöveg feldolgozódik és beillesztõdik.
]]>
<![ IGNORE [
Ez a szöveg nem dolgozódik fel és nem is illesztõdik be.
]]>Ezek önmagukban nem túlzottan hasznosak,
elvégre, ha el akarunk távolítani egy
szövegrészt a dokumentumunkból, akkor vagy
egyszerûen kivágjuk, vagy megjegyzésbe
tesszük.Sokkal hasznosabbá válhatnak viszont a
számunkra, ha észrevesszük, hogy paraméteregyedek
segítségével mindez
vezérelhetõ. Emlékezzünk vissza, hogy
a paraméteregyedek csak SGML környezetben
használhatóak, és a jelölt
szakaszokhoz tartozó kulcsszavak
pontosan egy ilyen SGML környezetben
vannak.Például tegyük fel, hogy egy
dokumentáció nyomtatott és elektronikus
változatán dolgozunk egyszerre. Az elektronikus
változatban szeretnénk azonban
néhány olyan elemet is betenni, amelyeket nem
akarunk megjelentetni nyomtatásban.Hozzunk létre egy paraméteregyedet és
legyen az értéke INCLUDE.
Készítsük el a dokumentumot, és
jelölt szakaszokkal határoljuk el a csak az
elektronikus változat megjelenõ részeket.
Ezekben a jelölt szakaszokban a kulcsszavak
helyére írjuk be az elõbbi
paraméteregyedet.Amikor a dokumentumot nyomtatásra akarjuk
elõkészíteni, akkor legyen a
paraméteregyed értéke
IGNORE, majd dolgozzuk fel újra az
egész dokumentumot.Jelölt szakaszok vezérlése
paraméteregyeddel<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN" [
<!ENTITY % elektronikus.valtozat "INCLUDE">
]]>
...
<![ %elektronikus.valtozat [
Ez a rész csak a dokumentum elektronikus változatában fog megjelenni.
]]>A nyomtatott változat
elõkészítésekor így
állítsuk át az egyed
értékét:<!ENTITY % elektronikus.valtozat "IGNORE">A dokumentum újbóli feldolgozása
során a jelölt szakaszok a
%elektronikus.valtozat
értékét fogják
kulcsszóként megkapni, és így
kimaradnak.Egy kis gyakorlás…A következõ szöveggel hozzunk
létre egy állományt
szakasz.sgml néven:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN" [
<!ENTITY % szoveges.kimenet "INCLUDE">
]>
<html>
<head>
<title>Példa a jelölt szakaszok használatára</title>
</head>
<body>
<p>Ez a bekezdés <![ CDATA [sok-sok <
karaktert (< < < < <) tartalmaz, így érdemesebb
CDATA szakaszba tenni]]>.</p>
<![ IGNORE [
<p>Ez a bekezdés egyértelmûen nem fog látszódni az eredményben.</p>
]]>
<![ [
<p>Ez a bekezdés nem fog feltétlenül megjelenni az eredményben.</p>
<p>A konkrét megjelenését a
paraméteregyed értéke befolyásolja.</p>
]]>
</body>
</html>
- A &man.sgmlnorm.1; használatával
- normalizáljuk ezt az állományt, majd
- elemezzük az eredményt. Nézzük meg
- melyik bekezdések tûntek el, melyek jelentek meg
+ A osgmlnorm
+ használatával normalizáljuk ezt az
+ állományt, majd elemezzük az
+ eredményt. Nézzük meg melyik
+ bekezdések tûntek el, melyek jelentek meg
és mi történt a CDATA szakaszok
tartalmával.A szoveges.kimenet
értéke legyen INCLUDE az
IGNORE helyett. Futassuk le újra
így a normalizálást és
vizsgáljuk meg mi változott az
eredményben.BefejezésEzzel befejeztük az SGML alapismeretek
bemutatását. A helyigény, illetve a
bonyolultság visszaszorítása
érdekében bizonyos témákkal teljes
mélységében (vagy egyáltalán)
nem foglalkoztunk, azonban az iménti szakaszokban
elkerült SGML ismeretek elegendõek lesznek az FDP
által készített dokumentáció
megértéséhez.
diff --git a/hu_HU.ISO8859-2/books/handbook/disks/chapter.sgml b/hu_HU.ISO8859-2/books/handbook/disks/chapter.sgml
index 4416d88b99..de73810e1f 100644
--- a/hu_HU.ISO8859-2/books/handbook/disks/chapter.sgml
+++ b/hu_HU.ISO8859-2/books/handbook/disks/chapter.sgml
@@ -1,5908 +1,5920 @@
HáttértárakÁttekintésEz a fejezet arról szól, hogy miként
használjuk a lemezeinket a &os;-vel. Itt többek
közt szó esik a memória (alapú)
lemezekrõl, a hálózaton keresztül
csatlakoztatott meghajtókról, a szabványos
SCSI/IDE tárolóeszközökrõl és
az USB felületet használó
eszközökrõl.A fejezet elolvasása során
megismerjük:a &os; által alkalmazott
terminológiát, amivel a fizikai lemezeken
elhelyezkedõ adatokat írja le
(partíciók és slice-ok);hogyan bõvítsük rendszerünket
további merevlemezekkel;hogyan állítsuk be a &os;-t USB
tárolóeszközök
használatára;hogyan állítsunk be virtuális
állományrendszereket, például
memórialemezeket;hogyan használjuk a kvótákat a
lemezterület használatának
korlátozására;hogyan védjüket meg lemezeinket
titkosítással az
illetéktelenektõl;&os; alatt hogyan készítsünk és
írjuk CD-ket, DVD-ket;a biztonsági mentések
készítésének
különbözõ lehetõségeit;hogyan használjuk a &os; alatt
rendelkezésünkre álló,
biztonsági mentést készítõ
programokat;hogyan mentsünk floppy lemezekre;mik az állományrendszerek
pillanatképei és hogyan kell ezeket
hatékonyan használni.A fejezet elolvasásához ajánlott:a &os; rendszermag
beállításának és
telepítésének ismerete ()Az eszközök elnevezéseiA most következõ listában felsoroljuk a &os;
által ismert fizikai
tárolóeszközöket és a
hozzájuk tartozó elnevezéseket.
A fizikai lemezek elnevezésének
szabályaiA meghajtó típusaA meghajtóeszköz neveIDE merevlemezekadIDE CD-meghajtókacdSCSI merevlemezek és USB
tárolóeszközökdaSCSI CD-meghajtókcdKülönbözõ nem szabványos
CD-meghajtókmcd (Mitsumi CD-ROM) és
scd (Sony CD-ROM)
Floppy meghajtókfdSCSI szalagos meghajtóksaIDE szalagos meghajtókastFlash meghajtófla (&diskonchip; Flash
eszköz)RAID meghajtókaacd (&adaptec; AdvancedRAID),
mlxd és mlyd
(&mylex;), amrd (AMI &megaraid;),
idad (Compaq Smart RAID),
twed (&tm.3ware; RAID).
DavidO'BrienEredetileg írta: Lemezek hozzáadásalemezekhozzáadásEbben a szakaszban arról lesz szó, hogy a
jelenleg egyetlen meghajtót tartalmazó
rendszerünket hogyan tudjuk bõvíteni egy
új SCSI-lemez hozzáadásával. Ehhez
elsõként kapcsoljuk ki a
számítógépünket és
szereljük be a helyére az új meghajtót a
számítógép, a lemezvezérlõ
és a meghajtó gyártójának
utasításai alapján. Mivel ezt a
mûveletet rengeteg módon lehet elvégezni,
ezért ennek pontos részleteivel ez a
leírás most nem foglalkozik.Jelentkezzünk be root
felhasználóként. Miután
beszereltük a meghajtót, a
/var/run/dmesg.boot állomány
végignézésével bizonyosodjuk meg
róla, hogy a rendszer valóban megtalálta a
lemezt. A példánk szerint ez a meghajtó
tehát a da1 nevet fogja viselni,
amelyet a /1 könyvtárba akarunk
csatlakoztatni (ha IDE-meghajtót telepítünk,
akkor a hozzá tartozó eszköz neve
ad1 lesz).partíciókslice-okfdiskMivel a &os; IBM PC kompatibilis
számítógépeken fut, ezért nem
szabad figyelmen kívül hagynunk a PC BIOS
partícióit is. Ezek eltérnek a
hagyományos BSD partícióktól. Egy
PC-s lemeznek négy BIOS-os
partícióbejegyzése lehet. Ha egy lemezt
tényleg csak a &os;-nek szánunk, akkor
használhatjuk az ún.
dedikált módot. Minden
más esetben a &os;-nek egy PC BIOS
partícióban kell elhelyezkednie. A &os; a PC BIOS
partícióit slice-nak nevezi,
ezzel különbözteti ezeket a hagyományos BSD
partícióktól. Dedikált esetekben is
használhatjuk, de elsõsorban akkor kap fontosabb
szerepet, amikor a &os;-nek más operációs
rendszerekkel kell megosztani a helyet. Ezzel el tudjuk
kerülni, hogy a más operációs
rendszerekben megtalálható, nem &os; alapú
fdisk parancs megzavarodjon.A slice-ok használatakor a meghajtó
/dev/da1s1e néven kerül
hozzáadásra. Így kell olvasni: egyes SCSI
lemezes egység (második SCSI lemez), elsõ slice
(elsõ PC BIOS partíció) és
e BSD partíció. A
dedikált esetben a meghajtó neve viszont
egyszerûen csak /dev/da1e.Mivel a &man.bsdlabel.8; 32 bites egész számokat
használ a szektorok számának
tárolására, ezért lemezenként
csak 2^32-1 szektort tud ábrázolni, ami az esetek
többségében 2 TB méretû
címezhetõ területet jelent. Az &man.fdisk.8;
formátuma szerint sem a kezdõszektor, sem a hossz nem
lehet 2^32-1-nél több, amivel így a
partíciókat 2 TB, a lemezeket pedig 4 TB
méretûre korlátozza. A &man.sunlabel.8;
formátuma partíciónként 2^32-1
szektort enged meg és összesen 8
partíciót, amely ezáltal 16 TB
terület lefedését teszi lehetõvé.
Nagyobb lemezekhez &man.gpt.8; partíciók
használatosak.A &man.sysinstall.8; használatávalsysinstalllemezek hozzáadásasuKözlekedés a
sysinstall programbanA sysinstall könnyen
használható menüinek
segítségével az új lemezen
pillanatok alatt létre tudunk hozni
partíciókat és
megcímkézni ezeket. Ehhez vagy
root
felhasználóként jelentkezzünk be a
rendszerbe, vagy adjuk ki a su parancsot.
A sysinstall parancs kiadása
után lépjünk be a
Configure
(Beállítások) menübe. A
&os; Configuration Menu menüben
ezután keressük meg és válasszuk
ki az Fdisk menüpontot.Az fdisk
partíciószerkesztõMiután eljutottunk az
fdisk alkalmazáshoz, az
A lenyomásával
felajánlhatjuk az egész lemezt a &os;
számára. Amikor elõkerül a
kérdés, hogy remain cooperative with
any future possible operating systems
(mûködõképes maradjon-e a
késõbbiekben telepítendõ
operációs rendszerekkel), akkor
válaszoljuk rá YES-szel
(tehát igen). A W gomb
lenyomásával írjuk a lemezre a most
elvégzett változtatásokat.
Ezután már a Q
használatával ki is léphetünk az
FDISK szerkesztõbõl. A következõ
lépésben a Master Boot
Record-ról fognak minket megkérdezni.
Mivel most egy már mûködõ rendszert
bõvítünk, ezért a válaszunk
erre None lesz.A lemezcímkék szerkesztéseBSD
partíciókMost lépjünk ki a
sysinstall
alkalmazásból és indítsuk el
újra. Kövessük az iménti
útmutatásokat, de ezúttal a
Label menüpontot válasszuk
ki. Ezzel a Disk Label Editor-ba vagyis
a lemezcímkék szerkesztõjéhez
jutunk. Itt fogjuk létrehozni a hagyományos
BSD partíciókat. Egy lemezen nyolc ilyen
partíció lehet,
a-tól h-ig.
Közülük néhány
partíció címkéjét
megkülönböztetjük. Az
a partíció jelöli a
rendszer indításához használt
partíciót, a
gyökérpartíciót
(/). Tehát a
partíció csak a rendszerlemezünkön
szerepelhet (tehát ahonnan indul a rendszer). A
b partíció a
lapozáshoz használt partíciókat
jelöli és több lemezen is szerepelhet. A
c partíción keresztül
lehet elérni az egészt lemezt dedikált
módban vagy az egész &os; slice-ot slice
módban. A többi partíció
tetszõlegesen felhasználható.A sysinstall
címkeszerkesztõje az e
betûvel szereti megjelölni a sem nem
rendszerindító, sem nem lapozó
partíciókat. A címkeszerkesztõben
egyetlen állományrendszert a
C lenyomásával lehet
készíteni. Amikor erre válaszul
megkérdezi a típusát (FS
(állományrendszer) vagy swap
(lapozóterület) legyen), akkor válasszuk
az FS beállítást
és adjuk meg a csatlakozási pontját
(például /mnt). Amikor a
lemezt telepítés után (post-install)
adjuk hozzá, akkor a
sysinstall
valójában nem hoz létre hozzá
bejegyzéseket az /etc/fstab
állományban, ezért a
csatlakozási pont megadása nem is
feltétlenül fontos.Most már készen állunk arra, hogy
rögzítsük az új címkét
a lemezre és létrehozzunk vele egy
állományrendszert. Ehhez nyomjuk le a
W gombot. Ne foglalkozzunk vele, ha a
sysinstall nem képes
csatlakoztatni az új partíciót. Ha
ezzel megvagyunk, akkor lépjünk ki a
címkeszerkesztõbõl és a
sysinstallból is.BefejezésMost már csak annyi teendõnk maradt, hogy
felvegyük az /etc/fstab
állományba az új lemezhez
tartozó bejegyzést.Parancssoros eszközök
használatávalSlice módbanEzzel a beállítással a
lemezünkre késõbb más
operációs rendszereket is
telepíthetünk, és nem okoz gondot a
saját fdisk segédprogramjaik
mûködésében. Az új lemezek
telepítésénél ezt a módszer
ajánlatos követni. A dedikált módot
viszont csak abban az esetben használjuk, ha erre
nyomós okunk van!&prompt.root; dd if=/dev/zero of=/dev/da1 bs=1k count=1
&prompt.root; fdisk -BI da1 # inicializáljuk az új lemezt
&prompt.root; bsdlabel -B -w da1s1 auto # címkézzük meg
&prompt.root; bsdlabel -e da1s1 # szerkeszzük át a frissen létrehozott címkét és vegyünk fel egy új partíciót
&prompt.root; mkdir -p /1
&prompt.root; newfs /dev/da1s1e # ismételjük meg minden létrehozott partícióhoz
&prompt.root; mount /dev/da1s1e /1 # csatlakoztassuk a partíció(ka)t
&prompt.root; vi /etc/fstab # vegyük fel a megfelelõ bejegyzés(eke)t az /etc/fstab állománybaIDE-lemezek esetén azad
eszközt a da eszközzel
helyettesítsük.Dedikált módbanOS/2Amennyiben az új meghajtót nem akarjuk
megosztani egyetlen más operációs
rendszerrel sem, használhatjuk a
dedicated (dedikált) módot.
Ne felejtsük el azonban, hogy ez képes
összezavarni a Microsoft operációs
rendszereit, habár ebbõl semmilyen kárunk
nem fog származni. Az IBM &os2;
operációs rendszere azonban
kisajátít minden olyan
partíciót, amelyet nem tud olvasni.&prompt.root; dd if=/dev/zero of=/dev/da1 bs=1k count=1
&prompt.root; bsdlabel -Bw da1 auto
&prompt.root; bsdlabel -e da1 # létrehozzuk az `e' partíciót
&prompt.root; newfs /dev/da1e
&prompt.root; mkdir -p /1
&prompt.root; vi /etc/fstab # felvesszük a /dev/da1e partíciót
&prompt.root; mount /1Egy másik megoldás:&prompt.root; dd if=/dev/zero of=/dev/da1 count=2
&prompt.root; bsdlabel /dev/da1 | bsdlabel -BR da1 /dev/stdin
&prompt.root; newfs /dev/da1e
&prompt.root; mkdir -p /1
&prompt.root; vi /etc/fstab # felvesszük a /dev/da1e partíciót
&prompt.root; mount /1RAIDSzoftveres RAIDChristopherShumwayEredetileg készítette: JimBrownEllenõrizte: RAIDszoftveresRAIDCCDÖsszefûzött lemezek
beállításaA nagyobb méretû
háttértárolók
kiválasztásánál a legfontosabb
tényezõk a sebesség,
megbízhatóság és a
költség. Nagyon ritkán lehet csak ezt a
hármat egyensúlyba hozni:
általában a gyors és
megbízható
tárolóeszközök sok pénzbe
kerülnek, valamint a költségek
megtakarításához vagy a sebességet
vagy pedig a megbízhatóságot kell
feláldoznunk.A továbbiakban egy olyan rendszert mutatunk be,
ahol a elsõsorban a költségek, majd csak
ezután a sebesség és
megbízhatóság kerültek
elõtérben. A rendszer adatátviteli
sebességét a hálózat
korlátozza. Habár emellett a
megbízhatóság is nagyon fontos, a
tárgyalt összefûzött meghajtó
(Concenated Disk, CCD) csak adatokat szolgáltat
és a teljes tartalma bármikor
visszaállítható, mivel
rendelkezésre áll CD-n.A feladat elvégzésére alkalmas
háttértároló
kiválasztásában elsõként a
saját elvárásainkat kell tudnunk
megfogalmazni. Ha nekünk jobban számít az
árnál a sebesség vagy a
megbízhatóság, akkor a
mostaniaktól némileg eltérõ
konfigurációt kell majd
építenünk.A hardver telepítéseA rendszert tartalmazó IDE-lemez mellett
három darab, egyenként 30 GB-os 5400-as
percenkénti fordulatszámú Western
Digital gyártmányú merevlemez alkotja
majd a létrehozni kívánt, kb.
90 GB összméretû
összefûzött lemezt. Ideális esetben
minden IDE-lemez saját külön
vezérlõn és kábelen van, de a
költségek csökkentése miatt nem
használtunk további
IDE-vezérlõket. Ehelyett inkább
jumperekkel úgy állítottuk be a
lemezeket, hogy minden vezérlõre egy mester
(master) és egy szolga (slave) módú
merevlemez kapcsolódjon.A beszerelés után
beállítottuk a rendszer BIOS-át, hogy
automatikusan felismerje a csatlakoztatott lemezeket. De
ami még fontosabb, hogy a &os; is észlelte
ezeket az indítás során:ad0: 19574MB <WDC WD205BA> [39770/16/63] at ata0-master UDMA33
ad1: 29333MB <WDC WD307AA> [59598/16/63] at ata0-slave UDMA33
ad2: 29333MB <WDC WD307AA> [59598/16/63] at ata1-master UDMA33
ad3: 29333MB <WDC WD307AA> [59598/16/63] at ata1-slave UDMA33Ha a &os; nem látná az összes
lemezt, akkor ellenõrizzük a jumperek helyes
beállítását. Napjainkban a
legtöbb IDE-meghajtón találunk egy
Cable Select jumpert is. Ezzel
nem a mester/szolga módot
állítjuk be! A megfelelõ jumper
beazonosításához olvassuk el a
meghajtóhoz tartozó
dokumentációt.A következõ lépésben azt
vesszük nagyító alá, hogyan lehet
ezeket az állományrendszer
részévé tenni. Ezzel kapcsolatban a
&man.vinum.8; () és a
&man.ccd.4; elolvasása ajánlatos. Erre a
célra itt most a &man.ccd.4;
használatát választottuk.A CCD beállításaA &man.ccd.4; meghajtó
segítségével több ugyanolyan
lemezt tudunk összefûzni egyetlen logikai
állományrendszerré. A &man.ccd.4;
használatához arra is
szükségünk van, hogy a &man.ccd.4;
támogatása jelen legyen a rendszermagban. A
következõ sor tegyük bele a rendszermag
konfigurációs
állományába, fordítsuk
újra és telepítsük a
rendszermagot:device ccdA &man.ccd.4; támogatása modulként
is betölthetõ.A &man.ccd.4; beállításához
elõször a &man.bsdlabel.8; programmal meg fel kell
címkéznünk a lemezeket:bsdlabel -w ad1 auto
bsdlabel -w ad2 auto
bsdlabel -w ad3 autoÍgy létrejön egy-egy BSD
típusú címke a
ad1c, ad2c
és ad3c
eszközökre, amely így lefedi a lemez
egész területét.Most pedig változtassuk meg a lemezcímke
típusát. Ehhez használjuk ismét
a &man.bsdlabel.8; programot:bsdlabel -e ad1
bsdlabel -e ad2
bsdlabel -e ad3Az EDITOR környezeti
változóban megadott
szövegszerkesztõvel (ez általában a
&man.vi.1;) megnyílik minden egyes lemezhez a
jelenlegi lemezcímke.Egy módosítatlan lemezcímke
valahogy így néz ki:8 partitions:
# size offset fstype [fsize bsize bps/cpg]
c: 60074784 0 unused 0 0 0 # (Cyl. 0 - 59597)A &man.ccd.4; számára hozzunk létre
egy új e partíciót.
Ezt lényegében a c
partíció lemásolásával
keletkezik, de nála az (az
állományrendszer típusa) oszlopban
mindenképpen 4.2BSD
szerepeljen! A lemezcímke most már valahogy
így fog kinézni:8 partitions:
# size offset fstype [fsize bsize bps/cpg]
c: 60074784 0 unused 0 0 0 # (Cyl. 0 - 59597)
e: 60074784 0 4.2BSD 0 0 0 # (Cyl. 0 - 59597)Az állományrendszer
kiépítéseMost, miután felcímkéztük az
összes lemezünket, lássunk neki a
&man.ccd.4; kiépítésének. Ezt a
&man.ccdconfig.8; meghívásával
és az alábbihoz hasonló
paraméterek átadásával
tehetjük meg:ccdconfig ccd0 32 0 /dev/ad1e /dev/ad2e /dev/ad3eA paraméterek rövid leírása
és használata:Az elsõ paraméter a
létrehozandó eszköz, ami jelen
esetünkben a /dev/ccd0c. A
/dev/ részt nem
kötelezõ megadni.A kihagyás nagysága az
állományrendszerben. A kihagyás
határozza meg a lemezblokkban alkalmazott
csíkozás (striping) vastagságát, ami
általában 512 byte. Ennek megfelelõen a
32-es kihagyás 16 384 byte-os csíkokat ad
meg.A &man.ccdconfig.8;
beállításai. Ha engedélyezni
akarjuk a lemezek tükrözését, akkor itt
megadhatjuk. Mivel ez a konfiguráció most nem
nyújt tükrözést a &man.ccd.4;
számára, ezért állítsuk
nullára (0).A &man.ccdconfig.8; parancsnak
utolsóként azokat az eszközöket
kell felsorolni, amelyeket tömbbe akarunk fûzni.
Minden eszközt teljes elérési úttal
adjuk meg.A &man.ccdconfig.8; futtatása után a
&man.ccd.4; beállítódik. Most
már állományrendszert is rakhatunk
rá. A &man.newfs.8; man oldalról szedjük
össze a szükséges
paraméterezést, vagy egyszerûen csak
gépeljünk be ennyit:newfs /dev/ccd0cAz egész önmûködõvé
tételeA &man.ccd.4; eszközt általában
minden egyes indítás után
használni akarjuk. Ennek
eléréséhez elõször ezt be
kell állítanunk. Az alábbi parancs
kiadásával írassuk be a jelenlegi
beállítasainkat tükrözõ
/etc/ccd.conf
állományt:ccdconfig -g > /etc/ccd.confAz újraindítás során az
/etc/rc parancs futtatja le a
ccdconfig -C parancsot, ha az
/etc/ccd.conf állomány
létezik. Ez automatikusan beállítja a
&man.ccd.4; eszközöket, így ilyenkor tudjuk
csatlakoztatni is ezeket.Ha egyfelhasználós módban
indítjuk a rendszert, mielõtt még a
&man.mount.8; paranccsal csatlakoztatni tudnánk a
&man.ccd.4; eszközt, a tömb
beállításához meg kell
hívnunk a következõ parancsot:ccdconfig -CHa a rendszerindításkor automatikusan
csatlakoztatni akarjuk a &man.ccd.4; eszközt, akkor az
/etc/fstab állományba
helyezzünk el egy hozzá tartozó
bejegyzést:/dev/ccd0c /media ufs rw 2 2A Vinum kötetkezelõRAIDszoftveresRAIDVinumA Vinum kötetkezelõ egy blokkos
eszközmeghajtó, ami virtuális lemezes
meghajtókat valósít meg.
Elkülöníti a lemezes
hardvereszközöket a blokkos
eszközmeghajtók felületétõl
és a kettõ között úgy
képezi le az adatokat, hogy a hagyományos
lemezes tárolással szemben megnövekedett
rugalmasságot, teljesítményt és
megbízhatóságot kapunk. A &man.vinum.8;
ismeri a RAID-0, RAID-1 és RAID-5 modelleket
egyaránt, melyeket önmagukban és
együttesen kombinálva is
használhatunk.A bõvebben ismerteti a
&man.vinum.8; rendszerét.Hardveres RAIDRAIDhardveresA &os; rengeteg különbözõ
típusú hardveres
RAID-vezérlõt ismer. Ezek az
eszközök a &os; külön erre a célra
szánt támogatása nélkül
képesek vezérelni a
RAID-alrendszert.A rajta levõ BIOS
segítségével a kártya a legtöbb
lemezmûveletet egyedül kezeli. A
következõkben egy Promise IDE
RAID vezérlõt alkalmazó
rendszert fogunk beállítani. Miután
telepítettük a kártyát és
indítjuk a rendszert, bekéri a
szükséges információkat.
Kövessük az utasításokat és
lépjünk be a kártya
beállító képernyõjére.
Itt tudjuk kombinálni az összes csatlakoztatott
meghajtónkat. Amikor ezzel a végeztünk, a
lemezek egyetlen lemezként fognak a &os;
számára viselkedni. A többi
RAID-szint is ehhez hasonlóan
állítható be.Az ATA RAID-1 tömbök
újraszervezéseA &os; lehetõséget a tömbben levõ
meghibásodott eszközök menet közben
elvégezhetõ cseréjére. Ehhez arra van
szükségünk, hogy még
újraindítás elõtt
elcsípjük a hibát.Hiba esetén valami hasonlót fogunk
látni a /var/log/messages
állományban vagy a &man.dmesg.8;
kimenetében:ad6 on monster1 suffered a hard error.
ad6: READ command timeout tag=0 serv=0 - resetting
ad6: trying fallback to PIO mode
ata3: resetting devices .. done
ad6: hard error reading fsbn 1116119 of 0-7 (ad6 bn 1116119; cn 1107 tn 4 sn 11)\\
status=59 error=40
ar0: WARNING - mirror lostTovábbi információkat az
&man.atacontrol.8; programtól szerezhetünk:&prompt.root; atacontrol list
ATA channel 0:
Master: no device present
Slave: acd0 <HL-DT-ST CD-ROM GCR-8520B/1.00> ATA/ATAPI rev 0
ATA channel 1:
Master: no device present
Slave: no device present
ATA channel 2:
Master: ad4 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
Slave: no device present
ATA channel 3:
Master: ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
Slave: no device present
&prompt.root; atacontrol status ar0
ar0: ATA RAID1 subdisks: ad4 ad6 status: DEGRADEDA lemez biztonságos
eltávolításához
elõször válasszuk le (detach) a
meghibásodott lemezhez tartozó
csatornát:&prompt.root; atacontrol detach ata3Cseréljük ki a lemezt.Csatlakoztassuk újra (attach) az ATA
csatornát:&prompt.root; atacontrol attach ata3
Master: ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
Slave: no device presentTartalékként (spare) adjuk hozzá az
új lemezt a tömbhöz:&prompt.root; atacontrol addspare ar0 ad6Szervezzük újra (rebuild) a
tömböt:&prompt.root; atacontrol rebuild ar0A folyamat elõrehaladását a
következõ parancs
begépelésével tudjuk figyelni:&prompt.root; dmesg | tail -10
[a kimenet többi része]
ad6: removed from configuration
ad6: deleted from ar0 disk1
ad6: inserted into ar0 disk1 as spare
&prompt.root; atacontrol status ar0
ar0: ATA RAID1 subdisks: ad4 ad6 status: REBUILDING 0% completedVárjunk a mûvelet
befejezõdéséig.MarcFonvieilleÍrta: USB tárolóeszközökUSBlemezekManapság már számos külsõ
tárolóeszköz az USB (Universal Serial Bus)
közvetítésével csatlakozik a
számítógéphez: merevlemezek, pen
drive-ok, CD-írók stb. A &os; ezeket az
eszközöket is ismeri.BeállításA USB tárolóeszközöket kezelõ
meghajtó, az &man.umass.4; felelõs az USB
alapú tárolóeszközök
támogatásáért. Ha a
GENERIC rendszermagot használjuk,
akkor semmit sem kell változtatnunk. Ha saját
rendszermagunk van, akkor gondoskodjunk róla, hogy a
következõ sorokat beraktuk a rendszermag
beállításait tartalmazó
állományba:device scbus
device da
device pass
device uhci
device ehci
device usb
device umassAz &man.umass.4; meghajtó a SCSI alrendszeren
keresztül éri el az USB
tárolóeszközöket, tehát az USB
eszközeinket a rendszer SCSI eszközként
látja. Az alaplapon található USB
chipkészlet típusától
függõen vagy csak a device uhci,
vagy USB 1.X esetén pedig a
device ohci bejegyzésre lesz
szükségünk. De abból sem
származik kárunk, ha mind a kettõt
meghagyjuk. Az USB 2.0 szabványú
vezérlõket a &man.ehci.4; meghajtó
(device ehci) támogatja. Ha
módosítani kellett a konfigurációs
állományt, akkor ne felejtsük el
újrafordítani és telepíteni sem a
rendszermagot.Ha az USB eszközünk egy CD- vagy
DVD-író, akkor a következõ sorral a
SCSI CD-meghajtók meghajtóját, a
&man.cd.4; eszközt kell beépítenünk a
rendszermagba:device cdMivel az író is SCSI eszközként
látszik, ezért az &man.atapicam.4; nem
szerepelhet a rendszermag beállításai
között.A beállítások
kipróbálásaA beállításaink készen
állnak a kipróbálásra:
csatlakoztassuk a számítógéphez az
USB eszközünket és a rendszerüzeneteket
tároló pufferben (&man.dmesg.8;) hamarosan meg is
jelenik a hozzá tartozó meghajtó:umass0: USB Solid state disk, rev 1.10/1.00, addr 2
GEOM: create disk da0 dp=0xc2d74850
da0 at umass-sim0 bus 0 target 0 lun 0
da0: <Generic Traveling Disk 1.11> Removable Direct Access SCSI-2 device
da0: 1.000MB/s transfers
da0: 126MB (258048 512 byte sectors: 64H 32S/T 126C)Természetesen a gyártóra,
márkára, az eszköz
leírójára (da0)
és egyebekre vonatkozó részletek
eltérhetnek.Mivel az USB eszköz SCSI eszközként
látszik, ezért a camcontrol
parancs használható a rendszerhez csatlakoztatott
USB tárolóeszközök
listázásához:&prompt.root; camcontrol devlist
<Generic Traveling Disk 1.11> at scbus0 target 0 lun 0 (da0,pass0)Ha a meghajtón állományrendszer is
található, akkor képesek vagyunk
csatlakoztatni. A
elolvasása segíthet az USB meghajtón
partíciókat kialakítani és
formázni, amennyiben szükséges.A rendszer biztonsága szempontjából
nem tekinthetõ megbízhatónak, ha olyan
felhasználók számára is
engedélyezzük tetszõleges meghajtók
csatlakoztatását (például a
vfs.usermount
engedelyézesével), amelyekben nem bízunk
meg. A &os; által támogatott
állományrendszerek döntõ
többsége nem nyújt védelmet a
káros szándékkal telepített
eszközök ellen.Ha az eszközt normál
felhasználókkal is
csatlakoztathatóvá akarjuk tenni, akkor
további lépések megtételére
is szükségünk lesz. Elõször is a
felhasználóknak valahogy el kell tudniuk
érniük az USB tárolóeszköz
csatlakoztatásakor keletkezõ eszközöket.
Ezt úgy tudjuk megoldani, ha az érintett
felhasználókat felvesszük az
operator csoportba. Ebben a &man.pw.8;
lehet a segítségünkre. Másodsorban
amikor ezek az eszközök létrejönnek, az
operator csoportnak tudniuk kell ezeket
olvasniuk és írniuk. Ezt úgy tudjuk
megvalósítani, ha felvesszük a
következõ sorokat az
/etc/devfs.rules
állományba:[localrules=5]
add path 'da*' mode 0660 group operatorHa viszont vannak SCSI lemezeink is rendszerben, akkor a
helyzet egy kicsit megváltozik. Tehát
például a rendszerben már eleve vannak
da0, da1
és da2 néven lemezek,
akkor a második sort ennek megfelelõen
változtassuk meg:add path 'da[3-9]*' mode 0660 group operatorEzzel kizárunk minden, korábban már
létezõ lemezt az operator
csoportból.Emellett még az /etc/rc.conf
állományban engedélyeznünk kell a
saját &man.devfs.rules.5;
szabályrendszerünket is:devfs_system_ruleset="usb_rules"Ezt követõen be kell állítanunk a
rendszermagban, hogy a hagyományos
felhasználók képesek legyenek
állományrendszereket csatlakoztatni. Ezt a
legkönnyebb úgy tudjuk megtenni, ha az
/etc/sysctl.conf állományba
felvesszük a következõ sort:vfs.usermount=1Azonban ne felejtsük el, hogy ez csak a rendszer
következõ indításától
él. De a &man.sysctl.8; parancs
használatával is beállíthatjuk ezt
az értéket.Az utolsó lépésben hozzunk létre
egy könyvtárat az állományrendszer
csatlakoztatásához. Ezt a könyvtárat
az a felhasználó fogja birtokolni, aki az
állományrendszert csatlakoztatnia akarja. Ez
például root
felhasználóként úgy tudjuk megtenni,
ha a felhasználónak létrehozunk egy
könyvtárat
/mnt/felhasználó
néven (ahol a
felhasználó nevet
cseréljük a tényleges
felhasználó nevére, a
csoport nevet pedig a
felhasználóhoz tartozó elsõdleges
csoport nevére):&prompt.root; mkdir /mnt/felhasználó
&prompt.root; chown felhasználó:csoport /mnt/felhasználóMost tegyük fel, hogy csatlakoztatnuk egy USB pen
drive-ot és ennek megfelelõen megjelenik a
/dev/da0s1 eszköz. Mivel az ilyen
eszközökre általában gyárilag FAT
állományrendszert tesznek, ezért így
kell ezeket csatlakoztatni a &man.mount.8; paranccsal:&prompt.user; mount -t msdosfs -o -m=644,-M=755 /dev/da0s1 /mnt/felhasználóHa leválasztjuk az eszközt (miután
kiadtuk a &man.umount.8; parancsot), akkor a
rendszerüzenetek között valami ilyesmit fogunk
látni:umass0: at uhub0 port 1 (addr 2) disconnected
(da0:umass-sim0:0:0:0): lost device
(da0:umass-sim0:0:0:0): removing device entry
GEOM: destroy disk da0 dp=0xc2d74850
umass0: detachedA témáról bõvebbenA Lemezek
hozzáadása és az Állományrendszerek
csatlakoztatása és
leválasztása címû szakaszok
elolvasása mellett a következõ man oldalakat is
ajánljuk: &man.umass.4;, &man.camcontrol.8; és
&man.usbconfig.8; &os; 8.X
esetében, vagy &man.usbdevs.8; a &os; korábbi
változatainál.MikeMeyerÍrta: Lézeres tárolóeszközök (CD-k)
létrehozása és használataCD-klétrehozásaBevezetésA CD-k számos lehetõségünkben
eltérnek a hagyományos lemezektõl. Kezdetben
a felhasználók nem is voltak képesek
írni ezeket. Olyannak tervezték, hogy a fejek
sávok közti mozgásából
fakadó késleltetés nélkül
lehessen folyamatosan olvasni. A
szállítása a maga idejében sokkal
könnyebb volt minden vele egyforma méretû
eszköznél.A CD-ken is találhatunk sávokat, azonban ez
csak a folyamatosan olvasható adat egy szakaszát
jelenti, nem pedig a lemez fizikai tulajdonságát.
Ha &os;-n akarunk CD-t készíteni, akkor ehhez
elõször össze kell állítanunk a CD
egyes sávjaira kerülõ adatokat és
ezután rögzíteni ezeket a sávokat a
CD-n.ISO 9660állományrendszerekISO 9660Az ISO 9660 állományrendszert úgy
tervezték, hogy megbirkózzon ezekkel az
eltérésekkel. Sajnos ezzel együtt kõbe
vésték az állományrendszerek
akkoriban érvényes korlátozásait is.
Szerencsére lehetõséget ad
bõvítésre, ezáltal a helyesen
megírt CD-k képesek úgy
átlépni ezeket a határokat, hogy
közben az általuk alkalmazott
kiterjesztéseket nem ismerõ rendszerekkel is
együtt tudnak mûködni.sysutils/cdrtoolsA sysutils/cdrtools port
tartalmaz egy &man.mkisofs.8; nevû programot, amellyel
létre tudunk hozni ISO 9660 típusú
állományrendszert tartalmazó
adatállományt. Többféle
kiterjesztést is ismer, amit majd a lentebb ismertett
opciókkal érhetünk el.CD-íróATAPIA CD írásához használt
konkrét segédeszköz attól függ,
hogy ATAPI vagy esetleg másmilyen írónk
van. Az ATAPI CD-írók az alaprendszer
részeként elérhetõ burncd programon
keresztül használhatóak. A SCSI és
USB CD-írók esetén pedig a sysutils/cdrtools portban
megtalálható cdrecord programot
használhatjuk. Az ATAPI/CAM
modul segítségével a cdrecord és
más SCSI-írókra készült
programokat is tudunk használni ATAPI hardvereken.Ha a CD-író szoftverünket grafikus
felhasználói felületen keresztül
szeretnénk használni, akkor az
X-CD-Roast vagy a
K3b alkalmazásokat
érdemes szemügyre vennünk. Ezek az
eszközök elérhetõek csomagként vagy
a sysutils/xcdroast
és sysutils/k3b
portokból. ATAPI hardver esetén az
X-CD-Roast és a
K3b alkalmazások
használatához szükségünk lesz az
ATAPI/CAM modulra.mkisofsA sysutils/cdrtools port
részeként elérhetõ &man.mkisofs.8;
program képes a &unix; típusú
állományrendszer könyvtárszerkezete
alapján egy ISO 9660 típusú
állományrendszert tartalmazó image-et
készíteni. Legegyszerûbb módon
így használhatjuk:&prompt.root; mkisofs -o image.iso/az/elérési/útállományrendszerekISO 9660Ezzel a paranccsal egy olyan
image.iso nevû
állományt hozunk létre, amely
/az/elérési/út
által megadott helyen található
könyvtárszerkezetet mintázza ISO 9660
állományrendszer formájában. A
folyamat során minden olyan állományt
leképez szabványos ISO 9660
állományrendszerbeli névre, amely megfelel
a szabvány elvárásainak, és kihagy
minden olyan állományt, amely nem jellemzõ az
ISO állományrendszerekre.állományrendszerekHFSállományrendszerekJolietSzámos opció lehet
segítségünkre az ilyenkor felbukkanó
akadályok leküzdésében. Ezek
közül különösen fontos az
, amely a &unix; rendszerek
számára megszokott Rock Ridge
kiterjesztéseket, valamint a , amely a
Microsoft rendszerekben használt Joliet
kiterjesztéseit, és végül a
, amely a &macos; alatt létrehozott
HFS állományrendszerek kiterjesztéseit
engedélyezi.A kizárólag csak &os; rendszereken
használt CD-k esetében a
megadásával kapcsolhatjuk ki az
állománynevek mindenféle
korlátozását. Az
beállítás használatával olyan
állományrendszer képét hozzuk
létre, amely teljesen megegyezik a parancsban megadott
könyvtárból induló fa
tartalmával, habár több módon is
sérti az ISO 9660 szabvány
elõírásait.CD-krendszerindításhozAz utolsó általános jelleggel
használható beállítás a
. Ezzel lehet megadni az El
Torito szabványnak megfelelõ
rendszerindító CD
készítéséhez szükséges
rendszerindító image
elérését. Ennél a
beállításnál tehát meg kell
adni a rendszerindításhoz használt lemez
image-ét, amely a CD tartalmát magában
foglaló könyvtárszerkezetben
található valahol. A &man.mkisofs.8;
alapértelmezés szerint egy ún.
floppy emulációs módban
hozza létre az ISO image-et, ezért a
rendszerindításhoz használatos lemez
image-ének pontosan 1200, 1440 vagy 2880 KB
méretûnek kell lennie. Egyes
rendszerbetöltõk, mint amilyen például a
&os; terjesztéséhez használt lemezeken
található, nem használják ezt az
emulációt. Ilyen helyzetekben a
kapcsolót kell megadni.
Tehát ha a
/tmp/sajátboot
könyvtárban van egy indítható &os;
rendszerünk, amelyben a
/tmp/sajátboot/boot/cdboot
a rendszerindító lemez image-e, akkor egy
/tmp/indítható.iso
nevû ISO 9660 formátumú
állományrendszert tartalmazó image-et
például így tudunk
elkészíteni:&prompt.root; mkisofs -R -no-emul-boot -b boot/cdboot -o /tmp/indítható.iso/tmp/sajátbootMiután ezt megtettük, és a
rendszermagunkban benne van az md
eszköz támogatása, csatlakoztathatjuk is az
állományrendszert:&prompt.root; mdconfig -a -t vnode -f /tmp/indítható.iso -u 0
&prompt.root; mount -t cd9660 /dev/md0 /mntEzután már össze tudjuk vetni az
/mnt és
/tmp/sajátboot
könyvtárak egyezõségét.A &man.mkisofs.8; viselkedését több
más opcióval tudjuk finomhangolni, mint
például az ISO 9660 kiosztás
módosítása vagy a Joliet és HFS
lemezek készítése. A &man.mkisofs.8; man
oldalon mindezekrõl bõvebben olvashatunk.burncdCD-kírásaHa ATAPI CD-írónk van, akkor a
burncd paranccsal írhatjuk az ISO
image-et a lemezre. A burncd az alaprendszer
része, és /usr/sbin/burncd
néven érhetõ el. A használata igen
egyszerû, csupán pár paramétere
van:&prompt.root; burncd -f eszköz data image.iso fixateEzzel a paranccsal rámásoljuk az
image.iso állományt az
eszköz eszközre. Az
alapértelmezett eszköz a
/dev/acd0. A &man.burncd.8; man
oldalán találjuk meg az írási
sebességgel, a CD írás utáni
kiadásával és az audio lemezek
írásával kapcsolatos
beállításokat.cdrecordHa nincs ATAPI CD-írónk, akkor az
íráshoz a cdrecord parancsot
kell használnunk. A cdrecord nem az
alaprendszer része: vagy a sysutils/cdrtools portból vagy
a neki megfelelõ csomagból kell
telepítenünk. Az alaprendszerben
végbemenõ változások miatt a program
bináris változatai hibázhatnak, aminek
következtében csak
poháralátéteket fogunk tudni
gyártani. Ezért a rendszerrel együtt
érdemes frissíteni ezt a portot is. Vagy ha a
-STABLE verziót
használjuk, akkor mindig érdemes a port
elérhetõ legújabb verziójára
frissíteni.Miközben a cdrecord számos
paraméterrel rendelkezik, az alapvetõ
használata mégis egyszerûbb a
burncd parancsénál. Egy ISO
9660 formátumú image-et ugyanis a
következõ módon tudunk felírni
lemezre:&prompt.root; cdrecord dev=eszközimage.isoA cdrecord használatának
trükkös része a megfelelõ eszköz
megtalálása, tehát a
beállítás helyes megadása. Ehhez
használjuk a cdrecord
paraméterét, amely az
alábbihoz hasonló eredményt fog
produkálni:CD-kírása&prompt.root; cdrecord -scanbus
Cdrecord-Clone 2.01 (i386-unknown-freebsd7.0) Copyright (C) 1995-2004 Jörg Schilling
Using libscg version 'schily-0.1'
scsibus0:
0,0,0 0) 'SEAGATE ' 'ST39236LW ' '0004' Disk
0,1,0 1) 'SEAGATE ' 'ST39173W ' '5958' Disk
0,2,0 2) *
0,3,0 3) 'iomega ' 'jaz 1GB ' 'J.86' Removable Disk
0,4,0 4) 'NEC ' 'CD-ROM DRIVE:466' '1.26' Removable CD-ROM
0,5,0 5) *
0,6,0 6) *
0,7,0 7) *
scsibus1:
1,0,0 100) *
1,1,0 101) *
1,2,0 102) *
1,3,0 103) *
1,4,0 104) *
1,5,0 105) 'YAMAHA ' 'CRW4260 ' '1.0q' Removable CD-ROM
1,6,0 106) 'ARTEC ' 'AM12S ' '1.06' Scanner
1,7,0 107) *Itt felsorolásra kerülnek a
beállítás értékeként
felhasználható eszközök. Keressük
meg köztük a CD írónkat és a
értékének a
három vesszõvel elválasztott számot
adjuk meg. Ebben az esetben a CD-író eszköz
most az 1,5,0 lesz, tehát itt a helyes
paraméterezés . Ezt az
értékét könnyebben is meg lehet adni.
Ennek részleteirõl a &man.cdrecord.1; man
oldalán olvashatunk. Abban az esetben is érdemes
fellapoznunk, ha az audio sávok
írásáról, az írási
sebesség korlátozásáról vagy
más hasonló dolgokról akarunk
olvasni.Audio CD-k másolásaAudio CD-t úgy tudunk másolni, ha
elõször állományok sorozatába
mentjük a lemez tartalmát, majd ezeket az
állományokat egy üres CD-re írjuk.
Ennek konkrét folyamata azonban némileg
eltér az ATAPI- és SCSI-meghajtók
használata során.SCSI-meghajtók eseténA cdda2wav programmal mentsük le
a lemez tartalmát.&prompt.user; cdda2wav -v255 -D2,0 -B -OwavA cdrecord paranccsal írjuk
fel a .wav kiterjesztésû
állományokat.&prompt.user; cdrecord -v dev=2,0 -dao -useinfo *.wavGondoskodjunk róla, hogy a
2,0 értéket a nak megfelelõen helyesen
állítottuk be.ATAPI-meghajtók esetén
+
+ Az ATAPI/CAM modul
+ segítségével a
+ cdda2wav parancs ATAPI
+ meghajtókkal is használható. Ez a
+ megoldás általában kedvezõbb (a
+ hibák és bytesorrend ügyesebb
+ kezelése, stb.) a legtöbb
+ felhasználó számára, mint az itt
+ ismertetett.
+
+
Az ATAPI CD meghajtója az egyes sávokat
/dev/acddtnn néven teszi
elérhetõvé, ahol a
d a meghajtó
sorszáma, a nn a
sáv két számjeggyel kiírt
sorszáma, amelyet szükség szerint
balról nullával egészítenek ki.
Így tehát az elsõ meghajtó
elsõ sávja a /dev/acd0t01,
a második a /dev/acd0t02, a
harmadik a /dev/acd0t03 és
így tovább.Ellenõrizzük, hogy ezek az eszközök
jelen vannak a /dev
könyvtárban. Amennyiben
hiányoznának, kényszerítsük
ki a lemez újbóli
beolvasását:&prompt.root; dd if=/dev/acd0 of=/dev/null count=1Szedjük le az egyes sávokat a &man.dd.1;
használatával. A parancs kiadásakor
meg kell adnunk egy blokkméretet is:&prompt.root; dd if=/dev/acd0t01 of=track1.cdr bs=2352
&prompt.root; dd if=/dev/acd0t02 of=track2.cdr bs=2352
...
A burncd használatával
írjuk fel a lemezre az imént lementett
állományokat. Meg kell adnunk, hogy ezek
audio állományok, és hogy a
burncd a munka befejeztével
zárja le (fixate) a lemezt.&prompt.root; burncd -f /dev/acd0 audio track1.cdr track2.cdr ... fixateAdat CD-k másolásaAz adatot tartalmazó CD-ket le tudjuk másolni
egy olyan image-be, amely funkcionálisan megegyezik egy
&man.mkisofs.8; által létrehozott image-dzsel
és amivel le tudunk másolni bármilyen adat
CD-t. Az itt megadott példa azt feltételezi, hogy
a CD-meghajtónk neve acd0.
Helyére a saját CD-meghajtónk nevét
kell behelyettesíteni.&prompt.root; dd if=/dev/acd0 of=állomány.iso bs=2048Most miután lementettük az image-et,
írjuk fel CD-re a fentiek szerint.Adat CD-k használataMost, hogy már készítettünk egy
szabványos adat CD-t, valószínûleg
szeretnénk is valamilyen csatlakoztatni és
elérni a rajta levõ adatokat.
Alapértelmezés szerint a &man.mount.8; mindig azt
feltételezi, hogy az állományrendszerek
ufs típusúak. Ezért ha
valami ilyesmivel próbálkozunk:&prompt.root; mount /dev/cd0 /mntakkor egy Incorrect super block
szövegû hibaüzenetet lesz a jutalmunk, és
természetesen nem tudjuk csatlakoztatni a CD-t. Mivel a
CD nem UFS állományrendszert
tartalmaz, ezért az ilyen jellegû
kísérleteink mind kudarcba fognak fulladni.
Valahogy fel kell világosítanunk a &man.mount.8;
parancsot arról, hogy itt most egy
ISO9660 típusú
állományrendszert akarunk csatlakoztatni,
és akkor minden a helyére kerül. Ezt
úgy tudjuk megtenni, ha a &man.mount.8; parancsnak
megadjuk a paramétert.
Például, ha a /dev/acd0
néven elérhetõ CD-meghajtóban
levõ lemezt akarjuk a /mnt
könyvtárba csatlakoztatni, akkor ezt kell
begépelnünk:&prompt.root; mount -t cd9660 /dev/cd0 /mntVegyük észre, hogy az eszköz neve (ez ebben
a példában most /dev/cd0)
lehet más is attól függõen, hogy milyen
csatolófelületet használ a
CD-meghajtónk. Sõt, a
valójában csak a &man.mount.cd9660.8; parancsot
indítja el. Ennek tükrében tehát az
elõbbi példát így
rövidíthetjük le:&prompt.root; mount_cd9660 /dev/cd0 /mntEzen a módon bármilyen
gyártmányú adat CD-t képesek vagyunk
csatlakoztatni. Egyes ISO 9660 kiterjesztéseket
használó lemezek azonban esetleg furcsán
mûködhetnek. Például Joliet lemezek az
összes állomány nevét
kétbyte-os Unicode karakterben tárolják. A
&os; rendszermagja ugyan nem beszéli a Unicode-ot, de a
&os; CD9660 meghajtója képes menetközben
átkonvertálni a Unicode karaktereket. Ha bizonyos
nem angol karakterek kérdõjelekként
jelennének meg, akkor a
beállítás használatával
még egy helyi kódlapot is meg kell adnunk. Ezzel
kapcsolatban bõvebb
tájékoztatásért forduljunk a
&man.mount.cd9660.8; man oldalhoz.A beállítás
segítségével csak akkor lesz képes
a rendszermag elvégezni ezt az
átalakítást, ha elõtte
betöltjük a cd9660_iconv.ko
modult. Ezt megtehetjük úgy, hogy ha
felvesszük a következõ sort a
loader.conf
állományba:cd9660_iconv_load="YES"Indítsuk újra a
számítógépünket, vagy
közvetlenül töltsük be a modult a
&man.kldload.8; használatával.Estenként elõfordulhat, hogy kapunk egy
Device not configured hibaüzenetet a
CD-k csatlakoztatásakor. Ez általában arra
utal, hogy a CD-meghajtó nem érzékeli a
berakott lemezt, vagy éppen a meghajtó nem
látható a buszon. A CD-meghajtók
esetében pár másodpercig eltarthat,
amíg felismeri a berakott lemezt, ilyenkor mindig
legyünk türelemmel.Néha a SCSI CD-meghajtó nem
látható, mert nem volt elég ideje
válaszolni busz újraindítása
elõtt. Ha SCSI CD-meghajtónk van, akkor a
következõ beállítást tegyük
hozzá a rendszermagunk
konfigurációjához és fordítsuk újra a
rendszermagukat.options SCSI_DELAY=15000Ezzel utasítjuk a SCSI buszunkat egy 15
másodperces várakozásra a rendszer
indítása során, és így ezzel
elég esélyt adunk arra, hogy a CD-meghajtó
válaszolni tudjon a busz
újraindítása elõtt.Nyers adat CD-k írásaÍrhatunk közvetlenül is
állományokat a CD-re, ISO 9660
formátumú állományrendszer
használata nélkül. Sokan így
oldják meg a mentést. Ezt sokkal gyorsabban
lebonyolítható egy szabványos
CD esetében:&prompt.root; burncd -f /dev/acd1 -s 12 data archive.tar.gz fixateAz ezen a módon megírt CD-ket szintén
nyers módon kell olvasnunk:&prompt.root; tar xzvf /dev/acd1Az ilyen lemezeket nem tudjuk a normális CD-khez
hasonlóan csatlakoztatni. Sõt, az ilyen CD-ket csak
&os; alatt tudjuk olvasni. Ha csatlakoztathatóvá
akarjuk tenni a lemezt, vagy más operációs
rendszerek alól is szeretnénk olvasni, akkor erre
a célra a fentebb bemutatott &man.mkisofs.8; parancsot
kell használnunk.MarcFonvieilleÍrta: CD-írókATAPI/CAM meghajtóAz ATAPI/CAM meghajtó használataEz a meghajtó lehetõvé teszi az ATAPI
eszközök (CD-ROM, CD-RW, DVD meghajtók stb...)
számára, hogy a SCSI alrendszeren keresztül
legyenek elérhetõek, így esetünkben is
használhatóvá válnak olyan
alkalmazások, mint például sysutils/cdrdao vagy a
&man.cdrecord.1;.A meghajtó használatához a
következõ sort kell a
/boot/loader.conf állományba
illeszteni:atapicam_load="YES"Indítsuk újra a
számítógépet.Amennyiben a rendszermagban az &man.atapicam.4; statikus
támogatását szeretnénk
használni, úgy a következõ sort kell a
rendszermag konfigurációs
állományába felvenni:device atapicamTovábbá a következõ sorokra lesz
még szükségünk:device ata
device scbus
device cd
device passEzeknek már eleve ott kell szerepelnie.
Ezután fordítsuk újra és
telepítsük a rendszermagot, majd indítsuk
újra a számítógépet.A rendszer indulásakor az írónak ehhez
hasonló módon kell megjelennie:acd0: CD-RW <MATSHITA CD-RW/DVD-ROM UJDA740> at ata1-master PIO4
cd0 at ata1 bus 0 target 0 lun 0
cd0: <MATSHITA CDRW/DVD UJDA740 1.00> Removable CD-ROM SCSI-0 device
cd0: 16.000MB/s transfers
cd0: Attempt to query device size failed: NOT READY, Medium not present - tray closedA meghajtó most már elérhetõ a
/dev/cd0 eszközön keresztül,
és például ennyi
begépelésével csatlakoztatni tudunk
róla egy CD-t a /mnt
könyvtárba:&prompt.root; mount -t cd9660 /dev/cd0 /mntroot
felhasználóként a következõ
paranccsal tudjuk lekérdezi az író SCSI
címét:&prompt.root; camcontrol devlist
<MATSHITA CDRW/DVD UJDA740 1.00> at scbus1 target 0 lun 0 (pass0,cd0)Eszerint a 1,0,0 lesz az eszköz SCSI
címe, amelyet a &man.cdrecord.1; és más
SCSI alkalmazások esetén adunk meg.Az ATAPI/CAM és SCSI rendszerek tekintetében
olvassuk el az &man.atapicam.4; és &man.cam.4; man
oldalakat.MarcFonvieilleÍrta: AndyPolyakovSegítséget nyújtott benne:
Lézeres tárolóeszközök (DVD-k)
létrehozása és használataDVDírásaBevezetésA DVD a CD-hez képest a lézeres
tárolóeszközök
technológiájának újabb
generációját képviseli. A DVD
bármelyik CD-nél több adatot képes
tárolni és napjaink ez a videók
kiadásának szabványa.Öt fizikailag írható formátummal
határozhatjuk meg az írható DVD
fogalmát:DVD-R: Ez volt az elsõ elérhetõ
írható DVD formátum. A DVD-R
szabványát a DVD
Fórum fektette le. Ez a formátum csak
egyszer írható.DVD-RW: Ez a DVD-R szabvány
újraírható változata. A DVD-RW
körülbelül 1000 alkalommal
írható újra.DVD-RAM: Ez is a DVD Fórum által
támogatott újraírható
formátum. A DVD-RAM cserélhetõ
merevlemeznek látzsik. Azonban ez
típusú adathordozó nem kompatibilis
legtöbb DVD-ROM hajtóval és DVD-Video
lejátszóval. Csupán csak
néhány DVD-író ismeri a DVD-RAM
formátumot. A DVD-RAM
használatáról a ban találunk bõvebben
információkat.DVD+RW: Ezt az újraírható
formátumot a DVD+RW
szövetség alkotta meg. A DVD+RW lemezek
nagyjából 1000 alkalommal
írhatóak újra.DVD+R: Ez a formátum a DVD+RW formátum
egyszer írható változata.Az egyrétegû írható DVD-k
összesen 4 700 000 000 byte-ot
képesek rögzíteni, ami 4,38 GB vagy
4 485 MB (1 kilobyte itt 1024 byte).Meg kell különböztetnünk fizikai
tárolóeszközt és az
alkalmazást. Például a DVD-Video
állományok olyan jellegû
elrendezését írja elõ, ami
bármelyik írható fizikai DVD
eszközön megjelenhet: DVD-R, DVD+R, DVD-RW stb.
Mielõtt kiválasztanánk az eszköz
típusát, biztosnak kell lennünk benne, hogy
az író és a DVD-Video
lejátszó (ez lehet egy önálló
lejátszó vagy egy
számítógép DVD-ROM
meghajtója) kompatibilis a szóbanforgó
lemezzel.BeállításA &man.growisofs.1; programot fogjuk a DVD
rögzítésére használni. Ez a
program a dvd+rw-tools
segédprogramok (sysutils/dvd+rw-tools)
gyûjteményének része. A
dvd+rw-tools az összes DVD
médium típusát ismeri.Ezek a segédprogramok a SCSI alrendszeren
keresztül érik az eszközöket, ezért
a használhatukhoz a rendszermagban
szükségünk lesz az ATAPI/CAM támogatásra.
Ha az írónk USB felületen csatlakozik, akkor
mindez szükségtelen, és ehelyett a t kell elolvasnunk az USB eszközök
beállításához.Engedélyeznünk kell az ATAPI eszközök
DMA hozzáférését is, amit a
/boot/loader.conf állományban
a következõ sor hozzáadásával
tudunk megtenni:hw.ata.atapi_dma="1"A dvd+rw-tools
használatának megkezdése elõtt a
DVD-írónkkal kapcsolatban érdemes
átolvasnunk a
dvd+rw-tools hardverkompatibilitási jegyzeteit
(angolul).Ha grafikus felületet szeretnénk
használni, akkor érdemes egy pillanatást
vetnünk a K3bre (sysutils/k3b), amely egy
felhasználóbarát felületet ad a
&man.growisofs.1; és sok más
íróprogram felé.Adat DVD-k írásaA &man.growisofs.1; a mkisofs
parancs elõlapja, tehát az
állományrendszer
létrehozásához a &man.mkisofs.8; programot
fogja meghívni és ezt írja fel a DVD-re.
Ez azt jelenti, hogy az írási folyamat
megkezdése elõtt nem kell semmilyen image-et
létrehoznunk.A /az/elérési/út
könyvtárból a következõ paranccsal
tudjuk kiírni az adatokat DVD+R vagy DVD-R
lemezre:&prompt.root; growisofs -dvd-compat -Z /dev/cd0 -J -R /az/elérési/útA beállítások a
&man.mkisofs.8; programhoz kerülnek át az
állományrendszer létrehozásakor (itt
most egy ISO 9660 állományrendszert hozunk
létre, Joliet és Rock Ridge
kiterjesztésekkel), használatának
részleteit lásd &man.mkisofs.8;.A beállítást a
kezdõmenetek létrehozásakor
használjuk: több menetben akarjuk írni a
lemezt vagy sem. A DVD eszközt, amely itt most a
/dev/cd0, a saját
konfigurációnknak megfelelõen kell megadni.
A paraméterrel
lezárjuk a lemezt, így ezután
további írás már nem
lehetséges. Ezért cserébe jobb
kompatibilitást kapunk a DVD-ROM
meghajtókkal.Elõre legyártott image-dzsel is dolgozhatunk,
tehát például, ha az
image.iso állományt
akarjuk kiírni, akkor ezt kell lefuttatnunk:&prompt.root; growisofs -dvd-compat -Z /dev/cd0=image.isoAz írási sebességet
magától beállítja a lemez és
meghajtó képességeinek megfelelõen.
Az írási sebesség
felülbírálásához
használjuk a paramétert.
A paraméterek lehetõségeirõl a
&man.growisofs.1; man oldaláról tudhatunk meg
többet.4,38 GB-nál több adat
írásához egy hibrid UDF/ISO-9660
típusú állományrendszert kell
létrehoznunk. Ezt úgy tudjuk elérni, ha
&man.mkisofs.8; és a többi hasonló program
(például &man.growisofs.1;)
hívásakor még hozzátesszük az
paramétereket.
Ezekre csak lemezképek
készítésekor vagy az
állományok közvetlen lemezre
írásakor van szükségünk. Az
így létrehozott lemezeket a &man.mount.udf.8;
segédprogram segítségével UDF
állományrendszerként tudjuk
csatlakoztatni. Ezért csak olyan
operációs rendszereken
használható, amelyek ismerik ezt a
formátumot, ellenkezõ esetben csak hibás
állományokat fogunk látni a
lemezen.Példa ilyen lemezkép
létrehozására:&prompt.root; growisofs -dvd-compat -udf -iso-level 3 -Z /dev/cd0 -J -R /az/új/adat/helyeHa a lemezkép már eleve nagyobb
méretû állományokat tartalmaz, a lemez
írásakor a &man.growisofs.1; programnak
már nem kell további paramétereket
átadnunk.Lehetõleg mindig a sysutils/cdrtools legfrissebb
verzióját használjuk (amely a
&man.mkisofs.8; programot is tartalmazza), mivel a
régebbi verziók nem támogatják a
nagyobb méretû állományokat. Ha
problémák adódnak a programok
használata során, akkor
próbálkozzunk a fejlesztõi
változattal (sysutils/cdrtools-devel) és
olvassuk el a &man.mkisofs.8; man oldalát.DVDDVD-VideoDVD-Video írásaA DVD-Video az állományok speciális
szervezésére utal, amely az ISO 9660 és az
mikró UDF (M-UDF) specifikációkon alapszik.
A DVD-Video emellett egy adott adatszerkezeti hierarchiát
is takar, ezért kell egy külön programmal,
például a multimedia/dvdauthor
segítségével
összeállítani egy DVD-t.Ha már a birtokunkban van egy DVD-Video
állományrendszer képe, akkor az eddigiek
szerint egyszerûen csak írjuk fel egy lemezre, ahogy
azt az elõzõ szakaszban is láthattuk. Ha
összeállítottuk a DVD anyagát
és például a /a/videó/elérési/útja
könyvtárba raktuk, akkor a következõ
paranccsal írathatjuk ki a DVD-Video
formátumú lemezt:&prompt.root; growisofs -Z /dev/cd0 -dvd-video /a/videó/elérési/útjaA paramétert kell
átadni a &man.mkisofs.8; programnak, amelynek
hatására létrehoz egy DVD-Video
formátumú állományrendszert.
Emellett a
beállítás maga után vonja a
&man.growisofs.1;
beállítását is.DVDDVD+RWA DVD+RW használataEltérõen a CD-RW-tõl, egy érintetlen
DVD+RW-t az elsõ használat elõtt meg kell
formázni. A &man.growisofs.1; program errõl az
elsõ adandó alkalommal gondoskodik, és ez az
ajánlott. Azonban a DVD+RW
formázására használhatjuk a
dvd+rw-format parancsot is:&prompt.root; dvd+rw-format /dev/cd0Ezt a mûveletet csak egyszer kell elvégezni,
hiszen ne feledjük, hogy csak a szûz DVD+RW lemezeket
kell megformázni. Ezután a DVD+RW-t a
korábbi szakaszoknak megfelelõen tudjuk
írni.Ha a DVD+RW-re új adatot akarunk írni (egy
teljesen új állományrendszert, nem pedig
adatokat hozzáfûzni), akkor nem kell
üressé tenni a lemezt, egyszerûen csak
elegendõ felülírni az elõzõeket (egy
új kezdõmenet létrehozásával)
valahogy így:&prompt.root; growisofs -Z /dev/cd0 -J -R /az/új/adat/helyeA DVD+RW formátum felajánlja annak
lehetõségét is, hogy könnyedén
hozzá lehessen fûzni adatokat az elõzõ
íráshoz. A mûvelet során az új
menetet összefûzi a meglévõvel,
tehát ez nem egy többmenetes írás,
hanem a &man.growisofs.1; megnöveli a
lemezen található ISO 9660
állományrendszert.Például, ha egy korábban megírt
DVD+RW lemezen levõ adatokhoz akarunk
hozzáírni, akkor a következõ parancsot
kell kiadnunk:&prompt.root; growisofs -M /dev/cd0 -J -R /az/új/adat/helyeA &man.mkisofs.8; beállításainál
a kezõmenetnél megadottakat érdemes
ismét megadni.Ha kompatibilisek akarunk maradni a többi
DVD-meghajtóval, akkor adjuk meg
paramétert. Ez a DVD+RW
esetében annyit jelent, hogy nem tudunk további
adatokat hozzáfûzni.Ha valamilyen okból mégis üressé
szeretnénk tenni a lemez, akkor ír
járhatunk el:&prompt.root; growisofs -Z /dev/cd0=/dev/zeroDVDDVD-RWA DVD-RW használataA DVD-RW két lemezformátumot fogad el: a
inkrementális soros hozzáférést
és a korlátozott felülírást.
Alapértelmezés szerint a DVD-RW lemezek soros
elérésûek.A még fel nem használt DVD-RW lemezek
közvetlenül írhatóak külön
formázás nélkül, habár a
korábban már soros formátumban
használt DVD-RW lemezeket egy új kezdõmenet
létrehozása elõtt üressé kell
tenni.Soros módban így kell letörölni egy
DVD-RW lemezt:&prompt.root; dvd+rw-format -blank=full /dev/cd0A teljes törlés ()
egy 1x média esetén körülbelül
egy órát vesz igénybe. A
beállítással egy
gyorsított törlés zajlik le, amennyiben a
DVD-RW lemezt Disk-At-Once (DAO) módban írjuk.
A DVD-RW lemezeket az alábbi paranccsal tudjuk DAO
módban írni:&prompt.root; growisofs -use-the-force-luke=dao -Z /dev/cd0=image.isoA
beállítást nem kötelezõ
megadni, mivel a &man.growisofs.1; igyekszik a lehetõ
leggyorsabban törölni a lemezt és megkezdeni
a DAO módú írást.A DVD-RW esetében valójában a
korlátozott felülírást lenne
érdemes használnunk, mivel ez a formátum
sokkal rugalmasabb az alapértelmezés szerint
felkínált inkrementális soros
elérésnél.A soros DVD-RW lemezekre ugyanúgy tudunk adatokat
rögzíteni, mint az összes többi
formátum esetében:&prompt.root; growisofs -Z /dev/cd0 -J -R /az/adat/helyeHa az elõzõ íráshoz akarunk
még hozzáfûzni adatokat, akkor ehhez a
&man.growisofs.1;
beállítását kell használnunk.
Azonban ha a DVD-RW lemezhet inkrementális soros
módban adunk hozzá adatot, akkor ezzel egy
új menetet hozunk létre a lemezen és
így egy többmenetes lemezt kapunk.A korlátozott felülírású
DVD-RW formátum használata esetén nem kell
mindegyik kezdõmenet elõtt törölni a lemezt,
egyszerûen csak felül kell írni a
beállítással,
hasonlóan a DVD+RW esetéhez. A DVD+RW
beállításához
hasonlóan lehetõségünk van a lemezen
található ISO 9660 formátumú
állományrendszer növelésére.
Ennek az eredménye egy egymenetes DVD.A következõ paranccsal tudjuk a DVD-RW lemezt
korlátozott felülírású
módba tenni:&prompt.root; dvd+rw-format /dev/cd0Így tudunk visszaváltani a soros
formátum használatára:&prompt.root; dvd+rw-format -blank=full /dev/cd0Több menet használataNagyon kevés DVD-ROM meghajtó ismeri a
többmenetes DVD-ket, és legtöbbször is
csak általában az elsõ menetet
olvassák. A DVD+R, DVD-R és DVD-RW
formátumok soros formátumban képesek
több mentetet is befogadni, viszont a DVD+RW és
DVD-RW korlátozott felülírású
formátuma esetén nem létezik több
menet.Az alábbi parancs egy újabb menetet ad
hozzá egy megkezdett (le nem zárt) DVD+R, DVD-R
vagy DVD-RW soros formátumú lemezhez:&prompt.root; growisofs -M /dev/cd0 -J -R /az/új/adat/helyeHa ezt a parancsot egy korlátozott
felülírású DVD+RW vagy DVD-RW lemez
esetén adjuk ki, akkor az új adatokat úgy
fûzi hozzá, hogy egy új menetet
összefésüli a meglévõvel. Ezzel
egy egymenetes lemez keletkezik. Ilyenkor így
bõvítik a megkezdett lemezeket.A menetek kezdése és befejezése
általában felhasznál valamennyi helyet a
lemezen. Ezért úgy tudjuk optimalizálni
a lemez helykihasználtságát, hogy
kevés menetben sok adatot viszünk fel rá.
A DVD+R esetén 154, a DVD-R-nél
körülbelül 2000, és a dupla
rétegû DVD+R lemezeknél 127 menetet tudunk
létrehozni.További olvasnivalókA DVD lemezrõl részletesebb
információkat a dvd+rw-mediainfo
/dev/cd0 parancs
kiadásával tudunk lekérdezni.A dvd+rw-tools
használatáról a &man.growisofs.1; man
oldalon találunk információt, valamint a
dvd+rw-tools
honlapján (angolul) és a cdwrite levelezési
lista archívumaiban (angolul).Futassuk dvd+rw-mediainfo parancsot
minden olyan esetben, amikor gondunk akad valamilyen lemez
írásával. A kimenete nélkül
szinte lehetetlen segítenünk bárkinek
is.A DVD-RAM használataDVDDVD-RAMBeállításA DVD-RAM írók SCSI vagy ATAPI
csatolófelülettel rendelkeznek. Az ATAPI
eszközök esetén engedélyezni kell a
DMA elérését, amit a
/boot/loader.conf
állományban az alábbi sor
hozzáadásával tudunk megtenni:hw.ata.atapi_dma="1"A lemez elõkészítéseAhogy arra már korábban utaltunk a fejezet
bevezetésében, a DVD-RAM úgy
látható, mint egy cserélhetõ
merevlemez. A hagyományos merevlemezekhez
hasonlóan a DVD-RAM-ot is elõ kell
készíteni az elsõ
használatához. Ebben a példában a
lemez teljes területét egy szabványos UFS2
állományrendszerrel töltjük
fel:&prompt.root; dd if=/dev/zero of=/dev/acd0 bs=2k count=1
&prompt.root; bsdlabel -Bw acd0
&prompt.root; newfs /dev/acd0A DVD eszköz nevét, vagyis az
acd0 eszközt a saját
rendszerünknek megfelelõen kell
módosítani.A lemez használataMiután az elõbbi mûveletet
elvégeztük a DVD-RAM lemezen, már tudjuk is
normális merevlemezként csatlakoztatni:&prompt.root; mount /dev/acd0/mntEzt követõen a DVD-RAM egyaránt
olvasható és írható.JulioMerinoEredetileg készítette: MartinKarlssonÁtdolgozta: Hajlékonylemezek létrehozása és
használataNéha hasznos lehet, ha az adatokat floppy lemezeken
tároljuk, például olyankor, amikor más
cserélhetõ tárolóeszköz már
nem jöhet számításba, vagy amikor kis
mennyiségû adatot kell átvinnünk az egyik
számítógéprõl a
másikra.Ebben a szakaszban bemutatjuk hogyan kell &os; alatt floppy
lemezeket használni. Elsõsorban a 3,5 colos DOS
lemezek formázásával és
használatával foglalkozik, de ezek fogalmak a
többi hajlékonylemezes formátum esetében
is hasonlóak.A hajlékonylemezek formázásaAz eszközA floppy lemezek a többi eszközhöz
hasonlóan a /dev
könyvtárban érhetõek el. A nyers
floppy lemezek eléréséhez egyszerûen
csak használjuk a
/dev/fdN
hivatkozást.A formázásHasználat elõtt a floppy lemezeket alacsony
szinten meg kell formázni. Ezt általában
maga a gyártó végzi el, de a
formázás gyakran hasznos lehet a lemez
sértetlenségének
ellenõrzésére. A legtöbb floppy lemez
hivatalos kapacitása 1440 KB, de
használhatjuk nagyobb (és kisebb)
méretekben is.A floppy lemezek alacsony szintû
formázására az &man.fdformat.1; parancsot
használhatjuk. Ez a segédprogram
paraméterként az eszköz nevét
várja.Figyeljünk a menetközben megjelenõ
hibaüzenetekre, mivel ezek segítik eldönteni,
hogy a lemez használható vagy sem.A hajlékonylemezek
formázásaA
/dev/fdN
eszközök segítségével tudunk
megformázni egy floppy lemezt. Tegyünk be egy
3,5 colos floppy lemezt a meghajtóba, majd adjuk
ki a következõ parancsot:&prompt.root; /usr/sbin/fdformat -f 1440 /dev/fd0A lemez címkézéseMiután alacsony szinten formáztuk a lemezt,
tennünk kell rá egy lemezcímkét is.
Ez a lemezcímke késõbb meg fog
semmisülni, de a rendszernek szüksége van
rá, hogy pontosan meg tudja állapítani a
lemez méretét és
geometriáját.Az új lemezcímke lefedi az egész
lemezt, és tartalmazni fogja az összes
információt a floppy
geometriájáról. A
lemezcímkék geometriaértékeit az
/etc/disktab állományban
találjuk meg felsorolva.Most már futtathatjuk is a &man.bsdlabel.8;
parancsot:&prompt.root; /sbin/bsdlabel -B -w /dev/fd0 fd1440Az állományrendszerA hajlékonylemez most már készen
áll a magas szintû formázásra. Ennek
során egy új állományrendszert
teszünk rá, amelyet a &os; képes írni
és olvasni. Miután létrejött ez az
új állományrendszer, a lemezcímke
megsemmisül, így tehát ha újra meg
akarjuk formázni a lemezt, akkor újra létre
kell majd hoznunk a lemezcímkét.A floppy állományrendszere lehet UFS vagy FAT.
A FAT általánosságban véve jobb
választás a floppy lemezek
számára.Az alábbi módon tudunk új
állományrendszert tenni a floppyra:&prompt.root; /sbin/newfs_msdos /dev/fd0A lemez most már készen áll a
használatra.A hajlékonylemezek használataA floppy lemezt használatához a
&man.mount.msdosfs.8; paranccsal kell csatlakoztatnunk.
Ugyanerre a célra használhatjuk a
Portgyûjteménybõl elérhetõ
emulators/mtools portot
is.Szalagok létrehozása és
használataszalagos
adathordozóA legfontosabb szalagos adathordozók a 4 mm-es,
8 mm-es, QIC, a minikazettás és a DLT.4 mm-es (Digitális adattároló,
avagy DDS: Digital Data Storage)szalagos adathordozó(4 mm-es) DDS-szalagokszalagos adathordozóQIC-szalagokA 4 mm-es szalagok a QIC-szalagokat
váltják fel a munkaállomások
biztonsági mentésének
eszközeként. Ez a tendencia csak tovább
növekedett, ahogy a Conner felvásárolta az
Archive-ot, a QIC típusú meghajtók
legnagyobb gyártóját, majd
leállított a QIC-meghajtók
gyártását. A 4 mm-es meghajtók
mérete kicsi és csendben is dolgoznak, de a
megbízhatóság terén nem
tudhatják maguknak mindazt a sikert, amit a 8 mm-es
társaiknál könyvelhettünk el. A
kazetták is sokkal olcsóbbak és kisebbek
(3 x 2 x 0,5 col, ami 76 x 51 x
12 mm) a 8 mm-es kiadásénál. A
4 mm-es feje, hasonlóan a 8 mm-eséhez,
valamilyen okból szintén viszonylag rövid
ideig bírja, és mind a kettõ spirális
pásztázást használ.Ezeknél a meghajtóknál az
adatátvitel nagyjából
150 KB/mp-nél kezdõdik és
500 KB/mp-nél végzõdik. Az
adattárolási képességük
1,3 GB-tól indul és 2,0 GB-ig tart. A
hardveres tömörítés, ami a legtöbb
ilyen típusú meghajtónál
elérhetõ, közel megduplázza a
kapacitást. A többmeghajtós szalagos
könyvtár egységek egyetlen szekrényben
6 meghajtót képes befogadni, a szalagok
automatikus cserélgetésével. Az ilyen
könyvtárak kapacitása a 240 GB-ot is
elérheti.A DDS-3 szabvány most már akár
12 GB (vagy tömörítve 24 GB)
kapacitást is elérhetõvé tesz.A 4 mm-es meghajtók, hasonlóan a
8 mm-es meghajtókhoz, spirális
pásztázást alkalmaznak. A spirális
pásztázás összes elõnye és
hátránya ezért egyaránt él a
4 mm-es és 8 mm-es meghajtók
esetén.A szalagok 2 000 menet vagy 100 teljes mentes
után kopnak el.8 mm-es (Exabyte)szalagos adathordozó(8 mm-es) Exabyte szalagokA 8 mm-es szalagok a legelterjedtebb szalagos
SCSI-meghajtók. A szalagok használatára ez
a legjobb választás. Szinte mindegyik rendszerben
egy 2 GB-os 8 mm-es Exabyte szalagos meghajtót
használnak. A 8 mm-es meghajtók
megbízhatóak, kényelmesek és
csendesek. A kazetták olcsók és kicsik
(4,8 x 3,3 x 0,6 col, azaz 122 x 84 x
15 mm). A 8 mm-es szalagok feje viszonylag csak
rövid ideig bírja a szalag nagy
mértékû oda-vissza mozgása
miatt.Az adatátvitel sebessége
250 KB/mp-tõl 500 KB/mp-ig terjed, valamint a
300 MB-tól egészen 7 GB-os
méretig találkozhatunk velük. A
meghajtókban elérhetõ hardveres
tömörítés képes közel
megduplázni a kapacitást. Ezek a meghajtók
önálló egységként is
beszerezhetõek vagy egy 6 egységbõl
álló és 120 szalagos szalagos
könyvtár részeként. Ezek az
egységek önállóan
váltják a szalagokat. Az ilyen
könyvtárak kapacitása eléri a
közel 840 GB-ot.Az Exabyte Mammoth modellje
szalagonként 12 GB
(tömörítéssel pedig 24 GB) adatot
képes tárolni, viszont a hagyományos
szalagos meghajtóknál nagyjából
kétszer többe kerül.Az adatok spirális pásztázással
kerülnek a szalagra, és a fejek adott
(nagyjából 6 fokos) szögben állnak a
szalag felett. A szalag a fejeket tartó orsó
köré tekeredik, körülbelül 270
fokban. Ennek eredményképpen nagyobb
adatsûrûség és szorosan zárt
sávok jönnek létre, ahogy ebben a
szögben a fej eljut a szalag egyik
élérõl a másikra.QICszalagos adathordozóQIC-150A QIC-150 meghajtók és szalagok talán a
legelterjedtebb szalagos egységek és
adathordozók. A QIC szalagos meghajtók a
legolcsóbb komolynak tekinthetõ
biztonsági mentésre alkalmas meghajtók. Az
olcsóság azonban megköveteli a maga
árát. A QIC-szalagok a 4 és 8 mm-es
szalagokkal szemben akár ötször is
drágábbak lehetnek gigabyte-onként. De ha
megelégszünk csupán féltucat szalaggal
is, akkor a QIC jó vásárnak tûnhet. A
QIC a leginkább elterjedtebb
szalagos meghajtó. Minden rendszerben biztonsan
találunk valamilyen minõségben
QIC-meghajtót. A QIC fizikailag hasonló
(és gyakran azonos) felépítésû
szalagokat gyárt rengeteg különbözõ
adatsûrûséggel. Az ilyenkor keletkezõ
súrlódások miatt a QIC-meghajtók
egyáltalán nem nevezhetõek csendesnek. Az
ilyen típusú meghajtók az adatok
rögzítése elõtt külön
hangjelenség kíséretében keresik meg
a megfelelõ pozíciót és tisztán
hallható, ahogy olvasnak, írnak és
keresnek. A QIC-szalagok mérete 6 x 4 x
0,7 col (avagy 152 x 102 x 17 mm).Az adatátviteli sebesség
nagyjából 150 KB/mp-tõl
500 KB/mp-ig terjedhet. A kapacitás
szalagonként 40 MB és 15 GB
között változhat. A legtöbb újabb
QIC-meghajtó támogatja a hardveres
tömörítést. QIC-meghajtókat
azonban egyre kevésbé találhatunk,
helyüket szépen lassan mindenhol átveszik a
DAT-meghajtók.A szalagokra sávokban rögzítik az
adatokat. Ezek a sávok szalag felületének
hosszanti tengelyén futnak az egyik
végétõl a másikig. A sávok
száma valamint a sávok vastagsága a
szalagok kapacitásától függõen
változnak. Ha nem is összes legújabb, de a
legtöbb meghajtó legalább olvasás
szintjén kompatibilis a régebbi típusokkal
(de gyakran írásban is). A QIC híresen
megbízható az adatbiztonság
tekintetében (a mechanikája sokkal egyszerûbb
és strapabíróbb a spirális
pásztázással mûködõ
meghajtókénál).A szalagokat 5000 mentés után érdemes
lecserélni.DLTszalagos adathordozóDLTA DLT rendelkezik a legnagyobb adatátviteli
sebességgel az itt összefoglalt mezõnyben. A
1/2 colos (12,5 mm-es) szalag egy egyorsós
tokban foglal helyet (mérete 4 x 4 x
1 col, azaz 100 x 100 x 25 mm). A tok egyik
oldalán végig egy csúszó kapu
található. A meghajtó ezt a kaput nyitja
ki és ezen keresztül húzza be a szalagot. A
szalag elején található egy ovális
lyuk, amibe a meghajtó bele tud
akaszkodni. A feszítõ orsó a
szalagos meghajtóban foglal helyet. Az összes
többi szalag esetén (kivéve egyedül a 9
sávos szalagokat) mind a segéd- és
feszítõ orsók magában a
kazettában találhatóak.Az adatátviteli sebessége
megközelítõleg 1,5 MB/mp, tehát
háromszor nagyobb bármelyik 4 mm-es,
8 mm-es vagy QIC-szalagos egységénél.
Az adattároló képessége
kazettánként 10 GB-tól 20 GB-ig
terjedhet. A meghajtók egyaránt
elérhetõek többkazettás,
cserélgetõs és többkazettás,
többmeghajtós könyvtárakban is, melyek 5
kazettától egészen 900 kazettáig,
illetve 1 meghajtótól 20 meghajtóig
képesek befogadni, így teljes
tárterületük 50 GB-tól 9 TB-ig
terjed.A DLT Type V formátum
tömörítéssel közel 70 GB-os
kapacitást képes elérni.A szalagra az adatok a haladási iránnyal
párhuzamosan kerülnek fel (akárcsak a
QIC-szalagok esetében). Egyszerre két
sávot rögzít. A
író/olvasó fejek élettartama
viszonylag nagy. Ahogy a szalag megáll, a fej és
a szalag között nincs szükség
további relatív mozgásra.AITszalagos adathordozóAITAz AIT a Sony új formátuma, ami egészen
50 GB mennyiségû adatot képes
tárolni (tömörítéssel) egyetlen
szalagon. A szalagokat memóriachipekkel
látják el, melyek a szalag tartalmát
indexelik. Az indexek felhasználásával
aztán a szalagos meghajtó villámgyorsan
képes meghatározni a szalagon
található állományok helyét,
szemben az ilyenkor megszokott többperces mûvelettel.
A SAMS:Alexandria és a
hozzá hasonló szoftverek negyven vagy több
AIT-szalagos könyvtárral is képesek egyszerre
dolgozni, és közvetlenül a szalagok
memóriájával veszik fel a kapcsolatot a
tartalmuk megjelenítéséhez, a mentett
állományok rendszerezéséhez, a
helyes szalag megkereséséhez,
betöltéséhez és
visszatöltéséhez.Az ilyen könyvtárak a 20 000
dolláros (kb. 3,5 millió forintos)
árkategóriába tartoznak, ami miatt csak egy
kicsivel csúsznak ki a hobbi
kategóriából.Az új szalagok elsõ használataAmikor az elsõ alkalommal akarunk beolvasni vagy
írni egy új, teljesen üres szalagot,
hibára fogunk futni. Egy ehhez hasonló
konzolüzenet fog megjelenni:sa0(ncr1:4:0): NOT READY asc:4,1
sa0(ncr1:4:0): Logical unit is in process of becoming readyA szalag nem tartalmaz azonosító blokkot
(Identifier Block) a nulladik blokkban. A QIC-525
szabvány átvétele óta mindegyik QIC
szalagos meghajtó létrehozza ezt az
azonosító blokkot. Tehát két
megoldás létezik:Az mt fsf 1 paranccsal
felírunk egy ilyen azonosító blokkot a
szalagra.A meghajtó elõlapján
található gomb
segítségével dobassuk ki a
szalagot.Rakjuk vissza a szalagot és hajtsunk végre
rajta egy dump parancsot.A dump parancs erre egy
DUMP: End of tape detected
(szalag vége) hibaüzenetet ad,
majd a következõ jelenik meg a konzolon:
HARDWARE FAILURE info:280
asc:80,96.Tekertessük vissza a szalagot az mt
rewind paranccsal.A szalag következõ mûvelete most
már sikeres lesz.Biztonsági mentés
hajlékonylemezekreHajlékonylemezre is lehet biztonsági
mentést készíteni?biztonsági
floppykfloppy lemezekA floppy lemezek nem igazán felelnek meg
biztonsági mentés
készítésére, mivel:Nem megbízható adathordozók,
különösen hosszabb idõre.Esetükben a mentés és
visszaállítás nagyon
lassú.Kapacitásuk erõsen korlátozott (annak
már régen elmúlt az ideje, amikor
egész merevlemezeket tudtunk lementeni egy tucat
floppyra).Habár ha máshogy nem tudunk biztonsági
mentést készíteni, akkor a floppy
lemezekkel még mindig jobban járunk, mint
nélkülük.Ha már mindenképpen floppy lemezeket kell
használnunk, akkor igyekezzünk minél jobb
minõségûeket beszerezni. Tehát az olyan
floppyk, amik már évek óta kavarognak az
irodában, erre a célra nem éppen
bizonyulnak a legjobb választásnak.
Ideális esetben egy megbízható
gyártótól származó új
floppykat használunk.Tehát akkor hogyan mentsük az adatokat
hajlékonylemezre?Legegyszerûbban a &man.tar.1;
(többkötetes) opciójával tudunk floppy
lemezre menteni, aminek használatával több
floppyra kiterjedõ mentéseket is
készíthetünk.Az aktuális könyvtár és a benne
levõ alkönyvtárak tartalmát
(root) felhasználóként
a következõ paranccsal tudjuk lementeni:&prompt.root; tar Mcvf /dev/fd0 *Amikor az elsõ floppy megtelik, a &man.tar.1;
kérni fogja a következõ kötetet (volume)
(mivel a &man.tar.1; adathordozótól független
módon hivatkozik a kötetekre, tehát ebben a
környezetben a kötet egy floppy lemezt jelent):Prepare volume #2 for /dev/fd0 and hit return:Az üzenet fordítása:Készítse elõ a 2. kötetet a /dev/fd0 eszközön és nyomja le a
return billentyûtA folyamat egészen addig ismétlõdik (a
kötetek számának
növekedésével), amíg az összes
állomány lementésre nem kerül.Lehet tömöríteni a
mentéseket?targziptömörítésSajnos a &man.tar.1; többkötetes mentések
esetén nem engedi a
beállítás használatát.
Természetesen ettõl függetlenül a
&man.gzip.1; segítségével még be
tudjuk tömöríteni az összes
állományt, a &man.tar.1; paranccsal floppyra
menteni ezeket, majd a &man.gunzip.1; paranccsal
kitömöríteni.Hogyan állítsuk vissza a biztonsági
mentéseket?Az egész mentés
visszaállításához adjuk ki a
következõ parancsot:&prompt.root; tar Mxvf /dev/fd0Két módon tudunk csak bizonyos
állományokat visszaállítani.
Elõször is, tegyük be a mentés elsõ
lemezét és adjuk ki a következõ
parancsot:&prompt.root; tar Mxvf /dev/fd0 állományA &man.tar.1; segédprogram ezután sorban
kérni fogja a többi lemezt egészen addig,
amíg meg nem találja a keresett
állományt.Vagy ha pontosan tudjuk, hogy melyik lemezen
található a keresett állomány, akkor
az iménti parancs használatát azzal a
lemezzel kezdjük. Vigyázzunk, mert ha a lemezen
található elsõ állomány az
elõzõ lemezen kezdõdik, akkor a &man.tar.1;
figyelmeztetni fog minket, hogy nem állítja vissza
még akkor sem, ha erre nem is kértük!LowellGilbertEredetileg készítette: Mentési stratégiákEgy biztonsági mentés kidolgozása
során az elsõ követelmény gondoskodnunk az
alábbi problémákról:LemezhibaAz állományok véletlen
törléseAz állományok véletlenszerû
károsodásaSzámítógépek teljes
megsemmisülése (például tûz
által), belértve a közelében
tárolt összes biztonsági
mentéstTökéletesen megoldható, hogy egyes
rendszerek a fentebb felsorolt problémák
mindegyikét teljesen eltérõ technikával
oldják meg. A nagyon személyes rendszerektõl
és a nagyon értéktelen adatoktól
eltekintve szinte egyértelmûen kizárt, hogy
egyetlen technika képes lefedni az összes
problémát.Kelléktárunk néhány alapvetõ
eszköze:Az egész rendszer mentése, amit egy
megbízható helyre elzárt, tartós
adattárolóra készítünk. Ez
tulajdonképpen védelmet biztosít a
fentebb megemlített összes probléma
esetében, de lassú és kényelmetlen
róla visszaállítani az adatokat. A
közelben és/vagy neten is tarthatunk errõl
másolatokat, de még így is
kényelmetlen az állományok
visszaállítása, különösen
az egyszerû felhasználók
számára.Pillanatképek készítése az
állományrendszerrõl. Ez
valójában csak olyan esetekben lehet a
segítségünkre, amikor
véletlenül töröltünk
állományokat, ám ilyenkor
határozottan jól jön,
mivel igen gyorsan és könnyen lehet vele
dolgozni.Az egész állományrendszer
és/vagy az összes lemez másolata
(például az &man.rsync.1; idõszakos
alkalmazása a komplett gépre). Az
általában az egyedi igényekkel
bíró hálózatok esetében
eshet a kezünkre. A lemezhiba ellen védelemben ez
a megoldás általában a
RAID alatt áll. A
véletlenül törölt
állományok
visszaállításának
tekintetében az UFS
pillanatképeivel mérhetõ össze, de ez
leginkább a saját igényeinktõl
függ.RAID alkalmazása. A lemezek
meghibásodása esetén segíti
minimalizálni vagy elkerülni a kiesést,
ugyan gyakori lemezhibák árán (mivel
ilyenkor több lemezt használunk) de kisebb
sürgõsséggel.Az állományok ujjlenyomatának
ellenõrzése. Az &man.mtree.8; segédprogram
nagyon hasznos tud lenni ebben az esetben. Habár ez
nem egy mentési technika, mégis segít
megállapítani, hogy mikor kell nyugdíjba
küldenünk a biztonsági mentéseinket.
Ez különösen az aktív nem
használt mentésekre vonatkozik, ezeket bizonyos
idõ elteltével mindig érdemes
ellenõrizni.Nagyon könnyû lenne további
technikákat is felsorolni, melyek legtöbbje az
iméntiek valamilyen kombinációja lenne. A
speciális igények általában
speciális technikákat eredményeznek
(például egy éles adatbázis
biztonsági mentése általában az
adott adatbáziskezelõ rendszer
közremûködését is elvárja).
Mindig fontos tudni, hogy milyen veszélyek ellen
védekezünk és hogyan kezeljük le
ezeket.Alapvetõ tudnivalók a biztonsági
mentésrõlA &man.dump.8;, &man.tar.1; és &man.cpio.1; a
három legfontosabb biztonsági mentésekkel
kapcsolatos program.Mentés és
helyreállításbiztonsági mentést végzõ
szoftverekmentés /
helyreállításdumprestoreA &unix; típusú rendszerekben a
biztonsági mentést hagyományosan a
dump és restore
programok végzik. A meghajtókat lemezblokkok
összeségeként kezelik, az
állományrendszerek által létrehozott
állományok, linkek és
könyvtárak szintje alatt. Eltérõen
más, biztonsági mentést végzõ
szoftverektõl, a dump az adott
eszközön egy egész
állományrendszert képes lementeni. Nem
képes csak az állományrendszer vagy egy
több állományrendszerre kiterjedõ
könyvtárszerkezet egy részét
lementeni. A dump nem
állományokat és könyvtárakat
ír a szalagra, hanem nyers adatblokkokat, amelyek
állományokat és könyvtárakat
formáznak. A restore parancs az
adatokat alapértelmezés szerint a /tmp könyvtárba
tömöríti ki. Ha nem lenne elegendõ
helyünk a /tmp
könyvtárban, akkor a TMPDIR
környezeti változó
átállításával ehelyett
megadhatunk egy olyat, ahol már kellõ
mennyiségû terület áll
rendelkezésre a restore
akadálytalan lefutásához.Ha a dump parancsot a
gyökér könyvtárban adjuk ki, akkor nem
fogja lementeni a /home vagy
/usr vagy bármilyen más
könyvtárat, mivel ezek jellemzõ módon
más állományrendszerek
csatlakozási pontja vagy más
állományrendszerekre mutató szimbolikus
linkek.A dump parancsnak vannak olyan
rigolyái, amelyek még az AT&T UNIX 6.
verziójából (1975
környékérõl) maradtak vissza. Az
alapértelmezett paraméterezése 9
sávos szalagokat feltételezi (6250 bpi), nem pedig
a napjainkban elterjedt nagy
írássûrûsségû
(egészen 62 182 ftpi-s) adathordozókat. Ezek
az alapértelmezések természetesen
paranccsorból felülbírálhatóak,
és így a manapság alkalmazott szalagos
meghajtók teljes kapacitása is
kihasználható vele..rhostsEmellett az rdump és
rrestore programok
segítségével hálózaton
keresztül is le tudjuk menteni az adatainkat egy
másik számítógépre
csatlakoztatott szalagos egységre. Mind a két
program az &man.rcmd.3; és a &man.ruserok.3; parancsokat
használja a távoli szalagos meghajtó
eléréséhez. Az rdump
és rrestore paramétereinek a
távoli számítógép
használatához kell illeszkedniük. Amikor egy
&os; rendszerû számítógépet az
rdump paranccsal egy Sun rendszerû,
komodo nevû
számítógépre mentünk, amelyhez
egy Exabyte szalagos meghajtó csatlakozik, akkor ezt a
írjuk be:&prompt.root; /sbin/rdump 0dsbfu 54000 13000 126 komodo:/dev/nsa8 /dev/da0a 2>&1Figyelem: az .rhosts
állományon keresztül
hitelesítésnek megvannak a maga biztonsági
kockázatai. Ne felejtsük el felmérni ezt a
saját környezetünkben sem.A dump és
restore parancsokat az ssh
használatával még
biztonságosabbá tehetjük.A dump használata az
ssh alkalmazással&prompt.root; /sbin/dump -0uan -f - /usr | gzip -2 | ssh -c blowfish \
célfelhasználó@cél.gép.hu dd of=/nagyállományok/dump-usr-l0.gzVagy az RSH környezeti
változó megfelelõ
beállításával használhatjuk a
dump beépített
módszerét:A dump használata az
ssh alkalmazással, az
RSH környezeti változó
beállításával&prompt.root; RSH=/usr/bin/ssh /sbin/dump -0uan -f célfelhasználó@cél.gép.hu:/dev/sa0 /usrtarbiztonsági mentést végzõ
szoftverektarA &man.tar.1; is az AT&T UNIX 6.
verziójáig nyúlik vissza (tehát
nagyjából 1975-ig). A tar az
állományrendszerrel szoros
együttmûködésben dolgozik,
állományokat és könyvtárakat
ír a szalagra. A tar ugyan nem ismeri
a &man.cpio.1; által felkínált összes
lehetõséget, de nincs is szüksége olyan
szokatlan paranccsoros összekapcsolásokra, mint a
cpio parancsnak.tarA &os; 5.3 vagy késõbbi
változataiban a GNU tar és az
alapértelmezés szerinti bsdtar
egyaránt elérhetõ. A GNU változat a
gtar paranccsal hívható meg.
Az rdump parancshoz hasonló
felírásban képes kezelni a távoli
eszközöket. Tehát így tudjuk
használni a tar parancsot a
komodo nevû Sun
számítógép Exabíte szalagos
meghajtójának
elérésére:&prompt.root; /usr/bin/gtar cf komodo:/dev/nsa8 . 2>&1Ugyanez eltérhetõ a bsdtar
használatával is, amikor az rsh
programmal összekapcsolva küldünk át a
távoli szalagos egységre.&prompt.root; tar cf - . | rsh hálózati-név dd of=szalagos-eszköz obs=20bHa a hálózaton keresztül mentés
során fontos számunkra a biztonság, akkor
az rsh parancs helyett az
ssh parancsot használjuk.cpiobiztonsági mentést végzõ
szoftverekcpioA &man.cpio.1; eredetileg a &unix; szalagos programjai
és szalagos egységei között
közvetített. A cpio parancs
(többek közt) képes a byte-ok
sorrendjének felcserélésére,
több különbözõ archívum
formátuma szerint írni és adatokat
közvetíteni más programok felé. Ez
utóbbi lehetõsége miatt a
cpio kíválóan alkalmas a
telepítõeszközök számára. A
cpio nem képes bejárni a
könyvtárszerkezetet, és az
állományok listáját a
szabványos bemeneten keresztül kell megadni
neki.cpioA cpio nem támogatja a
biztonsági mentés
átküldését a hálózaton.
Programok összekapcsolásával és az
rsh használatával tudunk
adatokat küldeni távoli szalagos
meghajtókra.&prompt.root; for f in könyvtár_lista; dofind $f >> mentési.listadone
&prompt.root; cpio -v -o --format=newc < backup.list | ssh felhasználó@gép "cat > mentõeszköz"Ahol a könyvtár_lista
a menteni kívánt könyvtárak
listája, a
felhasználó@gép
a mentést végzõ gép
felhasználójának és
hálózati nevének együttese, valamint a
mentõeszköz, ahova a
mentés kerül (például
/dev/nsa0).paxbiztonsági mentést végzõ
szoftverekpaxpaxPOSIXIEEEA &man.pax.1; az IEEE/&posix; válasza a
tar és cpio
programokra. Az évek során a
tar és a cpio
különbözõ változatai egy kissé
inkompatibilissé váltak. Ezért a
szabványosításuk kiharcolása helyett
inkább a &posix; létrehozott egy új
archiváló segédprogramot. A
pax megpróbálja írni
és olvasni a cpio és
tar formátumok legtöbb
változatát, valamint emellett további
saját formátumokat is kezel. A
parancskészlete inkább a cpio
parancséra emlékeztet, mintsem a
tar parancséra.Amandabiztonsági mentést végzõ
szoftverekAmandaAmandaAz Amanda (Advanced Maryland
Network Disk Archiver) egy kliens-szerver alapú
mentési rendszer, nem pedig egy önálló
program. Az Amanda szerver menti
tetszõleges számú
számítógép adatát egyetlen
szalagra, melyek az Amanda klienst
futtatják és hálózaton
keresztül hozzá csatlakoznak. A nagy
mennyiségû és nagy kapacitású
lemezekkel rendelkezõ rendszerekben közvetlenül a
mentéshez szükséges idõ nem áll
rendelkezésre a feladat
elvégzéséhez. Az
Amanda viszont képes megoldani
ezt a problémát. Az
Amanda képes egy
saját lemez használatával
egyszerre több állományrendszerrõl is
biztonsági mentést készíteni. Az
Amandaarchívumkészleteket hoz
létre: az Amanda
konfigurációs állományában
megadott állományrendszerekrõl
készít teljes mentést egy adott idõ
alatt egy adott mennyiségû szalagra. Az
archívumkészlet
ezenkívül még tartalmaz egy napi
inkrementális (vagy különbözeti)
mentést is minden egyes
állományrendszerrõl. A sérült
állományrendszerek
visszaállításához mindig a
legújabb teljes biztonsági mentésre
és a hozzá tartozó inkrementális
mentésekre van szükségünk.A konfigurációs állomány
segítségével precíz
irányítást gyakorolhatunk a
létrehozott mentések és az
Amanda által keltett
hálózati forgalom felett. Az
Amanda a fentiek közül
bármelyik programmal képes az adatokat szalagra
rögzíteni. Az Amanda
portként vagy csomagként is elérhetõ,
alapértelmezés szerint nem települ.Ne csináljunk semmitA Ne csináljunk semmit nem egy
újabb számítógépes program,
hanem egy igen gyakran alkalmazott mentési
stratégia. Nem kell beruházni. Nem kell
semmilyen biztonsági mentési rendet követni.
Egyszerûen semmit se csinálunk. Ha
véletlenül valami történne az
adatainkkal, akkor csak mosolyogjunk és
törõdjünk bele!Amennyiben az idõnk és adataink keveset vagy
éppen semmit se érnek, akkor a Ne
csináljunk semmit az elérhetõ legjobb
biztonsági mentési megoldás
számítógépünk
számára. De legyünk óvatosak, mert a
&unix; egy igen hasznos eszköz, és fél
éven belül könnyen úgy
találhatjuk magunkat, hogy mégis csak vannak
értékes adataink.A Ne csináljunk semmit
tökéletesen megfelelõ mentési
módszer a /usr/obj és a
hozzá hasonló módon a
számítógépen automatikusan
generált könyvtárak és
állományok esetében. Ugyanilyen
példa lehetne a kézikönyv HTML vagy
&postscript; változata. Ezek a formátumok ugyanis
az SGML források alapján keletkeznek, így a
HTML vagy &postscript; állományok mentése
nem életbevágó. Az SGML
állományokat viszont már annál
inkább mentsük!Melyik a legjobb?LISA&man.dump.8; Pont. Elizabeth D. Zwicky
komolyan letesztelte az itt felsorolt összes programot. A
&unix; állományrendszerek
jellegzetességeinek és rajtuk az összes
adatunk megõrzésének egyértelmûen
a dump felel meg a legjobban. Elizabeth a
minden egyes program tesztjéhez olyan
állományrendszereket hozott létre, amelyek
rengeteg különféle szokatlan helyzetet
tartalmaztak (valamint néhány nem annyira
szokatlant). Az érintett jellegzetességek: lyukas
állományok, lyukas állományok
és egy halom nulla, állományok
érdekes karakterekkel a nevükben, olvashatatlan
és írhatatlan állományok,
eszközök, a mentés közben
méretüket változtató
állományok, a mentés közben
keletkezõ és megszûnõ
állományok és még sok minden
más. Az eredményeit a LISA V-ben jelentette meg
1991. októberében. Lásd A
biztonsági mentéshez és
archiváláshoz használt programok tesztje
(angolul).Az adatok helyreállítása
vészhelyzetbenA katasztrófa elõttCsupán négy lépést kell
megtennünk az esetleges katasztrófák
bekövetkezésének esetére.bsdlabelElõször is két példányban
nyomtassuk ki az egyes lemezek
lemezcímkéjét (például a
bsdlabel da0 | lpr paranccsal) valamint az
állományrendszerek
táblázatát (az
/etc/fstab állományt)
és az összes rendszerindításkor
megjelenõ üzenetet.helyreállító
lemezekMásodsorban gondoskodjunk róla, hogy a
helyreállító lemezek
(boot.flp és
fixit.flp) használatakor minden
eszközünk látható. Ezt a
legkönnyebben úgy tudjuk ellenõrizni, hogy
újraindítjuk a gépet a lemezrõl
és átnézzük a
rendszerindítás során megjelenõ
üzeneteket. Ha szerepel bennük minden eszköz
és a rendszer indulása után
mûködõképesek, akkor jöhet a
következõ lépés.Ellenkezõ esetben létre kell hoznunk
két saját rendszerindító lemezt,
amelyeken a rendszermag olyan változata
található, amely képes csatlakoztatni az
összes lemezünket és el tudja érni a
szalagos egységünket. A floppykon a
következõknek kell meglennie:
fdisk, bsdlabel,
newfs, mount és a
program, amellyel a biztonsági mentéseinket
kezeljük. Az összes program legyen statikusan
linkelt. Ha a dump programot
használjuk, akkor a lemezekrõl ne felejtsük
le a restore programot sem.A harmadik lépésben igyekezzünk
minél gyakrabban szalagra menteni. Mindig gondoljuk
arra, hogy a legutolsó mentés óta
létrehozott változatásaink teljesen el
fognak veszni. A mentéseket tartalmazó
szalagokat tegyük
írásvédetté.A negyedik lépésben ellenõrizzük a
helyreállító lemezeket (vagy a
boot.flp és
fixit.flp állományokat,
vagy a második lépésben
készített saját lemezeinket) és
mentéseket tartalmazó szalagokat.
Jegyezzük le az eljárást. Ezeket a
jegyzeteket is rakjuk el rendszerindító
lemezekkel, a kinyomtatott adatokkal és a
mentéseket tartalmazó szalagokkal együtt.
Ezek a jegyzetek megvédenek minket attól, hogy a
helyreállítás közbeni
kétségbeesésünkben nehogy
véletlenül tönkretegyük a
biztonsági mentéseinket. (Hogy miként
is? Például ha a tar xvf
/dev/sa0 parancs helyett izgalmunkban a tar
cvf /dev/sa0 parancsot gépeljük be,
akkor azzal felülírjuk a biztonsági
mentéseinket).A fokozott biztonság kedvéért minden
alkalommal készítsünk
rendszerindító lemezeket és
legalább két mentést. Az egyiket
valamilyen távoli helyen tároljuk. Ez a
távoli hely NE ugyanannak az épületnek az
alagsora legyen! Számos cég alaposan megtanulta
ezt a szabályt a Világkereskedelmi központ
tragédiája kapcsán. Ez a távoli
hely számítógépeinkbõl
és merevlemezes meghajtóinkól is
fizikailag jól elkülöníthetõ,
jelentõs távolságban legyen.A rendszerindító lemezek
létrehozásához
használható szkript /mnt/sbin/init
gzip -c -best /sbin/fsck > /mnt/sbin/fsck
gzip -c -best /sbin/mount > /mnt/sbin/mount
gzip -c -best /sbin/halt > /mnt/sbin/halt
gzip -c -best /sbin/restore > /mnt/sbin/restore
gzip -c -best /bin/sh > /mnt/bin/sh
gzip -c -best /bin/sync > /mnt/bin/sync
cp /root/.profile /mnt/root
chmod 500 /mnt/sbin/init
chmod 555 /mnt/sbin/fsck /mnt/sbin/mount /mnt/sbin/halt
chmod 555 /mnt/bin/sh /mnt/bin/sync
chmod 6555 /mnt/sbin/restore
#
# Egy minimális állományrendszeri táblázat létrehozása.
#
cat > /mnt/etc/fstab < /mnt/etc/passwd < /mnt/etc/master.passwd <A katasztrófa utánAz alapvetõ kérdés: a hardver
túlélte? Ha rendszeresen
készítettünk biztonsági
mentéseket, akkor a szoftverek miatt
egyáltalán nem kell aggódnunk.Ha a hardver megsérült, akkor a
számítógép
használatának újból
megkezdése elõtt javasolt cserélni a
meghibásodott alkatrészeket.Ha a hardverrel minden rendben találtunk, akkor
nézzük meg a floppykat. Ha saját
rendszerindító lemezt használunk, akkor
indítsuk el egyfelhasználós módban
(a boot: parancssornál írjuk
be, hogy -s) és ugorjuk át a
következõ bekezdést.Amennyiben viszont a boot.flp
és fixit.flp
állományok alapján
készítettük a lemezeket, olvassunk
tovább. Helyezzük a boot.flp
tartalmú lemezt az elsõdleges floppy
meghajtóba és indítsuk el vele a
számítógépet. Az eredeti
telepítõmenü jelenik meg ezután a
képernyõn. Innen válasszuk ki a
Fixit -- Repair mode with CDROM or floppy
(Helyreállítás -- A rendszer
helyreállítása CD-rõl vagy
floppyról) menüpontot. Amikor kéri
a telepítõ, tegyük be a
fixit.flp alapján
készült lemezt. A restore
és az összes többi számunkra fontos
program a /mnt2/rescue
könyvtárban található (vagy a
&os; 5.2-nél korábbi változatai
esetén a /mnt2/stand
könyvtárban).Egyenként állítsuk vissza az egyes
állományrendszereket.mountgyökér
partícióbsdlabelnewfsA mount paranccsal
próbáljuk meg csatlakoztatni az elsõ
lemezünk rendszerindító
partícióját (például
mount /dev/da0a /mt). Ha a
lemezcímke megsérült, akkor
bsdlabel alkalmazásával
partícionáljuk újra a lemezt és
címkézzük meg a korábban
kinyomtatott címke adatainak megfelelõen. A
newfs segítségével
újra hozzuk létre az
állományrendszereket.
Írható-olvasható módban
csatlakoztassuk újra a floppy
rendszerinító partícióját
(mount -u -o rw /mnt). A biztonság
mentést végzõ program és a
biztonsági mentést tartalmazó szalagok
használatával állítsuk helyre az
állományrendszer tartalmát
(például restore vrf
/dev/sa0). Válasszuk le az
állományrendszert (például
umount /mnt). Mindegyik sérült
állományrendszerre ismételjük a
folyamatot.Ahogy mûködõképessé
vált a rendszerünk, mentsük az adatainkat
új szalagokra. Akármi is okozta a rendszer
összeomlását vagy az adatvesztést,
ismét lecsaphat. Ha most áldozunk erre
még egy órát, akkor azzal a
késõbbiekben számos
kellemetlenségtõl óvhatjuk meg
magunkat.* Mit tegyek, ha nem készültem fel a
katasztrófára?
]]>
MarcFonvieilleÁtdolgozta és feljavította:
Hálózat, memória és
állomány alapú
állományrendszerekvirtuális lemezeklemezekvirtuálisA számítógépünkben
létezõ fizikai lemezek, például floppyk,
CD-k, merevlemezek és egyebek mellett a lemezek egy
másik formáját is képes
megérteni a &os; — a virtuális
lemezeket.NFSCodalemezekmemóriaA virtuális lemeznek tekinthetõek többek
közt az olyan hálózati
állományrendszerek, mint például a
Hálózati
állományrendszer (Network File System, NFS)
és a Coda, valamint a memóriában és
állományokban létrehozott
állományrendszerek.Attól függõen, hogy a &os; melyik
változatát használjuk, az
állomány és memória alapú
állományrendszerek
létrehozásához, illetve
használatához különbözõ
segédprogramokra lesz szükségünk.A &man.devfs.5; a felhasználó
számára láthatatlan módon hozza
létre az eszközök leíróit.Állomány alapú
állományrendszereklemezekállomány alapú&os; alatt az &man.mdconfig.8; segédprogram
segítségével tudunk memórialemezeket
(&man.md.4;) beállítani és
engedélyezni. Az &man.mdconfig.8;
használatához be kell töltenünk az
&man.md.4; modult vagy hozzá kell tennünk a
rendszermagunk beállításait
tartalmazó állományhoz:device mdAz &man.mdconfig.8; parancs háromféle
memória alapú virtuális lemezt ismer: a
&man.malloc.9;, állományok vagy
lapozóterület használatával
létrehozott memórialemezeket. Így lehet
például csatlakoztatni a floppyk vagy CD-k
állományokban tárolt image-eit.Egy meglevõ állományrendszer
image-ének csatlakoztatása:Egy meglevõ állományrendszer
image-ének csatlakoztatása az
mdconfig paranccsal&prompt.root; mdconfig -a -t vnode -f image -u 0
&prompt.root; mount /dev/md0/mntÚj állományrendszer
létrehozása az &man.mdconfig.8;
használatával:Új állomány alapú lemez
létrehozása az mdconfig
paranccsal&prompt.root; dd if=/dev/zero of=új-image bs=1k count=5k
5120+0 records in
5120+0 records out
&prompt.root; mdconfig -a -t vnode -f új-image -u 0
&prompt.root; bsdlabel -w md0 auto
&prompt.root; newfs md0a
/dev/md0a: 5.0MB (10224 sectors) block size 16384, fragment size 2048
using 4 cylinder groups of 1.25MB, 80 blks, 192 inodes.
super-block backups (for fsck -b #) at:
160, 2720, 5280, 7840
&prompt.root; mount /dev/md0a /mnt
&prompt.root; df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md0a 4710 4 4330 0% /mntHa az beállítással
nem adjuk meg az egység számát, akkor az
&man.mdconfig.8; az &man.md.4; automatikus
kiosztásán keresztül fog egy
használatban még nem levõ eszközt
kiválasztani. Az így kiosztott egység neve
az md4 névhez hasonlóan
jelenik meg a szabványos kimeneten. Az &man.mdconfig.8;
használatának részleteirõl olvassuk el
a hozzá tartozó man oldalt.Az &man.mdconfig.8; egy nagyon sokoldalú
segédeszköz, habár használatakor
viszonylag sok parancsot kell kiadni egy állomány
alapú állományrendszer
létrehozásához. A &os; azonban
alapból tartalmaz még egy &man.mdmfs.8; nevû
segédprogramot is, ami az &man.md.4; lemezeket az
&man.mdconfig.8; segítségével
állítja be, létrehoz rajtuk egy UFS
típusú állományrendszert a
&man.newfs.8; segítségével és
csatlakoztatja a &man.mount.8; paranccsal. Így
például, ha az iménti
állományrendszert akarjuk létrehozni
és csatlakoztatni, akkor egyszerûen csak
gépeljünk be ennyit:Állomány alapú lemezek
beállítása és
csatlakoztatása az mdmfs
paranccsal&prompt.root; dd if=/dev/zero of=új-image bs=1k count=5k
5120+0 records in
5120+0 records out
&prompt.root; mdmfs -F új-image -s 5m md0/mnt
&prompt.root; df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md0 4718 4 4338 0% /mntHa az paramétert az egység
száma nélkül adjuk meg, akkor &man.mdmfs.8;
az &man.md.4; automatikus kiosztására
támaszkodva fog egy addig még nem használt
eszközt kiválasztani. A &man.mdmfs.8;
használatának pontos részleteivel
kapcsolatban lásd a hozzá tartozó man
oldalt.Memória alapú
állományrendszereklemezekmemória
állományrendszerA memória alapú
állományrendszerek esetében
általában a
lapozóállomány alapú
megközelítést alkalmazzák. A
lapozóállomány alapúság nem
arra utal, hogy a memórialemezt alapból
kilapozzák lemezre, hanem inkább arra, hogy a
memórialemez olyan területen jön létre,
amelyet szükség esetén lemezre lehet lapozni.
Memória alapú lemezeket a (rendszermag
szintû) &man.malloc.9; használatával is
létre lehet hozni, de a malloc alapú
memórialemezeknél, különösen a
nagyon nagyok esetében, a rendszer könnyen
össze tud omlani, ha kifut a rendelkezésére
álló memóriából.Új memória alapú lemez
létrehozása az mdconfig
paranccsal&prompt.root; mdconfig -a -t swap -s 5m -u 1
&prompt.root; newfs -U md1
/dev/md1: 5.0MB (10240 sectors) block size 16384, fragment size 2048
using 4 cylinder groups of 1.27MB, 81 blks, 192 inodes.
with soft updates
super-block backups (for fsck -b #) at:
160, 2752, 5344, 7936
&prompt.root; mount /dev/md1/mnt
&prompt.root; df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md1 4718 4 4338 0% /mntÚj memória alapú lemez
létrehozása az mdmfs
paranccsal&prompt.root; mdmfs -s 5m md2/mnt
&prompt.root; df /mnt
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md2 4846 2 4458 0% /mntMemórialemezek leválasztása a
rendszerrõllemezekegy memórialemez
leválasztásaAmikor már nem akarunk tovább használni
egy memória vagy állomány alapú
állományrendszert, érdemes visszaadnunk az
általuk felhasznált erõforrásokat a
rendszernek. Elsõként válasszuk le
magát az állományrendszert, majd az
&man.mdconfig.8; segítségével kapcsoljuk le
a lemezt a rendszerrõl és szabadítsuk fel az
általa felhasznált
erõforrásokat.Például az /dev/md4
eszközt így lehet lekapcsolni és
felszabadítani:&prompt.root; mdconfig -d -u 4A beállított &man.md.4; eszközökkel
kapcsolatos többi információt az
mdconfig -l paranccsal tudjuk
lekérdezni.TomRhodesÍrta: Az állományrendszerek
pillanatképeiállományrendszerekpillanatképekA &os; a Soft Updates
mellett felkínál egy másik
lehetõséget: az
állományrendszerekrõl
készíthetõ
pillanatfelvételeket.Ezek a pillanatképek lehetõvé teszik a
felhasználók számára, hogy adott
állományrendszerekrõl képeket hozzanak
létre és azt állományként
kezeljék. A pillanatképeket az adott
állományrendszerben kell létrehozni,
és a felhasználók
állományrendszerenként
húsznál többet nem hozhatnak
belõlük létre. Az aktív
pillanatképek a szuperblokkban kerülnek
rögzítésre, ezért az
állományrendszerek leválasztása
és újracsatlakoztatása esetén is
megmaradnak, még újraindítás
után is. Amikor egy pillanatképre már
nincs tovább szükségünk, egy szimpla
&man.rm.1; paranccsal eltávolítható. A
pillanatképek tetszõleges sorrendben
eltávolíthatóak, habár ilyenkor az
összes általuk lefoglalt hely nem szabadul fel,
mivel más pillanatképeknek még
szüksége lehet bizonyos blokkjaira.Miután az &man.mksnap.ffs.8; paranccsal
létrehoztunk egy pillanatképet tartalmazó
állományt, beállítódik
rá a módosíthatatlanságot
jelentõ
állományjelzõ. Egyedül az
&man.unlink.1; parancs képez ez alól
kivételt, mivel segítségével a
pillanatképek
eltávolíthatóak.A pillanatképek a &man.mount.8; paranccsal
hozhatóak létre. A következõ
módon tudjuk a /var egy
pillanatképét elkészíteni a
/var/snapshot/snap
állományban:&prompt.root; mount -u -o snapshot /var/snapshot/snap /varVagy a &man.mksnap.ffs.8; meghívásával
is készíthetünk
pillanatképeket:&prompt.root; mksnap_ffs /var /var/snapshot/snapAz állományrendszeren (például
/var) a pillanatképeket
tartalmazó állományokat a &man.find.1;
paranccsal kereshetjük meg:&prompt.root; find /var -flags snapshotAhogy elkészítettünk egy
pillanatképet, több mindenre is
felhasználhatjuk:Egyes rendszergazdák a pillanatképeket
biztonsági mentésekhez
használják, mivel ezek gond nélkül
áttehetõek CD-re vagy szalagra.Az állományrendszerek
sértetlenségét ellenõrzõ
program, az &man.fsck.8; is lefuttatható egy ilyen
pillanatképen. Feltéve, hogy az
állományrendszer csatlakoztatásakor
tiszta volt, mindig egy tiszta (és
változásokat nem tartalmazó)
eredményt kell kapnunk. Ennek megléte
elengedhetetlen a háttérben futtatható
&man.fsck.8; mûködéséhez.Futassuk le a &man.dump.8; segédprogramot a
pillanatképen. Az így létrehozott
mentés megegyezik az állományrendszer
adott pillanatban felvett állapotával. Az
beállítás
megadásával maga a &man.dump.8; is
képes egyetlen parancsban pillanatfelvételt
készíteni, ebbõl létrehozni a
mentést, majd eltávolítani.A pillanatképet képesek vagyunk a
&man.mount.8; paranccsal az állományrendszer
befagyasztott változataként
csatlakoztatni:&prompt.root; mdconfig -a -t vnode -f /var/snapshot/snap -u 4
&prompt.root; mount -r /dev/md4 /mntÍgy már a /mnt
könyvtárba csatlakoztatva be tudjuk járni a
befagyasztott /var
állományrendszert. Minden a
pillanatfelvétel készítésének
idõpontjának megfelelõ állapotban fog
maradni. Az egyetlen kivétel talán annyi, hogy
korábbi pillanatképek nulla méretû
állományként fognak megjelenni. Mikor
befejeztük a pillanatképek
használatát, a &man.umount.8; paranccsal le tudjuk
választani:&prompt.root; umount /mnt
&prompt.root; mdconfig -d -u 4A és az
állományrendszerek pillanatképeinek
használatával, illetve mûszaki
leírásukkal kapcsolatban látogassuk meg
Marshall Kirk McKusick honlapját a címen
(angolul).Az állományrendszerek
kvótáinyilvántartáslemezterületlemezkvótákA kvóták használata az
operációs rendszerben egy olyan
választható lehetõség, aminek
segítségével
állományrendszerenként korlátozni
tudjuk az egyes felhasználók vagy csoporttagok
által elhasznált lemezterület és/vagy
állományok mennyiségét. Ezt
leggyakrabban olyan idõosztásos rendszerekben
használják ki, ahol szükség lehet az
egyes felhasználókra vagy csoportokra esõ
erõforrások mennyiségének
szabályozására. Ezzel tudjuk
megakadályozni, hogy a felhasználók vagy
csoportok elfogyasszák az összes rendelkezésre
álló lemezterületet.A kvóták használatának
beállításaMielõtt nekilátnánk a
kvóták használatának, meg kell
gyõzõdnünk róla, hogy a rendszermagunkban
megvan hozzá a szükséges
támogatás. A kvótákat a
következõ sorral lehet engedélyezni a
rendszermag beállításait tartalmazó
állományban:options QUOTAA gyári GENERIC rendszermag ezt
alapból nem engedélyezi, ezért ehhez
mindenképpen be kell állítani, le kell
fordítani és telepíteni egy kell
saját rendszermagot. A saját rendszermag
létrehozásához kövessük a utasításait.Ha ezzel megvagyunk, akkor a következõ sorral
bõvítsük ki az
/etc/rc.conf
állományt:enable_quotas="YES"lemezkvótákellenõrzéseA kvótákat kezelõ rendszer
indításának finomabb
szabályozására létezik még
egy további beállítási
lehetõség is. A rendszer indítása
során általában az egyes
állományrendszerek kvótáját a
&man.quotacheck.8; program ellenõrzi. A &man.quotacheck.8;
gondoskodik róla, hogy a kvótákat
tároló adatbázis ténylegesen az
állományrendszeren található
adatokat tükrözi. Ez egy nagyon
idõigényes folyamat, ami rányomja
bélyegét a rendszer elindulásához
szükséges idõ mennyiségére is.
Amennyiben szeretnénk megtakarítani ezt a
lépést, tegyük bele az
/etc/rc.conf állományba a
direkt erre a célra kialakított
beállítást:check_quotas="NO"Végezetül az állományrendszereken
az /etc/fstab megfelelõ
módosításával tudjuk
egyenként engedélyezni a lemezkvóták
használatát. Itt lehet bekapcsolni az
állományrendszerek felhasználókra
vagy csoportokra, esetleg mind a kettõjükre
vonatkozó kvótáikat.Ha felhasználói szintû
kvótákat akarunk engedélyezni egy
állományrendszeren, akkor az
/etc/fstab állományban az
állományrendszer beállításai
közé vegyük fel a
opciót. Például így:/dev/da1s2g /home ufs rw,userquota 1 2Ehhez hasonlóan tudjuk engedélyezni a
helyett a
opció használatával a csoportszintû
kvótákat is. A felhasználói-
és csoportszintû kvóták együttes
engedélyezéséhez így kell
átírni az állományrendszer
bejegyzését:/dev/da1s2g /home ufs rw,userquota,groupquota 1 2Alapértelmezés szerint az
állományrendszerekhez tartozó
kvóták a gyökerükben
található quota.user valamint
quota.group állományokban
tárolódnak. Errõl részletesebben az
&man.fstab.5; man oldalon olvashatunk. Noha még az
&man.fstab.5; man oldala szerint is megadható más
elérési út a kvótákat
tároló állományokhoz,
semmiképpen sem javasoljuk ezt, mert úgy
tûnik, hogy a kvótákat kezelõ
különbözõ segédprogramok ezzel nem
képesek rendesen megbirkózni.Most kell újraindítani a rendszerünket az
új rendszermaggal. Az /etc/rc
magától le fogja futtatni a kezdeti
kvótaállományok
létrehozásához szükséges
parancsokat az /etc/fstab
állományban megadott
állományrendszereken. Ennek megfelelõen
tehát nem nekünk kell kézzel
létrehoznunk ezeket az állományokat.Hétköznapi esetben egyáltalán nem
kell manuális futtatnunk a &man.quotacheck.8;,
&man.quotaon.8; vagy &man.quotaoff.8; parancsokat. Habár
ha tisztában szeretnénk lenni a pontos
mûködésükkel, akkor mindenképpen
lapozzuk fel a hozzájuk tartozó man
oldalakat.A kvóták
beállításalemezkvótákkorlátokAhogy sikerült beállítani a
kvóták használatát, egybõl
ellenõrizzük is a
mûködõképességüket. Ezt
legegyszerûbben a következõ paranccsal
tehetjük meg:&prompt.root; quota -vItt egy sorban összefoglalva láthatjuk a
jelenlegi lemezhasználatot és az egyes
állományrendszereken engedélyezett
kvóták korlátait.Most már készenállunk arra, hogy az
&man.edquota.8; paranccsal végre korlátokat is
beállítsunk a kvótákhoz.Számos beállítás áll
rendelkezésünkre a felhasználók vagy
csoportok által lefoglalható lemezterület
vagy a létrehozható állományok
számának korlátozását
illetõen. A helyfoglalást szabályozhatjuk
lemezterület alapján (blokk kvóta) vagy az
állományok száma szerint
(állományleíró kvóta),
esetleg a kettõ kombinációjával. A
korlátok további két
kategóriára bonthatóak: erõsre
és gyengére.erõs korlátAz erõs korlátot (hard limit) nem lehet
túllépni. Ahogy a felhasználó
eléri a számára kiszabott erõs
korlátot, semmilyen további területet nem
használhat fel a kérdéses
állományrendszeren. Például, ha a
felhasználónak az állományrendszeren
500 kilobyte-os erõs korlátot
állítottunk be, és éppen 490
kilobyte-nál tart, akkor a felhasználó
innen már csak 10 kilobyte-nyi helyet foglalhat le. 11
kilobyte lefoglalása már nem fog sikerrel
járni.gyenge korlátEzzel szemben a gyenge korlátok (soft limit) egy
adott ideig átléphetõek. Ezt az idõt
türelmi idõnek (grace period) nevezik, ami
alapértelmezés szerint egy hét. Ha a
felhasználó a gyenge korláton felül
marad a türelmi idõ után is, akkor ezt a gyenge
korlát erõssé válik és
semmilyen további helyfoglalásra nem lesz
lehetõsége. Amikor a felhasználók
újra a gyenge korlát alá kerül, a
türelmi idõ is visszaáll a
beállított értékére.A most következõ példában az
&man.edquota.8; parancsot mutatjuk be. Amikor meghívjuk
az &man.edquota.8; parancsot, akkor elindul az
EDITOR környezeti változónak
megfelelõ szövegszerkesztõ, illetve ennek
hiányában a vi,
és lehetõségünk nyílik a
kvóta korlátainak
módosítására.&prompt.root; edquota -u tesztQuotas for user teszt:
/usr: kbytes in use: 65, limits (soft = 50, hard = 75)
inodes in use: 7, limits (soft = 50, hard = 60)
/usr/var: kbytes in use: 0, limits (soft = 50, hard = 75)
inodes in use: 0, limits (soft = 50, hard = 60)Normális esetben minden kvótával
rendelkezõ állományrendszerhez két
sort kapunk. Közülük az egyik sorban szerepelnek
a blokkok korlátai, a másikban az
állományleírók korlátai. Ha
valamelyiküket meg akarjuk változtatni, akkor
egyszerûen csak át kell írnunk az adott
korlát értékét.
Például növeljük meg a
felhasználók 50-es gyenge és 75-ös
erõs blokk korlátját 500-as gyenge és
600-as erõs korlátra. Ehhez szerkesszük
át a/usr: kbytes in use: 65, limits (soft = 50, hard = 75)sort erre:/usr: kbytes in use: 65, limits (soft = 500, hard = 600)Az új korlátok akkor fognak
érvénybe lépni, miután
kiléptünk a
szövegszerkesztõbõl.Néha hasznos lehet a korlátokat adott
felhasználói azonosítókhoz
beállítani. Ezt az &man.edquota.8; parancs
paraméterével tudjuk
elvégezni. Elõször is állítsuk
be egy felhasználónak a beállítani
kívánt korlátokat, majd futtassuk le az
edquota -p tesztkezdõuid-véguid
parancsot. Például ha a
teszt nevû
felhasználónak állítottuk be a
számunkra megfelelõ korlátokat, akkor a
következõ paranccsal lehet a rá
vonatkozó korlátokat kiterjeszteni a 10 000
és 19 999 közötti
azonosítójú
felhasználókra:&prompt.root; edquota -p teszt10000-19999Errõl bõvebben az &man.edquota.8; man
oldalán kaphatunk
felvilágosítást.A kvóták korlátainak és a
lemezhasználat ellenõrzéselemezkvótákellenõrzéseA kvóták korlátait és a lemez
jelenlegi kihasználtságát a &man.quota.1;
vagy &man.repquota.8; parancsokkal is ellenõrizhetjük.
A &man.quota.1; parancs segítségével
ellenõrizhetõ az egyes felhasználók vagy
csoportok kvótája és
lemezhasználata. A felhasználók csak a
saját adataikhoz férhetnek hozzá, illetve
mindazon csoportokéhoz, aminek tagjai. Egyedül a
rendszeradminisztrátor képes látni az
összes felhasználó és csoport
kvótáját. A &man.repquota.8; paranccsal
kérdezhetõ le az összes kvóta és
lemezhasználat rövid kimutatása minden olyan
állományrendszeren, ahol azok
engedélyezettek.A következõ kimenet a quota -v
parancstól származik, ahol a
felhasználónak két
állományrendszeren is vannak
kvótái:Disk quotas for user teszt (uid 1002):
Filesystem usage quota limit grace files quota limit grace
/usr 65* 50 75 5days 7 50 60
/usr/var 0 50 75 0 50 60türelmi idõA fenti példában látható, hogy a
felhasználó a /usr
állományrendszeren pillanatnyilag 15 kilobyte-tal
van az 50 kilobyte-os gyenge korlátja felett
és 5 napja van hátra a türelmi
idõbõl. Vegyük észre a szám
mellett levõ csillagot (*), amivel a
rendszer jelzi, hogy a felhasználó
túllépte a korlátját.A &man.quota.1; parancs kimenetében
általában nem jelennek meg azok az
állományrendszerek, amelyeken a
felhasználónak ugyan vannak kvótái,
de nem foglal rajtuk lemezterületet. A
beállítás megadásával ezek az
állományrendszerek is
láthatóvá válnak, mint ahogy azt a
fenti példában is megfigyelhettük a
/usr/var esetében.Kvóták NFS-en keresztülNFSA kvóták az NFS szerver
kvótákért felelõs
alrendszerében is engedélyezhetõek. Az
&man.rpc.rquotad.8; démon teszi az NFS klienseken
futtatott &man.quota.1; parancsok számára
elérhetõvé a kvótákkal
kapcsolatos információkat, aminek
köszönhetõen a felhasználók
távolról is képesek lekérdezni a
kvótáikat.Az rpc.rquotad
aktivilásához a következõt kell
beállítani az /etc/inetd.conf
állományban:rquotad/1 dgram rpc/udp wait root /usr/libexec/rpc.rquotad rpc.rquotadMajd ne felejtsük el újraindítani az
inetd démont sem:&prompt.root; /etc/rc.d/inetd restartLuckyGreenÍrta: shamrock@cypherpunks.toA lemezpartíciók
titkosításalemezektitkosításaA &os; kitûnõ futásközbeni
védelmet ajánl fel az adatok illetéktelen
hozzáférése ellen. Az
állományok engedélyei és a
kötelezõ
hozzáférés-vezérlés (Mandatory
Access Control, MAC, lásd )
segítenek megvédeni érzékeny
adatainkat az illéktelenek ellen az operációs
rendszer futása és a
számítógép mûködése
során. Azonban az operációs rendszerben
kezelt engedélyek teljesen hatástalanok abban az
esetben, ha a támadó fizikailag is képes
hozzáférni a
számítógépünkhöz,
eltávolítani a merevlemezt és egy
másik operációs rendszer
segítségével kielemezni a rajta
található fontos adatainkat.Függetlenül attól, hogy a
támadó valójában miként is
férkõzött hozzá a
merevlemezünkhöz, vagy miként kapcsolta le a
számítógépünket, a &os;
megtalálható GEOM alapú
lemeztitkosítás (gbde) és a
geli titkosítási alrendszer
egyaránt képes védelmet nyújtani a
számítógépen található
állományrendszerek számára az
értékes adatok után kutató igen
motivált betörõk ellen. A csupán egyes
állományokra kiterjedõ körmönfont
titkosítási módszerekkel szemben a
gbde és a geli az
egész állományrendszert
észrevétlen módon titkosítja.
Titkosítatlan adat nem is kerül a merevlemezre.A lemez titkosítása a
gbde
használatávalVáljunk root
felhasználóváA gbde
beállításához
rendszeradminisztrátori jogosultságokra lesz
szükségünk.&prompt.user; su -
Password:Adjuk hozzá a &man.gbde.4;
támogatását a rendszermag
konfigurációs
állományáhozTegyük a következõ sort a rendszermag
beállításait tartalmazó
állományba:options GEOM_BDEFordítsuk újra a rendszermagot a ben leírtak szerint.Indítsuk el a
számítógépet az új
rendszermaggal.A rendszermag újrafordítása helyett
a kldload paranccsal is
betölthetjük a &man.gbde.4;
modulját:&prompt.root; kldload geom_bdeA titkosított merevlemez
elõkészítéseA következõ példa azt feltételezi,
hogy a rendszerünkhöz egy új merevlemezt adunk
hozzá, amin egyetlen titkosított
partíció foglal helyet. Ezt a
partíciót a /private
könyvtárba fogjuk csatlakoztatni. A
gbde használható a
/home és a
/var/mail
titkosítására is, de ennek
megvalósítása olyan bonyolult
utasításokat igényel, amelyek
meghaladják ennek a bevezetésnek a
kereteit.Az új merevlemez
hozzáadásaA ban bemutatottak szerint
adjuk hozzá a rendszerünkhöz az új
merevlemezt. A példában az új lemez
partícióját a
/dev/ad4s1c néven fogjuk
tudni elérni. A
/dev/ad0s1*
eszközök a példában szereplõ
&os; rendszer szabványos partícióit
jelölik.&prompt.root; ls /dev/ad*
/dev/ad0 /dev/ad0s1b /dev/ad0s1e /dev/ad4s1
/dev/ad0s1 /dev/ad0s1c /dev/ad0s1f /dev/ad4s1c
/dev/ad0s1a /dev/ad0s1d /dev/ad4Hozzunk létre egy könyvtárat a gbde
zárolásainak
tárolásához&prompt.root; mkdir /etc/gbdeA gbdenek azért van
szüksége a zárolásokat
rögzítõ állományokra, hogy
hozzá tudjon férni a titkosított
partíciókhoz. Amennyiben ezt nem tudja
megtenni, a gbde
anélkül nem lesz képes visszafejteni a
titkosított partíciókon tárolt
adatokat, hogy az ezeket elérni akaró
szoftvereknek ne kelljen jelentõsebb
mértékben manuálisan beavatkoznia.
Mindegyik titkosított partíció
külön zároló állományt
használ.A gbde partíció
inicializálásaA gbde által
használt partíciókat használatuk
elõtt inicializálni kell. Ezt a mûveletet
azonban csak egyszer kell elvégezni:&prompt.root; gbde init /dev/ad4s1c -i -L /etc/gbde/ad4s1c.lockA &man.gbde.8; ekkor elindít egy
szövegszerkesztõt és benne egy sablon
segítségével be tudjuk
állítani a különbözõ
konfigurációs értékeket. Az
UFS1 vagy UFS2 használata esetén
állítsuk a szektorméretet
2048-ra:$FreeBSD: src/sbin/gbde/template.txt,v 1.1 2002/10/20 11:16:13 phk Exp $
#
# Sector size is the smallest unit of data which can be read or written.
# Making it too small decreases performance and decreases available space.
# Making it too large may prevent filesystems from working. 512 is the
# minimum and always safe. For UFS, use the fragment size
#
sector_size = 2048
[...]
A megjegyzés fordítása:A szektorméret az adatok írásának és olvasásának legkisebb egysége. Ha
túlságosan kicsire választjuk meg, akkor csökken a teljesítmény és csökken a
rendelkezésre álló hely. Ha viszont túlságosan nagyra hagyjuk, akkor azzal
akadályozzuk az állományrendszerek munkáját. 512 a legkisebb érték, amely mindig
megbízható. Az UFS esetén használjuk a fragmensek méretét.A &man.gbde.8; kétszer is rá fog
kérdeni az adatok titkosítására
használt jelmondatra. A jelmondatnak
természetesen mind a kétszer ugyanannak kell
lennie. A gbde
védelmének hatékonysága teljesen
mértékben az általunk választott
jelmondat minõségétõl függ
A könnyen megjegyezhetõ ám
mégis biztonságos jelmondatok
megválasztásához a Diceware
Passphrase honlapján találunk egy
kis segítséget
(angolul)..A gbde init parancs létrehoz
egy zároló állományt a
gbde partícióhoz,
amely ebben a példában az
/etc/gbde/ad4s1c.lock néven
keletkezett. A gbde
zároló állományainak
.lock névre kell
végzõdniük, mivel az
/etc/rc.d/gbde
indítószkript csak ebben az esetben
észleli rendesen.A gbde zároló
állományait a titkosított
partíciók tartalmával együtt
kell lementeni. Miközben a
zároló állomány
törlése nem tudja megakadályozni, hogy
az elszánt támadó visszafejtse a
gbde által
titkosított partíciót, addig a
zároló állomány
nélkül a jogos tulajdonos órási
mennyiségû munka befektetése
nélkül képtelen lesz
hozzáférni a rajta levõ adatokhoz. Ez
utóbbitól egyébként a
&man.gbde.8; és a rendszer tervezõje is
totálisan elhatárolja magát.A titkosított partíció
illesztése a rendszermaghoz&prompt.root; gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c.lockEkkor a titkosított partíció
illesztéséhez a rendszer kérni fogja az
inicializálás során választott
jelmondatot. Ezután az új titkosított
eszköz megjelenik a /dev
könyvtárban
/dev/eszköznév.bde
néven:&prompt.root; ls /dev/ad*
/dev/ad0 /dev/ad0s1b /dev/ad0s1e /dev/ad4s1
/dev/ad0s1 /dev/ad0s1c /dev/ad0s1f /dev/ad4s1c
/dev/ad0s1a /dev/ad0s1d /dev/ad4 /dev/ad4s1c.bdeÁllományrendszer
kialakítása egy titkosított
eszközönAhogy sikerült a titkosított eszközt
illeszteni a rendszermaghoz, létre is tudunk hozni
egy állományrendszert rajta. Erre a
célra a &man.newfs.8; remekül
használható. Mivel egy új UFS2
állományrendszerek
inicializálása sokkal gyorsabb a régi
UFS1 állományrendszerek
inicializálásánál, ezért
a &man.newfs.8; használata esetén az
beállítás
megadása ajánlott.&prompt.root; newfs -U -O2 /dev/ad4s1c.bdeA &man.newfs.8; parancsot egy illesztett
gbde partíción
kell végrehajtani, amit onnan ismerhetünk meg,
hogy az eszköz nevében szerepel a
*.bde
kiterjesztés.A titkosított partíció
csatlakoztatásaHozzunk létre egy csatlakozási pontot a
titkosított állományrendszer
számára.&prompt.root; mkdir /privátCsatlakoztassuk a titkosított
állományrendszert.&prompt.root; mount /dev/ad4s1c.bde /privátEllenõrizzük a titkosított
állományrendszer
mûködõképességétA titkosított állományrendszert
most már látja a &man.df.1; program és
készen áll a használatra.&prompt.user; df -H
Filesystem Size Used Avail Capacity Mounted on
/dev/ad0s1a 1037M 72M 883M 8% /
/devfs 1.0K 1.0K 0B 100% /dev
/dev/ad0s1f 8.1G 55K 7.5G 0% /home
/dev/ad0s1e 1037M 1.1M 953M 0% /tmp
/dev/ad0s1d 6.1G 1.9G 3.7G 35% /usr
/dev/ad4s1c.bde 150G 4.1K 138G 0% /privateLétezõ titkosított
állományrendszerek csatlakoztatásaA rendszer minden egyes indítása után
az összes titkosított
állományrendszert tényleges
használata elõtt újra illeszteni kell a
rendszermaghoz, ellenõrizni az épségét
és csatlakoztatni. Az ehhez szükséges
parancsokat root
felhasználóként kell kiadni.A gbde partíció illesztése a
rendszermaghoz&prompt.root; gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c.lockA gbde partíció
inicializálása során megadott
jelmondatot kell megadnunk a mûvelet
elvégzéséhez.Az állományrendszer
épségének
ellenõrzéseMivel a titkosított
állományrendszerek az automatikus
csatlakoztatáshoz még nem
szerepeltethetõek az /etc/fstab
állományban, ezért az ilyen
állományrendszereket csatlakoztatásuk
elõtt manuálisan ellenõriztetni kell a
&man.fsck.8; lefuttatásával.&prompt.root; fsck -p -t ffs /dev/ad4s1c.bdeA titkosított állományrendszer
csatlakoztatása&prompt.root; mount /dev/ad4s1c.bde /privátA titkosított állományrendszer most
már készen áll a
használatra.A titkosított partíciók
önálló csatlakoztatásaLehet írni olyan szkriptet, amely a
titkosított partíciókat
magától illeszti, ellenõrzi és
csatlakoztatja, de biztonsági
megfontolásokból semmi esetben sem szabad
tartalmaznia a &man.gbde.8; jelszavát. Ehelyett azt
javasoljuk, hogy az ilyen szkripteknek külön meg
kelljen adni a jelszót konzolon vagy az &man.ssh.1;
használatán keresztül.De használhatjuk a mellékelt
rc.d szkriptet is. A szkript
paramétereit az &man.rc.conf.5;
állományon keresztül adhatjuk meg,
például:gbde_autoattach_all="YES"
gbde_devices="ad4s1c"
gbde_lockdir="/etc/gbde"Ilyenkor a gbde által
használt jelmondatot a rendszer
indításakor kell megadni. Miután
begépeltük a megfelelõ jelmondatot, a
titkosított gbde
partíció magától
csatlakoztatásra kerül. Ez akkor lehet hasznos,
ha a gbde
megoldását hordozható
számítógépeken
alkalmazzuk.A gbde által alkalmazott titkosítási
módszerekA &man.gbde.8; a szektorok tartalmát 128 bites
AES használatával CBC módban
titkosítja. A lemezen található minden
egyes szektort eltérõ AES kulccsal kódolja.
A gbde kriptográfiai
felépítését, valamint mindazt,
hogy az egyes szektorok kulcsai miként
származtathatóak a felhasználó
által megadott jelmondatból, a &man.gbde.4; man
oldalán olvashatjuk.Kompatibilitási problémákA &man.sysinstall.8; nem kompatibilis a
gbde által
titkosított eszközökkel. A
&man.sysinstall.8; indítása elõtt minden
*.bde
eszközt ki kell iktatni a rendszermagból,
különben az eszközök keresése
során össze fog omlani. A
példánkban használt titkosított
eszközt a következõ paranccsal kell
lekapcsolni:&prompt.root; gbde detach /dev/ad4s1cTovábbá megjegyezzük azt is, hogy a
&man.vinum.4; nem használja a &man.geom.4; alrendszert,
ezért a gbde
alkalmazása során nem használhatunk
Vinum-köteteket.DanielGerzoÍrta: A lemezek titkosítása a
geli használatávalA &os; 6.0 változatától kezdve egy
új kriptográfiai GEOM osztály is a
rendelkezésünkre áll, melyet pillanatnyilag
&a.pjd; fejleszt. A geli segédprogram
némileg különbözõ a
gbde megoldásától
— más lehetõségeket kínál
fel és a titkosítást is egy
eltérõ séma mentén
valósítja meg.A &man.geli.8; legfontosabb jellemzõi a
következõk:A &man.crypto.9; keretrendszerét használja
— tehát ha rendelkezünk
kriptográfiai hardverrel, akkor a
geli automatikusan használni
fogja.Több kriptográfiai algoritmust is ismer
(melyek jelenleg az AES, Blowfish és a 3DES).Segítségével a
rendszerindításhoz használt
(gyökér) partíció is
titkosítható. Ilyenkor a
szükséges jelmondatot a rendszer
indításakor kell megadni.Két független kulcsot (például
egy kulcsot és egy céges
kulcsot) is használhatunk vele.A geli gyors — egyszerûen
csak szektorról szektorra titkosít.Lehetõvé teszi a mesterkulcsok
mentését is
visszaállítását. Ha a
felhasználó véletlenül
megsemmisítené a kulcsát, akkor a
biztonsági mentésbõl
helyreállított kulcsok
segítségével vissza tudjuk szerezni az
adatainkat is.Segítségével a lemezeket
véletlenszerû, egyszeri jelszavakkal is
illeszthetjük — ez különösen
fontos lapozóterületek és ideiglenes
állományrendszerek esetében.A geli által
felkínált lehetõségekrõl a
&man.geli.8; man oldalán találhatunk
többet.A következõ lépések
bemutatják, hogyan lehet a &os; rendszermagjában
engedélyezni a geli
támogatását, és hogyan lehet
létrehozni és használni egy
geli titkosítással
rendelkezõ adathordozót.A geli alkalmazásához
legalább a &os; 6.0-RELEASE vagy késõbbi
változatára van szükségünk.
Mivel a rendszermagot is módosítanunk kell,
ezért rendszeradminisztrátori jogosultságok
kellenek a mûveletek
elvégzéséhez.A geli
támogatásának hozzáadása
a rendszermaghozVegyük hozzá a következõ sorokat a
rendszermag beállításait
tartalmazó állományhoz:options GEOM_ELI
device cryptoFordítsuk újra a rendszermagot a ben leírtak szerint.Betölthetjük a geli
modulját is a rendszer indításakor.
Ehhez a következõ sort kell betenni a
/boot/loader.conf
állományba:geom_eli_load="YES"A &man.geli.8; most már használható
a rendszermagban.A mesterkulcs legenerálásaA most következõ példában egy
kulcsot tartalmazó állomány
létrehozását illusztráljuk, amit
a /privát
könyvtárba csatlakoztatott titkosított
adathordozó mesterkulcsához fogunk
használni. A kulcs állomány a
mesterkulcs titkosításához
felhasznált véletlenszerû adatot fogja
tartalmazni, valamint rajta kívül még a
mesterkulcsot egy jelmondattal is védjük. Az
adathordozó szektormérete 4 kilobyte-os
lesz. Emellett még bemutatjuk, hogyan kell
illeszteni egy geli-adathordozót,
állományrendszert létrehozni rajta,
csatlakoztatni, dolgozni vele és lekapcsolni.A nagyobb teljesítmény
érdekében javasolt nagyobb
szektorméretet választani (mint
például 4 kilobyte).A mesterkulcsot egy jelmondattal fogjuk védeni
és a kulcsok készítéséhez
használt adatforrás a
/dev/random lesz. A
/dev/da2.eli, amelyet mit csak
adathordozónak fogunk csak hívni, szektorainak
mérete 4 kilobyte lesz.&prompt.root; dd if=/dev/random of=/root/da2.key bs=64 count=1
&prompt.root; geli init -s 4096 -K /root/da2.key /dev/da2
Enter new passphrase:
Reenter new passphrase:Nem kötelezõ egyszerre használni a
jelmondatot és a kulcs állományt. A
mesterkulcs elzárásának
bebiztosítására bármelyik
módszer alkalmas.Ha a kulcs állomány a -
paraméterrel adjuk meg, akkor a szabványos
bemenetrõl olvassa be a program. Ez a példa
több kulcs használatát mutatja be.&prompt.root; cat kulcs1 kulcs2 kulcs3 | geli init -K - /dev/da2Az adathordozó illesztése a
generált kulccsal&prompt.root; geli attach -k /root/da2.key /dev/da2
Enter passphrase:Az új titkosítatlan eszköz neve
/dev/da2.eli
lesz.&prompt.root; ls /dev/da2*
/dev/da2 /dev/da2.eliAz új állományrendszer
kialakítása&prompt.root; dd if=/dev/random of=/dev/da2.eli bs=1m
&prompt.root; newfs /dev/da2.eli
&prompt.root; mount /dev/da2.eli /privátA titkosított állományrendszer most
már &man.df.1; számára is
látszik és használható:&prompt.root; df -H
Filesystem Size Used Avail Capacity Mounted on
/dev/ad0s1a 248M 89M 139M 38% /
/devfs 1.0K 1.0K 0B 100% /dev
/dev/ad0s1f 7.7G 2.3G 4.9G 32% /usr
/dev/ad0s1d 989M 1.5M 909M 0% /tmp
/dev/ad0s1e 3.9G 1.3G 2.3G 35% /var
/dev/da2.eli 150G 4.1K 138G 0% /privateAz adathordozó leválasztása
és lekapcsolásaMiután befejeztük a munkát a
titkosított partíción, és a
/privát
partícióra már nincs tovább
szükségünk, érdemes
leválasztanunk és kiiktatnunk a
geli titkosítású
partíciót a rendszermagból.&prompt.root; umount /privát
&prompt.root; geli detach da2.eliA &man.geli.8; használatáról
bõvebben a saját man oldalán
tájékozódhatunk.A gelirc.d
szkriptjének használataA geli mellett találhatunk egy
saját rc.d szkriptet, amely
jelentõsen leegyszerûsíti a
geli használatát. A
geli például így
paraméterezhetõ az &man.rc.conf.5;
állományon keresztül:geli_devices="da2"
geli_da2_flags="-p -k /root/da2.key"Ennek segítségével a
/dev/da2 eszközt
geli adathordozóként
állítjuk be a /root/da2.key
állományban található mesterkulcs
felhasználásával, de az
illesztéskor a geli nem kér
jelmondatot (ezt csak akkor fogja tenni, ha a geli
init parancs kiadásához
hozzátesszük a
beállítást). A rendszer
leállítása elõtt pedig a
geli adathordozó így
automatikusan leválasztásra kerül.Az rc.d
beállításával kapcsolatos
tudnivalókat a kézikönyv rc.d szkriptekrõl
szóló szakaszában ismerhetjük
meg.ChristianBrüfferÍrta: A lapozóterület titkosításalapozóterülettitkosításaA &os;-ben a lapozóterület
titkosítása nagyon könnyen
beállítható és már a
&os; 5.3-RELEASE változata óta
elérhetõ. Attól függõen, hogy
konkrétan a &os; melyik verzióját
használjuk, a konfigurációhoz
kapcsolódó beállítások
némileg eltérhetnek. A &os; 6.0-RELEASE
változatától kezdõdõen a
&man.gbde.8; és a &man.geli.8; alrendszerek is
használhatóak a lapozóterület
titkosítására. A korábbi
verziókban egyedül csak a &man.gbde.8;
érhetõ el. Mind a két rendszer az
encswap rc.d szkriptet
használja.Az elõzõ szakaszban, vagyis a A lemezpartíciók
titkosításában már röviden
összefoglaltuk a különbözõ
titkosítással foglalkozó
alrendszereket.Miért kellene titkosítanunk a
lapozóterületet?Hasonlóan a lemezpartíciók
titkosításához, a lapozóterület
titkosításának is az a célja, hogy
védjük az érzékeny
információkat. Képzeljük el, hogy egy
olyan alkalmazással dolgozunk, amely jelszavakat kezel.
Amíg ezek a jelszavak a memóriában
maradnak, addig minden a legnagyobb rendben van. Azonban amikor
az operációs rendszer nekilát a fizikai
memória felszabadításához kilapozni
ezeket az adatokat, a jelszavak titkosítatlanul
kerülnek a lemez felületére és egy
támadó számára könnyû
prédává válnak. Ilyen helyzetekben
csak lapozóterület titkosítása
jelenthet megoldást.ElõkészületekA szakasz további részében a
ad0s1b lesz a lapozásra
használt partíció.Egészen mostanáig nem titkosítottuk a
lapozóterületet. Így
elképzelhetõ, hogy a lemezre már
titkosítatlanul kikerültek jelszavak vagy
bármilyen más érzékeny adatok. A
csorba kiköszörülésére a
lapozóterületen található összes
adatot írjuk felül véletlenszerûen
generált szeméttel:&prompt.root; dd if=/dev/random of=/dev/ad0s1b bs=1mA lapozóterület titkosítása a
&man.gbde.8; használatávalHa a &os; 6.0-RELEASE vagy újabb
változatát használjuk, akkor az
/etc/fstab állományban
tegyük hozzá a .bde
utótagot az a lapozóterülethez tartozó
eszköz nevéhez.
# Device Mountpoint FStype Options Dump Pass#
/dev/ad0s1b.bde none swap sw 0 0
A &os; 6.0-RELEASE elõtti kiadások
esetében a következõ sort is hozzá kell
tennünk az /etc/rc.conf
állományhoz:gbde_swap_enable="YES"A lapozóterület titkosítása a
&man.geli.8; használatávalA &man.gbde.8; használatához hasonlóan
a &man.geli.8; által felajánlott
titkosítást is alkalmazhatjuk a
lapozóterület védelmére. Ilyenkor az
/etc/fstab állományban az
.eli utótagot kell hozzátenni a
lapozóterülethez tartozó eszköz
névhez.
# Device Mountpoint FStype Options Dump Pass#
/dev/ad0s1b.eli none swap sw 0 0
Az &man.geli.8; az AES algoritmust
alapértelmezés szerint 256 bites kulccsal
használja.Ezek az alapértelmezések
megváltoztathatóak az
/etc/rc.conf állományban a
geli_swap_flags
beállítás használatával. A
következõ sor arra utasítja az
encswap rc.d szkriptet, hogy a &man.geli.8;
és a Blowfish algoritmus használatával
hozzon létre egy lapozópartíciót
128 bites kulccsal, 4 kilobyte-os
szektormérettel és a detach on last
close (lekapcsolás használat
után) beállítással:geli_swap_flags="-e blowfish -l 128 -s 4096 -d"A &os; 6.2-RELEASE verzió elõtti
rendszerekben a következõ sort kell
használni:geli_swap_flags="-a blowfish -l 128 -s 4096 -d"A többi beállításhoz a
&man.geli.8; man oldalán a onetime
parancs leírását érdemes
áttanulmányozni.Ellenõrizzük a
mûködésétMiután újraindítottuk a rendszert, a
titkosított lapozóterület helyes
mûködését a swapinfo
paranccsal ellenõrizhetjük le.A &man.gbde.8; esetében:&prompt.user; swapinfo
Device 1K-blocks Used Avail Capacity
/dev/ad0s1b.bde 542720 0 542720 0%
Valamint a &man.geli.8; esetében:&prompt.user; swapinfo
Device 1K-blocks Used Avail Capacity
/dev/ad0s1b.eli 542720 0 542720 0%
diff --git a/hu_HU.ISO8859-2/books/handbook/firewalls/chapter.sgml b/hu_HU.ISO8859-2/books/handbook/firewalls/chapter.sgml
index 09401f52ba..383ac4b769 100644
--- a/hu_HU.ISO8859-2/books/handbook/firewalls/chapter.sgml
+++ b/hu_HU.ISO8859-2/books/handbook/firewalls/chapter.sgml
@@ -1,4565 +1,4565 @@
Joseph J.BarbishÍrta: BradDavisSGML formátumúra alakította
és aktualizálta: TûzfalaktûzfalakbiztonságtûzfalakBevezetésA tûzfalakkal a rendszerünkön
keresztülfolyó bejövõ és kimenõ
forgalmat tudjuk szûrni. A tûzfalak egy vagy több
szabályrendszer alapján
vizsgálják az éppen érkezõ vagy
távozó hálózati csomagokat, és
vagy továbbengedik ezeket vagy
megállítják. A tûzfalak
szabályai a csomagok egy vagy több
jellemzõjét veszik szemügyre, amelyek lehetnek
például a protokoll típusa, a forrás
vagy cél hálózati címe, esetleg a
forrás- vagy a célport.A tûzfalak jelentõs mértékben
képesek gyarapítani egy gép vagy egy
hálózat védelmét. Leginkább a
következõkre tudjuk felhasználni:A belsõ hálózatunkban futó
alkalmazások, szolgáltatások,
gépek megvédésére és
elszigetelésére az internetrõl
érkezõ nem kívánt forgalom
ellenA belsõ hálózatban levõ
gépek elérését tudjuk
korlátozni vagy letiltani az interneten
elérhetõ szolgáltatások
feléA hálózati címfordítás
(Network Address Translation, NAT)
beállításához, ahol a belsõ
hálózatunk privát
IP-címeket használnak
és egy közös kapcsolaton keresztül
érik el az internetet (egyetlen
IP-címmel, vagy pedig automatikusan
kiosztott publikus címekkel).A fejezet elolvasása során
megismerjük:hogyan adjuk meg helyesen a csomagok
szûrését leíró
szabályokat;a &os;-be épített tûzfalak közti
különbségeket;hogyan állítsuk be és
használjuk az OpenBSD PF
tûzfalát;hogyan állítsuk be és
használjuk az IPFILTER
tûzfalat;hogyan állítsuk be és
használjuk az IPFW
tûzfalat.A fejezet elolvasása elõtt ajánlott:a &os;-hez és az internethez kötõdõ
alapvetõ fogalmak ismerete.Röviden a tûzfalakróltûzfalakszabályrendszereiA tûzfalak szabályrendszereit alapvetõen
kétféleképpen tudjuk
összeállítani: inkluzív,
vagyis megengedõ, illetve exkluzív
vagyis kizáró módon. Az exkluzív
tûzfalak minden forgalmat átengednek, amirõl nem
rendelkeznek a tûzfal szabályai. Az inkluzív
tûzfalak ennek pontosan az ellenkezõjét teszik.
Csak azt a forgalmat engedik át, amirõl van
szabály és minden mást blokkolnak.Az inkluzív tûzfalak alkalmazásával
sokkal jobban kezünkbentudjuk tartani a
hálózatunk kimenõ forgalmát,
ezért leginkább az internetes
szolgáltatásokat futtató rendszerek
esetében bizonyulhat jobb választásnak.
Emellett az internetrõl a hálózatunk
felé irányuló forgalmat is képes
szabályozni. Ekkor az egyetlen szabályra sem
illeszkedõ csomagokat egyszerûen eldobjuk és
naplózzuk. Az inkluzív tûzfalak
általában biztonságosabbak az exkluzív
típusú társaiknál, mivel
esetükben jelentõs mértékben visszaszorul
a nem kívánatos átfolyó
forgalom.Hacsak nem emeljük ki külön, a fejezet
további részében minden
példaként megadott szabályrendszer
inkluzív tûzfalat hoz létre.Ez a típusú védelem még
tovább fokozható az
állapottartó tûzfalak (stateful
firewall) használatával. Az ilyen
típusú tûzfalak szemmel tartják a rajtuk
keresztül megnyitott kapcsolatokat, és vagy csak a
már meglevõ kapcsolathoz tartozó forgalmat
engedik át vagy nyitnak egy újat. Az
állapottartó tûzfalak hátránya,
hogy a Denial of Service (DoS)
típusú támadásokkal szemben sokkal
sérülékenyebbek olyan helyzetekben, amikor az
új kapcsolatok nagyon gyorsan jönnek létre. A
legtöbb tûzfal esetében azonban tudjuk
vegyíteni az állapottartó és nem
állapottartó viselkedést, és ezzel egy
ideális beállítást
kialakítani.TûzfalakA &os; alaprendszerébe három
különbözõ tûzfalat
építettek be, melyek a következõk: az
IPFILTER (másik nevén
IPF), az IPFIREWALL
(más néven IPFW) és az
OpenBSD csomagszûrõje (Packet
Filter, azaz PF). A forgalom
szabályozására (vagyis alapvetõen a
sávszélesség
kihasználtságának
vezérlésére) a &os; két
beépített csomagot tartalmaz: ez az &man.altq.4;
és a &man.dummynet.4;. Általában a Dummynet
az IPFW, míg az ALTQ
a PF partnere. Az IPFILTER esetében
maga az IPFILTER végzi a címfordítást
és a szûrést, a
sávszélességet pedig az
IPFW a &man.dummynet.4;
vagy a PF az
ALTQ segítségével. Az
IPFW és a PF
szabályokkal rendelkezik a rendszerünkbe
érkezõ vagy onnan távozó
csomagokról, habár megoldásaik teljesen
máshogy mûködnek és a szabályok
megadási módja is eltér.A &os; azért tartalmaz egyszerre ennyiféle
tûzfalat, mert az emberek elvárásai és
igényei eltérnek. Egyikük sem tekinthetõ
a legjobbnak.A szerzõ egyébként az IPFILTER
megoldását részesíti elõnyben,
mivel egy hálózati címfordítást
alkalmazó környezetben sokkal könnyebb vele
megfogalmazni az állapottartó szabályokat,
valamint tartalmaz egy beépített FTP proxyt is,
amivel így a kimenõ FTP kapcsolatok
beállítása még tovább
egyszerûsödik.Mivel az összes tûzfal a csomagok
fejlécének bizonyos mezõinek alapján
dolgozik, ezért a tûzfal
szabályrendszerét megalkotó egyénnek
teljesen tisztában kell lennie a TCP/IP
mûködésével, továbbá azzal,
hogy ezekben a mezõkben milyen értékek
szerepelhetnek és ezeket hogyan használják
egy átlagos kapcsolat alatt. Ebben a témában
a
címen találhatunk egy remek ismertetõt
(angolul).JohnFerrellÁtnézte és
aktualizálta:Az OpenBSD csomagszûrõje (PF) és az
ALTQtûzfalakPF2003 júliusában az OpenBSD PF
néven ismert csomagszûrõjét
átírták &os;-re és
elérhetõvé tették a &os;
Portgyûjteményének részeként. A
PF programot beépítetten
tartalmazó elsõ kiadás pedig 2004
novemberében a &os; 5.3 volt. A PF
egy teljes, mindentudó tûzfal, amely támogatja
az ún. ALTQ (Alternate Queuing, vagyis
a váltóbesorolás)
megoldást. Az ALTQ lehetõvé
teszi a sávszélesség
korlátozását a szolgáltatás
minõsége (Quality of Service, QoS)
alapján.Az OpenBSD Projekt kiváló munkát
végez a PF felhasználói
útmutatójának
karbantartásával. A kézikönyv ezen
szakasza ezért elsõsorban azzal foglalkozik, hogyan
kell a PF-et &os; alatt használni,
miközben igyekszik egy általános
összefoglalást adni a témáról. A
részletesebb információkkal kapcsolatban
azonban feltétlenül nézzük meg a
felhasználói útmutatót.A
címen olvashatunk többet arról (angolul), hogy
a PF-et hogyan használjunk
&os;-n.A PF rendszermagmodulok használataA PF modul
betöltéséhez a következõ sort kell
felvennünk az /etc/rc.conf
állományba:pf_enable="YES"Ezt követõen futtassuk le a
hozzá tartozó rendszerindító
szkriptet:&prompt.root; /etc/rc.d/pf startA PF modul abban az esetben nem fog
betöltõdni, ha nem találja a szabályokat
tartalmazó konfigurációs
állományt. Ez alapértelmezés
szerint az /etc/pf.conf
állomány. Ha a szabályok
leírása rendszerünkön máshol
található, akkor az
/etc/rc.conf állományban a
következõ módon adhatjuk meg annak pontos
helyét:pf_rules="/elérési/út/pf.conf"A &os; 7.0 kiadással a minta
pf.conf állomány az
/etc
könyvtárból átkerült a
/usr/share/examples/pf
könyvtárba. A &os; 7.0 elõtti
kiadásokban alapértelmezés szerint
található egy pf.conf
állomány az /etc
könyvtárban.A PF modul parancssorból
akár kézzel is betölthetõ:&prompt.root; kldload pf.koA PF mûködésének
naplózását a pflog.ko
teszi lehetõvé, amelyet az alábbi sor
hozzáadásával engedélyezhetünk
az /etc/rc.conf
állományban:pflog_enable="YES"A modul betöltését a
hozzá tartozó rendszerindító szkript
segítségével kérhetjük:&prompt.root; /etc/rc.d/pflog startHa a PF többi
funkcióját is használni szeretnénk,
akkor ehhez egy új rendszermagot kell fordítanunk
PF támogatással.A PF rendszermagbeli
beállításaia rendszermag
beállításaidevice pfa rendszermag
beállításaidevice pfloga rendszermag
beállításaidevice pfsyncNoha egyáltalán nem szükséges
beépítenünk a PF
támogatását a rendszermagba, abban az
esetben mégis szükségünk lehet
rá, amikor a PF olyan komolyabb
lehetõségeit szeretnénk kiaknázni,
amelyek már nem részei a modulnak. Ilyen
például a &man.pfsync.4;, amely a
PF által használt
állapottáblázatok bizonyos
változásainak megjelenítésére
alkalmas pszeudoeszköz. A &man.carp.4;
megoldásával párosítva így
akár hibatûrõ tûzfalak is
kialakíthatóak a PF-fel. A
CARP megoldásáról a
kézikönyvben bõvebb ismertetést a ad.A PF rendszermag
konfigurációs beállításai a
/usr/src/sys/conf/NOTES
állományban találhatóak:device pf
device pflog
device pfsyncA device pf
beállítás engedélyezi a
csomagszûrõ tûzfalat (&man.pf.4;).A device pflog megadásával
keletkezik egy &man.pflog.4; pszeudo hálózati
eszköz, amellyel egy &man.bpf.4; eszközre
érkezõ forgalmat tudunk naplózni.
Ezután a &man.pflogd.8; démon
használható tõle származó
naplózott adatok
rögzítésére.A device pfsync engedélyezi a
&man.pfsync.4; pszeudo hálózati eszköz
létrejöttét, amely az ún.
állapotváltások
megfigyelésére alkalmas.Az rc.conf állományban
elérhetõ beállításokA következõ &man.rc.conf.5;
beállítások aktiválják a
rendszerindítás során a
PF és a &man.pflog.4;
használatát:pf_enable="YES" # a PF engedélyezése (a modul betöltése, ha kell)
pf_rules="/etc/pf.conf" # a pf szabályait tartalmazó állomány
pf_flags="" # a pfctl indításához szükséges további paraméterek
pflog_enable="YES" # a pflogd(8) elindítása
pflog_logfile="/var/log/pflog" # hol tartsa a pflogd az naplóit
pflog_flags="" # a pflogd indításához szükséges paraméterekHa a tûzfalunk mögött egy helyi
hálózat is meghúzódik, akkor az ott
levõ gépek számára valamilyen
módon tudnunk kell továbbítani a csomagokat
vagy címfordítást kell végezni,
így ez is mindenképpen kelleni fog:gateway_enable="YES" # az átjáró funkciók engedélyezéseA szûrési szabályok
megfogalmazásaA PF a beállításait
a &man.pf.conf.5; állomány tárolja (amely
alapértelmezés szerint az
/etc/pf.conf helyen
található), és az ebben
található szabályok alapján
módosítja, dobja el vagy éppen engedi
át a csomagokat. A &os; rendszerünkben ehhez
találhatunk néhány példát a
/usr/share/examples/pf/
könyvtárban. A PF által
használt szabályokról minden
részletre kiterjedõen a PF felhasználói
útmutatójában olvashatunk.A PF felhasználói
útmutatójának
olvasásakor ne feledkezzünk meg róla, hogy
a különbözõ &os; verziók
különbözõ PF
verziókat tartalmaznak. A
&os; 7.X és
késõbbi változatok az OpenBSD 4.1
kiadásában szereplõ PF
változatot tartalmazzák.A &a.pf; remek hely a PF tûzfal
beállításával és
futtatásával kapcsolatos kérdésekre.
A kérdezés elõtt azonban ne felejtsük el
alaposan átnézni az archívumot!A PF használataA PF a &man.pfctl.8;
segítségével vezérelhetõ. Az
alábbiakban ezzel kapcsolatban most összefoglalunk
néhány hasznos parancsot (de ne felejtsük el
megnézni a &man.pfctl.8; man oldalon
található többi lehetõséget
sem):ParancsLeíráspfctl A PF engedélyezésepfctl A PF tiltásapfctl all /etc/pf.confAz összes (címfordítási,
szûrési, állapottartási stb.)
szabály törlése, és az
/etc/pf.conf állomány
újratöltésepfctl [ rules | nat | state ]A szûrési (rules),
címfordítási
(nat) és
állapottartási (state)
információk
lekérdezésepfctl /etc/pf.confAz /etc/pf.conf
állomány ellenõrzése a benne
levõ szabályok betöltése
nélkülAz ALTQ
engedélyezéseAz ALTQ kizárólag csak
úgy használható, ha a
konfigurációs beállításokon
keresztül beépítjük a &os;
rendszermagjába. Az ALTQ
alkalmazását nem minden hálózati
kártya meghajtója támogatja, ezért
ezt a &man.altq.4; man oldalon ellenõrizzük.A következõ rendszermag
konfigurációs beállításokkal
engedélyezhetjük az ALTQ
használatát és bõvíthetjük
azt további lehetõségekkel:options ALTQ
options ALTQ_CBQ # osztályozás alapú besorolás (Class Bases Queuing, CBQ)
options ALTQ_RED # véletlen korai észlelés (Random Early Detection, RED)
options ALTQ_RIO # RED befele/kifele
options ALTQ_HFSC # hiearchikus csomagütemezõ (Hierarchical Packet Scheduler, HFSC)
options ALTQ_PRIQ # prioritásos besorolás (Priority Queuing, PRIQ)
options ALTQ_NOPCC # az SMP esetén kellAz options ALTQ az
ALTQ rendszert engedélyezi.Az options ALTQ_CBQ engedélyezi a
osztályozás alapú besorolást
(Class Based Queuing,
CBQ). A CBQ
használatával a kapcsolatunkhoz tartozó
sávszélességet
különbözõ osztályokra vagy sorokra
tudjuk bontani és a szûrési
szabályoknak megfelelõen osztályozni
segítségükkel a forgalmat.Az options ALTQ_RED a véletlen
korai észlelés (Random Early
Detection, RED)
használatát engedélyezi. A
RED a hálózati forgalomban
keletkezõ torlódások
elkerülésére alkalmas. A
RED ezt a problémát úgy
oldja meg, hogy méri a sorok hosszát és
összeveti a hozzá tartozó minimális
és maximális
küszöbértékekkel. Ha a sor hossza
meghaladja a számára elõírt
maximális értéket, akkor az új
csomagokat eldobja. Nevéhez hûen a
RED az eldobásra ítélt
csomagokat véletlenszerûen választja
ki.Az options ALTQ_RIO engedélyezi a
RED használatát mind a
két irányba, tehát be- és
kifelé.Az options ALTQ_HFSC a pártatlan
hierachikus szolgáltatási görbe alapú
csomagütemezõt (Hierarchical Fair Service
Curve Packet Scheduler, HFSC)
engedélyezi. Vele kapcsolatban a
címen találhatunk bõvebben
olvasnivalót (angolul).Az options ALTQ_PRIQ a prioritásos
besorolást (Priority Queuing,
PRIQ) teszi elérhetõvé. A
PRIQ mindig elsõként a nagyobb
értékû sorban levõ forgalmat
továbbítja.Az options ALTQ_NOPCC az
ALTQ SMP, vagyis
többprocesszoros támogatását adja meg.
Ilyen típusú rendszerekben ez
kötelezõ.Az IPFILTER (IPF) tûzfaltûzfalakIPFILTERAz IPFILTER szerzõje Darren Reed. Az IPFILTER nem
kötõdik egyik rendszerhez sem: ez egy olyan nyílt
forráskódú alkalmazás, amelyet
átírtak &os;, NetBSD, OpenBSD, &sunos;, HP/UX
és &solaris; operációs rendszerekre. Az
IPFILTER karbantartása és támogatása
pillanatnyilag is aktív, folyamatosan jelennek meg
újabb változatai.Az IPFILTER egy rendszermag oldalán
mûködõ tûzfalazási és egy
címfordítási mechanizmusra alapszik, amelyet
felhasználói programokkal tudunk felügyelni
és vezérelni. A tûzfal szabályai az
&man.ipf.8; segédprogrammal
állíthatóak be vagy
törölhetõek. A hálózati
címfordításra vonatkozó
szabályokat az &man.ipnat.1; segédprogrammal
állíthatjuk be vagy törölhetjük. Az
&man.ipfstat.8; segédprogram képes futás
közben statisztikákat készíteni az
IPFILTER rendszermagban elhelyezkedõ részeinek
viselkedésérõl. Az &man.ipmon.8; program pedig
az IPFILTER cselekvéseit képes a
rendszernaplókba feljegyezni.Az IPF eredetileg olyan szabályfeldolgozási
módszer szerint készült, amelyben az
utolsó egyezõ szabály nyer és
csak állapotnélküli szabályokat ismert.
Az idõ múlásával az IPF
részévé vált a quick
opció és a keep state opción
keresztül az állapottartás is, melyek
drámai mértékben
korszerûsítették a szabályok
feldolgozásának elvét. Az IPF hivatalos
dokumentációja csak a régi szabályok
létrehozását és azok
feldolgozásának leírását
tartalmazza. A korszerûsített funkciók csak
kiegészítésképpen jelennek meg,
és az általuk felkínált
elõnyök megértése egy sokkal magasabb
szintû és biztonságosabb tûzfal
megépítését teszik
lehetõvé.A szakaszban szereplõ utasításokban olyan
szabályok szerepelnek, amelyek kihasználják a
quick és keep state
opciókat. Ezek az inkluzív
tûzfalszabályok létrehozásának
alapjai.A régi típusú szabályokról
a
és
címeken olvashatunk (angolul).Az IPF gyakran ismételt kérdései a címen
érhetõek el (angolul).A nyílt forrású IPFILTER
levelezési lista kereshetõ archívumait a
címen találjuk (angolul).Az IPF engedélyezéseIPFILTERengedélyezésAz IPF megtalálható a &os;
alaptelepítésében mint menet közben
külön betölthetõ modul. Ha az
rc.conf állományba
beírjuk a ipfilter_enable="YES" sort,
akkor ez a modul dinamikusan betöltõdik. A
betölthetõ modul alapból naplóz
és a default pass all
beállítást tartalmazza. Ha helyette a
block all szabályt akarjuk
használni, akkor emiatt még nem kell
feltétlenül újrafordítanunk a &os;
rendszermagját, elég ha egyszerûen csak a
szabályrendszerünk végére
beszúrjuk.A rendszermag beállításaia rendszermag
beállításaiIPFILTERa rendszermag
beállításaiIPFILTER_LOGa rendszermag
beállításaiIPFILTER_DEFAULT_BLOCKIPFILTERa rendszermag
beállításaiAz IPF használatához nem kötelezõ a
következõ beállításokkal
újrafordítani a &os; rendszermagját, itt
csupán
háttérinformációként
szerepel. Amikor az IPF a rendszermagba kerül, a
betölhetõ modulra nem lesz szükség.Az IPF a rendszermag forrásai között
található
/usr/src/sys/conf/NOTES
állományban megadott
beállításai a következõ
módon foglalhatóak össze:options IPFILTER
options IPFILTER_LOG
options IPFILTER_DEFAULT_BLOCKAz options IPFILTER engedélyezi az
IPFILTER tûzfal
támogatását.Az options IPFILTER_LOG
hatására az IPF az ipl
csomagnaplózó pszeudo eszközre jegyzi fel a
forgalmat — minden olyan szabály esetén,
ahol megjelenik a log kulcsszó.Az options IPFILTER_DEFAULT_BLOCK
megváltoztatja az alapértelmezett
viselkedést, tehát minden olyan csomag, amely nem
illeszkedik a tûzfal valamelyik pass
típusú (átengedõ)
szabályára, blokkolásra kerül.Ezek a beállítások csak azt
követõen érvényesülnek, ha
fordítottunk és telepítettünk
velük egy új rendszermagot.Az rc.conf állomány
beállításaiAz /etc/rc.conf
állományban a következõ
utasításokra lesz szükségünk az
IPF mûködésbe hozására a rendszer
indítása során:ipfilter_enable="YES" # az ipf tûzfal indítása
ipfilter_rules="/etc/ipf.rules" # betölti a szabályokat tartalmazó szöveges állományt
ipmon_enable="YES" # elindítja az IP monitor naplózását
ipmon_flags="-Ds" # D = indítás démonként
# s = naplózás a syslog használatával
# v = a tcp ablak, ack, seq csomagok naplózása
# n = az IP-címek és portok feloldásaHa olyan helyi hálózat áll meg a
tûzfal mögött, amely egy fenntartott
privát IP-címtartományt használ,
akkor még a következõ
utasításokra is szükségünk lesz a
címfordítás
bekapcsolásához:gateway_enable="YES" # a helyi hálózat átjárója
ipnat_enable="YES" # az ipnat funkció elindítása
ipnat_rules="/etc/ipnat.rules" # az ipnat mûködéséhez szükséges definíciókIPFipfAz &man.ipf.8; parancs használható a
szabályokat tartalmazó állomány
betöltésére. Általában egy
állományba írjuk össze a tûzfal
szabályait és ezzel a paranccsal
cseréljük le egyszerre a tûzfalban levõ
jelenlegi szabályokat:&prompt.root; ipf -Fa -f /etc/ipf.rulesAz az összes belsõ
szabály törlését jelenti.Az jelzi, hogy egy
állományból kell beolvasni a
betöltendõ szabályokat.Ezzel mintegy lehetõségünk van
változtatni a korábban
összeállított szabályainkon, futtatni
a fenti IPF parancsot és ezen keresztül úgy
frissíteni a szabályok friss
másolatával a már mûködõ
tûzfalat, hogy nem is kell újraindítanunk a
rendszert. Ez a módszer igen kényelmes az
új szabályok
kipróbálásához, mivel
bármikor tetszõlegesen
végrehajtható.Az &man.ipf.8; man oldala tartalmazza a parancsnak
megadható további
beállításokat.Az &man.ipf.8; parancs a szabályokat
tároló állományt egy
szabványos szöveges állománynak
tekinti, semmilyen szimbolikus helyettesítést
alkalmazó szkriptet nem fogad el.Lehetõségünk van azonban olyan IPF
szabályokat készíteni, amelyek
kiaknázzák a szkriptek szimbolikus
helyettesítésének lehetõségeit.
Errõl bõvebben lásd .Az IPFSTATipfstatIPFILTERstatisztikaAz &man.ipfstat.8; alapértelmezés szerint a
arra használatos, hogy le tudjuk kérdezni
és megjeleníteni a tûzfalhoz tartozó
számlálók értékeit, amelyek a
legutóbbi indítás vagy az ipf
-Z parancs által kiadott
lenullázásuk óta a bejövõ vagy
kimenõ forgalomból a megadott szabályoknak
megfelelõ csomagok alapján gyûjtenek össze
statisztikákat.A parancs mûködésének
részleteit az &man.ipfstat.8; man oldalon
olvashatjuk.Az &man.ipfstat.8; meghívása alapból
így néz ki:input packets: blocked 99286 passed 1255609 nomatch 14686 counted 0
output packets: blocked 4200 passed 1284345 nomatch 14687 counted 0
input packets logged: blocked 99286 passed 0
output packets logged: blocked 0 passed 0
packets logged: input 0 output 0
log failures: input 3898 output 0
fragment state(in): kept 0 lost 0
fragment state(out): kept 0 lost 0
packet state(in): kept 169364 lost 0
packet state(out): kept 431395 lost 0
ICMP replies: 0 TCP RSTs sent: 0
Result cache hits(in): 1215208 (out): 1098963
IN Pullups succeeded: 2 failed: 0
OUT Pullups succeeded: 0 failed: 0
Fastroute successes: 0 failures: 0
TCP cksum fails(in): 0 (out): 0
Packet log flags set: (0)Az mint bejövõ (inbound), vagy
az mint kimenõ (outbound) forgalomra
vonatkozó paraméterek megadásával a
rendszermagban az adott oldalon jelenleg telepített
és alkalmazott szabályokat kérhetjük
le és jeleníthetjük meg.Az ipfstat -in parancs így a
bejövõ forgalomra vonatkozó belsõ
szabályokat mutatja a szabályok
számával.Az ipfstat -on parancs a kimenõ
forgalmat érintõ belsõ szabályokat
mutatja a szabályok számával.Az eredmény körülbelül ilyen
lesz:@1 pass out on xl0 from any to any
@2 block out on dc0 from any to any
@3 pass out quick on dc0 proto tcp/udp from any to any keep stateAz ipfstat -ih a bejövõ
forgalomhoz tartozó belsõ szabályokat mutatja
és mindegyik elé odaírja, hogy eddig mennyi
csomag illeszkedett rájuk.Az ipfstat -oh ugyanígy a
kimentõ forgalom esetén mutatja a belsõ
szabályokat és mindegyik elõtt
feltünteti, hogy az adott pillanatig mennyi csomag
illeszkedett rájuk.A kimenete nagyjából ilyen lesz:2451423 pass out on xl0 from any to any
354727 block out on dc0 from any to any
430918 pass out quick on dc0 proto tcp/udp from any to any keep stateAz ipfstat parancs talán egyik
legfontosabb funkciója a
kapcsolóval csalható elõ, melynek
hatására a rendszerben aktív
állapotok táblázatát mutatja meg
ugyanúgy, ahogy a &man.top.1; a &os; rendszerben
futó programokat. Amikor a tûzfalunk
támadás alatt áll, ezzel a
funkcióval tudjuk a problémát
beazonosítani, leásni a mélyébe
és látni a támadótól
érkezõ csomagokat. A
kiegészítésképpen megadható
alkapcsolók megadásával
kiválaszthatjuk azt a cél vagy forrás
IP-címet, portot vagy protokollt, amelyet valós
idõben meg akarunk figyelni. Ennek részleteit az
&man.ipfstat.8; man oldalán láthatjuk.Az IPMONipmonIPFILTERnaplózásAz ipmon megfelelõ
mûködéséhez be kell kapcsolnunk a
rendszermag IPFILTER_LOG
beállítását. Ez a parancs
két különbözõ módban
használható. Ha parancsot a
opció nélkül gépeljük be, akkor
ezek közül alapból a natív módot
kapjuk meg.A démon mód abban az esetben hasznos, ha
folyamatosan naplózni akarjuk a rendszerben zajló
eseményeket, majd késõbb ezeket
átnézni. Így képes egymással
együttmûködni a &os; és az IPFILTER. A
&os; beépítve tartalmaz olyan
lehetõséget, aminek révén
magától cseréli a rendszernaplókat.
Ezért ha átküldjük a &man.syslogd.8;
démonnak a naplózandó üzeneteket,
akkor sokkal jobban járunk, mintha egyszerûen csak
mezei állományba naplóznánk. Az
rc.conf alapértelmezései
között az ipmon_flags
beállítás a
kapcsolókat rögzíti:ipmon_flags="-Ds" # D = indítás démonként
# s = naplózás a syslog használatával
# v = a tcp ablak, ack, seq csomagok naplózása
# n = az IP-címek és portok nevének feloldásaEnnek a viselkedésnek az elõnyei minden
bizonnyal egyértelmûek.
Segítségével képesek vagyunk az
esetek megtörténte után
átnézni, hogyan milyen csomagokat dobott el a
rendszer, azok milyen címekrõl érkeztek
és hova szánták. Ez egy komoly fegyver a
támadók lenyomozásában.Hiába engedélyezzük a
naplózást, az IPF
önszántából semmilyen
naplózási szabályt nem fog gyártani.
A tûzfal gazdájának kell eldöntenie,
hogy a szabályokat közül melyiket akarja
naplózni, és így neki kell megadnia a
log kulcsszót ezekben az esetekben.
Normális esetben csak a deny
szabályokat naplózzák.Egyáltalán nem ritka, hogy a
szabályrendszer végén egy
alapértelmezés szerint mindent eldobó
szabály áll, amely naplóz. Ezzel
lehetõségünk nyílik
rögzíteni azokat a csomagokat, amelyek egyetlen
szabályra sem illeszkedtek.Naplózás az IPMON
használatávalA syslogd egy saját
módszert alkalmaz a naplózott adatok
elkülönítésére. Egy
funkciók (facility) és
szintek (level) segítségével
kialakított speciális csoportosítást
alkalmaz. Az IPMON módja
alapértelmezés szerint a local0funkciót használja. Ezen
túl a következõ szinteken
különíthetjük el igényeinknek
megfelelõen a naplózott adatokat:LOG_INFO - az átengedés vagy blokkolás helyett a "log" kulcsszóval ellátott csomagok
LOG_NOTICE - az át is engedett csomagok
LOG_WARNING - a blokkolt csomagok
LOG_ERR - a naplózott csomagok közül azok, amelyek túlságosan kicsik (hibás a fejlécük)Az IPFILTER csak akkor tud naplózni a
/var/log/ipfilter.log
állományba, ha elõtte létrehozzuk. Az
alábbi parancs erre tökéletesen
megfelelõ:&prompt.root; touch /var/log/ipfilter.logA &man.syslogd.8; mûködését az
/etc/syslog.conf állományban
szereplõ definíciók vezérlik. A
syslog.conf állomány
számottevõ mértékben képes
meghatározni azt, ahogy a
syslog az IPF és a
hozzá hasonló alkalmazásoktól kapott
rendszerszintû üzeneteket kezeli.Az /etc/syslog.conf
állományba az alábbi sor kell
felvennünk:local0.* /var/log/ipfilter.logA local0.* megadásával az
összes ilyen típusú üzenet egy
elõre rögzített helyre kerül.Az /etc/syslog.conf
állományban elvégzett
módosításokat úgy
léptethetjük érvénybe, ha
újraindítjuk a
számítógépet vagy az
/etc/rc.d/syslogd reload paranccsal
megkérjük a &man.syslogd.8; démont, hogy
olvassa újra az /etc/syslog.conf
állományt.Az imént létrehozott naplót ne
felejtsük el megadni az
/etc/newsyslog.conf
állományban sem, és akkor ezzel a
cseréjét is megoldjuk.A naplózott üzenetek formátumaAz ipmon által létrehozott
üzenetek whitespace karakterekkel elválasztott
adatmezõkbõl állnak. A következõ
mezõk az összes üzenet esetében
megjelennek:A csomag megérkezésének
dátumaA csomag megérkezésének
idõpontja. ÓÓ:PP:MM.E alakban jelennek
meg az órák, percek, másodpercek
és ezredmásodpercek (ez több
számjegy hosszú is lehet) szerintAzon interfész a neve, ahol a csomag
feldolgozásra került, például
dc0A szabályhoz tartozó csoport és
sorszám, például
@0:17Ezek az ipfstat -in paranccsal
nézhetõek meg.Cselekvés: a p mint átment (passed), b
mint blokkolt (blocked), S mint rövid csomag (short
packet), n mint egyik szabályra sem illeszkedett (not
match), L mint naplózás (log). A
módosítók
megjelenítésének sorrendje: S, p, b, n,
L. A nagybetûs P és B azt jelzi, hogy a
csomagot egy felsõbb szintû
beállítás miatt
naplózták, nem egy szabály
hatására.Címek: ez tulajdonképpen három
mezõt takar: a forrás címet és
portot (melyet egy vesszõ választ el), a ->
jelet és cél címet és portot.
Például: 209.53.17.22,80 ->
198.73.220.17,1722.A PR után a protokoll neve
vagy száma olvasható, például
PR tcp.A len csomaghoz tartozó
fejléc és törzsének teljes
hosszát jelöli, például
len 20 40.Amennyiben a csomag TCP, egy
kötõjellel kezdõdõen további
mezõk is megjelenhetnek a beállított
opcióknak megfelelõ betûk
képében. A betûket és
- beállításaikat az &man.ipmon.8; man
+ beállításaikat az &man.ipf.5; man
oldalán olvashatjuk.Amennyiben a csomag ICMP, a sort két mezõ
zárja, melyek közül az elsõ tartalma
mindig ICMP, és ezt egy perjellel
elválasztva az ICMP üzenet típusa és
altípusa követi. Tehát például
az ICMP 3/3 a nem elérhetõ port
üzenetet hordozza.A szabályok felírása szimbolikus
helyettesítésselAz IPF használatában gyakorlott
felhasználók közül
néhányan képesek olyan
stílusú szabályrendszert
készíteni, ahol szimbolikus
helyettesítést használnak. Ennek az egyik
legnagyobb elõnye az, hogy ilyenkor elég csak a
szimbolikus névhez tartozó értéket
megváltoztatni és amikor a szkript lefut, akkor az
összes rá hivatkozó szabályba ez
kerül be. Szkript lévén a szimbolikus
helyettesítéssel ki tudjuk emelni a gyakran
használt értékeket és
behelyettesíteni ezeket több helyre. Ezt a most
következõ példában
láthatjuk.Az itt alkalmazott felírás kompatibilis az
&man.sh.1;, &man.csh.1; és &man.tcsh.1;
parancsértelmezõkkel.A szimbolikus helyettesítést egy
dollárjellel fejezzük ki:
$.A szimbolikus mezõkben nem szerepel a $
jelölés.A szimbolikus mezõ tartalmát kettõs
idézõjelbe (")
tesszük.Kezdjük így el a szabályok
írását:######### Az IPF szabályait tartalmazó szkript eleje ###########
oif="dc0" # a kimenõ interfész neve
odns="192.0.2.11" # az internet szolgáltató névszerverének IP-címe
myip="192.0.2.7" # a szolgáltatótól kapott statikus IP-címünk
ks="keep state"
fks="flags S keep state"
# Választhatunk, hogy az /etc/ipf.rules állományt ebbõl a szkriptbõl
# hozzuk létre vagy futtathatjuk "magát" a szkriptet.
#
# Egyszerre csak az egyik sort használjuk.
#
# 1) Ezzel gyárhatjuk le az /etc/ipf.rules állományt:
#cat > /etc/ipf.rules << EOF
#
# 2) Ezzel futtathajuk "magát" a szkriptet:
/sbin/ipf -Fa -f - << EOF
# Engedélyezzük a szolgáltató névszerverének elérését.
pass out quick on $oif proto tcp from any to $odns port = 53 $fks
pass out quick on $oif proto udp from any to $odns port = 53 $ks
# Engedélyezzük kifelé a titkosítatlan www funkciót.
pass out quick on $oif proto tcp from $myip to any port = 80 $fks
# Engedélyezzük kifelé a TLS SSL felett üzemelõ titkosított www funkciót.
pass out quick on $oif proto tcp from $myip to any port = 443 $fks
EOF
################## Itt az IPF szkript vége ########################Ennyi lenne. A példában szereplõ
szabályok most nem annyira lényegesek, a
hangsúly most igazából a szimbolikus
helyettesítésen és annak
használatán van. Ha a fenti példát
az /etc/ipf.rules.script
állományba mentjük, akkor ezeket a
szabályokat a következõ paranccsal újra
tudjuk tölteni:&prompt.root; sh /etc/ipf.rules.scriptEgyetlen aprócska gond van a beágyazott
szimbólumokat tartalmazó
állományokkal: az IPF maga nem képes
megérteni a helyettesítéseket, azért
közvetlenül nem olvassa a szkriptet.Ez a szkript két módon
hasznosítható:Vegyük ki megjegyzésbõl a
cat paranccsal kezdõdõ sort,
és tegyük megjegyzésbe az
/sbin/ipf kezdetût. A megszokottak
szerint tegyük az
ipfilter_enable="YES" sort az
/etc/rc.conf állományba,
majd minden egyes módosítása
után futtassuk le a szkriptet az
/etc/ipf.rules állomány
létrehozásához vagy
frissítéséhez.Tiltsuk le az IPFILTER aktiválását
a rendszerindításkor, tehát
írjuk bele az ipfilter_enable="NO"
sort (ami mellesleg az alapértelmezett
értéke) az /etc/rc.conf
állományba.Tegyünk egy, az alábbi szkripthez
hasonlót az /usr/local/etc/rc.d/
könyvtárba. A szkriptnek adjuk valamilyen
értelmes nevet, például
ipf.loadrules.sh. Az
.sh kiterjesztés
használata kötelezõ.#!/bin/sh
sh /etc/ipf.rules.scriptA szkript engedélyeit állítsuk be
úgy, hogy a root
tulajdonában legyen és képes legyen
olvasni, írni valamint végrehajtani.&prompt.root; chmod 700 /usr/local/etc/rc.d/ipf.loadrules.shMost miután a rendszer elindult, az IPF
szabályai be fognak töltõdni.Szabályrendszerek az IPF-benAz IPF esetében a szabályrendszer olyan
szabályokból áll, amelyek a
csomagokról tartalmuk alapján eldöntik, hogy
át kell engedni vagy vissza kell tartani. A gépek
közt két irányban áramló
csomagok egy munkamenet alapú társalgást
képeznek. A tûzfalhoz tartozó
szabályrendszer egyaránt feldolgozza a
internetrõl a hálózatunk felé
igyekvõ csomagokat, illetve a hálózatunk
ezekre adott válaszait. Az egyes
TCP/IP szolgáltatásokat (mint
például telnet, www, levelezés stb.) a
hozzájuk tartozó protokol és
szabványos (fogadó) portszám írja
le. Ezekre a forrásról általában
valamilyen nem szabványos (magasabb
értékû) portról érkeznek
csomagok. Ekkor a kommunikáció összes
paramétere (vagyis a portok és címek)
bármelyike alapján definiálhatunk
blokkolást vagy továbbengedést
leíró szabályokat.IPFILTERa szabályok feldolgozásának
sorrendjeAz IPF eredetileg úgy íródott, hogy a
szabályokat az utolsó illeszkedõ
szabály nyer stílusban dolgozza fel
és csak állapot nélküli
szabályokat ismert. Az idõk folyamán az IPF
szabályai kiegészültek a quick
és az állapottartásra vonatkozó
keep state opciókkal, amelynek
köszönhetõen óriási
mértékben korszerûsödött a
szabályok feldolgozása.A szakaszban szereplõ utasítások olyan
szabályokat alkalmaznak, amelyekben egyaránt
szerepel a quick és az
állapottartásért felelõs keep
state beállítás. Ez az
inkluzív tûzfalak
létrehozásának egyik
alapeszköze.A tûzfal szabályainak
összeállítása során
nagyon óvatosnak kell
lennünk! Bizonyos beállítások
hatására akár ki is
zárhatjuk magunkat a
szerverünkrõl. Az ebbõl fakadó
esetleges kellemetlenségek elkerülése
érdekében javasoljuk, hogy a tûzfal
alapjait elõször helyi konzolról
építsük fel, ne pedig
távolról, például
ssh
segítségével.A szabályok felépítéseIPFILTERa szabályok
felépítéseA szabályok felépítésének
bemutatását itt most leszûkítjük
a modern állapottartó szabályokra és
az elsõ illeszkedõ szabály nyer
típusú feldolgozásra. A szabályok
felírásának régebbi módjai az
&man.ipf.8; man oldalon találhatóak.A # karakterrel egy megjegyzés
kezdetét jelezzük, és általában
a sor végén vagy egy külön sorban bukkan
fel. Az üres sorokat a rendszer nem veszi
figyelembe.A szabályok kulcsszavakat tartalmaznak. Ezeknek a
kulcsszavaknak balról jobbra haladva adott sorrendben
kell szerepelniük. A kulcsszavakat kiemeltük. Egyes
kulcsszavakhoz további beállítások
is tartozhatnak, amelyek maguk is kulcsszavak lehetnek,
és még további opciókkal
rendelkezhetnek. Az alábbi nyelvtan mindegyik
elemét kiemeltük és az alábbiakban
egyenként kifejtjük a részleteiket.CSELEKVÉS BE-KI OPCIÓK
SZÛRÉS ÁLLAPOTTARTÓ PROTOKOLL
FORRÁS_CÍM,CÉL_CÍM OBJEKTUM
PORTSZÁM TCP_BEÁLLÍTÁS
ÁLLAPOTTARTÓCSELEKVÉS = block |
passBE-KI = in | outOPCIÓK = log | quick | on
interfészSZÛRÉS = proto
érték |
forrás/cél IP | port =
szám | flags
beállításPROTOKOLL = tcp/udp | udp | tcp |
icmpFORRÁS_CÍM,CÉL_CÍM
= all | from objektum to
objektumOBJEKTUM =
IP-cím | anyPORTSZÁM =
portszámTCP_BEÁLLÍTÁS
= SÁLLAPOTTARTÓ = keep
stateCSELEKVÉSA cselekvés határozza meg, hogy mit kell
tenni azokkal a csomagokkal, amelyek illeszkednek a
szabály többi részére. Minden
szabályhoz tartoznia kell egy
cselekvésnek. A következõ cselekvések
közül választhatunk:A block megadásával a
szabályban szereplõ szûrési
feltételre illeszkedõ csomagot eldobjuk.A pass megadásával a
szabályban szereplõ szûrési
feltételre illeszkedõ csomagot
átengedjük a tûzfalon.BE-KIAz összes szûrési szabály
esetében kötelezõ egyértelmûen
nyilatkozunk arról, hogy a bemenõ vagy a
kimenõ forgalomra vonatkozik. Ezért a
következõ kulcsszó vagy az
in vagy pedig az out, de
közülük egyszerre csak az egyiket szabad
használni, máskülönben a
szabály hibásnak minõsül.Az in jelenti, hogy a szabályt
az internet felõl az adott interfészen
beérkezõ csomagokra kell alkalmazni.Az out jelenti, hogy a szabályt
az internet felé az adott interfészen
kiküldött csomagokra kell alkalmazni.OPCIÓKEzek az opciók csak a lentebb bemutatott
sorrendben használhatók.A log jelzi, hogy illeszkedés
esetén a csomag fejlécét az
ipl eszközön keresztül
naplózni kell (lásd a
naplózásról szóló
szakaszt).A quickjelzi, hogy illeszkedés
esetén ez lesz a legutolsónak
ellenõrzött szabály és így egy
olyan rövidzárat tudunk
képezni a feldolgozásban, amellyel
elkerüljük a csomagra egyébként
vonatkozó többi szabály
illesztését. Ez az opció a
korszerûsített szabályfeldolgozás
kihasználásához elengedhetetlen.Az on használatával a
szûrés feltételei közé
bevonhatjuk a csomaghoz tartozó hálózati
interfészt. Itt az interfészek az
&man.ifconfig.8; által megjelenített
formában adhatóak meg. Az opció
megadásával csak az adott interfészen az
adott irányba (befelé/kifelé)
közlekedõ csomagokra fog illeszkedni a
szabály. Ez az opció a
korszerûsített szabályfeldolgozás
kihasználásához
nélkülözhetetlen.Amikor naplózunk egy csomagot, akkor a
hozzá tartozó fejléc az
IPL csomagnaplózó pszeudo
eszközhöz kerül. A log
kulcsszó után közvetlenül a
következõ minõsítõk szerepelhetnek
(a következõ sorrendben):A body jelzi, hogy a csomag
tartalmának elsõ 128 byte-ját még
jegyezzük fel a fejléc mellé.A first minõsítõt
akkor érdemes használnunk, amikor a
log kulcsszót a keep
state opcióval együtt alkalmazzuk, mivel
ilyenkor csak a szabályt kialakító csomag
kerül naplózásra és nem minden
olyan, ami illeszkedik az állapottartási
feltételekre.SZÛRÉSEbben a szakaszban olyan kulcsszavak jelenhetnek meg,
amelyekkel a csomagok különféle
tulajdonságai alapján
ítélkezhetünk azok
illeszkedésérõl. Itt adott egy
kiinduló kulcsszó, amelyhez további
kulcsszavak is tartoznak, és amelyek közül
csak egyet választhatunk. Az alábbi
általános tulajdonságok alapján
tudjuk szûrni a csomagokat, ebben a sorrendben:PROTOKOLLA proto egy olyan kulcsszó,
amelyhez hozzá kell rendelnünk még
valamelyik opcióját is. Ez az opció
segít az adott protokolloknak megfelelõen
válogatni a csomagok között. A
korszerûsített szabályfeldolgozás
lehetõségeinek
kihasználásához
nélkülözhetetlen.Opcióként a tcp/udp | udp | tcp |
icmp, vagy bármelyik, az
/etc/protocols állományban
megtalálható kulcsszó
felhasználható. A tcp/udp
ebbõl a szempontból speciálisnak
tekinthetõ, mivel hatására egyszerre
illeszthetõek a szabályra a TCP
és UDP csomagok, és
így a protokolltól eltekintve azonos
szabályok felesleges
többszörözését
kerülhetjük el.FORRÁS_CÍM/CÉL_CÍMAz all kulcsszó gyakorlatilag a
from any to any (bárhonnan
bárhova) szinonímája és
nem tartozik hozzá paraméter.A from forrás
to cél
felépítése: a from
és to kulcsszavak az IP-címek
illesztésére használhatóak.
Ilyenkor a szabályokban a forrás
és a cél
paramétereknek is szerepelniük kell. Az
any egy olyan speciális
kulcsszó, amely tetszõleges IP-címre
illeszkedik. Néhány példa az
alkalmazására: from any to
any vagy from 0.0.0.0/0 to any,
from any to 0.0.0.0/0, from
0.0.0.0/0 to any vagy from any to
0.0.0.0.Az IP-címek megadhatóak pontozott numerikus
formában a hálózati maszk bitekben
mért hosszával együtt, vagy akár
egyetlen pontozott numerikus IP-címként.Nincs lehetõség olyan
IP-címtartományok illesztésére,
amelyek nem adhatóak meg kényelmesen ponttal
elválasztott számok és maszk
hosszával. A net-mgmt/ipcalc port az ilyen
számításokat könnyíti meg. A
hálózati maszkok hosszának
megállapításban segíthet az
említett segédprogram (angol nyelvû)
honlapja: .PORTAmikor portra vonatkozó illeszkedést
írunk elõ, megadhatjuk a forrásra és
célra, amit aztán vagy csak
TCP vagy pedig csak UDP
csomagokra alkalmazunk. A portok feltételeinek
megfogalmazásánál használhatjuk a
portok számát vagy az
/etc/services állományban
szereplõ nevüket. Amikor a port egy
from típusú objektum
leírásában jelenik meg, akkor
automatikusan a forrásportot jelenti, míg a
to objektum leírásában
pedig a célportot. A to
objektumoknál a port megadása elengedhetetlen a
korszerûsített szabályfeldolgozás
elõnyeinek kihasználásához.
Példa: from any to any port =
80.Az egyes portokat különbözõ
mûveletek segítségével, numerikusan
hasonlíthatjuk össze, ahol akár
porttartományt is megadhatunk.port "=" | "!=" | "<" | ">" | "<=" | ">=" |
"eq" | "ne" | "lt" | "gt" | "le" | "ge".A porttartományok megadásához
használjuk a port "<>" |
"><" felírási módot.A forrásra és célra
vonatkozó paraméterek után
szereplõ másik két paraméter
nélkülözhetetlen a
korszerûsített szabályfeldolgozás
mûködéséhez.TCP_BEÁLLÍTÁSA beállítások csak a
TCP forgalom
szûrésénél
érvényesülnek. A betûk jelölik
azokat a lehetséges beállításokat,
amelyek a TCP csomagok
fejlécében
megvizsgálhatóak.A korszerûsített
szabályfeldolgozás a flags S
paraméter segítségével ismeri fel
a TCP munkameneteket
kezdeményezõ kéréseket.ÁLLAPOTTARTÓA keep state jelzi, hogy a
szabály paramétereinek megfelelõ
bármely csomag aktiválja az
állapottartó szûrés
használatát.Ez a beállítás
feltétlenül szükséges a
korszerûsített szabályfeldolgozás
megfelelõ kihasználásához.Állapottartó csomagszûrésIPFILTERállapottartó
szûrésAz állapottartó szûrés a csomagok
kétirányú áramlását
egy létrejött kapcsolatba sorolja be. Amikor
aktiválódik, az állapottartó
szabály elõre dinamikusan létrehozza a
kétirányú kommunikációban
megforduló csomagokhoz a megfelelõ belsõ
szabályokat. Olyan vizsgálatokat végez,
amelyek segítségével ki tudja
deríteni, hogy a csomag küldõje és
címzettje között fennálló
kétirányú kapcsolat érvényes
szabályok szerint zajlik-e. Minden olyan csomagot, amely
nem illeszkedik megfelelõen a kapcsolatra vonatkozó
sémára, csalásnak tekintjük és
automatikusan eldobjuk.Az állapottartás révén
lehetõségünk van a TCP vagy
UDP kapcsolatokhoz tartozó
ICMP csomagokat is átengedni a
tûzfalon. Tehát ha kapunk egy 3-as
típusú, 4-es kódú
ICMP választ valamilyen
böngészésre használt
állapottartó szabályon keresztül
kiküldött kérésre, akkor az
automatikusan bejöhet. Amelyik csomagot az IPF
egyértelmûen képes besorolni az aktív
kapcsolatba, még ha az eltérõ protokollt is
használ, beengedi.Ami ilyenkor történik:Az internethez csatlakozó interfészen
keresztül kifelé haladó csomagokat
elõször egy dinamikus állapottábla
alapján illesztjük, és ha a csomag
illeszkedik az aktív kapcsolatban
következõként várt csomagra, akkor
átmegy a tûzfalon és a dinamikus
állapottáblában frissül a kapcsolat
állapota. Az aktív munkameneten kívül
csomagok pedig egyszerûen a kimenõ
szabályrendszer szerint kerülnek
ellenõrzésre.Hasonlóan az elõzõhöz, az internethez
csatlakozó interfészen keresztül
befelé haladó csomagokat elõször egy
dinamikus állapottábla alapján
illesztjük, és ha a csomag illeszkedik az
aktív kapcsolatban következõként
várt csomagra, akkor átmegy a tûzfalon
és a dinamikus állapottáblában
frissül a kapcsolat állapota. Az aktív
munkamenethez nem tartozó csomagok pedig egyszerûen
a bejövõ szabályrendszer szerint kerülnek
ellenõrzésre.Amikor egy kapcsolat befejezõdik, automatikusan
törlõdik a dinamikus
állapottáblából.Az állapottartó csomagszûrés
használatával az újonnan keletkezõ
kapcsolatok elutasítására vagy
engedélyezésére tudunk koncentrálni.
Ha engedélyeztük egy új kapcsolat
létrejöttét, akkor a
rákövetkezõ összes többi csomag
automatikusan átmegy a tûzfalon és minden
más hamis csomag eldobódik. Ha tiltjuk az
új kapcsolatot, akkor egyetlen
rákövetkezõ csomag sem juthat át. Az
állapottartó szûrés által
felkínált fejlett elemzési
lehetõségek képesek védelmet
nyújtani a behatolók részérõl
alkalmazott megannyi különbözõ
támadási módszer ellen.Példa inkluzív
szabályrendszerreA most következõ szabályrendszer arra mutat
példát, hogyan programozzunk le egy nagyon
biztonságos inkluzív tûzfalat. Az
inkluzív tûzfalak csak a szabályainak
megfelelõ szolgáltatásokat engedik
keresztül, és alapértelmezés szerint
minden mást blokkolnak. Egy hálózat
gépeit védõ tûzfalnak, amelyet gyakran
hálózati tûzfalnak (network
firewall) is neveznek, legalább két
hálózati interfésszel kell rendelkeznie.
Ezeket az interfészeket általában
úgy állítják be, hogy
tökéletesen megbíznak az egyik oldalban (a
helyi hálózatban), a másikban (az
internetben) pedig egyáltalán nem. A
tûzfalat egyébként úgy is
beállíthatjuk, hogy csak a tûzfalat
mûködtetõ gépet védje — ezt
egyrendszeres tûzfalnak (host based
firewall) nevezik. Az ilyen típusú
megoldásokat nem biztonságos
hálózaton keresztül kommunikáló
szervereknél alkalmaznak.Mindegyik &unix;-típusú rendszert,
köztük a &os;-t is úgy
alakították ki, hogy az operációs
rendszeren belüli kommunikáció az
lo0 interfészen és a
127.0.0.1 IP-címen
keresztül történik. A tûzfal
szabályai között feltétlenül
szerepelniük kell olyanoknak, amelyek lehetõvé
teszik ezen a speciális intefészen a csomagok
zavartalan mozgását.Az internetre csatlakozó interfészhez kell
rendelni a kifelé és befelé haladó
forgalom hitelesítését é a
hozzáférésének
vezérlését. Ez lehet a
felhasználói PPP által létrehozott
tun0 interfész vagy a DSL-,
illetve kábelmodemhez csatlakozó
hálózati kártya.Ahol egy vagy több hálózati kártya
is csatlakozik több különbözõ helyi
hálózathoz, úgy kell
beállítani a hozzájuk tartozó
interfészeket, hogy egymás felé és
az internet felé képesek legyenek küldeni
és fogadni.A szabályokat elõször három nagy
csoportba kell szerveznünk: elõször jönnek a
megbízható interfészek, ezeket követik
az internet felé mutató interfészek,
végül internet felõl jövõ, nem
megbízható interfészeke.Az egyes csoportokban szereplõ szabályokat
úgy kell megadni, hogy közülük elõre
kerüljenek a leggyakrabban alkalmazottak, és a
csoport utolsó szabálya blokkoljon és
naplózzon minden csomagot az adott interfészen
és irányban.A kimenõ forgalomat vezérlõ
szabályrendszer csak pass
(tehát átengedõ) szabályokat
tartalmazhat, amelyek bentrõl az interneten
elérhetõ szolgáltatásokat
azonosítják egyértelmûen. Az
összes ilyen szabályban meg kell jelenni a
quick, on,
proto, port és
keep state
beállításoknak. A proto
tcp szabályok esetében meg kell adni a
flag opciót is, amivel fel tudjuk
ismertetni a kapcsolatok keletkezését és
ezen keresztül aktiválni az
állapottartást.A bejövõ forgalmat vezérlõ
szabályrendszerben elõször az eldobni
kívánt csomagokat kell megadni, aminek két
eltérõ oka van. Elõször is
elõfordulhat, hogy a veszélyes csomagok
részleges illeszkedés miatt szabályosnak
tûnnek. Az ilyen csomagokat értelemszerûen nem
lenne szabad beengedni a szabályok részleges
megfelelése alapján. A másodszor az eleve
ismerten problémás és értelmetlen
csomagokat csendben el kellene vetni, mielõtt a szakaszhoz
tartozó utolsó szabály fogná meg
és naplózná. Ez az utolsó
szabály egyébként szükség
esetén felhasználható a
támadók elleni bizonyítékok
begyûjtésére.A másik, amire még oda kell figyelnünk,
hogy a blokkolt csomagok esetében semmilyen válasz
nem keletkezzen, egyszerûen csak tûnjenek el.
Így a támadó nem fogja tudni, hogy a
csomagjai vajon elérték-e a rendszerünket.
Minél kevesebb információt tudnak
összegyûjteni a rendszerünkrõl a
támadók, annál több idõt kell
szánniuk csínytevéseik
kieszelésére. A log first
opciót tartalmazó szabályok csak az
illeszkedésnél fogják naplózni a
hozzájuk tartozó eseményt. Erre
láthatunk példát az nmap OS
fingerprint szabálynál. Az security/nmap segédprogramot
a támadók gyakran alkalmazzák a
megtámadni kívánt szerver
operációs rendszerének
felderítésére.Minden log first opcióval megadott
szabály illeszkedésénél a
ipfstat -hio parancs
meghatározódik az eddigi illeszkedések
aktuális száma. Nagyobb értékek
esetében következtethetünk arra, hogy a
rendszerünket megtámadták (vagyis csomagokkal
árasztják éppen el).Az ismeretlen portszámok
felderítésére az
/etc/services állomány,
esetleg a
(angol nyelvû) honlap használható.Érdemes továbbá megnézni a
trójai programok által használt portokat a
címen (angolul).A következõ szabályrendszer egy olyan
biztonságos inkluzív
típusú tûzfal, amelyet éles rendszeren
is használnak. Ezt a rendszerünkön nem
használt szolgáltatásokra vonatkozó
pass szabályok
törlésével könnyedén a
saját igényeink szerint
alakíthatjuk.Ha nem akarunk látni bizonyos üzeneteket, akkor
vegyünk fel hozzájuk egy block
típusú szabályt a befelé
irányuló forgalomhoz tartozó
szabályok közé.A szabályokban írjuk át a
dc0 interfész nevét annak
a hálózati kártyának az
interfészére, amelyen keresztül csatlakozunk
az internethez. A felhasználói PPP
esetében ez a tun0 lesz.Tehát a következõket kell beírni az
/etc/ipf.rules
állományba:#################################################################
# A helyi hálózatunkon zajló forgalmat ne korlátozzuk.
# Csak akkor kell, ha helyi hálózathoz is csatlakozunk.
#################################################################
#pass out quick on xl0 all
#pass in quick on xl0 all
#################################################################
# A belsõ interfészen szintén ne korlátozzunk semmit.
#################################################################
pass in quick on lo0 all
pass out quick on lo0 all
#################################################################
# Az internet felé forgalmazó interfész (kimenõ kapcsolatok)
# A saját hálózatunkról belülrõl vagy errõl az átjáróról
# kezdeményezett kapcsolatokat vizsgáljuk az internet felé.
#################################################################
# Engedélyezzük az internet szolgáltatók névszerverének elérését,
# az "xxx" helyett a névszervet IP-címét kell megadni.
# Másoljuk le ezeket a sorokat, ha a szolgáltatónknak több
# névszerverét is beakarjuk állítani. A címeiket az /etc/resolv.conf
# állományban találjuk.
pass out quick on dc0 proto tcp from any to xxx port = 53 flags S keep state
pass out quick on dc0 proto udp from any to xxx port = 53 keep state
# DSL vagy kábeles hálózatoknál engedélyezzük a
# szolgáltatónk DHCP szerverének elérését.
# Ez a szabály nem kell, ha "felhasználói PPP"-vel
# kapcsolódunk az internethez, ilyenkor tehát az egész
# csoport törölhetõ.
# Használjuk az alábbi szabályt és keressük meg a naplóban az
# IP-címet. Ha megtaláltuk, akkor tegyük bele a megjegyzésben
# szereplõ szabályba és töröljük az elsõ szabályt.
pass out log quick on dc0 proto udp from any to any port = 67 keep state
#pass out quick on dc0 proto udp from any to z.z.z.z port = 67 keep state
# Kifelé engedélyezzük a szabványos nem biztonságos WWW funkciókat.
pass out quick on dc0 proto tcp from any to any port = 80 flags S keep state
# Kifelé engedélyezzük a biztonságos WWW funkciókat TLS SSL
# protokollal.
pass out quick on dc0 proto tcp from any to any port = 443 flags S keep state
# Kifelé engedélyezzük az e-mailek küldését és fogadását.
pass out quick on dc0 proto tcp from any to any port = 110 flags S keep state
pass out quick on dc0 proto tcp from any to any port = 25 flags S keep state
# Kifelé engedélyezzük az idõ szolgáltatást.
pass out quick on dc0 proto tcp from any to any port = 37 flags S keep state
# Kifelé engedélyezzük az nntp híreket.
pass out quick on dc0 proto tcp from any to any port = 119 flags S keep state
# Kifelé engedélyezzük az átjáróról és a helyi hálózatról a nem
# biztonságos FTP használatát (passzív és akív módokban is). Ez a
# funkció a mûködéséhez a nat szabályokat tartalmazó állományban
# hivatkozott FTP proxyt használja. Amennyiben a pkg_add paranccsal
# csomagokat akarunk telepíteni az átjáróra, erre a szabályra
# mindenképpen szükségünk lesz.
pass out quick on dc0 proto tcp from any to any port = 21 flags S keep state
# Kifelé engedélyezzük az ssh/sftp/scp # (biztonságos telnet/rlogin/FTP)
# szolgáltatások # elérését az SSH (secure shell) használatával.
pass out quick on dc0 proto tcp from any to any port = 22 flags S keep state
# Kifelé engedélyezzük a nem biztonságos telnet elérését.
pass out quick on dc0 proto tcp from any to any port = 23 flags S keep state
# Kifelé engedélyezzük FreeBSD CVSUp funkcióját.
pass out quick on dc0 proto tcp from any to any port = 5999 flags S keep state
# Kifelé engedélyezzük a pinget.
pass out quick on dc0 proto icmp from any to any icmp-type 8 keep state
# Kifelé engedélyezzük a helyi hálózatról érkezõ whois kéréseket.
pass out quick on dc0 proto tcp from any to any port = 43 flags S keep state
# Minden mást eldobunk és naplózzuk az elsõ elõfordulásukat.
# Ez a szabály blokkol alapértelmezés szerint mindent.
block out log first quick on dc0 all
#################################################################
# Az internet felõli interfész (bejövõ kapcsolatok)
# A saját hálózatunk felé vagy erre az átjáróra
# nyitott kapcsolatokat vizsgáljuk az internet felõl.
#################################################################
# Eldobjuk az összes olyan bejövõ forgalmat, amit hivatalosan nem
# lehetne továbbítani vagy fenntartott címterülethez tartozik.
block in quick on dc0 from 192.168.0.0/16 to any #RFC 1918: privát IP
block in quick on dc0 from 172.16.0.0/12 to any #RFC 1918: privát IP
block in quick on dc0 from 10.0.0.0/8 to any #RFC 1918: privát IP
block in quick on dc0 from 127.0.0.0/8 to any #helyi
block in quick on dc0 from 0.0.0.0/8 to any #helyi
block in quick on dc0 from 169.254.0.0/16 to any #DHCP
block in quick on dc0 from 192.0.2.0/24 to any #dokumentációs célokra fenntartva
block in quick on dc0 from 204.152.64.0/23 to any #Sun klaszterek összekötésére használt
block in quick on dc0 from 224.0.0.0/3 to any #D és E osztályú multicast
##### Itt eldobunk egy rakás csúf dolgot ############
# Ezeket nem akarjuk a naplóban látni:
# Eldobjuk a töredékcsomagokat.
block in quick on dc0 all with frags
# Eldobjuk a túlságosan rövid TCP csomagokat.
block in quick on dc0 proto tcp all with short
# Eldobjuk a forrás által közvetített (source routed) csomagokat.
block in quick on dc0 all with opt lsrr
block in quick on dc0 all with opt ssrr
# Elutasítjuk az "OS fingerprint" kéréseket.
# Naplózzuk az elsõ elõfordulást, így nálunk lesz a kíváncsiskodó
# egyén IP-címe.
block in log first quick on dc0 proto tcp from any to any flags FUP
# Eldobunk mindent, aminek speciális beállításai vannak.
block in quick on dc0 all with ipopts
# Elutasítjuk a publikus pinget.
block in quick on dc0 proto icmp all icmp-type 8
# Elutasítjuk az ident kéréseket.
block in quick on dc0 proto tcp from any to any port = 113
# Blokkoljuk az összes Netbios szolgáltatást: 137=név, 138=datagram,
# 139=session. A Netbios az MS Windows megosztását implementálja.
# Blokkoljuk az MS Windows hosts2 névszerver kéréseit is a 81-es
# porton.
block in log first quick on dc0 proto tcp/udp from any to any port = 137
block in log first quick on dc0 proto tcp/udp from any to any port = 138
block in log first quick on dc0 proto tcp/udp from any to any port = 139
block in log first quick on dc0 proto tcp/udp from any to any port = 81
# Engedélyezzük a szolgáltatónk DHCP szerverétõl érkezõ forgalmat.
# Ebben a szabályban meg kell adnunk a szolgáltató DHCP szerverének
# IP-címét, mivel itt csak a hiteles forrásból fogadunk el csomagokat.
# Erre csak DSL- és kábelmodemes kapcsolat esetében van szükség, a
# "felhasználói PPP" alkalmazása során szükségtelen. Ez az IP-cím
# megegyezik a kimenõ kapcsolatoknál megadott címmel.
pass in quick on dc0 proto udp from z.z.z.z to any port = 68 keep state
# Befelé engedélyezzük a szabványos WWW funkciót, mivel webszerverünk
# van.
pass in quick on dc0 proto tcp from any to any port = 80 flags S keep state
# Befelé engedélyezzük az internetrõl érkezõ nem biztonságos telnet
# kapcsolatokat. Azért nem biztonságos, mert az azonosítókat és
# jelszavakat titkosítatlan formában közli az interneten keresztül.
# Töröljük ezt a szabályt, ha nem használunk telnet szervert.
#pass in quick on dc0 proto tcp from any to any port = 23 flags S keep state
# Befelé engedélyezzük az internetrõl # érkezõ ssh/sftp/scp (biztonságos
# telnet/rlogin/FTP) # kapcsolatokat az SSH (secure shell) használatával.
pass in quick on dc0 proto tcp from any to any port = 22 flags S keep state
# Minden mást dobjuk el és naplózzuk az elsõ elõfordulásukat.
# Az elsõ alkalom naplózásával elejét tudjuk venni a "Denial of
# Service" típusú támadásoknak, amivel egyébként lehetséges lenne a
# napló elárasztása.
# Ez a szabály blokkol alapértelmezés szerint mindent.
block in log first quick on dc0 all
################### Itt van a szabályok vége ##############################NATNATIP maszkolásNAThálózati
címfordításNATA NAT jelentése Network
Address Translation, vagyis hálózati
címfordítás. A &linux; esetében ezt
IP masqueradingnak, vagyis IP maszkolásnak
hívják. A hálózati
címfordítás és az IP
maszkolás lényegben ugyanazt takarja. Az IPF
címfordításért felelõs
funkciójának köszönhetõen
képesek vagyunk a tûzfal mögött
elhelyezkedõ helyi hálózat
számára megosztani az
internet-szolgáltatól kapott publikus
IP-címet.Sokakban felmerülhet a kérdés, hogy erre
vajon mi szükségünk lehet. Az
internet-szolgáltatók a
magánszemélyeknek általában
dinamikus IP-címeket osztanak ki. A dinamikus itt arra
utal, hogy a címünk minden alkalommal
változik, amikor betárcsázunk a
szolgáltatóhoz vagy amikor ki- és
bekapcsoljuk a modemünket. Ez a dinamikus IP-cím
fog azonosítani minket az interneten.Most tegyük fel, hogy öt gépünk van
otthon, viszont csak egyetlen elõfizetéssel
rendelkezünk. Ebben az esetben öt telefonvonalat
kellene használnunk és mindegyik géphez
elõfizetni az internetre.A hálózati címfordítás
alkalmazásával azonban mindössze egyetlen
elõfizetés kell. A gépek közül
négyet hozzákötünk egy switch-hez
és a switch-et pedig a fennmaradó géphez,
amelyen &os; fut. Ez utóbbi lesz az így
kialakított helyi hálózatunk
átjárója. A tûzfalban
mûködõ címfordítás
segítségével a helyi
hálózaton található gépek
IP-címeit észrevétlenül át
tudjuk fordítani a hálózatunk publikus
IP-címére, ahogy a csomagok elhagyják az
átjárót. A beérkezõ csomagok
esetében mindez visszafelé történik
meg.Az IP-címek közül adott egy
tartomány, amit a címfordítást
használó helyi hálózatok
részére tartanak fenn. Az RFC 1918 szerint
az alábbi IP-címtartományok
használhatók a helyi hálózatban,
mivel ezeken keresztül közvetlenül sosem lehet
kijutni az internetre:Kezdõ IP: 10.0.0.0-Záró IP: 10.255.255.255Kezdõ IP: 172.16.0.0-Záró IP: 172.31.255.255Kezdõ IP: 192.168.0.0-Záró IP: 192.168.255.255IPNATNATIPFILTERipnatA címfordításra vonatkozó
szabályokat az ipnat paranccsal tudjuk
betölteni. Az ilyen típusú
szabályokat általában az
/etc/ipnat.rules állományban
találjuk. A részleteket lásd az
&man.ipnat.1; man oldalán.Amikor a címfordítás üzembe
helyezése után meg akarjuk változtatni a
címfordítás szabályait,
elõször a címfordítás
szabályait tartalmazó állományt
módosítsuk, majd a belsõ
címfordítási szabályok és a
címfordítási táblázatban
szereplõ aktív bejegyzések
törléséhez futassuk le az
ipnat parancsot a
beállítással.A címfordítási szabályok
újratöltését egy ehhez hasonló
paranccsal tudjuk elvégezni:&prompt.root; ipnat -CF -f /etc/ipnat.szabályokA címfordításhoz tartozó
statisztikákat ezzel a paranccsal tudjuk
lekérdezni:&prompt.root; ipnat -sA címfordítási
táblázatban pillanatnyilag szereplõ
összerendeléseket a következõ paranccsal
tudjuk listázni:&prompt.root; ipnat -lA szabályok feldolgozásával és
az aktív szabályokkal/bejegyzésekkel
kapcsolatos információk
részletezését így
engedélyezhetjük:&prompt.root; ipnat -vA címfordítási
szabályokA címfordítási szabályok nagyon
rugalmasak és rengeteg olyan funkciót meg tudunk
velük valósítani, ami az üzleti
és otthoni felhasználók
számára egyaránt hasznos.Itt most a szabályok
felépítését csak
egyszerûsítve mutatjuk be, leginkább a nem
üzleti környezetek tekintetében. A
szabályok komplett formai leírását
az &man.ipnat.5; man oldalán találjuk.Egy címfordítási szabály
tehát valahogy így néz ki:map INTERFÉSZHELYI_IP_TARTOMÁNY -> PUBLIKUS_CÍMA szabályt a map kulcsszó
kezdi.A INTERFÉSZ helyére
az internet felé mutató külsõ
interfész nevét írjuk be.A HELYI_IP_TARTOMÁNY lesz
az, amelyben a kliensek címeznek. Ez
például a 192.168.1.0/24.A PUBLIKUS_CÍM lehet egy
külsõ IP-cím vagy a 0/32
speciális kulcsszó, amellyel a
FELÜLET-hez rendelt
IP-címre hivatkozunk.Hogyan mûködik a hálózati
címfordításA publikus cél felé haladó csomag
megérkezik a helyi hálózatról.
Miután a kimenõ kapcsolatokra vonatkozó
szabályok átengedik, a
címfordítás kapja meg a szerepet és
fentrõl lefelé haladva nekilát alkalmazni a
saját szabályait, ahol az elsõ egyezõ
szerint cselekszik. A címfordítás a
szabályokat a csomaghoz tartozó interfészre
és a forrás IP-címére illeszti.
Amikor a csomag interfészének neve illeszkedik egy
címfordítási szabályra, akkor
ezután a csomag forrás (vagyis a helyi
hálózaton belüli)
IP-címérõl igyekszik eldönteni, hogy a
szabály nyilának bal oldalán szereplõ
tartományba esik-e. Ha erre is illeszkedik, akkor a
forrás IP-címét átírjuk a
0/32 kulcsszó alapján
felderített publikus IP-címre. A
címfordító rutin ezt feljegyzi a
saját belsõ táblázatába,
így amikor a csomag visszatér az internetrõl,
akkor képes lesz visszafordítani az eredeti
belsõ IP-címére és
feldolgozásra átadni a tûzfal
szabályainak.A címfordítás
engedélyezéseA címfordítás életre
keltéséhez a következõket kell
beállítanunk az /etc/rc.conf
állományban.Elõször engedélyezzük a
gépünknek, hogy közvetítsen forgalmat az
interfészek között:gateway_enable="YES"Minden alkalommal indítsuk el a
címfordításért felelõs IPNAT
programot:ipnat_enable="YES"Adjuk meg az IPNAT számára a
betöltendõ szabályokat:ipnat_rules="/etc/ipnat.rules"Hálózati címfordítás
nagyon nagy helyi hálózatok
esetébenAz olyan helyi hálózatokban, ahol rengeteg PC
található vagy több alhálózatot
is tartalmaz, az összes privát IP-cím
egyetlen publikus IP-címbe
tömörítése igen komoly
problémává tud dagadni és az azonos
portok gyakori használata a helyi hálózatra
kötött számítógépek
között ütközéseket okoz. Két
módon tudunk megoldást nyújtani erre a
problémára.A használható portok
kiosztásaEgy normális címfordítási
szabály valahogy így nézne ki:map dc0 192.168.1.0/24 -> 0/32A fenti szabályban a csomag
forrásportját az IPNAT
változatlanul a feldolgozás után hagyja.
Ha ehhez még hozzátesszük a
portmap kulcsszót, akkor ezzel
utasítani tudjuk az IPNAT-ot, hogy
csak az adott tartományban képezze le a
forrásportokat. Például a
következõ szabály hatására az
IPNAT a forrásportokat egy adott
tartományon belül fogja
módosítani:map dc0 192.168.1.0/24 -> 0/32 portmap tcp/udp 20000:60000Ha viszont még inkább meg akarjuk
könnyíteni a dolgunkat, akkor itt egyszerûen
csak adjuk meg az auto kulcsszót,
amellyel az IPNAT
önmagától megállapítja, hogy
milyen portokat tud használni:map dc0 192.168.1.0/24 -> 0/32 portmap tcp/udp autoTöbb publikus cím használataMinden nagyobb helyi hálózat esetében
elérkezünk ahhoz a ponthoz, ahol már
egyetlen publikus cím nem elég. Ha több
publikus IP-címmel is rendelkezünk, akkor
ezekbõl a címekbõl egy közös
készletet hozhatunk létre, amibõl
majd az IPNAT válogathat miközben a csomagok
címeit átírja kifelé
menetben.Például ahelyett, hogy a csomagokat egyetlen
publikus IP-címre képeznénk le, ahogy itt
tesszük:map dc0 192.168.1.0/24 -> 204.134.75.1A hálózati maszk
segítségével meg tudjuk adni
IP-címek egy tartományát is:map dc0 192.168.1.0/24 -> 204.134.75.0/255.255.255.0CIDR-jelöléssel:map dc0 192.168.1.0/24 -> 204.134.75.0/24A portok átirányításaGyakran elõfordul, hogy van webszerverünk,
levelezõ szerverünk, adatbázis szerverünk
és névszerverünk, melyek a helyi
hálózat különbözõ
gépein futnak. Ebben az esetben a szerverekhez
tartozó forgalmat is fordítanunk kell, illetve
valamilyen módon a bejövõ forgalmat is
át kell irányítanunk a helyi
hálózat megfelelõ gépeihez. Az
IPNAT ezt a gondot a hálózati
címfordítás
átirányítást támogató
funkcióival szünteti meg. Tegyük fel, hogy a
10.0.10.25 belsõ
címen van egy webszerverünk, amelyhez a 20.20.20.5 publikus IP tartozik.
Ilyenkor a következõ szabályt adjuk meg:rdr dc0 20.20.20.5/32 port 80 -> 10.0.10.25 port 80vagy:rdr dc0 0.0.0.0/0 port 80 -> 10.0.10.25 port 80Így tudjuk beállítani a 10.0.10.33 címmel
rendelkezõ névszervert a kintrõl
érkezõ névfeloldási
kérések fogadására:rdr dc0 20.20.20.5/32 port 53 -> 10.0.10.33 port 53 udpAz FTP és a címfordításAz FTP egy olyan õskövület, amely még
az internet egy régi korszakából maradt fenn,
amikor az egyetemek között még bérelt
vonal létezett és az FTP szolgált a
kutatók közt az állományok
megosztására. Ez még abban az idõben
történt, amikor a biztonság
egyáltalán nem volt lényeges szempont. Az
évek elõrehaladtával az FTP protokoll
beleivódott a feltörekvõ internet
gerincébe és a titkosítatlanul
küldött azonosítóival és
jelszavaival továbbra is ugyanolyan védtelen
maradt. Az FTP két változatban, aktív
és passzív módban képes
mûködni. Az eltérés kettejük
között az adatcsatorna
megállapításában van. A
passzív mód sokkal biztonságosabb, mivel
ilyenkor az adatcsatornát az FTP kapcsolatot
kezdeményezõ állítja be. Az FTP
különbözõ módjainak
magyarázatát és a köztük
levõ különbséget a
címen ismerhetjük meg részleteiben
(angolul).Az IPNAT szabályaiAz IPNAT egy speciális beépített FTP
proxyval rendelkezik, amelyre a hálózati
címfordítás leképezései
között hivatkozhatunk. Képes figyelni az
összes aktív vagy passzív FTP kapcsolathoz
tartozó kimenõ kérést és
ezekhez dinamikusan létrehozni olyan ideiglenes
szûrési szabályokat, amelyek valóban
csak az adatcsatornához felhasznált portokat
tartalmazzák. Ezzel ki tudjuk
küszöbölni az FTP azon káros
hatását a tûzfalra nézve, hogy
egyszerre túlságosan sok magasabb
tartománybeli port legyen nyitva.Ez a szabály a belsõ hálózat
összes FTP forgalmát lekezeli:map dc0 10.0.10.0/29 -> 0/32 proxy port 21 ftp/tcpEz a szabály pedig az
átjáróról érkezõ FTP
forgalommal bírkózik meg:map dc0 0.0.0.0/0 -> 0/32 proxy port 21 ftp/tcpEz a szabály kezeli a belsõ
hálózatról érkezõ összes
nem FTP típusú forgalmat:map dc0 10.0.10.0/29 -> 0/32Az FTP leképzésére vonatkozó
szabály a szokásos leképzési
szabály elé kerül. Az összes csomag
fentrõl haladva az elsõ illeszkedõ
szabály alapján kerül feldolgozásra.
Elõször az interfész nevét
vizsgáljuk, majd a belsõ hálózatbeli
forrás IP-t, végül azt, hogy a csomag egy
FTP kapcsolat része. Ha minden
paraméterében megfelel, akkor az FTP proxy
készít egy ideiglenes szûrési
szabályt hozzá, amellyel az FTP kapcsolathoz
tartozó csomagok mind a két irányba
képesek lesznek vándorolni, természetesen
a címfordítással együtt. Az
összes többi bentrõl érkezõ csomag
átlép ezen a szabályon és
megáll a harmadiknál, ahol az
interfésznek és forrás IP-nek
megfelelõen átfordítjuk a
címét.Az IPNAT szûrési szabályai
FTP-reAz FTP esetében csak egyetlen szûrési
szabályra van szükségünk a
hálózati címfordításba
épített FTP proxy
használatához.FTP proxy nélkül az alábbi három
szabály kellene:# Kifelé engedélyezzük a belsõ gépek FTP elérést az internet irányába,
# aktív és passzív módokban.
pass out quick on rl0 proto tcp from any to any port = 21 flags S keep state
# Kifelé engedélyezzük a passzív módhoz tartozó magasabb tartománybeli
# adatcsatornákat.
pass out quick on rl0 proto tcp from any to any port > 1024 flags S keep state
# Aktív módban beengedjük az FTP szervertõl érkezõ adatcsatornát.
pass in quick on rl0 proto tcp from any to any port = 20 flags S keep stateIPFWtûzfalakIPFWAz IPFIREWALL (IPFW) a &os; által
támogatott tûzfalazó alkalmazás, melyet a
&os; Projektben résztvevõ önkéntesek
fejlesztettek ki és tartanak karban. Régi
típusú, állapottartás
nélküli szabályokat használ, és
az itt használatos szabályírási
technikát egyszerû állapottartó
megoldásnak nevezzük.Az IPFW szabvány &os;-ben levõ, mintaként
szolgáló szabályrendszere (ez az
/etc/rc.firewall és
/etc/rc.firewall6 állományokban
található meg) annyira egyszerû, hogy komolyabb
módosítások nélkül nem
ajánlatos használni. Ez a példa nem
tartalmaz állapottartó szûrést, ami
viszont a legtöbb esetben kívánatos lenne,
ezért ezt a szakaszt nem erre alapozzuk.Az IPFW állapottartás nélküli
szabályainak felépítésében
olyan technikailag kifinomult leválogatási
képességek bújnak meg, amelyek
jócskán meghaladják az átlagos
tûzfalépítõk tudását. Az
IPFW elsõsorban olyan szakemberek vagy szakmailag
elõrehaladott felhasználók
számára készült, akiknek
speciális csomagszûrési igényeik vannak.
A különbözõ protokollok
használatának és a hozzájuk
tartozó fejlécinformációk mindenre
kiterjedõ ismerete szinte nélkülözhetetlen
az IPFW valódi erejének
kihasználásához. Ez a szint azonban
túlmutat a kézikönyv ezen szakaszának
keretein.Az IPFW hét komponensbõl épül fel,
melyek közül az elsõdleges a rendszermag
tûzfalazásért felelõs
szabályfeldolgozó és a
hozzá tartozó csomagnyilvántartás, majd
ezt követi a naplózás, a hálózati
címfordítást aktiváló
divert szabály, valamint a komolyabb
célok megvalósítására alkalmas
lehetõségek: a forgalom
korlátozásáért felelõs dummynet,
a továbbküldésre alkalmas fwd
rule szabály, a hálózati hidak
támogatása, illetve az ipstealth. Az IPFW
egyaránt használható IPv4 és IPv6
esetén.Az IPFW engedélyezéseIPFWengedélyezéseAz IPFW az alap &os; telepítésben
külön, futás idõben betölthetõ
modulként érhetõ el. Ha az
rc.conf állományban megadjuk
a firewall_enable="YES"
beállítást, akkor a rendszer
indulásakor ezt a modult dinamikusan betölti. Az
IPFW-t csak akkor kell a &os; rendszermagjába
beépítenünk, ha szükségünk
van a címfordítási
funkciójára is.Ha tehát az rc.conf
állományban megadtuk a
firewall_enable="YES" sort és
újraindítottuk a
számítógépünket, akkor a
következõ fehérrel kiemelt üzenet fog
megjelenni a rendszerindítás során:ipfw2 initialized, divert disabled, rule-based forwarding disabled, default to deny, logging disabledA logging disabled üzenetbõl
kiderül, hogy a modul nem végez
naplózást. A naplózást és a
hozzá tartozó részletesség
szintjét úgy tudjuk beállítani, ha
az /etc/sysctl.conf
állományba felvesszük a következõ
sorokat, amivel a következõ indításkor
már mûködni fog:net.inet.ip.fw.verbose=1
net.inet.ip.fw.verbose_limit=5A rendszermag beállításaia rendszermag
beállításaiIPFIREWALLa rendszermag
beállításaiIPFIREWALL_VERBOSEa rendszermag
beállításaiIPFIREWALL_VERBOSE_LIMITIPFWa rendszermag
beállításaiHa nem akarjuk kihasználni az IPFW által
felkínált címfordítási
lehetõségeket, akkor egyáltalán nem
szükséges a &os; rendszermagjába
belefordítani a támogatását.
Ezért az alábbiakat csak
kiegészítõ
információként tüntettük
fel.options IPFIREWALLEz a beállítás engedélyezi az
IPFW használatát a rendszermag
részeként.options IPFIREWALL_VERBOSEEzzel és a log kulcsszóval
tudjuk az IPFW szabályain keresztülhaladó
csomagokat naplózni.options IPFIREWALL_VERBOSE_LIMIT=5Ez az érték korlátozza a
&man.syslogd.8; segítségével
naplózott azonos bejegyzések maximális
számát. Ezt a beállítást
olyan veszélyes környezetekben érdemes
használnunk, ahol naplózni akarunk.
Segítségével meg tudjuk akadályozni,
hogy a rendszernapló elárasztásával
megakasszák a rendszerünket.a rendszermag
beállításaiIPFIREWALL_DEFAULT_TO_ACCEPToptions IPFIREWALL_DEFAULT_TO_ACCEPTEzen beállítás hatására a
tûzfal alapértelmezés szerint mindent
átenged, ami általában akkor jöhet
jól, amikor elõször beállítjuk a
tûzfalat.a rendszermag
beállításaiIPDIVERToptions IPDIVERTEzzel a beállítással
engedélyezzük a címfordítás
használatát.Ha nem adjuk meg az IPFIREWALL_DEFAULT_TO_ACCEPT
beállítást, vagy ha nem
engedélyezzük a bejövõ csomagokat, akkor
a gépünkre semmilyen csomag nem lesz képes
bejutni, illetve onnan kijutni.Az /etc/rc.conf
beállításaiÍgy tudjuk engedélyezni a
tûzfalat:firewall_enable="YES"A &os;-hez mellékelt alapértelmezett
tûzfaltípusok közül az
/etc/rc.firewall állomány
átolvasásával tudunk választani,
és megadni az alábbi helyett:firewall_type="open"A következõ értékek állnak
rendelkezésünkre:open — átengedi az
összes forgalmatclient — csak ezt a
gépet védisimple — az egész
hálózatot védiclosed — a helyi
interfész kivételével minden IP
alapú forgalmat tiltUNKNOWN — tiltja a tûzfal
szabályainak betöltésétállománynév
— a tûzfal szabályait tartalmazó
állomány abszolút elérési
útvonalaKét különbözõ módon lehet
betölteni a saját ipfw
szabályainkat. Az egyik közülük, ha a
firewall_type változóban
megadjuk a tûzfal szabályait
tartalmazó állomány abszolút
elérési útvonalát, az &man.ipfw.8;
parancssori beállításai nélkül.
Az alábbi példában egy olyan egyszerû
szabályrendszert láthatunk, amely blokkolja az
összes bejövõ és kimenõ
forgalmat:add deny in
add deny outMásrészrõl az
firewall_script változóban is
megadhatjuk azt a szkriptet, amelyben a
rendszerindítás során meghívjuk
ipfw parancsot. Az iménti
szabályrendszert az alábbi szkripttel tudjuk
kiváltani:#!/bin/sh
ipfw -q flush
ipfw add deny in
ipfw add deny outHa a firewall_type
változó client vagy
simple értékét
használjuk, akkor az
/etc/rc.firewall
állományban található
alapértelmezett szabályokat érdemes
átvizsgálnunk, hogy kellõen illeszkednek-e
az adott géphez. Hozzátennénk, hogy a
fejezetben szereplõ példák azt
feltételezik, hogy a firewall_script
értéke az /etc/ipfw.rules
állomány.A naplózás így
engedélyezhetõ:firewall_logging="YES"A firewall_logging
változó egyedül csak annyit tesz, hogy
beállítja a
net.inet.ip.fw.verbose sysctl
változónak az 1
értéket (lásd ). A napló
korlátozására nincs külön
változó az rc.conf
állományon belül, de az
/etc/sysctl.conf állomány
segítségével és manuálisan
be tudjuk állítani a hozzá tartozó
változót:net.inet.ip.fw.verbose_limit=5Amennyiben a gépünk
átjáróként viselkedik, tehát
a &man.natd.8; segítségével
címfordítást végez, a ban olvashatunk utána, hogy ehhez
az /etc/rc.conf állományban
milyen beállításokat kell megadnunk.Az IPFW parancsipfwNormál esetben az ipfw parancs
használatos arra, hogy a tûzfal
mûködése közben az aktív belsõ
szabályai közé vegyünk fel vagy
töröljünk közülük
manuálisan bejegyzéseket. Ennek a
módszernek az egyedüli hátránya, hogy
az így végrehajtott
módosítások el fognak veszni a rendszer
leállításával. Itt inkább
azt a megoldást javasoljuk, hogy az összes
szabályt tegyük bele egy állományba
és a rendszerindítás során ezt
töltsük be, majd ha változtatni akarunk a
tûzfalon, akkor ezt az állományt
módosítsuk és a régiek
törlésével töltsük be újra
az egész szabályrendszert.Az ipfw parancs mellesleg remekül
használható a jelenleg futó
tûzfalszabályok megjelenítésére
a konzolon. Az IPFW nyilvántartásában az
egyes szabályokhoz dinamikusan jönnek létre
számlálók, amelyek a rá
illeszkedõ csomagokat számolják. A
tûzfal tesztelése folyamán a szabályok
és hozzá tartozó
számlálók lekérdezése a
megfelelõ mûködés
ellenõrzésének egyik lehetséges
módja.A szabályokat így tudjuk egymás
után felsoroltatni:&prompt.root; ipfw listA szabályokat így tudjuk az utolsó
illeszkedésük idejével együtt
megjeleníteni:&prompt.root; ipfw -t listA következõ példában a
nyilvántartási információkat
kérdezzük le, ekkor a szabályok mellett az
illeszkedõ csomagok száma is
láthatóvá válik. Az elsõ
sorban a szabály száma szerepel, majd ezt
követi rendre az illeszkedõ kimenõ és
bejövõ csomagok mennyisége, valamint
végül maga a szabály.&prompt.root; ipfw -a listA statikus szabályok mellett a dinamikusakat
így lehet kilistázni:&prompt.root; ipfw -d listA lejárt dinamikus szabályokat is meg tudjuk
nézni:&prompt.root; ipfw -d -e listA számlálók
nullázása:&prompt.root; ipfw zeroCsak a SZÁM
sorszámú szabályhoz tartozó
számlálók nullázása:&prompt.root; ipfw zero SZÁMSzabályrendszerek az IPFW-benAz IPFW esetében a szabályrendszer olyan
szabályokból áll, amelyek a
csomagokról tartalmuk alapján eldöntik, hogy
át kell engedni vagy vissza kell tartani. A gépek
közt két irányban áramló
csomagok egy munkamenet alapú társalgást
képeznek. A tûzfalhoz tartozó
szabályrendszer egyaránt feldolgozza a
internetrõl a hálózatunk felé
igyekvõ csomagokat, illetve a hálózatunk
ezekre adott válaszait. Az egyes
TCP/IP szolgáltatásokat (mint
például telnet, www, levelezés stb.) a
hozzájuk tartozó protokol és
szabványos (fogadó) portszám írja
le. Ezekre a forrásról általában
valamilyen nem szabványos (magasabb
értékû) portról érkeznek
csomagok. Ekkor a kommunikáció összes
paramétere (vagyis a portok és címek)
bármelyike alapján definiálhatunk
blokkolást vagy továbbengedést
leíró szabályokat.IPFWa szabályok feldolgozásának
sorrendjeAmikor egy csomag eléri a tûzfalat, a
szabályrendszer elsõ szabályával
kerül összehasonlításra és
amíg nem illeszkedik valamelyikre, addig lefut rá
a többi szabály is fentrõl lefelé
egyesével, a sorszámuknak megfelelõ
növekvõ sorrendben. Ha a csomag megfelel valamelyik
szabály leválogatási paramétereinek,
akkor a benne megnevezett cselekvés zajlik le, és
számára a feldolgozás befejezõdik.
Ezt a viselkedést neveztük az elsõ
illeszkedés nyer típusú
keresésnek. Amennyiben a csomag egyetlen
szabályra sem illeszkedik, akkor az IPFW 65535-ös
sorszámú állandó szabálya
fogja elcsípni, amely feladata szerint eldobja az
összes hozzá beérkezõ csomagot
anélkül, hogy bármit is válaszolna a
csomag feladójának.A keresés a count,
skipto és tee
szabályok után még
folytatódik.Az itt szereplõ utasítások
különbözõ állapottartásra
vonatkozó opciókat, például a
keep state, limit,
in, out és
via kulcsszavakat tartalmazó
szabályokon alapulnak. Lényegében ezt
tekinthetjük az inkluzív típusú
tûzfalak kiindulási alapjaként.A tûzfal szabályainak
beállítása során nem árt
óvatosnak lennünk, mert
figyelmetlenségünk révén
könnyen kizárathatjuk magunkat a
gépünkrõl.A szabályok
felépítéseIPFWa szabályok
felépítéseAz itt bemutatásra kerülõ
szabályok felépítését csak
olyan mértékig részletezzük, ami
elengedõ a szabványos inkluzív
típusú tûzfalak
kialakításához. A szabályok
felépítésének pontos
leírását az &man.ipfw.8; man
oldalán találhatjuk meg.A szabályok kulcsszavakat tartalmaznak. Ezeket a
kulcsszavakat soronként egy elõre
rögzített sorrendben kell szerepeltetni. A
kulcsszavakat a szövegben kiemeltük. Bizonyos
kulcsszavakhoz további opciókhoz is
tartozhatnak, amelyek gyakran maguk is kulcsszavak és
szintén további opciókat
tartalmazhatnak.A # egy megjegyzés
kezdetét jelzi, mely egyaránt megjelenhet egy
külön sorban, vagy egy szabályt
tartalmazó sor végén. Az üres sorok
nem vesznek részt a feldolgozásban.PARANCS SZABÁLY_SZÁM
CSELEKVÉS NAPLÓZÁS SZÛRÉS
ÁLLAPOTTARTÁSPARANCSMinden új szabály elõttt az
add (mint hozzáadás)
parancsnak kell szerepelni, amellyel a belsõ
táblázatba tudjuk felvenni.SZABÁLY_SZÁMA szabályokhoz mindig tartozik egy sorszám
is.CSELEKVÉSA szabályhoz az alábbi cselekvések
valamelyike kapcsolható, amely akkor hajtódik
végre, amikor a csomag megfelel a
hozzá tartozó szûrési
feltételeknek.allow | accept | pass |
permitA fentiek közül mindegyik ugyanazt jelenti,
vagyis hatásukra az illeszkedõ csomag
kilép a tûzfalból. Ez a szabály
megállítja a keresést.check-stateA csomagot a dinamikus szabályokat
tároló táblázattal veti
össze. Ha itt egyezést talál, akkor
végrehajtja az egyezõ dinamikus
szabályhoz tartozó cselekvést, minden
más esetben továbblép a
következõ szabályra. Ennek a
szabálynak nincs illeszthetõ paramétere.
Ha a szabályrendszerben nem szerepel ilyen, akkor a
dinamikus szabályok vizsgálatát az
elsõ keep-state vagy
limit használatánál
vonja be a rendszer.deny | dropMind a két szó ugyanarra utal, vagyis a
szabályra illeszkedõ csomagokat el kell dobni.
Ebben az esetben a keresés befejezõdik.NAPLÓZÁSlog vagy
logamountAmikor egy csomag egy log
kulcsszót tartalmazó szabályra
illeszkedik, akkor a rendszernaplóban egy üzenet
keletkezik a security (biztonság)
funkción keresztül. A naplóba
ténylegesen csak akkor kerül bele az
üzenet, ha az adott szabály még nem
haladta meg a hozzá tartozó
logamount paraméter
értékét. Ha ezt nem adtuk meg, akkor
az itt érvényes korlát a
net.inet.ip.fw.verbose_limit sysctl
változóból fog származni. A
nulla érték mind a két esetben
megszünteti ezt a korlátozást. Ha
elértük a korlátot, akkor a
naplózást úgy tudjuk újra
engedélyezni, ha töröljük a
naplózáshoz tartozó
számláló értékét,
lásd az ipfw reset log
parancsot.A naplózás mindig az összes
paraméter illeszkedésének
ellenõrzése után történik,
de még a cselekvés (accept, deny)
elvégzése elõtt. Teljesen rajtunk
múlik, hogyan milyen szabályokat
naplózunk.SZÛRÉSEbben a szakaszban azok a kulcsszavak
találhatóak, amelyek
segítségével a csomagok
különbözõ tulajdonságait tudjuk
megvizsgálni és eldönteni, hogy
illeszkedik-e a szabályra vagy sem. A
következõ általános
tulajdonságokat tudjuk megvizsgálni, ebben a
kötött sorrendben:udp | tcp | icmpBármilyen más olyan protokoll is
megadható, amely megtalálható az
/etc/protocols
állományban. Ezzel adjuk a csomaghoz
tartozó protokollt. Használata
kötelezõ.from forrás
to célMind a from és
to kulcsszavak IP-címek
illesztésére alkalmasak. A
szabályoknak tartalmazniuk kell a
forrás ÉS a
cél paramétereket
is. Az any egy olyan kulcsszó,
amely tetszõleges IP-címre illeszkedik. A
me pedig egy olyan speciális
kulcsszó, amely a tûzfalat
mûködtetõ &os;-s gép (tehát ez
a gép) adott interfészhez tartozó
IP-címét jelöli, mint ahogy a
from me to any, from any to
me, from 0.0.0.0/0 to any,
from any to 0.0.0.0/0, from
0.0.0.0 to any, from any to
0.0.0.0 vagy from me to 0.0.0.0
paraméterekben. Az IP-címek numerikus
pontozott formában a hálózati maszk
hosszával együtt (CIDR-jelöléssel),
vagy egyszerûen csak pontozott formában
adhatóak meg. A hálózati maszkok
megállapításában a net-mgmt/ipcalc port lehet
segítségünkre. Errõl bõvebb
információkat a segédprogram
honlapján, a címen
találhatunk (angolul).port
számA portszámokat is ismerõ protokollok
esetében (mint például a
TCP vagy UDP) adhatjuk
meg. Fontos, hogy itt annak a szolgáltatásnak
a portszámát adjuk meg, amelyre a
szabály vonatkozik. A szolgáltatás (az
/etc/services
állományból származó)
nevét is megadhatjuk a port száma
helyett.in | outA beérkezõ valamint a kimenõ csomagokat
adhatjuk meg ezen a módon. Itt az
in és out
kulcsszavak, melyeket kötelezõ megadni a
szabály részeként.via
interfészNév szerint az adott interfészen
keresztül haladó csomagokat tudjuk szûrni.
A via kulcsszó
hatására a használt interfész is
számítani fog a csomag feldolgozása
során.setupEz a kulcsszó a TCP csomagok
esetében a kapcsolatok
felépítésére vonatkozó
kéréseket segít
beazonosítani.keep-stateEz egy kötelezõ kulcsszó.
Feldolgozásakor a tûzfal létrehoz
dinamikus szabályt, amely
alapértelmezés szerint az egyazon protokollt
használó forrás és cél
IP/port párosok közti
kétirányú forgalomra fog automatikusan
illeszkedni.limit
{forráscím |
forrásport |
célcím |
célport}A tûzfal csak N darab, a
szabálynak megfelelõ azonos
paraméterû kapcsolatot fog átengedi. Itt
egy vagy több forrás- és
célcím valamint forrás- és
célport adható meg. A
limit és a
keep-state egy szabályon
belül nem használható. A
limit ugyanazokat az
állapottartó funkciókat
képviseli, mint a keep-state, csak
a saját kiegészítéseivel
megtoldva.ÁLLAPOTTARTÁSIPFWállapottartó
szûrésAz állapottartó szûrés a
kétirányú csomagváltásokat
egy létrejött kapcsolatba sorolja. Olyan
vizsgálatokat végez, amivel képes
megállapítani, hogy a csomag küldõje
és címzettje között kialakult
kommunikáció követ-e valamilyen
kétirányú csomagküldésre
érvényes folyamatot. Az így
felállított sablontól eltérõ
összes csomag hamisnak minõsül és
automatikusan eldobásra kerül.A check-state
segítségével ellenõrizhetjük,
hogy az adott csomag a IPFW szerint megfelel-e valamelyik
dinamikusan leképzett szabálynak. Ha egyezik
valamelyikõjükkel, akkor a csomag a
tûzfalból kilépve folytatja
útját és a kommunikációban
soron következõ csomag számára
létrejön egy másik dinamikus
szabály. Ha nincs egyezés, akkor csomag
feldolgozása a szabályrendszer
következõ szabályánál
folytatódik.A dinamikus szabályokat kezelõ rutin
sebezhetõ, mivel ha egyszerre nagy mennyiségû
SYN csomagot küldünk, akkor olyan sok dinamikus
bejegyzés keletkezik, hogy egyszerûen kifogyunk a
rendelkezésre álló
erõforrásokból. A &os; fejlesztõi
azonban az ilyen természetû
támadások kivédésére is
felkészítették, és
kialakították belõle a
limit opciót.
Alkalmazásával le tudjuk korlátozni az
egyszerre folyó párhuzamos kapcsolatok
számát a forrás vagy a cél a
limit paraméternél megadott
mezõinek és a csomag IP-címe
alapján. Így az adott szabályhoz
és IP-címhez csak elõre
rögzített mennyiségû nyitott
állapotú dinamikus szabály
létezhet egy idõben. Ha ezt a korlátot
átlépjük, a csomag eldobódik.A tûzfal üzeneteinek
naplózásaIPFWnaplózásA naplózás elõnyei
nyilvánvalóak. Ha engedélyezzük,
aktiválása után képesek
leszünk olyan információknak
utánanézni, mint például milyen
csomagokat dobtunk el, honnan érkeztek, hova tartottak.
Ez egy komoly fegyverünk lehet a potenciális
támadókkal szemben.Azonban hiába engedélyezzünk
önmagában a naplózást, attól
az IPFW még saját magától nem fog
naplózást elõíró
szabályokat gyártani. A tûzfal
karbantartóinak maguknak kell eldöntenie, hogy a
szabályrendszerben mely szabályokhoz tartozzon
naplózás, nekik kell felvenni ezekhez a
log kulcsszót.
Általában csak az eldobással
járó deny
típusú szabályokat vagy a
bejövõ ICMP pingeket
szokták naplózni. Gyakran úgy
oldják meg ezt, hogy a szabályrendszer
utolsó szabályaként
lemásolják az ipfw
alapértelmezett mindent eldobunk
szabályát és a naplózást
adják meg benne. Ezen a módon fény
derül azokra a csomagokra, amelyek a
szabályrendszerben semmire sem illeszkedtek.A naplózás azonban egy
kétélû fegyver, mivel ha nem vagyunk
elég körültekintõek, akkor a sok
naplóinformáció között
könnyen el tudunk veszni és a lemezünk is
gyorsan betelhet a mindent elfoglaló
naplóktól. Mellesleg a naplók
megdagasztását célzó DoS
típusú támadás a rendszerek
lebénítására alkalmazott egyik
legõsibb technika. Ezek az üzenetek nem csak a
rendszernaplóba kerülnek bele, hanem az
elsõdleges konzol képernyõjére is
kiíródnak, ami egy idõ után
idegesítõ tud lenni.A rendszermag
IPFIREWALL_VERBOSE_LIMIT=5
beállításával azonban
képesek vagyunk korlátozni azokat a
rendszernapló felé küldött
egymás után következõ üzeneteket,
amelyek ugyanarra a szabályra vonatkoznak. Amikor ezt
a beállítást megadjuk a rendszermag
fordításánál, akkor az egyes
szabályokhoz az általa meghatározott
értéken felül nem jön létre
több hasonló üzenet. Hiszen semmi sem
derül ki 200 teljesen azonos
naplóüzenetbõl. Például, ha az
egyes szabályokhoz legfeljebb öt egymást
követõ üzenetet engedélyezünk,
akkor a többi fennmaradó azonos üzenetet
összeszámolja a rendszer és a
következõ módon közvetíti a
rendszernaplózó szolgáltatás
felé:last message repeated 45 timesAmi magyarul így hangzik:az utolsó üzenet 45 alkalommal ismétlõdött megAz összes csomagokkal kapcsolatos
naplózás alapértelmezés szerint a
/var/log/security
állományba kerül, amelyet az
/etc/syslog.conf állomány
definiál.Szabályokat tartalmazó szkript
készítéseA rutinosabb IPFW felhasználók a
szabályokat egy állományban
programozzák le olyan stílusban, hogy
szkriptként is futtatható legyen. Ennek az
egyik legnagyobb elõnye, hogy a tûzfal
szabályai így egyszerre cserélhetõek
a rendszer újraindítása
nélkül. Ez a módszer nagyon
kényelmes az új szabályok
kipróbálásánál, mivel
tetszõleges alkalommal végrehajthatjuk. Mivel ez
egy szkript, ki tudjuk használni az itt megszokott
szimbolikus helyettesítés által
felkínált lehetõségeket, és
ezzel a gyakran használt értékeket is
egyszerre több szabályban tudjuk
helyettesíteni. Erre a következõkben fogunk
egy konkrét példát látni.A szkript felépítése kompatibilis a
&man.sh.1;, &man.csh.1; és &man.tcsh.1;
parancsértelmezõkkel. A szimbolikus mezõk
helyettesítését a $ vagyis
dollárjel vezeti be. Maguk a szimbolikus mezõk
nem tartalmazzák a $ elõtagot. A
szimbolikus mezõk értékeit "kettõs
idézõjelek" között kell megadni.A szabályok összeírását
kezdjük el így:####### itt kezdõdik az ipfw szabályait tartalmazó szkript ######
#
ipfw -q -f flush # töröljük az összes aktuális szabályt
# Set defaults
oif="tun0" # a kimenõ interfész
odns="192.0.2.11" # az internet szolgáltató névszerverének IP-címe
cmd="ipfw -q add " # a szabályok hozzáadásához szükséges elemek
ks="keep-state" # csupán a lustaság miatt
$cmd 00500 check-state
$cmd 00502 deny all from any to any frag
$cmd 00501 deny tcp from any to any established
$cmd 00600 allow tcp from any to any 80 out via $oif setup $ks
$cmd 00610 allow tcp from any to $odns 53 out via $oif setup $ks
$cmd 00611 allow udp from any to $odns 53 out via $oif $ks
#### itt fejezõdik be az ipfw szabályait tartalmazó szkript ######Ezzel készen is vagyunk. Most ne
törõdjünk a példában
szereplõ szabályokkal, itt most a szimbolikus
helyettesítés használatát
igyekeztük bemutatni.Ha az iménti példát az
/etc/ipfw.rules állományba
mentettük el, akkor az alábbi parancs
kiadásával tudjuk újratölteni a
benne szereplõ szabályokat:&prompt.root; sh /etc/ipfw.rulesAz /etc/ipfw.rules
állományt egyébként
tetszõleges néven hívhatjuk és
bárhová rakhatjuk.Ugyanez természetesen elérhetõ a
következõ parancsok egymás utáni
begépelésével is:&prompt.root; ipfw -q -f flush
&prompt.root; ipfw -q add check-state
&prompt.root; ipfw -q add deny all from any to any frag
&prompt.root; ipfw -q add deny tcp from any to any established
&prompt.root; ipfw -q add allow tcp from any to any 80 out via tun0 setup keep-state
&prompt.root; ipfw -q add allow tcp from any to 192.0.2.11 53 out via tun0 setup keep-state
&prompt.root; ipfw -q add 00611 allow udp from any to 192.0.2.11 53 out via tun0 keep-stateÁllapottartó
szabályrendszerekA most következõ
címfordítás nélküli
szabályrendszer arra mutat példát, hogyan
valósítsunk meg egy biztonságos
inkluzív tûzfalat. Az
inkluzív tûzfalak csak a szabályainak
megfelelõ szolgáltatásokat engedik
át, minden mást alapértelmezés
szerint tiltanak. A komplett hálózati
szegmensek védelmére
összeállított tûzfalaknak
legalább két interfészük van,
amelyek mindegyikéhez tartoznia kell
szabályoknak a megfelelõ
mûködéshez.Az &unix; mintájú operációs
rendszer, köztül a &os; is olyan, hogy a rendszerben
belüli kommunikációt a
lo0 nevû interfészen
és a 127.0.0.1
IP-címen bonyolítja le. A tûzfalban
mindenképpen szerepelniük kell olyan
szabályoknak, amelyek gondoskodnak ezen
speciális belsõ csomagok zavartalan
közlekedésérõl.Az internet felé csatlakozó interfész
lesz az, amelyen keresztül a kifelé menõ
kéréseket hitelesítjük és
vezéreljük az internet
elérését, valamint ahol szûrjük
az internet felõl érkezõ
kéréseket. Ez lehet a PPP
esetében a tun0 eszköz,
vagy a DSL-, illetve kábelmodemhez csatlakozó
hálózati kártya.Abban az esetben, amikor egy vagy több
hálózati kártyával csatlakozunk a
tûzfal mögött található
belsõ helyi hálózatra, szintén
gondoskodnunk kell a helyi hálózaton belül
mozgó csomagok akadálymentes
továbbításáról.A szabályokat elõször három
nagyobb osztályba kell sorolnunk: az összes
szabadon forgalmazó interfész, a publikus
kimenõ és a publikus bejövõ
interfész csoportjába.A publikus interfészekhez tartozó
csoportokban úgy kell rendeznünk a
szabályokat, hogy elõre kerüljenek a
gyakrabban használtak és hátra a
kevésbé használtak, valamint a csoportok
utolsó szabálya blokkoljon és
naplózzon minden csomagot az adott interfészen
és irányban.A következõ szabályrendszerben
szereplõ, a kimenõ kapcsolatokat tartalmazó
csoport csak olyan allow
típusú szabályokat tartalmaz, amelyek
szûrési feltételei egyértelmûen
azonosítják az interneten elérhetõ
szolgáltatásokat. Az összes
szabályban megjelennek a proto,
port,
in/out,
via és keep
state opciók. A proto
tcp szabályokban emellett szerepel még
egy setup opció is, amellyel a
kapcsolatokat kezdeményezõ csomagokat tudjuk
azonosítani és felvenni az
állapottartásért felelõs dinamikus
szabályok közé.A bejövõ forgalmat vezérlõ
szabályrendszerben elõször az eldobni
kívánt csomagokat kell megadni, aminek
két eltérõ oka van. Elõször is
elõfordulhat, hogy a veszélyes csomagok
részleges illeszkedés miatt szabályosnak
tûnnek. Az ilyen csomagokat értelemszerûen
nem lenne szabad beengedni a szabályok részleges
megfelelése alapján. A másodszor az
eleve ismerten problémás és
értelmetlen csomagokat csendben el kellene vetni,
mielõtt a szakaszhoz tartozó utolsó
szabály fogná meg és
naplózná. Ez az utolsó szabály
egyébként szükség esetén
felhasználható a támadók elleni
bizonyítékok
begyûjtésére.A másik, amire még oda kell figyelnünk,
hogy a blokkolt csomagok esetében semmilyen
válasz nem keletkezzen, egyszerûen csak
tûnjenek el. Így a támadó nem fogja
tudni, hogy a csomagjai vajon elérték-e a
rendszerünket. Minél kevesebb
információt tudnak összegyûjteni a
rendszerünkrõl a támadók, annál
biztonságosabbnak tekinthetõ.
Amikor ismeretlen portokra érkezõ csomagokat
naplózunk, érdemes az
/etc/services/ állományban
vagy
címen (angolul) utánanézni a porthoz
tartozó szolgáltatásnak. A
különbözõ trójai programok
által portok számai ezen a linken
érhetõek el (angolul): .Példa egy inkluzív
szabályrendszerreA most következõ,
címfordítást nem tartalmazó
szabályrendszer teljesen inkluzív
típusú. Éles rendszereken is nyugodtan
alkalmazhatjuk. Egyszerûen csak annyit kell
tennünk, hogy megjegyzésbe tesszük az olyan
szolgáltatásokra vonatkozó
szabályokat, amelyeket nem akarunk engedélyezni.
Amikor pedig olyan üzenetek jelennek meg a
naplóban, amelyeket nem akarunk tovább
látni, a bejövõ kapcsolatokhoz vegyünk
fel egy deny típusú
szabályt hozzájuk. Minden szabályban
cseréljük ki a dc0
interfészt arra a hálózati
kártyára, amely közvetlenül
csatlakoztatja rendszerünket az internethez. A
felhasználói PPP
esetében ez a tun0.A szabályok használatában
felfedezhetünk egyfajta
rendszerszerûséget:Mindegyik sorban, ahol az internet felé nyitunk
meg egy kapcsolatot, a keep-state
opciót használjuk.Az internetrõl az összes hitelesített
szolgáltatás elérése
tartalmazza a limit opciót az
elárasztások kivédése
miatt.Az összes szabályban az
in vagy az out
paraméterrel megadjuk szûrni
kívánt forgalom
irányát.Az összes szabályban szerepel a
via paraméterrel a csomagokat
továbbító interfész
neve.Az alábbi szabályokat tegyük az
/etc/ipfw.rules
állományba.############## Itt kezdõdnek az IPFW szabályai ##########################
# Kezdés elõtt töröljük az összes aktív szabályt.
ipfw -q -f flush
# Állítsuk be a parancsok további szükséges opciót.
cmd="ipfw -q add"
pif="dc0" # az internethez csatlakozó
# interfész neve
#################################################################
# A belsõ hálózat számára ne korlátozzunk semmit se.
# Ha nincs helyi hálózatunk, akkor erre nincs szükségünk.
# Az 'xl0' nevét írjuk át a helyi hálózatra csatlakozó
# interfész nevére.
################################################################
#$cmd 00005 allow all from any to any via xl0
################################################################
# A rendszer belsõ interfészét se szûrjük.
################################################################
$cmd 00010 allow all from any to any via lo0
################################################################
# A csomagot engedjük át a tûzfalon, ha korábban már felvettünk
# hozzá egy dinamikus szabályt a keep-state opcióval.
################################################################
$cmd 00015 check-state
################################################################
# Az internet felé forgalmazó interfész (kimenõ kapcsolatok)
# A saját hálózatunkról belülrõl vagy errõl az átjáróról
# kezdeményezett kapcsolatokat vizsgáljuk az internet felé.
################################################################
# Kifelé engedélyezzük az internet-szolgáltatónk névszerverének
# elérését. Az x.x.x.x a szolgáltatónk névszerverének IP-címe
# legyen. Ha a szolgáltatónak több névszervere is van, akkor
# másoljuk le ezeket a sorokat és az /etc/resolv.conf
# állományban található IP-címeket helyettesítsük be.
$cmd 00110 allow tcp from any to x.x.x.x 53 out via $pif setup keep-state
$cmd 00111 allow udp from any to x.x.x.x 53 out via $pif keep-state
# Kábel/DSL konfigurációk esetében kifelé engedélyezzük a
# szolgáltatónk DHCP szerverének elérését. Ha a "felhasználói
# PPP"-t használjuk, akkor erre nem lesz szükségünk, az egész
# csoportot törölhetjük. Az alábbi szabállyal csíphetjük el a
# beírandó IP-címet. Ha a naplóban megtaláltuk, akkor vegyük
# ki az elsõ szabályt, a másodikba írjuk bele a címet és
# engedélyezzük.
$cmd 00120 allow log udp from any to any 67 out via $pif keep-state
#$cmd 00120 allow udp from any to x.x.x.x 67 out via $pif keep-state
# Kifelé engedélyezzük a szabvány nem biztonságos WWW
# funkció elérését.
$cmd 00200 allow tcp from any to any 80 out via $pif setup keep-state
# Kifelé engedélyezzük a biztonságos HTTPS funkció
# elérését TLS SSL használatával.
$cmd 00220 allow tcp from any to any 443 out via $pif setup keep-state
# Kifelé engedélyezzük a e-mailek küldését és fogadását.
$cmd 00230 allow tcp from any to any 25 out via $pif setup keep-state
$cmd 00231 allow tcp from any to any 110 out via $pif setup keep-state
# Kifelé engedélyezzük a FreeBSD (a make install és a CVSUP)
# funkcióit. Ezzel lényegében a rendszeradminisztrátornak
# ,,ISTENI'' jogokat adunk.
$cmd 00240 allow tcp from me to any out via $pif setup keep-state uid root
# Kifelé engedélyezzük a pinget.
$cmd 00250 allow icmp from any to any out via $pif keep-state
# Kifelé engedélyezzük az idõ szolgáltatást.
$cmd 00260 allow tcp from any to any 37 out via $pif setup keep-state
# Kifelé engedélyezzük az nntp news szolgáltatást
# (vagyis a hírcsoportokat)
$cmd 00270 allow tcp from any to any 119 out via $pif setup keep-state
# Kifelé engedélyezzük a biztonságos FTP, telnet és SCP
# elérését az SSH (secure shell) használatával.
$cmd 00280 allow tcp from any to any 22 out via $pif setup keep-state
# Kifelé engedélyezzük a whois szolgáltatást.
$cmd 00290 allow tcp from any to any 43 out via $pif setup keep-state
# Dobjuk el és naplózzunk mindent, ami megpróbál kijutni.
# Ez a szabály gondoskodik róla, hogy alapértelmezés szerint
# mindent blokkoljunk.
$cmd 00299 deny log all from any to any out via $pif
################################################################
# Az internet felõli interfész (bejövõ kapcsolatok)
# A saját hálózatunk felé vagy erre az átjáróra
# nyitott kapcsolatokat vizsgáljuk az internet felõl.
################################################################
# Blokkoljunk minden olyan bejövõ forgalmat, amely a fenntartott
# címtartományok felé tart.
$cmd 00300 deny all from 192.168.0.0/16 to any in via $pif #RFC 1918: privát IP
$cmd 00301 deny all from 172.16.0.0/12 to any in via $pif #RFC 1918: privát IP
$cmd 00302 deny all from 10.0.0.0/8 to any in via $pif #RFC 1918: privát IP
$cmd 00303 deny all from 127.0.0.0/8 to any in via $pif #helyi
$cmd 00304 deny all from 0.0.0.0/8 to any in via $pif #helyi
$cmd 00305 deny all from 169.254.0.0/16 to any in via $pif #DHCP
$cmd 00306 deny all from 192.0.2.0/24 to any in via $pif #dokumentációs célokra fenntartott
$cmd 00307 deny all from 204.152.64.0/23 to any in via $pif #Sun klaszterek összekötésére használt
$cmd 00308 deny all from 224.0.0.0/3 to any in via $pif #D és E osztályú multicast
# A nyilvános pingek tiltása.
$cmd 00310 deny icmp from any to any in via $pif
# Az ident szolgáltatás tiltása.
$cmd 00315 deny tcp from any to any 113 in via $pif
# Blokkoljuk az összes Netbios szolgáltatást: 137=név, 138=datagram,
# 139=session. A Netbios az MS Windows megosztását implementálja.
# Blokkoljuk az MS Windows hosts2 névszerver kéréseit is a 81-es
# porton.
$cmd 00320 deny tcp from any to any 137 in via $pif
$cmd 00321 deny tcp from any to any 138 in via $pif
$cmd 00322 deny tcp from any to any 139 in via $pif
$cmd 00323 deny tcp from any to any 81 in via $pif
# Eldobjuk az összes késõn érkezõ csomagot.
$cmd 00330 deny all from any to any frag in via $pif
# Eldobjuk azokat az ACK csomagokat, amelyek egyik dinamikus
# szabálynak sem felelnek meg.
$cmd 00332 deny tcp from any to any established in via $pif
# Befelé engedélyezzük a szolgáltató DHCP szerverének válaszát. Ebben
# a szabályban csak a DHCP szerver IP-címe szerepelhet, mivel ez az
# egyetlen olyan hitelesített forrás, ami ilyen csomagokat küldhet.
# Ez csak a kábeles és DSL típusú kapcsolatok esetében szükséges.
# Amikor a "felhasználói PPP"-vel csatlakozunk az internethez, nem
# kell ez a szabály. Ugyanazt az IP-címet kell megadnunk, amelyet a
# kimenõ kapcsolatoknál is.
#$cmd 00360 allow udp from any to x.x.x.x 67 in via $pif keep-state
# Befelé engedélyezzük a szabvány WWW funkciót, mivel webszerverünk
# is van.
$cmd 00400 allow tcp from any to me 80 in via $pif setup limit src-addr 2
# Befelé engedélyezzük a biztonságos FTP, telnet és SCP
# típusú kapcsolatokat az internetrõl.
$cmd 00410 allow tcp from any to me 22 in via $pif setup limit src-addr 2
# Befelé engedélyezzük az internetrõl érkezõ nem biztonságos telnet
# kapcsolatokat. Azért tekintjük nem biztonságosnak, mert az
# azonosítók és a jelszavak az interneten titkosítatlanul vándorolnak.
# Töröljük ezt a csoportot, ha nincs telnet szolgáltatásunk.
$cmd 00420 allow tcp from any to me 23 in via $pif setup limit src-addr 2
# Dobjuk el és naplózzuk az összes többi kintrõl érkezõ csomagot.
$cmd 00499 deny log all from any to any in via $pif
# Alapértelmezés szerint dobjuk el mindent. Az ide érkezõ
# csomagokat is naplózzuk, amibõl többet is ki tudunk majd
# deríteni.
$cmd 00999 deny log all from any to any
############# Itt fejezõdnek be az IPFW szabályai #####################Példa hálózati
címfordításra és
állapottartásracímfordításés az IPFWAz IPFW címfordító
funkciójának
kihasználásához további
konfigurációs beállítások
alkalmazására is szükségünk
lesz. A rendszermagban opció között meg kell
adnunk az option IPDIVERT sort a többi
IPFIREWALL sor mellett, és
fordítanunk egy saját verziót.Emellett még az /etc/rc.conf
állományban is engedélyezni kell az IPFW
alapvetõ funkcióit.natd_enable="YES" # engedélyezzük a címfordításért felelõs démont
natd_interface="rl0" # az internet felé mutató hálózati kártya neve
natd_flags="-dynamic -m" # -m = a portszámok megtartása, ha lehetségesAz állapottartó szabályok
használata a divert natd
címfordítási opcióval együtt
nagyban növeli a szabályrendszer
leprogramozásának bonyolultságát.
A check-state és divert
natd szabályok helye kritikus a
megfelelõ mûködés tekintetében.
Az eddig megszokott egyszerû viselkedés itt
már nem érvényesül. Bevezetünk
egy új cselekvést is, amelynek a neve
skipto. A skipto
parancs használatához elengedhetetlen a
szabályok sorszámozása, mivel pontosan
tudnunk kell, hogy a skipto
hatására hova kell ugrania a
vezérlésnek.A következõ példában nem fogunk
sok megjegyzést látni, mivel benne az egyik
lehetséges programozási stílust
próbáljuk érzékeltetni és a
csomagok szabályrendszerek közti
áramlását magyarázzuk.A feldolgozás a szabályokat
tartalmazó állomány tetején
található elsõ szabállyal
kezdõdik, és innen egyesével pereg
végig lefelé a feldolgozás egészen
addig, amíg a csomag a szûrési
feltételek valamelyikének eleget nem tesz
és távozik a tûzfalból.
Leginkább a 100-as, 101-es, 450-es, 500-as és
510-es sorszámú szabályokat
emelnénk ki. Ezek vezérlik kimenõ
és bejövõ csomagok
fordítását, ezért a
hozzájuk tartozó dinamikus
állapottartó bejegyzések mindig a helyi
hálózat IP-címeire hivatkoznak. Amit
még érdemes megfigyelnünk, hogy az
összes áteresztõ és eldobó
szabályban szerepel a csomag haladási
iránya (tehát kimenõ vagy éppen
bejövõ) és az érintett
interfészt megnevezése. Emellett azt is
vegyük észre, hogy az összes kifelé
irányuló kapcsolatlétrehozási
kérés az 500-as sorszámú
szabályhoz fog ugrani a
címfordítás
elvégzéséhez.Tegyük fel, hogy a helyi hálózatunkon
levõ felhasználók szeretnek honlapokat
nézgetni az interneten. A honlapok a 80-as porton
keresztül kommunikálnak. Tehát amikor egy
ilyen csomag eléri a tûzfalat, nem fog illeszkedni
a 100-as szabályra, mert a fejléce szerint
kifelé halad és nem befelé. A 101-es
szabályon is átlép, mivel ez az elsõ
csomag, így a dinamikus állapottartó
táblázatban sem szerepel még. A csomag
végül a 125-ös szabályra fog
illeszkedni: kifelé halad az internetre
csatlakozó hálózati
kártyán. A csomagban azonban még mindig
az eredeti forrás IP-címe
található, amely a helyi hálózat
egyik gépére hivatkozik. A szabály
illeszkedésekor két cselekvés is
végbemegy. A keep-state opció
hatására ez a szabály felveszi ezt a
kapcsolatot az állapottartó dinamikus
szabályok közé és végrehajtja
a másik megadott feladatot. Ez a feladat része
a dinamikus táblázatba rögzített
bejegyzésnek, ami ebben az esetben a skipto
500 (ugorjunk az 500-as
szabályra) lesz. Az 500-as szabály a
továbbküldés elõtt lefordítja a
csomag forrás IP-címét. Ezt ne
felejtsük el, nagyon fontos! A csomag ezután
eljut a céljához, és visszatérve
ismét belép a szabályrendszer
tetején. Ezúttal illeszkedni fog a 100-as
szabályra és a cél IP-címét
visszafordítjuk a helyi hálózatunk
megfelelõ gépének címére.
Ezután a check-state
szabályhoz kerül, amely megtalálja a
dinamikus szabályok között és
továbbengedi a belsõ hálózatra.
Ezzel visszakerül a küldõ géphez, amely
egy újabb csomagot küld egy újabb
adatszeletet kérve a távoli szervertõl.
Ekkor már a check-state
szabály megtalálja a hozzá tartozó
bejegyzést a dinamikus szabályok
között és végrehajtódik a
korábban letárolt skipto 500
mûvelet. A csomag erre az 500-as szabályra ugrik,
ahol lefordítjuk a címét és
továbbküldjük.Az bejövõ oldalon minden, ami egy
korábban kialakult kapcsolat részeként
érkezik, automatikusan a check-state
és a megfelelõ helyre rakott divert
natd szabályok által dolgozódik
fel. Itt mindössze a rossz csomagok
eldobásával és a hitelesített
szolgáltatások elérésének
biztosításával kell foglalkoznunk.
Például a tûzfalon egy webszerver fut,
és azt szeretnénk, hogy az internetrõl
képesek legyenek elérni a rajta levõ
oldalakat. Az újonnan beérkezõ
kapcsolatépítési kérelem a 100-as
szabályra fog illeszkedni, amelynek a cél
IP-címét a tûzfal helyi
hálózaton található
címére fogjuk leképezni. A csomagot
ezután még megvizsgáljuk, nem tartalmaz-e
valamilyen huncutságot, majd végül a
425-ös szabálynál fog kikötni. Az
egyezéskor két dolog történhet: a
csomaghoz felveszünk egy dinamikus szabályt, de
ezúttal az adott forrás IP-címrõl
érkezõ kapcsolatkérések
számát 2-re lekorlátozzuk. Ezzel az
adott szolgáltatás portján meg tudjuk
óvni a tûzfalat üzemeltetõ gépet
a DoS típusú támadásoktól.
A csomagot ezután hozzá tartozó
cselekvés szerint továbbengedjük a
belsõ hálózat felé.
Visszatéréskor a tûzfal felismeri, hogy a
csomag egy már meglevõ kapcsolathoz tartozik,
ezért közvetlenül az 500-as szabályhoz
kerül címfordításra, majd a
kimenõ interfészen keresztül
továbbküldjük.Íme az elsõ példa egy ilyen
szabályrendszerre:#!/bin/sh
cmd="ipfw -q add"
skip="skipto 500"
pif=rl0
ks="keep-state"
good_tcpo="22,25,37,43,53,80,443,110,119"
ipfw -q -f flush
$cmd 002 allow all from any to any via xl0 # nem szûrjük a belsõ hálózatot
$cmd 003 allow all from any to any via lo0 # nem szûrjük a helyi interfészt
$cmd 100 divert natd ip from any to any in via $pif
$cmd 101 check-state
# A kimenõ csomagok hitelesítése:
$cmd 120 $skip udp from any to xx.168.240.2 53 out via $pif $ks
$cmd 121 $skip udp from any to xx.168.240.5 53 out via $pif $ks
$cmd 125 $skip tcp from any to any $good_tcpo out via $pif setup $ks
$cmd 130 $skip icmp from any to any out via $pif $ks
$cmd 135 $skip udp from any to any 123 out via $pif $ks
# Az összes olyan csomagot eldobjuk, amely a fenntartott
# címtartományokba tart:
$cmd 300 deny all from 192.168.0.0/16 to any in via $pif #RFC 1918: privát IP
$cmd 301 deny all from 172.16.0.0/12 to any in via $pif #RFC 1918: privát IP
$cmd 302 deny all from 10.0.0.0/8 to any in via $pif #RFC 1918: privát IP
$cmd 303 deny all from 127.0.0.0/8 to any in via $pif #helyi
$cmd 304 deny all from 0.0.0.0/8 to any in via $pif #helyi
$cmd 305 deny all from 169.254.0.0/16 to any in via $pif #DHCP
$cmd 306 deny all from 192.0.2.0/24 to any in via $pif #dokumentációs célokra fenntartott
$cmd 307 deny all from 204.152.64.0/23 to any in via $pif #Sun klaszter
$cmd 308 deny all from 224.0.0.0/3 to any in via $pif #D és E osztályú multicast
# Az érkezõ csomagok hitelesítése:
$cmd 400 allow udp from xx.70.207.54 to any 68 in $ks
$cmd 420 allow tcp from any to me 80 in via $pif setup limit src-addr 1
$cmd 450 deny log ip from any to any
# Ide ugrunk a kimenõ állapottartó szabályoknál:
$cmd 500 divert natd ip from any to any out via $pif
$cmd 510 allow ip from any to any
##################### a szabályok vége ##################A következõ példa teljesen megegyezik az
elõzõvel, azonban itt már
dokumentációs szándékkal
szerepelnek megjegyzések is, melyek a tapasztalatlan
IPFW szabályíróknak segítik jobban
megérteni a szabályok pontos
mûködését.A második példa:#!/bin/sh
############# Az IPFW szabályai itt kezdõdnek ###########################
# Kezdés elõtt töröljük az összes jelenleg aktív szabályt:
ipfw -q -f flush
# Beállítjuk a parancsok megfelelõ elõtagjait:
cmd="ipfw -q add"
skip="skipto 800"
pif="rl0" # az internethez csatlakozó
# hálózati interfész neve
#################################################################
# A belsõ hálózat számára ne korlátozzunk semmit se.
# Ha nincs helyi hálózatunk, akkor erre nincs szükségünk.
# Az 'xl0' nevét írjuk át a helyi hálózatra csatlakozó
# interfész nevére.
#################################################################
$cmd 005 allow all from any to any via xl0
#################################################################
# A rendszer belsõ interfészét se szûrjük.
#################################################################
$cmd 010 allow all from any to any via lo0
#################################################################
# Ellenõrizzük, hogy ez egy beérkezõ csomag és ha igen, akkor
# fordítsuk a címét.
#################################################################
$cmd 014 divert natd ip from any to any in via $pif
#################################################################
# Ha ehhez a csomaghoz korábban már vettük fel dinamikus
# szabályt a keep-state opció révén, akkor engedjük tovább.
#################################################################
$cmd 015 check-state
#################################################################
# Az internet felé forgalmazó interfész (kimenõ kapcsolatok)
# A saját hálózatunkról belülrõl vagy errõl az átjáróról
# kezdeményezett kapcsolatokat vizsgáljuk az internet felé.
#################################################################
# Kifelé engedélyezzük az internet-szolgáltatónk névszerverének
# elérését. Az x.x.x.x a szolgáltató névszerverének IP-címe
# lesz. Ha a szolgáltatónknak több névszervere is van, akkor
# az /etc/resolv.conf állományból nézzük ki a címeiket és
# másoljuk le az alábbi sor mindegyikükhöz.
$cmd 020 $skip tcp from any to x.x.x.x 53 out via $pif setup keep-state
# A kábeles és DSL kapcsolatok esetén engedélyezzük a szolgáltató
# DHCP szerverének elérését.
$cmd 030 $skip udp from any to x.x.x.x 67 out via $pif keep-state
# Kifelé engedélyezzük a szabvány nem biztonságos WWW funkciót
$cmd 040 $skip tcp from any to any 80 out via $pif setup keep-state
# Kifelé engedélyezzük a biztonságos HTTPS funkciót a TLS SSL
# használatával.
$cmd 050 $skip tcp from any to any 443 out via $pif setup keep-state
# Kifelé engedélyezzük az e-mailek küldését és fogadását.
$cmd 060 $skip tcp from any to any 25 out via $pif setup keep-state
$cmd 061 $skip tcp from any to any 110 out via $pif setup keep-state
# Kifelé engedélyezzük a FreeBSD (make install és CVSUP) funkcióit.
# Ezzel a rendszeradminisztrátornak ,,ISTENI'' jogokat adunk.
$cmd 070 $skip tcp from me to any out via $pif setup keep-state uid root
# Kifelé engedélyezzük a pinget.
$cmd 080 $skip icmp from any to any out via $pif keep-state
# Kifelé engedélyezzük az idõ szolgáltatást.
$cmd 090 $skip tcp from any to any 37 out via $pif setup keep-state
# Kifelé engedélyezzük az nntp news szolgáltatást (tehát a
# hírcsoportokat).
$cmd 100 $skip tcp from any to any 119 out via $pif setup keep-state
# Kifelé engedélyezzük a biztonságos FTP, telnet és SCP
# funkciókat az SSH (secure shell) használatával.
$cmd 110 $skip tcp from any to any 22 out via $pif setup keep-state
# Kifelé engedélyezzük ki a whois kéréseket.
$cmd 120 $skip tcp from any to any 43 out via $pif setup keep-state
# Kifelé engedélyezzük az NTP idõszerver elérését.
$cmd 130 $skip udp from any to any 123 out via $pif keep-state
#################################################################
# Az internet felõli interfész (bejövõ kapcsolatok)
# A saját hálózatunk felé vagy erre az átjáróra
# nyitott kapcsolatokat vizsgáljuk az internet felõl.
#################################################################
# Tiltsuk a fenntartott címtartományok felé haladó összes beérkezõ
# forgalmat.
$cmd 300 deny all from 192.168.0.0/16 to any in via $pif #RFC 1918: privát IP
$cmd 301 deny all from 172.16.0.0/12 to any in via $pif #RFC 1918: privát IP
$cmd 302 deny all from 10.0.0.0/8 to any in via $pif #RFC 1918: privát IP
$cmd 303 deny all from 127.0.0.0/8 to any in via $pif #helyi
$cmd 304 deny all from 0.0.0.0/8 to any in via $pif #helyi
$cmd 305 deny all from 169.254.0.0/16 to any in via $pif #DHCP
$cmd 306 deny all from 192.0.2.0/24 to any in via $pif #dokumentációs célokra fenntartott
$cmd 307 deny all from 204.152.64.0/23 to any in via $pif #Sun klaszter
$cmd 308 deny all from 224.0.0.0/3 to any in via $pif #D és E osztályú multicast
# Az ident tiltása.
$cmd 315 deny tcp from any to any 113 in via $pif
# Blokkoljuk az összes Netbios szolgáltatást: 137=név, 138=datagram,
# 139=session. A Netbios az MS Windows megosztását implementálja.
# Blokkoljuk az MS Windows hosts2 névszerver kéréseit is a 81-es
# porton.
$cmd 320 deny tcp from any to any 137 in via $pif
$cmd 321 deny tcp from any to any 138 in via $pif
$cmd 322 deny tcp from any to any 139 in via $pif
$cmd 323 deny tcp from any to any 81 in via $pif
# Dobjuk el a késõn érkezõ csomagokat.
$cmd 330 deny all from any to any frag in via $pif
# Dobjuk el azokat az ACK csomagokat, amelyekre nincs
# dinamikus szabály.
$cmd 332 deny tcp from any to any established in via $pif
# Engedélyezzük a szolgáltató DHCP szerverétõl érkezõ forgalmat. Ennek
# a szabálynak tartalmaznia kell a DHCP szerver címét, mert csak tõle
# fogadunk el ilyen típusú csomagokat. Egyedül csak kábeles vagy DSL
# konfigurációk esetén használatos, a "felhasználói PPP" esetében
# törölhetjük. Ez ugyanaz az IP-cím, amelyet a kimenõ kapcsolatoknál
# megadtunk.
$cmd 360 allow udp from x.x.x.x to any 68 in via $pif keep-state
# Befelé engedélyezzük a szabvány WWW funkciót, mivel van
# webszerverünk.
$cmd 370 allow tcp from any to me 80 in via $pif setup limit src-addr 2
# Befelé engedélyezzük a biztonságos FTP, telnet és SCP
# használatát az internetrõl.
$cmd 380 allow tcp from any to me 22 in via $pif setup limit src-addr 2
# Befelé engedélyezzük a nem biztonságos telnet elérését az
# internetrõl. Azért nem tekintjük biztonságosnak, mert az
# azonosítókat és a jelszavakat az interneten titkosítatlanul
# közvetíti. Ha nincs telnet szolgáltatásunk, akkor törölhetjük is ezt
# a csoportot.
$cmd 390 allow tcp from any to me 23 in via $pif setup limit src-addr 2
# Dobjuk el és naplózzuk az összes internetrõl érkezõ hitelesítetlen kapcsolatot.
$cmd 400 deny log all from any to any in via $pif
# Dobjuk el és naplózzuk az összes internetre menõ hitelesítetlen kapcsolatot.
$cmd 450 deny log all from any to any out via $pif
# Ez lesz a kimenõ szabályokhoz tartozó "skipto" célja.
$cmd 800 divert natd ip from any to any out via $pif
$cmd 801 allow ip from any to any
# Minden mást alapértelmezés szerint tiltunk és naplózunk.
$cmd 999 deny log all from any to any
############# Az IPFW szabályai itt fejezõdnek be #####################
diff --git a/hu_HU.ISO8859-2/books/handbook/geom/chapter.sgml b/hu_HU.ISO8859-2/books/handbook/geom/chapter.sgml
index f8615aa435..641e4b8cc6 100644
--- a/hu_HU.ISO8859-2/books/handbook/geom/chapter.sgml
+++ b/hu_HU.ISO8859-2/books/handbook/geom/chapter.sgml
@@ -1,1080 +1,1080 @@
TomRhodesÍrta: GEOM: A moduláris lemezszervezõ rendszerÁttekintésGEOMA GEOM lemezrendszerGEOMEz a fejezet a &os;-ben található GEOM rendszert
mutatja be. Ez a rendszer tömöríti az
általa is alkalmazott fontosabb RAID-vezérlõ
segédprogramokat. A fejezet nem részletezi, hogy a
GEOM konkrétan milyen módon kezeli és
vezérli az I/O-t, ahogy azt sem, hogyan mûködik
az alapjául szolgáló alrendszer vagy hogy
néz ki annak forráskódja. Az ilyen
jellegû információk a &man.geom.4; man oldalon,
valamint az ott felsorolt helyeken találhatóak meg.
Továbbá, ez a fejezet magukról a
RAID-konfigurációkról sem
ad pontos tájékoztatást.
Kizárólag csak a GEOM által is
támogatott
RAID-besorolásokról esik
szó.A fejezet elolvasása során
megismerjük:a GEOM segítségével milyen
fajtájú RAID
támogatást érhetünk el;hogyan kell használni a rendszer által
nyújtott alapvetõ segédeszközöket
a különféle RAID-szintek
konfigurálásához,
karbantartásához és
kezeléséhez;hogyan kell a GEOM-on keresztül tükrözni,
csíkozni, titkosítani és
távolról összekapcsolni lemezes
eszközöket;hogyan kell a GEOM rendszerben összekapcsolt
lemezeknél felmerülõ hibákat
felderíteni.A fejezet elolvasásához
ajánlott:megérteni, hogyan kezeli a &os; a lemezes
eszközöket ();ismerni, hogyan konfiguráljunk és
telepítsünk egy új &os; rendszermagot ().A GEOM bemutatásaA GEOM rendszer adatszolgáltatókon vagy
speciális /dev-állományokon
keresztül hozzáférést és
vezérlést tesz lehetõvé bizonyos
osztályokhoz — Master Boot Recordokhoz,
BSD-címkékhez stb. Számos
szoftveres RAID konfiguráció
támogatásával a GEOM transzparens
elérést tesz lehetõvé mind az
operációs rendszer, mind pedig az általa
felkínált segédprogramok
számára.TomRhodesÍrta: MurrayStokelyRAID0 - CsíkozásGEOMLemezcsíkozásA csíkozás módszerét
használjuk abban az esetben, amikor több
lemezmeghajtót akarunk egyetlen kötetté
összevonni. A GEOM lemezalrendszer szoftveres
támogatást nyújt a RAID0,
más néven a lemezcsíkozás
megvalósításához.Egy RAID0 rendszerben az adatokat blokkokra
bontva írjuk fel a tömbben található
lemezek között szétosztva. Így ahelyett,
hogy meg kellene várnunk 256 kb-nyi adat egyetlen lemezre
írását, egy RAID0
rendszerben egyszerre íródik 64 kb-nyi adat
négy különbözõ lemezre, és
ezáltal gyorsabb elérést szolgáltat.
Ez a gyorsaság további lemezvezérlõk
használatával még jobban
fokozható.Az egy RAID0-csíkozásban
résztvevõ lemezek mindegyikének azonos
méretûnek kell lennie, mivel az írásra
és olvasásra irányuló
I/O-kérések a párhuzamos
kiszolgálás érdekében
összefésülõdnek.Példa lemezcsíkozásraCsíkozás kialakítása
formázatlan ATA-lemezekkelTöltsük be a geom_stripe.ko
modult:&prompt.root; kldload geom_stripeBizonyosodjuk meg róla, hogy a rendszerünkben
található egy szabad csatlakozási pont.
Ha majd ezt a kötetet szánjuk rendszerünk
gyökérpartíciójának,
használjunk erre a célra egy másik
könyvtárat, például a /mnt-ot:&prompt.root; mkdir /mntKeressük meg a csíkozásra
felhasználni kívánt lemezek
eszközneveit, és hozzunk létre
belõlük egy új csíkozott eszközt.
Például, ha két használatban nem
levõ, particionálatlan
ATA-lemezt, név szerint a
/dev/ad2 és
/dev/ad3 eszközöket akarjunk
csíkozni:&prompt.root; gstripe label -v st0 /dev/ad2 /dev/ad3
Metadata value stored on /dev/ad2.
Metadata value stored on /dev/ad3.
Done.Az így létrejött új köteten
most hozzunk létre egy általános
címkét, vagy más néven egy
partíciós táblát, és
telepítsük fel rá a rendszer
alapértelmezett rendszerindító
programját:&prompt.root; bsdlabel -wB /dev/stripe/st0Ezzel meg kellett jelennie további másik
két eszköznek is a /dev/stripe
könyvtárban, a st0
eszköz mellett. Ezek többek közt az
st0a és az
st0c. Itt már ki is tudunk
alakítani egy állományrendszert az
st0a eszközön a
newfs használatával:&prompt.root; newfs -U /dev/stripe/st0aSok-sok számot fogunk látni cikázni a
képernyõn, majd néhány
másodperc múlva befejezõdik a folyamat.
Létrehoztuk a kötetet, ami most már
készen áll a becsatolásra.A kialakított lemezcsíkozást így
tudjuk kézzel csatlakoztatni:&prompt.root; mount /dev/stripe/st0a /mntA csíkozott állományrendszert a
rendszerindítás folyamán automatikusan
becsatlakoztathatjuk, ha elhelyezzük az alábbi
kötetinformációkat az
/etc/fstab állományba. Erre a
célra stripe
néven létrehozunk egy állandó
csatlakozási pontot:&prompt.root; mkdir /stripe
&prompt.root; echo "/dev/stripe/st0a /stripe ufs rw 2 2" \>> /etc/fstabA geom_stripe.ko modult is automatikusan
be kell tölteni a rendszerindítás során.
Ehhez a következõ sort kell hozzáadni a
/boot/loader.conf
állományhoz:&prompt.root; echo 'geom_stripe_load="YES"' >> /boot/loader.confRAID1 - TükrözésGEOMlemeztükrözésA tükrözés számos
vállalatnál és háztartásban
alkalmazott technológia, amely az adatok
megszakítás nélküli
lementésére használatos. Amikor
tükrözést használunk, az egyszerûen
csak arra utal, hogy a B lemez ugyanazokat az adatokat
tartalmazza, mint az A lemez. Vagy amikor a C és D lemez
tartalma egyezik meg az A és B lemezekével.
Függetlenül a lemezek kiosztásától,
itt az a lényeg, hogy az egyik lemez teljes területe
vagy az egyik partíciója le van másolva.
Késõbb az ezen a módon lementett adatok
könnyen visszaállíthatóak
anélkül, hogy ez a szolgáltatásban vagy
az elérhetõségben bármilyen
kimaradást okozna, és akár még
fizikailag is biztonságosan tárolhatóak.
Elõször is szereznünk kell két egyforma
méretû lemezt, valamint a példák
feltételezik, hogy ezek a lemezek közvetlen
elérésû (&man.da.4;)
SCSI-lemezek.Az elsõdleges lemezek
tükrözéseTegyük fel, hogy a &os; az elsõ,
da0 nevû lemezmeghajtón
található, és a &man.gmirror.8;
számára ezt szeretnénk megadni az
elsõdleges adatok tárolásához.A tükrözés
létrehozásának megkezdése elõtt a
kern.geom.debugflags &man.sysctl.8;
változó megfelelõ
beállításával
engedélyezzünk további
nyomkövetési információkat és
hozzáférést az eszközhöz:&prompt.root; sysctl kern.geom.debugflags=17Most építsük fel a
tükrözést. Kezdjük az egészet a
metaadatok elhelyezésével az elsõdleges
lemezmeghajtón, tehát tulajdonképpen az
alábbi parancs segítségével hozzuk
létre a /dev/mirror/gm
eszközt:A rendszerindító meghajtóról
készített tükrözés
adatvesztést okozhat a lemez utolsó
szektorában. Ennek kockázata
csökkenthetõ, ha közvetlenül a &os; friss
telepítése után állítjuk be
a tükrözést.&prompt.root; gmirror label -vb round-robin gm0 /dev/da0Erre a rendszernek a következõ módon kell
reagálnia:Metadata value stored on /dev/da0.
Done.A GEOM inicializálásához
szükségünk lesz a
/boot/kernel/geom_mirror.ko modul
betöltésére:&prompt.root; gmirror loadA parancs sikeres lefutása után a /dev/mirror
könyvtárban létrehoz egy
gm0
eszközleírót.A geom_mirror.ko modul
betöltését így tudjuk
engedélyezni a rendszer indításakor:&prompt.root; echo 'geom_mirror_load="YES"' >> /boot/loader.confNyissuk meg az /etc/fstab
állományt, és cseréljük le
benne az összes korábbi da0
hivatkozást az újonnan kialakított
gm0 tükrözés
eszközleírójával.Ha &man.vi.1; szövegszerkesztõt
használjuk, akkor a következõ módon
tudjuk ezt egyszerûen megtenni:&prompt.root; vi /etc/fstabA &man.vi.1; indítása után a
:w /etc/fstab.bak
kiadásával készítsünk az
fstab állomány jelenlegi
tartalmáról másolatot. Ezután a
:%s/da/mirror\/gm/g parancs
használatával cseréljük ki az
összes da0 hivatkozást a
gm0 eszköz nevére.Az így keletkezõ fstab
állomány nagyjából következõ
módon fog kinézni. Most teljesen független,
hogy SCSI vagy ATA
meghajtókkal dolgozunk, a RAID
eszköz neve mindig gm lesz:# Eszköz Csatlakozási pont Típus Beállítások Dump Menet
/dev/mirror/gm0s1b none swap sw 0 0
/dev/mirror/gm0s1a / ufs rw 1 1
/dev/mirror/gm0s1d /usr ufs rw 0 0
/dev/mirror/gm0s1f /home ufs rw 2 2
#/dev/mirror/gm0s2d /store ufs rw 2 2
/dev/mirror/gm0s1e /var ufs rw 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0Indítsuk újra a rendszert:&prompt.root; shutdown -r nowEnnek megfelelõen a rendszer indítása
közben a da0 eszköz helyett a
gm0 eszközt fogjuk
használni. Miután sikeresen
befejezõdött a rendszerindítás, a
mount parancs kiadásával a
saját szemünkkel is meggyõzõdhetünk
az eredményrõl:&prompt.root; mount
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/mirror/gm0s1a 1012974 224604 707334 24% /
devfs 1 1 0 100% /dev
/dev/mirror/gm0s1f 45970182 28596 42263972 0% /home
/dev/mirror/gm0s1d 6090094 1348356 4254532 24% /usr
/dev/mirror/gm0s1e 3045006 2241420 559986 80% /var
devfs 1 1 0 100% /var/named/devA parancs kimenete az elvárásainknak
megfelelõen remekül néz ki.
Zárásképpen a szinkronizálás
megkezdéséhez a következõ paranccsal
illesszük be a da1 eszközt a
tükrözésbe:&prompt.root; gmirror insert gm0 /dev/da1A tükrözés állapota a
létrejöttét követõen az alábbi
paranccsal ellenõrizhetõ:&prompt.root; gmirror statusAz iménti parancs eredményének
nagyjából a következõnek kell lennie
miután a felépítettük a
tükrözést és szinkronizáltuk az
adatokat: Name Status Components
mirror/gm0 COMPLETE da0
da1Hiba esetén a tükrözés
továbbra is folytatódik, azonban ilyenkor a
példában szereplõ COMPLETE
helyett a DEGRADED jelzést fogjuk
látni.HibakeresésA rendszer nem hajlandó elindulniHa a rendszerünk ehhez hasonló módon
indul:ffs_mountroot: can't find rootvp
Root mount failed: 6
mountroot>Indítsuk újra a gépünket a
kikapcsoló gomb vagy a reset
segítségével. A
rendszerindító menüben válasszuk a
hatodik opciót (6). Ennek
eredményeképpen megkapjuk a &man.loader.8;
parancssorát. Töltsük be a modult
manuálisan:OK? load geom_mirror
OK? bootHa ez beválik, akkor valamiért a modult nem
sikerült rendesen betölteni.
Ellenõrizzük, hogy a
/boot/loader.conf
állományban a neki szereplõ megfelelõ
bejegyzés helyesen szerepel. Amennyiben a
probléma továbbra is fennáll,
helyezzük el a következõ sort a rendszermag
konfigurációs állományába,
majd fordítsuk újra és
telepítsük:options GEOM_MIRROREzzel várhatóan orvosoltuk a
problémát.A meghibásodott lemezek cseréjeA lemezek tükrözésének egyik
legcsodálatosabb elõnye, hogy a menet közben
meghibásodott meghajtókat gond, és
így feltehetõen adatvesztés
nélkül ki tudjuk cserélni.Vegyük az iménti RAID-1
konfigurációt, és tételezzük fel,
hogy a da1 eszköz felmondta a
szolgáltatot és cserére szorul. A
meghajtó leváltásához keressük
meg a hibás eszközt, majd állítsuk le
a rendszert. Tegyük be a helyére az újat
és indítsuk újra a rendszerünket.
Miután elindult az operációs rendszer, a
következõ parancsok kiadásával tudjuk
logikailag is lecserélni a meghibásodott
lemezt:&prompt.root; gmirror forget gm0
&prompt.root; gmirror insert gm0 /dev/da1Innen a gmirror
parancsával kísérhetjük figyelemmel a
tükrözés újraszervezésének
menetét. Csupán ennyi az egész.Eszközök hálózati illesztése a
GEOM-banA GEOM távoli eszközök, például
lemezek, CD-meghajtók stb. használatát is
támogatja a hálózati illesztést
szolgáló segédprogramjaival, hasonlóan
az NFS-hez.Kezdésként létre kell hozni a
megosztást elõsegítõ
állományt. Ez az állomány
határozza meg, ki és milyen szinten jogosult
használni a megosztott erõforrásokat.
Például ha megosztjuk az elsõ
SCSI-lemezen a negyedik slice-ot, az
alábbi /etc/gg.exports
állomány tökéletesen megfelel:192.168.1.0/24 RW /dev/da0s4dEzzel a belsõ hálózaton levõ
összes számítógép képes
lesz elérni a da0s4d
partíción található
állományrendszert.Az eszköz megosztásához elõször
gondoskodnunk kell róla, hogy ne legyen csatlakoztatva,
majd ezután indítsuk el a &man.ggated.8; szerver
démonját:&prompt.root; ggatedEzt követõen a mount
felhasználásával csatoljuk az eszközt a
kliensen, az alábbi parancs
kiadásával:&prompt.root; ggatec create -o rw 192.168.1.1 /dev/da0s4d
ggate0
&prompt.root; mount /dev/ggate0 /mntInnentõl kezdve az eszköz elérhetõ lesz
a /mnt csatlakozási
ponton keresztül.Fontos kiemelnünk, hogy ez a mûvelet
eredménytelen, ha az adott eszközt vagy maga a
szerver, vagy pedig valamelyik másik kliens már
korábban csatolta.Amikor az eszközre már nincs tovább
szükségünk, biztonságosan le tudjuk
választani az &man.umount.8; paranccsal, hasonlóan
bármelyik más lemezes eszközhöz.A lemezes eszközök
címkézéseGEOMLemezcímkékA rendszer indítása közben a &os;
rendszermagja a talált eszközöknek
megfelelõen mindegyiknek létrehoz egy-egy
eszközleírót. Ezzel a
próbálgatásos módszerrel együtt
jár néhány gond, például mi
történik akkor, ha az új lemezes eszközt
USB-n keresztül adjuk a rendszerhez?
Nagyon valószínû, hogy ez az eszköz
megkapja a da0 nevet és ezzel az
eredeti da0 eszköz eltolódik
a da1 névhez. Ennek
köszönhetõen az /etc/fstab
állományban felsorolt
állományrendszerek csatolása veszélybe
kerül, aminek következtében akár
meghiúsulhat a rendszerindulás is.Az egyik lehetséges megoldása a
problémának, ha sorbafûzzük a
SCSI eszközeinket, és így a
SCSI-kártyához kapcsolt
újabb eszköz egy addig nem használt
számot fog birtokba venni. Mi helyzet azonban az
USB-s eszközökkel, amelyek
kiüthetik az elsõdleges
SCSI-lemezeinket? Ez egyébként
azért történhet meg, mert az
USB-s eszközöket
általában hamarabb keresi a rendszer, mint a
SCSI kártyán levõ
eszközöket. Megoldhatjuk úgy ezt a gondot, hogy
csak azután csatlakoztatjuk az említett
eszközöket, miután a rendszer elindult.
Megoldhatjuk viszont úgy is, hogy csak egyetlen
ATA-meghajtót használunk
és soha nem soroljuk fel a SCSI
eszközöket az /etc/fstab
állományban.Ezeknél kínálkozik azonban egy jobb
megoldás! A glabel nevû
segédprogrammal a rendszergazda vagy a
felhasználó úgy tudja címkézni
a lemezmeghajtókat, hogy azok a
/etc/fstab állományban
szereplõ címkéket használják.
Mivel a glabel a címkét az adott
szolgáltató utolsó szektorában
tárolja el, ez a címke megmarad az
újraindítás után is. Ha ezt a
címkét eszközként használjuk, az
állományrendszerek mindig ugyanarról a
meghajtóról fognak csatolódni,
függetlenül attól, hogy milyen
eszközleírón keresztül érjük
el ezeket.Egyáltalán nem állítottuk, hogy
egy címke csak állandó lehet. A
glabel segítségével
egyaránt létre lehet hozni állandó
és átmeneti címkéket, de csak az
állandó címke képes az
újraindítás után is megmaradni. A
két címketípus közti
különbségeket a &man.glabel.8; man oldal
tárgyalja részletesebben.Címketípusok és
példákA címkéknek két típusa
létezik, az általános címke
és az állományrendszer-címke. A
címkék lehetnek állandóak vagy
ideiglenesek. Az állandó címkék a
&man.tunefs.8; vagy &man.newfs.8; parancsokkal hozhatóak
létre. Ezek a címkék az adott
állományrendszer típusa alapján
elnevezett alkönyvtárakban jönnek létre
a /dev
könyvtáron belül. Például az
UFS2
állományrendszer-címkék a /dev/ufs könyvtárban
keletkeznek. Állandó címkék a
glabel label paranccsal hozhatóak
létre. Az ilyen címkék nem függenek
az állományrendszerek
típusától, a /dev/label könyvtárban
jönnek létre.Az ideiglenes címkék a következõ
induláskor elvesznek. Ezek a címkék a
/dev/label
könyvtárban keletkeznek, és ideálisak
a kísérletezgetésre. Ideiglenes
címkéket a glabel create
paranccsal hozhatunk létre. Ezzel kapcsolatosan
részletesebb felvilágosítást a
&man.glabel.8; man oldalon találhatunk.Ha egy UFS2
állományrendszerre szeretnénk tenni egy
állandó címkét az adataink
megsemmisítése nélkül, adjuk ki a
következõ parancsot:&prompt.root; tunefs -L home/dev/da3Ha az érintett állományrendszeren
nincs üres hely, ennek a parancsnak a használata
adatvesztéshez vezethet. Ilyen esetben inkább a
felesleges állományok
eltávolításával kellene
törõdnünk, nem pedig címkék
hozzáadásával.Ezután egy címkének kell megjelennie a
/dev/ufs
könyvtárban, amelyet vegyünk is fel az
/etc/fstab állományba:/dev/ufs/home /home ufs rw 2 2Az állományrendszert tilos csatolni a
tunefs futtatása alatt!Most már a megszokott módon csatolhatjuk az
állományrendszert:&prompt.root; mount /homeEttõl a ponttól kezdve, amíg a
geom_label.ko modul betöltõdik a
rendszerindítás során a
/boot/loader.conf állományon
keresztül, vagy a GEOM_LABEL
opció megtalálható a rendszermag
konfigurációs állományában,
az eszközleíró a rendszerre nézve
minden komolyabb következmény nélkül
megváltozhat.Állományrendszereket létrehozhatunk
alapértelmezett címkével is a
newfs
paraméterével. Errõl részletesebben a
&man.newfs.8; man oldalon olvashatunk.Az alábbi paranccsal tudjuk törölni a
címkét:&prompt.root; glabel destroy homeA következõ példában azt
láthatjuk, hogyan címkézzük fel a
rendszerindító lemezünk
partícióit.Partíciók címkézése a
rendszerindító lemezenA rendszerindításra használt lemezen
levõ partíciók
felcímkézésével a rendszer
képes lesz akkor is minden probléma
nélkül elindulni, amikor áthelyezzük
egy másik vezérlõre vagy átrakjuk
egy másik számítógépbe.
Például most tegyük fel, hogy van egy
ATA csatolós lemezünk, amelyet
a rendszer ad0 néven ismert
fel. Továbbá azt is feltételezzük,
hogy a &os; telepítése esetén megszokott
partícionálási sémát
választottuk, ahol /, /var, /usr és /tmp
állományrendszereink, valamint egy
lapozóterületünk van.Indítsuk újra a rendszerünket és
a &man.loader.8; menüjében a 4
billentyû lenyomásával válasszuk az
egyfelhasználós módot. Ezt
követõen adjuk ki a következõ
parancsokat:&prompt.root; glabel label rootfs /dev/ad0s1a
GEOM_LABEL: Label for provider /dev/ad0s1a is label/rootfs
&prompt.root; glabel label var /dev/ad0s1d
GEOM_LABEL: Label for provider /dev/ad0s1d is label/var
&prompt.root; glabel label usr /dev/ad0s1f
GEOM_LABEL: Label for provider /dev/ad0s1f is label/usr
&prompt.root; glabel label tmp /dev/ad0s1e
GEOM_LABEL: Label for provider /dev/ad0s1e is label/tmp
&prompt.root; glabel label swap /dev/ad0s1b
GEOM_LABEL: Label for provider /dev/ad0s1b is label/swap
&prompt.root; exitA rendszer indítása ezután
többfelhasználós módban
folytatódik. A rendszerindítás
befejezõdése után nyissuk meg az
/etc/fstab állományt
és írjuk át a hagyományos
eszközneveket a hozzájuk tartozó
címkékre. Az /etc/fstab
végleges változata ennek megfelelõen
körülbelül így fog
kinézni:# Eszköz Csatlakozási pont Típus Beállítások Dump Menet
/dev/label/swap none swap sw 0 0
/dev/label/rootfs / ufs rw 1 1
/dev/label/tmp /tmp ufs rw 2 2
/dev/label/usr /usr ufs rw 2 2
/dev/label/var /var ufs rw 2 2A rendszer most már
újraindítható. Ha mindent jól
csináltunk, akkor a rendszer indítása
problémáktól mentesen fog zajlani
és a mount parancs eredménye
a következõ lesz:&prompt.root; mount
/dev/label/rootfs on / (ufs, local)
devfs on /dev (devfs, local)
/dev/label/tmp on /tmp (ufs, local, soft-updates)
/dev/label/usr on /usr (ufs, local, soft-updates)
/dev/label/var on /var (ufs, local, soft-updates)A &os; 7.2 kiadásától
kezdõdõen a &man.glabel.8; osztály az
UFS esetén támogatja az
ufsid, az állományrendszer
egyedi rendszerszintû
azonosítójából származtatott
új címketípus használatát.
Ezek a címkék a rendszer indítása
során a /dev/ufsid
könyvtárban jönnek automatikusan létre.
Az ufsid címkéken
keresztül tudunk az /etc/fstab
állományban állományrendszereket
csatlakoztatni. A jelenleg aktív
állományrendszereket és azok
ufsid azonosítóit a
glabel status paranccsal tudjuk
lekérdezni:&prompt.user; glabel status
Name Status Components
ufsid/486b6fc38d330916 N/A ad4s1d
ufsid/486b6fc16926168e N/A ad4s1fEbben a példában az
ad4s1d képviseli a /var
állományrendszert, míg a
ad4s1f a /usr
állományrendszert. Az adott
ufsid értékek
megadásával az /etc/fstab
állományban a következõképpen
tudjuk csatlakoztatni ezeket az
állományrendszereket:/dev/ufsid/486b6fc38d330916 /var ufs rw 2 2
/dev/ufsid/486b6fc16926168e /usr ufs rw 2 2Minden ufsid címkével
rendelkezõ partíció csatlakoztatható
ezen a módon. Ekkor nem kell manuálisan
létrehoznunk a számunkra állandó
címkéket, így automatikusan
élvethezhetjük az eszköznévtõl
független csatlakoztatás elõnyeit.Naplózó UFS GEOM-on keresztülGEOMnaplózásA &os; 7.0-ás verziójának
megjelenésével egy rég várt
kiegészítés, a naplózó
UFS végre elérhetõvé
válik. Maga az implementáció a
GEOM alrendszeren keresztül
érhetõ el, és a &man.gjournal.8;
segédprogram segítségével
könnyedén beállítható.Mit is jelent a naplózás? A
naplózás támogatásával a
rendszer egy naplót vezet az
állományrendszert érintõ
tranzakciókról — például az
olyan változtatásokról, amelyek egy komplett
írási mûveletet eredményeznek —
mielõtt még a metaadatok és
lemezírási mûveletek szabályosan
befejezõdnének. Ez a könyvelés
késõbb visszajátszható az
állományrendszerben lezajlott tranzakciók
reprodukálásához, és ezzel
megelõzhetõek az állományrendszerben
keletkezõ esetleges ellentmondások.Ez egy újabb módszer az adatvesztés
és az állományrendszerben
elõforduló ellentmondások
elkerülésére. Eltérõen a Soft
Updates módszertõl, ahol a metaadatok
frissítését biztosítják
és követik nyomon, vagy a Snapshots
módszertõl, ahol pillanatképeket
tárolunk az állományrendszerrõl, itt egy
konkrét naplót tárolunk a lemez erre a
célra fenntartott részén, amely bizonyos
esetekben akár egy teljes külön merevlemez is
lehet.Ellentétben a többi naplózó
állományrendszertõl, a
gjournal módszere blokk alapú
és nem az állományrendszer
részeként került implementálásra
— csupán a GEOM egyik
bõvítménye.A gjournal
támogatásához a &os; rendszermag
konfigurációs állományában be
kell állítani a következõ opciót
— amely a 7.X rendszereken
alapbeállítás:options UFS_GJOURNALAmennyiben naplózással rendelkezõ
köteteket szeretnénk a rendszerindítás
során csatlakoztatni, a
/boot/loader.conf állományban
következõ sor hozzáadásával
töltessük be a geom_journal.ko
modult:geom_journal_load="YES"Szükség esetén ezt a funkciót
akár a rendszermagba is beépíthetjük, ha
felvesszük a következõ sort a rendszermag
konfigurációs
állományába:options GEOM_JOURNALHa ezt aktiváltuk, egy szabad
állományrendszeren az alábbi
lépéseken keresztül tudunk létrehozni
egy naplót, feltéve, hogy a
da4 egy új
SCSI-meghajtó:
- &prompt.root; gjournal label /dev/da4
-&prompt.root; gjournal load
+ &prompt.root; gjournal load
+&prompt.root; gjournal label /dev/ad4Ennél a pontnál lennie kell egy
/dev/da4 és egy
/dev/da4.journal
eszközleírónak. Hozzunk létre egy
állományrendszert ezen az eszközön:&prompt.root; newfs -O 2 -J /dev/da4.journalEz a parancs létrehoz egy naplózó
UFS2 állományrendszert.Csatoljuk is be a mount
segítségével az eszközt
kívánt csatlakozási pontra:&prompt.root; mount /dev/da4.journal /mntHa több slice-unk is van, akkor a napló
mindegyik slice-hoz külön létrejön.
Például, ha az ad4s1
és ad4s2 egyaránt
slice-ok, akkor a gjournal legyártja
az ad4s1.journal és
ad4s2.journal
eszközleírókat. Abban az esetben, ha
kétszer futattjuk le a parancsot, az eredmény
journals lesz.Bizonyos körülmények között
kívánatos lehet a naplót egy másik
lemezen tartani. Ilyen esetekben a naplózás
bekapcsolásához a naplót
biztosító szolgáltatót vagy
tárolóeszközt a naplózni
kívánt eszköz után kell szerepeltetni.
A naplózás akár az aktuálisan
használt állományrendszeren is
aktiválható a tunefs
használatával. Az állományrendszer
módosításakor viszont mindig érdemes
biztonsági másolatot készíteni! Az
esetek többségében a
gjournal hibát fog jelezni, mivel nem
tudja létrehozni a naplót, azonban ez nem
védi meg az adatainkat a tunefs
helytelen használata által okozott
sérülésektõl.A rendszerindító lemezen is lehet
naplózást használni. Ennek részleit a
Naplózó UFS használata asztali számítógépeken
címû cikkbõl ismerhetjük meg.
diff --git a/hu_HU.ISO8859-2/share/sgml/freebsd.ent b/hu_HU.ISO8859-2/share/sgml/freebsd.ent
index ac919a8d33..e434abdcf5 100644
--- a/hu_HU.ISO8859-2/share/sgml/freebsd.ent
+++ b/hu_HU.ISO8859-2/share/sgml/freebsd.ent
@@ -1,94 +1,94 @@
UNIX">
NIS">
TeX'>
LaTeX'>
-
+
[ OK ]">
[ Cancel ]">
[ Yes ]">
[ No ]">