こんにちは、鶴谷です。

"ke...@kens.fm" <ke...@kens.fm> さん>

> 初歩的な事を聞きますが、MBRってハードディスク1台につき唯一の
> 場所にあると思って良いですか?

ハードディスクの一番最初のセクタ、のはずですから、1つです。

> FreeBSD ハンドブックの MBR、起動ステージ 1、2 および 3
> 何回読んでも旨く理解出来ないのですが
> 
> MBRでスライス2へ導かれ、そこからスライス2の /boot/boot1
> または /boot/boot2 で再びスライス1へ
> 戻されているなどと言う事は無いのでしょうか?(/boot.config は無しで)

 ハンドブックを見ましたが、boot1/boot2は同じプログラムを分けただけだ、
とあります。
1. boot0でスライスを指定し、
2. その先頭セクタにあるboot1が同じスライスのboot2を起動して、
3. boot2がカーネル(またはloader)を起動する、
というような理解でいいのではないでしょうか?
 ただし、boot2が起動するカーネルが同じスライスにある必要はないと
思いますが、その場合は別のスライスのカーネルを起動するだけで、
そこのboot1を実行するわけではないはずです。
ですので、boot0,1,2の順が戻ったりすることはないはずだと思います。

> ブートマネージャの設定や前回の起動などでMBRは少し変化しても
> boot1 や boot2 は全く不変のものでしょうか?
> /boot.config で
> 0:ad(0,2,a)/boot/loader
> と書いておけば スライス2を読みに行きますがこれは
> どの普段からスライス2へ移っているのかも知りたいです。

 インストール後は、自分で直接これらのファイルをいじらない限り、
変わることはありえないはずです。
 MBRは、起動するスライスを指定する部分は変わりますが、
それを除いて変わらないはずです(boot0でupdateオプションを無効にすると、
これすら変わらないはずです)。

> /boot/boot はどの段階なのかもモヤモヤしています。

 ハンドブックによると、boot1/2を作るためのただのファイルです。
インストール後は、なくても動作するはずだと思います。
 /boot/boot2はよく知りませんが、/boot/boot1も要らないはずです(未確認)。

> ブートマネージャに頼らず
> # sysctl kern.geom.debugflags=0x10
> # fdisk -a ad0
> で active partition を変更すれば
> 黙ってスライス2から立ち上がるのですが
> ブートマネージャはその代わりの事をしてくれるのとは
> 少し働きが違うのでしょうか?

 boot0についてはそのとおりだと思います。

> 一度別のバージョンでFDISKとブートマネージャだけ
> 入れて試したいのですが正常に動いていると思われます
> 鶴谷さま のバージョンは何でしょうか?

 OSは、FreeBSD/i386 8.1-STABLE, FreeBSD/amd64 8.1-STABLEなどです。
少なくとも4.xの頃からマルチブートにしていますが、特に問題は起きていません。
 FreeBSDどうしというのは余り多くありませんが、それでも何度か使った限りでは
問題ありませんでした。たとえば、
% boot0cfg -v ad0
Disk 0 : slice to boot is 2.
#   flag     start chs   type       end chs       offset         size
1   0x00      0:  1: 1   0x07   1023:254:63           63     61432497
2   0x00   1023:255:63   0xa5   1023:254:63     61432560     30716280
3   0x00   1023:255:63   0x07   1023:254:63     92148840     47102580
4   0x80   1023:255:63   0xa5   1023:254:63    139251420     17044965

version=2.0  drive=0x80  mask=0xf  ticks=182  bell=# (0x23)
options=packet,noupdate,nosetdrv
volume serial ID 0003-808f
default_selection=F2 (Slice 2)
な環境では問題ありませんでした(スライス2と4がそれぞれFreeBSD 7.0と8.0RC1)。
なお、boot0のバージョンは上のとおり2.0となっています。

 とりあえず、
% boot0cfg -B ad0
などでboot0をインストールしなおして、確認してみてはどうでしょうか?


--- 
鶴谷直樹
turut...@scphys.kyoto-u.ac.jp

メールによる返信