ChaiNT v1.0 - Chain Loader fuer den NT Bootmanager (und andere).
Copyright (c) 1997 Michael Riepe <michael@stud.uni-hannover.de>

ChaiNT ist Freie Software im Sinne der GNU General Public
License (GPL), Version 2 (siehe Datei COPYING).

	(1) Was ist ChaiNT?

ChaiNT dient als Ersatz fr die vom NT-Bootmanager normalerweise
verwendete Bootsektor-Kopie. Es kann aber selbst nicht als Bootsektor
oder MBR eingesetzt werden.

	(2) Was tut ChaiNT?

ChaiNT kopiert sich nach dem Start in einen sicheren Speicherbereich.
Anschlieend ldt es den MBR an die Adresse 0:0600 und durchsucht die
darin enthaltene Partitionstabelle nach der zu bootenden Partition.
Im Gegensatz zum MBR, der immer nach der "aktiven" Partition sucht,
bootet ChaiNT entweder von einer festgelegten Partition oder von der
ersten Partition mit einem bestimmten Typbyte, je nach Konfiguration.

Um "schwierige" Betriebssysteme wie Solaris/x86 zu untersttzen, bietet
ChaiNT die Mglichkeit, whrend des Bootvorgangs die gebootete Partition
als aktive Partition erscheinen zu lassen; die Partitionstabelle auf der
Festplatte bleibt dabei unverndert, weil sonst der NT-Bootmanager beim
nchsten Reboot nicht mehr startet.

Wenn ChaiNT die gewnschte Partition gefunden hat, liest es deren
Bootsektor und startet ihn; der Bootvorgang verluft von diesem Punkt
an (hoffentlich) normal weiter, als htte der Umweg ber NT und ChaiNT
nie stattgefunden.

	(3) Installation

ChaiNT gibt es in 2 Versionen; einmal fr Unix (in der Datei
ChaiNT-1.0.tar.gz) und einmal fr DOS (CHAINT10.ZIP). Beide sind
identisch, abgesehen vom Dateiformat (die DOS-Version benutzt CRLF
als Zeilenende, Unix nur LF). Die Unix-Version enthlt auerdem ein
vorkompiliertes Installationsprogramm (Linux/ELF Binary); in der
DOS-Version ist nur der Quelltext enthalten (ich habe leider keinen
DOS-C-Compiler...):

	Datei		Inhalt
	===============================================
	README		Diese Datei
	COPYING		GNU General Public License
	Makefile	Unix-Makefile
	Makefile.DOS	DOS-Makefile (fr Microsofts MAKE.EXE)
	chainst.c	Installationsprogramm, C-Quelltext
	chaint.asm	ChaiNT, Quelltext fr NASM
	chaint		ChaiNT, vorkompiliert
	chainst		Installationsprogramm, vorkompiliert (Linux/ELF)

Sie finden die jeweils aktuelle Version von ChaiNT unter der Adresse

	ftp://ftp.stud.uni-hannover.de/pub/users/michael/ChaiNT/

Der bentigte Assembler "NASM" ist frei verfgbar; falls Sie ChaiNT
neu bersetzen wollen oder mssen, finden Sie ihn unter

	ftp://sunsite.unc.edu/pub/Linux/devel/lang/assemblers/nasm-0.96.tar.gz

(Unix-Version) oder

	ftp://ftp.coast.net/coast/msdos/asmutil/nasm096.zip   (binary)
	ftp://ftp.coast.net/coast/msdos/asmutil/nasm096s.zip  (source)

(DOS-Version). Die DOS-Version funktioniert auch in der DOS-Emulation
von NT. ltere Versionen von NASM sind eventuell nicht in der Lage,
ChaiNT zu bersetzen.

Mit dem vorkompilierten ChaiNT und dem Installationsprogramm "chainst"
knnen Sie ChaiNT auch ohne Neubersetzung installieren und konfigurieren.
Chainst ist prinzipiell unabhngig vom Betriebssystem und sollte sich
mit jedem ANSI-C-Compiler bersetzen lassen. Bei Problemen wenden Sie
sich bitte an den Autor (also an mich - die EMail-Adresse steht am Anfang
dieser Datei).

Das Installationsprogramm chainst liest und modifiziert das (kompilierte)
ChaiNT-Programm und schreibt das Ergebnis in eine Datei.  Die Aufrufsyntax
ist:

	chainst [ -a ] [ -p <part> | -t <type> ] <outfile> [ <infile> ]

Der Typ- ("-t"-) Parameter veranlat ChaiNT, die erste Partition mit
dem passenden Typbyte zu booten, falls vorhanden. Dieses Argument mu
einen Wert zwischen 1 und 255 haben. Gngige Werte sind z.B.:

	1	DOS mit 12-Bit FAT
	4	DOS mit 16-Bit FAT (< 32 MB)
	6	DOS mit 16-Bit FAT (>= 32 MB)
	7	OS/2 oder Win/NT
	10	OS/2 Bootmanager
	129	Linux (minix)
	130	Solaris/x86
	131	Linux (ext2fs)

Ohne "-t" bootet ChaiNT von einer festen Partition; der Partitions-
("-p"-) Parameter bestimmt, welche das ist. Er kann die Werte 0 bis 3
annehmen. Wenn sowohl "-t" als auch "-p" gesetzt sind, ignoriert ChaiNT
die Partitionsnummer und benutzt ausschlielich den Partitionstyp.
Die Argumente knnen sowohl dezimal als auch oktal oder hexadezimal
sein; das Programm versteht die C-Zahlensyntax (vorangestellte "0" fr
Oktal, "0x" oder "0X" fr hex). Die Standardwerte entsprechen denen im
vorkompilierten ChaiNT: erste Partition, kein Typ gesetzt, nicht aktiv.

Der Aktiv- ("-a"-) Parameter veranlat ChaiNT, dem gebooteten System
eine aktivierte Partition vorzugaukeln. Sie sollten diesen Parameter
nur dann benutzen, wenn er wirklich ntig ist; unter DOS z.B. schadet er
mehr als er ntzt.

Chainst liest aus der Datei <infile> oder aus der Datei "chaint" im
aktuellen Verzeichnis, wenn der Parameter fehlt. Der <outfile>-Parameter
darf nicht fehlen; er gibt die Zieldatei an. In beiden Fllen steht
ein einzelnes Minuszeichen ("-") fr die Standardein- bzw. -ausgabe.
Ein- und Ausgabedatei knnen identisch sein; in diesem Fall schreibt
chainst die genderten Daten in die Eingabedatei zurck.

Hier noch ein paar Beispiele fr die Benutzung von chainst:

	# Booten von der 1. Partition:
	chainst -p0 boot.p0

	# Nochmal, mit ChaiNT in /usr/local/lib:
	chainst -p0 boot.p0 /usr/local/lib/chaint

	# Booten von der 2. Partition:
	chainst -p1 boot.p1

	# Booten von der 3. Partition:
	chainst -p2 boot.p1

	# Booten von der 4. Partition:
	chainst -p3 boot.p1

	# Booten von der 1. Linux-Partition:
	chainst -t131 boot.lin
	# oder:
	chainst -t0x83 boot.lin

	# Booten von der 1. Solaris-Partition, mit Aktivierung:
	chainst -t0x82 -a boot.sol

Sie knnen ChaiNT auch beim bersetzen konfigurieren, indem Sie die
Makrodefinitionen fr PARTNO, PARTTYPE und/oder MAKEACTIVE ndern.
Das letzte Beispiel wrde dann so aussehen:

        nasm -f bin -dPARTTYPE=0x82 -dMAKEACTIVE=1 -o boot.sol chaint.asm

Sie knnen natrlich auch die Standardeinstellungen in chaint.asm
direkt ndern; sie befinden sich am Anfang der Datei.

	(4) Wenn etwas schiefgeht...

Der Autor bernimmt keinerlei Haftung fr die Richtigkeit der hier
wiedergegebenen Daten und Zusammenhnge, fr die Funktionsfhigkeit
der beiliegenden Software oder fr Schden, die durch deren Einsatz
entstehen.

Fragen, Verbesserungs- oder Erweiterungsvorschlge schicken Sie bitte
an die oben angegebene EMail-Adresse.

Bitte machen Sie Backups, bevor Sie mit ChaiNT experimentieren.

Hannover, den 31.12.1997
Michael Riepe
