blob: 61ab04dba84fd00f8906176ed72b28e5a47923d6 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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.
|