Chroot 到不同的架构?

Chroot 到不同的架构?

我有一个将用于 ARM 处理器的文件系统映像,但我想先在它上面安装一些东西,比如桌面等。所以我想在我的 Linux 机器上安装文件系统,并从那里对其进行 chroot,并从该系统上安装东西。这可能吗,或者 i386 和 ARM 软件之间的差异会阻止我吗?

如果可以的话我该怎么做?尝试 chroot [pathtorootfs] 会出现无法找到 bash 的错误。

答案1

您可以使用不同的架构运行软件QEMUbinfmt_misc。在具有透明支持的发行版上(例如Debian 衍生品使用binfmt-support)这相当简单:

  1. 安装binfmt-support在主系统上;
  2. qemu-user-static在主系统上安装 QEMU 的静态用户模式二进制文件(在 Debian 衍生版本上);
  3. 将适当的模拟器复制到您的 chroot 中.../usr/bin(在您的情况下,可能是qemu-arm-static);
  4. chroot进入您的系统。

这是否可取还有待商榷;它当然经常用于为小型 ARM 系统设置 SD 卡。不管你做什么,你应该绝对确保只将 ARM 二进制文件复制到你的 中chroot,除了上面的 QEMU 二进制文件;否则,一旦您用它启动 ARM 设备,您的系统将无法工作。

正如记录的那样,其他构建工具(例如debootstrap和)都很好地支持了这一点schroot例如经过伊恩·坎贝尔

答案2

这是可能的,但您需要先采取一些步骤。

显然,您的硬件本身并不支持 ARM 指令集;这意味着您需要安装一些软件,使您的系统能够解释 ARM 指令,并将它们转换为 i386 等效指令。qemu-user可以做到这一点。

接下来,您需要配置系统,以便在启动 ARM 二进制文件时,它启动正确的qemu-user二进制文件。这对于binfmt-misc子系统来说是可能的。

有关如何在 Debian 系统上执行此操作的更详细说明,请访问Debian 维基

但显然,由于仿真的原因,这会运行得相当慢;由于这个原因,这可能不值得。

答案3

不,这行不通。你必须交叉编译你想要使用的软件;看从头开始跨 Linux或者在目标体系结构/计算机上运行的系统内安装软件包并使用命令行。

相关内容