我已经研究过这个问题,但这里(到目前为止)的所有答案以及谷歌搜索似乎都不符合我的问题。
情况如下:
我正在运行 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 选项重做,效果也不会更好。
我所做的研究似乎表明该问题与以下因素有关:
尝试在 32 位操作系统中安装 64 位版本(我显然不会这么做)
某些内核中的 procfs 可能存在问题,但错误报告不清楚,而且这显然看起来很旧
许多虚拟化相关的问题(我没有做任何事情)
我在想,因为这是一个非常简单的将基于 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
和/var
set up。没有其他信息,这意味着 chroot 结构中不存在“mount”。我尝试从 CD 和 CD 的本地副本(在我的文件系统上)安装它。我检查了安装 CD 上的“Release”文档,它似乎已完成,但我不明白为什么它在安装其余组件之前停止。
所以我猜想 Backbox Distro 中有些东西没有设置,无法让 debootstrap 正确地重新填充它 - 至少从 CD 发行版来看是这样。有谁知道在线档案库(相当于http://archive.ubuntu.com/ubuntu/) 来购买 Backbox 吗?如果没有,我想我的选择将是:
破解 Backbox Distro 以使其工作,有什么建议从哪里开始?
拉下 Xubuntu 发行版,然后应用 Backbox ppa...是否有可用于 debootstrap 的 Xubuntu 脚本,并且是否有人有所有 BB ppa 工具的自动安装程序链接,以便快速安装它们?
:(
答案1
在我的系统中,我尝试过的每个 Ubuntu/Backbox 都会发生这种情况。看来 CD 不能用作存储库(请参阅这里),这是有道理的:debootstrap
应该需要一个存储库的路径(一些具有预定义结构的本地/远程文件夹和 .deb 档案),并且 Ubuntu/Backbox 带有一个 squashfs(基本上是一个带有基本系统的图像)。
由于 Backbox 似乎只是 Ubuntu 12.04(它使用作为软件包来源http://archive.ubuntu.com) 和一些额外的存储库,我认为您在这里有两个选择:
创建一个基本的 Ubuntu chroot,然后安装所有需要的软件:您可以提供
debootstrap
一个脚本来添加 PPA、安装软件等。提取 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,因此我在这里只是进行一些猜测。
您是否尝试过从 shell 手动运行有问题的命令?这通常可以让您更深入地了解正在发生的事情。
这对我来说看起来很奇怪:
chroot /home/user/test/chroot mount -t proc proc /proc
。/home/user/test 下真的有一个 chroot 二进制文件吗?如果您尝试像这样指定挂载可执行文件的完整路径,会发生什么情况:
chroot /home/user/test/chroot /bin/mount -t proc proc /proc
?