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 を作るコマンド
[ツッコミを入れる]




