コグノスケ


link 未来から過去へ表示(*)  link 過去から未来へ表示

link もっと前
2016年4月20日 >>> 2016年4月7日
link もっと後

2016年4月17日

DebianでLinuxカーネルモジュールをビルドしたい(スマート編)

目次: Linux

昨日(2016年4月15日の日記参照)のやり方は、やはり一般的では無かった(1時間以上掛かるし…)らしく、スマートなやり方を教えていただきました。

aptでLinuxのカーネルヘッダを持ってくる
# apt-get install linux-headers-3.16
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
Note, selecting 'linux-headers-3.16.0-4-all' for regex 'linux-headers-3.16'
Note, selecting 'linux-headers-3.16.0-4-amd64' for regex 'linux-headers-3.16'
Note, selecting 'linux-headers-3.16.0-4-common' for regex 'linux-headers-3.16'
Note, selecting 'linux-headers-3.16.0-4-all-amd64' for regex 'linux-headers-3.16
'
linux-headers-3.16.0-4-commonはすでに最新版です。
以下の追加パッケージがインストールされます:
  cpp-4.8 gcc-4.8 libasan0 libgcc-4.8-dev linux-compiler-gcc-4.8-x86
  linux-kbuild-3.16
提案パッケージ:
  gcc-4.8-locales gcc-4.8-multilib gcc-4.8-doc libgomp1-dbg libitm1-dbg
  libatomic1-dbg libasan0-dbg libtsan0-dbg libquadmath0-dbg
以下のパッケージが新たにインストールされます:
  cpp-4.8 gcc-4.8 libasan0 libgcc-4.8-dev linux-compiler-gcc-4.8-x86
  linux-headers-3.16.0-4-all linux-headers-3.16.0-4-all-amd64
  linux-headers-3.16.0-4-amd64 linux-kbuild-3.16
アップグレード: 0個、新規インストール: 9個、削除: 0個、保留: 0個。
12.7 MBのアーカイブを取得する必要があります。
この操作後に追加で39.9 MBのディスク容量が消費されます。

(以下略)

カーネルモジュールをビルドしますが、もし /usr/src/linuxを見に行ってしまうようなモジュールであれば、ちょっと書き換えが必要です。

カーネルモジュールをビルドする
$ make -C /usr/src/linux M=`pwd`

↓

$ make -C /lib/modules/`uname -r`/build M=`pwd`

昨日の方法と比べると、Linuxのソースコードもビルドも要らないし、格段にスマートです。素敵。

でも、カーネルモジュールがヘボくて、カーネル内でクラッシュし、結局Linuxのソースコードにデバッグprintkを埋め埋めしてビルドする羽目になったのはご愛敬です…。

編集者:すずき(2023/04/29 21:35)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2016年4月15日

DebianでLinuxカーネルモジュールをビルドしたい

目次: Linux

独自のカーネルモジュールをビルドしたかったのですがスマートな方法が良く分からず、力ずくでやってしまいました。

まずaptでLinuxのソースコードを持ってきました。apt-get installだけだと /usr/srcにtarballが置かれるだけなので、手で展開します。

aptでLinuxのソースコードを持ってくる
# apt-get install linux-source-3.16
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
  libqt4-dev pkg-config
The following NEW packages will be installed:
  linux-source-3.16
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/83.6 MB of archives.
After this operation, 83.7 MB of additional disk space will be used.
Selecting previously unselected package linux-source-3.16.
(Reading database ... 54876 files and directories currently installed.)
Preparing to unpack .../linux-source-3.16_3.16.7-ckt25-2_all.deb ...
Unpacking linux-source-3.16 (3.16.7-ckt25-2) ...
Setting up linux-source-3.16 (3.16.7-ckt25-2) ...

# cd /usr/src
# ls
linux-config-3.16  linux-source-3.16.tar.xz

# tar xf linux-source-3.16.tar.xz
# ln -s linux-source-3.16 linux

カーネルバージョンを見るか、Debianのカーネルパッケージのバージョンを確認して、適切なカーネルのconfigファイルを展開します。

適切なLinuxのconfigファイルを展開
# cd /usr/src

# uname -a
Linux vbox-blackbird 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt25-2 (2016-04-08) x86_64 GNU/Linux

# cp linux-config-3.16/config.amd64_none_amd64.xz linux/
# cd /usr/src/linux
# xz -d config.amd64_none_amd64.xz
# mv config.amd64_none_amd64 .config

ビルドします。Debianのカーネルコンフィグはやたらめったらドライバをビルドするので、かなりビルドに時間が掛かります…。

Linuxをビルド
# cd /usr/src/linux

# make -j 4 bzImage modules
...

ビルドが終わったら、独自カーネルモジュールをビルドします。

独自カーネルモジュールをビルド
# cd /home/username/hoge_module

# make
...

生成された*.koをinsmodして文句言われなければ成功です。

独自カーネルモジュールのinsmod失敗例
# insmod hoge.ko
insmod: ERROR: could not insert module hoge.ko: Invalid module format

こんな風に怒られる時は、昔のバージョンのtarballを展開したときのコードが残っているなど、カーネルのソースコードが古いか、コンフィグを選び間違っていますので、確認しましょう…。

編集者:すずき(2023/04/29 21:35)

コメント一覧

  • hdkさん(2016/04/17 02:32)
    config は /boot に入っていると思いますが、そんなことより、linux-headers-* を入れて /lib/modules/`uname -r`/build/ を使うのが一般的かと...

    dkms というのを使うと今後のカーネルアップデート時に自動で再コンパイルもできるみたいです。
  • すずきさん(2016/04/17 13:46)
    >hdk さん
    言われてみれば config って /boot にありますね。
    /lib/modules/`uname -r`/build/ ってそのためにあったのか…。やってみます。ありがとう。
open/close この記事にコメントする



link もっと前
2016年4月20日 >>> 2016年4月7日
link もっと後

管理用メニュー

link 記事を新規作成

<2016>
<<<04>>>
-----12
3456789
10111213141516
17181920212223
24252627282930

最近のコメント5件

  • link 24年6月17日
    すずきさん (06/05 23:32)
    「Thnaks for your info...」
  • link 24年6月17日
    Bobさん (06/04 09:25)
    「BindIPv6Only=no does...」
  • link 18年8月12日
    すずきさん (05/29 16:57)
    「コメントありがとうございます。\n\nこ...」
  • link 18年8月12日
    ARM926EJ-Sさん (05/29 14:27)
    「この記事が書かれたのは2018年ですが、...」
  • link 17年9月3日
    すずきさん (05/26 23:59)
    「>ちょさんさん\nご参考になれば幸いです...」

最近の記事20件

  • link 21年12月28日
    すずき (06/22 23:33)
    「[ゲーム - まとめリンク] 目次: ゲーム一覧が欲しくなったので作りました。Wizardry(囚われし亡霊の街)敵が強すぎる...」
  • link 25年6月19日
    すずき (06/22 23:33)
    「[歴代据え置きハードのCPUとGPU] 目次: ゲーム最近、据え置きハードのCPUとGPUがNVIDIAとAMDに収束していま...」
  • link 25年6月18日
    すずき (06/22 23:33)
    「[Nintendo Switch 2当選] 目次: ゲームSwitch 2の抽選4回目で当選してました。わーい。今回も落選だっ...」
  • link 10年4月17日
    すずき (06/13 21:41)
    「[何もしていないのに負荷が高いWindows 7] 目次: WindowsWindows 7は何もしていなくても常時CPU負荷...」
  • link 23年9月11日
    すずき (06/12 02:52)
    「[Windows - まとめリンク] 目次: Windows使いづらいWindows 7のエクスプローラ何もしていないのに負荷...」
  • link 10年4月10日
    すずき (06/12 02:52)
    「[使いづらいWindows 7のエクスプローラ] 目次: Windows週末を利用して旧マシンを葬って、新マシンを立ち上げまし...」
  • link 10年4月23日
    すずき (06/12 02:49)
    「[Windows 7のオーディオ処理負荷] 目次: Windows先日の日記(2010年4月17日の日記を参照)で書いたWin...」
  • link 10年4月25日
    すずき (06/12 02:48)
    「[Windows 7のサウンド機能は辛いよ] 目次: WindowsWindows Vista/7はサウンド周りがXPの頃と比...」
  • link 10年5月11日
    すずき (06/12 02:46)
    「[Sound Blaster X-Fiの話の訂正] 目次: Windows以前(2010年5月4日の日記を参照)書いた内容の訂...」
  • link 10年5月4日
    すずき (06/12 02:45)
    「[Sound Blaster X-Fiのサウンド設定いじってばっかり] 目次: Windows今使っているPCで激しく失敗した...」
  • link 10年5月12日
    すずき (06/12 02:43)
    「[Sound Blaster X-Fiのドライバが劣化] 目次: WindowsWindows UpdateにてCreativ...」
  • link 25年6月7日
    すずき (06/12 00:28)
    「[THPを一時的に無効にする方法] 目次: Linux何か訳があってLinuxのTHP(Transparent HugePag...」
  • link 25年6月6日
    すずき (06/11 00:49)
    「[新しめのRaspberry Pi OS LiteをQEMUで使う] 目次: Linux以前(2022年2月2日の日記参照)、...」
  • link 23年4月10日
    すずき (06/11 00:48)
    「[Linux - まとめリンク] 目次: Linux関係の深いまとめリンク。目次: RISC-V目次: ROCK64/ROCK...」
  • link 23年5月15日
    すずき (06/10 15:39)
    「[車 - まとめリンク] 目次: 車三菱FTOの話。群馬県へのドライブ1群馬県へのドライブ2将来車を買い替えるとしたら?FTO...」
  • link 22年1月22日
    すずき (06/10 15:38)
    「[バッテリーなんですぐ死んでしまうん?] 目次: 車正月、北海道から帰ってきて車の様子を見たら、完全にバッテリーが上がっていま...」
  • link 13年3月20日
    すずき (06/10 15:35)
    「[車が故障した(Er HC)] 目次: 車今朝、同期の人たちと梅見に行くため車で出発しようとしたのですが、キーをSTARTまで...」
  • link 16年5月1日
    すずき (06/09 03:10)
    「[自作ARMエミュレータでLinux 4.4が動かなかった] 目次: LinuxLinux 4.4系がLongtermの仲間入...」
  • link 16年4月30日
    すずき (06/09 03:08)
    「5月1日と全く同じ内容を書いていたので削除。...」
  • link 17年1月5日
    すずき (06/09 02:56)
    「[ノートPCのメモリが足りない] 目次: PC我が家のノートPC(Lenovo ThinkPad Edge E420, Win...」
link もっとみる

こんてんつ

open/close wiki
open/close Linux JM
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 2018年
open/close 2019年
open/close 2020年
open/close 2021年
open/close 2022年
open/close 2023年
open/close 2024年
open/close 2025年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報

合計:  counter total
本日:  counter today

link About www2.katsuster.net
RDFファイル RSS 1.0

最終更新: 06/22 23:33