*

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

公開日: : 最終更新日:2014/12/21 Linux, Ubuntu

前回、OOM Killerの発動を検知するテスト用のカーネルモジュールをビルドしたと書きました。前回は長くなるのを避けてビルド手順を端折ったので、改めて記録しておきます。ここを見ながらビルドしました。

  1. カーネルソースのダウンロード
    ~/kernel>$ apt-get source linux-image-$(uname -r)
    パッケージリストを読み込んでいます... 完了
    依存関係ツリーを作成しています
    状態情報を読み取っています... 完了
    :
     linux-3.13.0/virt/kvm/iommu.c
     linux-3.13.0/virt/kvm/kvm_main.c
    ~/kernel>$

    テストに使ったUbuntuのカーネルソースコードのダウンロードです。~/kernelにダウンロードしました。

    以前カーネルをビルドしたときは、gitで最新のソースをとってきました。今回は今Ubuntu上で動いているカーネルバージョンのソースが必要です。

     

  2. コンフィグファイルのコピー
    ~/kernel>$ cd linux-3.13.0/
    ~/kernel/linux-3.13.0>$ sudo cp /boot/config-3.13.0-43-generic .config
    ~/kernel/linux-3.13.0>$

    今使っているカーネルのコンフィグファイルをコピーしました。

     

  3. カーネルモジュールのビルド準備
    ~/kernel/linux-3.13.0>$ make modules_prepare
      HOSTCC  scripts/basic/fixdep
      HOSTCC  scripts/kconfig/conf.o
      SHIPPED scripts/kconfig/zconf.tab.c
    :
      HOSTCC  scripts/recordmcount
      HOSTCC  scripts/sortextable
      HOSTCC  scripts/asn1_compiler
    ~/kernel/linux-3.13.0>$

    この手順がどうして必要なのかは上記ドキュメントの2.項に書かれています。

     

  4. Modules.symversのコピー
    ~/kernel/linux-3.13.0>$ cp /lib/modules/`uname -r`/build/Module.symvers .
    ~/kernel/linux-3.13.0>$

    カーネル全体をビルドすれば生成されますが、時間短縮のため生成済みのファイルをコピーしました。書き忘れましたがこの仮想マシンを動かしたホストマシンはAM1H-ITX + Athlon5350です。以前書いた通り、このマシンはLinuxカーネルのビルドが格別遅いので、全体をビルドする気にならない。

     

  5. カーネルモジュールのビルド
    ~/work/hookoom>$ make -C ~/kernel/linux-3.13.0/ M=`pwd` modules
    make: ディレクトリ `/home/nashi/kernel/linux-3.13.0' に入ります
      CC [M]  /home/nashi/work/hookoom/hookoom.o
      LD [M]  /home/nashi/work/hookoom/mod_hookoom.o
    :
      CC      /home/nashi/work/hookoom/mod_hookoom.mod.o
      LD [M]  /home/nashi/work/hookoom/mod_hookoom.ko
    make: ディレクトリ `/home/nashi/kernel/linux-3.13.0' から出ます
    ~/work/hookoom>$

    カーネルモジュールのソースファイルhookoom.cと前回掲載したKbuildを~work/hookoomに置きました。そしてこのディレクトリでmake。

     

  6. 最後にカーネルモジュールをコピー
    ~/work/hookoom>$ sudo cp mod_hookoom.ko /lib/modules/3.13.0-43-generic/kernel/
    ~/work/hookoom>$

    しかるべきディレクトリにカーネルモジュールをコピーして完了です。

関連記事

am1h-hyperV-perfmon-2_thumb.png

Hyper-V 対 VMware Player対決

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

記事を読む

10installer_grub_thumb.png

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

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

記事を読む

25eth0_trouble

Windows 8.1上でHyper-Vを試す ~ネットワークがつながらない~

前回、Hyper-V上の仮想マシンにUbuntuをインストールしたところまで書きました。 インスト

記事を読む

32installing_thumb.png

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

前回の続きです。 作成した仮想マシンにUbuntu 14.04のサーバー版をインストールする

記事を読む

6memflush_thumb.png

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

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

記事を読む

1enable_hyperV_thumb.png

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

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

記事を読む

no-ia32-libs_thumb.png

Ubuntu 14.04 64bitで32bitアプリを使う

新たにVMを作ってUbuntu 12.04から14.04に乗り換えたわけですが、セットアップしていて

記事を読む

3delete_thumb.png

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

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

記事を読む

raised1

OOM Killerの発動を検知したい

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

記事を読む

25eth0_trouble_thumb.png

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

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

記事を読む

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 ↑