1000Hz Linux Kernel erstellen (für HL1/CS Gameserver)

02/24/2013 14:46 al.Jay#1
Hallo Com,

ich habe mich dieses Wochenende intensiv mit Linux Kerneln beschäftigt, da mein eigener Root bisher auf 250Hz lief und das nur mässig gute Ergebnisse für 1.6 Gameserver brachte. Ich beschloss also selber einen 1000Hz Kernel zu "backen" und danach zu installieren, was mir auch auf Anhieb gelang. Dieser Kernel ist für Debian 6 da dieses häufig auf Servern genutzt wird. Allerdings wäre ein Debian 5 Kernel mit CKS Patch effektiver.

Ich weise aber ausdrücklich darauf hin, dass eine Änderung des Kernels dazu führen kann, dass euer Root nicht mehr bootet!

Nun zum Tutorial,
nachdem ich mich als Root eingeloggt habe bewege ich mich in das Verzeichnis /usr/src
Code:
cd /usr/src
Ich nutze als Basis den Code vom 3.7.2er Linux:
Code:
wget http://www.kernel.org/pub/linux/kernel/v3.x/linux-3.7.2.tar.bz2
Nun lade ich die benötigten Programme herunter:
Code:
apt-get update
apt-get install kernel-package build-essential libncurses5-dev fakeroot
Jetzt entpacke ich den Linuxcode und bewege mich in das neue Verzeichnis:
Code:
tar xfvj linux-3.7.2.tar.bz2
cd linux-3.7.2
Ich kopiere jetzt die Config von meinem alten Kernel (Merke: Alte Config auf neuen Kernel geht klar, neue Config auf alten kernel ist eher nicht so gut)
Code:
cp -vi /boot/config-`uname -r` .config
Nun muss ich die Einstellungen am Kernel vornehmen:
Code:
make menuconfig
Es öffnet sich ein "Fenster" im Terminal, über das ihr Einstellungen machen könnt. Ihr bewegt die Selektion mit den Pfeiltasten, wählt mit "y" aus, bzw. mit "n" ab. Alle Punkte mit Pfeilen (----->) enthalten Untermenüs auf die ihr mit "Enter" kommt. Mit "Exit" kommt ihr wieder in das Parentmenü bzw. verlasst die Konfiguration wenn ihr im Topmenü seid. Sollte euch das aus Versehen passieren betätigt "Yes" und startet die menuconfig erneut. Die Änderungen bleiben dann erhalten.
  • General setup:
    • Local version - append to kernel release (Euren eigenen Kernelnamen in kleinen Buchstaben eintagen)
    • Einschalten: Automatically append version information to the version string
  • Processor type and features:
    • Processor family (Wähle deine CPU-Familie)
    • Preemtion Model (Voluntary Kernel Preemtion (Desktop))
    • Timer frequency (1000Hz)
  • Power management options
    • Ausschalten: Power Management Debug Support
    • Ausschalten: Suspend to RAM and standby
    • Ausschalten: Hibernation (aka 'suspend to disk')
    • Einschalten: ACPI (Advanced Configuration and Power Interface) Support
    • CPU Frequency scaling
      • Ausschalten: CPU Frequency scaling
  • Networking Support
    • Networking options
      • Ausschalten: QoS and/or fair queueing
  • Device Drivers
    • Ausschalten: Watchdog Timer Support
    • Einschalten: Real Time Clock
      • Einschalten: PC-style 'CMOS'
  • Kernel hacking
    • Alles ausschalten

Nun wird kompiliert:
Code:
fakeroot make-kpkg clean && fakeroot make-kpkg kernel_image --initrd && cd ..
wobei man die lange Wartezeit verkürzen kann, in dem man mehrere Prozessorkerne freigibt. Hat man z.B. 4 Stück so könnte man diesen Befehl eingeben:
Code:
fakeroot make-kpkg clean && fakeroot make-kpkg -j 4 kernel_image --initrd && cd ..
Jetzt bewege ich mich ein Verzeichnis nach oben und liste:
Code:
cd ..
ls
Die Ausgabe sollte so aussehen:
Code:
3.7-sched-bfs-427.patch  linux-3.7.2  linux-3.7.2.tar.bz2  linux-image-3.7.2morethangaming_3.7.2morethangaming-10.00.Custom_amd64.deb
Wobei "morethangaming" durch euren Kernelnamen ersetzt sein sollte.

Jetzt gebe ich folgendes ein, um meinen Kernel zu installieren:
Code:
dpkg -i linux-image-3.7.2morethangaming_3.7.2morethangaming-10.00.Custom_amd64.deb
Wobei der Kernelname natürlich auf euch angepasst werden muss.

Nochmal schnell den Grub2 Bootloader updaten und dann restarten:
Code:
update-grub
shutdown -r now
Wenn mein Server wieder da ist, tippe ich "uname -r" ein, und sollte folgendes zurückbekommen: "3.7.2morethangaming", der Kernelname natürlich wieder auf euch angepasst.

Für die weitere Anpassung der HLDS Prozesse an den neuen Kernel verlinke ich ein immernoch aktuelles Tutorial: [Only registered and activated users can see links. Click Here To Register...]


Ich hoffe euch gefällt das Tutorial, wenn ihr mir etwas Kritik hinterlasst, oder Fragen stellt werde ich antworten :)