TL;DR
コンピュータの起動時に、ファームウェアが探して読み込むディスク。先頭にブートローダが置かれていて、そこから OS のカーネルが起動される。
仕組み
「Writing an OS in Rust」の「最小の Rust カーネル」によると、BIOS は自己テストとハードウェアの初期化を終えると、ブータブルディスクを探す。見つかると、ディスクの先頭 512 バイトに置かれた実行可能コードであるブートローダに制御が移る。ブートローダは、ディスクの中からカーネルのイメージを探し、メモリに読み込む。
例
同じ記事では、bootimage というツールでカーネルとブートローダをコンパイルしてリンクし、ブータブルディスクイメージ bootimage-blog_os.bin を作る。このイメージは QEMU の仮想マシンで起動できる。
qemu-system-x86_64 -drive format=raw,file=target/x86_64-blog_os/debug/bootimage-blog_os.bindd で USB メモリに書き込めば、実機でも起動できる。
注意点
USB メモリに書き込むと、そのデバイスのデータは上書きされる。デバイス名を取り違えないよう、よく確かめてから書き込む。また、このイメージは CD のイメージではないので、CD には焼けない。