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

こんにちは。今回のテーマは『Gentoo Linuxのカーネルをアップグレードする方法』です。3ヶ月ほどGentooを放置していて久しぶりにシステムを更新したらカーネルのバージョンが古くて諸々のビルドに失敗しました。カーネルのアップグレードついでに記事を書きました。何かのお役に立てば幸いです。
【関連記事】
Gentoo Linuxをインストールする



【目次】
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周りも臆することなく設定していきましょう。

Sponsored Link


2件のコメント

  • /usr/src/linuxへのシンボリックリンクの更新は、eselect kernel でやった方が間違いにくくていいかと。eselect kernel だけで実行するとヘルプが出ます。

    • 通りすがりさん

      コメントありがとうございます。
      個人的にeselectはあまり使わないのですが、たしかに間違いにくいですね。記事は修正しておきます。

      また遊びに来てくださいね。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です