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-]>[--]` - 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-` 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-` - `FEXGetConfig --install-prefix` Will let you find where the FEX libraries are installed. Not everyone wants to install to /usr - Optional `--app ` 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.