环境
操作系统:Ubuntu Kylin 优麒麟 22.04、Debian 11 Bullseye
适用架构:ARM64(飞腾、鲲鹏)、ARM32(ArmHF)
安装包
https://ryanfortner.github.io/box86-debs/
官网原文
https://ptitseb.github.io/box86/COMPILE.html
准备工作
查看 CPU 是否支持 32 位的 ARM 指令集。
lscpu
飞腾 FT-2000/4 同时支持 32 位和 64 位的 ARM 指令集。
我们可以看到,鲲鹏是纯 64 位的 ARM 指令集。这也就意味着鲲鹏处理器上不能直接安装 32 位 ARM 的操作系统。也不能直接运行 Box86。
安装一些依赖。
sudo apt install xfonts-wqy git wget zenity cabextract libcanberra-gtk-module libcanberra-gtk* locate build-essential cmake python3
64位操作系统的额外步骤
如果您在64位系统上运行本教程,您将需要遵循一些额外的步骤,以便 Box86 在您的系统上正常工作。 如果您使用 32 位操作系统并跳到下一节,则不需要这些步骤。
1.我们需要添加 32 位 ARM(armhf)作为树莓派操作系统的潜在架构。 要将这个体系结构添加到包管理器中,我们需要运行以下命令。
sudo dpkg --add-architecture armhf
2.我们的下一步是更新包存储库列表。 您可以在您的树莓皮终端中使用下面的命令更新这个列表。
sudo apt update
3.最后,我们可以安装Box86在多拱系统上运行所需的所有软件包(在我们的例子中是ARM64)。 通过运行以下命令,将所需的包安装到您的Pi中。
sudo apt install gcc-arm-linux-gnueabihf libc6:armhf libncurses5:armhf libstdc++6:armhf
特别是第一个包,我们可以在64位ARM操作系统上交叉编译“32位”代码。 在大多数情况下,Box86依靠其余的包装来正确操作。
查看架构支持。
dpkg --print-architecture; dpkg --print-foreign-architectures
Box86 for Phytium
由于大多数飞腾(D2000 或 FT-2000/4)设备运行 AARCH64 操作系统,你需要一个 armhf 多架构环境和一个 armhf gcc:
在 debian/ubuntu,安装命令
sudo apt install gcc-arm-linux-gnueabihf
还有,在 armbian 你也许需要使用命令
sudo apt install libc6-dev-armhf-cross
否则你也许会遇到一个 crt1.o 的故障,还有一些其他类似文件在链接中找不到。
克隆项目。
git clone https://github.com/ptitSeb/box86
也可以 git clone https://github.com.cnpmjs.org/ptitSeb/box86
cd box86 && mkdir build && cd build
cmake .. -DPHYTIUM=1 -DCMAKE_BUILD_TYPE=RelWithDebInfo
输出信息:
-- Found Python3: /usr/bin/python3.9 (found version "3.9.2") found components: Interpreter
-- The C compiler identification is GNU 10.2.1
-- The ASM compiler identification is GNU
-- Found assembler: /usr/bin/arm-linux-gnueabihf-gcc
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/arm-linux-gnueabihf-gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/
开始编译。我们使用“-j”参数告诉编译器使用多个处理器来编译软件。 使用“$(nproc)”我们自动将处理器的内核数量插入到命令中。
make -j$(nproc)
一旦编译器完成运行,我们就可以将 box86 仿真器安装到我们的电脑上。 运行以下命令在我们的设备上安装软件。
sudo make install
最后,我们需要重新启动 systemd-binfmt 服务。 安装 box86 后重新启动服务可以让它知道它现在可以支持的其他二进制格式。
sudo systemctl restart systemd-binfmt
测试一下
包括一些测试。它们可以用 ctest 启动,非常基础,现在不需要测试太多。
ctest
输出的结果,类似如下所示。
Test project /home/lio/dvp/box86/build
Start 1: bootSyscall
1/21 Test #1: bootSyscall ...................... Passed 0.05 sec
Start 2: bootSyscallC
2/21 Test #2: bootSyscallC ..................... Passed 0.04 sec
Start 3: printf
3/21 Test #3: printf ........................... Passed 0.04 sec
Start 4: args
4/21 Test #4: args ............................. Passed 0.04 sec
Start 5: maths1
5/21 Test #5: maths1 ........................... Passed 0.04 sec
Start 6: threadsStart
6/21 Test #6: threadsStart ..................... Passed 0.05 sec
Start 7: trig
7/21 Test #7: trig ............................. Passed 0.04 sec
Start 8: pi
8/21 Test #8: pi ............................... Passed 0.05 sec
Start 9: fork
9/21 Test #9: fork ............................. Passed 0.06 sec
Start 10: cppThreads
10/21 Test #10: cppThreads ....................... Passed 0.17 sec
Start 11: tlsData
11/21 Test #11: tlsData .......................... Passed 0.05 sec
Start 12: fpu
12/21 Test #12: fpu .............................. Passed 0.04 sec
Start 13: contexts
13/21 Test #13: contexts ......................... Passed 0.04 sec
Start 14: conditionalThreads
14/21 Test #14: conditionalThreads ............... Passed 0.05 sec
Start 15: linkingIndirectNoversion
15/21 Test #15: linkingIndirectNoversion ......... Passed 0.05 sec
Start 16: linkingIndirectVersion
16/21 Test #16: linkingIndirectVersion ........... Passed 0.05 sec
Start 17: ucomiss
17/21 Test #17: ucomiss .......................... Passed 0.05 sec
Start 18: longjumpInSignals
18/21 Test #18: longjumpInSignals ................ Passed 0.04 sec
Start 19: x87
19/21 Test #19: x87 .............................. Passed 0.04 sec
Start 20: idiv
20/21 Test #20: idiv ............................. Passed 0.04 sec
Start 21: mmx
21/21 Test #21: mmx .............................. Passed 0.05 sec
100% tests passed, 0 tests failed out of 21
Total Test time (real) = 1.11 sec
Wine
https://twisteros.com/wine.tgz
sudo apt-get install libx11-6:armhf libx11-dev:armhf libfreetype6:armhf linux-libc-dev libxcursor-dev:armhf libxi-dev:armhf libxrandr-dev:armhf libxinerama-dev:armhf libxcomposite-dev:armhf libglu1-mesa-dev:armhf libosmesa6-dev:armhf ocl-icd-opencl-dev:armhf libdbus-1-dev:armhf libv4l-dev:armhf liblcms2-dev:armhf libudev-dev:armhf libcapi20-dev:armhf libvulkan-dev:armhf libopenal-dev:armhf libmpg123-dev:armhf libgsm1-dev:armhf libhbalinux-dev:armhf nettle-dev:armhf libidn11-dev:armhf libegl1-mesa-dev:armhf libgles2-mesa-dev:armhf libxkbcommon-dev:armhf libglib2.0-0:armhf libgphoto2-6:armhf libpulse0:armhf libxml2:armhf libasound2-plugins:armhf libexpat1:armhf libx11-6:armhf libx11-dev:armhf
libbz2-1.0:armhf libdecor-0-0:armhf libdw1:armhf libfaudio0:armhf libgstreamer-plugins-base1.0-0:armhf libgstreamer1.0-0:armhf liborc-0.4-0:armhf libpcap0.8:armhf libsdl2-2.0-0:armhf libstb0:armhf libunwind8:armhf libvkd3d1:armhf libwayland-cursor0:armhf libwayland-egl1:armhf libwine:armhf libxss1:armhf
libvisual-0.4-plugins:armhf gstreamer1.0-tools:armhf gstreamer1.0-libav:armhf gstreamer1.0-plugins-bad:armhf gstreamer1.0-plugins-ugly:armhf ttf-mscorefonts-installer:armhf wine32-preloader:armhf
跨架构兼容
binfmt_misc是Linux内核说提供的一种扩展机制, 使得更多类型的文件得以成为"可执行"文件.Linux内核本身支持ELF、a.out、脚本(也就是上面所说的第一行#!指定解释器的方式)这集中"可执行文件".但它还提供了一个称为binfmt_misc的内核模块, 通过这个模块可以动态注册一些"可执行文件格式",注册之后我们就可以直接"执行"这个程序文件了.
其实上面用apt install qemu-user-static安装这个包时, 它的postinstall脚本已经在binfmt_misc中注册了相应的配置, 我们可以通过下面的方式检查一下:
lsmod | grep binfmt: 这是检查内核模块binfmt_misc是否已经加载, 有内容输出说明已经加载了.如果没有加载, 则可以用modprobe binfmt_misc来加载它(在当前的很多Linux发行版中, 一般可以通过sudo systemctl restart systemd-binfmt来启动/重启它, 修改了注册配置也可以通过这条命令来重新加载)
ls /proc/sys/fs/binfmt_misc/: 这是检查内核中目前注册了哪些格式(register和status这两个除外)
cat /proc/sys/fs/binfmt_misc/qemu-i386: 这是在检查我们所关心的与qemu-i386相关的配置, 从输出中可以看到, 对于以7f454c4601010100000000000000000002000300开头的文件, 可以调用/usr/bin/qemu-i386-static来执行(各字段的详细解释可以参见binfmt_misc - Wikipedia)
xxd fzf-0.16.3-linux_386 | head -2: 这是检查一下我们所想运行的程序文件的开头几个字节是怎样的, 从输出可以看出, 它与上面所注册的信息是匹配的
./fzf-0.16.3-linux_386 -h: 这是直接运行了这个i386程序, 可以看到它能够正确打印出帮助信息
本教程将使用 debootstrap Debian Buster Armhf 作为 chroot 的基础。关键字是“Arm64”支持“Armhf”,因此您不需要使用 QEMU 或 Binfmt_misc,因为它非常慢。
在树莓Pi上编译x86仿真器
现在我们已经准备了树莓Pi来编译box86,我们现在可以继续了。 在我们的设备上编译x86仿真器相对简单,因为我们已经有了所需的包。
1.首先,进入我们克隆box86代码的目录。 您可以通过运行以下命令来实现这一点。
cd ~/box86
2.我们需要创建一个额外的目录,编译器将在其中存储box86版本。 运行以下两个命令来创建 “build
”目录,然后将其更改为。
mkdir build && cd build
3.在这个目录中,我们可以准备box86仿真器在我们的树莓Pi上编译。 我们通过使用之前安装的cmake包来实现这一点。 此命令在您是为树莓Pi 2、3还是4编译x86仿真器时略有不同。 在树莓Pi 4上生成生成文件 如果您在32位操作系统上运行此程序,请使用以下命令。
cmake .. -DRPI4=1 -DCMAKE_BUILD_TYPE=RelWithDebInfo
您也可以使用下面的命令在64位操作系统上编译该软件。
cmake .. -DRPI4ARM64=1 -DCMAKE_BUILD_TYPE=RelWithDebInfo
虽然box86确实支持树莓Pi 1和Zero,但由于缺乏对动态重新编译程序的支持,不值得在这些设备上使用。
4.CMake现在将生成makefile,在我们的树莓Pi上编译box86软件。 我们可以使用这个文件来编译我们的树莓Pi上的x86仿真器,方法是使用下面的命令。
make -j$(nproc)
我们使用“-j”参数告诉编译器使用多个处理器来编译软件。 使用“$(nproc)”我们自动将处理器的内核数量插入到命令中。
5.一旦编译器完成运行,我们就可以将box86仿真器安装到我们的树莓Pi上。 运行以下命令在我们的设备上安装软件。
sudo make install
6.最后,我们需要重新启动 systemd-binfmt 服务。 安装 box86 后重新启动服务可以让它知道它现在可以支持的其他二进制格式。
sudo systemctl restart systemd-binfmt
如果您在运行此命令时遇到错误,请尝试重新启动您的树莓派。
sudo reboot
SChRoot 和 DeBootStrap
查看内核模块。
zcat /proc/config.gz | grep BINFMT_MISC
schroot 使得用户可以在不同的 chroot 下执行交互命令。
DeBootStrap 请查看《Debian 安装工具 Debootstrap 简介》https://my.oschina.net/chipo/blog/4318218
1. 下载 armhf 架构的系统
sudo apt install schroot debootstrap binfmt-support
sudo mkdir -p /armhf
Debian 系统
sudo debootstrap --arch armhf --foreign bullseye /armhf http://mirrors.tuna.tsinghua.edu.cn/debian
优麒麟 系统
sudo debootstrap --arch armhf --foreign jammy /armhf http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports
sudo chroot "/armhf"
/debootstrap/debootstrap --second-stage
sudo mkdir -p /armhf/usr/bin
sudo cp "$(which qemu-aarch64-static)" /armhf/usr/bin
sudo chroot /armhf /debootstrap/debootstrap --second-stage
sudo rm -f "$root_filesystem"
2. Then add a config file for debian-armhf:
sudo nano /etc/schroot/chroot.d/debian-armhf.conf
Copy paste this code, and change <username> into your computer username
[debian-armhf] description=Debian Armhf chroot aliases=debian-armhf type=directory directory=/srv/chroot/debian-armhf profile=desktop personality=linux preserve-environment=true root-users=<username> users=<username>
3. Then edit the nssdatabases
sudo nano /etc/schroot/desktop/nssdatabases
copy paste this code
# System databases to copy into the chroot from the host system. # # <database name> #passwd shadow #group gshadow services protocols #networks #hosts #user
4. Edit the stateoverride, and change the first contrab to root
sudo nano /srv/chroot/debian-armhf/var/lib/dpkg/statoverride
copy paste this code
root root 2755 /usr/bin/crontab
5. Now you should be able to schroot by typing
sudo schroot -c debian-armhf
6. edit the bashrc
nano ~/.bashrc
add this code to the bottom of the line
export LANGUAGE="C"
export LC_ALL="C"
export DISPLAY=:0
7. let's restart chroot environment by exit and login again, then add a username that is similar to your main system username
exit id sudo schroot -c debian-armhf adduser <username> su - <username>
then again add bashrc
nano ~/.bashrc
again add this code to the bottom of the line
export LANGUAGE="C"
export LC_ALL="C"
export DISPLAY=:0
8. Then restart chroot by double exit and login again, then install the following package
exit
exit
sudo schroot -c debian-armhf
apt update && apt upgrade
apt install git wget cmake build-essential python3
apt install gcc-arm-linux-gnueabihf
9. Now let's compile the Box86 within Chroot environment
git clone https://github.com/ptitSeb/box86
cd box86
mkdir build; cd build; cmake .. -DARM_DYNAREC=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo; make
exit
10. Now login to chroot again then download wine from twisteros: https://twisteros.com/wine.tgz then extract it to your home folder. Your extracted wine location should be in: ~/wine/bin/wine
sudo schroot -c debian-armhf
wget https://twisteros.com/wine.tgz
tar zxvf wine.tgz
11. Install Zenity in chroot environment, as wine will not have window without it:
apt install zenity
12. Exit from chroot environment by typing
exit
13. To install a windows app, in this case sketchup 7.1 and 8 you can download it from: http://www.oldversion.com/windows/google-sketchup/ then type:
schroot -c debian-armhf ~/box86/build/box86 ~/wine/bin/wine 'your/installation/folder/It/is/better/to/drag/and/drop/the/installer'
14. To run the installed program you can type this or make it as a shortcut from desktop launcher:
schroot -c debian-armhf ~/box86/build/box86 ~/wine/bin/wine your/installed/program/location
and here's my final sketchup running smoothly on LLVM Pipe Graphics. I also attached the Box86 running on Manjaro Arm with the good performance as well for addition.
To be honest, I didn't expect the performance to be this good. It almost remind me of "Rosetta 2" of Apple Silicon, but it is open source.
Big respect for PtitSeb for bringing this magic to the Arm64 World. I also want to thanks to Xabbu and Lolix from Manjaro Forum to help me figuring out the chroot environment in my older Manjaro Forum Post.
Hope that helps,
Many Thanks,
rna
UPDATE 1
*IMPORTANT NOTE:
To fix Sketchup 7/8 OpenGL Display Error:
You have to edit the wine regedit and change the sketchup display setting from "0" to "1"
- Open Sketchup then close
- Open terminal then run regedit by typing:
schroot -c debian-armhf ~/box86/build/box86 ~/wine/bin/wine regedit
- Then find:
HKEY_CURRENT_USER\Software\Google\SketchUp7\GLConfig\Display
- Then change the “HW_OK” from “0” to “1”
- Then close your regedit
- Then open Sketchup 7/8. Now you should be ok.
UPDATE 2
you can also follow the Box86 compatibility list here:
https://github.com/ptitSeb/box86-compatibility-list/issues
You can also use winetricks to install some dependency, like .NET 4.0 as detailed by WheezyE here:
https://github.com/ptitSeb/box86-compatibility-list/issues/46
In fact, by using WheezyE method I was able to install all depencencies to install sketchup 2014 successfully from winetricks in Armbian Reforge (Just to let you know that Armbian Reforge is embedded with Box86 by default).
However, at the moment winetricks does not works in our chroot method. Therefore, Help would be appreciated.
BONUS:
For those of you that desperately want to install blender 2.79 on Armbian Focal / Manjaro, you can use this method.
Open terminal, then type:
sudo schroot -c debian-armhf
apt install blender
exit
Now to open blender, you can use this command (you can also make launcher):
schroot -c debian-armhf blender
Now Blender 2.79b should run perfectly on you system
跨架构编译
以下是 Manjaro Arm 论坛上的报告:
在chroot环境中测试 Wine 需要时间。我没有那种奢侈。所以也许有人能帮我们测试一下。我会把我到目前为止所做的贴出来。如果你完全照我做的做。你不需要给自己找麻烦。 重要注意事项: 我测试过:
- Debian Stretch x86 and x86_64
- Debian Buster x86 and x86_64
- Ubuntu Bionic x86 and x86_64
- Ubuntu Focal x86 and x86_64
我要强调的是,你应该坚持使用Ubuntu Bionic x86_64,因为它最有效,而且大多数 winetricks 都有效。但对某些人来说却不是。但它比我测试的其他部分要好。 好了,我们开始吧:
准备工作:
在我们开始之前,确保Binfmt_misc已经在您的内核中编译了。如果不是,则不能继续此过程。
$ zcat /proc/config.gz | grep BINFMT_MISC
确保你已经安装了base-devel包,感谢@Lolix指出来:
$ sudo pacman -Syyu base-devel --needed
Now Let's install the required package first:
$ yay -S qemu-user-static schroot debootstrap
Now let's install the configuration file for qemu, Thanks to @xabbu for the fix.
$ wget https://raw.githubusercontent.com/qemu/qemu/master/scripts/qemu-binfmt-conf.sh
$ sudo bash qemu-binfmt-conf.sh --systemd i386
$ sudo bash qemu-binfmt-conf.sh --systemd x86_64
$ ls /etc/binfmt.d/
Make sure that you got two files in the folder /etc/binfmt.d/
qemu-i386.conf
qemu-x86_64.conf
Now let's check the status:
$ /usr/lib/systemd/systemd-binfmt --cat-config --no-pager
Now let's edit the qemu-i386.conf because the config is not correct:
$ sudo nano /etc/binfmt.d/qemu-i386.conf
Now replace nearly at the end of the line :/usr/local/bin/qemu-i386: with :/usr/bin/qemu-i386-static:
Then ctrl+x, yes and save
We have to edit the qemu-x86_64.conf as well:
$ sudo nano /etc/binfmt.d/qemu-x86_64.conf
Now replace nearly at the end of the line :/usr/local/bin/qemu-x86_64: with :/usr/bin/qemu-x86_64-static:
Then ctrl+x, yes and save
Now let's restart and check our binfmt status:
$ systemctl restart systemd-binfmt
$ systemctl status systemd-binfmt --no-pager
INSTALLING UBUNTU BIONIC x86_64 (DEBOOTSTRAP)
If you follow step by step the procedure above, then you should be OK to run the following step. If not, go back to the Preparation procedure:
In this procedure we will debootstrap the ubuntu bionic x86_64 in the folder /srv/chroot/ubuntu-x64. If you deviate from this, then you are on your own. You will get trouble when installing winetricks, etc. As I mentioned earliar. At the moment I am writing this, ubuntu bionic x86_64 is the best option:
$ sudo mkdir /srv/chroot/ubuntu-x64
$ sudo debootstrap --arch amd64 --foreign bionic /srv/chroot/ubuntu-x64 http://archive.ubuntu.com/ubuntu/
$ sudo cp /usr/bin/qemu-i386-static /srv/chroot/ubuntu-x64/usr/bin
$ sudo cp /usr/bin/qemu-x86_64-static /srv/chroot/ubuntu-x64/usr/bin
$ sudo chroot "/srv/chroot/ubuntu-x64" /debootstrap/debootstrap --second-stage
If everything runs smoothly, then let's continue:
$ sudo nano /etc/schroot/chroot.d/ubuntu-x64.conf
Now add this following text, change username with your own user name:
[ubuntu-x64]
description=Ubuntu Bionic x86_64 chroot
aliases=ubuntu-x64
type=directory
directory=/srv/chroot/ubuntu-x64
profile=desktop
personality=linux
preserve-environment=true
root-users=<username>
users=<username>
Then ctrl+x, yes and save
Now lets fix the database issue:
$ sudo nano /etc/schroot/desktop/nssdatabases
then put # in font of networks, group, passwd and add #user. It should look like this:
# System databases to copy into the chroot from the host system.
#
# <database name>
#passwd
shadow
#group
gshadow
services
protocols
#networks
#hosts
#user
Then ctrl+x, yes and save
Now let's fix the stateoverride issue:
$ sudo nano /srv/chroot/ubuntu-x64/var/lib/dpkg/statoverride
change the first crontab and the first messagebus with root, it should look like this:
root root 2755 /usr/bin/crontab
root root 4754 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
Then ctrl+x, yes and save
Now, you can start chrooting into ubuntu:
$ sudo schroot -c ubuntu-x64
$ cd
$ sudo apt install nano
$ sudo nano ~/.bashrc
then add this line in the bottom:
export LANGUAGE=”C”
export LC_ALL=”C”
export DISPLAY=:0
Then ctrl+x, yes and save
Now let's restart our chroot, by exit
$ exit
INSTALL UBUNTU REPOSITORY (INSIDE CHROOT ENVIRONMENT):
$ sudo schroot -c ubuntu-x64
$ cd
$ sudo apt install software-properties-common wget build-essential
$ sudo add-apt-repository universe
$ sudo add-apt-repository multiverse
$ sudo add-apt-repository restricted
$ sudo apt update && sudo apt upgrade
$ exit
INSTALL WINE & WINETRICKS (INSIDE CHROOT ENVIRONMENT):
$ sudo schroot -c ubuntu-x64
$ cd
$ sudo dpkg --add-architecture i386
$ sudo apt update
$ sudo apt install libxml2-dev:i386
$ sudo apt install wine-development
$ wine --version
$ sudo apt install winetricks
$ sudo apt install zenity
$ sudo apt install winbind
$ sudo apt install nemo
$ exit
INSTALL PLAYONLINUX (INSIDE CHROOT ENVIRONMENT):
$ sudo schroot -c ubuntu-x64
$ cd
$ wget -q "http://deb.playonlinux.com/public.gpg" -O- | sudo apt-key add -
$ sudo wget http://deb.playonlinux.com/playonlinux_bionic.list -O /etc/apt/sources.list.d/playonlinux.list
$ sudo apt update
$ sudo apt install playonlinux
$ exit
Now let's check our ID first:
$ id
ADDING A USER (INSIDE CHROOT ENVIRONMENT):
$ sudo schroot -c ubuntu-x64
$ adduser <username>
$ su - <username>
$ nano ~/.bashrc
add this text in the bottom:
export LANGUAGE=”C”
export LC_ALL=”C”
export DISPLAY=:0
Then ctrl+x, yes and save
Now let's exit:
$ exit
CONFIGURING WINE & WINETRICKS (INSIDE CHROOT ENVIRONMENT):
$ sudo schroot -c ubuntu-x64
$ su - <username>
$ winecfg
$ winetricks
$ exit
INSTALLING .deb Package (INSIDE CHROOT ENVIRONMENT):
$ sudo schroot -c ubuntu-x64
$ sudo dpkg -i <the-location-of-the-deb-package>
$ exit
Once you are done, you can create a shortcut in the desktop running as your username
Nemo Launcher
schroot -c ubuntu-x64 nemo
Other apps:
schroot -c ubuntu-x64 /opt/the/location/of/your/app
With this process, now you should be able to run x86_64 *.deb and install a wine app.
WARNING:
Follow the procedure step by step. Other wise you'll get into trouble.
Hope this might help somebody out there.
Thanks to @Lolix and @xabbu for helping.
I also urge you to post your result with wine to help other.
Many Thanks,
RNA
参考文献
《Install Box86 on Arm64》https://forum.armbian.com/topic/16584-install-box86-on-arm64/
《使你的 ARM Linux系统(Aarch64)兼容Win32软件(通过Wine i386)》https://zhuanlan.zhihu.com/p/377436448
https://wiki.ubuntu.com/ARM/RootfsFromScratch/QemuDebootstrap
《如何将根目录转换为具有不同架构的文件系统?》https://qastack.cn/unix/41889/how-can-i-chroot-into-a-filesystem-with-a-different-architechture
https://qastack.cn/ubuntu/928249/how-to-run-armhf-executables-on-an-arm64-system