#author("2021-02-12T07:52:38+00:00","default:admin","admin") -[[動かしながら学ぶ「Linuxカーネル」の基本:https://xtech.nikkei.com/atcl/nxt/column/18/01448/]] -[[Linuxカーネル設定パラメータ一覧:http://itpro.nikkeibp.co.jp/members/LIN/LIN_CONTENTS/20030502/1/]] *バージョン [#t8f5bb65] **2.x [#n6317bd7] ***2.6 [#k1b5bdc6] -[[Linux 2.6.x:http://www.wdic.org/w/TECH/Linux%202.6.x]] -システムコールの仕様変更が存在しており、従来と互換性がなくなった -glibcも、glibc 2.4以降はLinuxカーネル2.6以降でなければ動かない **3.x [#f34a9003] -[[Linux 3.x:http://www.wdic.org/w/TECH/Linux%203.x]] -Linux 3.0は、元々はLinux 2.6.40として開発が進んでいたものだった -いわゆるメジャーバージョンが更新されたが、Linus Torvaldsの意向によるもので、従来のLinux 2.6.xからの大きな機能変更や非互換はない **4.x [#dcd46620] -[[Linux 4.x:http://www.wdic.org/w/TECH/Linux%204.x]] -[[Linuxカーネル4.0が登場 - 再起動せずにパッチ適用が可能に:http://news.mynavi.jp/news/2015/04/13/168/]] -ライブカーネルパッチの導入(再起動せずにパッチ適用を可能とする機能) -3.xとの互換性は保たれている *コンフィグレーション [#d5c033a9] -[[習得すればメリット大!Linuxカーネルをビルドできるようになろう:https://xtech.nikkei.com/atcl/nxt/column/18/01448/102000002/]] -[[組み込みLinuxカーネルの構築時にこれだけは知っておかなければならない項目:http://www.embedded.jp/article/linux_kernel_2-1.html]] **Kconfig [#yf010c2b] -[[kconfig-language.txt(for linux-2.6.23.8)(日本語訳):http://www.katsuster.net/contents/jp/kconfig-language-jp.txt]] ***書式 [#kede053b] menu [MENU名] config [CONFIG名] bool "説明" default [y|n] depends on [他のCONFIG名] select [他のCONFIG名] : endmenu menu [MENU名] : -config -bool -デフォルト値: "default" <expr> ["if" <expr>] --コンフィグオプションにはいくつものデフォルト値を設定できる --2つめ以降のデフォルト値が表示されるためには、最初のデフォルト値がアクティブである必要がある --デフォルト値はメニュー項目を定義した場所にしか書けないというわけではありません。別の場所に書いたり、事前に定義した値を上書きしたり出来ます。 --デフォルト値はユーザが何も値を設定しなかった(上記の "input prompt" で)ときに、コンフィグオプションに割り当てられます。もし見出しが見えていれば、ユーザに対してデフォルト値が表示され、ユーザは値を上書きできます。 --もしこのデフォルト値だけに対する依存関係がある場合は、"if" とともに条件を指定してください。 -依存関係: "depends on"/"requires" <expr> --メニュー項目の依存関係を定義 --複数の依存関係を定義したいなら、'&&' で繋げてください。 --依存関係はメニュー項目の属性全て("if" も含め)に適用されます。 -select *カーネルモジュール [#aa3d1d66] -静的リンクされたモジュールはカーネルイメージ(vmlinux)の一部になる -動的リンクされるモジュールは拡張子 *.ko のファイルとしてファイルシステムの何処かに置き、必要なときにロードする形態を取る **生成 [#xacb3f0e] -[[カーネルモジュールの作り方:https://qiita.com/hana_shin/items/a412bc7b1023be807c82]] **ローダブル・カーネル・モジュール(LKM) [#d146c5e7] -拡張子 *.ko のファイルとして実装される *コマンド [#we40ca5d] **lsmod [#u61855ce] **modprobe [#x8858d61] *関数 [#w5b79168] -include/linux/device.h でプロトタイプ宣言 -drivers/base/core.c で定義 -dev_emerg() -dev_alert() -dev_crit() -dev_err() -dev_warn() -dev_notice() -dev_info() -dev_dbg()