講師: BSDコンサルティング株式会社取締役 / 有限会社オングス代表取締役 / FreeBSD committer 後藤大地
コマンドを叩いてシステムを操作するところまでは多くのエンジニアが経験していることだが、これがC言語を使って新しいコマンドを作るということになると一気に経験者が減る。さらにカーネルをいじくったりカーネルモジュールを開発するといった段階になると、その数は本当に少ないものになる。
いろいろ理由はあると思うが、C言語そのものを苦手とする方が多いこと、カーネルは大きすぎてどこから手をつけてよいかわからないこと、わかりやすい解説書が存在しないこと、こうしたことが背景にあるように思う。そしてよくわからないから「怖い」、そこは「触ってはいけないところ」といった先入観が生まれ、さらにカーネルには手を出さないような状況になっている。
教育機関で学ぶC言語が実際の開発現場のコードとかけ離れているため、C言語を使って実用的なソフトウェアを開発するという発想そのものが浮かんでこないことが多いようだ。どちらかというと、「新しく書く」よりも「既存のソースコードを読む」方が実際の開発現場を反映している。
本勉強会では、カーネル開発やC言語での開発といったものに対する苦手意識を取り除き、カーネルプログラミングやC言語による開発がそれほど難しいものではないことを示すために、「カーネルモジュール開発」を解説する。カーネルモジュールは動的にカーネルに機能を追加する仕組みで、比較的簡単に開発できる。
FreeBSDカーネルはデフォルトでさまざまな機能を内包しているが、実はほとんどの機能はカーネルモジュールとして取り出しが可能になっている。最小限の機能だけ持ったカーネルを構築して、そこにカーネルモジュールを読み込む形で使用することもできる。
カーネルモジュールを開発するのはそれほど難しくない。みずからの手でカーネルモジュールを開発するというのは、それだけで胸が踊る体験だ。第22回でカーネルモジュールやデバイスファイルの基本的な解説をしてあるので、今回は自分だけの新しいデバイスファイルを作成する方法を解説する。
※1 ご注意:領収書の発行は行いません。ご了承ください。