ネットワークデバイスドライバ。サウンドカードドライバ。カーネルソースに掲載されていたものを、今のカーネルバージョンのファイルパスに変更しました。CDドライバ)drivers/scsi/scsi.c(SCSI)など。kernel/module.cinclude/linux/module.hinclude/linux/elf.h(ELFオブジェクトファイルの構造)注意:原文の意図はあくまで「カーネルのどこから見るべきか」ということであり、上記のファイルが重要なソースファイルのすべてであるという意味ではありません。原文のカーネルバージョンが古く、現在のLinuxカーネルでは全く違っている可能性があります。僕がカーネルについての知識や常識が欠如しているため、このリンクは全く意味を成さない可能性もあります。原文にあるように、「これからカーネルをハッキングしたい方がどこから見るべきか」という意図で閲覧してください。良く調べると、今のカーネルではいろいろと違うようである。原文にあるようなアーキテクチャ固有の設定は、arch/x86/boot/header.Sにある。ここからmain()ルーチンにジャンプする。mainはarch/x86/boot/main.cにある。基本的にinit/main.cの中の「start_kernel」から読めば良い。最後のarch_call_rest_initからrest_initを呼び、その中のcpu_startup_entryを呼ぶ。cpu_startup_entryはkernel/sched/idle.cにある。do_idleでアイドルループに入る。Qiitaを参考に執筆しました。このページは今のカーネルの読み方について詳しい。)カーネルのコンパイルカーネルの手動コンパイルの方法Linuxカーネルは、手動でコンパイルすることで、さまざまなオプション機能を有効にしたり、無効にしたりすることが出来る。各機能は有効・無効あるいは動的にいつでも読み込めるモジュールにすることができる。install)と言うものだ。Linuxカーネルをコンパイルするにあたって、良く設定するのはCPU関係とファイルシステム関係のサポートだ。以下のような設定をするかもしれない。fs)以下はカーネルのコンパイルについてのリンク。カーネルのコンパイル方法はバージョンとともに良く変わるので、上の方法は古い可能性があります。下のリンクのような情報から、そのコンパイルしようとしているバージョンのカーネルのコンパイル方法について調べた上で、コンパイルを行ってください。3.0の下で再許諾いたします。自分でLinuxのプログラムをコンパイルしたい時に、カーネルヘッダーが必要となる時がある。カーネルのAPIを使うプログラムをコンパイルするために必要。カーネルヘッダーは、少し前の状況だと、カーネルがメジャーアップデートされた場合(2.4から2.6への移行の時など)、プログラムが正常に動かなくなったり、コンパイルできなくなる時があった。大切な基盤システムなどでは、注意してアップデートすること。pythonなどの重要コンポーネントは、メジャーアップデートに失敗すると悲惨なことになる。Hatの開発者などでも、注意して開発している。Pythonなどは本当に動かなくなる(Python2とPython3には全く互換性がない)。気を付けてシステムを管理しよう。カーネルモジュールカーネルモジュールの手動ロードカーネルモジュールは*.koという拡張子で、/lib/modules/にある。カレントディレクトリにあるkoファイルのロードは以下のようにする。hello.koロードされたドライバはlsmodで確認できる。lsmod(ドライバが表示される)アンロードはrmmodで行う。-r`」からドライバを探す。RCスクリプトなどでLinux起動時にドライバをロードしたい時などによく使われる。Linuxデバイスドライバ開発入門を参考に執筆しました。)カーネルモジュールの設定カーネルモジュールを作るためには以下のドキュメントを読むことが推奨されている。Guideカーネルモジュールを手動で読み込むためには、/etc/modules-load.d/*.confに自動的にロードしなければならないモジュールを改行区切りで記載する。モジュールのオプションは/etc/modprobe.d/*.confに記載する。基本的にはudevが自動で検知したハードウェアのモジュールをロードするため、手作業で行う必要は必ずしもない。以下のページを参考に執筆しました。3.0の下で再許諾いたします。LinuxカーネルガイドRHELとGentooとArchのガイドカーネルのコンパイルやモジュールなどの管理については、RHELとGentooとArchのガイドが参考になる。Wiki特に以下のArchのガイドは分かりやすくて参考になる。カーネルモジュールを管理する場合は一読の必要あり。