(随時更新予定)
情報をあつめて、準備をしながら、更新していく予定
毎日ちょっとずつ
気長に進める

<準備>
読む前に知っておくべきこと

 知らなくていい理由は山ほど
  →純粋な好奇心と楽しさを大切に

知っているといいこと
・カーネル理解の方法
 →対象を絞る、全体把握(ソースツリー)、データ構造把握、ツール利用
 →gnu grobal あとで試したい
・コンピュータアーキテクチャの概要
→命令、マイクロ、システム、、、、
 arm,i386,x86,x86_64
→レジスタ
→命令ポインタ
・CPUのこと
・マザーボードの構成
知らなくてもいいこと
・コンピュータ関係の歴史

必要な知識 1
・データ構造の表現方法
・プログラム構造の知識
・カーネルをコンパイルする技術
・ライブラリの利用・指定方法
・エラー表示の確認方法

<方法論>

理解方法の一例
・本で概要をつかむ
・システムコールから読む
・ブートから読む
・テストプログラムをトレース
・カーネルモジュールを作成
・カーネルビルド
・勉強会に参加

毎日やる 飽きずにやる

低コストで検索できる仕組み 2

 仮想間ん今日のLinuxを常に立ち上げておく
 タグジャンプしてソースコードを読めるように
  →”google検索と同じ速度で見られるような状況”
→面倒臭くって調べなくなってしまう

Gitの履歴をおいかける

頭から読まない

 生の情報(コード)は最適化されていない
 ソースコードを頭から読むのは非効率
  →タグジャンプを使ってトップダウンやボトムアップで読む
  →デバッガーで実行順序で読む
  →Gitとかを使って時系列で見るか
    (三大流派)

何もしない時間を削る

 →ライフハックなどで効率を1割2割改善しようと頑張らなくても結構なパフォーマンスが出る

<精神論>

 ストレス発散として読む
 がんばって読むはだめ

参考




<参考書>

基本を学ぶ

初期化部分を知る

Notes:

  1. http://itpro.nikkeibp.co.jp/article/COLUMN/20071024/285378/?rt=nocnt
  2. カーネルハッカー・小崎資広の「コードを読む技術」