web-dev-qa-db-ja.com

あるコンピューターから既存のLinuxインストールを取得して別のコンピューターで起動する

Windows XPおよびCentOS5.5をデュアルブートする既存のDellPrecision690ワークステーションセットアップがあります。これらのオペレーティングシステムは2つの別々のドライブにインストールされています。Linuxドライブにgrubメニューがあります。ドライブ1で、ドライブ2のWindowsブート情報を指します。

Linuxドライブを新しいHPZ800ワークステーションにインストールして、幸運にも起動できるかどうかを確認しようとしましたが、うまくいきませんでした。起動を開始した直後に、いくつかのエラーが発生します。

システムが示すものは次のとおりです。

このメッセージの直後Red Hat nash version 5.1.19.6 starting次の行が表示されます。

Unable to access resume device (LABEL=SWAP-sda2)
mount: could not find filesystem '/dev/root'
setuproot: moving /dev failed: No such file or directory
setuproot: error mounting /proc: No such file or directory
setuproot: error mounting /sys: No such file or directory
switchroot: mount failed: No such file or directory
Kernel panic - not syncing: Attempted to kill init!

これを起動させるために微調整できるものはありますか?このマシンにCentOS5.5と専用ソフトウェアをリロードする必要は本当にありません。

このドライブにgrubメニューが設定されていますが、これが問題になる可能性がありますか?古いマシンのドライブは、ドライブ1としてLinux、ドライブ2としてWindowsでセットアップされており、Linuxドライブはgrubメニューをホストしており、LinuxまたはWindowsで起動できます。これはどうして問題になるのでしょうか?

私はWindowsでこれを回避する方法を知っています:マシンにセカンダリHDDコントローラーカードをインストールし、ドライバーをインストールし、古いマシンのコントローラーにドライブを接続して起動することを確認し、ドライブとコントローラーを新しいマシンに移動して起動しますそれをオフにして、マザーボードドライバー(具体的にはhddコントローラードライバー)をロードすると、コントローラーカードを取り出し、hddをマザーボードに直接接続して設定できます。これと同じことはおそらくLinuxでも達成可能ですが、よくわかりません。これは、他に何も機能しない場合に試す最後の努力かもしれません。

6
DemiSheep

これまでのところ、ブートローダーがカーネルとinitrd/initramfsを正常にロードしたが、カーネルがルートデバイスを検出していないことを意味します。したがって、カーネルコマンドラインでroot=/dev/sda42のようなものを渡すことで起動できるはずです。

Grubプロンプトで、Linuxのエントリを編集し、linuxで始まる行を探します。その行には、root=/dev/sda42のようなパラメーターがあるはずです。 root=/dev/sdb42、つまり別のドライブに変更します。現在の文字はaではなく、機能する文字はbではない可能性がありますが、ドライブが2つある場合は、おそらくsdbsdaに、またはその逆に交換する必要があります。

Linuxでのドライブ文字の順序は、BIOS、Grub、またはWindowsでの順序とは無関係です(または少なくとも直接関連していません)(ドライバーがロードされる順序によって異なります)。 (これを回避する方法はいくつかありますが、現時点では役に立ちません。)

起動時に、/etc/fstabのエントリが現在のディスクデバイス名と一致しない場合、エラーが発生する可能性があります。修復コンソールにアクセスできない場合は、再起動し、(root=の変更に加えて)init=/bin/shを追加してシェルに直接ドロップしてから、を実行します。

mount /proc
mount -o remount,rw /
vi /etc/fstab    # or whatever your favorite editor is