最終更新:2015-10-22 (木) 03:07:23 (1801d)  

参考図書/新装改訂版Linuxのブートプロセスをみる
Top / 参考図書 / 新装改訂版Linuxのブートプロセスをみる

http://ascii.asciimw.jp/books/books/detail/978-4-04-891393-5.shtml

http://tatsu-zine.com/books/linux-bootprocess

目次

まえがき

第1章 ハードウェア

  • 1.1 本書の目標
  • 1.2 CPUの動作モード
  • 1.2.1 リアルモード(real mode)
  • 1.2.2 プロテクトモード(protect mode)
  • 1.2.3 仮想8086モード(virtual 8086 mode)
  • 1.2.4  64bitモード
  • 1.2.5 互換モード
  • 1.2.6 リアルモードからプロテクトモードへの移行
  • 1.2.7 プロテクトモードからリアルモードへの移行
  • 1.2.8 IA-32モードからIA-32eモードへの移行
  • 1.2.9 IA-32eモードからIA-32モードへの移行
  • 1.3 レジスタ
  • 1.4 メモリ管理
  • 1.4.1 セグメント
  • 1.4.2 リアルモードセグメント
  • 1.4.3 プロテクトモードのセグメント
  • 1.4.4  64bitモードのセグメント
  • 1.4.5 ページング
  • 1.4.6 ページングのアドレス変換
  • 1.4.7 ページディレクトリとページテーブル
  • 1.4.8  64bitモードのページング
  • 1.4.9 TLB
  • 1.5 保護機能
  • 1.5.1 特権レベル
  • 1.5.2 特権命令
  • 1.5.3 セグメントへのアクセス
  • 1.5.4 ページフレームへのアクセス
  • 1.6 割込みと例外
  • 1.6.1 割込みの発生源
  • 1.6.2 例外の発生源
  • 1.6.3 割込みと例外のベクタ
  • 1.6.4 割込みのマスク
  • 1.6.5 リアルモードの処理
  • 1.6.6 プロテクトモードの処理
  • 1.6.7  64bitモードの処理
  • 1.7 外部機器との入出力
  • 1.7.1 I/Oポートのアドレス
  • 1.7.2 I/O命令
  • 1.7.3 Memory Mapped I/O
  • 1.7.4 I/Oアクセスの保護
  • 1.8 PC/ATアーキテクチャ
  • 1.8.1 予約されたアドレス領域
  • 1.8.2 1MB以上のメモリ
  • 1.8.3 A20
  • 1.8.4 割込みコントローラ
  • 1.8.5 BIOS-

第2章 ブー-トローダからカーネル起動

  • 2.1 ブートの概要
  • 2.2 ブートローダ
  • 2.2.1 いろいろなブートローダ
  • 2.2.2 ソースコードについての注意
  • 2.3 GRUB2のMBR
  • 2.4 GRUB core
  • 2.5 GRUB kernel

第3章 圧縮カーネルの解凍

  • 3.1 解凍ルーチン概要
  • 3.2 セグメント・レジスタの初期設定をおこなう
  • 3.3  64bitモードに移行する
  • 3.4 プログラムを移動する
  • 3.5 圧縮カーネルの解凍

第4章 startup_64ルーチン

  • 4.1  64bitカーネルのメモリマップ
  • 4.1.1 第1段階のページテーブル
  • 4.1.2 第2段階のページテーブル
  • 4.1.3 Linuxのページテーブルの名称
  • 4.2 startup_64コード解説

第5章 start_kernel()とsetup_arch()

第6章 割込みの初期設定

  • 6.1 3つの時計
  • 6.1.1 リアルタイム・クロック
  • 6.1.2 プログラマブル・インターバルタイマ
  • 6.1.3 タイムスタンプ・カウンタ
  • 6.2 trap_init?()
  • 6.3 init_IRQ?()
  • 6.4 timekeeping_init()
  • 6.5 time_init?()
  • 6.6 setup_local_APIC?()
  • 6.7 setup_IO_APIC?()

第7章 rest_init()とkernel_init()

第8章 kernel_thread()

  • 8.1 プロセスとスレッド
  • 8.2 kernel_thread()
  • 8.3 do_fork?()
  • 8.4 copy_process?()
  • 8.5 copy_thread?()
  • 8.6 alloc_pid?()
  • 8.7 kernel_thread_helper?()

第9章 ユーザープロセスの起動とルートファイルシステムのマウント

  • 9.1 linux_binfmt
  • 9.2 kernel_execve()とsys_execve()
  • 9.3 sys_execve()
  • 9.4 copy_strings()
  • 9.5 search_binary_handler()
  • 9.6 load_script()
  • 9.7 load_elf_binary()
  • 9.8 kernel_execve?()再び
  • 9.9 インタープリタの起動
  • 9.10 /initスクリプトの実行

第10章 QEMUを使ってカーネルデバッグ

  • 10.1 ゲストOSの準備
  • 10.2 GRUB2のデバッグ
  • 10.3 gdbのコンパイル
  • 10.4 Linuxカーネルのデバッグ

付録A アセンブラ命令一覧