在 HP 计算机上放置新映像后无法 chroot /mnt/sysimage

在 HP 计算机上放置新映像后无法 chroot /mnt/sysimage

我正在使用 Clonezilla 将新的 CentOS 7 映像放到我们的计算机上。其中大多数是联想台式机,我们还有几台 HP 台式机,目前都运行旧映像。

为了使 Clonezilla 将新映像还原为新映像后能够正常工作,我们需要插入带有 CentOS 7 救援磁盘的 USB 并启动它来运行一些命令,以 开头chroot /mnt/sysimage

这在联想台式机上运行良好,但当我在 HP 台式机上运行此命令时,出现以下错误消息:

chroot: failed to run command ‘/bin/bash’: No such file or directory

联想和惠普的机器都具有相同的硬盘大小(80 GB),而我正在将完全相同的新映像放在这两台机器上。我无论如何也想不出为什么一台机器可以工作而另一台却不能,而且我不想拆开新映像并从头开始(我们只有大约 5 台惠普机器,其余都是联想)。

有人能解释一下为什么 chroot 命令在 HP 机器上不起作用吗?谢谢。

答案1

看起来 /mnt/sysimage 并未按预期挂载。命令

mount | grep "/mnt/sysimage"

应该会告诉您 处挂载了什么/mnt/sysimage。如果没有输出,则表示/mnt/sysimage未挂载,在这种情况下请尝试手动挂载。使用命令:

cat /proc/partitions | tr -s ' ' | cut -d ' ' -f 5

获取分区列表。然后尝试

mount /dev/<partition_name> /mnt/sysimage

您可能需要猜测正确的分区名称。我们无法根据您提供的信息判断。要尝试另一个分区,请卸载前一个分区

umount /mnt/sysimage

答案2

错误消息具有误导性,仅意味着/bin/bash不存在(不是您的情况);或者使用的动态加载器/bin/bash不存在(可能是您的情况);甚至使用 rsync 创建了 usr、lib 和 lib64 文件夹而没有保留链接标志。

最可能的解释是您的 chroot 缺少 lib 和/或 lib64 文件夹。

您应该复制 usr、lib 和 lib64 三个文件夹同时保留链接,或者仅将mount --bind它们复制至/mnt/sysimage

答案3

如果它在某些机器上运行但在其他机器上运行不成功,则可能是架构不同。我怀疑一个是 32 位的,另一个是 64 位的 - 需要确保两种架构都存在二进制文件和共享库,否则 USB 记忆棒无法同时适用于这两种架构。

答案4

因此,我发现 HP 机器(以及较新型号的联想机器)正在安装 Linux 分区,/dev/sdb而不是/dev/sda在我插入 CentOS 7 救援磁盘时安装。

这是因为我的救援磁盘在 USB 上,所以系统安装了 USB/dev/sda而不是其他分区。

为了解决这个问题,我下载了 CentOS 7 的 ISO,并将其刻录到 DVD 上,然后启动它。现在我可以chroot毫无问题地执行命令,因为 Linux 分区现在已打开/dev/sda

谢谢大家的建议和帮助。

相关内容