以下是使用 ruri 快速构建跨架构 chroot 容器的步骤,这里以在 x86_64 系统下运行 arm64 的 ubuntu 容器为例:
- 确认 binfmt_misc 支持:打开终端,输入
cat /proc/filesystems | grep binfmt_misc
,确保能看见binfmt_misc
的输出,大多系统甚至安卓的 gki 内核应该都是支持的。 - 安装 qemu-user-static:使用以下命令安装 qemu-user-static。
sudo apt install qemu-user-static
- 获取 rootfs:使用作者编写的 rootfstool 脚本获取 rootfs。首先克隆 rootfstool 仓库,然后进入该仓库目录并执行下载命令。
git clone https://github.com/moe-hacker/rootfstool cd rootfstool ./rootfstool download --mirror bfsu --distro ubuntu --version noble --arch arm64
这将得到一个名为rootfs.tar.xz
的文件。
- 获取 ruri 二进制:前往 https://github.com/moe-hacker/ruri/releases ,下载最新的 ruri-x86_64。例如:
wget https://github.com/moe-hacker/ruri/releases/download/v3.3/ruri-x86_64
并为其添加可执行权限:chmod 777 ruri-x86_64
- 解压 rootfs 并启动:创建一个目录用于存放 ubuntu-arm64 容器,然后解压 rootfs 到该目录,并将 qemu-aarch64-static 复制到该目录。
mkdir ubuntu-arm64 tar -xvf /path/to/rootfs.tar.xz -c ubuntu-arm64 cp /usr/bin/qemu-aarch64-static ubuntu-arm64/ sudo./ruri-x86_64 -a aarch64 -q /qemu-aarch64-static./ubuntu-arm64/
请将/path/to/rootfs.tar.xz
替换为实际的 rootfs.tar.xz 文件路径。
- 配置容器 dns:最后在容器中执行以下命令,删除原有的 resolv.conf 文件,并创建一个新的文件写入 dns 服务器地址。
rm /etc/resolv.conf echo "nameserver 114.114.114.114" > /etc/resolv.conf
完成以上步骤后,就成功地在 x86_64 系统上构建并启动了一个 arm64 的 ubuntu chroot 容器。
请注意,ruri 是一个实验性的项目,使用时需谨慎评估其安全性和稳定性,并根据实际需求进行选择。同时,确保你对相关操作有一定的了解,并遵循项目的文档和指导。在实际应用中,可能还需要根据具体情况进行调整和优化。此外,不同的操作系统和环境可能会有一些细微的差异,上述步骤仅作为一个基本的参考。如果遇到问题,可以查阅相关文档或在社区寻求帮助。