![从一台计算机获取现有的 Linux 安装以在另一台计算机上启动](https://linux22.com/image/740/%E4%BB%8E%E4%B8%80%E5%8F%B0%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%8E%B7%E5%8F%96%E7%8E%B0%E6%9C%89%E7%9A%84%20Linux%20%E5%AE%89%E8%A3%85%E4%BB%A5%E5%9C%A8%E5%8F%A6%E4%B8%80%E5%8F%B0%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%B8%8A%E5%90%AF%E5%8A%A8.png)
我现有的 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
,但如果您有两个驱动器,您可能只需要交换sdb
,sda
反之亦然。
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