gpt4 book ai didi

linux - chroot 进入其他 arch 的环境

转载 作者:太空狗 更新时间:2023-10-29 12:36:00 24 4
gpt4 key购买 nike

Linux from Scratch 之后我已经成功地为 ARM 构建了一个工具链一只 ARM 。这是本书的第 6 章,在 ARM 板本身上我可以毫无问题地继续下去。我的问题是我是否可以使用准备好的环境在我的 x86_64 Fedora 16 笔记本电脑上继续构建第 6 章的软件?我认为虽然我已经设置了所有二进制文件,但我可以将它们复制到笔记本电脑,在里面进行 chroot 并感觉自己在 ARM 板上,但是使用书中的命令没有结果:

 `# chroot "$LFS" /tools/bin/env -i  HOME=/root TERM="$TERM" PS1='\u:\w\$ 
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin /tools/bin/bash --login +h
chroot: failed to run command `/tools/bin/env': No such file or directory`

二进制文件在那里,但它不属于这个系统:

 `# ldd /tools/bin/env 
not a dynamic executable`

二进制文件是按照书上的编译的: #readelf -l/tools/bin/env | grep 解释器
[请求程序解释器:/tools/lib/ld-linux.so.3]

所以我想知道是否有一种方法,比如为 CC LD READELF 使用适当的环境变量,继续在 x86_64 主机上使用这些工具为 ARM 构建。

谢谢。

最佳答案

是的,您当然可以 chroot 到 x86 机器上的 ARM rootfs。

基本上,像这样:

$ sudo chroot /path/to/arm/rootfs /bin/sh
sh-4.3# ls --version 2>&1 | head
/bin/ls: unrecognized option '--version'
BusyBox v1.22.1 (2017-03-02 15:41:43 CST) multi-call binary.

Usage: ls [-1AaCxdLHRFplinsehrSXvctu] [-w WIDTH] [FILE]...

List directory contents

-1 One column output
-a Include entries which start with .
-A Like -a, but exclude . and ..
sh-4.3# ls
bin css dev home media proc sbin usr wav
boot data etc lib mnt qemu-arm sys var

我的 rootfs 是用于小型嵌入式设备的,所以一切都是基于 BusyBox 的。

这是如何运作的?首先,我在内核中运行了 binfmt-misc 支持。我什么都不用做;它随 Ubuntu 18 一起提供。当内核看到 ARM 二进制文件时,它会将其交给注册的解释器 /usr/bin/qemu-arm-static

在我的 rootfs 中找到了一个同名的静态可执行文件:

sh-4.3# ls /usr/bin/q*
/usr/bin/qemu-arm-static

我是从 Ubuntu 软件包中获取的。我安装了:

$ apt-get install qemu-user-static

然后将/usr/bin/qemu-arm-static复制到rootfs树的usr/bin子目录中。

就是这样;现在我可以 chroot 进入那个 rootfs,甚至不用在 chroot 命令行上提到 QEMU。

关于linux - chroot 进入其他 arch 的环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11422189/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com