カーネルプログラミングを開始する最良の方法は何ですか?

カーネルプログラミングを開始する最良の方法は何ですか?

どのような本を尋ねるのではなく(有用なガイド/チュートリアルを知っている場合)、カーネルのプログラミングを始めるための最良の方法と、学習に最適な特定のディストリビューションがあるかどうかを尋ねるのはどうですか?

私はデバイスドライバの部分に最も興味がありますが、カーネルがどのように設定されるか(モジュールなど)も理解したいと思います。 C/C++で4~5年程度の経験がありますが、ほとんど大学の知識です。 4~5年の職場キャリアではありません。何を言っているのか分かりますが)

ベストアンサー1

最初:

最初のステップでは、「hello world」モジュールと仮想ハードウェアドライバのバリエーションを作成するのが最善の方法です。

「Linux Device Drivers」は素晴らしい本で、購入する価値があります。http://lwn.net/Kernel/LDD3/

LDD(少なくとも過去には)は、RAMディスクや仮想ネットワークデバイスなどの仮想ドライバを作成する練習をしてきました。

第二:

応募https://lkml.org/または、ハッキングしたいサブシステムのメーリングリストに移動します。あなたの周りを見て、スレッドをスキャンし、コードレビュー(パッチへの答え)を読んで、人々が偶然に見つけたかどうかを見つけてください。

まだサポートされていないデバイスまたは適切にサポートされていないデバイス用の(安価な)ハードウェアを購入できることを確認してください。安価なUSB NICまたは同様の安価なUSB周辺機器を選択することをお勧めします。古いドライバまたはツリーの外部ドライバ(おそらくベンダーによって作成され、おそらく2.4.xを対象としている)を使用するのが理想的です。なぜなら、ある程度動作することから始めてから徐々に調整/再作業して作成してテストできるからです。私の最初のドライバの試みはDavicom DM9601 USB NIC用でした。 2.4シリーズベンダーが作成したカーネルドライバがあり、ゆっくりと2.6に慣れています。 (注:メインラインのドライバはいいえ私のドライバーはついに他の人が最初から書きました。)

もう一つの良いヒントは、Kernel Newbiesのウェブサイト、特に「Kernel Gatekeeper」のバックログをチェックすることです。http://kernelnewbies.org/KernelJanitors/Todo 初心者が処理できる必要があるタスクのリストは次のとおりです。

おすすめ記事