无法使用克隆的 VM、OpenSUSE、VirtualBox

无法使用克隆的 VM、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....为按路径路径/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
  • 在此文件中执行相同操作

相关内容