無法使用複製的虛擬機器、OpenSUSE、VirtualBox

無法使用複製的虛擬機器、OpenSUSE、VirtualBox

我已經克隆了一個虛擬機,現在在啟動它時我看到一條訊息:

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 配置為按名稱而不是按標籤或路徑查找磁碟。從裝置建立虛擬機器時,VirtualBox 會建立一個具有新名稱的新磁碟,然後 Grub 找不到啟動磁碟。我能夠解決這個問題永久經過:

  1. 將磁碟作為輔助磁碟機新增至另一台可以掛載檔案系統的電腦。我將我的安裝到/media/hd2。

  2. 編輯 /media/hd2/boot/grub/device.map 並將硬碟的依名稱路徑替換 /dev/disk/by-name/ata-VBOX....為 by-path path /dev/disk/by-path/pci-0000:00:0d.0-scsi-0:0:0:0

  3. 編輯 /media/hd2/boot/grub/menu.lst 並將按名稱路徑替換為按路徑路徑。對於我的,我最終將所有第 1 部分路徑替換為/dev/disk/by-path/pci-0000:00:0d.0-scsi-0:0:0:0-part1,將第 2 部分路徑替換為/dev/disk/by-path/pci-0000:00:0d.0-scsi-0:0:0:0-part2

我使用的路徑指定第一個硬碟。如果您想要從不同的硬碟(或不同的磁碟類型)啟動,您將需要弄清楚 SUSE 如何對應路徑。我發現 SUSE 將安裝第二個硬碟作為pci-0000:00:0d.0-scsi-1:0:0:0.

在某些情況下,指定硬碟旁通可能並不理想,但它非常適合我想要的快速修復。

答案3

我遇到了這個錯誤,並透過在 etc/fstab 和 boot/grub/menu.lst 上將磁碟的舊 ID 替換為新 ID 來解決

  1. 在回退問題上點選「n」。
  2. 透過運行獲取新的idhdparm -i /dev/sda
  3. 按照接受的解決方案中的說明重新命名所有磁碟並啟動您的來賓。
  4. 以 root 身分開啟終端,vi etc/fstab然後將舊 ID 替換為新 ID(無論它顯示在何處)。儲存並關閉。
  5. vi boot/grub/menu.lst並將舊 ID 替換為新 ID(無論它顯示在何處)。儲存並關閉。
  6. 重啟。

接受的解決方案僅適用於一次性,而這是一種永久修復。希望能幫助你!

答案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

系統將啟動。

現在您可以更改設定確保不會再遇到這個問題:

  • 開啟終端機並輸入 root 會話sudo su
  • vi /etc/fstab
  • 將 id ( ) 對磁碟和分割區的每個引用替換為對(例如,...)/dev/disks/by-id/...的引用/dev/.../dev/sda/dev/sda1
  • vi /boot/grub/menu.lst
  • 在此文件中執行相同操作

相關內容