从一台计算机获取现有的 Linux 安装以在另一台计算机上启动

从一台计算机获取现有的 Linux 安装以在另一台计算机上启动

我现有的 Dell Precision 690 工作站设置可以双启动 Windows XP 和 CentOS 5.5。这些操作系统安装在两个独立的驱动器上。我在 Linux 驱动器上有一个 grub 菜单,将其设置为驱动器 1,并指向驱动器 2 上的 Windows 启动信息。

我尝试将 Linux 驱动器安装到新的 HP Z800 工作站中,看看是否能幸运地启动它,但没有成功。启动后立即出现一些错误。

系统显示如下:

在此消息之后,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!

我可以调整一些东西来让它启动吗?我真的不想在这台机器上重新加载 CentOS 5.5 和专用软件。

我在这个驱动器上确实有一个 grub 菜单设置,这可能是我的问题吗?旧机器中的驱动器设置为 Linux 作为驱动器 1,Windows 作为驱动器 2,Linux 驱动器托管 grub 菜单,允许我启动到 Linux 或 Windows。这到底是怎么回事?

我确实知道 Windows 解决此问题的方法:在机器中安装辅助 HDD 控制器卡,安装驱动程序,将驱动器连接到旧机器中的控制器并确保其启动,将驱动器和控制器移至新机器并启动关闭它,加载主板驱动程序(特别是硬盘控制器驱动程序),然后您可以取出控制器卡,将硬盘直接连接到主板上,然后就可以了。同样的事情可能在 Linux 中完成,但我不确定。如果没有其他办法的话,这可能是最后的尝试。

答案1

如果到目前为止,这意味着引导加载程序已成功加载内核和 initrd/initramfs,但内核未找到根设备。因此,您应该能够通过root=/dev/sda42在内核命令行上传递类似的内容来启动。

在 Grub 提示符下,编辑 Linux 条目,然后查找以 开头的行linux。在该行上,应该有一个类似于 的参数root=/dev/sda42。将其更改为root=/dev/sdb42,即不同的驱动器。当前的字母可能不是a,有效的字母可能不是b,但如果您有两个驱动器,您可能只需要交换sdbsda反之亦然。

Linux 中驱动器号的顺序与 BIOS、Grub 或 Windows 中的顺序无关(或至少不直接相关)(这取决于驱动程序加载的顺序)。 (有很多方法可以解决这个问题,但它们现在无法帮助您。)

引导时,如果 中的条目/etc/fstab与当前磁盘设备名称不匹配,则可能会出现错误。如果您无法访问修复控制台,请重新启动并(除了更改之外root=init=/bin/sh直接添加到 shell,然后运行

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

相关内容