kexecbootメモ2
コードをざっくり読んでみた。わりと適当にしか見ていないので間違っているカモ。
項目一覧を作るまで
- "/proc/partitions"を見てOSが掴んでいるパーティションの一覧を取得する
- "/dev/<パーティション名>"を開き、ヘッダフォーマットを元に何のファイルシステムか調べる(昨日のリストがそれ)
- ファイルシステムが判明した場合、"/proc/filesystems"を見てOSがサポートしているファイルシステムか調べる
- サポートしているなら"/mnt"にマウント
- "/mnt/boot/zImage-<マシン名(Corgiとか)>","/mnt/boot/zImage","/mnt/zImage"の順にファイルがあるか調べる
- 見つかった場合、デバイス(※1)・ファイルシステム(※2)・カーネル(※3)のファイルパスを項目に追加する
- "/mnt/boot/kernel-cmdline"がある場合、中を読み込んで一緒に追加しておく(※4)
- 以下全てのパーティションに同じことをくりかえす
起動するとき
- "/usr/bin/kexec -l [--cmd-line [<※4>] [] [root=<※1> [rootfs=<※2>]]] rootwait <※3>" でカーネルを読み込む
- "/usr/bin/kexec -e [-x]" で起動