Ako som slubil, skusim napisat nejaky prehlad prepinacov v boot.ini - preberam konvenciu Marka Russinovicha (www.sysinternals.com), takze polozky dostupne od Windows 2000 su vyznacene cervene, dostupne od XP (resp Windows 2003 Server) modrou farbou.
Pre pracu s boot.ini pouzivame zvycajne tri sposoby:
ARC – Advanced RISC Computing
Pred tym, nez sa pustime do podrobnosti si vysvetlime ARC (Advanced RISC Computing) konvenciu, co je vlastne multi(0)disk(0)rdisk(0)partition(1)\WINNT=.
Budeme sa zaoberat len konvenciou pre platformu x86, pretoze RISC to ma riesene trosku inak. V zaklade sa mozeme stretnut s dvoma zapismi:
multi(X)disk(Y)rdisk(Z)partition(W)\%windir% a scsi(X)disk(Y)rdisk(Z)partition(W)\%windir%. Novsie verzie NT uz scsi() nemusia pouzivat, staci multi.
Multi() hovori pocitacu, ze systemove subory nacita BIOS pocitaca. OS pouzije k nacitaniu sys. suboru NTOSKRNL.EXE a dalsich volanie INT13.
Vezmeme to ale trosku praktickejsie a rozpiseme si, co znamenaju X, Y, Z a W.
Scsi() sa pouziva, ked chceme nechat radic nacitat systemove subory, existuje este signature(), ten sa ale nepouziva, takze sa nim nebudeme zaoberat. Na zaver piseme adresar, kde sa windows nachadzaju (WINNT) a nazov, pod ktorym sa ma prezentovat (Windows XP Professional). Za nazvom nasleduju este parametre.
/3GBPouziva sa pre definovanie rozdelenia pamate. Uzivatelovi sa poskytuje 3GB (namiesto standartnych 2GB), system sa znizi na 1GB. Teoreticky by to malo hodne pomoct systemovo naroznym aplikaciam (databaze), problemom ale je to, ze aplikacie musia mat specialny flag, aby dokazali tuto vyhodu vyuzit. Takisto je to nevhodne napriklad pre Terminal Services alebo pre Citrix, kde kazda session obsahuje procesy beziace v systemovej casti, takze pouzitim prepinaca v skutocnosti dostupnu pamat znizite, aj ked velke mnozstvo dokumentacie uvadza presny opak (!).
/BaseVideoNastavi system na rozlisenie 640x480.
/BaudRate=Nastavime rychlost prenosu, defaultnou hodnotou je 19200.
/BootLogDo %windir% sa zapise subor ntbtlog.txt. Je ale prilis jednoduchy – jedine informacie, ktore poskytne sa tykaju toho, ktore ovladace boli/neboli natiahnute do pamate. Zaujimavostou je akurat to, ze pri pouziti prepinaca /inram sa pocet poloziek radikalne zvysil (pri normalnom boote cca 300 zapisov, pri inram okolo 3000).
/BootLogoUmoznuje “tweakovat” bootovaciu obrazovku. Musi to byt 640x480 bitmapa (16 farieb) ulozena pod nazvom Boot.bmp, potom staci len definovat /noguiboot a /bootlogo.
/BreakPri prvom moznom momente pouzije volanie kernelu break, t.j. zastavi nacitavanie systemu.
/BurnMemory=Definuje velkost pamate, ktoru windows NEMOZE pouzivat. Velkost je definovana v MB, t.j. /burnmemory=64 definuje, ze windows moze pouzivat vsetku dostupnu fyzicku pamat okrem 64MB. Pokial definujete hranicnu hodnotu (t.j. pocitac ma 128MB a vy nastavite, ze 128MB nemoze pouzivat), windows nenabootuje (dokonca ani boot GUI, t.j. panel s ukazovatelom statusu). Teda sa jedna o dalsiu moznost, ako znefunkcnit system Windows. Dufam, ze tento clanok necitaju ziadny autori virusov :) Prakticke vyuzitie moze byt rozdielne, napr. testovanie vadnej RAM, alebo pre betatesterov Windows Vista testovanie vykonu s BootDrive ;)
/Channel=Nastavenie kanalu pre IEEE 1394, nastavuju sa hodnoty od 0 do 64.
/ClkLvlNastavi multiprocesor (!) HAL (t.j. nie HAL.dll ale HALMPS.dll) pre pouzitie level-sensitive system clock namiesto standartnej hodnoty edge-triggered clock.
/CmdConsSpusti recovery konzolu, v podstate sa jedna o hodne slabu konkurenciu pre linuxovu konzolu zameranu na obnovenie systemu. Mozno vam pride zvlastne, ako system pusti rcmd, ta sa presda pusta z instalacneho cdcka. Je ale moznost, ako rcmd dostat aj do normalneho windowsu – staci z instalacneho media spustit winnt32.exe s parametrom /cmdcons. Na disku vam v roote pribudne adresar cmdcons, ktory ma od 5 do 7MB. Od tohoto momentu je mozne v boot.ini pouzivat prepinac /cmdcons. Dolezite upozornenie – pri rcmd sa nepouziva ARC, ale normalna cesta smeruje na subor bootsect.dat, takze naprikladC:\CMDCONS\BOOTSECT.DAT=“Konzola“ /cmdconsPomerne sikovna a prijemna zalezitost, podla tradicie Microsoftu prilis nezverejnena :(
/CrashDebug=Sposobi, ze debugger bude pouzivat definovany port len v pripade zrutenia systemu. Vyhodou je, ze dany port mozeme pouzivat na lubovolne ucely a pripojime na neho debugger len v pripade potreby.
/DebugZapne debugging kernelu. Od tohoto momentu mozeme debuggovat system.
/DebugPort=Nastavime port, na ktory je pripojeny debugger. Standartne sa jedna o COM1, takze polozka bude /debugport=COM1. Je mozne pouzit IEEE1394.
/ExecuteTento prepinac vypina no-execute (NX) ochranu proti buffer overflow chybam. Neotestovane – nemam k dispozicii 64bit pocitac od AMD :(
/FastDetectJediny defaultny prepinac, v NT znamy ako /NOSERIALMICE. Je pritomny kvoli kompatibilite s NT4 (definuje, ci NTDETECT bude scanovat zariadenia na paralelnych a seriovych portoch, v novsich OS sa o to stara PnP). Pokial by tento prepinac nebol pritomny a na COM porte by bolo ine zariadenie nez mys, detekcia by sa nespravala podla ocakavania.
/InRamOvladace a spol sa nahravaju do pamate. Bohuzial som nemal dost priestoru na testovanie (malo pamate), ale teoreticky by system mohol fungovat ako velky ramdisk – napr. pri WinPE bootovaneho z cdcka by umoznoval menit cdcka. Otazka pouzitelnosti skor zavisi od toho, nakolko sa cloveku chce experimentovat ;)
/IntAffinityNastavi HALMPS.dll (multiprocessor HAL) tak, aby interrupty predaval len najvyssiemu procesoru. Defaultne posiela vsetkym.
/Kernel=Umoznuje zmenit nazov pre obraz kernelu (defaultne ntoskrnl.exe). Na prvy pohlad pomerne zaujimava feature, ktorej chyba jeden dolezity aspekt – nie je mozne urcit cestu, ale len nove meno :( Takze moznost vytvorit si „nahradny“ kernel na safe recovery tym odpada, teda pokial si takyto nahradny kernel nevytvorite na kazdom jednom servery este pred crashom. Na druhu stranu sa jedna o vybornu vlastnost pre vyvojarov, ktori sa mozu velmi jednoducho prepinat medzi retail a checked buildami.
/HAL=Viz. /kernel, akurat tu sa nastavuje nazov pre hal.dll.
/LastGoodKnowObnovi poslednu znamu funkcnu konfiguraciu.
/MaxMem=Definuje maximum fyzickej pamate, ktore MOZE system pouzit. Presny opak BurnMemory.
/MaxProcsPerCluster=Maximum procesorov pre pouzitie v clusteri.
/MiniNTPouziva sa pre WinPE – jeho funkcionalita je ale opat neprilis jasna. Pokial sa pouzije s normalnym OS, jedinymi viditelnym nasledkom je nepouzivanie page file. V podstate tento prepinac sposobuje to, ze SYSTEM je nacitany ako docasny hive, t.j. po restarte sa hive subor neuklada.
/NoExecuteJedna sa o moznost pre pocitace s podporou HW DEP – HW ochrana proti buffer overflow. Pretoze ziaden podobny pocitac nemam po ruke, nemal som moznost otestovat. Podmienkou je /PAE prepinac. Pouzivane prepinace su OPTIN, OPTOUT, ALWAYSON a ALWAYSOFF.
/NoGUIBootPocas bootu operacneho systemu sa nenacitava ovladac pre GUI. V praxi to znamena, ze neuvidite oblubenu obrazovku, kde vidno, ako system nabieha a do pamate sa nenacitava ovladac, ktory to ma na starosti. Co je ale menej zname je druha funkcia tohoto general ovladaca – vykresluje aj povestnu BSOD, takze bez tohoto switchu nefunguje BSOD (neotestovane, ale logicke ;)).
/NoLowMemPodmienkou je prepinac /PAE a viac ako 4GB pamate. Pokial su tieto podmienky splnene, system nepouziva prvych 4GB pamate, ale ovladace a aplikacie uklada do pamate nad tuto hranicu.
/NoPAEPrinuti NT loader nacitat non-Physical Address Extension verziu kernelu, aj ked pocitac je schopny pouzivat PAE a ma viac ako 4GB fyzickej pamate.
/NoDebugZnemozni debugging. Ma prednost pre debuggovacimi prepinacmi, pri pouziti tohoto prepinaca sa ignoruju /debug, /debugport a /baudrate. Vacsinou mam nadefinovane debug prepinace, ale disablnute pomocou tohoto prepinaca.
/NoSerialMice=Viz /fastdetect
/NumProc=Definuje pocet procesorov, ktore sa mozu pouzivat.
/OneCPUPrinuti system pouzivat len jeden procesor.
/PAEPrinuti NT loader, aby nacital kernel schopny pracovat s x86 PAE. Jedna sa o 64bitove adresovanie pamate, takze tento prepinac ma zmysel pri 64bitovych systemoch s velkym objemom pamate.
/PerfMem, /PerfPagesTieto switche by nemali fungovat, pretoze sa pouzivali (pouzivaju?) pre BBT – Basic Block Testing. Mozno su povolene vo Windows Vista, pretoze je vo vyvoji, ale to by bolo treba vyskusat ;)
/PCILockIO/IRQ zdroje nie su pridelovane dynamicky systemom, ale prideluju sa podla nastaveni v BIOSe. Viz http://support.microsoft.com/default.aspx?scid=kb;EN-US;148501
/RdImageOffset=Hovori ntloaderu, kde sa v sdi subore zacina image. Standartne pouzivana hodnota je 4096.
/RdPath=Nastavuje cestu k SDI suboru (System Disk Image), pomocou ktoreho system nabootuje. Jedna sa o technologiu pouzivanu s Windows Embedded (http://msdn.microsoft.com/embedded/default.aspx). Format cesty je net(0)\image_subor.sdi.
/RedirectJedna sa o zapnutie podpory pre EMS – Emergency Management Services. Je to specialna vlastnost, ktoru podporuje Microsoft Windows 2003 Server, ktora umoznuje riadenie systemu pomocou redirectingu – miesto klavesnice sa pouzije COM port.
/SafeBoot:SafeModeType
· MINIMAL – standartny safe mod, ktory nacita len najdolezitejsie ovladace
· NETWORK – standartny safe mod rozsireny o sietovu podporu
· AlternateShell – pouzije alternativny shell, ktory je definovany v HKLM\SYSTEM\CurrentControlSet\Control\SafeBoot, kluc AlternateShell typu REG_SZ. Hodnotou je standartne cmd.exe (v obrazovke pri stlaceni F8 sa prezentuje ako safe mod s podporou konzole). Pouzitie je Safeboot:Minimal(AlternateShell)
· DSREPAIR- da sa pouzit len na domenovych kontroleroch, aktivuje Directory Service Restore Mode
/SCSIOrdinalNasmeruje system na SCSI ID kontroleru. Viz. http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q103/6/25.asp&NoWebContent=1
/SdiBoot=Hovori systemu Windows, aby nabootoval z sdi imagu. Suvisi s Windows Embedded, viz http://www.windowsembeddedkit.com/DecisionTree.aspx.
/SOSZobrazuje ovladace, ktore sa natahuju do pamate. Jeden z dvoch prepinacov, ktore standartne pouzivam na svojich pocitacoch.
/TimeRes=Nastavuje rozlisenie systemoveho casovaca na multiprocesorovy HAL. Argumentom je cislo vyjadrujuce stovky nanosekund, povolene hodnoty su 0.98, 2.00, 3.90 a 7.80.
/Use8254Ako timer by sa mal pouzit 8254 timer chip – su tu nejaky pamatnici? ;)
/UserVa=Podobne ako prepinac /3GB, tento prepinac poskytuje aplikaciam viac pamate. Na rozdiel od /3GB prepinaca umoznuje ale specifikovat velkost – prebera ako parameter hodnotu od 2048 do 3072.
/Win95Ntloader nacita boot sector zo suboru bootsect.w40.
/Win95DOSNtloader nacita boot sector zo suboru bootsect.dos.
/YearPrepinac vytvoreny pre testovanie s Y2K problem. Nastavuje system, aby ignoroval nastavenia hodin a pouzil nastaveny cas. Tento prepinac ovplyvnuje kazdy software na pocitaci vratane kernelu.
Pokial niekomu pride, ze tu nieco chyba, alebo ma k niektoremu prepinacu nejake vyhrady/skusenosti – sem s nimi J
Martin Zugec
Přepínač /PAE umožňuje u 32-bitových operačních systémů Windows 2000 a Windows Server 2003 adresovat více než 4 GB paměti. 64-bitové systémy tento přepínač nepodporují; není ani proč, nativně zvládají adresovat teoreticky až 64 exabytů pamětí (prakticky většina dnešních 64-bitových systémů podporuje od 8 GB do 256 TB). Podrobnosti o přepínačí /PAE (a také /AWE) lze nalézt např. v http://support.microsoft.com/kb/283037/cs.
Marian