在開發過程中,我們偶爾會用到跨架構Linux容器。 ruri全稱“輕量型,用戶友好的Linux容器實現”,是一個1M左右大小的Linux容器實現,提供了一系列功能選項,致力於成為更加強大且安全的chroot命令替換。 我們以在x86_64系統下運行arm64的Ubuntu容器為例: 確認binfmt ...
在開發過程中,我們偶爾會用到跨架構Linux容器。
ruri全稱“輕量型,用戶友好的Linux容器實現”,是一個1M左右大小的Linux容器實現,提供了一系列功能選項,致力於成為更加強大且安全的chroot命令替換。
我們以在x86_64系統下運行arm64的Ubuntu容器為例:
確認binfmt_misc支持:
~$ cat /proc/filesystems | grep binfmt_misc
nodev binfmt_misc
確保能看見binfmt_misc的輸出,大多系統甚至安卓的GKI內核應該都是支持的。
安裝qemu-user-static:
sudo apt install qemu-user-static
獲取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,啟動:
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/
配置容器DNS:
最後在容器中:
rm /etc/resolv.conf
echo nameserver 114.114.114.114 > /etc/resolv.conf