クローンされた VM、OpenSUSE、VirtualBox を使用できない

クローンされた VM、OpenSUSE、VirtualBox を使用できない

VM のクローンを作成しましたが、起動中に次のメッセージが表示されます:

Trying manual resume from /dev/sda1
Invoking userspace resume from /dev/sda1
resume: libgcrypt version: 1.5.0
Trying manual resume from /dev/sda1
invoking in-kernel resume from /dev/sda1
Waiting for device /dev/disk/by-id/ata-VBOX_HARDDISK_.....-part2 to appear: ...
Could not find /dev/disk/...-part2
Want me to fall back to /dev/disk/...-part2 (Y/n)

「Y」を押すと、失敗して再度起動を試み、/bin/sh に終了します。「n」を押すと、すぐに /bin/sh に終了します。

ここで解決策を読みました:http://diggerpage.blogspot.com/2011/11/cannot-boot-opensuse-12-after-cloning.htmlしかし、ディスク上のファイルにアクセスして編集する方法がわかりません/etc/fstab/boot/grub/menu.lst

答え1

次の手順を実行することでシステムを起動することができました。

1) システムが見つけられないデバイスをメモします。

2) その質問に「n」と答えます。コマンド プロンプトが表示されます。

3) 次のコマンドを実行します。cd /dev/disk/by-id

4) 次のコマンドを実行します。ls

5) このフォルダー内のすべてのファイルの名前を変更し、現在の名前を手順 1 でメモしたデバイスの名前に置き換えます。例:mv ata-VBOX_OLDNAME....-part2 ata-VBOX_HARDDISK....-part2

6) 完了したら、次のコマンドを入力します。exit

7) システムは正常に起動するはずです。

OpenSUSE 11.4 でこれがどのように起こるのかをまだ調査中です。

答え2

この問題は、SUSE がデフォルトで Grub をラベルやパスではなく名前でディスクを検索するように設定しているために発生します。アプライアンスから VM を作成すると、VirtualBox は新しい名前で新しいディスクを作成し、Grub はブートディスクを見つけることができません。私はこれを修正できました。永久にによる:

  1. ファイルシステムをマウントできる別のマシンに、ディスクをセカンダリ ドライブとして追加します。私は /media/hd2 にマウントしました。

  2. /media/hd2/boot/grub/device.map を編集し、ハード ドライブへの by-name パスを /dev/disk/by-name/ata-VBOX....by-path パスに置き換えます/dev/disk/by-path/pci-0000:00:0d.0-scsi-0:0:0:0

  3. /media/hd2/boot/grub/menu.lst を編集し、by-name パスを by-path パスに置き換えます。私の場合、part-1 パスをすべて に置き換え/dev/disk/by-path/pci-0000:00:0d.0-scsi-0:0:0:0-part1、part-2 パスを に置き換えました/dev/disk/by-path/pci-0000:00:0d.0-scsi-0:0:0:0-part2

私が使用したパスは、最初のハード ディスクを指定します。別のハード ディスク (または別のディスク タイプ) から起動する場合は、SUSE がパスをどのようにマップするかを把握する必要があります。SUSE は 2 番目のハード ドライブを としてマウントすることがわかりましたpci-0000:00:0d.0-scsi-1:0:0:0

ハード ドライブのバイパスを指定することは、場合によっては理想的ではないかもしれませんが、私が求めていた迅速な修正には完璧に機能しました。

答え3

このエラーが発生したので、etc/fstabとboot/grub/menu.lstでディスクの古いIDを新しいIDに置き換えることで解決しました。

  1. フォールバックの質問で「n」を押します。
  2. 実行して新しいIDを取得するhdparm -i /dev/sda
  3. 承認されたソリューションに示されているようにすべてのディスクの名前を変更し、ゲストを起動します。
  4. ターミナルをルートとして開き、vi etc/fstab表示されている古い ID を新しい ID に置き換えます。保存して閉じます。
  5. vi boot/grub/menu.lst表示されているすべての場所で古い ID を新しい ID に置き換えます。保存して閉じます。
  6. リブート。

受け入れられた解決策は1回限り有効ですが、これは永久修正。 それが役に立てば幸い!

答え4

私は他の解決策を組み合わせてこの問題を解決しました。

起動用のみ私がこれをしたシステム:

  • ブートエラーメッセージが報告されたら、ブート手順で要求されたパーティションID(ID1など)を書き留めて、次のように入力します。n
  • cd /dev/disks
  • ls -lディスクとパーティションへのリンク名で現在のIDを確認する(ID2とします)
  • ここで各リンクのコピーを作成し、コピーの名前を上記で必要な ID に変更します。

    mv ID2 ID1
    mv ID2-part1 ID1-part1
    ...
    

    例えば

    mv scsi-12345676890abcdefgh0987654321 scsi-0987654321hgfedcba1234567890
    mv scsi-12345676890abcdefgh0987654321-part1 scsi-0987654321hgfedcba1234567890-part1
    ...
    
  • exit

システムが起動します。

設定を変更できるようになりましたこの問題が再び発生しないようにするため:

  • ターミナルを開いてルートセッションに入るsudo su
  • vi /etc/fstab
  • id ( ) によるディスクとパーティションへのすべての参照を(例: 、...)/dev/disks/by-id/...への参照に置き換えます。/dev/.../dev/sda/dev/sda1
  • vi /boot/grub/menu.lst
  • このファイルでも同じことを行う

関連情報