*

Ubuntuのカーネル再構築

公開日: : 最終更新日:2014/03/20 Ubuntu

実験用に作ったUbuntu13.10の仮想マシン上で、Linuxカーネルの再構築を試しました。

まずカーネルのビルド環境を構築。
元がサーバー版Ubuntuだったので、ビルド環境なんてほぼ何も入っておらず。コマンド一発であれこれ一気にパッケージが入りました。

~>$ sudo apt-get build-dep linux-image-$(uname -r) 
Reading package lists… Done 
Building dependency tree 
Reading state information… Done 
Picking ‘linux’ as source package instead of ‘linux-image-3.11.0-17-generic’ 
The following NEW packages will be installed: 
  apparmor-easyprof asciidoc binutils binutils-dev bison build-essential cpp cpp-4.8 
  debhelper dh-apparmor docbook-dsssl docbook-utils docbook-xml docbook-xsl dpkg-dev 
  flex g++ g++-4.8 gcc gcc-4.8 gettext ghostscript gsfonts intltool-debian jadetex 
  kernel-wedge libasan0 libasprintf-dev libatomic1 libaudit-dev libbison-dev 
  libc-dev-bin libc6-dev libcloog-isl4 libcupsfilters1 libcupsimage2 libdpkg-perl 
  libdw-dev libdw1 libelf-dev libexpat1-dev libfl-dev libgcc-4.8-dev libgettextpo-dev 
  libgettextpo0 libgmp10 libgomp1 libgs9 libgs9-common libicu48 libijs-0.35 libisl10 
  libitm1 libjbig2dec0 libkpathsea6 liblcms2-2 libmpc3 libmpfr4 libnewt-dev libosp5 
  libostyle1c2 libpaper-utils libpaper1 libpci-dev libpng12-dev libpoppler43 
  libptexenc1 libpython-dev libpython2.7-dev libquadmath0 libsgmls-perl libslang2-dev 
  libsp1c2 libstdc++-4.8-dev libtsan0 libunistring0 libunwind8 libunwind8-dev libxaw7 
  libxml2-utils libxmu6 libxslt1.1 linux-libc-dev luatex m4 make makedumpfile 
  openjade pkg-config po-debconf poppler-data python-dev python2.7-dev sgml-data 
  sgmlspl sharutils sp tex-common texlive-base texlive-binaries 
  texlive-fonts-recommended texlive-generic-recommended texlive-latex-base 
  texlive-latex-recommended tipa transfig ttf-marvosym xdg-utils xmlto xsltproc 
  zlib1g-dev 
0 upgraded, 111 newly installed, 0 to remove and 0 not upgraded. 
Need to get 143 MB of archives. 
After this operation, 399 MB of additional disk space will be used. 
Do you want to continue [Y/n]? 

apt-get build-depは、指定したパッケージのビルドに必要とされているパッケージをまとめてインストールしてくれるコマンドです。便利ですが、何か今回はやけに一気にたくさん入った感じがします。texなんて他の用途では要らないのになと思いつつ。

続いてカーネルのソースを取得しました。

ソースを取得する方法は複数あるようですが、gitで最新のソースを取得する方法を選択しました。

どのgitリポジトリをgit cloneするかは、

http://kernel.ubuntu.com/git

を見て選択。

~>$ mkdir kernel 
~>$ cd kernel 
~/kernel>$ git clone git://kernel.ubuntu.com/ubuntu/ubuntu-saucy.git

ところが!これすごく時間がかかりました。

正確には測り損ねましたが、概ね2時間半かかってやっと完了。長かった…。

ここで試しにビルド。

ソースに変更を加えるなら本来ここですが、まずビルド環境ができているか確認するため、git cloneしたそのままビルドしてみました。

~/kernel>$ cd ubuntu-saucy/ 
~/kernel/ubuntu-saucy>$ fakeroot debian/rules clean 
~/kernel/ubuntu-saucy>$ fakeroot debian/rules binary-headers binary-generic

ビルド完了までまた長くて。

カーネルのビルドに延々待たされました。

しかしここで一つ疑問が!

ホストOS側でタスクマネージャー開いて見ていましたが、ビルド中のCPU使用率がほんの一桁%までしか上がらない。

仕事でARMのLinuxカーネルは何度もビルドしていますが、こんなにCPU使用率が低いことはありません。いつもmakeに-jつけてマルチスレッド処理させて、概ね80%前後までブン回してます。ARMとAMD64の違いはあるものの、それが原因でCPU使用率にこんなに差がつくとも思えない。

一桁%までしかCPU使用率が上がらないということは、CPUリソースを遊ばせているわけで、時間を損している気がします。まあ今はとりあえず進めるとして、いずれどうすればよいか調べねば。

結局、38分かかってビルド完了。

ビルドに成功してれば、一階層上のディレクトリに.debファイルができています。

~/kernel/ubuntu-saucy>$ cd .. 
~/kernel>$ ls -l *.deb 
-rw-r–r– 1 nashi nashi  1173674 Feb 23 22:50 linux-headers-3.11.0-18-generic_3.11.0-18.32_amd64.deb 
-rw-r–r– 1 nashi nashi 12737546 Feb 23 22:12 linux-headers-3.11.0-18_3.11.0-18.32_all.deb 
-rw-r–r– 1 nashi nashi 14730844 Feb 23 22:49 linux-image-3.11.0-18-generic_3.11.0-18.32_amd64.deb 
-rw-r–r– 1 nashi nashi 33968350 Feb 23 22:50 linux-image-extra-3.11.0-18-generic_3.11.0-18.32_amd64.deb 
-rw-r–r– 1 nashi nashi   121016 Feb 23 22:50 linux-tools-3.11.0-18-generic_3.11.0-18.32_amd64.deb

さっそく正しくビルドできたかインストールしてみました。

ただ万一を考えてHyper-Vマネージャーからチェックポイントを作ってから試しました。こういう時VMで環境を作っていると便利。

~/kernel>$ sudo dpkg -i linux-headers-3.11.0-18-generic_3.11.0-18.32_amd64.deb linux-headers-3.11.0-18_3.11.0-18.32_all.deb linux-image-3.11.0-18-generic_3.11.0-18.32_amd64.deb 
~/kernel>$ sudo reboot

再起動後にバージョンを確認してみると、

~>$ uname -r 
3.11.0-18-generic

再構築前は 3.11.0-17-generic だったので、ちゃんと差し替わってる。dmesgもおかしなログは無いようだ。

あっさりビルドしたカーネルで起動してくれた。

ビルド時のCPU使用率に疑問はあるものの、これでカーネルに手を加えて実験してみる環境が手に入ったようだ。

関連記事

36export_thumb.png

Hyper-VでUbuntu 14.04を試す(3)

前回、仮想マシンにUbuntu 14.04をインストールしました。 続いて環境整備。 まずはI

記事を読む

10installer_grub_thumb.png

Hyper-VでUbuntu 14.04を試す(1)

ついにリリースされました、Ubuntu 14.04。 実験用にインストールした13.10はともかく

記事を読む

am1h-hyperV-perfmon-2_thumb.png

Hyper-V 対 VMware Player対決

先日、バーチャルマシン上でプログラムをビルドすると時間がかかってしようがない。ビルドするならやっぱネ

記事を読む

25eth0_trouble_thumb.png

E: Internal Error, No file name for libssl1.0.0

Ubuntu 12.04機を(も)使っています。動かなくなると困る一台なので、なかなか更新する勇気が

記事を読む

1enable_hyperV_thumb.png

Windows 8.1上でHyper-Vを試す ~Ubuntuの仮想マシンを作る(1)~

Linuxのカーネルソースをあれこれいじるにあたって、実験用のLinux環境が欲しくなり、新たにUb

記事を読む

raised1

カーネルモジュールのビルド

前回、OOM Killerの発動を検知するテスト用のカーネルモジュールをビルドしたと書きました。前回

記事を読む

3delete_thumb.png

Hyper-V 上の Ubuntu で非レガシーなネットワークアダプターを使えた

以前 Hyper-V上にUbuntuの仮想マシンを作りましたが、ネットワークアダプターにはレガシ

記事を読む

22installer

Windows 8.1上でHyper-Vを試す ~Ubuntuの仮想マシンを作る(2)~

前回、空の仮想マシンを作るところまで書きました。 (なんか長かった…)。 続いてUbuntu

記事を読む

raised1

OOM Killerの発動を検知したい

今回はプログラムの話。タイトル通り、LinuxのOOM Killerが発動したことを検知したいという

記事を読む

6memflush_thumb.png

Hyper-Vの動的メモリは本当に動的だった!?

前回、無用なトラブルを避けるつもりで無難な選択をした結果、却ってロクでもない目に遭ったようだという話

記事を読む

junctioned_VideoLAN_thumb.png
WindowsタブレットのProgram FilesをSDHCへ逃す

ここ数ヶ月、比較的低価格なWindowsタブレットが相次いで発売されて

raised1
カーネルモジュールのビルド

前回、OOM Killerの発動を検知するテスト用のカーネルモジュール

raised1
OOM Killerの発動を検知したい

今回はプログラムの話。タイトル通り、LinuxのOOM Killerが

1cpu_thumb.jpg
さよならK6-Ⅲ

何か物悲しいタイトルですが、K6-Ⅲ搭載PCを廃棄しました。かつて色ん

25eth0_trouble_thumb.png
E: Internal Error, No file name for libssl1.0.0

Ubuntu 12.04機を(も)使っています。動かなくなると困る一台

→もっと見る

PAGE TOP ↑