Re: Umzug von IDE zu SCSI

From: Ronald Kuehn <rk(at)ronald.org>
Date: Wed, 14 Nov 2001 21:53:16 +0100 (CET)

Michael Haertl <michael.haertl(at)gmx.net> wrote:

Moin,

> z.B. der Kernel: er liegt im Filesystem / , zum Zeitpunkt des Ladens
> des Kernels ist aber noch kein Filesystemtreiber geladen.

gewissermaßen doch. Siehe unten.

> Bei Linux ist es m.W. so, dass der Kernel absolut gelesen wird, d.h.
> die Sektoren in denen der Kernel auf der Platte liegt werden in den
> Bootloader "hardcoded". Deswegen muss man nach jedem Kernelneu-
> compilieren Lilo nochmals aufrufen, um diese Werte im Bootloader zu
> aktualisieren (soweit ich mich erinnere, man moege mich korrigieren).

> Bei OS/2 ist (war zumindest bei Version 3) es so, dass bestimmte
> Initialisierungsdateien ebenfalls an unverrueckbaren Stellen auf der
> Platte vorhanden sein muessen, sonst geht der Bootvorgang schief.
> Bei Scandisk, Defrag oder div. DiskDoctors etc. war das u.a. immer
> als "fixed sector" markiert. Ditto bei MSDOS (msdos.sys, io.sys).

Diese Probleme wurden von FreeBSD und auch anderen Systeme (z.B. Solaris)
anders gelöst.

> Hier fehlt mir was. Mit 512 bytes Code/Daten, aus denen der
> Bootloader besteht, "mountet" man m.E. nicht so schnell mal ein
> Filesystem, welches Owner-bits, Unterverzeichnisse und
> Fragmentierung usw. beinhaltet. Wenn ein neuer Kernel "installiert"
> (d.h. nach / kopiert) wird, muss man m.W. ja auch nichts weiter
> beachten, d.h. er kommt irgendwo zum liegen, wo in / grad Platz
> ist, evtl sogar fragmentiert.

Nach dem Bootblock wird bei FreeBSD der 2nd stage boot loader
geladen (boot2). Dieser liegt in den anschließenden Sektoren, die noch
nicht vom Filesystem benutzt werden. Er enthält genug Funktionalität,
um auf UFS-Filesystemen Dateien zu finden und zu lesen.

Dieser 2nd stage boot code kann den kernel laden. Das wird aber bei
FreeBSD seit geraumer Zeit nicht mehr getan. Stattdessen wird /boot/loader
aus dem Filesystem geladen (3rd stage loader). Dieser stellt eine
umfangreiche Umgebung bereit (Forth), mit der der weitere Boot-Prozeß
gesteuert werden kann (Kernel-Module, Treiberkonfiguration usw.).
Normalerweise lädt dieser /boot/loader dann den kernel (und optional
noch andere Kernel-Module). Im Filesystem selbst befinden sich keinerlei
"fest verdrahtete" Dateien wie bei Linux. Bei Kopieraktionen muß man natürlich
darauf achten, mit disklabel(8) den Boot-Code (boot1 und boot2) auch
auf die neue Platte zu schreiben.

Informationen zur Boot-Prozedur finden sich im Handbook:
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/boot.html
Siehe auch boot(8), loader(8), loader.conf(5), disklabel(8), boot0cfg(8).

Tschau,
  Ronald

-- 
* The whole problem with the world is that fools and fanatics are always
* so certain of themselves, but wiser people so full of doubts.
*                                                     --Bertrand Russell
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Wed 14 Nov 2001 - 21:54:23 CET

search this site