Boot.ini - Einstellungen

Boot.ini

Aufbau:

1 [boot loader]
2 timeout=-1
3 default=multi(0)disk(0)rdisk(0)partition(2) \Windows
4 [operating systems]
5 multi(0)disk(0)rdisk(0)partition(2)\Windows= “Microsoft Windows XP Professional“ /fastdetect
6 multi(0)disk(0)rdisk(1)partition(1)\Winnt= “Microsoft Windows 2000 Professional“ /fastdetect
7 C:\=“Microsoft Windows 98SE“
8 C:\Boot.deb=“Debian GNU/Linux 3.1“


Das ist eine typische BOOT.INI eines Multiboot-Systems. Die Zeilennummern am Anfang dienen der Übersicht! Analyse Zeile für Zeile:

1 [boot loader]
Fehlt diese Zeile, so wird der erste Eintrag nach [Operating Systems] ohne Auswahlmenü und Wartezeit geladen.

2 timeout=-1
Timeout gibt die Wartezeit in Sekunden an, in der das Bootmenü zur Auswahl des zu startenden Betriebssystems angezeigt wird. Ist die Zeit verstrichen, wird das unter default= angegebene Betriebssystem geladen. Im Beispiel ist ein negativer Wert angegeben. Dies zwingt NTLDR dazu, ewig und drei Tage auf die Auswahl des Betriebssystems zu warten. Dummerweise kennt keines der Standardwerkzeuge von Microsoft einen negativen Wert für Timeout. Das Betrachten der BOOT.INI in Msconfig Register BOOT.INI und der beherzte Klick auf Abbrechen führen dazu, dass Timeout plötzlich auf 3 Sekunden gesetzt ist. Dasselbe gilt für den Weg über Systemeigenschaften / Erweitert / bei Starten und Wiederherstellen einmal auf Einstellungen und dann auf Abbrechen geklickt -> 3 Sekunden.

3 default=multi(0)disk(0)rdisk(0)partition(2) \Windows
In der Default-Zeile wird das nach Ablauf der Wartezeit zu startende Betriebssystem angegeben. Für Win98SE würde der Eintrag: default=c:\ lauten, für Debian default=c:\boot.deb. Bei Windows 2000 default=multi(0)disk(0)rdisk(1)partition(1)\Winnt
Fehlt die Zeile oder Default zeigt auf ein nicht unter [Operating Systems] eingetragenes OS, wird das erste unter [Operating Systems] eingetragene OS kurzerhand zum Standard erklärt.

4 [operating systems]
Eine Auflistung der vorhandenen Betriebssysteme. Dasselbe Betriebssystem kann hier auch mehrfach mit unterschiedlichen Parametern aufgeführt werden, z.B. mit der /3GB Option, wenn Datenbanken diese benötigen bzw. man hin und wieder auch spielen will.
Fehlt diese Zeile, kann man nur noch „zwischen“ dem in default angegebenen System wechseln. Im Beispiel würde NTLDR 4-mal Windows XP anbieten.
Fehlt zusätzlich noch [boot loader], ist das gleichzusetzen mit dem vollständigen Fehlen der BOOT.INI, siehe Zeile 9

5 multi(0)disk(0)rdisk(0)partition(2)\Windows= “Microsoft Windows XP Professional“ /fastdetect
Auf der 2-ten Partition der 1-ten Festplatte (dies betrifft rdisk) befindet sich im Verzeichnis \WINDOWS eine XP-Installation – anscheinend ohne SP2.

6 multi(0)disk(0)rdisk(1)partition(1) \Winnt=“Microsoft Windows 2000 Professional“ /fastdetect
Auf der 1-ten Partition der 2-ten Festplatte befindet sich im Verzeichnis \WINNT eine 2000-Installation.

7 C:\=“Microsoft Windows 98SE“
Hier ist nicht ersichtlich, auf welcher Partition sich Windows 98 befindet. Der erste Schnellschluss, dass sich Win98 auf derselben Partition wie die BOOT.INI befindet, ist ein falscher. Es befindet sich auf der 4ten Partition, die aktuelle ist mit NTFS formatiert.
Dieses wird dadurch gestartet, dass NTLDR den Win98-Bootsektor, der sich in der Datei c:\bootsect.dos befindet, in den Speicher lädt, der Startcode wird ausgeführt und übernimmt die Steuerung des Rechners.

8 C:\Boot.deb=“Debian GNU/Linux 3.1“
Wo sich die Linux-Installation befindet, ist auch hier nicht ersichtlich. Der Mechanismus ist derselbe wie bei 7, der in der Datei c:\boot.deb vorhandene Bootsektor wird in den Speicher geladen und gestartet.

9 Die Boot.ini fehlt.
In diesem Fall informiert NTLDR über eine „Fehlende oder Fehlerhafte Boot.ini“ und sucht beginnend mit der aktiven Partition nach einer Windows-NT- Installation und startet diese. Allerdings klappt das nur, wenn sich die NT- Installation mit einem multi()-Aufruf starten lässt. Sind scsi() oder gar signature()-Aufrufe notwendig, scheitert der Start ohne BOOT.INI. Im Beispiel würde XP jedoch starten.

Obiges Multiboot-System veranschaulicht – so gut es hier eben möglich ist.

Platte 1:[Linux Swap][NTFS wXP ][NTFS Daten][FAT32 w98]
8GB_____:[128MB_____][3GB______][3GB_Aktiv_][2GB______]
Platte 2:[NTFS w2000][Ext3 linux Root][Ext3 Linux home]
8GB_____:[3GB_______][3GB____________][2GB____________]

(Alle Partitionen sind Primär)


ARC-Pfade

In der BOOT.INI werden die Pfade nach der ARC-Namenskonvention (Advanced RISC Computing) definiert. - Es gibt 3 Formate:

multi(W)disk(X)rdisk(Y)partition(Z)\ %systemroot%=“Beschreibung“ /Parameter

scsi(W)disk(X)rdisk(Y)partition(Z)\ %systemroot%=“Beschreibung“ /Parameter

signature(V)disk(X)rdisk(Y)partition(Z)\ %systemroot%=“Beschreibung“ /Parameter


Zusätzlich ist noch das Starten von in Dateien gespeicherten Bootsektoren möglich. NTLDR lädt diesen Bootsektor dann in den Speicher und übergibt die Steuerung des Computers dann an den enthaltenen Startcode. Damit ist es möglich, auch MSDOS, UNIX, Linux, *BSD etc. zu starten.

Die Multi()-Syntax
Hiermit wird NTLDR angewiesen, die Systemdateien mittels SystemBIOS-Aufrufen zu laden. Dazu verwendet NTLDR Interrupt-13- Firmwareanweisungen, um zum Beispiel die NTOSKRNL.EXE zu finden. Die multi()-Syntax wird für alle Rechner verwendet, die ATA- und SCSI-Datenträger über INT-13 unterstützen.

multi(W)disk(X)rdisk(Y)partition(Z)\%systemroot%= “Beschreibung“

W -> Gibt die Nummer des Laufwerkscontrollers an, in der Regel 0. Der erste gültige Wert ist 0.
X -> Ist in der multi()-syntax immer 0
Y -> Gibt eine Festplatte an, die an den Laufwerkscontroller (W) angeschlossen ist. Bei ATA-Controllern liegt dieser Wert normalerweise zwischen 0 und 3. Bei SCSI-Adaptern je nach Typ zwischen 0 und 7 bzw. 0 und 15. Der erste gültige Wert ist 0.
Z -> Gibt die Partitionsnummer auf der Festplatte (Y) an, die am Laufwerkscontroller(W) angeschlossen ist. Alle Partitionen erhalten eine Nummer. Der erste gültige Wert ist 1.

Die Scsi()-Syntax
Hiermit wird NTLDR darüber informiert, dass der SCSI-Adapter INT-13 Aufrufe nicht unterstützt. NTLDR benutzt daher die NTBOOTDD.SYS, um die Dateien zu laden. NTBOOTDD.SYS ist eine Kopie des zum Adapter passenden Treibers.

scsi(W)disk(X)rdisk(Y)partition(Z)\%systemroot%= “Beschreibung“

W -> Gibt die Nummer des Laufwerkscontrollers an, in der Regel 0. Der erste gültige Wert ist 0.
X -> Gibt eine Festplatte an, die an den Laufwerkscontroller (W) angeschlossen ist. Bei SCSI-Adaptern je nach Typ zwischen 0 und 7 bzw. 0 und 15. Der erste gültige Wert ist 0.
Y -> Gibt die logische SCSI-Gerätenummer (LUN) des Datenträgers an, der die Startpartition enthält. Dieser Wert ist in der Regel (0). Der erste gültige Wert ist 0.
Z -> Gibt die Partitionsnummer auf der Festplatte (Y) an, die am Laufwerkscontroller(W) angeschlossen ist. Alle Partitionen erhalten eine Nummer. Der erste gültige Wert ist 1.

Die Signature()-Syntax
Kommt nur in wenigen Ausnahmefällen zum Einsatz. Typische Szenarien sind zusätzliche Laufwerkscontroller, dabei ist es unerheblich, ob es sich um ATA oder SCSI-Laufwerke handelt. Die Signature()-Syntax informiert NTLDR über den Standort des Datenträgers anhand der in (V) angegebenen Datenträgersignatur. Dabei spielt es keine Rolle, an welchem Controller die Platte angeschlossen ist.
Die Datenträgersignatur ist eine global eindeutige Kennung (Globally Unique Identifier -> GUID), die während der Textmodusphase von Windows aus Informationen des MBR generiert und auf den Datenträger geschrieben wird. Mit dieser 128-Bit-Hexadezimalzahl wird der Datenräger eindeutig gekennzeichnet. Signatur() nutzt allerdings nur die ersten 32-Bit dieser GUID, um den Datenträger zu identifizieren.

Wenn Signature() in der BOOT.INI verwendet wird, bedeutet das, dass NTBOOTDD.SYS für den Zugriff auf die Startpartition benötigt wird und eine oder beide der Bedingungen vorliegen:


signature(V)disk(X)rdisk(Y)partition(Z)\ %systemroot%= “Beschreibung“

V -> Eine 32-Bit-Hexadezimalzahl, die den Datenträger eindeutig kennzeichnet
X -> Gibt eine Festplatte an, die an den Laufwerkscontroller (W) angeschlossen ist. Bei SCSI-Adaptern je nach Typ zwischen 0 und 7 bzw. 0 und 15. Der erste gültige Wert ist 0.
Y -> Dieser Wert ist stets 0, wenn die Signature()-Syntax verwendet wird.
Z -> Die Partitionsnummer auf der Festplatte die der Signatur (V) entspricht. Die erste gültige Nummer ist 1.
! Die Signature()-Syntax verlangsamt den Windows-Start mit je nach Anzahl vorhandener Controller und Festplatten erheblich. Wenn möglich sollten Festplattencontroller immer so konfiguriert werden, dass erweiterte INT-13-BIOS-Aufrufe verwendet werden. Erste Anlaufstelle ist hier die Dokumentation des Herstellers, eventuell ist auch ein Firmwareupgrade möglich. !

Parameter der Boot.ini

Parameter werden grundsätzlich unter [Operating Systems] hinter der Beschreibung angefügt (Durch Leerzeichen getrennt)

/3GB -> Gibt an, dass das Betriebssystem einen Virtuellen Adressbereich von 3GByte für Anwendungen und von 1Gbyte für den Kernel und Executive-Komponenten reservieren kann. Kleine Bemerkung an die Optimierungsfront: Wenn die verwendeten Anwendungen nicht explizit dafür konzipiert sind, können sie den Adressbereich von 3GByte auch nicht nutzen! Spiele sind grundsätzlich nicht dafür konzipiert. Software, die diese Option benötigt, informiert in der Dokumentation explizit darüber.

/basevideo -> Erzwingt das Verwenden des Standard-VGA-Treibers mit einer Auflösung von 640x480, 16 Farben.

/baudrate= -> Gibt die Baudrate an, die für das Kerneldebugging verwendet wird. In der Regel 9600 KBit/sec für Modems und bis zu 115.200 Kbit/s bei 1394 (Firewire). Dieser Parameter erfordert auch das Vorhandensein von /debug

/bootlog -> Aktiviert die Startprotokollierung in die Datei %systemroot%\Ntbtlog.txt

/bootlogo -> Ab XP: Zeigt statt des Bootscreens eine 16 Farben Grafik (640x480), die in der Datei %systemroot%\boot.bmp abzulegen ist. Erfordert den Parameter /noguiboot, ansonsten wird der im Kernel integrierte Bootscreen angezeigt.

/break -> Zwingt den Hardware Abstraction Layer (HAL) auf den Kerneldebugger zu warten. Dieser Parameter muss zusammen mit /debug übergeben werden, ansonsten gibt es einen netten Bluescreen STOP 0x00000078 PHASE0_ EXCEPTION

/cmdcons -> Startet die Wiederherstellunskonsole von der Festplatte. Wird nicht über ARC-Pfade, sondern per Bootsektor geladen. Format: c:\cmdcons\bootsect.dat=“Beschreibung“ /cmdcons. Diese Option ist natürlich nur verfügbar, wenn die Wiederherstellungskonsole auch unter laufendem Windows installiert wurde und setzt vorraus, das sich noch eine NT-Installation auf dem System befindet. Installieren läßt sich die Wiederherstellungskonsole per Start->Ausführen-> x:\i386\winnt32 /cmdcons. Man sollte immer die Wiederherstellungskonsole des neuesten, eingesetzten Windows Installieren.

/burnmemory=Zahl -> Gibt in Megabyte die Größe des Arbeitsspeichers an, den Windows nicht verwenden kann. Siehe auch Burnmemory (vs.) Maxmem.

/clklvl -> Die Multiprozessor HAL (HALMPS.DLL) wird für eine gepufferte Systemuhr konfiguriert.

/channel=Zahl -> Gibt den Übertragungskanal der 1394-Schnittstelle (Firewire) in Verbindung mit /debugport an. Gültige Werte sind 0 – 62. Beim Standard 0 kann /channel weggelassen werden.

/crashdebug -> Lädt den Kerneldebugger beim Start. Dieser bleibt jedoch so lange inaktiv, bis eine Stoppnachricht angezeigt wird. Nützlich, wenn willkürlich Kernelfehler auftreten.

/debug -> Lädt den Kerneldebugger beim Start.

/debugport= -> Bestimmt den COM-Anschluss für das Kerneldebugging, in der Regel COM1, COM2 oder 1394. Dieser Parameter erfordert auch das Vorhandensein von /debug

/execute -> Deaktiviert die Datenausführungsverhinderung (Data Execution Protection, DEP)

/fastdetect=comx,y,z -> Deaktiviert in NTDETECT.COM die Erkennung einer seriellen Maus oder Busmaus an den angegebenen Schnittstellen. Mit der Option /fastdetect=com1 wird nur die Erkennung an COM1 deaktiviert, mehrere COM-Anschlüße werden durch Kommata getrennt angegebn, /fastdetect com1,3,4,5,6 veranlasst NTDETECT.com also dazu, nur an den COM-Anschlüssen 2, 7 und höher nach einer Maus zu suchen. Wird nur /fastdetect angegeben, sucht NTDETECT.COM überhaupt nicht nach einer seriellen Maus. Über diese Logik läst sich hervorragend philosophieren.

/hal=Dateiname -> Gibt die zu verwendene HAL an. Kann man nette Bluescreens mit produzieren.

/kernel=Dateiname -> Gibt den zu verwendenen Kernel an, zum Beispiel einen Debugging-Kernel oder zum Testen Fragwürdiger Bootscreen-Manipulationen.

/maxmem=Zahl -> Gibt in Megabyte die Größe des Arbeitsspeichers an, den Windows verwenden kann. Siehe auch Burnmemory (vs.) Maxmem

/noexecute=Parameter -> Steuert die Datenausführungsverhinderung (Data Execution Protection, DEP) Gültige Einträge sind:

/noguiboot -> Deaktiviert das Bild, dass die Statusanzeige für den Startvorgang anzeigt.

/nodebug -> Deaktiviert das Kerneldebugging

/nolowmem -> Deaktiviert die untersten 4 GByte RAM. Setzt den /PAE-Parameter voraus. Nur für Systeme mit mehr als 4 GByte RAM, sinnvoll nur für Diagnosezwecke.

/nopae -> Zwingt NTLDR auch auf Systemen mit mehr als 4 GByte RAM dazu, NTOSKRNL.EXE anstatt NTKRLNPA.EXE zu verwenden.

/numproc=Zahl -> Weist Windows an, nur (Zahl)-Prozessoren zu verwenden. /numproc=0 wird trotzdem als /numproc=1 interpretiert – also keine Chance, damit zu testen, wie Windows ohne CPU so läuft.

/onecpu -> Es wird nur 1 Prozessor verwendet.

/pae -> NTLDR lädt NTKRNLPA.EXE (statt NTOSKRNL.EXE, der es ermöglicht, auf 32Bit-Systemen mehr als 4GByte RAM zu adressieren.

/pcilock -> Hindert Windows daran, PCI-Geräten I/O- und IRQ-Resourcen dynamisch zuzuordnen. Ermöglicht die Konfiguration der Geräte durch das BIOS

/sos -> Zeigt den Namen jedes Gerätetreibers an, wenn der Treiber geladen (nicht gestartet!) wird. Kann nützlich sein, wenn während des Bootens beim Laden von Treibern Fehler auftreten.

/safeboot:Parameter -> Erzwingt unter Verwendung der angegebenen Parameter einen Start im abgesicherten Modus. Folgende Parameter sind verfügbar:


Natürlich kann /safeboot auch mit weiteren sinnvollen Parametern kombiniert werden. Im erweiterten Bootmenü (über F8 beim Start zu erreichen) werden folgende Kombinationen bei den Abgesichert-Optionen wirksam:

/USERVA=Zahl -> Ab WindowsXP. Feintuning des /3GB Parameters. Zahl ist ein Wert zwischen 2048 und 3072 und gibt an, wieviel des virtuellen Adressbereichs für Anwendungen bereitgestellt wird. Erfordert das Vorhandensein des /3gb Parameters.

/win95 -> Nur für Triple-Boot Konfigurationen (NT, Win9x und DOS (oder ein 2tes 9x)): Sind DOS-Startdateien mit der Erweiterung .w40 vorhanden (io.w40 msdos.w40 config.w40 autoexec.w40), so werden die Aktuell vorhandenen DOS-Startdateien (io.sys msdos.sys config.sys autoexec.bat) in .dos umbenannt und die mit .w40 am Ende in .sys bzw. .bat. bevor NTLDR den vorne angegebenen Bootsektor in den Speicher lädt und ausführt.

/win95dos -> Nur für Triple-Boot Konfigurationen: Sind DOS-Startdateien mit der Erweiterung .dos vorhanden (io.dos msdos.dos config.dos autoexec.dos) so werden die aktuell vorhandenen DOS-Startdateien (io.sys msdos.sys config.sys autoexec.bat) in .w40 umbenannt und die mit .dos am Ende in .sys und .bat. bevor NTLDR den vorne angegebenen Bootsector in den Speicher lädt und ausführt. Das entspricht in etwa dem Vorgang beim Multiboot von Win9x, allerdings mit der Ausnhame, das NTLDR den Inhalt der IO.SYS nicht analysiert. Damit sind also auch 2 Installationen von Win9x dauerhaft möglich, im Gegensatz zu der 9x-Multiboot-Option, wo die IO.SYS sich nur in IO.w40 umbenennen konnte - und die restlichen Dateien gleich mit.

/YEAR=Zahl -> Weist Windows an, die im BIOS gespeicherte Jahreszahl zu ignorieren und stattdessen den angegeben Wert zu nutzen. Wer Jahr-3000 Probleme aufspüren möchte, hat hier eine bequeme Möglichkeit.
 

 

 


Zurück