[Linux]kernel再構築

久しぶりに、kernelビルドってどんなんだっけと思って調べ直しました。
クロスコンパイラとかももうちょっと思い出したい。

概要

make oldconfig
make menuconfig
make-kpkg clean
make-kpkg --rootcmd fakeroot kernel_image kernel_headers

詳細

Ubuntu64ビット版の例

Ubuntuでカーネルをビルドするためには以下のパッケージが必要となります。

  1. libncurses-dev
    ncursesの開発用ライブラリーです。テキスト形式のAPIを提供してくれます。カーネルのmenuconfigに使用します。
  2. build-essential
    Debianパッケージを構築するのに必要なツール群です。カーネルのDebianパッケージを作成するのに使用します。
  3. fakeroot
    ファイル操作を行うときにルート権限で行ったようにするツールです。パッケージ作成に使用します。
  4. kernel-package
    カーネルのパッケージを構築するためのスクリプトツール群です。
  5. 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

コメント

タイトルとURLをコピーしました