予備の HDDへ起動可能状態で vine linuxをコピーその2 IDE HDD => SCSI HDD
sorry Japanese only
最終更新日 2004/07
page size = Mbyte


関連するページ IDEからIDE IDEからSCSI SCSIからSCSI

SCSI HDDの値段が下がってきたので、SEAGATEの 10000rpm ST336607LW 36Gbyteを購入してみました。
今まで使用していた 120Gの IDE HDDから、簡単なコピーで起動可能なまま vine linuxのコピーを作る方法です。
使用する SCSIアダプターは、Adaptecの AHA-29160です。

とはいえ、IDEから IDEの時ほど簡単には出来ませんでした。
また、途中エイヤ!でやってしまった所もあるため、順番違い、記憶違いがあるかもしれません・・・

まずは、SCSIアダプターを取り付け HDDを接続して IDE HDDより起動する。
起動途中で新しいデバイスが見付かりました。とか何とか出ます。(記録取っていませんでした。)
リターンを押して承認すると、ドライバーが組み込まれます(って言い方で良いのかな?)

正常に組み込まれていると、以下のように /var/log/messagesに記録されています。

Jul 31 14:45:22 vine1 kernel: scsi0 : Adaptec AIC7XXX EISA/VLB/PCI SCSI HBA DRIVER, Rev 6.2.36
Jul 31 14:45:22 vine1 kernel:         
Jul 31 14:45:22 vine1 kernel:         aic7892: Ultra160 Wide Channel A, SCSI Id=7, 32/253 SCBs
Jul 31 14:45:22 vine1 kernel:
Jul 31 14:45:22 vine1 kernel: blk: queue da7b9218, I/O limit 4095Mb (mask 0xffffffff)
Jul 31 14:45:37 vine1 kernel: (scsi0:A:0): 160.000MB/s transfers (80.000MHz DT,offset 63, 16bit)
Jul 31 14:45:40 vine1 kernel:   Vendor: SEAGATE   Model: ST336607LW        Rev:0007
Jul 31 14:45:40 vine1 kernel:   Type:   Direct-Access                      ANSISCSI revision: 03
Jul 31 14:45:40 vine1 kernel: blk: queue da7b9018, I/O limit 4095Mb (mask 0xffffffff)

ここまで持って来るには、以下の変更を加えました。

/etc/modules.confの変更

alias scsi_hostadapter aic7xxx    <==追加
alias block-major-3 off           <=注1

注1
SCSI起動にした後、/var/log/messagesを確認していたら、以下のようなエラーが出ていたので追加しました。
modprobe: modprobe: Can't locate module block-major-3

SCSIブートの場合に必要なイニシャル RAMDISKイメージを作成

#depmod -a        モジュール依存関係のファイルを作成
#uname -r         カーネルバージョンを調べる
2.4.22-0vl2.10
#mkinitrd /boot/initrd-2.4.22-0vl2.10.img 2.4.22-0vl2.10
                  イメージファイルの作成
システム起動時に SCSIを有効にするにはさんのページの vine linuxの場合は。
謎の処理系さん
を参考にさせていただきました。

次に /etc/lilo.confを変更します。

disk=/dev/sda         <= SCSIブートでない時 SCSIブートの
    bios=0x80         <= liloを作るのに必要
prompt
timeout=50
default=linux           <= 下記 (1)
boot=/dev/sda
map=/boot/map
install=/boot/boot.b
message=/boot/message
lba32

image=/boot/vmlinuz-2.4.22-0vl2.10
        label=linux-scsi              <= 下記 (1)
        read-only
        root=/dev/sda7
        initrd=/boot/initrd-2.4.22-0vl2.10.img  <= さっき作った imgファイルを記述
このように /etc/lilo.confを作成しておき、lilo -vを実行して新たな lilo環境を作成します。

[root]# lilo -v
LILO version 21.4-4, Copyright (C) 1992-1998 Werner Almesberger
'lba32' extensions Copyright (C) 1999,2000 John Coffman

Reading boot sector from /dev/sda
Merging with /boot/boot.b
Mapping message file /boot/message
Boot image: /boot/vmlinuz-2.4.22-0vl2.14
Mapping RAM disk /boot/initrd-2.4.22-0vl2.14.img
Added linux-2.14 *
Boot image: /boot/vmlinuz-2.4.22-0vl2.10
Mapping RAM disk /boot/initrd-2.4.22-0vl2.10.img
Added linux
Boot image: /boot/vmlinuz-2.2.25-0vl3
Added linux-2.2-up
/boot/boot.0800 exists - no backup copy made.
Writing boot sector.
この作業をやった後でも liloリターンにて作られるファイル群と、bootするのに必要なファイル群の関係が良く分かってはいません。
よって私は IDE DISKの /bootディレクトリーに変更を加えられるのをおそれ、liloリターンを実行する時には umountと mountをやり直し /bootディレクトリーは SCSI HDDの /dev/sda1をマウントして実行しました。

ちなみに、色々はまった経験を書くと・・・

(1) liloリターンで 『 LILO: No images have been defined.』とでる。
これは、bootするとき linux-scsiと表示されるよう label=linux-scsiと変更したのですが、default=linuxのままで、linuxってラベルがありませんよ!ってエラーだったようです。
No imagesって出るから、さっき作った imgファイルが悪いのかと思い、はまりまくりました。数時間はまったでしょうか。
ay diaryさん、ありがとうございました。

(2) SCSIブートすると 『 LIL- 』でハングする。
LILOの文字一文字ずつにエラーの意味があるとは思いませんでした。
LIL-で止まると、以下の意味らしいです。
マップファイルが壊れている。 ジオメトリ情報を読みこめないか、/boot/mapの起動に問題がある。
なんのことはない。imgファイルが必要などとは思わず imgファイルを作らず実行していたからでした。
結果が分かれば簡単です。
/etc/lilo.confへ mkinitrdで作成した imgファイルを記述して OK

(3) boot途中以下のメッセージで止まる
kmod: failed to exec /sbin/modprobe -s -k block-major-8 (resume= parameter), Disabled
VFS: Cannot open root device "807" or 08:07
Please append a correct "root=" boot option
kernel panic: VFS: Unable to mount root fs on 08:07
これは何やって直したでしょうか。
lilo.confへ
disk=/dev/sda         <= SCSIブートでない時 SCSIブートの
    bios=0x80         <= liloを作るのに必要
をやって直したような記憶があります。エイヤ!でやってしまい記憶が定かでありません・・

(4) mkinitrdをやると(一応ファイルは出来上がるが)以下のエラーが出来る。
find: /proc/scsi/usb-sto*: そのようなファイルやディレクトリはありません
basename: 引数の数が少なすぎます
2.4.22-0vl2.10から 2.4.22-0vl2.14へ kernelを updateしたときも mkinitrdコマンド実行して imgファイルを作り直す必要があるのですが、上のエラーが出ました。
調べた所、/sbin/mkinitrdの 303行目を以下のように変更
            if [ -z "$usbHosts" -a -e /proc/scsi/usb-storage-0 ]; then
                                   ~~追加
にてエラー無く mkinitrdコマンド実行できるようになりました。

18146
戻る