FEX/docs/Readme_CN.md
Ryan Houdek cc7fb008fc New domain.
Needed to fix FEXRootFSFetcher from #1967
2022-09-02 10:43:07 -07:00

74 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[English](https://github.com/FEX-Emu/FEX/blob/main/Readme.md)
# FEX —— 快速的x86模拟器前端
FEX和qemu-user以及box86类似允许你在AArch64的host端运行x86和x86-64二进制程序。
FEX原生支持rootfs作为guest程序的运行环境所以无需使用chroot。同时支持thunklibs将guest程序所用到的库转发到host例如libGL。
FEX为guest程序提供Linux 5.0的接口系统调用同时支持AArch64和x86-64做为host。
FEX处于重度开发阶段所以会有很多改善。
## 快速指引
### Ubuntu 20.04, 21.04, 21.10, 22.04
在终端执行以下命令添加PPA去安装FEX。
`curl --silent https://raw.githubusercontent.com/FEX-Emu/FEX/main/Scripts/InstallFEX.py --output /tmp/InstallFEX.py && python3 /tmp/InstallFEX.py && rm /tmp/InstallFEX.py`
这条命令将会引导你通过PPA安装FEX然后下载FEX所需的RootFS。
Ubuntu下的PPA 随FEX月度发布更新。
### 其他系统
参考[这里](https://wiki.fex-emu.com/index.php/QuickStartGuide)
## 开始
FEX在ARMv8.0ARMv8.1+和x86-64(支持AVX或更新处理器)硬件上进行过编译和运行测试。
不支持ARMv7以及老旧的x86处理器。
同时需要确保操作系统为Linux。FEX在Ubuntu 20.0420.10和21.04以及Arch Linux上测试过。
在AArch64 host端用户需要准备x86-64 RootFS[创建RootFS](#RootFS-Generation)。
### 源码导览
详见[源码大纲](docs/SourceOutline.md)。
### 编译依赖
* cmake (version 3.14 minimum)
* ninja-build
* clang (version 10 minimum for C++20)
* libglfw3-dev (For GUI)
* libsdl2-dev (For GUI)
* libepoxy-dev (For GUI)
* g++-x86-64-linux-gnu (For building thunks)
* nasm (only if building tests)
### 编译FEX
安装完依赖后,通过以下命令进行编译。
```Shell
git clone https://github.com/FEX-Emu/FEX.git
cd FEX
git submodule update --init
mkdir Build
cd Build
CC=clang CXX=clang++ cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DENABLE_LTO=True -DBUILD_TESTS=False -G Ninja ..
ninja
```
### 安装
```Shell
sudo ninja install
```
### 关于AArch64 Hosts
在AArch64使用binfmt_misc执行下述命令可以支持32位和64位x86程序直接运行。如果已经安装了box86 binfmt_misc配置在FEX达到可用状态前我并不建议安装FEX进行替代。请确保install命令在下述命令前执行不然binfmt_misc将依旧使用旧版本的FEX即使FEX已经更新。
```Shell
sudo ninja binfmt_misc_32
sudo ninja binfmt_misc_64
```
### 更多信息
更多关于FEX和平台相关的设置信息请参考以下维基页面
https://wiki.fex-emu.com/index.php/Development:Setting_up_FEX
### 创建RootFS
AArch64 host端需要一个rootfs去运行guest程序。参考以下维基页面从头开始创建一个rootfs
https://wiki.fex-emu.com/index.php/Development:Setting_up_RootFS
![FEX diagram](Diagram.svg)