Linux 4.0ビルド・起動確認と、ライブパッチソースの在り処

今日(4/13)、Linux 4.0がリリースされました。


何度かこういうネタを記事にしていますが、
今回も、自分のマシンでビルドと起動を試してみました。


また、それだけだと記事としてあんまりなので、
v3.19からの差分や、
4.0.0の目玉の「ライブパッチ」の各種ソースコードの場所を調べてみました。

ビルドと起動確認

以前の記事と同じやり方で、ビルド・インストール、起動確認できました。


ちなみに、

CPU Intel(R) Core(TM)2 Duo CPU T7250 @ 2.00GHz /proc/cpuinfo の model
メモリ 1023828 kB /proc/meminfo の MemTotal

のマシンで、以前の記事と同じDebian Wheezy上で、
ビルドに1時間30分ほどでした。


私が時代遅れなマシンを使っているだけなので、
普通はもっと短時間で済むのかもしれません。

v3.19との差分を調べる

特定のバージョン間で変更のあったファイル数を出してみます。

1. リポジトリのダウンロード(clone)

$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git


2. 差分の取得
リーナスのリポジトリ上ではバージョン番号でタグが打ってあるので、
git diffで引数にバージョン番号を与えれば、変更内容の一覧を取得できます。

$ cd linux/
$ git diff v3.19 v4.0


3. 変更ファイル数の取得
先ほどのgit diffコマンドの結果をファイルに書きだして、
以下のようなコマンドを実行すると、
変更が加えられたファイル数は9489個だとわかります。

$ git diff v3.19 v4.0 > git_diff_v3.19_v4.0.diff
$ grep '^--- a\|^+++ b' git_diff_v3.19_v4.0.diff | cut -d'/' -f2- | sort | uniq > linux_3.19_4.0_diff_files.log
$ wc -l linux_3.19_4.0_diff_files.log
9489 linux_3.19_4.0_diff_files.log
  • 2つ目のコマンドのワンライナーは、git_diff_v3.19_v4.0.diffの差分情報からファイル名のみを抽出し、重複行を削除しています

ライブパッチの在り処

ライブパッチは、rcの頃から色々なサイトで紹介されていますが、
リブートすること無くパッチを当てられる機能、とのことです。
(私自身、まだよくわかっていません。。。)


ともあれ、注目の「ライブパッチ」がどのようなものか、
せっかくならソースコードを見てみたいものです。


ライブパッチ関係のファイルはファイル名に"livepatch"が入っています。
なので、Linuxソースコードディレクトリを対象に、

$ find linux/ -name '*livepatch*'

このようなコマンドで、該当するファイルをリストアップできます。


試してみると、該当するファイルは以下のとおりでした。

  • samples/livepatch
  • samples/livepatch/livepatch-sample.c
  • kernel/livepatch
  • Documentation/ABI/testing/sysfs-kernel-livepatch
  • arch/x86/kernel/livepatch.c
  • arch/x86/include/asm/livepatch.h
  • include/linux/livepatch.h


Documentation/ABI/testing/sysfs-kernel-livepatch
によると、以下のファイルを通して操作するようです。