Difference between revisions of "Linux Kernel"
From Blue-IT.org Wiki
(→Build custom modules afterwards) |
(→Module assistant) |
||
Line 66: | Line 66: | ||
A very good tool for managing source installations is the ''module-assistant'' - a relict from the debian roots of ubuntu. | A very good tool for managing source installations is the ''module-assistant'' - a relict from the debian roots of ubuntu. | ||
apt-get install module-assistant | apt-get install module-assistant | ||
+ | |||
+ | ==Recompile a single Kernel module== | ||
+ | This part assumes correct installed kernel-sources! | ||
+ | |||
+ | ==Edit Makefile=== | ||
+ | Copy the config | ||
+ | cp /boot/config-`uname -r` /usr/src/linux/.config | ||
+ | |||
+ | Edit the toplevel kernel ''Makefile''. Bw | ||
+ | vim /usr/src/linux/Makefile | ||
+ | |||
+ | VERSION = 2 | ||
+ | PATCHLEVEL = 6 | ||
+ | SUBLEVEL = 24 | ||
+ | EXTRAVERSION = -2-generic | ||
+ | |||
+ | Edit the config file and change what you need to change | ||
+ | make menuconfig | ||
+ | |||
+ | Prepare the kernel | ||
+ | make oldconfig | ||
+ | make prepare0 | ||
+ | make scripts | ||
+ | |||
+ | Now you only need to know, where your module(s) are. If you for example want to recompile the nfs-server module, just do | ||
+ | MYMOD="nfsd.ko"; MYMODDIR="fs/nfsd \ | ||
+ | make M="$MYMODDIR" && ls -l "$MYMODDIR"/"$MYMOD" | ||
+ | |||
+ | And copy it to the right directory | ||
+ | cp /lib/modules/`uname -r`/kernel/"$MYMODDIR"/. \ | ||
+ | /lib/modules/`uname -r`/kernel/"$MYMODDIR"/"$MYMOD".orig | ||
+ | cp "$MYMODDIR"/"$MYMOD" /lib/modules/`uname -r`/kernel/"$MYMODDIR"/. |
Revision as of 21:43, 22 December 2007
Contents
Ubuntu
Links
- mainly stolen from Howtoforge How To Compile A Kernel - The Ubuntu Way
Get the kernel
apt-get install linux-source
Alternatively you can get your own kernel from kernel org
cd /usr/src wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.YOUR-KERNEL-VERSION.tar.bz2 tar xjvf linux-2.6.YOUR-KERNEL-VERSION.tar.bz2 ln -s linux-linux-source-2.6.22 linux
Install additional packages
apt-get update apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 # apt-get install libncurses5 cpp make build-essential
apply patches
cd /usr/src wget http://www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.19-rc4.bz2 cd /usr/src/linux bzip2 -dc /usr/src/patch-2.6.19-rc4.bz2 | patch -p1 --dry-run bzip2 -dc /usr/src/patch-2.6.19-rc4.bz2 | patch -p1
Configure the kernel
cd /usr/src/linux cp /boot/config-`uname -r` .config make menuconfig
Build the custom kernel, headers and modules
Now we are ready to compile the kernel_image and kernel_headers:
make-kpkg clean fakeroot make-kpkg --initrd \ --append-to-version=-nfs3-with-acl-support \ kernel_image kernel_headers [modules_image]**
- If you downloaded source files for modules (e.g. nvidia, lirc etc.) which are located in /usr/src/modules, then you should add modules_image to the line above.
Install the custom kernel
cd /usr/src dpkg -i linux-image-2.6*.deb dpkg -i linux-headers-2.6*.deb
Check grub & reboot
vim /boot/grub/menu.lst
Build custom modules afterwards
Download the source packages, e.g.
apt-get install nvidia-legacy-kernel-source
Go to /usr/src and unpack it.
tar xzvf nvidia-legacy-kernel-source.tar.gz
Go tho the kernel directory and build the module image. Be aware that you use the same "append-to-version" information like for the custom kernel you compiled before. E.g.
cd /usr/src/linux fakeroot make-kpkg --append_to_version=-nfs3-with-acl-support modules_image
You can also easily do
# this will configure/check the build system m-a prepare # this will install your driver m-a a-i your_driver
Module assistant
A very good tool for managing source installations is the module-assistant - a relict from the debian roots of ubuntu.
apt-get install module-assistant
Recompile a single Kernel module
This part assumes correct installed kernel-sources!
Edit Makefile=
Copy the config
cp /boot/config-`uname -r` /usr/src/linux/.config
Edit the toplevel kernel Makefile. Bw
vim /usr/src/linux/Makefile
VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 24 EXTRAVERSION = -2-generic
Edit the config file and change what you need to change
make menuconfig
Prepare the kernel
make oldconfig make prepare0 make scripts
Now you only need to know, where your module(s) are. If you for example want to recompile the nfs-server module, just do
MYMOD="nfsd.ko"; MYMODDIR="fs/nfsd \ make M="$MYMODDIR" && ls -l "$MYMODDIR"/"$MYMOD"
And copy it to the right directory
cp /lib/modules/`uname -r`/kernel/"$MYMODDIR"/. \ /lib/modules/`uname -r`/kernel/"$MYMODDIR"/"$MYMOD".orig cp "$MYMODDIR"/"$MYMOD" /lib/modules/`uname -r`/kernel/"$MYMODDIR"/.