2018-11-12 :-|
_ [ブートシーケンス][initramfs][Linux]Linux のブートシーケンスとか initramfs とか
Linux のヒント: ブート時に rootfs を見つける
シーケンス図のアスキーアートは TextDiagam で作成した。
bootloader は Llinux だと GRUB が有名。bootloader はディスクのトラック0、シリンダ0、ヘッド0 の位置にある。レガシーでいう MBR です。(マスターブートレコード ‐ 通信用語の基礎知識)
OS はパーティションのうちアクティブなパーティションにあるものが使われる(?)
+-----+ +-----+ +-------------+ +-----+ +-------+ | PC | | ROM | | bootloader | | OS | | init | +-----+ +-----+ +-------------+ +-----+ +-------+ ---------------------------\ | | | | | | POST(Power On Self Test) |-| | | | | |--------------------------| | | | | | | | | | | | load loader | | | | |--------------->| | | | | | | | | | | load bootsector | | | | |----------------------->| | | | | | | | | | | extract OS and load | | | | |----------------------->| | | | | | ------------------------\ | | | | |-| load kernel module | | | | | | | load device driver | | | | | | | mount root filesystem | | | | | | | mount system file | | | | | | |-----------------------| | | | | | | | | | | execute init | | | | |---------------------------->| | | | | | -----------------------\ | | | | |-| parse /etc/initab | | | | | | | execute each command | | | | | | |----------------------| | | | | |
第384回 Initramfsのしくみ:Ubuntu Weekly Recipe - gihyo.jp … 技術評論社
- initramfs
- ルートファイルシステムをマウントするために「Initramfs」というイメージファイルを使用する。
- カーネルはブートローダーによって起動されたあと,ルートファイルシステムをマウントする。
- すべてのディスクドライバを組み込むとカーネルが肥大化する。
- カーネルモジュールを使うにしてもあの日見たカーネルモジュールの名前をカーネルはまだ知らない。
- そこでミニルートという仕組みを使う。
- ミニルートとしては現在 initramfs が使われる。
- ミニルートは最低限のドライバやコマンドを詰め込んだもの。
- ルートファイルシステムをマウントするために必要なカーネルモジュールやスクリプトが詰め込まれている。
- ブートローダーはカーネルとミニルートをメモリに展開し、カーネルにミニルートのアドレスを教える
- カーネルはそのアドレスをもとにミニルートをマウントし、ミニルートに含まれるスクリプトを用いてルートファイルシステムをマウントする
- mkinitramfs: initramfs を作るコマンド