Gentoo Linuxのカーネルをアップグレードする方法
2015-01-19
こんにちは。今回のテーマは『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/
出力例(やや上のコマンドと違いますが) 今回の場合は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
現行設定ファイルの引き継ぎ
.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) 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]