Blogs

Slubeny clanok - boot.ini switche

  • Comments 5
  • Likes

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:

  • rucne editovanie suboru boot.ini
  • modifikacia pomocou Control Panelu/System/Upresnit/Spousteni a zotaveni systemu/Upravit
  • pomocou nastroja bootcfg.exe, specialne uzitocne pre skriptovanie. Viz bootcfg /?.

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.

  • multi(X) -  poradove cislo adapteru. Vzdy by malo byt 0(prve styri IDE disky alebo pre SCSI prve dva disky na primarnom radici)
  • disk(Y) – je vzdy nula, pretoze sa pouziva INT13 (samozrejme plati pre multi), takze systemove subory vyhladava BIOS
  • rdisk(Z) – cislo HDD na adaptere, ma hodnoty od 0 do 3 (0-1 prvy kanal, 2-3 druhy kanal, takze 1 je slave na primary)
  • partition(W) – cislo particie (na rozdiel od XYZ je prva mozna hodnota 1, 0 znamena nepouzity)

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.

 

/3GB
Pouziva 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 (!).

 

/BaseVideo
Nastavi system na rozlisenie 640x480.

 

/BaudRate=
Nastavime rychlost prenosu, defaultnou hodnotou je 19200.

 

/BootLog
Do %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).

 

/BootLogo
Umoznuje “tweakovat” bootovaciu obrazovku. Musi to byt 640x480 bitmapa (16 farieb) ulozena pod nazvom Boot.bmp, potom staci len definovat /noguiboot a /bootlogo.

 

/Break
Pri 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.

 

/ClkLvl
Nastavi multiprocesor (!) HAL (t.j. nie HAL.dll ale HALMPS.dll) pre pouzitie level-sensitive system clock namiesto standartnej hodnoty edge-triggered clock.

 

/CmdCons
Spusti 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 napriklad
C:\CMDCONS\BOOTSECT.DAT=“Konzola“ /cmdcons
Pomerne 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.

 

/Debug
Zapne 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.

 

/Execute
Tento prepinac vypina no-execute (NX) ochranu proti buffer overflow chybam. Neotestovane – nemam k dispozicii 64bit pocitac od AMD :(

 

/FastDetect
Jediny 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.

 

/InRam
Ovladace 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 ;)

 

/IntAffinity
Nastavi 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.

 

/LastGoodKnow
Obnovi poslednu znamu funkcnu konfiguraciu.

 

/MaxMem=
Definuje maximum fyzickej pamate, ktore MOZE system pouzit. Presny opak BurnMemory.

 

/MaxProcsPerCluster=
Maximum procesorov pre pouzitie v clusteri.

 

/MiniNT
Pouziva 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.

 

/NoExecute
Jedna 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.

 

/NoGUIBoot
Pocas 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 ;)).

 

/NoLowMem
Podmienkou 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.

 

/NoPAE
Prinuti NT loader nacitat non-Physical Address Extension verziu kernelu, aj ked pocitac je schopny pouzivat PAE a ma viac ako 4GB fyzickej pamate.

 

/NoDebug
Znemozni 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.

 

/OneCPU
Prinuti system pouzivat len jeden procesor.

 

/PAE
Prinuti 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, /PerfPages
Tieto 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 ;)

 

/PCILock
IO/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.

 

/Redirect
Jedna 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

 

/SCSIOrdinal
Nasmeruje 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.

 

/SOS
Zobrazuje 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.

 

/Use8254
Ako 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.

 

/Win95
Ntloader nacita boot sector zo suboru bootsect.w40.

 

/Win95DOS
Ntloader nacita boot sector zo suboru bootsect.dos.

 

/Year
Prepinac 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

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment
  • /FASTDETECT - IMHO WinNT tento switch neznaly (a nebo byl nedokumentovaný)
    /NoGUIBOOT - BSOD by mělo jít vyloudit i bez tohoto switche - stačí zakázat automatický reboot
    /Channel - asi by stálo za zmínku že se jedná o kanál FireWire pro připojení debuggeru
    /NoSerialMice - hodilo se na WinNT4 pokud připojená UPSka pochopila detekci myši jako příkaz pro vypnutí :-)
    /PAE - PAE opravdu NENÍ 64bit adreosvání. Novější procesory umí adresovat až 64GB paměti ale práce s takovou pamětí je pak o něco pomalejší.
    /PciLocl se týká jen WinNT a ničeho novějšího. Hodil se pokud PCI karta o sobě špatně reportovala údaje a BIOS ji namapoval korektně ale WinNT ne (zažil jsem s jednou S3 videokartou)

    executive summary - než se na údaje z tohoto článku spolehnete, tak si přečtěte originál od SysInternals :-)

  • 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

  • Tento článok ma nadchol pretože som ani len netušil (tých vecí čo netuším

  • 4 2 low IQ 2 hack: ten boot.bmp treba dat do zlozky windows

  • 4 2 low IQ 2 hack: ten boot.bmp treba dat do zlozky windows