DEBIAN KERNEL BAUEN
NEUEN DEBIAN KERNEL BAUEN (Stand 29.04.2013) [ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.net | http://unix.oppserver.net]
Alle folgenden Befehle sind als Benutzer root auszufuehren:
Benoetigte Pakete installieren:
aptitude install kernel-package build-essential libc6-dev gcc debianutils make libncurses5-dev initrd-tools
Nach /usr/src wechseln:
cd /usr/src
Hierher nun die Kernel Sourcen laden (Version 3.8.10 sollte nach Bedarf angepasst werden):
wget http://kernel.org/pub/linux/kernel/v3.x/linux-3.8.10.tar.bz2
oder
wget http://kernel.org/pub/linux/kernel/v3.x/linux-3.8.10.tar.gz
Die Sourcen nun entpacken:
tar xvfj /usr/src/linux-3.8.10.tar.bz2
oder
tar xvfz /usr/src/linux-3.8.10.tar.gz
Rechte auf root setzen:
chown -R root:root /usr/src/linux-3.8.10
Umbenennen des entpackten Ordners:
mv linux-3.8.10 linux-3.8.10-1-686-opp
oder
mv linux-3.8.10 linux-3.8.10-1-amd64-opp
Symlink zum alten Kernel entfernen:
unlink linux
Neuen Symlink erstellen:
ln -s /usr/src/linux-3.8.10-1-686-opp /usr/src/linux
oder
ln -s /usr/src/linux-3.8.10-1-amd64-opp /usr/src/linux
Nach linux wechseln:
cd linux
Geben Sie folgende Befehle immer ein bevor Sie mit einem neuen Kernel anfangen:
make clean && make mrproper
Config von altem Kernel uebernehmen:
cp /boot/config-`uname -r` /usr/src/linux/.config
(oder eine alte gesicherte config benutzen.)
Nun bearbeiten wir das Makefile, dies sollte dann wie folgt aussehen:
VERSION = 3
PATCHLEVEL = 8
SUBLEVEL = 10
EXTRAVERSION = -1
Wir haben fuer unsere erste Version dieses Kernels eine -1 bei der EXTRAVERSION hinzugefuegt.
Dann bearbeiten wir die .config Datei:
CONFIG_LOCALVERSION="-default"
Dies aendere ich zb in:
CONFIG_LOCALVERSION="-opp"
Was nun zusammen eine Kernel Version wie folgt ergibt:
3.8.10-1-opp
Als naechstes wird die .config fein eingestellt (darauf achten das unter Security die default Kernel capabilities auf * stehen und nich auf M):
make menuconfig
oder per:
make oldconfig
(Um alle neuen Module angezeigt zu bekommen und zu konfigurieren, weitere Beschreibung siehe am Ende dieser Anleitung.)
Nun kommen wir zum bauen der Debian Pakete:
make-kpkg buildpackage --initrd --revision `date +%Y%m%d`
Mit dem Parameter buildpackage geben wir an, dass wir alle Pakete bauen lassen wollen:
linux-doc
linux-headers
linux-image
linux-manual
linux-source
Natuerlich kann man auch zb nur das linux-image und linux-headers bauen (reicht in den meisten Faellen auch aus), z.B. so:
make-kpkg linux-image --initrd --revision `date +%Y%m%d`
Wenn fertig dann weiter mit:
make-kpkg linux-headers --initrd --revision `date +%Y%m%d`
Jetzt kann man das in /usr/src liegende Debian-Archiv bequem mit dpkg installieren, je nachdem welches Paket man gebaut hat und installieren moechte:
cd /usr/src
dpkg -i linux-(doc|headers|image|manual|source)-3.8.10-1-opp_*.deb)
Dann evtl noch Aenderungen an Lilo/Grub wie folgt anpassen.
LiLo (/etc/lilo.conf):
image = /boot/vmlinuz
label = linux
root = /dev/hdax
vga = 791
initrd = /boot/initrd
image = /boot/vmlinuz-3.8.10-1-opp
label = linux-3.8.10-1-opp
root = /dev/hdax
vga = normal
initrd = /boot/initrd.img-3.8.10-1-opp
Anschliessend fuehren Sie noch /sbin/lilo aus.
Falls alles wie gewuenscht klappt kann man anschliessend auch am Anfang der /etc/lilo.conf die Zeile
default=linux-3.8.10-1-opp
eintragen, womit der Kernel zum Standard-Kernel des Rechners wird.
Anschliessend fuehren Sie nochmals /sbin/lilo aus.
Grub:
Fuer Grub muessen Sie nur folgenden Befehl ausfuehren:
update-grub
Anmerkungen zu "make menuconfig":
Wie schon bei xconfig haben sie eine gewisse Grafik und Sie koennen nach
belieben einstellen wie Sie wollen und koennen jederzeit wieder etwas zurueck
stellen. Die Maus funktioniert hier nicht. Stattdessen arbeitet man hier mit
den Pfeiltasten.
Anmerkung: Fuer make menuconfig muessen Sie X normalerweise nicht starten. Der
Kernel sollte in der Lage sein auch ohne X die Farben und Menues darzustellen.
Wenn er also einen Fehler diesbezueglich meldet, benutzen Sie es in X unter z.B.
xterm.
Jedenfalls kommt nun der Teil bei dem ich Ihnen auch nicht viel sagen kann.
Egal welches der Werkzeuge Sie benutzen, Sie muessen selbst wissen was Sie nun
einstellen muessen. Ein paar Tipps kann ich Ihnen aber geben :
- Wenn Sie X benutzen koennen Sie einfach mehrere xterm oeffnen und so die
neue und alte Konfiguration gleichzeitig ansehen:
o Wechseln sie nach /boot und suchen sie den config File der alten
Kernel Version, z.B. config-2.4.3-20 und kopieren Sie ihn in das
Verzeichnis Ihrer alten (!!) Kernel Quellen, also z.B. /usr/src/
linux-2.4.3. Wechseln Sie dann in dieses Verzeichnis und rufen Sie
dort "make xconfig" oder besser "make menuconfig" auf. Waehlen sie
dann den Punkt "Load ..." um Ihre alte Konfiguration zu laden und
geben Sie hier den eben kopierten Configfile an.
Anmerkung: Es empfiehlt sich dann auch ihn eventuell umzubenennen,
damit Sie ihn in Zukunft einfacher laden koennen. Also z.B. von
config-2.4.3-20 nach config243.
o Sie koennen nun die Konfiguration Ihres aktuellen Kernels sehen und
ihn teilweise (!) als Vergleich fuer den neuen Kernel benutzen.
Einfach alles zu uebernehmen wird jedoch nicht funktionieren und
macht zudem auch keinen Sinn. Denn z.B. fuer ihre Netzwerkkarte
brauchen sie nur dieses eine Modul und nicht alle. Und wenn Sie
keine Radio oder TV Karte oder kein USB haben oder wollen, dann
braucht Ihr neuer Kernel dies alles auch nicht.
- Schauen Sie sich an welche Hardware Sie haben und ueberpruefen Sie Ihre
aktuelle Konfiguration (modules.conf, lsmod usw.) welche Module dort geladen werden. Was Sie nicht haben (oder wollen), das brauchen Sie nicht auszuwaehlen.
- Wichtig sind vor allem die Filesysteme: ext2, ReiserFS, MS Dos, Vfat, /
dev/pts sollten auf jeden Fall drin sein, sonst koennen Sie nachher nicht richtig booten. Moeglicherweise sind auch noch weitere noetig. Vergleichen Sie hierzu mit ihrer alten Konfiguration und uebernehmen Sie alles von dem Sie nicht genau wissen das Sie es nicht brauchen.
- Einige Auswahlmoeglichkeiten koennen Sie nur aktivieren wenn Sie vorher
einen andern Menuepunkt ausgewaehlt haben. Meist ist dies der Support fuer irgendetwas. Sie koennen z.B. keinen SCSI Low Level Treiber installieren wenn Sie keinen SCSI Support aktiviert haben.
- Wenn in Ihrem alten Kernel etwas mit einem Modul kompiliert wurde, dann
ist es ratsam dies auch im neuen Kernel zu tun. Anmerkung: Der Grund ist einfach, das die Konfiguration dann dieses Modul mit entsprechenden Optionen laedt. Packen Sie es nun in den Kernel, dann laeuft es zwar grundsaetzlich, die Optionen sind eventuell aber trotzdem notwendig und werden dann nicht mehr gesetzt. Wenn Sie wissen was Sie aendern muessen, damit es funktioniert, dann koennen Sie das selbstverstaendlich machen wie Sie es fuer Richtig halten.
- Wenn Sie alles konfiguriert haben, dann speichern Sie ihre Einstellungen
auf jeden Fall unter einem anderen Namen noch mal ab. Bei menuconfig und xconfig kann man das auswaehlen. Wenn Sie config benutzt haben, kopieren Sie sich den File .config oder laden Sie diesen noch mal mit menuconfig und speichern damit ab. So koennen Sie dann auch gleich noch mal eventuelle Fehler waehrend make config korrigieren. Am besten speichern Sie es unter dem Namen config247-1 oder so aehnlich ab. So koennen Sie nachher wieder darauf zurueck greifen
- Beim beenden von menuconfig werden Sie gefragt ob gespeichert werden
soll. Hier waehlen sie natuerlich "Ja". Dadurch wird die Datei .config erstellt mit der kompiliert wird. Wenn sie "Nein" waehlen und weiter machen, dann wird nur eine Standard Konfiguration benutzt die vermutlich nicht lauffaehig ist. Bei xconfig kaennen Sie einfach "save and exit" waehlen, nachdem Sie vorher wie gesagt noch zusaetzlich unter anderem Namen gespeichert haben