■デバイス操作関数カーネルはregister_chrdevに渡すfile_operations構造体に記された関数を通してデバイスを操作します。デバイスドライバを作るには、そのうち最低限以下を実装しなければなりません。openreleasereadかwriteここを見てプロトタイプの通りに実装してください。)のinodeはとりあえず無視していいみたいで、filpのfilp->private_dataに自分でkmallocを使って確保したデータを渡すことで、このデータも使ってwriteやreadが制御できます。-D__KERNEL__”を付ければ普通にコンパイルできるよ!って話もあったんですが出来ませんでした。-Iとかも色々いじったりもしたんですが通りません。いうわけで、こちらのサイトのMakefileを流用しましょう。ファイル名はMakefile(先頭大文字)じゃないとエラーが出るみたいです。今回は、このMakefileにこんな行も追加してインストール・アンインストールもできるようになっています。/dev/louise_lovemknodで特殊ファイルを作成&0x0721というメジャー番号を使って作成しています。cはキャラクタデバイスで、0x0721はメジャー番号で、register_chrdevしたときの数字とあわせてください。0(マイナー番号)はちょっとよくわかりまへん...。666はただたんに、誰でも読み書きできるようにしているだけです。特殊ファイルを作ったあとにinsmodして作ったカーネルモジュールを読み込んで、/dev/louise_loveの制御を作ったドライバに任せています。することでドライバをアンロード、スペシャルファイルは普通にrmdirで削除できます。今回分かったんですが、bashでのif文はこういう構造なんですね。else~コマンドで一文fiいやーこれに気づかずに結構時間が掛かりました...。thenとコマンド1のあいだ、elseとコマンド2のあいだに;をいれるとエラーがでちゃうんだもん。デバイスドライバ)Linuxデバイスドライバ開発に関する参考情報デバイスドライバのインターフェーイスは割と変わるみたいなので、他の記事を参考にする場合はバージョン情報や書かれた月日は参考にしたほうがいいです。ちなみにこの記事はカーネル2.6.32を対象に書いています。Fujisaki全自動無限ルイズコピペ生成器搭載!これは何?Linux2.6(32bit/64bit)用デバイスドライバです(2.6.32で動作確認しています)。インストールすると/dev/louise_loveが現れ、読み出すとルイズコピペをマルコフ連鎖アルゴリズムに基づいて無限に自動生成し続けます。ちなみに/dev/louise_loveへ書き込むとすべて書き込みを読み捨てますので、自分の書いたポエムも安心して読んでもらえます。64bit/32bitでの動作を確認。ライセンスはGPL3。辞書作成ユーティリティRuby1.9系での動作を確認。動作にはYahoo!デベロッパーネットワークのアプリケーションIDが必要です。(形態素解析に使います)使い方まずはダウンロードして解凍し、フォルダを移動しましょう。louise_love_driver/driverコンパイルするには、普通のプログラムのようにmakeしてください。makeデバイスドライバドライバと同時に、ユーザランドで動くアプリケーションとしてもコンパイルされているので、いきなりデバイスドライバとして組み込むのが不安な方は、安全なユーザランドで試すことができます。./userland_louise_loveとして実行してください。実際にデバイスドライバとしてインストールしてみましょう。root権限が必ず必要です。installおめてとうございます、インストールが完了しました。ルイズたんへの愛を得るにはこのようにしてください。/dev/louise_loveゆっくりルイズたんへの愛を噛み締めたい場合は、moreコマンドなどを使うと良いでしょう。ハードディスクやSSD、USBメモリをルイズたんへの愛で埋める場合には、次のようにしてください(注意:これをやるとHDDのデータが壊れます)。of=/dev/sda/dev/louiseのパーミッションは666なので、書き込みも行うことができます。書き込んだデータはすべてスルーしますので、恥ずかしいポエムも安心して書き込むことができます。/dev/louise_love昨今はアニメが多いですから、ルイズたんへの100年の恋も冷めてしまうかもしれません(一期やってたのもう4年くらい前だし)。大丈夫、アンインストールは次のように簡単にできます。簡単なソースではあるんで、デバドラやマルコフ連鎖の超簡単なサンプルとしてご活用ください。/dev/yoshinoyaなども(つくろうと思えば)簡単にできます。c_source.txtとして出力結果のc_source.txtの中身を、louise_love.cの該当部分に適当に貼りつけてください。<文章ファイル>とするとrubyを使っていくつか文章を作ってくれます。反省点あまりカーネルランドをいじった感が無いのがちょっと...。8割のコードはAPIの名前さえ変えればユーザランドでも動きますし、そもそもデバイスドライバなのに、ハードウェアを触っていません。条件を近づける?ために、一回パイプ通してます。ddで直接やっても変わらなかった。