私は常にカーネル ハッキングと組み込みシステムの世界に惹かれていました。
そのようなものをいじり始めるための優れたチュートリアル(+簡単に入手できるハードウェア)を持っている人はいますか?
適切なドキュメントが付属し、手頃な価格のドライバなどを作成するためのキットのようなものはありますか?
ありがとう!
カーネル開発にまったく慣れていない場合は、ハードウェア開発から始めず、 proc file / sysfs などの「ソフトウェアのみ」のカーネル モジュールに進むことをお勧めします。より複雑な例では、 filesystem / network development 、uml/vmware/ で開発することをお勧めします。 virtualbox/...マシンなので、マシンをクラッシュさせてもそれほど害はありません:)組み込み開発の場合、小さなARM開発キットまたは小さなVia C3 / C4マシン、または自作で焼くことができる古いPCを使用できますUSB / PCI / あらゆるデバイス。
Kernelnewbies.orgから始めることをお勧めします。ここには、カーネル開発者向けの多くのリンクと有用な情報があり、初心者が取り組むための簡単に実装できるタスクのリストも備えています。
読むべき本:
Understanding the Linux Kernel - カーネル サブシステムの設計を詳述した非常に優れたリファレンス
Linux Device Drivers - 多くのサンプル コードを含むチュートリアルのように書かれており、Linux カーネルの主要な側面を理解して説明することに焦点を当てています。ビルド プロセスとカーネル モジュールの基本を紹介します。
Linux カーネル モジュール プログラミング ガイド- その他の入門資料
前述のように、特に Linux カーネル API は頻繁に変更される傾向があるため、Linux コードを確認することは常に良い考えです。
カーネル ビルド プロセスを理解するには、次のリンクが役立つ場合があります。
最後になりましたが、カーネル ソース ディストリビューションのドキュメント ディレクトリを参照してください。
以下は、カーネル開発クラスから横柄に盗まれたいくつかの興味深い演習です。
絶対に必要なのは、ルビーニによるこの本です。(ハードコピーまたは無料のソフトコピーの両方で入手可能)
彼は、PC 以外のハードウェアを必要としない、いくつかのダミー ドライバの実装を提供しています。したがって、カーネル開発を始めるには、これが最も簡単な方法です。
組み込み作業に関しては、数多く出回っている SBC (シングル ボード コンピューター) のいずれかを購入することをお勧めします。これらの多くは x86 プロセッサに基づいており、通常は PC/104 インターフェイスを備えています (電気的には PC/104 は ISA バス標準と同じですが、エッジ コネクタではなくスタッカブル コネクタに基づいているため、カスタム ハードウェアとのインターフェイスが非常に簡単です)。
通常、デバッグを容易にするVGAコネクタがあります。
手始めに、最善の方法は多くのコードを読むことです。Linux はオープン ソースであるため、多数のドライバーが見つかります。あなたが書きたいことのように、いくつかの方法で機能するものを見つけてください。適切で比較的理解しやすいコード (ループバック デバイス、ROM fs など) がいくつか見つかります。
Linux コード相互参照であるlxr.linux.noを使用することもできます。何かがどのように機能するかを調べる必要があり、コードを調べる必要がある場合、これは適切で簡単な方法です。
O'Reilly の本 (Understanding the Linux Kernel、第 3 版は 2.6 カーネルに関するもの) もあります。または、無料で何かが必要な場合は、高度な Linux プログラミングの本 ( http://www.advancedlinuxprogramming.com/ )を使用できます。 . ファイルシステム、ネットワークなどに関する特定のドキュメントも多数あります。
組み込み Linux ハッキングの場合、どこでも購入できるシンプルな Linksys WRT54G ルーターは、独自の開発プラットフォームですhttp://en.wikipedia.org/wiki/Linksys_WRT54G_series :
WRT54G は、GNU GPL の義務を満たすためにファームウェア ソース コードがリリースされた最初の消費者レベルのネットワーク デバイスであることで注目に値します。これにより、プログラマはファームウェアを変更して、デバイスの機能を変更または追加できます。いくつかのサードパーティ ファームウェア プロジェクトが、WRT54G 用の強化されたファームウェアを一般に提供しています。
OpenWrtとDD-WRTファームウェアをインストールしてみました。低コストのプラットフォームでのハッキングの出発点として、それらを確認できます。
私は完全にカーネルハッキングの初心者です:)「Linuxプログラム開発:演習付きガイド」と「Linuxデバイスドライバーの作成:演習付きガイド」の2冊の本を購入することにしました。これらは非常に明確に書かれており、さらなる学習の良い基盤を提供します。
準備が必要なもの:
Linksys NSLU2は、実際の組み込みシステムを動作させるための低コストの方法であり、周辺機器を追加するための USB ポートを備えています。OpenWrt 互換性ページを参照してください。店舗にある Linksys WRT54G の現在のモデルは、Linux では使用できなくなっていることに注意してください。コストを削減するために、RAM とフラッシュが少なくなっています。Cisco/Linksys は現在、WRT54G で vxWorks を使用しており、メモリ フットプリントが小さくなっています。
本当に使いたい場合は、組み込み CPU の評価キットが数百ドルから始まります。仕事やコンサルティング契約のために専門的に必要でない限り、これらにお金をかけないことをお勧めします.