BO
gesperrt
Linux Kernel Teil 1
Eventl kann´s ja wer gebrauchen
Dieses Howto richtet sich an Linux Anfänger die vorhaben
ihren ersten Kernel selbst einzurichten. Es werden alle
Möglichkeiten der Konfiguration angesprochen und der Leser
sollte anschließend in der Lage sein, einen Kernel ohne
Probleme zu erstellen und anzupaßen.
Inhalt:
Verzeichnisstruktur für die Kerneldateien
Konfiguration des Kernels
2.1 config, menuconfig und xconfig
Konfigurationsmöglichkeiten
Erstellung des neuen Kernels
4.1 Feststellen der Abhängigkeiten
Löschen alter Einträge
Generierung des Kernels
6.1 zdisk, zImage, zlilo
6.2 Erstellung der Module und einbinden in den
Verzeichnisbaum
1. Verzeichnisstruktur für die Kerneldateien
arch Architekturabhängige Teile des Kernels (Intel,
Alpha, Sparc, etc.) drivers Zeichen- und blockorientierte
Gerätetreiber, ebenso Sound- und Netzwerkkartentreiber
fs enthält Funktionen um mit verschiedenen Dateisystemen
umgehen zu können (jedes unterstützte Dateisystem hat
ein Unterverzeichnis)
include enthält die Headerdateien des Kernels (z.B.
Konstanten und Strukturdefinitionen)
ipc enthält die Realisierung der Interprozeßkommunikation
wie Shared Memory und Semaphoren
kernel Routinen wie fork und exec, die zentrale Aufgaben
wie die Prozeßverwaltung übernehmen
mm Routinen zur Speicherverwaltung
modules Module, nachladbare Kernelteile
net Protokolltreiber für Netzwerkkarten (TCP, IP, IPX etc.)
2. Konfiguration des Kernels
Um den ersten eigenen Kernel herstellen zu können, ist
es notwendig dem Computer mitzuteilen, wie dieser später
aussehen soll, was er unterstützen und was weglassen soll.
Um dies zu bewerkstelligen hat man 3 verschiedene
Möglichkeiten der Konfiguration:
2.1 config, menuconfig und xconfig
Diese Möglichkeiten unterscheiden sich eigentlich nur
noch im Komfort. Von der reinen Text-
konfiguration mit config, über die menübasierte mit
menuconfig, bis hin zur komfortablen XServer
Konfiguration mit xconfig läßt sich frei wählen.
Da die graphische Konfiguration die ansehnlichste und
auch die übersichtlichste ist, sollte man
generell xconfig verwenden.
Um nun die Konfiguration zu starten, wechselt man in das
Verzeichnis /usr/src/linux und startet den Aufruf make xconfig.
Selbstverständlich geschieht das im Windowmanager nach dem Aufruf
von des XTerminals (xterm).
Dies bewirkt dann, dass die Datei Makefile mit dem
Parameter Xconfig abgearbeitet wird.
Wenn dies korrekt ausgeführt wurde, soltle man nun einen
Grafikfenster vor sich haben, mit relativ vielen Auswahlmöglichkeiten.
3. Konfigurationsmöglichkeiten
Grundsätzlich hat man die Auswahl zwischen y (yes = fest
im Kernel einbinden), m (modul = als Modul einbinden) und
n (no = nicht in den Kernel einbinden).
Hier sind die Auswahlmöglichkeiten der Reihe nach nun
kurz vorgestellt:
Code maturity level options: Hier kann man wählen, ob
man nur ausgereifte Treiber verwenden
will, oder ob man auch noch nicht ganz fertig
getestetete Treiber verwenden will. Wenn man das
vor hat, sollte man die Frage mit y beantworten.
Loadable module support: Hier teilt man dem Kernel mit,
ob man nachladbare Module verwenden will oder nicht.
Man sollte diese Frage auf jeden Fall mit y beantworten,
da einem die Verwendung von Modulen einen enormen
Geschwindigkeitsvorteil beim booten und höhere Flexibilität des
gesamten Systems bringt.
General setup: Hier legt man fest, was für den Kernel
allgemein gültig sein soll, also ohne Bezug
zu Gerätetreibern etc. . Hierunter fällt beispielsweise
ob der Kernel Fließkommaberechnungen
übernehmen soll (wenn Prozessor ohne FPU also unter 486
DX). Zudem wird hier der korrekte Prozessortyp und das
Format der Kernelübersetzung ausgewählt. Standard sollte
hierbei das ELF (Extendable Linkage Format) sein.
Floppy, IDE and other block devices : Hier werden wie
der Name schon sagt die Treiber für Diskettenlaufwerke,
sowie IDE Festplatten (auch EIDE Unterstützung) aktiviert.
MFM und RLL Festplatten sollten heute keine Bedeutung mehr haben.
Additional Block devices : Interessanter Punkt hier
dürfte die Verwaltung von sog. RAM-Disks sein. Per Loopback
kann man eine TCP/IP Verbindung testen, ohne dass man in ein Netzwerk
angeshloßen sein muß.
Networking options : Hier wird die Grundunterstützung
des Kernels für Netzwerke und einige spezielle Fragen zur
Verwendung des Computers im Netzwerk (auch Internet) gestellt.
Ob der Rechner zum Beispiel die Funktion einer Firewall (oder
auch Personal Firewall) übernehmen soll, entscheidet sich hier
ebenso wie die Unterstützung von TCP/IP.
Wenn man die TCP/IP Unterstützung aktiviert hat, sollte
man, wenn man niocht genau weiß was man tut die Grundeinstellungen
belassen.
SCSI support : Hier geht es um die SCSI Unterstützung
des Kernels. Man wählt den passenden
Controller und die zu unterstützenden Geräte aus.
Network device support : Hier macht man die Angaben über
die zu unterstützenden Netzwerk-protokolle sowie über die
verwendete Netzwerkkarte. Wer ins Internet will sollte auch
PPP mit einbinden. Um den Kernel allerdings nicht unnötig zu
vergrößern, sollte man die Netzwerkgeräte als Modul übersetzen
lassen und später automatisch einbinden.
ISDN Subsytem : Hier werden Treiber für ISDN Karten und
teilweise schon die Konfiguration des ISDN4Linux Paketes
angeboten. Auch hier sollte man so viel wie möglich als Modul
übersetzen laßen, um den Bootvorgang zu beschleunigen und um
flexibler und schneller zu sein.
Warum hat man denn sonst diesen Vorteil zu anderen
Betriebssystemen ?
CD-ROM drivers (not for SCSI or IDE/ATAPI drives) : Wenn
sie CD-ROM Laufwerke benutzen, die weder am SCSI noch am
IDE Bus hängen, sollten sie nachsehen ob sie den
Treiber dazu hier finden.
Filesystems : Wie den meisten Benutzern sicherlich
bekannt ist, hat man unter Linux die Möglichkeit verschiedene
Dateisysteme zu mounten, das heißt in den bereits bestehenden
Verzeichnisbaum einzubinden. Hier finden sie nun die
Dateisysteme die unterstützt werden und sie können auswählen,
welche sie benutzen wollen.
Character devices : Hier findet sich alles zu serieller
und paralleler Schnittstelle, wie Mäuse und Druckerunterstützung
über Parallelport, APM (Advanced Power Management),
Unterstützung nachladbarer und selbstgeschriebener
Module, Echtzeit Uhr (wer's braucht ...
die Interrupt Zahl ist um ein vielfaches größer als bei
der Systemuhr).
Sound : Hier werden sämtliche Einstellungen zur
Soundkarte vorgenommen, wie IRQ, DMA
etc. . Natürlich wird auch das Modell festgelegt und
alles wird zwischengespeichert, so dass
wenn man sich ein nächstes Mal hierhin begibt nicht
nochmal alles komplett neu eingeben muß
sondern gefragt wird, ob die letzen Einstellungen
übernommen werden sollen. Ziemlich nützlich
wenn man man den IRQ mal falsch angegeben hat, da man in
2 Rechnern 2 verschiedene Soundkarten verwendet
(5 und 7 sind sich ja auch soooo ähnlich).
Kernel hacking : Was sich für manche wohl schon fast
kriminell anhört, bezieht sich lediglich
auf die Möglichkeit die Abläufe innerhalb des Kernels
besser überwachen zu können.
...to be continued
Greetinx
Eventl kann´s ja wer gebrauchen
Dieses Howto richtet sich an Linux Anfänger die vorhaben
ihren ersten Kernel selbst einzurichten. Es werden alle
Möglichkeiten der Konfiguration angesprochen und der Leser
sollte anschließend in der Lage sein, einen Kernel ohne
Probleme zu erstellen und anzupaßen.
Inhalt:
Verzeichnisstruktur für die Kerneldateien
Konfiguration des Kernels
2.1 config, menuconfig und xconfig
Konfigurationsmöglichkeiten
Erstellung des neuen Kernels
4.1 Feststellen der Abhängigkeiten
Löschen alter Einträge
Generierung des Kernels
6.1 zdisk, zImage, zlilo
6.2 Erstellung der Module und einbinden in den
Verzeichnisbaum
1. Verzeichnisstruktur für die Kerneldateien
arch Architekturabhängige Teile des Kernels (Intel,
Alpha, Sparc, etc.) drivers Zeichen- und blockorientierte
Gerätetreiber, ebenso Sound- und Netzwerkkartentreiber
fs enthält Funktionen um mit verschiedenen Dateisystemen
umgehen zu können (jedes unterstützte Dateisystem hat
ein Unterverzeichnis)
include enthält die Headerdateien des Kernels (z.B.
Konstanten und Strukturdefinitionen)
ipc enthält die Realisierung der Interprozeßkommunikation
wie Shared Memory und Semaphoren
kernel Routinen wie fork und exec, die zentrale Aufgaben
wie die Prozeßverwaltung übernehmen
mm Routinen zur Speicherverwaltung
modules Module, nachladbare Kernelteile
net Protokolltreiber für Netzwerkkarten (TCP, IP, IPX etc.)
2. Konfiguration des Kernels
Um den ersten eigenen Kernel herstellen zu können, ist
es notwendig dem Computer mitzuteilen, wie dieser später
aussehen soll, was er unterstützen und was weglassen soll.
Um dies zu bewerkstelligen hat man 3 verschiedene
Möglichkeiten der Konfiguration:
2.1 config, menuconfig und xconfig
Diese Möglichkeiten unterscheiden sich eigentlich nur
noch im Komfort. Von der reinen Text-
konfiguration mit config, über die menübasierte mit
menuconfig, bis hin zur komfortablen XServer
Konfiguration mit xconfig läßt sich frei wählen.
Da die graphische Konfiguration die ansehnlichste und
auch die übersichtlichste ist, sollte man
generell xconfig verwenden.
Um nun die Konfiguration zu starten, wechselt man in das
Verzeichnis /usr/src/linux und startet den Aufruf make xconfig.
Selbstverständlich geschieht das im Windowmanager nach dem Aufruf
von des XTerminals (xterm).
Dies bewirkt dann, dass die Datei Makefile mit dem
Parameter Xconfig abgearbeitet wird.
Wenn dies korrekt ausgeführt wurde, soltle man nun einen
Grafikfenster vor sich haben, mit relativ vielen Auswahlmöglichkeiten.
3. Konfigurationsmöglichkeiten
Grundsätzlich hat man die Auswahl zwischen y (yes = fest
im Kernel einbinden), m (modul = als Modul einbinden) und
n (no = nicht in den Kernel einbinden).
Hier sind die Auswahlmöglichkeiten der Reihe nach nun
kurz vorgestellt:
Code maturity level options: Hier kann man wählen, ob
man nur ausgereifte Treiber verwenden
will, oder ob man auch noch nicht ganz fertig
getestetete Treiber verwenden will. Wenn man das
vor hat, sollte man die Frage mit y beantworten.
Loadable module support: Hier teilt man dem Kernel mit,
ob man nachladbare Module verwenden will oder nicht.
Man sollte diese Frage auf jeden Fall mit y beantworten,
da einem die Verwendung von Modulen einen enormen
Geschwindigkeitsvorteil beim booten und höhere Flexibilität des
gesamten Systems bringt.
General setup: Hier legt man fest, was für den Kernel
allgemein gültig sein soll, also ohne Bezug
zu Gerätetreibern etc. . Hierunter fällt beispielsweise
ob der Kernel Fließkommaberechnungen
übernehmen soll (wenn Prozessor ohne FPU also unter 486
DX). Zudem wird hier der korrekte Prozessortyp und das
Format der Kernelübersetzung ausgewählt. Standard sollte
hierbei das ELF (Extendable Linkage Format) sein.
Floppy, IDE and other block devices : Hier werden wie
der Name schon sagt die Treiber für Diskettenlaufwerke,
sowie IDE Festplatten (auch EIDE Unterstützung) aktiviert.
MFM und RLL Festplatten sollten heute keine Bedeutung mehr haben.
Additional Block devices : Interessanter Punkt hier
dürfte die Verwaltung von sog. RAM-Disks sein. Per Loopback
kann man eine TCP/IP Verbindung testen, ohne dass man in ein Netzwerk
angeshloßen sein muß.
Networking options : Hier wird die Grundunterstützung
des Kernels für Netzwerke und einige spezielle Fragen zur
Verwendung des Computers im Netzwerk (auch Internet) gestellt.
Ob der Rechner zum Beispiel die Funktion einer Firewall (oder
auch Personal Firewall) übernehmen soll, entscheidet sich hier
ebenso wie die Unterstützung von TCP/IP.
Wenn man die TCP/IP Unterstützung aktiviert hat, sollte
man, wenn man niocht genau weiß was man tut die Grundeinstellungen
belassen.
SCSI support : Hier geht es um die SCSI Unterstützung
des Kernels. Man wählt den passenden
Controller und die zu unterstützenden Geräte aus.
Network device support : Hier macht man die Angaben über
die zu unterstützenden Netzwerk-protokolle sowie über die
verwendete Netzwerkkarte. Wer ins Internet will sollte auch
PPP mit einbinden. Um den Kernel allerdings nicht unnötig zu
vergrößern, sollte man die Netzwerkgeräte als Modul übersetzen
lassen und später automatisch einbinden.
ISDN Subsytem : Hier werden Treiber für ISDN Karten und
teilweise schon die Konfiguration des ISDN4Linux Paketes
angeboten. Auch hier sollte man so viel wie möglich als Modul
übersetzen laßen, um den Bootvorgang zu beschleunigen und um
flexibler und schneller zu sein.
Warum hat man denn sonst diesen Vorteil zu anderen
Betriebssystemen ?
CD-ROM drivers (not for SCSI or IDE/ATAPI drives) : Wenn
sie CD-ROM Laufwerke benutzen, die weder am SCSI noch am
IDE Bus hängen, sollten sie nachsehen ob sie den
Treiber dazu hier finden.
Filesystems : Wie den meisten Benutzern sicherlich
bekannt ist, hat man unter Linux die Möglichkeit verschiedene
Dateisysteme zu mounten, das heißt in den bereits bestehenden
Verzeichnisbaum einzubinden. Hier finden sie nun die
Dateisysteme die unterstützt werden und sie können auswählen,
welche sie benutzen wollen.
Character devices : Hier findet sich alles zu serieller
und paralleler Schnittstelle, wie Mäuse und Druckerunterstützung
über Parallelport, APM (Advanced Power Management),
Unterstützung nachladbarer und selbstgeschriebener
Module, Echtzeit Uhr (wer's braucht ...
die Interrupt Zahl ist um ein vielfaches größer als bei
der Systemuhr).
Sound : Hier werden sämtliche Einstellungen zur
Soundkarte vorgenommen, wie IRQ, DMA
etc. . Natürlich wird auch das Modell festgelegt und
alles wird zwischengespeichert, so dass
wenn man sich ein nächstes Mal hierhin begibt nicht
nochmal alles komplett neu eingeben muß
sondern gefragt wird, ob die letzen Einstellungen
übernommen werden sollen. Ziemlich nützlich
wenn man man den IRQ mal falsch angegeben hat, da man in
2 Rechnern 2 verschiedene Soundkarten verwendet
(5 und 7 sind sich ja auch soooo ähnlich).
Kernel hacking : Was sich für manche wohl schon fast
kriminell anhört, bezieht sich lediglich
auf die Möglichkeit die Abläufe innerhalb des Kernels
besser überwachen zu können.
...to be continued
Greetinx