2004年11月14日

[debian-users:41967] Re: lilo.conf の内容の変更が反映されない


[debian-users:41966] lilo.conf の内容の変更が反映されない

の件です. 解決はしたものの, 原因は未だ不明です.

前回メールの末尾にも fdisk の print の結果を引用しましたが,
現在ハードディスクを 2 台使っております.

> (fdisk の print 結果)
> Disk /dev/hda: 163.9 GB, 163928604672 bytes

> 255 heads, 63 sectors/track, 19929 cylinders
> Units = cylinders of 16065 * 512 = 8225280 bytes
>
> Device Boot Start End Blocks Id System
> /dev/hda1 * 1 124 995998+ 83 Linux
> /dev/hda2 125 186 498015 82 Linux swap / Solaris
> /dev/hda3 187 1555 10996492+ 5 Extended
> /dev/hda4 1556 16709 121724505 83 Linux
> /dev/hda5 187 310 995998+ 83 Linux
> /dev/hda6 311 1555 10000431 83 Linux
>
> Disk /dev/hdb: 20.4 GB, 20416757760 bytes
> 255 heads, 63 sectors/track, 2482 cylinders
> Units = cylinders of 16065 * 512 = 8225280 bytes
>
> Device Boot Start End Blocks Id System
> /dev/hdb1 1 16 128488+ 83 Linux
> /dev/hdb2 17 47 249007+ 82 Linux swap / Solaris
> /dev/hdb3 48 702 5261287+ 5 Extended
> /dev/hdb4 703 2482 14297850 83 Linux
> /dev/hdb5 48 94 377496 83 Linux
> /dev/hdb6 95 702 4883728+ 83 Linux

この結果を信じると, /dev/hdb は古い 20.4GB のディスク(disk B とします)
で, /dev/hda は新しい 163.9 GB のディスク(disk A とします)となっている
ことになります.

disk B は, 以前 debian を入れて使っていたもので, 最近になって, 新しく
購入した disk A に新たに debian を入れ, disk A の debian から, disk B
をマウントしてアクセスできるようにしています.

disk B は, IDE のフラットケーブルの中程に接続され, disk A は同じケーブ
ルの先端に接続されています. 2 台のハードディスクのジャンパーは, 両方と
もに "Cable Select" という状態になっていました. この状態で, 一旦
shutdown し, disk B に該当するハードディスクを外しました. そして再起動
すると, disk A の MBR に書き込んだはずの, 新しい lilo.conf の内容が反
映された, lilo が起動しました.

そこで再び dsik B を前回と同じ場所に接続し直し, 再起動すると,
lilo.conf の内容が反映されたままの状態で lilo が起動しているのです. こ
の結果は, disk B を外す前の同じ状態における, 新しい lilo.conf の内容が
反映されずに起動していたものとは異なります. この状態で 2 回ブートしま
したが, 2回とも同様の結果でした.

この時点では, 当初なぜ新しい lilo.conf の内容が反映されなかったか, 原
因ははっきりしていませんが, 以下のように想像しています.

(想像)
# マシンを立ち上げると, BIOS は, disk B の MBR を最初に見に行く. disk
# B の MBR にインストールされた lilo は, 設定に従って disk B の
# /dev/hdb1 にある vmlinuz-2.6.8 から起動する. 一旦 kernel が起動する
# と, kernel は, disk A を /dev/hda に, disk B を /dev/hdb として認識
# し, fstab の記述に従って, /dev/hda1 を /root にマウントする.
#
# したがって, いくら lilo を, kernel が /dev/hda として認識する disk A
# の MBR に新たにインストールしても, BIOS は disk B の MBR を最初に見
# に行っており, 実は disk A を購入する前に disk B で使っていた vmlinuz
# が起動していた.

仮に上の想像が正しかったとして, 何故 disk B を一旦外してまたつないだら,
挙動がかわって, 期待通りに /dev/hda として認識される disk A の MBR を
BIOS が読みに行くようになったのかの理由はよくわかりません.

そもそも, kernel は, いかにして /dev/hda や /dev/hdb を振り分けるので
しょうか?

いずれにしろ, このような混乱を避けるため, それが有効であるかどうかはと
もかくとして, ハードディスクのジャンパーの設定を, 両方とも "cable
select" になっていた状態から変更し, disk A を "master" に, disk B を
"slave" にしました.

以上です. お騒がせ致しました.

投稿者 xml-rpc : 2004年11月14日 10:18
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/27767
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。