Hatena::ブログ(Diary)

へにゃぺんて@日々勉強のまとめ

2014-08-17

Debian 7.6(wheezy)でLinuxカーネル 3.16.1をビルド

Debian(i686)の環境でLinuxカーネル 3.16.1をビルドしました。

自分用にも、作業過程をメモ。


作業環境

$ cat /etc/debian_version 
7.6
$ uname -a
Linux dyna 3.2.0-4-686-pae #1 SMP Debian 3.2.60-1+deb7u3 i686 GNU/Linux

作業過程

ダウンロードから.config生成まで
$ wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.16.1.tar.xz
$ tar Jxf linux-3.16.1.tar.xz
$ cd linux-3.16.1/
$ make mrproper
$ cp /boot/config-3.2.0-4-686-pae .config
$ make olddefconfig
$ make menuconfig
  => 「menuconfigの有効/無効項目について」を参照

menuconfigの有効/無効項目について

有効化した項目

  • General setup
    • Kernel .config support
    • Enable access to .config through /proc/config.gz
  • Kernel hacking
    • Tracers
      • Kernel Function Tracer
      • Trace max stack
      • Trace syscalls
    • Kernel debugging
      • Compile-time checks and compiler options
        • Compile the kernel with debug info

無効化した項目

  • Processor type and features

ビルド(一般的な方法)
$ time make -j2
...
real    102m45.072s
user    88m36.864s
sys     6m49.334s
  • bzImageとかビルド後の生成物が欲しいだけのとき
  • マシンへインストールするなら、後述の「debパッケージとして作成」のやり方のほうが、インストールしやすい
  • (2014/12/20 追記)-jオプションで指定している「2」は並列数です(今さらながらですが、コメントいただいた情報を追記します)

ビルド(debパッケージとして作成)
$ export CONCURRENCY_LEVEL=2
$ sudo time make-kpkg --initrd --revision=20140817 kernel_image kernel_headers

timeでの計測が不要なら以下で十分

$ sudo CONCURRENCY_LEVEL=2 make-kpkg --initrd --revision=20140817 kernel_image kernel_headers

インストールは以下のように行う

$ cd ../
$ sudo dpkg -i linux-image-3.16.1_20140817_i386.deb linux-headers-3.16.1_20140817_i386.deb

参考

pyopyopyopyopyopyo 2014/08/17 23:17 make は例えば make -j2 のような感じで"-j2"を付けると、2並列でコンパイルするので、ビルド時間が短縮できますよ。

make-kpkg で指定している CONCURRENCY_LEVEL=2 と同じ意味です

cupnescupnes 2014/08/18 07:25 ありがとうございます。
なるほど、勉強になりました。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証