kexecbootメモ2

コードをざっくり読んでみた。わりと適当にしか見ていないので間違っているカモ。

項目一覧を作るまで

  1. "/proc/partitions"を見てOSが掴んでいるパーティションの一覧を取得する
  2. "/dev/<パーティション名>"を開き、ヘッダフォーマットを元に何のファイルシステムか調べる(昨日のリストがそれ)
  3. ファイルシステムが判明した場合、"/proc/filesystems"を見てOSがサポートしているファイルシステムか調べる
  4. サポートしているなら"/mnt"にマウント
  5. "/mnt/boot/zImage-<マシン名(Corgiとか)>","/mnt/boot/zImage","/mnt/zImage"の順にファイルがあるか調べる
  6. 見つかった場合、デバイス(※1)・ファイルシステム(※2)・カーネル(※3)のファイルパスを項目に追加する
  7. "/mnt/boot/kernel-cmdline"がある場合、中を読み込んで一緒に追加しておく(※4)
  8. 以下全てのパーティションに同じことをくりかえす

起動するとき

  1. "/usr/bin/kexec -l [--cmd-line [<※4>] [] [root=<※1> [rootfs=<※2>]]] rootwait <※3>" でカーネルを読み込む
  2. "/usr/bin/kexec -e [-x]" で起動