summary refs log tree commit diff stats
path: root/results/scraper/fex/documentation/1202
diff options
context:
space:
mode:
Diffstat (limited to 'results/scraper/fex/documentation/1202')
-rw-r--r--results/scraper/fex/documentation/120245
1 files changed, 45 insertions, 0 deletions
diff --git a/results/scraper/fex/documentation/1202 b/results/scraper/fex/documentation/1202
new file mode 100644
index 000000000..61ab04dba
--- /dev/null
+++ b/results/scraper/fex/documentation/1202
@@ -0,0 +1,45 @@
+pressure-vessel upstream requirements
+FEX needs some features in pressure-vessel in order to work correctly.

+This is because pressure-vessel messes with the real filesystem which means that FEX can't transparently hide all aspects of this.

+

+- pressure-vessel needs to check if running in a FEX environment. 

+  - Check CPUID for the CPU modelname for FEX `model name      : FEX-2108-21-ge90892a2`

+    - Format is `FEX-<YYMM[.<Minor rev>]>[-<Commits since last tag>-<CurrentCommit>]`

+    - eg: Released Tag `FEX-2108`

+    - eg: Released Tag with minor rev `FEX-2108.1`

+    - eg: Commit that isn't in a release, aka building from origin/main `FEX-2108-21-ge90892a2`

+    - eg: Future release `FEX-2109`

+    - Minor revisions haven't occured in FEX yet

+    - Always separated by dashes.

+    - `FEX-<YYMM>` will always exist, the rest are optional.

+- Once determined to be in a FEX environment, use the `FEXGetConfig` tool to find the currently configured rootfs

+  - PR #1204 Adds this configuration program.

+    - Exists since `FEX-2109` tagged revision

+  - `FEXGetConfig --current-rootfs` Returning the mounted rootfs location in the case of squashfs

+    - Or folder that the rootfs lives at if not squashfs

+  - `FEXGetConfig --current-rootfs-lock` To return the `lock` file to keep rootfs active.

+    - Necessary for new FEX instances to find the squashfs mount

+    - Will be in `/tmp/`

+  - `FEXGetConfig --current-rootfs-socket` To return the current UNIX domain socket for pipes watching

+    - Necessary to keep the FEXMountDaemon active while it tracks FEX instances

+    - Will be in `/tmp/`

+    - Only exists beggining at `FEX-2109-<X>`

+  - `FEXGetConfig --install-prefix` Will let you find where the FEX libraries are installed. Not everyone wants to install to /usr

+  - Optional `--app <Filename>` to get app profile configuration as well

+    - Usually not necessary, but future proofing will let us use this

+  - `FEXGetConfig --version` - Returns the same string as CPUID

+    - Aren't guaranteed to be running in a FEX environment without still checking CPUID. Be careful of that.

+  - Pressure-vessel should pull in $ROOTFS/usr/lib64 and $ROOTFS/usr/lib32 instead of true host folders

+    - Necessary since FEX may mount the rootfs in /tmp as squashfs or exist in ~/.fex-emu/RootFS or anywhere else

+    - Real host will not have any x86-64 or x86 libraries in the host root

+  - Also pull in $prefix/share/fex-emu/ and $prefix/lib/fex-emu/

+    - Necessary for thunk support

+    - Also need /lib/aarch64-linux-gnu/ for thunks

+  - $ROOTFS/etc?

+    - I'm not sure if this matters. 

+  - Pull in $prefix/FEXInterpreter for executing without binfmt_misc installed

+    - This can happen when testing on both an x86-64 and aarch64 host

+    - Since this is a hardlink to FEXLoader, special care might need to be taken? Not sure if a symlink to a hardlink exposes the original path or not.

+- Once in the chroot. Set `FEX_ROOTFS=''` since the new root is a true x86 environment.

+  - This will override the rootfs that FEX is using to nothing. Necessary otherwise some things break.

+  - pressure-vessel configures its rootfs in a functional way that this works.
\ No newline at end of file