akimachoのはてなブログ

ICTとデザインのためのブログ

Fedora17でのカーネルビルドメモ

はじめに

カーネルビルドをしてみたのでメモ。

目的

単純にカーネルのバージョンアップを目指したいと思います。

前提環境

Virtual-BoxのゲストOSとして、Fedora17を使っています。

なぜかというと『Linux専門専科』という本で使っていたからです。

akimacho.hatenablog.com

またカーネルのバージョンは3.3.4です。

$ uname -r
3.3.4-5.fc17.x86_64

必要なツール

ビルドに必要なコマンドをインストールします。

$ su
# yum install -y gcc tar ncurses-devel bc
# yum groupinstall -y "development tools"

Fedora17を最小構成でインストールしたので、gccやtarコマンドが入っていません。

ビルドするカーネルのバージョン

以下のサイトから、最新カーネルバージョンlinux-4.1.1(2015/07/02現在)をダウンロードしました。

Index of /pub/linux/kernel/v4.x

$ curl https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.1.1.tar.gz
$ tar zxvf linux-4.1.1.tar.gz

Linuxカーネル4系の特徴については以下のページを参照。

osdn.jp

特に以下のサイトが詳しいです。

Linux 4.0 - Linux Kernel Newbies

make

linux-4.1.1/に移動してrootになります。

$ cd linux-4.1.1
$ su
# make -j 2

make -j 2とするとCPUのコアを2つ使うので、コンパイル速度が上がります。

カーネルの設定

# make localmodconfig

このコマンドは

現在使用中のモジュール情報を調査し、そのモジュールとそのモジュールの実行に必要な最小限のカーネル設定を自動生成します。この設定方法は、カーネル2.6.32位光で可能です。(『絶対わかるLinuxカーネル完全入門』p.43より)

ちなみに、

# make menuconfig

を実行すると以下のような設定画面が表示され、手動でカーネルの設定が可能です。

f:id:akimacho:20150702223442p:plain

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

# make modules_install

作成したモジュールを/lib/modules/4.1.1/以下にインストールされます。

# make firmware_install

調べてみると確かにインストールされていることが分かります。

# ls /lib/modules/4.1.1/
build   modules.alias      modules.builtin      modules.dep      modules.devname  modules.softdep  modules.symbols.bin
kernel  modules.alias.bin  modules.builtin.bin  modules.dep.bin  modules.order    modules.symbols  source

ファームウェアのインストール

# make firmware_install

ファームウェアが/lib/firmware/以下にインストールされます。

システム起動に必要なファイルのインストール

# make install
sh ./arch/x86/boot/install.sh 4.1.1 arch/x86/boot/bzImage \
        System.map "/boot"

OSをシャットダウンして再び起動させます。

すると、ブートローダーの画面に「Fedora (4.1.1)」と表示されるようになりました!

f:id:akimacho:20150702223100p:plain

実際に4.1.1を選択すると、以下の様な画面が表示されます。

f:id:akimacho:20150702231447p:plain

また、uname -rを実行してみると、4.1.1と表示されました。

f:id:akimacho:20150702223444p:plain

無事カーネルのバージョンアップができました。

おわりに

カーネルコンパイルが意外に簡単にできてビックリしました。

また『絶対わかるLinuxカーネル完全入門』という本も丁寧に書かれていたので非常に参考になりました。

最近のカーネル事情に関しては、Linux Kernel Updatesシリーズがおもしろいと思います。こんな機能があるのかと勉強になりますよ。この本でも、

Linux Kernel Newbies - Linux Kernel Newbies

が参考にされています。情報を追うのに最適なサイトなのかもしれません。

Linux Kernel Updates Vol.2014.08

Linux Kernel Updates Vol.2014.08

追記

UbuntuDebianでのカーネルビルドの方法は、『絶対わかるLinuxカーネル完全入門』に書かれています。

参考文献

『絶対わかるLinuxカーネル完全入門』、日経BP社、2013

『これ一冊で完全理解 Linuxカーネル超入門』という新版?も出ているみたいです。