久しぶりに、kernelビルドってどんなんだっけと思って調べ直しました。
クロスコンパイラとかももうちょっと思い出したい。
概要
make oldconfig
make menuconfig
make-kpkg clean
make-kpkg --rootcmd fakeroot kernel_image kernel_headers
詳細
Ubuntu64ビット版の例
Ubuntuでカーネルをビルドするためには以下のパッケージが必要となります。
- libncurses-dev
ncursesの開発用ライブラリーです。テキスト形式のAPIを提供してくれます。カーネルのmenuconfigに使用します。 - build-essential
Debianパッケージを構築するのに必要なツール群です。カーネルのDebianパッケージを作成するのに使用します。 - fakeroot
ファイル操作を行うときにルート権限で行ったようにするツールです。パッケージ作成に使用します。 - kernel-package
カーネルのパッケージを構築するためのスクリプトツール群です。 - linux-source
カーネルのソースです。
インストール手順
- 必要パッケージのインストール
$ sudo apt-get -y update [パスワード入力] $ sudo apt-get -y install libncurses-dev $ sudo apt-get -y install build-essential $ sudo apt-get -y install fakeroot $ sudo apt-get -y install kernel-package $ sudo apt-get -y install linux-source
linux-sourceをインストールすると/usr/srcに圧縮されたカーネルのソースが格納されてます。
ファイル名は以下の通りです。linux-source-(kernel version).tar.bz2
kernel version:3.17.1などのバージョン番号
- 現在のカーネルバージョンの確認
$ uname -r
ビルド後、このバージョンが変わっていることを確認します。
カーネルビルド
- ソースを展開
$ cd /usr/src $ sudo -s [パスワード入力] # tar xf linux-source-3.17.1.tar.bz2
- ソースコードディレクトリに移動して.configファイルを作成
# make oldconfig
- カーネルの設定を変更する場合
# make menuconfig
- カーネルをビルド
# make-kpkg clean # make-kpkg --rootcmd fakeroot kernel_image kernel_headers
- ビルドしカーネルをインストール
カーネルのパッケージは/usr/src/にあります。
例:linux-image-(kernel version and arch).deb linux-header-(kernel version and arch).deb
# dpkg -i linux-image-3.17.1_amd64.deb # dpkg -i linux-header-3.17.1_amd64.deb
- リブートしてインストールしたカーネルで起動できているか確認
# reboot
- カーネルのバージョンを確認
$ uname -r
コメント