CD-ROM起動でハードディスクからファイルを救出 |
||
YAMAMORI Takenori ●yamamori |
カーネルの起動メッセージ(各種デバイスの認識,初期化メッセージなど)が 表示されたあと,rootファイルシステムのマウントに失敗,または initが見つからないというエラーで停止する場合は,
などの原因が考えられます.これらの対処方法を順に説明します.
カーネルオプションでの「root=」の指定が間違っている場合は, 単にGRUBやLILOの画面上でroot=/dev/hda3などのオプションを指定して起動すれば よいだけです.正常に起動できたらgrub.confまたはlilo.confの「root=」の記述を 修正します.lilo.confを修正した場合は/sbin/liloを再度実行する必要があります.
SCSIハードディスクから起動するシステムで,SCSIカードを別の種類に交換した 場合などでは,initrd内に必要なSCSIモジュールがないため,rootファイルシステムを マウントできない状態になります.
このような場合はinitrdを再作成します. initrdの作成は,前述の ブートローダの再設定の手順 と同様に,インストールCD-ROMで起動し,ハードディスクをマウントして, そのマウントポイントにchrootした状態で行ないます.
chroot環境内の/etc/modules.confには,必要なSCSIモジュールを記述します. たとえば,Adaptec AHA-2940系の場合は,
alias scsi_hostadapter aic7xxx
となります.SCSIモジュール名がわからない場合は,CD-ROMのインストーラ上で lsmodコマンドを実行してみるとよいでしょう.
そして,次のようにmkinitrdコマンドでinitrdを作成します. (ファイル名やカーネルバージョンは実際の環境に合わせてください)
# mkinitrd -v -f /boot/initrd-2.4.20-18.7.img 2.4.20-18.7
このあと,LILOを使用している場合は場合はliloコマンドを実行する必要があります. GRUBの場合はそのままで構いません.
システムによっては、/etc/fstabのrootファイルシステムのデバイス名が, /dev/hda3などのデバイスファイル名ではなく,「LABEL=/」という記述に なっていることがあります.(下のリスト) grub.conf(またはlilo.conf)についても同様です. これは,Ext2などのファイルシステムのラベルが「/」である パーティションをマウントするという意味になります.
LABEL=/ / ext2 defaults 1 1 |
「LABEL=/」方式では,ハードディスクのデバイス名が変更されても, fstabの変更なしにマウントを行なえるという利点があります. その反面、「/」のラベルを付け忘れたり、重複したりしてrootファイルシステムが マウントできないといったトラブルの原因になります。
ラベルにこだわらないならば、/dev/hda3などのデバイス名を直接記述してしまうと よいでしょう。
ファイルシステムに「/」というラベルを付けるには, インストールCD-ROMまたはKNOPPIXを起動した環境から
# e2label /dev/hda3 / (または # tune2fs -L / /dev/hda3)
と実行してください。