# FAQ Tips > Hier Suchen und Finden, Links, Tutorials >  Kernel (2.6) Konfigurations-Howto

## Stage

*1 Einleitung*

Dieses Howto soll dabei helfen, einen schlanken und auch funktionsfähigen Kernel für x86-Systeme zu erstellen. Als Vorlage benutze ich Sourcen des 2.6.9-er Kernels ohne extra Patches.

Als erstes muss man natürlich wissen was man so alles an Hardware im Rechner drin hat. Dazu geben folgende Befehle einem Auskunft:

```
lspci -v
```



```
lsusb
```



```
cat /proc/cpuinfo
```

Die Ausgaben am besten auf einer separaten Konsole/Terminal stehen lassen, so daß wir bei Gelegenheit auf die Informationen zurückgreifen können.

*2 Konfiguration*

*2.1 Vorbemerkung*
Um überhaupt beginnen zu können, benötigt man natürlich erst einmal die Kernelsourcen. Die bekommt man entweder von www.kernel.org oder auch durch das Paketverwaltungstool der eigenen Distibution.
Das manuelle Installieren der Sourcen, sollten nur diejenigen machen, die wissen was sie tun, weil die meisten Distributionen noch spezielle Patches mit einpflegen, ohne die meist die Funktionalität leidet.
Desweiteren muss auf dem Rechner ein Compiler (gcc), der Befehl make und ncurses-devel installiert sein.

*2.2 Menuconfig*

*Bemerkung:* /usr/src/linux ist ein Symlink, der immer auf die aktuellen Sourcen zeigen sollte



> root@host #ls -l /usr/src
> lrwxrwxrwx   1 root root   31 20. Sep 21:08 linux -> /usr/src/linux-2.6.9
> drwxr-xr-x  18 root root  720 24. Nov 10:08 linux-2.6.9


Wenn dem nicht so ist dann muss dieser erstellt bzw geändert werden:

```
//alten Symlink entfernen
rm /usr/src/linux
//neuen Symlink erstellen
cd /usr/src/
ln -sf linux-version linux
```

Als erstes erzeugen wir uns eine leere Config:

```
//wechseln in das Verzeichniss mit den Sourcen
cd /usr/src/linux
//zur Sicherheit vorher alles bereinigen
make mrproper
//leere config erstellen
make allnoconfig
```

im Anschluss kann gleich die Konfigurationsoberfläche gestartet werden, um dann endlich loslegen zu können  :Wink: 

```
//menuconfig starten
make menuconfig
```

*2.3 Allgemeine Einstellungen*

*2.3.1 Code maturity level options*
hier kann man alles aktivieren (durch drücken der *y*-Taste wie yes). Wenn man später etwas zu viel aktiviert hat kann man durch drücken von *n* die Auswahl wieder aufheben.


```
[*] Prompt for development and/or incomplete code/drivers
[*]   Select only drivers expected to compile cleanly
```

*2.3.2 General setup*


```
[*] Support for paging of anonymous memory (swap)
//Swap wird eigentlich immer benötigt
[*] System V IPC
//Interprozesskommunikation wird benötigt, damit Threads miteinander kommunizieren können
[*] BSD Process Accounting
[ ]   BSD Process Accounting version 3 file format
[*] Sysctl support
//SysCtl um später über das /proc-FS zur Laufzeit Einstellungen verändern zu können
[ ] Auditing support
[*] Support for hot-pluggable devices
//wird für USB/PCMCIA und andere hotplugfähigen Geräte benötigt, sowie auch für udev
[*] Kernel .config support
//erzeugt /proc/.config um zur Laufzeit die aktuelle Kernelkonfig anzusehen
[ ] Configure standard kernel features (for small systems)  --->
//wir bauen einen Kernel für einen PC, müssen also keine Features entfernen
```

*2.3.3 Loadable module support*
hierzu ist nicht viel zu sagen, außer das die folgenden Einstellungen das laden/entladen von Modulen ermöglichen, sowie auch das automatische Laden der Module bei Bedarf (z.b Filesystem)


```
[*] Enable loadable module support
[*]   Module unloading
[*]     Forced module unloading
[ ]   Module versioning support
[*]   Automatic kernel module loading
```

Bei einigen Optionen besteht ab nun die Möglichkeit, diese als Modul zu erstellen. Zu erkennen sind diese Anhand von < > anstatt der bisher üblichen [ ] vor der entsprechende Auswahl. Im nachfolgenden versuche ich möglichst viel als Modul zu aktivieren, um den Kernel schlank zu halten. Desweiteren kann man so später leichter Fehler feststellen, wenn man die Module einzeln laden kann. Natürlich ist es jeden selbst überlassen, ob er die eine Option fest in den Kernel baut oder als Modul.
Um etwas als Modul zu bauen, brauch man nur *m* bei der jeweiligen Auswahl drücken. Um es fest in den Kernel zu kompilieren, benutzt man wie gehabt die *y*-Taste. Und mit *n* wird die Auswahl widerrufen.

*2.3.4 Processor type and features*
Für diesen Abschnitt benötigen wir die Ausgabe von *cat /proc/cpuinfo*, das wir schon vorher einmal ausgeführt haben. Wichtig sind da 2 Zeilen:



> model name      : Celeron (Coppermine)
> flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr sse




```
Subarchitecture Type (PC-compatible)  --->
//sollte auf PC-compatible stehen bei x86 Architektur
Processor family (Pentium-III/Celeron(Coppermine)/Pentium-III Xeon)  --->
//hier die entsprechende CPU auswählen, siehe model name
[ ] Generic x86 support
//wird nicht benötigt, da wir nur für einen CPUtyp den Kernel optimieren
[*] HPET Timer Support
//neuer und verbesserter Timer im Kernel, kann gefahrlos aktiviert werden
[ ] Symmetric multi-processing support //bei einem 1 Prozessor System
[*] Symmetric multi-processing support //bei mehr als einer CPU im Rechner oder auch bei hyperthread fähiger CPU
(2)   Maximum number of CPUs (2-255) //Anzahl der CPU's angeben
[*]   SMT (Hyperthreading) scheduler support //bei hyperthread fähiger CPU aktivieren
[*] Preemptible Kernel
//aktivieren je nach belieben. Vorschlag: an bei Desktops, aus bei Servern
//aktiviert verbessert es die "Reaktionszeit" des Systems auf Benutzerprozesse
[*] Local APIC support on uniprocessors
//wenn apic bei den CPU-Flags steht, aktivieren
[*]   IO-APIC support on uniprocessors
//kann gefahrlos aktiviert werden, auch bei Sytemen ohne IO-APIC läuft der Kernel ohne Geschwindigkeitsverlust
[*] Machine Check Exception
//wenn mce bei den CPU-Flags steht, kann es aktiviert werden
//damit kann die CPU bei Problemen (Überhitzung, usw) den Kernel informieren
//was meist in einer Meldung im syslog oder auch auf dem Bildschirm nach sich zieht
< M >   Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4
//nicht-kritische Fehler werden automatisch korrigiert, mit diesem Modul, werden die Fehler allerdings zusätzlich noch protokolliert
[*]   check for P4 thermal throttling interrupt.
//wenn der P4 wegen Überhitzung automatisch gedrosselt wird, erzeugt das eine Meldung
< > Toshiba Laptop support
< > Dell laptop support
< > /dev/cpu/microcode - Intel IA32 CPU microcode support
< > /dev/cpu/*/msr - Model-specific register support
< > /dev/cpu/*/cpuid - CPU information support
Firmware Drivers  --->
//lassen wir deaktiviert
High Memory Support (off)  ---> //bei weniger als 1GB Arbeitsspeicher
High Memory Support (4GB)  ---> // ab 1 GB Arbeitsspeicher
[*] Allocate 3rd-level pagetables from highmem
//kann bei System mit sehr viel Speicher aktiviert werden, um Speicher einzusparen
[ ] Math emulation
//wird bei heutigen CPU's eigentlich nicht mehr benötigt
[*] MTRR (Memory Type Range Register) support
//wenn mtrr bei den CPU-Flags steht, aktivieren
[ ] Use register arguments
```

*2.3.5 Power management options (ACPI, APM)*
Zum Power managment ist zu sagen, das immer nur eins von beiden Standards genutzt wird. ACPI ist der Nachfolger von APM und daher etwas neuer, und kann deshalb auf etwas älteren Rechnern, die kein ACPI konformes Bios besitzen zu Problemen führen. Man kann auch ganz auf diese Optionen verzichten, was keine Einschränkung beim Betrieb des Kernels darstellt. Soll der Rechner aber beim shutdown automatisch ausgeschaltet werden, so ist zumindest eine Option Bedingung.


```
[*] Power Management support
//wenn PM benutzt werden soll aktivieren, sonst alles hier und in den Untermenus deaktiviert lassem
[ ] Power Management Debug Support
[*] Software Suspend
//ermöglicht beim shutdown ein Abbild des Speichers in der SWAP-Partition zu speichern, um beim Anschalten an dieser Stelle fortfahren zu können
(/dev/hda2) Default resume partition
//hier eine gültige SWAP-Partition angeben, diese sollte grösser als der Arbeitsspeicher sein
//diese Option kann auch durch den Bootparameter resume=/dev/xyz überschrieben werdem
```

*2.3.5.1 ACPI (Advanced Configuration and Power Interface) Support*
Dieses Menu benutzen wenn man kein APM benutzen will.


```
[*] ACPI Support
[*]   Sleep States
< M >   AC Adapter
< M >   Battery
< M >   Button
< M >   Fan
< M >   Processor
< M >     Thermal Zone
< >   ASUS/Medion Laptop Extras
< >   Toshiba Laptop Extras
(0) Disable ACPI for systems before Jan 1st this year
[ ] Power Management Timer Support //diese Option aktivieren, wenn die Meldung 'Losing too many ticks!' im Kernellog auftaucht
```

*2.3.5.2 APM (Advanced Power Management) BIOS Support*
Diese Option nur benutzen wenn man kein ACPI benutzt.
Wenn man APM benutzt, muss man ein wenig experimentieren, welche Optionen man aktivieren sollte und welche nicht. Deswegen hab ich im folgenden Codesample alles deaktiviert gelassen.


```
< M > APM (Advanced Power Management) BIOS support
[ ]   Ignore USER SUSPEND
[ ]   Enable PM at boot time
[ ]   Make CPU Idle calls when idle
[ ]   Enable console blanking using APM
[ ]   RTC stores time in GMT
[ ]   Allow interrupts during APM BIOS calls
[ ]   Use real mode APM BIOS call to power off
```

*2.3.5.3 CPU Frequency scaling*
Besitzt man eine CPU (z.b. diverse Mobilprozessoren in Laptops), die die Fähigkeit hat die Taktfrequenz während der Laufzeit zu ändern, so muss man dieses Feature hier aktivieren


```
[*] CPU Frequency scaling
Default CPUFreq governor (performance)  --->
//wählt den default CPUFreq govenor aus, siehe auch nächste Optionen
< M >   'performance' governor
//setzt die CPUFreq statisch auf den höchst möglichen Wert
< M >   'powersave' governor
//setzt die CPUFreq statisch auf den kleinst möglichen Wert
< M >   'userspace' governor for userspace frequency scaling
//erlaubt das setzen der CPUFreq manuell oder dynamisch durch ein Benutzerprogramm wie zB LART
< M >   'ondemand' cpufreq policy governor
//pollt ständig die CPU, und setzt die CPUFreq dynamisch abhängig von ihrer Auslastung
[ ]   /proc/sys/cpu/ interface (2.4. / OLD)
< M >   CPU frequency table helpers
---   CPUFreq processor drivers
//hier dann die entsprechende Option für die eigene CPU auswählen
```

*2.3.6 Bus options (PCI, PCMCIA, EISA, MCA, ISA)*


```
[*] PCI support
PCI access mode (Any)  --->
[ ] Message Signaled Interrupts (MSI and MSI-X)
[ ] Legacy /proc/pci interface
//diese Option ist als 'depricated' angesehen und man sollte besser das Userspaceprogramm lspci benutzen
[ ] PCI device name database
[*] ISA support
//auch bei Mainboards, die keine ISA-Steckplätze mehr haben, sollte diese Option aktiviert werden
//Einige interne Dinge zB PS/2 werden über den ISA-Bus angesprochen
//siehe auch Ausgabe bei lspci --> ISA bridge
[ ]   EISA support
//aktivieren wenn man noch EISA Steckplätze besitzt
[ ] MCA support
//aktivieren wenn man einen MicroChannel Anschluss auf dem Mainboard hat
< > NatSemi SCx200 support
```

*2.3.6.1 PCMCIA/CardBus support*


```
< M > PCMCIA/CardBus support
[ ]   Enable PCMCIA debugging
< M >   xyz bridge support
//hier den entsprechenden Treiber auswählen, siehe auch Ausgabe bei lspci
```

*2.3.6.2 PCI Hotplug Support*
Ich geh mal davon aus das die meisten x86 Besitzer keine PCI-hotplugfähigen Geräte in ihren Rechner haben, wenn doch, dann einfach in diesem Untermenu die passenden Treiber dafür aktivieren.

*2.3.7 Executable file formats*


```
[*] Kernel support for ELF binaries
< M > Kernel support for a.out and ECOFF binaries
< M > Kernel support for MISC binaries
```

*2.4 Device Drivers*
Nicht aufgeführte Treibermenus kommen sehr selten oder garnicht bei x86 Architektur zum Einsatz.

*2.4.1 Generic Driver Options*


```
[*] Select only drivers that don't need compile-time external firmware
[ ] Prevent firmware from being built
< M > Hotplug firmware loading support
//diese Option aktivieren, wenn man Hardware hat, die externe Firmware laden muss
//zB die meisten WLAN Karten benutzen dieses Feature
```

*2.4.2 Parallel port support*
Wenn man den Parallelport des PCs benutzen will sollten folgende Optionen aktiviert werden


```
< M > Parallel port support
< M >   PC-style hardware
[*]     Use FIFO/DMA if available
[ ]     SuperIO chipset support
< >   Support for PCMCIA management for PC-style ports
//nur aktivieren wenn Parallelport durch eine PCMCIA-Karte bereitgestellt wird
[ ] Support foreign hardware
[*] IEEE 1284 transfer modes
```

*2.4.3 Plug and Play support*
Wenn man noch ISA-Karten im PC hat, die im Plug and Play Modus laufen dann müssen folgende Optionen aktiviert werden.


```
[*] Plug and Play support
[ ]   PnP Debug Messages
---   Protocols
[*]   ISA Plug and Play support
[ ]   Plug and Play BIOS support
```

*2.4.4 Block devices*
Besitzer von Hardware, die noch in diesem Menu aufgeführt wird, müssen natürlich entsprechende Optionen zusätzlich aktivieren.
Ist ein solches Gerät ein Bestandteil für den Bootvorgang, zum Beispiel wenn eine Festplatte an einem der aufgeführten Controller hängt und auf dieser Festplatte befindet sich das Root-Filesystem, dann muss dieses Gerät fest in den Kernel kompiliert werden.


```
< M > Normal floppy disk support
//nur aktivieren wenn man noch ein Diskettenlaufwerk hat
< > XT hard disk support
< > Parallel port IDE device support
//wenn man eine Festplatte am Parallelport hat, dann aktivieren
< > Compaq SMART2 support
< > Compaq Smart Array 5xxx support
< > Mylex DAC960/DAC1100 PCI RAID Controller support
< > Micro Memory MM5415 Battery Backed RAM support
< M > Loopback device support
//Loopdevice kann immer mal nützlich sein
< M >   Cryptoloop Support
//wer Partitionen verschlüsseln will, muss dies aktivieren
< > Promise SATA SX8 support
< > Low Performance USB Block driver
//dies ist ein neuer Treiber für USB Speichergeräte, wie zB USBSticks
//dieser kann jedoch noch einige Probleme machen, und deswegen sollte man auf den USB Mass Storage Support im USB Menu zurückgreifen
< M > RAM disk support
(4096) Default RAM disk size (kbytes)
//diejenigen die eine Initrd benötigen, müssen den RAM disk support fest in der Kernel einkompilieren
[ ] Support for Large Block Devices
//für Geräte die mehr als 2TB an Speicher bereitstellen, muss dies aktiviert werden
```

*2.4.5 ATA/ATAPI/MFM/RLL support*
Bei diesem Punkt muss man besonders gut aufpassen, da eine Vielzahl aller PCs von IDE booten, müssen die für den Bootvorgang beteiligten Geräte (im Allgemeinen sind das IDE-Controller, IDE-HDD-Support und später das Filesystem) fest in den Kernel kompiliert werden. Wenn man das nicht beachtet, erhält man beim Booten eine Kernel Panik.
*Anmerkung:* S-ATA Support wird unter SCSI konfiguriert.

Folgende Optionen sind für ein System, das von einer IDE-Festplatte bootet.


```
< * > ATA/ATAPI/MFM/RLL support
< * >   Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
---     Please see Documentation/ide.txt for help/info on IDE drives
[ ]     Support for SATA (deprecated; conflicts with libata SATA driver)
[ ]     Use old disk-only driver on primary interface
< * >     Include IDE/ATA-2 DISK support
[ ]       Use multi-mode by default
< >     PCMCIA IDE support
//bei Festplatten an einem PCMCIA-Controller hier aktivieren
< M >     Include IDE/ATAPI CDROM support
//für CDROM die über den IDE-Bus angesteuert werden
< >     Include IDE/ATAPI TAPE support
< >     Include IDE/ATAPI FLOPPY support
[ ]     IDE Taskfile Access
[*]     IDE Taskfile IO
---     IDE chipset support/bugfixes
< >     generic/default IDE chipset support
[ ]     CMD640 chipset bugfix/support
[ ]     PNP EIDE support
[*]     PCI IDE chipset support
[*]       Sharing PCI IDE interrupts support
[ ]       Boot off-board chipsets first support
< >       Generic PCI IDE Chipset Support
< >       OPTi 82C621 chipset enhanced support
< >       RZ1000 chipset bugfix/support
[*]       Generic PCI bus-master DMA support
[ ]         Force enable legacy 2.0.X HOSTS to use DMA
[*]         Use PCI DMA by default when available
[ ]           Enable DMA only for disks
<*>         XYZ chipsets support
//hier den richtigen IDE-Treiber auswählen, siehe auch lspci --> IDE interface
[ ]     Other IDE chipset support
[ ]     IGNORE word93 Validation BITS
```

*2.4.6 SCSI device support*
Was für ein System gilt, das von IDE bootet gilt auch für ein System, welches von Scsi bzw S-ATA bootet. Auch hier müssen alle beteiligten Komponenten, die für das Mounten des Root-Filesystem zuständig sind, fest in den Kernel einkompiliert werden.

Folgende Optionen sind für ein System das von einer SCSI- oder S-ATA-Festplatte bootet.


```
< * > SCSI device support
---   SCSI support type (disk, tape, CD-ROM)
< * >   SCSI disk support
//diese Option ist für SCSI und S-ATA Festplatten
//S-ATA werden wie SCSI Festplatten mit /dev/sd[a-z] angesprochen
< >   SCSI tape support
< >   SCSI OnStream SC-x0 tape support
< M >   SCSI CDROM support
//für SCSI-CDRoms
[ ]     Enable vendor-specific extensions (for SCSI CDROM)
//diese Option aktivieren, wenn man mit älteren SCSI-CDROMs Probleme mit Multisession-CD's hat und immer nur die erste Session sieht
< >   SCSI generic support
//diese Option aktivieren, wenn man noch andere SCSI-Geräte verwendet, z.B Scanner, CD-Writer
//diese Option wird automatisch aktiviert, wenn man USB Mass Storage support unter USB aktiviert
---   Some SCSI devices (e.g. CD jukebox) support multiple LUNs
[ ]   Probe all LUNs on each SCSI device
//aktivieren, wenn Geräte mehr als eine LUN haben, z.B CD-Wechser oder auch einige USB-Sticks mit mehreren Partitionen
[ ]   Verbose SCSI error reporting (kernel size +=12K)
[ ]   SCSI logging facility
SCSI Transport Attributes  --->
//hier aktivieren, wenn Informationen von angeschlossenen SCSI-Geräten ins SysFS exportiert werden sollen
//ist im Allgemeinen nicht notwendig
SCSI low-level drivers  --->
//hier den entsprechenden Treiber für den Scsi-Controller bzw. S-ATA-Controller auswählen, und fest in den Kernel einbauen lassen
PCMCIA SCSI adapter support  --->
//hier das gleiche wenn man einen PCMCIA-SCSI-Controller besitzt
```

*2.4.7 Multi-device support (RAID and LVM)*
Diese Optionen braucht man nur wenn man ein Softwarraid oder ein LVM (Logical Volume Manager) einsetzen möchte. Auch hier ist wieder zu beachten, falls sich das Root-Filesystem auf einem solchen Softraid oder LVM befindet, muss die entspechende Option fest in den Kernel einkompiliert werden.


```
[*] Multiple devices driver support (RAID and LVM)
//Raidoptionen
< M >   RAID support
< M >     Linear (append) mode
< M >     RAID-0 (striping) mode
< M >     RAID-1 (mirroring) mode
< M >     RAID-10 (mirrored striping) mode
< M >     RAID-4/RAID-5 mode
< M >     RAID-6 mode
< M >     Multipath I/O support
//LVM-Optionen
< M >   Device mapper support
< M >     Crypt target support
< M >     Snapshot target
< M >     Mirror target
< M >     Zero target
```

*2.4.8 Fusion MPT device support*
Besitzt man einen LSI Logic Controller mit Fusion MPT Technologie, so ist die Unterstützung hier zu aktivieren.


```
< * > Fusion MPT (base + ScsiHost) drivers
(40)  Maximum number of scatter gather entries
< M >   Fusion MPT misc device (ioctl) driver
```

*2.4.9 IEEE 1394 (FireWire) support*
Hat man Firewirehardware im PC/Laptop und möchte diese auch einsetzen, dann muss das hier aktiviert werden.


```
< M > IEEE 1394 (FireWire) support
---   Subsystem Options
[ ]   Excessive debugging output
[ ]   OUI Database built-in
[*]   Build in extra config rom entries for certain functionality
[*]     IP-1394 Entry
//möchte man das Firewiredevice als Netzwerkschnittstelle benutzen, so benötigt es diese 2 Optionen
---   Device Drivers
< >   Texas Instruments PCILynx support
//dieser Treiber benötigt I2C Support um aktiviert werden zu können
< M >   OHCI-1394 support
//dies ist eigentlich der gebräuchlichste Treiber für aktuelle Firewirecontroller
//lspci gibt dazu nähere Informationen
---   Protocol Drivers
//es ist generell eine gute Idee hier alle Protokolle als Modul zu aktivieren, um bei Gelegenheit die entsprechende Unterstützung zu haben
< M >   OHCI-1394 Video support
< M >   SBP-2 support (Harddisks etc.)
[ ]     Enable Phys DMA support for SBP2 (Debug)
< M >   OHCI-DV I/O support
< M >   Raw IEEE1394 I/O support
< M >   IEC61883-1 Plug support
< M >     IEC61883-6 (Audio transmission) support
```

*2.4.10 Networking support*
Wie der Name schon vermuten lässt, kann man hier die Netzwerkunterstützung aktivieren. Dieser Abschnitt ist sehr umfangreich, aber nicht allzu schwer .


```
[*] Networking support
Networking options  --->
//dazu kommen wir später
[ ] Amateur Radio support (NEW)  --->
< > IrDA (infrared) subsystem support  --->
//für Infrarothardware hier aktivieren und den passenden Treiber auswählen
< > Bluetooth subsystem support  --->
//bei Bluetoothhardware hier aktivieren und den passenden Treiber auswählen
[*] Network device support
< >   Dummy net driver support
< >   Bonding driver support
//möchte man 2 oder mehrere Netzwerkgeräte zu einem zusammenschliessen, um die Bandbreite zu erhöhen, muss dies aktiviert werden
//erfordert aber einen Switch der Port-Trunking unterstützt
< >   EQL (serial line load balancing) support
//wird zb gebraucht um bei ISDN Kanalbündelung benutzen zu können
< >   Universal TUN/TAP device driver support
//wird für Tunnel benötigt zB bei vtun oder openvpn und anderer Software, die Tunnel bereitstellen
< >   General Instruments Surfboard 1000
ARCnet devices  --->
Ethernet (10 or 100Mbit)  --->
//hier den entsprechenden Treiber für die Netzwerkkarte auswählen, siehe auch lspci -->Ethernet controller
Ethernet (1000 Mbit)  --->
//bei Gigabitnetzwerkkarten hier den passenden Treiber auswählen, siehe lspci --> Ethernet controller
Ethernet (10000 Mbit)  --->
Token Ring devices  --->
//bei Token Ring Netzwerkkarten den passenden Treiber hier auswählen
Wireless LAN (non-hamradio)  --->
//bei WLAN Support hier mindestens die Wireless Extensions aktivieren, auch wenn kein passender Treiber in der Liste ist
//dies wird auch bei externen Treiber benötigt
PCMCIA network device support  --->
//bei PCMCIA Netzwerkkarten hier den passenden Treiber auswählen
Wan interfaces  --->
[ ]   FDDI driver support
< >   PLIP (parallel port) support
< M >   PPP (point-to-point protocol) support
//wird benötigt zB für die Einwahl ins Internet mit Modem, ISDN, DSL
//oder auch wenn man selber Dienste bereitstellt die auf pppd zurückgreifen
[ ]     PPP multilink support
[ ]     PPP filtering
< M >     PPP support for async serial ports
< M >     PPP support for sync tty ports
< M >     PPP Deflate compression
< M >     PPP BSD-Compress compression
< >     PPP over Ethernet
//dies ist der Kernelmode PPPOE Support, der aber meiner Meinung schwieriger zu benutzen ist als ein entsprechendes Benutzertool z.B. rp-pppoe
< >   SLIP (serial line) support
[ ]   Fibre Channel driver support
< >   Traffic Shaper
//hiermit kann man die Geschwindigkeit des Datenverkehrs limitieren
//eine Alternative dazu wäre im Menupunkt QOS (Quality of Service) -> QBC Class-Based Queueing
< >   Network console logging support
```

*2.4.10.1 Networking options*


```
< M > Packet socket
//wird von Programmen benötigt die direkt mit Netzwerkgeräten kommunizieren können, zb tcpdump
//damit niemand solche Tools benutzen kann, zB bei einem Mehrbenutzersystem, kann man auf dieses Modul verzichten, um die Sicherheit zu erhöhen
[*]   Packet socket: mmapped IO
//in Verbindung mit Packet Sockets empfielt sicht der Memery Mapped IO, diese resultiert in einer höheren Kommunikation
< > Netlink device emulation
< M > Unix domain sockets
//sehr wichtig für die meisten Programme unter Linux
< > PF_KEY sockets
[*] TCP/IP networking
[*]   IP: multicasting
[ ]   IP: advanced router
//möchte man den Rechner als Router einsetzen, der noch etwas mehr kann, als nur Anhand der Routingtabelle die Pakete zu routen, der muss dies hier aktivieren
//dies ist für die meisten Anwendungen nicht nötig
//wenn man dies aktiviert, muss man noch eine der spezifizierten Optionen, die dann darunter erscheinen aktivieren
//dies ermöglicht u.A. anhand der Quell-IP eine Routingentscheidung zu fällen, oder auch mehrere Routen für ein Paket festzulegen, und der Kernel entscheidet auf Grund der "Kosten" welche Route genommen werden soll
[ ]   IP: kernel level autoconfiguration
//wird z.B. bei festplattenlosen Systemen benutzt, damit der Kernel beim Booten dem Netzwerkinterface via DHCP, BOOTP oder RARP eine IP zuweisen kann
//dies wird nicht benötigt bei PC's die von Festplatte booten, da diese über eigene Tools verfügen um den DHCP-Dienst nutzen zu können
< >   IP: tunneling
//wird benötigt um IP-Verkehr in IP zu Tunneln, z.B. wer ipv6 in ipv4 mittels iptunnel tunneln will benötigt dieses Modul
< >   IP: GRE tunnels over IP
[ ] IP: multicast routing
[ ] IP: ARP daemon support
[ ] IP: TCP syncookie support
< > IP: AH transformation
< > IP: ESP transformation
< > IP: IPComp transformation
< > IP: tunnel transformation
//die transformationen werden hauptsächlich bei IPSec benötigt
< > The IPv6 protocol
//wer ipv6 einsetzen will, muss dies hier aktivieren
[*] Network packet filtering (replaces ipchains)  --->
//für den Einsatz als Router (NAT) oder auch nur um Pakete zu filtern (Firewall) muss dies aktiviert werden
//zusätzlich muss dann im Untermenu IP: Netfilter Configuration die entsprechenden Module ausgewählt werden
//es ist hilfreich dort alles als Modul auszuwählen, was unter Connection tracking und IP tables support auftaucht
//raw table, ARP table, ipchains, ipfwadm nur aktivieren, wenn man dies noch unbedingt benötigt
SCTP Configuration (EXPERIMENTAL)  --->
//werden die wenigsten benötigen
< > Asynchronous Transfer Mode (ATM)
//benötigt man in ATM Netzen
< > 802.1d Ethernet Bridging
//möchte man 2 oder mehrere Ethernetgeräte zu einer Bridge zusammenfassen, d.h. mehrere Netzwerksegmente zu einem, so muss dies hier aktiviert werden
< > 802.1Q VLAN Support
< > DECnet Support
< > ANSI/IEEE 802.2 LLC type 2 Support
< > The IPX protocol
< > Appletalk protocol support
< > CCITT X.25 Packet Layer
< > LAPB Data Link Driver
[ ] Frame Diverter
< > Acorn Econet/AUN protocols
< > WAN router
[ ] Forwarding between high speed interfaces
QoS and/or fair queueing  --->
//Normalerweise werden Pakete so verarbeitet bzw weiter gereicht in der Reihenfolge wie sie eintreffen. Mit QoS kann man aber bestimmten Paketen eine höhere Priorität verschaffen, um diese schneller an die Reihe kommen zu lassen.
Network testing  --->
```

*2.4.11 ISDN subsystem*
Zu ISDN kann ich nicht viel sagen, weil ich damit noch nicht allzu viel zu tun hatte. In den meisten Fällen benötigt man noch externe Treiber.


```
< M > ISDN support
Old ISDN4Linux  --->
---   CAPI subsystem
< M >   CAPI2.0 support
[ ]     Verbose reason code reporting (kernel size +=7K)
[*]     CAPI2.0 Middleware support
< M >     CAPI2.0 /dev/capi support
[ ]       CAPI2.0 filesystem support
---     CAPI hardware drivers
Active AVM cards  --->
Active Eicon DIVA Server cards  --->
```

*2.4.12 Input device support*
Dieser Menupunkt ist für alle Eingabegeräte außer USB.


```
--- Userland interfaces
--- Mouse interface
[*]   Provide legacy /dev/psaux device
//aktivieren wenn man eine PS/2 Mouse hat, und neben dem üblichen /dev/input/mice device auch /dev/psaux haben möchte
//beide devices haben die gleiche Funktion
(1024) Horizontal screen resolution
(768) Vertical screen resolution
//wichtig für Grafiktablets
< > Joystick interface
//für Joysticks
< > Touchscreen interface
//für Touchscreen
< > Event interface
< > Event debugging
--- Input I/O drivers
< > Gameport support
//Support für den Gameport (15polig)
//für einige Karten muss noch ein zusätzliches Modul aktiviert werden
< > Serial port line discipline
< > Serial port line discipline
//für Eingabegeräte (Mouse, Joystick, Tablets) die über die Com-Schnittstelle kommunizieren
< > ct82c710 Aux port controller
< > Parallel port keyboard adapter
//für Keyboards die am Parallelport angeschlossen sind
< > PCI PS/2 keyboard and PS/2 mouse controller
//für eine mobile Docking Station die über PS/2 Mouse und Keyboard verfügen
< > Raw access to serio ports
--- Input Device Drivers
--- Keyboards
< >   Sun Type 4 and Type 5 keyboard support
< >   DECstation/VAXstation LK201/LK401 keyboard support
< >   XT Keyboard support
< >   Newton keyboard
[*] Mice
< M >   PS/2 mouse
//für PS/2 Mouse
< >   Serial mouse
//für eine Mouse die am Comport ist
< >   InPort/MS/ATIXL busmouse
< >   Logitech busmouse
< >   IBM PC110 touchpad
< >   DEC VSXXX-AA/GA mouse and VSXXX-AB tablet
//weitere spezielle Mäuse
[ ] Joysticks
//für spezielle Joysticks
[ ] Touchscreens
//Touchscreen
[ ] Misc
//verschiedene Geräte, u.A auch PC-Speakersupport
```

*2.4.13 Character devices*


```
[ ] Non-standard serial port support
Serial drivers  --->
//Untermenu für die serielle Schnittstellen (COM Ports) des Computers
[ ] Legacy (BSD) PTY support
//alter BSD-Like PTY support, wird in den meisten Fällen nicht mehr benötigt
< > Support for user-space parallel port device drivers
< > Texas Instruments parallel link cable support
IPMI  --->
Watchdog Cards  --->
< M > Intel/AMD/VIA HW Random Number Generator support
//ein Pseudozufallsgenerator, der aber nur mit bestimmter Hardware verfügbar ist, und wird über /dev/urandom angesprochen
< > /dev/nvram support
<*> Enhanced Real Time Clock Support
//Support für die Hardware Uhr
< > Double Talk PC internal speech card support
< > Siemens R3964 line discipline
< > Applicom intelligent fieldbus card support
< > Sony Vaio Programmable I/O Control Device support
Ftape, the floppy tape device driver  --->
< M > /dev/agpgart (AGP Support)
//für Mainboards mit AGP Slot
< M >   xyz chipset support
//hier den passenden Chipsatztreiber auswählen, siehe auch Ausgabe von lspci -> Host Bridge
[ ] Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)
//sollte deaktivert bleiben, da XOrg-X11 seine eigenen Treiber mitbringt, bzw bei externen Treibern (z.B. NVIDIA) darf diese Option ebenfalls nicht aktivert sein
PCMCIA character devices  --->
//Charakterdevices an der PCMCIA Schnittstelle
< > ACP Modem (Mwave) support
//Treiber für einige sogenannte Winmodems
< > RAW driver (/dev/raw/rawN) (OBSOLETE)
[ ] HPET - High Precision Event Timer
< > Hangcheck timer
```

*2.4.13.1 Serial drivers*


```
< M > 8250/16550 and compatible serial support
< >   8250/16550 PCMCIA device support
[ ]   8250/16550 device discovery via ACPI namespace
(4)   Maximum number of non-legacy 8250/16550 serial ports
[ ]   Extended 8250/16550 serial driver options
```

*2.4.14 I2C support*
Dieser Menupunkt ist für diejenigen interessant, die Informationen der Hardwaresensoren (Temperaturen, Spannung, Lüfterdrehzahl) unter Linux anzeigen möchten. Da die meisten wohl nicht wissen welche Sensoren sie besitzen, sollten zunächst erst einmal den generellen I2C Support aktivieren, sowie alle Hardwaresensortreiber als Modul aktivieren, um dann später, mit dem neu gebooteten Kernel und dem Paket LM-Sensors mittels des Befehls sensors-detect, zu ermitteln welche Sensorhardware man besitzt.
Für zukünftige Kernel reicht dann nur noch das passende Modul zu aktivieren.

```
< M > I2C support
< M >   I2C device interface
//die 2 Module sind für den generellen I2C Support
I2C Algorithms  --->
I2C Hardware Bus support  --->
Hardware Sensors Chip support  --->
//hier den passenden Sensortreiber auswählen, bzw wenn man nicht genau weiß, dann alle Module aktiveren
Other I2C Chip support  --->
[ ]   I2C Core debugging messages
[ ]   I2C Algorithm debugging messages
[ ]   I2C Bus debugging messages
[ ]   I2C Chip debugging messages
```

*2.4.15 Multimedia devices*
Untermenu für Video-, TV-, Radio-, DVB-karten. Hier einfach wieder den passenden Treiber auswählen, wenn man solch eine Karte besitzt.

*2.4.16 Graphics support*
Support für den Framebuffer. Damit kann man die Auflösung in der Konsole verändern. Standard hat die Konsole eine Auflösung von 80x25, damit kann man jedoch nur sehr wenig Informationen darstellen. Mit dem Framebuffer kann man alle gängigen Auflösungen, die die Grafikkarte und der Monitor unterstützt auswählen.


```
[*] Support for frame buffer devices
[ ]   Enable Video Mode Handling Helpers
< >   Cirrus Logic support
< >   Permedia2 support
< >   CyberPro 2000/2010/5000 support
[ ]   Chips 69000 display support
[ ]   IMS Twin Turbo display support
< >   VGA 16-color graphics support
[*]   VESA VGA graphics support
< >   Hercules mono graphics support
< >   nVidia Riva support
< >   Intel 810/815 support
< >   Matrox acceleration
< >   ATI Radeon display support
< >   ATI Radeon display support
< >   ATI Rage128 display support
< >   ATI Mach64 display support
< >   SiS acceleration
< >   NeoMagic display support
< >   IMG Kyro support
< >   3Dfx Banshee/Voodoo3 display support
< >   3Dfx Voodoo Graphics (sst1) support
< >   Trident support
< > Virtual Frame Buffer support
Console display driver support  --->
Logo configuration  --->
```

*Hinweiß:* Der Vesatreiber sollte mit jeder Grafikkarte funktionieren. Um den gewünschten Grafikmodus zu aktivieren, sollte man
1. den passenden Treiber (ich empfehle es erst einmal mit dem Vesa zu versuchen) fest in den Kernel einbauen
2. später dem Bootloader die entsprechenden Kernelparameter mitzugeben. Im Falle des Standard-Vesa-Treibers wäre dies *vga=*_MODENUMMER_
Die entsprechende Modenummer ist in der Dokumentation -> /usr/src/linux-2.6.9/Documentation/fb/vesafb.txt zu finden. 
Wenn man einen anderen Treiber benutzt dann kann der Kernelparameter anders lauten, in diesem Falle sollte erst einmal die Dokumentation unter /usr/src/linux-2.6.9/Documentation/fb/ zu Rate gezogen werden.

*2.4.16.1 Console display driver support*
Zusätzlich zum Grafiktreiber muss noch der Konsolen Framebuffersupport aktiviert werden, wenn man die Auflösung in der Konsole erhöhen möchte.


```
--- VGA text console
[ ]   Video mode selection support
< > MDA text console (dual-headed)
<*> Framebuffer Console support
[ ]   Select compiled-in fonts
```

*2.4.17 Sound*
Wie man schon vermuten kann, wird hier die Soundunterstützung aktiviert. Dafür gibt es im Kernel 2 verschiedene Standards. Wir sollten uns aber nur auf ALSA (Advanced Linux Sound Architecture) spezialisieren, da es aktueller ist und auch ein breiteres Spektrum an Soundkarten unterstützt werden.


```
< M > Sound card support
Advanced Linux Sound Architecture  --->
//hier müssen wir gleich noch einiges einstellen
Open Sound System  --->
//wird nicht benötigt
```

*2.4.17.1 Advanced Linux Sound Architecture*


```
< M > Advanced Linux Sound Architecture
< M > Sequencer support
//ist für die Midi-Unterstützung da, und wenn nicht benötigt kann es auch ausgelassen werden
< >   Sequencer dummy client
< M > OSS Mixer API
< M > OSS PCM (digital audio) API
[*] OSS Sequencer API
//diese Option erscheint nur wenn auch Sequencer support weiter oben aktiviert wurde
//die 2 bzw 3 OSS-Emulationen sollten aktiviert sein, da eine Programme nur die OSS-Ausgabe unterstützen
< M > RTC Timer support
[ ] Verbose printk
[ ] Debug
Generic devices  --->
ISA devices  --->
PCI devices  --->
PCMCIA devices  --->
//unter ISA,PCI bzw PCMCIA muss dann noch das entsprechende Soundkartenmodul aktiviert werden, siehe dazu auch lspci -> Multimedia audio controller (nur bei PCI-Karten)
```

*Hinweiß:* Besitzt man eine USB-Soundkarte, dann muss man erst den USB Support im nächsten Schritt aktivieren, und dann zu diesem Menu zurückkehren. Dann erscheint ein neuer Unterpunkt "ALSA USB devices  --->"

*2.4.18 USB support*


```
< M > Support for Host-side USB
[ ]   USB verbose debug messages
---   Miscellaneous USB options
[*]   USB device filesystem
[ ]   Enforce USB bandwidth allocation
[ ]   Dynamic USB minor allocation
[ ]   USB suspend/resume
---   USB Host Controller Drivers
//hier muss der vorhandene Host Controller Driver ausgewählt werden, siehe auch lspci -v -> USB Controller
//bei Systemen die einen USB2.0 Controller besitzen genügt es nicht nur den ehci Treiber zu aktivieren, sondern es muss auch uhci bzw ohci aktiviert sein
< M >   EHCI HCD (USB 2.0) support
//aktivieren wenn lspci -v einen USB 2.0 bzw EHCI Controller anzeigt
[ ]     Full speed ISO transactions
[ ]     Root Hub Transaction Translators
< M >   OHCI HCD support
//aktivieren wenn lspci -v einen OHCI Controller anzeigt
< M >   UHCI HCD (most Intel and VIA) support
//aktivieren wenn lspci -v einen UHCI Controller anzeigt
---   USB Device Class drivers
< >   USB Audio support
//aktivieren wenn man Soundequipment an USB anschliessen will
< >   USB Bluetooth TTY support
//für USB Bluetooth Geräte
< >   USB MIDI support
//für Midigeräte am USB Port
< >   USB Modem (CDC ACM) support
//für Modem bzw ISDN Geräte am USB Port (funktioniert nicht mit allen Geräten)
< >   USB Printer support
//USB Drucker
< >   USB Mass Storage support
//Festplatten am USB-Port oder USB-Sticks
---   USB Human Interface Devices (HID)
< M >   USB Human Interface Device (full HID) support
//für Eingabegeräte am USB-Port (Mouse, Keyboard, Joystick, usw)
[*] HID input layer support
[ ]   Force feedback support
[ ] /dev/hiddev raw HID device support
...
//ab hier kommt dann die spezielle Treiberunterstützung für diverse USB-Geräte
//da sollte halt jeder für sich die Sachen aktivieren, die er benötigt, siehe auch lsusb
```

----------


## Stage

*2.5 File systems*
Hier ist wieder wichtig das Filesystem der Root-Partition fest in den Kernel einzukompilieren. In den meisten Fällen kommt da entweder Ext3, ReiserFS, JFS oder XFS in Frage, da diese Filesysteme ein journaling besitzen, welches einen Datenverlust zum Beispiel bei Stromausfall verhindern soll.


```
< M > Second extended fs support
//hat man zusätzlich eine /boot-Partition so ist diese in den meisten Fällen mit ext2 formatiert
[ ]   Ext2 extended attributes
<*> Ext3 journalling file system support
//wenn Root-Partition ein Ext3-Filesystem ist dann *, sonst m oder falls nicht gebraucht deaktiviert lassen
[ ]   Ext3 extended attributes
[ ] JBD (ext3) debugging support
<*> Reiserfs support
//wenn Root-Partition ein ReiserFS-Filesystem ist dann *, sonst m oder falls nicht gebraucht deaktiviert lassen
//dies ist NICHT die Reiser4FS Unterstützung
[ ]   Enable reiserfs debug mode
[ ]   Stats in /proc/fs/reiserfs
[ ]   ReiserFS extended attributes
<*> JFS filesystem support
//wenn Root-Partition ein JFS-Filesystem ist dann *, sonst m oder falls nicht gebraucht deaktiviert lassen
[ ]   JFS POSIX Access Control Lists
[ ]   JFS debugging
[ ]   JFS statistics
<*> XFS filesystem support
//wenn Root-Partition ein XFS-Filesystem ist dann *, sonst m oder falls nicht gebraucht deaktiviert lassen
[ ]   Realtime support
[ ]   Quota support
[ ]   Security Label support
[ ]   POSIX ACL support
//sämtliche Dateisysteme haben noch spezielle Optionen, falls man diese benötigt wie zB ACL-Support bei JFS dann muss dies natürlich mit aktiviert werden
< > Minix fs support
//altes Linux Dateisystem, kann aber noch auf einigen Disketten vorhanden sein
< > ROM file system support
[ ] Quota support
//möchte man Grenzen für die Speicherplatzgrösse der Benutzer setzen (z.B maximal 100MB für USER xyz) dann muss dies aktiviert werden
//diese Optionen funktioniert nur bei ext2, ext3 und reiserfs Dateisystemen
< > Kernel automounter support
< > Kernel automounter version 4 support (also supports v3)
//Aktiviert den Automounter. Dieser kann Dateisysteme bei Bedarf automatisch mounten
```

*2.5.1 CD-ROM/DVD Filesystems*
Hat man ein CDRom oder DVD Laufwerk und will die Daten auch lesen können, dann muss man folgendes aktivieren.


```
< M > ISO 9660 CDROM file system support
[*]   Microsoft Joliet CDROM extensions
[*]   Transparent decompression extension
< M > UDF file system support
```

*2.5.2 DOS/FAT/NT Filesystems*
Benötigt man DOS/FAT/NT Filesystem z.B bei Disketten oder um Windowspartitionen mounten zu können, dann muss man dies hier aktivieren.


```
< M > MSDOS fs support
< M > VFAT (Windows-95) fs support
(437) Default codepage for FAT
(iso8859-1) Default iocharset for FAT
< M > NTFS file system support
[ ]   NTFS debugging support
[ ]   NTFS write support
//auch wenn die NTFS Schreibunterstützung sicher ist, kann man diese Option aber vergessen.
//Der Schreibsupport funktioniert nur wenn man Dateien bearbeitet und dabei die Grösse nicht ändert
//löschen, anlegen von Dateien und Verzeichnissen ist damit nicht möglich
```

*2.5.3 Pseudo filesystems*


```
[*] /proc file system support
//das /proc FS wird immer benötigt und sollte auf keinen Fall deaktiviert werden
[*] /dev file system support
//aktivieren wenn man noch DevFS als Devicemanager benutzt
//wenn man schon udev benutzt, sollte man diese Option deaktiviert lassen
[*]   Automatically mount at boot
[ ]   Debug devfs
[ ] /dev/pts Extended Attributes
[*] Virtual memory file system support (former shm fs)
[ ] HugeTLB file system support
```

*2.5.4 Network File Systems*
Möchte man Netzwerk Dateisysteme mounten, wie z.B. NFS oder Samba (Windows-Datei-Freigabe), dann benötigt man die folgenen Einstellungen.


```
< M > NFS file system support
//zum Mounten von NFS-Shares
[*]   Provide NFSv3 client support
[ ]   Provide NFSv4 client support
[ ]   Allow direct I/O on NFS files
< M > NFS server support
//wenn man selber NFS-Shares exportieren möchte
[*]   Provide NFSv3 server support
[ ]     Provide NFSv4 server support
[*]   Provide NFS server over TCP support
< > Secure RPC: Kerberos V mechanism
< > Secure RPC: SPKM3 mechanism 
< M > SMB file system support (to mount Windows shares etc.)
//zum mounten von Samba-Shares, wie z.B. Windowsdateifreigabe
[ ]   Use a default NLS
//die default NLS kann beim mounten mit angeben werden, falls die Darstellung der Dateinamen fehlerhaft ist
< M > CIFS support (advanced network filesystem for Samba, Window and other CIFS compliant servers)
//CIFS ist der Nachfolger vom Samba-FS und wird ab Windows 2000 unterstützt
[ ]   CIFS statistics
[ ]   CIFS extended attributes
[ ]   CIFS POSIX Extensions
< > NCP file system support (to mount NetWare volumes)
//zum mounten von Novell Netware Volumes
< > Coda file system support (advanced network fs)
< > Andrew File System support (AFS)
```

*2.5.5 Native Language Support*
Für das Mounten von externen Dateisystem, wie z.B. Dateisystem die über das Netzwerk bereitgestellt werden, oder auch lokale Dateisysteme, die von einem zweiten Betriebsystem (Dual-Boot) verwendet werden, benötigt man die passende Codepage bzw. die passende Zeichensatzunterstützung.
Für die meisten Rechner reichen folgende 6 Optionen


```
< M >   Codepage 437 (United States, Canada)
< M >   Codepage 850 (Europe)
< M >   Windows CP1250 (Slavic/Central European Languages)
< M >   NLS ISO 8859-1  (Latin 1; Western European Languages)
< M >   NLS ISO 8859-15 (Latin 9; Western European Languages with Euro)
< M >   NLS UTF8
```

*2.6 Cryptographic options*
Diese Optionen sind nur nötig wenn man verschlüsselte Partitionen mouten will, oder auch Netzwerkverbindungen über IPSec sichert. Einfach die benötigten Module aktivieren.

*2.7 Abschliessende Einstellungen*
Wenn man jetzt einmal durch ist, sollte man alle Menupunkte noch einmal anschauen, da unter Umständen noch hier und da einige Optionen dazu gekommen sein könnten, wie z.B. bei Sound die USB-Soundkarten Unterstützung. Danach kann man die Menuconfigoberfläche durch exit verlassen, dabei wird gefragt ob wir die Kernelconfig speichern wollen. Das wird natürlich mit einem YES beantwortet (es sei denn man möchte noch einmal von vorn beginnen).
Die Konfiguration ist in /usr/src/linux/.config gepeichert. Es ist daher ratsam sich diese Datei zu sichern.

*2.8 Kompilieren*
Ab jetzt hat der PC die ganze Arbeit  :Smilie: 


```
(bei einem 1 Prozessorsystem)
make && make modules_install
(bei einem Mehrprozessorsystem, wobei N=CPUAnzahl+1)
(damit werden auch alle CPU's beim Kompilieren ausgenutzt, vorrausgesetzt der aktuell laufende Kernel ist ein SMP-Kernel)
make -jN && make modules_install
```

Das Kompilieren kann je nach Rechnergeschwindigkeit und wieviel man aktiviert hat einige Zeit in Anspruch nehmen. Hier einige Richtwerte aus eigener Erfahrung: Pentium2 233 Mhz ~60Minuten, AMD AthlonXP 2800+ ~6Minuten.
Wenn der Prozess erfolgreich durch ist, dann ist der fertige Kernel /usr/src/linux/arch/i386/boot/bzImage
Die Module liegen in /lib/modules/< Kernelversion >/kernel
Jetzt muss nur noch das bzImage nach /boot kopiert werden. Dabei am besten auch gleich einen aussagekräftigen Namen vergeben.
Das folgende Beispiel kopiert den Kernel, die System.map sowie die Konfiguration nach /boot.


```
cd /usr/src/linux
cp arch/i386/boot/bzImage /boot/kernel-2.6.9
cp System.map /boot/System.map-2.6.9
cp .config /boot/config-2.6.9
```

Dann noch den Bootloader entsprechend Konfigurieren, so daß dieser auch den neuen Kernel booten kann.
*Hinweiß:* Es empfiehlt sich den alten Kernel noch mit in der Bootloaderkonfig zu lassen, falls doch wider erwarten der neue Kernel nicht sauber bootet.

*2.9 Umgang mit Modulen*
Bei Modulname ist immer nur der Name des Moduls anzugeben ohne die Dateiendung .ko


```
(Modul laden)
modprobe modulname
(Modul entladen)
rmmod modulname
(geladene Module auflisten)
lsmod
(Modulinformationen anzeigen)
modinfo modulname
```

----------


## dr.moo

Klasse Howto, aber hier isn grober Fehler: 




> //alten Symlink entfernen
> rm /usr/src/linux
> //neuen Symlink erstellen
> cd /usr/src/
> ln -sf linux-_version_ linux


Oder hab ich das hier falsch verstanden: 



> I would suggest that people who compile new kernels should: 
> 
>  - not have a single symbolic link in sight (except the one that the 
>    kernel build itself sets up, namely the "linux/include/asm"
>    symlink that is only used for the internal kernel compile itself) 
> 
> And yes, this is what I do. My /usr/src/linux still has the old 2.2.13 
> header files, even though I haven't run a 2.2.13 kernel in a _loong_ 
> time. But those headers were what Glibc was compiled against, so those 
> ...


MfG seb.

----------


## Stage

Hmm, wie alt ist denn dieses Zitat?

Ich hab bei mir ja Gentoo laufen, wie du an meiner Signatur siehst. Und da kriegt man ein wenig mehr mit wogegen die glibc kompiliert wurde.
Und zwar gegen die Kernel-header, die normalerweise unter /usr/include/linux zu finden sind, und erst einmal garnicht viel mit den Kernel-sources, die dann irgendwann einmal in /usr/src/linux-< version > kommen, zu tun haben.
Beide Dinge müssen auch nicht zwingend die gleiche Version haben.
Eine Regel besagt, das Programme (iptables, bind um ein paar zu nennen) und Bibliotheken (z.B glibc) gegen die Linux-Header kompiliert werden, und externe Kernelmodule (nvidia-treiber, spezielle wlan treiber) dagegen aber gegen die Kernel-sources, und wenn der Symlink dann nicht stimmt, dann wird das Modul nicht für den gewünschten Kernel funktionieren.

----------


## dr.moo

> Hmm, wie alt ist denn dieses Zitat?
> 
> Ich hab bei mir ja Gentoo laufen, wie du an meiner Signatur siehst. Und da kriegt man ein wenig mehr mit wogegen die glibc kompiliert wurde.
> Und zwar gegen die Kernel-header, die normalerweise unter /usr/include/linux zu finden sind, und erst einmal garnicht viel mit den Kernel-sources, die dann irgendwann einmal in /usr/src/linux-< version > kommen, zu tun haben.
> Beide Dinge müssen auch nicht zwingend die gleiche Version haben.
> Eine Regel besagt, das Programme (iptables, bind um ein paar zu nennen) und Bibliotheken (z.B glibc) gegen die Linux-Header kompiliert werden, und externe Kernelmodule (nvidia-treiber, spezielle wlan treiber) dagegen aber gegen die Kernel-sources, und wenn der Symlink dann nicht stimmt, dann wird das Modul nicht für den gewünschten Kernel funktionieren.


Hmm. Dann hab ich das wohl falsch intepretiert. Sorry.

MfG seb.

----------


## king_of_R&R

Hallo, 

zuerst mal ein dickes Lob für dieses tolle Howto! Wirklich ne spitzen-Leistung!

Ich habe mir gerade einen Kernel (2.6.12.3)  direkt nach dem howto konfiguriert, und backe ihn gerade :-)

Aber ein paar kleine Problemchen sind aufgetreten: 


IDE taskfile I/O
=> nicht mehr da (oder finde ich es nur nicht?)


"Gameport support" ist nach "Hardware I/O - Ports" (unterordner) gewandert

"Input I/O drivers" gibts nicht mehr

Ein Tipp noch: 
vielleicht solltest du die SYS-RQ - Keys empfehlen. 
Kernel-Hacking -> kernel debugging -> magic sysrq-keys


Gruß
king_of_r&r

EDIT: bei mir war es noch nötig,  BLK_DEV_IDEDISK auf Y zu stellen, jetzt funktioniert der kernel aber super!

----------


## randy

> Ein Tipp noch: 
> vielleicht solltest du die SYS-RQ - Keys empfehlen. 
> Kernel-Hacking -> kernel debugging -> magic sysrq-keys


für ein sicheres multiuser system sollte man die sysrq-keys nicht empfehlen.
das hat schon seinen grund wieso die unter kernel-hacking eingegliedert sind

mfg
randy²

----------


## king_of_R&R

> für ein sicheres multiuser system sollte man die sysrq-keys nicht empfehlen.


Hast recht, wenn sie der falsche User anwendet, können die durchaus KOpfschmerzen bereiten. Ich bin jetzt davon ausgegangen (wie im HOwto glaub ich auch), dass es sich um einen desktop-PC handelt. 

Und dort haben diese Tasten doch ihre Berechtigung, oder?

Gruß
king_of_r&r

----------


## randy

darüber kann man sich streiten.
aber ich denke auch das sie auf simplen desktop pcs ihre berechtigung haben

----------


## Stage

Hallo,

schaut mal auf http://de.gentoo-wiki.com/Kernel_manuell_kompilieren da sind auch Teile meines Howto's eingeflossen und ich muss gestehen auch viel besser formatiert als man es hier im Forum machen kann. Außerdem auch noch aktueller, deswegen verweise ich jetzt mal auf dieses neue Howto.
Ich hoffe mal damit seid ihr zufrieden.

----------


## frankpr

> Ich hoffe mal damit seid ihr zufrieden.


Wir sind immer zufrieden, wenn sich jemand die Mühe macht, ein HowTo zu schreiben.  :Big Grin: 
Unzufrieden sind wir, wenn Dutzende User das nicht lesen und zu allem, was drin steht, einen neuen Thread mit Fragen aufmachen.  :Frown: 

Allerdings fände ich es besser, wenn Fragen/Korrekturvorschläge per PN an den Autor geklärt werden und nicht im Thread, das erhöht die Übersichtlichkeit.
Deshalb sollte mein Eintrag hier, sobald er ausreichend gelesen ist, auch wieder gelöscht werden.  :Wink: 

MfG

----------

