Eigenen Kernel erstellen
Eigener Kernel unter ArchLinux
Anleitung zum Bau eines eigenen Kernels. Gedacht als „Reserve-Kernel“ sowie auch um eigene Änderungen zum Standard-Kernel einzubinden. Dieser Kernel soll nicht einen bereits installierten Arch-Kernel überschreiben, oder von diesem überschrieben werden.
Vorgestellt werden Wege ohne und mit dem ArchLinux-Paketmanagement.
Es bietet sich an, diesen Beitrag einmal komplett durchzulesen. Wenn man das Prinzip einmal verstanden, und ein paar Gehversuche hinter sich hat, dann ist das Thema recht einfach. Nur: Am Anfang haben die Götter den Schweiß gesetzt ;-)
- eigener Kernel ohne das Paketmanagement („the old way“)
- Vorteile
- Man kommt schnell zum eigenen Kernel, weniger Vorarbeiten
- Extrem gut an die eigene Hardware anpassbar
- Nachteile
- Konfiguration erfordert etwas Erfahrung
- Nachträglich schwerer wartbar
- Vorteile
- eigener Kernel mit dem Paketmanagement ("the arch way")
- Achtung:Dieser Teil ist noch nicht fertig!(Siehe Diskussion)
- Vorteile
- Extrem gut an die eigene Hardware anpassbar
- Nachträglich gut wartbar
- Nachteile
- Erfordert einiges an Vorarbeiten
- den ArchLinux-Standardkernel als eigener Kernel anpassen.
- Vorteile
- Nachträglich gut wartbar
- Hat alle Treiber und Patches, die der Arch-Kernel auch hat
- Die schnellste Methode um an einen **lauffähigen** Kernel zu kommen
- Nachteile
- Erfordert einiges an Vorarbeiten
- Vorteile
Vorarbeiten
Das ArchBuildSystem(ABS) sollte eingerichtet sein und synchronisiert.
pacman -Sy cvsup wget abs
Kernel "the old way"
Diese Methode zeigt, wie ein eigener Kernel auf "althergebrachte" Art gebaut und installiert werden kann. Also ohne diesen mit pacman installieren bzw. deinstallieren zu können. Dieser Kernel enthält kein Initrd-Image (gelogen...).
Kernel-Sourcecode besorgen
Kernelsourcen von http://www.kernel.org besorgen.
Hier exemplarisch für den 2.6.22.
Auspacken
cp $downloaddir/linux-2.6.22.tar.bz2 /usr/src/ cd /usr/src tar xvjf linux-2.6.22.tar.bz2 cd /usr/scr/linux-2.6.22
Kernel konfigurieren
Hier wird der Kernel an die eigene Hardware angepaßt. Das ist nur etwas für erfahrene User (oder welche, die lernen wollen). Es sollte unbedingt die README im Kernel-Source-Verzeichniss gelesen werden.
Zwei Wege werden vorgestellt: Die Config selbst erstellen (ggf. unter Verwendung einer Vorlage eines anderen Kernels) und die, bei der einfach die config des Arch-Standard-Kernels genutzt wird.
1. Eigene Konfig Da keine initrd erstellt wird müssen alle zum Booten benötigten Treiber (Harddisk-Controller, Root-Dateisystem) fest in den Kernel kompiliert werden. Also nicht als ladbare Module! Den Kernel konfigurieren mit einem der Front-Ends:
- make menuconfig
- make xconfig
- make gconfig
Dies erstellt uns die Konfiguration .config im Kernelsource-Verzeichniss.
2. Konfig des Arch-Standard-Kernels als Grundlage nehmen Ausgang sei hier der Arch-Kernel 2.6.22. Fallstrick: Diese Config basiert auch auf den im ArchLinux-Kernel installierten bzw. hinzugefügten Patches. Die Weiterverwendung dieser Config kann also gutgehen, muß aber nicht.
cp /boot/kconfig26 /usr/src/linux-2.6.22/.config
make oldconfig
Die Datei .config mit einem Editor öffnen. Folgendes ändern:
# # General setup # CONFIG_LOCALVERSION="-ARCH" CONFIG_LOCALVERSION_AUTO=y CONFIG_SWAP=y
Hier CONFIG_LOCALVERSION ändern zu ="".
Was dieser Parameter bewirkt siehe Eigener_Kernel_erstellen#Welche Parameter bewirken Namensänderungen?.
Kompilieren
Der Kernel und die Module werden kompiliert mit:
make
Kernel und Module installieren
Ich gehe hier von einer 32bit-Architektur aus. Für 64bit die Pfade entsprechend anpassen.
Hilfe: Kann das jemand für 64bit ergänzen/anpassen?
Das Kernel-Image wird so nach /boot installiert:
cp arch/i386/boot/bzImage /boot/vmlinuz cp System.map /boot/ cp .config /boot/kconfig
Die Module installieren:
make modules_install
(Doch) eine initrd erzeugen
Achtung: dieser Schritt wird nur benötigt, wenn oben die ArchLinux-Config als Vorlage genommen wurde (Konfig des Arch-Standard-Kernels als Grundlage nehmen). Bei der ArchLinux-Config sind die meisten Treiber als ladbare Module konfiguriert, deshalb muß zwingend auch für diesen Kernel eine initrd erstellt werden.
mkinitcpio -k 2.6.22 -g /boot/initrd.img
Weiterhin muß im nächsten Abschnitt (Boot-Loader) diese erstelle initrd in den Grub-Eintrag hinzugefügt werden.
Boot-Loader (Grub) anpassen
Die Datei /boot/grub/menu.list um folgenden Eintrag erweitern. Die Einträge zu root und root= analog der eigenen menu.list anpassen!
# Eigener Kernel title Eigener Kernel root (hd0,0) kernel /vmlinuz root=/dev/sda3 ro
oder wenn oben eine initrd erstellt wurde:
# Eigener Kernel title Eigener Kernel root (hd0,0) kernel /vmlinuz root=/dev/sda3 ro initrd /initrd.img
Was ist alles wo installiert, wie lösche ich den Kernel wieder? Ziel war, daß dieser Kernel nicht mit einem Arch-Kernel kollidiert. Folgende Einzel-Dateien bzw. Verzeichnisse wurden installiert und können problemlos wieder von Hand gelöscht werden:
- /boot/vmlinuz (der Kernel)
- /boot/System.map (Debug/Modul-Symboltabelle)
- /boot/initrd.img (wenn ein initrd image erstellt wurde)
- /boot/kconfig (Die Kernel-Konfig-Datei als Vorlage für spätere Änderungen)
- /lib/modules/2.6.22 (das Verzeichniss mit den ladbaren Modulen)
- /usr/src/linux-2.6.22 (die Kernel-Sources)
Der Kernel meldet sich so:
[gbdev@archdev ~]$ uname -r 2.6.22
Den ArchLinux Standard-Kernel als eigener, zusätzlicher Kernel
Unser Kernel soll ein eigenständiger Kernel sein, mit dem Namen 2.6.22-custom.
ABS aktualisieren
abs
Kernel-Steuerdateien in eigenes Verzeichniss kopieren
cp -R /var/abs/kernels/kernel26 /var/abs/local/ cd /var/abs/local mv kernel26 kernel26custom cd kernel26custom
Dateien an eigenen Namen anpassen
mv mkinitcpio-kernel26.conf mkinitcpio-kernel26custom.conf mv kernel26.install kernel26custom.install mv kernel26.preset kernel26custom.preset
Jetzt müssen einige Dateien editiert werden. Ich dokumentiere diese Änderungen anhand von diff-Vergleichen. Die Zeilen mit @@ enthalten Zeilen/Spaltennummern zum schnelleren Auffinden der Textstellen. Textänderungen sind so dokumentiert, daß die Zeile mit dem Minus(-) zur folgenden Zeile mit dem Plus(+) abgeändert werden muß. Wenn eine Zeile nur ein Plus hat (wie _ownver), dann ist diese Zeile an dieser Stelle hinzuzufügen.
PKGBUILD
Als erstes in dieser Datei den gesamten Block md5sum=(xyz) löschen. Das sind Prüfsummen um die Integrität der Dateien beim Bauen zu überprüfen. Da wir einige Dateien ändern müssen wir diese Prüfsummen später neu berechnen lassen.
@@ -1,15 +1,16 @@ # $Id: PKGBUILD,v 1.247 2007/08/15 21:08:35 thomas Exp $ # Maintainer: Tobias Powalowski <tpowa@archlinux.org> # Maintainer: Thomas Baechler <thomas@archlinux.org> -pkgname=kernel26 +pkgname=kernel26custom _basekernel=2.6.22 pkgver=2.6.22.3 +_ownver=custom pkgrel=1 -pkgdesc="The Linux Kernel and modules" +pkgdesc="The Linux Kernel and modules (Custom)" arch=(i686 x86_64) license=('GPL2') url="http://www.kernel.org" -backup=('boot/kconfig26' etc/mkinitcpio.d/${pkgname}.preset) +backup=('boot/kconfig26${_ownver}' etc/mkinitcpio.d/${pkgname}.preset) depends=('module-init-tools' 'mkinitcpio>=0.5.15') # pwc, ieee80211 and hostap-driver26 modules are included in kernel26 now # nforce package support was abandoned by nvidia, kernel modules should cover everything now. @@ -18,7 +19,7 @@ 'alsa-driver' 'ieee80211' 'hostap-driver26' 'pwc' 'nforce' 'squashfs' 'unionfs' 'ivtv' 'zd1211' 'kvm-modules') -install=kernel26.install +install=kernel26custom.install source=(ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-$_basekernel.tar.bz2 #http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.22-rc7.bz2 #http://www.kernel.org/pub/linux/kernel/v2.6/snapshots/patch-2.6.22-rc7-git2.bz2 @@ -27,7 +28,7 @@ logo_linux_clut224.ppm logo_linux_mono.pbm logo_linux_vga16.ppm - kernel26.preset + kernel26custom.preset mkinitcpio-$pkgname.conf acpi-dsdt-initrd-v0.8.4-2.6.21.patch toshiba-bluetooth.patch @@ -108,15 +109,15 @@ make bzImage modules || return 1 mkdir -p $startdir/pkg/{lib/modules,boot} make INSTALL_MOD_PATH=$startdir/pkg modules_install || return 1 - cp System.map $startdir/pkg/boot/System.map26 - cp arch/$KARCH/boot/bzImage $startdir/pkg/boot/vmlinuz26 + cp System.map $startdir/pkg/boot/System.map26${_ownver} + cp arch/$KARCH/boot/bzImage $startdir/pkg/boot/vmlinuz26${_ownver} install -D -m644 Makefile \ $startdir/pkg/usr/src/linux-${_kernver}/Makefile install -D -m644 kernel/Makefile \ $startdir/pkg/usr/src/linux-${_kernver}/kernel/Makefile install -D -m644 .config \ $startdir/pkg/usr/src/linux-${_kernver}/.config - install -D -m644 .config $startdir/pkg/boot/kconfig26 + install -D -m644 .config $startdir/pkg/boot/kconfig26${_ownver} mkdir -p $startdir/pkg/usr/src/linux-${_kernver}/include mkdir -p $startdir/pkg/usr/src/linux-${_kernver}/arch/$KARCH/kernel @@ -185,6 +186,6 @@ install -m644 -D $startdir/src/${pkgname}.preset $startdir/pkg/etc/mkinitcpio.d/${pkgname}.preset || return 1 install -m644 -D $startdir/src/mkinitcpio-$pkgname.conf $startdir/pkg/etc/mkinitcpio.d/$pkgname-fallback.conf || return 1 # set correct depmod command for install - sed -i -e "s/KERNEL_VERSION=.*/KERNEL_VERSION=${_kernver}/g" $startdir/kernel26.install + sed -i -e "s/KERNEL_VERSION=.*/KERNEL_VERSION=${_kernver}/g" $startdir/kernel26${_ownver}.install echo -e "# DO NOT EDIT THIS FILE\nALL_kver='${_kernver}'" > ${startdir}/pkg/etc/mkinitcpio.d/${pkgname}.kver }
kernel26custom.preset
@@ -1,14 +1,14 @@ -# mkinitcpio preset file for kernel26 +# mkinitcpio preset file for kernel26custom ######################################## # DO NEVER EDIT THIS LINE: -source /etc/mkinitcpio.d/kernel26.kver +source /etc/mkinitcpio.d/kernel26custom.kver ######################################## PRESETS=('default' 'fallback') default_config="/etc/mkinitcpio.conf" -default_image="/boot/kernel26.img" +default_image="/boot/kernel26custom.img" -fallback_config="/etc/mkinitcpio.d/kernel26-fallback.conf" -fallback_image="/boot/kernel26-fallback.img" +fallback_config="/etc/mkinitcpio.d/kernel26custom-fallback.conf" +fallback_image="/boot/kernel26custom-fallback.img"
kernel26custom.install
@@ -1,7 +1,8 @@ # arg 1: the new package version # arg 2: the old package version -KERNEL_VERSION=2.6.22-ARCH +KERNEL_VERSION=2.6.22-custom +_ownver=custom post_install () { # updating module dependencies @@ -17,11 +18,11 @@ echo "" echo ">>> Generating initial ramdisk, using mkinitcpio. Please wait..." if [ "`vercmp $2 2.6.19`" -lt 0 ]; then - /sbin/mkinitcpio -p kernel26 -m "ATTENTION:\nIf you get a kernel panic below + /sbin/mkinitcpio -p kernel26${_ownver} -m "ATTENTION:\nIf you get a kernel panic below and are using an Intel chipset, append 'earlymodules=piix' to the kernel commandline" else - /sbin/mkinitcpio -p kernel26 + /sbin/mkinitcpio -p kernel26${_ownver} fi if [ "`vercmp $2 2.6.21`" -lt 0 ]; then echo "" @@ -136,11 +137,11 @@ echo "" echo ">>> Generating initial ramdisk, using mkinitcpio. Please wait..." if [ "`vercmp $2 2.6.19`" -lt 0 ]; then - /sbin/mkinitcpio -p kernel26 -m "ATTENTION:\nIf you get a kernel panic below + /sbin/mkinitcpio -p kernel26${_ownver} -m "ATTENTION:\nIf you get a kernel panic below and are using an Intel chipset, append 'earlymodules=piix' to the kernel commandline" else - /sbin/mkinitcpio -p kernel26 + /sbin/mkinitcpio -p kernel26${_ownver} fi if [ "`vercmp $2 2.6.21`" -lt 0 ]; then echo ""
config
# # General setup # -CONFIG_LOCALVERSION="-ARCH" +CONFIG_LOCALVERSION="-custom" CONFIG_LOCALVERSION_AUTO=y </file> **config.x86_64**\\ <file> # # General setup # -CONFIG_LOCALVERSION="-ARCH" +CONFIG_LOCALVERSION="-custom" CONFIG_LOCALVERSION_AUTO=y
Das war's jetzt mit dem Editieren, Ehrenwort ;-)
Jetzt laden wir den Kernelsource und die Patches aus dem Internet und lassen uns Prüfsummen generieren. Dank makepkg wird uns das ganz einfach gemacht.
makepkg -g >> PKGBUILD
Nun können wir endlich den Computer etwas arbeiten lassen und uns einen Kaffee/Tee gönnen
makepkg
Wenn das Kompilieren/Bauen fertig ist sehen wir am Ende folgende Meldungen:
==> Compressing package... ==> Finished making: kernel26custom (Wed Aug 15 08:59:23 CEST 2007)
In unserem aktuellen Verzeichnis finden wir jetzt unser Kernel-Paket
kernel26custom-2.6.22.3-1-i686.pkg.tar.gz
Dieses Paket werden wir jetzt mit pacman installieren. Bei der Installation verhält es sich so, wie wir es von "normalen" Kernel-Installationen gewohnt sind.
pacman -U kernel26custom-2.6.22.3-1-i686.pkg.tar.gz
Jetzt fehlt lediglich noch der Eintrag im Bootloader (Grub) für unseren neuen Kernel. Die Einträge zu root und root= analog der eigenen menu.list anpassen!
# Eigener Kernel 2 title Eigener Kernel (custom) root (hd0,0) kernel /vmlinuz26custom root=/dev/sda3 ro initrd /kernel26custom.img # (1) Arch Linux title Eigener Kernel (custom) Fallback root (hd0,0) kernel /vmlinuz26custom root=/dev/sda3 ro initrd /kernel26custom-fallback.img
Kernel "the arch way"
Ziel ist es, einen eigenen Kernel basierend auf den Sourcen von [1] zu bauen, diesmal aber als Arch-Paket. Dieses Paket wird über pacman installiert und kann so auch einfach aktualisiert oder entfernt werden.
Dafür werden wir u.a. eine PKGBUILD Steuerdatei erstellen, die sich prinzipiell an der orientiert, die auch zum Bauen des Arch-Standardkernels verwendet wird.
Der so erstellte Kernel soll einen eigenen Namen bekommen. Für dieses Beispiel anhand des 2.6.22 Kernels soll dieser nacher 2.6.22-custom heißen.
Um die notwendigen Vorlagen zu bekommen (natürlich kann man auch die Beispiele hieraus verwenden) sollte das [Abs|ArchBuildSystem(ABS)] auf dem PC eingerichtet und synchronisiert sein.
pacman -Sy cvsup wget abs
Die von uns als Vorlagen nötigen Dateien befinden sich in /var/abs/kernels/kernel26.
Zum Bauen erstellen wir ein eigenes Verzeichniss, hier als Beispiel im $HOME-Verzeichniss.
mkdir $HOME/kernel26-custom cd $HOME/kernel26-custom
Wir benötigen fünf Dateien, die wir entweder dem Arch-Kernel aus dem ABS klauen oder hier aus den Beispielen kopieren/abschreiben.
ls -1 $HOME/kernel26-custom PKGBUILD kernel26custom-fallback.conf kernel26custom.conf kernel26custom.install kernel26custom.preset
Hier jetzt die Dateien. Die Stellen, an denen wir unseren Zusatz custom ergänzen müssen, habe ich mit
***custom***
markiert. Die 3 Sterne (*) um das Wort custom dienen lediglich zur Kenntlichmachung und müssen in den Dateien entfernt werden.
Prinzipiell kann man in der PKGBUILD nach kernel26 suchen und dort seine Endung anhängen
PKGBUILD
# Contributor: Hier dein Name pkgname=kernel26***custom*** basekernel=2.6.22 pkgver=2.6.22.***custom*** pkgrel=1 pkgdesc="The Linux Kernel and modules (Eigener Kernel)" url="" license="GPL" arch=('i686') backup=('boot/kconfig26***custom***' 'etc/mkinitcpio.d/kernel26***custom***.preset') depends=('module-init-tools' 'mkinitcpio>=0.5.11') install=kernel26***custom***.install source=(ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-${basekernel}.tar.bz2 \ kernel26***custom***.preset \ kernel26***custom***-fallback.conf \ ) build() { KARCH=i386 cd $startdir/src/linux-${basekernel} # load configuration #yes "" | make config #make oldconfig || return 1 ##make menuconfig || return 1 make defconfig || return 1 make menuconfig || return 1 #make gconfig || return 1 . ./.config _kernver="${basekernel}${CONFIG_LOCALVERSION}" # build! make bzImage modules || return 1 mkdir -p $startdir/pkg/{lib/modules,boot} make INSTALL_MOD_PATH=$startdir/pkg modules_install || return 1 cp System.map $startdir/pkg/boot/System.map26***custom*** cp arch/$KARCH/boot/bzImage $startdir/pkg/boot/vmlinuz26***custom*** install -D -m644 Makefile \ $startdir/pkg/usr/src/linux-${_kernver}/Makefile install -D -m644 kernel/Makefile \ $startdir/pkg/usr/src/linux-${_kernver}/kernel/Makefile install -D -m644 .config \ $startdir/pkg/usr/src/linux-${_kernver}/.config install -D -m644 .config $startdir/pkg/boot/kconfig26***custom*** mkdir -p $startdir/pkg/usr/src/linux-${_kernver}/include mkdir -p $startdir/pkg/usr/src/linux-${_kernver}/arch/$KARCH/kernel for i in acpi asm-generic asm-$KARCH config linux math-emu media net pcmcia scsi sound video; do cp -a include/$i $startdir/pkg/usr/src/linux-${_kernver}/include/ done # copy files necessary for later builds, like nvidia and vmware cp Module.symvers $startdir/pkg/usr/src/linux-${_kernver} cp -a scripts $startdir/pkg/usr/src/linux-${_kernver} # fix permissions on scripts dir chmod og-w -R $startdir/pkg/usr/src/linux-${_kernver}/scripts mkdir -p $startdir/pkg/usr/src/linux-${_kernver}/.tmp_versions cp arch/$KARCH/Makefile $startdir/pkg/usr/src/linux-${_kernver}/arch/$KARCH/ cp arch/$KARCH/Makefile.cpu $startdir/pkg/usr/src/linux-${_kernver}/arch/$KARCH/ cp arch/$KARCH/kernel/asm-offsets.s $startdir/pkg/usr/src/linux-${_kernver}/arch/$KARCH/kernel/ # add headers for lirc package mkdir -p $startdir/pkg/usr/src/linux-${_kernver}/drivers/media/video cp drivers/media/video/*.h $startdir/pkg/usr/src/linux-${_kernver}/drivers/media/video/ for i in bt8xx cpia2 cx25840 cx88 em28xx et61x251 pwc saa7134 sn9c102 usbvideo zc0301; do mkdir -p $startdir/pkg/usr/src/linux-${_kernver}/drivers/media/video/$i cp -a drivers/media/video/$i/*.h $startdir/pkg/usr/src/linux-${_kernver}/drivers/media/video/$i done # add dm headers mkdir -p $startdir/pkg/usr/src/linux-${_kernver}/drivers/md cp drivers/md/*.h $startdir/pkg/usr/src/linux-${_kernver}/drivers/md # add inotify.h mkdir -p $startdir/pkg/usr/src/linux-${_kernver}/include/linux cp include/linux/inotify.h $startdir/pkg/usr/src/linux-${_kernver}/include/linux/ # add CLUSTERIP file for iptables mkdir -p $startdir/pkg/usr/src/linux-${_kernver}/net/ipv4/netfilter/ cp net/ipv4/netfilter/ipt_CLUSTERIP.c $startdir/pkg/usr/src/linux-${_kernver}/net/ipv4/netfilter/ # copy in Kconfig files for i in `find . -name "Kconfig*"`; do mkdir -p $startdir/pkg/usr/src/linux-${_kernver}/`echo $i | sed 's|/Kconfig.*||'` cp $i $startdir/pkg/usr/src/linux-${_kernver}/$i done cd $startdir/pkg/usr/src/linux-${_kernver}/include && ln -s asm-$KARCH asm chown -R root.root $startdir/pkg/usr/src/linux-${_kernver} cd $startdir/pkg/lib/modules/${_kernver} && \ (rm -f source build; ln -sf ../../../usr/src/linux-${_kernver} build) # for binary modules make prepare cd $startdir/pkg/lib/modules/${_kernver}/build make prepare # install fallback mkinitcpio.conf and kernel preset files install -m644 -D $startdir/src/kernel26***custom***.preset $startdir/pkg/etc/mkinitcpio.d/kernel26***custom***.preset install -m644 -D $startdir/src/kernel26***custom***-fallback.conf $startdir/pkg/etc/mkinitcpio.d/kernel26***custom***-fallback.conf # set correct depmod command for install sed -i -e "s/KERNEL_VERSION=.*/KERNEL_VERSION=${_kernver}/g" $startdir/kernel26***custom***.install echo -e "# NEVER EDIT THIS FILE\nALL_kver='${_kernver}'" > ${startdir}/pkg/etc/mkinitcpio.d/kernel26***custom***.kver }
makepkg -g make menuconfig → General setup→ Local version = -custom
Welche Parameter bewirken Namensänderungen?
Es gibt bei den vorgestellten Verfahren mehrere Parameter in verschiedenen Configs, die später eine Auswirkung darauf haben:
- wie der Kernel "heißt" (uname -r)
- wie daß Verzeichniss heißt, in dem die Module installiert werden (/lib/modules/$name)
- wie das ArchLinux-Paket heißt (unser Paket darf im Paketsystem z.B. nicht mit dem Paket kernel26 kollidieren)
.config
Die Kernel-Config, die wir z.B. mit make menuconfig erstellen oder die beim Arch-Standard-Kernel analog obigen Beispielen in $HOME/kernel26-custom als config bzw. config.x86_64 liegt.
# # General setup # CONFIG_LOCALVERSION="-custom"
Was wir hier eintragen wird intern an den Kernel-Namen angehängt und bewirkt u.a. auch, wie das Modul-Verzeichniss heißt. Wenn wir CONFIG_LOCALVERSION="-custom" eintragen, dann wird der Kernel die Module in /lib/modules/2.6.22-custom suchen.
PKGBUILD
Wenn wir einen Kernel mit dem Paketmanagement bauen, dann haben Parameter darin Auswirkungen wie später das gebaute Paket heißt und welchen Namen der Kernel in der Paketdatenbank hat. Dies müssen wir anpassen um nicht mit den Standard-Kerneln zu kollidieren.
pkgname=kernel26custom
Dies bewirkt, wie das Paket zum Installieren heißt (blabla.pkg.tar.gz), welchen Namen Verzeichnisse und Kernel bzw. initrd-Image haben.
_ownver=custom
Dies ist ein eigener Parameter, den wir benutzen um in der Steuerdatei unseren Versionszusatz an z.B. Kopieraktionen anzuhängen.
pkgrel=1
Wenn wir unseren eigenen Kernel später mal verändern, dann sollten wir diesen Parameter um Eins erhöhen. Dadurch können wir mit pacman unser Paket leicht aktualisieren.