最新の Linux kernel を利用するには、ソースからビルドするしかありません。
Ubuntu でそれをやる場合、Fedora とは違う作法があるようです。
1. kernel ソースを kernel.org からダウンロードします。
(2009/06/17 時点の最新版は 2.6.30)
2. ダウンロードしたソースを展開します。
# cd /usr/src
# tar jxvf linux-2.6.30.tar.bz2
3. 今起動している kernel のコンフィグファイルを /boot/ ディレクトリからコピーします。
# cd linux-2.6.30/
# cp /boot/config-2.6.27-11-generic .config
4. make menuconfig を実行します。ここで設定を変えてもいいです。
(変えたいときだけ変える程度)
# make menuconfig
5. make-kpkg でビルドします (パッケージ管理するため)。
# make-kpkg --initrd kernel_image kernel_headers
※ make-kpkg の前に CONCURRENCY_LEVEL=2 を付けると、処理の並列化が図れます。
# CONCURRENCY_LEVEL=2 make-kpkg --initrd kernel_image kernel_headers
※ kernel-package が無い場合はインストールしておきます。
# apt-get install kernel-package
6. 一つ上のディレクトリに deb ファイルが作成されるのでインストールします。
(この deb ファイルを配ると、他のメンバーのビルドの手間が省けます)
# cd ..
# dpkg -i linux-image-2.6.30_2.6.30-10.00.Custom_i386.deb
# dpkg -i linux-headers-2.6.30_2.6.30-10.00.Custom_i386.deb
7. grub の設定を変更します。
# vi /boot/grub/menu.lst
大抵の場合 default 0 に設定すれば、インストールしたカーネルで起動します。
■ 2009/08/04 追記
カーネル Ver.2.6.30.3 で運用中に、Ver.2.6.30.4 とかにアップデートしようとすると、
下記のエラーが出て、アップデートできません。
# dpkg -i linux-image-2.6.30.4_2.6.30.4-10.00.Custom_i386.deb
Selecting previously deselected package linux-image-2.6.30.4.
(Reading database ... 147376 files and directories currently installed.)
Unpacking linux-image-2.6.30.4 (from linux-image-2.6.30.4_2.6.30.4-10.00.Custom_i386.deb) ...
Done.
dpkg: error processing linux-image-2.6.30.4_2.6.30.4-10.00.Custom_i386.deb (--install):
trying to overwrite `/lib/firmware/av7110/bootcode.bin', which is also in package linux-image-2.6.30.3
dpkg-deb: subprocess paste killed by signal (Broken pipe)
Running postrm hook script /sbin/update-grub.
Searching for GRUB installation directory ... found: /boot/grub
Searching for default file ... found: /boot/grub/default
Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst
Searching for splash image ... none found, skipping ...
Found kernel: /boot/vmlinuz-2.6.30.3
Found kernel: /boot/vmlinuz-2.6.24-19-generic
Found kernel: /boot/memtest86+.bin
Updating /boot/grub/menu.lst ... done
Errors were encountered while processing:
linux-image-2.6.30.4_2.6.30.4-10.00.Custom_i386.deb
こんなときは、運用中のパッケージを削除してから、インストールします。
※ これをやるときは、かならず起動できるカーネルイメージを 1 つは残してからやること。
※ インストールしたカーネルが起動しなかったときは、残しておいたカーネルで一旦起動してから、復旧させる必要があります。
途中、Do you want to abort removal now? と聞かれますが、
No を選択します。
# dpkg -r linux-image-2.6.30.3
(Reading database ... 147375 files and directories currently installed.)
Removing linux-image-2.6.30.3 ...
Ok, proceeding with removing running kernel image.
Running postrm hook script /sbin/update-grub.
Searching for GRUB installation directory ... found: /boot/grub
Searching for default file ... found: /boot/grub/default
Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst
Searching for splash image ... none found, skipping ...
Found kernel: /boot/vmlinuz-2.6.24-19-generic
Found kernel: /boot/memtest86+.bin
Replacing config file /var/run/grub/menu.lst with new version
Updating /boot/grub/menu.lst ... done
The link /vmlinuz is a damaged link
Removing symbolic link vmlinuz
Unless you used the optional flag in lilo,
you may need to re-run your boot loader[lilo]
The link /initrd.img is a damaged link
Removing symbolic link initrd.img
Unless you used the optional flag in lilo,
you may need to re-run your boot loader[lilo]
■ Do you want to abort removal now?
→ No を選択
そのあとで、インストールします。
# dpkg -i linux-image-2.6.30.4_2.6.30.4-10.00.Custom_i386.deb
(Reading database ... 144924 files and directories currently installed.)
Unpacking linux-image-2.6.30.4 (from linux-image-2.6.30.4_2.6.30.4-10.00.Custom_i386.deb) ...
Done.
Setting up linux-image-2.6.30.4 (2.6.30.4-10.00.Custom) ...
Running depmod.
Finding valid ramdisk creators.
Using mkinitramfs-kpkg to build the ramdisk.
Running postinst hook script update-grub.
Searching for GRUB installation directory ... found: /boot/grub
Searching for default file ... found: /boot/grub/default
Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst
Searching for splash image ... none found, skipping ...
Found kernel: /boot/vmlinuz-2.6.30.4
Found kernel: /boot/vmlinuz-2.6.24-19-generic
Found kernel: /boot/memtest86+.bin
Replacing config file /var/run/grub/menu.lst with new version
Updating /boot/grub/menu.lst ... done
■ 2009/09/25 追記
make-kpkg 実行時に、CONCURRENCY_LEVEL を設定することで、並列処理が図れることを追記。
■ 2011/03/30 追記
カーネル Ver.2.6.38.2 をビルドする時に下記のエラーが出ました。
The UTS Release version in include/linux/version.h
""
does not match current version:
"2.6.38.2"
Please correct this.
make: *** [install/linux-image-2.6.38.2] Error 2
この手のエラーが出た時は、下記を実行して再ビルドすれば OK。
# cp include/generated/utsrelease.h include/generated/compile.h include/linux/
● kernel, build