Linuxを日常的に使う実験ブログ

Gentoo Linuxのカーネルをアップグレードする方法

 2015-01-19

 2021-12-26

 Gentoo Linux

こんにちは。今回のテーマは『Gentoo Linuxのカーネルをアップグレードする方法』です。3ヶ月ほどGentooを放置していて久しぶりにシステムを更新したらカーネルのバージョンが古くて諸々のビルドに失敗しました。カーネルのアップグレードついでに記事を書きました。何かのお役に立てば幸いです。 【関連記事】 Gentoo Linuxをインストールする [adsense02] 【目次】 Kernelアップグレードはそんなに怖くない Kernelビルドの準備 現行設定ファイルの引き継ぎ Kernelのビルド及びインストール ブートローダー(GRUB)の設定と再起動 古いKernelの削除

Kernelアップグレードはそんなに怖くない

GentooユーザーがKernelアップグレードに恐怖を感じるかは正直疑問ですが、Gentooを使い始めた初心者の方のお役に立てばと思います。Gentooインストール時にKernelのセットアップを手動でしたと思いますが、基本的な作業は大して変わりません。大事なことは何度でもやり直しが出来るということです。肩の力を抜いて作業して下さい。 ※この記事に記載した方法は2015年における筆者の作業方法であり、Gentooの公式の方法とは異なる部分もあります。詳細はGetntoo公式ページをご覧ください。

Kernelビルドの準備

Kernelに関する操作はrootでの操作が多いのでsudoは使わずrootになります。

$ su - $ パスワード入力

以下コマンドでKernelソースを入手します。

root# emerge —update gentoo-sources

以下コマンドで新旧のKernelソースがあることを確認します。

root# ls /usr/src/

出力例(やや上のコマンドと違いますが) 01 今回の場合はlinux-3.16.5-gentooが旧ソースlinux-3.17.7-gentooが新ソースということになります。

/usr/src/linuxへのシンボリックリンクの更新

新しいKernelファイルを/usr/src/linuxにリンクさせましょう。 eselectを使う場合(2015/01/28追記) 以下のコマンドで候補となるカーネルを表示します。

root# eselect kernel list

現在設定可能なカーネルと番号が表示されるので、以下のコマンドで番号を指定しましょう。

root# eselect kernel set <番号>

手動でリンクする場合 筆者は手動でリンクすることが多いです。以下コマンドでリンクします。

root# cd /usr/src root# ln -sfn linux-3.17.7-getnoo linux

確認のため以下のコマンドでリンクを確認します。

root# ls -l /usr/src

出力例 02

現行設定ファイルの引き継ぎ

.configファイルのコピー

現在の設定を引き継いだ方がKernelの設定が楽です。筆者の場合は旧ソースの中からコピーすることが多いです。以下のようにします。(他には/bootや/procディレクトリに設定ファイルがあります)

root# cd /usr/src root# cp linux-3.16.5-gentoo/.config linux-3.17.7-gentoo/

Kernelの設定

手動(個人的に推奨) 現行設定を引き継いだ場合は変更点だけをoldconfigで設定することが出来ます。設定ツールは色々あるのでお好みのもので設定して下さい。

root# cd /usr/src/linux root# make oldconfig

人によってはmenuconfigの方が好みかも知れません。筆者はコチラのほうが好きです。

root# make menuconfig

(画像はmenuconfig) 03 genkernelを使う場合 もしgenkernelを使う場合は以下のコマンドでお任せにできます。

root# genkernel all

menuconfigと併用する場合は以下のコマンドとなります。

root# genkernel —menuconfig —bootloader=grub all

Kernelのビルド及びインストール

モジュールの再インストールの準備

早速ビルドしたいところですが、モジュールの準備をしておいた方が良いです。

root# make modules_prepare

Kernelのビルド

では以下コマンドでビルドしましょう。

root# make && make modules_install

Kernelのインストール

インストールといっても大げさなことは何もなく、単にコピーするだけです。 以下のコマンドを実行します。コピーするファイルはお使いのアーキテクチャに合わせてください。

root# mount /boot root# cd /usr/src/linux root# cp arch/i386/boot/bzImage /boot/linux-3.17.7-gentoo-r1

あるいは以下のコマンドでもOKです。

root# mount /boot root# cd /usr/src/linux root# make install

モジュールの再インストール

外部のモジュールを入れている時には以下コマンドで再インストールしましょう。 (事前に)

root# emerge @module-rebuild

ブートローダー(GRUB)の設定と再起動

GRUBの設定

新しいKernelで起動するようにブートローダーを設定します。ここではGRUBを使っている前提とします。以下コマンドでGRUBを設定します。

root# grub2-mkconfig -o /boot/grub/grub.cfg

再起動と動作確認

では再起動して動作確認をしましょう。もし問題があれば古いカーネルで再起動してビルドからインストールまでをやり直します。

古いKernelの削除

必要なくなった古いカーネルを削除しましょう。

root# emerge -P gentoo-sources

また、/usr/src以下のファイルも不要であれば削除しましょう。筆者は念の為に一つ前のファイルは残すようにしています。

最後に

Gentooの魅力の一つに最新のKernelを自分のマシン(ハード)に最適化させて使うことが出来るということがあると思います。筆者の場合、本当に最適化されているかは結構疑問があるところですが・・・公式リポジトリからアップデートするだけでなく自分のマシンをメンテナンスしている実感が味わえるのもGentoo Linuxの良い所かなと思います。Kernel周りも臆することなく設定していきましょう。 [adsense]