CD-ROM起動でハードディスクからファイルを救出

 
  YAMAMORI Takenori ●yamamori

●rootファイルシステムがマウントできない場合

カーネルの起動メッセージ(各種デバイスの認識,初期化メッセージなど)が 表示されたあと,rootファイルシステムのマウントに失敗,または initが見つからないというエラーで停止する場合は,

などの原因が考えられます.これらの対処方法を順に説明します.


○カーネルオプションで「root=」を指定

カーネルオプションでの「root=」の指定が間違っている場合は, 単にGRUBやLILOの画面上でroot=/dev/hda3などのオプションを指定して起動すれば よいだけです.正常に起動できたらgrub.confまたはlilo.confの「root=」の記述を 修正します.lilo.confを修正した場合は/sbin/liloを再度実行する必要があります.


○initrdの再作成

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の場合はそのままで構いません.


○「LABEL=/」の問題

システムによっては、/etc/fstabのrootファイルシステムのデバイス名が, /dev/hda3などのデバイスファイル名ではなく,「LABEL=/」という記述に なっていることがあります.(下のリスト) grub.conf(またはlilo.conf)についても同様です. これは,Ext2などのファイルシステムのラベルが「/」である パーティションをマウントするという意味になります.

●リスト 「LABEL=/」で記述された/etc/fstabの例

LABEL=/    /      ext2    defaults   1 1 

「LABEL=/」方式では,ハードディスクのデバイス名が変更されても, fstabの変更なしにマウントを行なえるという利点があります. その反面、「/」のラベルを付け忘れたり、重複したりしてrootファイルシステムが マウントできないといったトラブルの原因になります。

ラベルにこだわらないならば、/dev/hda3などのデバイス名を直接記述してしまうと よいでしょう。

ファイルシステムに「/」というラベルを付けるには, インストールCD-ROMまたはKNOPPIXを起動した環境から

  # e2label /dev/hda3 /   (または # tune2fs -L / /dev/hda3)

と実行してください。


To『CD-ROM起動でハードディスクからファイルを救出』[index]


このページは、技術評論社 Software Design 2003年8月号、『システムが起動しない!非常時のデータ確保術』の原稿を元に、Web 用に再構成したものです。
To 謎の処理系 SunOS 4.1.4 [Home]
yamamori