最新の 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
0 件のコメント:
コメントを投稿