2017/03/26

[勉]最近のPCのブートを知る (3) : ブートマネージャー

ここまで調べたところで、パーティションテーブルの扱い方に新しいやり方が加わったということがわかった。
まあ「新しい」といってもずいぶん前からなのだが。。。

もう1つ気になっていることがある。
外付けUSB-HDDにLinuxをインストールしたのだが、起動ディスクを選択するときにOS名が出てきたのだ。
そして、そのUSB-HDDを同じ機種である別のPCに挿したのだが、OS名も出ないし、起動するドライブとしてインストールしたディスクやパーティションを選択しても起動できなかったのだ。

UEFIにブートマネージャーなるものがあるようだが、それが関係しているのだろうか?


https://ja.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface#.E3.83.96.E3.83.BC.E3.83.88.E3.83.9E.E3.83.8D.E3.83.BC.E3.82.B8.E3.83.A3.E3.83.BC

どうも、特定のセクタ(ブートセクタ)を読込んで起動を始めるのではなく、「ここにロードするファイルがある」という情報をUEFIに教えておき、UEFIはNon-Volatileなメモリにそれを保持しておいて、それを使って起動するようだ。
ブートセクタに何も書いていないのなら、それはUSB-HDDだけ挿しても立ち上がらないはずだな。

そのロードするファイルは、OSに依存しない場所に置かれ、OSに依存しない形式のフォーマットで、OSに依存しない実行形式なり情報なりが書かれているはずだ。
そして、インストーラがそれをUEFIに教えることになるから、何かしらのAPIというかABIというか、そういうので通信していることになるだろう。
それがPEというやつか。

ここら辺までひっくるめて「UEFI」と呼んでいるような気がする。
ディスクだけ挿して起動するという時代は終わったのか。。。

ただ、USBメモリにISOファイルを書込んで起動することができるから、できないというわけではない。
そういうブート形式でインストールされていないだけなのだろう。
VirtualBoxみたいに、移動できてどこでも同じように動くLinux環境を作りたかったのだが。

ブートセクタにブートローダを書込んでおいて、UEFIから起動するときにブートセクタを読込んでくれるようであれば、動く気がする。
ブートローダをどこに書込むかは、インストーラが聞いてくるので指定できる。
ドライブの方に書込むのか、パーティションの方に書込むのかいつも迷うのだが、さっきの話からするとUEFIに登録するようなものになるから、どこでもよいのかもしれない。

ブートローダー - ArchWiki
読んだときは、2017年1月更新になっている。
Linuxのブートローダって、たくさんあるんだな。。

Ubuntu系はGRUB2というか、GRUB(Legacyではない方)が使われていたと思う。
GRUB - ArchWiki
保護用にパーティションを作るなどと手順が書かれているが、私は何も考えずに「/」とswapのパーティションしか作らずにインストールしたので、そこらへんがよくなかったのかも。
Linux 上の GRUB 2 がブートできなくなったときの対処方法
リムーバブルディスクから起動できると書いてあるしね。

そういえば、Raspberry PiもbootはFATパーティションに置いてあるから、そういうのがいるのかもしれん。
まあ、今回は最近の情報を調べたかっただけなので、これで終わるとしよう。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。