Skip to content
Snippets Groups Projects
Simon McVittie's avatar
Simon McVittie authored
Previously, we assumed that if OS files on the provider are in a
location that is not /usr or a related directory, for example if the OS
has /lib/ld-linux.so.2 -> /some/odd/path/i386/ld.so, then they will
appear below the same path_in_container_ns as /usr, for example
/run/host/some/odd/path/i386/ld.so. However, nothing sets this up for
directories other than /usr, /lib*, /bin, /sbin and /etc, so it's
a bad assumption.

A previous commit handled /etc by redirecting it to /run/host/etc,
/run/parent/etc or /run/gfx/etc as appropriate, so we don't need to
worry about that here.

For the rest, assume that if they appear in the container at all,
they'll appear at a path that matches their location in the provider.
For the common case where provider = host, which is the only one where
we really need to support non-FHS layouts, this means that users can
work around lack of explicit support for a particular non-FHS directory
with something like PRESSURE_VESSEL_FILESYSTEMS_RO=/some/odd/path.

In particular, if we didn't have explicit support for /nix, NixOS users
would have been able to use that workaround to get it mounted.

Signed-off-by: default avatarSimon McVittie <smcv@collabora.com>
5bc5326a
History

steam-runtime-tools — Steam Runtime integration for the Steam client

The steam-runtime-tools library provides low-level Unix-specific tools and functionality for the Steam client, including the pressure-vessel tool that runs Steam games in containers.

To support multiple architectures (currently only i386 and x86_64 are supported), you will need to build it once for each architecture and install at least the helper tools in /usr/libexec/steam-runtime-tools-0 (the libsteam-runtime-tools-0-helpers package) for every architecture in parallel.

The helper tools are located relative to the shared library, so it's OK to bundle steam-runtime-tools alongside some other stack in this layout:

anything/
    lib/
        x86_64-linux-gnu/
            libsteam-runtime-tools-0.so.0
    libexec/
        steam-runtime-tools-0/
            i386-linux-gnu-*
            x86_64-linux-gnu-*

as long as the program that is linked to libsteam-runtime-tools-0.so.0 can find it (via a RPATH or RUNPATH or by setting the LD_LIBRARY_PATH environment variable).

pressure-vessel — putting Steam in containers

The pressure-vessel/ subdirectory of this project contains the pressure-vessel utilities, which are used by Steam's Steam Linux Runtime compatibility tool to run games in individual game-specific containers. For background on pressure-vessel and SteamLinuxRuntime, please see: