debootstrap 无法挂载 /proc

debootstrap 无法挂载 /proc

我已经研究过这个问题,但这里(到目前为止)的所有答案以及谷歌搜索似乎都不符合我的问题。

情况如下:

我正在运行 Xubuntu 12.04 作为基础安装,并尝试设置 BackBox 3.01 (也是 12.04) 的 debootstrap chroot 安装。两者都是 amd64 位架构,我已经反复验证了这一事实。

我已遵循以下两个说明:

https://help.ubuntu.com/community/DebootstrapChroot https://unix.stackexchange.com/questions/12956/how-do-i-run-32-bit-programs-on-a-64-bit-ubuntu/12957#12957(感谢 Giles!)

除了 RTFM 和手误问题之外,我现在在 debootstrap 安装过程中遇到了一个问题,我到达了某个点并得到了:

W: Failure trying to run: chroot /home/user/test/chroot mount -t proc proc /proc

正如我所尝试的,放下的安装不足以 schroot,即使我使用 --foreign 选项重做,效果也不会更好。

我所做的研究似乎表明该问题与以下因素有关:

  1. 尝试在 32 位操作系统中安装 64 位版本(我显然不会这么做)

  2. 某些内核中的 procfs 可能存在问题,但错误报告不清楚,而且这显然看起来很旧

  3. 许多虚拟化相关的问题(我没有做任何事情)

我在想,因为这是一个非常简单的将基于 file:/// 的(另一个)基于 ubuntu 的发行版安装到我的 chroot 环境(64 -> 64)中,所以在设置步骤中一定有一些非常简单的东西是我遗漏或忘记的。我是否应该做一些事情,比如预先安装/srv/chroot/backbox3_01/var/proc到类似的东西:

sudo mount -o bind /proc /srv/chroot/backbox3_01

任何帮助,将不胜感激。

****** 更新 ****** 所以我又深入挖掘了一下,至少知道问题出在哪部分。失败是因为“mount”是一个未知的“文件或目录”,这意味着在 chroot 运行的上下文点上没有可以调用的“mount”可执行文件。我猜是:

a. 在此步骤之前的阶段中,某些可执行上下文没有被带过来并被正确“预先”设置?

或者

b. 在运行此脚本之前可能需要导出一些环境属性?

或者

C。 ??

任何帮助都将不胜感激...

*********** 进一步更新 **************** 显然 Backbox 安装没有正确地扩展到 chroot 目录中。Backbox 3 是一个基于 precise(Ubuntu 12.04)的发行版,我刚刚在 precise 上运行了 debootstrap。我得到了完整的安装。

当我对 Backbox 执行相同操作时,我仅获得/dev/etc/varset up。没有其他信息,这意味着 chroot 结构中不存在“mount”。我尝试从 CD 和 CD 的本地副本(在我的文件系统上)安装它。我检查了安装 CD 上的“Release”文档,它似乎已完成,但我不明白为什么它在安装其余组件之前停止。

所以我猜想 Backbox Distro 中有些东西没有设置,无法让 debootstrap 正确地重新填充它 - 至少从 CD 发行版来看是这样。有谁知道在线档案库(相当于http://archive.ubuntu.com/ubuntu/) 来购买 Backbox 吗?如果没有,我想我的选择将是:

  1. 破解 Backbox Distro 以使其工作,有什么建议从哪里开始?

  2. 拉下 Xubuntu 发行版,然后应用 Backbox ppa...是否有可用于 debootstrap 的 Xubuntu 脚本,并且是否有人有所有 BB ppa 工具的自动安装程序链接,以便快速安装它们?

:(

答案1

在我的系统中,我尝试过的每个 Ubuntu/Backbox 都会发生这种情况。看来 CD 不能用作存储库(请参阅这里),这是有道理的:debootstrap应该需要一个存储库的路径(一些具有预定义结构的本地/远程文件夹和 .deb 档案),并且 Ubuntu/Backbox 带有一个 squashfs(基本上是一个带有基本系统的图像)。

由于 Backbox 似乎只是 Ubuntu 12.04(它使用作为软件包来源http://archive.ubuntu.com) 和一些额外的存储库,我认为您在这里有两个选择:

  1. 创建一个基本的 Ubuntu chroot,然后安装所有需要的软件:您可以提供debootstrap一个脚本来添加 PPA、安装软件等。

  2. 提取 squashfs:您需要挂载 ISO,然后在其中挂载 squashfs,最后复制根文件系统:

    sudo mount /path/to/backbox.iso <bb_mount_point>
    sudo mount -t squashfs <bb_mount_point>/casper/filesystem.squashfs <squash_mount_point>
    sudo cp -rxv <squash_mount_point> <chroot_destination>
    

我还没有尝试过其中任何一个,所以我不能向你保证任何一个都会起作用。实现此目的的有效方法还包括在虚拟机上安装 BB(你可以使用 QEMU/KVM/等),然后将根文件系统复制到你需要的地方。

祝你好运。

答案2

由于我的经验主要是使用 Debian 的 debootstrap,因此我在这里只是进行一些猜测。

  1. 您是否尝试过从 shell 手动运行有问题的命令?这通常可以让您更深入地了解正在发生的事情。

  2. 这对我来说看起来很奇怪:chroot /home/user/test/chroot mount -t proc proc /proc。/home/user/test 下真的有一个 chroot 二进制文件吗?

  3. 如果您尝试像这样指定挂载可执行文件的完整路径,会发生什么情况:chroot /home/user/test/chroot /bin/mount -t proc proc /proc

相关内容