Mire jó a CONFIG.SYS?
A CONFIG.SYS egy egyszerű szövegfile, amelynek segítségével
megadhatjuk, hogy a gép a DOS kerneljét követôen milyen
ún. eszközmeghajtó programokat (device driver)
töltsön be a memóriába. A device driverek
lehetôvé teszik olyan hardware eszközök kezelését, amelyekhez a
DOS kernelje nem biztosít közvetlen hozzáférést (ilyen pl. az egér).
A device driverek rendszerint .SYS kiterjesztéssel rendelkeznek,
de a DOS újabb változataiban már felbukkantak az .EXE kiterjesztésű,
egyszerre device driverként és futtatható programként is viselkedô
driverek (pl. SMARTDRV.EXE, EMM386.EXE).
A leggyakrabban használt device driverek (MS-DOS v6.22 esetén)
- HIMEM.SYS
- Ezzel a driverrel lehet a valós (real) módban futó
programok számára elérhetôvé tenni a mágikus 1MB-os határ fölötti
memóriaterületet (XMS = extended memory).
Ha például 8 mega RAM-unk van, akkor ezt a drivert
nagy valószínűséggel szerepeltetni fogjuk a CONFIG.SYS-ben (hacsak nem
használunk olyan memóriamenedzsert, amely kiváltja a HIMEM.SYS használatát,
ilyen pl. a Quarterdeck QEMM386).
- EMM386.EXE
- A HIMEM.SYS szolgáltatásaira épülô driver, amely
lehetôvé teszi az EMS memória (EMS = expanded memory)
használatát. Az EMS egy az XT-k idejébôl visszamaradt hardware-es
memóriabôvítési megoldás, amely ISA slotba illeszthetô memóriakártyák
segítségével tette lehetôvé 1 MB-nál több memória megcímzését.
Ma már nem sűrűn használják a hardware-es megoldást,
mert a 386-os processzorok
fejlett memóriakezelési technológiája (paging) lehetôséget ad ennek
a hardware-es bôvítésnek a szoftveres szimulációjára. Ezt a szimulációt
végzi el az EMM386.EXE. A driver használatára azért
van még mindig szükség, mert számtalan olyan DOS-os program van, amelynek
a memóriakezelése ezen a szabványon alapul.
- ANSI.SYS
- Használatával ANSI terminállá alakíthatjuk át a gépünket,
azaz a DOS képernyôre író szolgáltatásai a driver betöltése után felismerik
az ún. ANSI-szekvenciákat, és végre is hajtják azokat. Az ANSI
szekvenciák lehetôséget adnak pl. a kurzor mozgatására, színek használatára,
szövegbevitelre, menüzésre, stb.
- DISPLAY.SYS
- Lehetôséget nyújt (EGA és VGA kártyákon) a
szöveges módban (80x25) használt default karakterkészlet megváltoztatására.
A tényleges váltást a MODE CON paranccsal lehet eszközölni.
- INTERLNK.EXE
- Ha van egy soros vagy párhuzamos kábelünk (mindkét
végén COM illetve LPT csatlakozóval), akkor összeköthetünk két gépet
a megfelelô portjaikon keresztül. Ha ezt a drivert az egyik gépen (A)
betesszük a CONFIG.SYS-be (majd rebootolunk), és a másik gépen (B) elindítjuk
az INTERSVR.EXE programot, akkor az (A) gépen megjelenik a (B) gép minden
elérhetô drive-ja (is), és úgy manipulálhatunk az (A)-n velük, mintha a (B)
elôtt ülnénk. Ez a szolgáltatás nagyon jól használható nagy mennyiségű
adat két gép közötti átvitelére (amennyiben nincs hálózat).
- RAMDRIVE.SYS
- Ezzel a driverrel gyárthatunk RAM-disket. A RAMDRIVE.SYS
a központi memóriából (általában az XMS-bôl) lefoglal egy megadott méretű
területet, és ezen a területen egy DOS partíciót szimulál (magyarul
megjelenik az eddigiek mellett egy új logikai drive, mondjuk E: néven).
Ezt a partíciót ugyanúgy kezelhetjük, mintha mondjuk egy vinyón lenne:
írhatjuk/olvashatjuk, file-okat hozhatunk létre rajta, stb. Persze ha
kikapcsoljuk a gépet, akkor a RAM-disk tartalma elvész, ezért
kikapcsolás elôtt nem árt átmenteni a tartalmát valamely
fizikai valójában is létezô partícióra.
- SETVER.EXE
- Ha ezt a drivert installáljuk, akkor a DOS "hazudni"
fog egyes programoknak a verziószámát illetôen. Vannak programok,
amelyek úgy indulnak, hogy megkérdezik a DOS-tól a verziószámát, és ha
nem egyezik meg egy általuk megkívánt értékkel (pl. 3.3), akkor nem
hajlandóak elindulni. A SETVER.EXE-vel kicselezhetjük ezt: a DOS minden
programról, amely a verziószámát tudakolja, megállapítja, hogy szerepel-e
egy listában (a SETVER.EXE tartalmazza ezt a listát, de mi is bôvíthetjük),
és ha igen, akkor a listában a névhez rendelt verziószámot fogja visszaadni.
- SMARTDRV.EXE
- Szoftveres disk cache. Az adatkezelô programok
gyakran írják-olvassák több százszor (ezerszer) ugyanazt a lemezterületet
egymás után. Ha ilyenkor minden lépésben a vinyóhoz nyúlnánk, az elég
lassú lenne. A disk cache programok egy olvasási kérelem esetén beolvassák
a kért lemezblokk(oka)t egy általuk lefoglalt memóriaterületre (cache
buffer), és csak ezután adják vissza a kért blokkot a programnak. Ha a
program legközelebb olyan blokkot kér, amely már szerepel a cache bufferben,
akkor a cache egybôl visszaadhatja a kért adatot, nem kell a lemezen
kotorásznia. Ugyanez
eljátszható az írással is: a cache nem írja ki egybôl a változtatásokat
a lemezre, hanem a cache bufferben "gyűjti" ôket, és ha összegyűlt egy
kupacnyi, akkor fordul csak a háttértárolóhoz, hogy az adatokat egy
gyors menetben kiírja (ez persze veszélyes, áramszünet esetén
könnyen elôfordulhat az adatvesztés, ha a program által kiírtnak vélt
adatok csak a cache-bufferig jutottak el, a lemezre már nem).
Az egyes device driverekrôl a DOS HELP nevezetű parancsa segítségével
szerezhetünk bôvebb információkat (pl. a HELP EMM386.EXE parancs
az EMM386-ról ad részletes leírást).
A CONFIG.SYS-ben használható fontosabb parancsok (MS-DOS v6.22 esetén)
- BUFFERS=x[,y]
- A szektorbufferek számának meghatározására szolgál.
A szektorbufferek egy igen primitív disk cache-t valósítanak meg,
ha használunk más disk cache-t (pl. SMARTDRV), akkor célszerű ezt
minimális értékre beállítani (minden buffer 532 byte memóriát foglal).
A második paraméter (y) a másodlagos szektorbufferek számát állítja be
(default a 0).
- FILES=x
- Meghatározza, hogy hány file lehet egyszerre nyitva
(ebbe a DOS által megnyitott összes file beletartozik).
- DOS=[HIGH | LOW][,UMB | NOUMB]
- A következô paraméterek használhatóak:
- UMB vagy NOUMB:
a DOS-ra bízzuk-e az EMM386 vagy más memóriamenedzser által biztosított
UMB-k (Upper Memory Block) menedzselését. Az UMB-k az XMS memóriából
leszakított darabok, amelyeket az EMM386 címezhetôvé tesz az alsó 1 MB-os
címterület felsô 384K-s ablakában (Upper Memory Area), és ezzel
lehetôvé teszi, hogy pl. a device drivereinket ide töltsük (és
ezzel növeljük a 640k alatti szabad terület méretét).
- HIGH vagy LOW:
Engedélyezzük-e, hogy a DOS feltöltse az operációs rendszer minél
nagyobb részét a HMA-ba (High Memory Area). Ha HIGH, akkor engedélyezzük,
ha LOW, akkor nem. Ahhoz, hogy ez működjön, szükséges (és elégséges:-)
valamely XMS-driver (pl. HIMEM.SYS) betöltése (engedélyezni kell az A20
címvonalat).
A két lehetséges paraméter megadható egy parancsban is, vesszôvel
elválasztva: pl. DOS=HIGH,UMB.
- SWITCHES=/F /K /N /...
- Az MS-DOS betöltôdési folyamatát konfigurálhatjuk.
Egy használható opciója van: SWITCHES=/F, ha ezt beiktatjuk
a CONFIG.SYS elejére, akkor a DOS nem fog a Starting MS-DOS...
felirat megjelenése után 2 másodpercet várni.
- LASTDRIVE=x
- Azt adja meg, hány logikai meghajtót tartson nyilván
a DOS a belsô adattáblázataiban (x A-tól Z-ig bármi lehet).
Ha a LASTDRIVE mondjuk D-re van beállítva
(LASTDRIVE=D), akkor hiába van 5 partíciónk, nem
fogunk látni kettônél többet. Célszerű Z-re állítani.
- STACKS=x[,y]
- Ha egy hardware interrupt meghívódik, a megszakítási
rutin rendszerint az éppen megszakított program stackjára
(jobb esetben a sajátjára) szemetel. Ha ez a stack nem elég nagy (pl.
a megszakítási rutin egy 8K-s buffert akar lefoglalni a 2K méretű
stacken), akkor abból nagy gáz lehet ("Stack Overflow", "Exception 12"
vagy más egyéb nyalánkság).
A STACKS paranccsal arra utasítjuk
a DOS-t, hogy minden hardware megszakítási rutinja futás elôtt állítsa át
az SS:SP-t egy belsô DOS stackre, és oda szemeteljen (majd ha lefutott,
akkor állítsa vissza az eredeti állapotot). Mivel egy hardware IRQ rutint
is megszakíthat egy magasabb prioritású hardware IRQ (amelyhez tartozó
handlernek egy másik stack kell),
ezért több DOS stack-et is lefoglalhatunk. A STACK parancs két paramétere
a DOS stackek számát (x), és a stackek méretét (y) adja meg (pl.
STACKS=9,256).
- SHELL=...
- Itt lehet megadni a használni kívánt parancsértelmezô
(shell) elérési útját, nevét és paramétereit. Ha nem adjuk, meg, akkor
C:\COMMAND.COM az alapértelmezés.
- NUMLOCK=ON | OFF
- Ha nincs a BIOS-unkban "Num Lock Boot Status" opció,
akkor ezzel kiválthatjuk. Azt adja meg, hogy a Num Lock a CONFIG.SYS
lefutása után milyen állapotban legyen (ON vagy OFF).
- COUNTRY=...
- Ez a rémálom kezdete. Lehetôvé teszi, hogy "magyarítsuk"
a DOS-unkat. Ennek a magyarításnak (kombinálva a DISPLAY.SYS driver, a
MODE CON parancs és a KEYB rezidens billentyűzetdriver használatával)
a leggyakoribb következményei:
- megszokott angol nyelvű
programjainkban a keretkarakterek helyett ékezetes betűk és más
kriksz-krakszok jelennek meg,
- a nyomtatók a 852-es kódlap alatt készített szövegeket 437-es (US)
standard ASCII kódlappal írják ki, következésképpen az ékezetes betűk
helyett a nyomtatásban keretkarakterek és más kriksz-krakszok jelennek
meg (megoldás: be kell iktatni egy szoftveres konvertert a program és
a nyomtató közé),
- mivel használhatunk ékezetes karaktereket is a file-nevekben, nagyobb
esélyünk van rá, hogy a más(ok)hoz átvitt lemezeinken lévô file-okat az
illetô(k) nem fogják tudni kezelni,
- a KEYB és a DISPLAY.SYS együttesen kb. 20 kilobyte-ot lefoglalnak
a memóriából.
Ha valaki mindezek ellenére is használni kívánja a COUNTRY parancsot,
akkor forduljon a DOS help-jéhez. Egyébként nem igazán hiszem, hogy
DOS alatt erre szükség lenne, mert léteznek olyan billentyűzetdriverek
(pl. MultiKey), amelyek rendkívül rugalmasan konfigurálhatóak: beállíthatjuk
a billentyűzetkiosztást (melyik billentyűre milyen ASCII kódot generáljon),
átállíthatjuk a DOS-ban használt karakterkészletet (ékezetesíthetjük),
mindezt úgy, hogy nem kell áttérni a 852-es kódlapra. Ráadásul a MultiKey
lehetôséget ad több installált kiosztás közötti futásidejű választásra
(pl. Caps Lock + F1,F2,F3,... kombinációval). Saját tapasztalatom alapján
azt tudom mindenkinek javasolni, hogy a 852-es kódlapot DOS (és Windows)
környezetben messzirôl kerülje el, mert elég sok problémát tud okozni
a használata (Windows alatt is - magyar Windows suxxx).
A végére maradt a két legfontosabb parancs:
- DEVICE=...
- Ezzel lehet egy device driver-t betölteni. A ... helyén
meg kell adni a driver elérési útját, nevét, és a neki átadandó paramétereket
(pl. DEVICE=C:\DOS\HIMEM.SYS /TESTMEM:OFF). Ha a DOS
kezeli az UMB-inket (és betöltöttük az EMM386-ot), akkor DEVICE
helyett használható a DEVICEHIGH parancs, ez megkísérli valamelyik
UMB-ben elhelyezni a betöltendô drivert (ha nem sikerül, akkor a
DEVICEHIGH úgy működik, mintha sima DEVICE lenne).
- INSTALL=...
- Ezzel lehet a CONFIG.SYS-bôl elindítani egy
normál programot (BAT, COM, EXE). Olyan programot ne indítsunk INSTALL
paranccsal, ami nem adja vissza egybôl a vezérlést a CONFIG.SYS-nek
(pl. Norton Commander), az ilyet írjuk be inkább az AUTOEXEC.BAT
végére. (Az INSTALL parancsnak is van UMB-s változata: az INSTALLHIGH.)
További megjegyzések:
- A CONFIG.SYS-ben egy sort a REM
paranccsal vagy a ; használatával
lehet kommentnek nyilvánítani.
- A SET parancs használható egy környezeti változó
értékének beállítására (pl. SET TEMP=C:\TEMP).
Menüzési lehetôségek
Elôfordulhat, hogy a gépünket több különbözô CONFIG.SYS-szel szeretnénk
használni. Például szeretnénk egy CONFIG.SYS-t
- arra az esetre, ha
Windows-ozunk (ilyenkor nincs szükség sem az EMM386.EXE-re, sem a
DOS-os egér meghajtóra),
- arra az esetre, ha csak XMS-t igénylô programokat (játékok,
demók) futtatunk (ekkor szintén nem kell az EMM386.EXE, de a mouse
driverre szükség lehet),
- arra az esetre, ha EMS-t használó programokat futtatunk,
- arra az esetre, ha soros/párhuzamos kábellel összekötöttük a gépünket
valaki máséval, és az INTERLNK.EXE-t el akarjuk indítani,
- ...
Egy lehetséges megoldás az lenne, hogy létrehozunk CONFIG.1, CONFIG.2,
stb. file-okat, és írunk egy batch file-t, amely rámásolja a
paramétereként megadott számú CONFIG.x-et a CONFIG.SYS-re,
majd rebootolja a gépet.
Az MS-DOS v6.22 már a CONFIG.SYS szintjén is biztosítja a multikonfigurációs
lehetôségeket. Egy több konfigurációt tartalmazó CONFIG.SYS-t a
következôképpen kell elkészíteni:
[menu]
menuitem=menu1, Menu 1 hosszabb leírása
menuitem=menu2, Menu 2 hosszabb leírása
...
Minden "menuitem" sor deklarál egy konfigurációt, amelynek van egy rövid
azonosítója (pl. menu1), és (opcionálisan) egy hosszabb leírása is (ezt
jeleníti meg a DOS bootoláskor, mint választható lehetôséget). Ha
a hosszabb leírást nem adjuk meg, akkor a DOS az azonosítót (címkét)
használja helyette.
[common]
BUFFERS=10,0
FILES=80
SHELL=C:\COMMAND.COM /E:1024 /P
...
A [common] szekcióba kerülnek azok a parancsok, amelyeket mindig
végre kell hajtani, függetlenül attól, hogy melyik menüpontot
választottuk.
[menu1]
DEVICE=C:\DOS\HIMEM.SYS
DEVICE=C:\DOS\EMM386.EXE
...
[menu2]
DEVICE=C:\DOS\INTERLNK.EXE
...
[...]
...
Ezzel a szerkezettel lehet megadni az egyes menüpontokhoz (a [menu]
szekcióban megadott azonosító címkékhez) tartozó konfigurációs parancsokat.
A DOS csak a választott menüelemhez tartozó parancsokat hajtja végre.
Az MS-DOS v6.22-be épített további menüzési parancsok lehetôséget
adnak:
- a menüpontok színének megváltoztatására (menucolor),
- egy default
menüelem megadására (ha eltelik egy másodpercben megadott idôtartam
anélkül, hogy választottunk volna, akkor a default-ot veszi választottnak),
- almenük létrehozására (submenu),
- más file-ok beszúrására (include).
A részleteket ld. a DOS HELP-ben.
Példa a CONFIG.SYS-re
|