diff --git a/DEBUGGING.md b/DEBUGGING.md index ed2f4b9..f6c2d90 100644 --- a/DEBUGGING.md +++ b/DEBUGGING.md @@ -58,10 +58,68 @@ The real error was: open("/usr/lib/i386-linux-gnu/libgcrypt.so.11", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) ``` +Find missing libs: + ``` STEAMLIBS=$(find . -type f -name "*.so" -printf "%f\n" |sort -n |uniq) -find . -type f -name "*.so" -exec ldd '{}' \; |grep 'not found' |sort -n |uniq -c |grep -Ev "echo $STEAMLIBS |tr ' ' '|'" -find . -type f -name "*.so" |xargs -I@ sh -c "ldd '@' | grep -q 'libSteamValidateUserIDTickets_amd64' && echo '@'" +LD_PRELOAD=/lib/x86_64-linux-gnu/libtinfo.so.5 LD_LIBRARY_PATH="$PWD/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/lib/x86_64-linux-gnu:$PWD/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu:$PWD/.local/share/Steam/ubuntu12_32/steam-runtime/i386/lib/i386-linux-gnu:$PWD/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu" find . -type f -name "*.so" -exec ldd '{}' \; |grep 'not found' |sort -n |uniq -c |grep -Ev "echo $STEAMLIBS |tr ' ' '|'" + +echo "$LIST" | while read LIB; do echo "Looking for ${LIB} ..."; find /usr/lib/x86_64-linux-gnu /lib/x86_64-linux-gnu -xdev -type f -name "${LIB}*" -print -quit; done +``` + +``` +LD_LIBRARY_PATH="$PWD/.local/share/Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu:$PWD/.local/share/Steam/ubuntu12_32/steam-runtime/i386/usr/lib/i386-linux-gnu" find . -type f -name "*.so" |xargs -I@ sh -c "ldd '@' | grep -q 'libSteamValidateUserIDTickets_amd64' && echo '@'" +``` + +``` +$ LD_DEBUG=help cat +$ LD_DEBUG=files STEAM_DEBUG=1 LD_PRELOAD=$LD_PRELOAD steam |& grep -v 'wrong ELF class' +``` + +``` +STEAM_DEBUG=1 +STEAM_RUNTIME_PREFER_HOST_LIBRARIES=1 +STEAM_RUNTIME=1 +``` + +``` +cat /home/user/.local/share/Steam/steamdeps.txt +``` + +``` +steam --reset +``` + +> ``AL lib: (WW) alc_initconfig: Failed to initialize backend "pulse"`` + +``` +# apt -y install pulseaudio-utils alsa-utils +root@steam:/# su -l user -c "paplay /usr/share/sounds/alsa/Front_Right.wav" +root@steam:/# OK + +root@steam:/# su -l user -c "aplay /usr/share/sounds/alsa/Front_Right.wav" +ALSA lib confmisc.c:767:(parse_card) cannot find card '0' +ALSA lib conf.c:4528:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory +ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings +ALSA lib conf.c:4528:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory +ALSA lib confmisc.c:1246:(snd_func_refer) error evaluating name +ALSA lib conf.c:4528:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory +ALSA lib conf.c:5007:(snd_config_expand) Evaluate error: No such file or directory +ALSA lib pcm.c:2495:(snd_pcm_open_noupdate) Unknown PCM default +aplay: main:788: audio open error: No such file or directory + +root@steam:/# apt-get install libasound2-plugins +root@steam:/# su -l user -c "aplay -L" +null + Discard all samples (playback) or generate zero samples (capture) +pulse + PulseAudio Sound Server + +root@steam:/# su -l user -c "aplay -D pulse /usr/share/sounds/alsa/Front_Right.wav" +Playing WAVE '/usr/share/sounds/alsa/Front_Right.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono + +root@steam:/# su -l user -c "pactl list cards short" +root@steam:/# su -l user -c "pactl list sinks short" ``` diff --git a/Dockerfile b/Dockerfile index 8210f5a..734a748 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,103 +1,49 @@ -FROM debian:jessie -MAINTAINER Andrey Arapov +FROM ubuntu:bionic # To avoid problems with Dialog and curses wizards ENV DEBIAN_FRONTEND noninteractive -# 1. Keep the image updated -# 2. Install the dependencies -# 3. Install the latest version of Steam -# http://repo.steampowered.com/steam -RUN echo "deb [arch=amd64,i386] http://repo.steampowered.com/steam/ precise steam" > /etc/apt/sources.list.d/tmp-steam.list -RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0xF24AEA9FB05498B7 -RUN dpkg --add-architecture i386 -RUN apt-get update -RUN apt-get -y upgrade -RUN apt-get -y dist-upgrade -RUN apt-get -fy install -RUN apt-get -y install binutils pciutils pulseaudio libcanberra-gtk-module \ - libopenal1 libnss3 libgconf-2-4 libxss1 libnm-glib4 \ - libnm-util2 libglu1-mesa locales libsdl2-image-2.0 \ - steam-launcher \ - mesa-utils:i386 \ - libstdc++5 libstdc++5:i386 libbz2-1.0:i386 \ - libavformat56 libswscale3 libavcodec56:i386 \ - libavformat56:i386 libavresample2:i386 libavutil54:i386 \ - libswscale3:i386 libsdl2-2.0-0 libsdl2-2.0-0:i386 \ - libgl1-mesa-dri:i386 libgl1-mesa-glx:i386 libc6:i386 \ - libxtst6:i386 libxrandr2:i386 libglib2.0-0:i386 \ - libgtk2.0-0:i386 libgdk-pixbuf2.0-0:i386 libsm6:i386 \ - libice6:i386 libopenal1:i386 libdbus-glib-1-2:i386 \ - libnm-glib4:i386 libnm-util2:i386 libusb-1.0-0:i386 \ - libnss3:i386 libgconf-2-4:i386 libxss1:i386 libcurl3:i386 \ - libv8-dev:i386 \ - libcanberra-gtk-module:i386 libpulse0:i386 attr \ - libva-x11-1:amd64 libva-x11-1:i386 && \ - rm -f /etc/apt/sources.list.d/tmp-steam.list && \ - rm -rf /var/lib/apt/lists - -# Not sure whether we really need these: -# libcurl3 libcanberra-gtk-module - -# Workaround missing lib in .local/share/Steam/ubuntu12_32/steamclient.so -RUN ln -sv libudev.so.1 /lib/i386-linux-gnu/libudev.so.0 - -# Add missing symlink to make some games work (e.g. "Alien: Isolation") -RUN ln -sv librtmp.so.1 /usr/lib/x86_64-linux-gnu/librtmp.so.0 && \ - ln -sv librtmp.so.1 /usr/lib/i386-linux-gnu/librtmp.so.0 - -# Workaround: Ubuntu 16.04 doesn't have libgcrypt11 nor libjson-c3, so we take -# them from trusty -# libcryptot11 is required by Half-Life based games -# TODO: use debian mirrors if possible? -ADD http://archive.ubuntu.com/ubuntu/pool/main/libg/libgcrypt11/libgcrypt11_1.5.3-2ubuntu4_i386.deb /tmp/libgcrypt11_i386.deb -ADD http://archive.ubuntu.com/ubuntu/pool/main/libg/libgcrypt11/libgcrypt11_1.5.3-2ubuntu4_amd64.deb /tmp/libgcrypt11_amd64.deb -ADD http://ftp.de.debian.org/debian/pool/main/j/json-c/libjson-c3_0.12.1-1.1_amd64.deb /tmp/libjson-c3_amd64.deb -RUN cd /tmp && \ - dpkg -i *.deb && \ - rm -f *.deb - -# Workaround2: Steam severely floods DNS requests on Linux, so let's use a DNS cache -# (see https://github.com/ValveSoftware/steam-for-linux/issues/3401) RUN apt-get update && \ - apt-get -y install dnsmasq + apt-get -y install gnupg + +# Install Steam +RUN echo "deb [arch=amd64,i386] http://repo.steampowered.com/steam/ precise steam" | tee /etc/apt/sources.list.d/tmp-steam.list && \ + apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0xF24AEA9FB05498B7 && \ + apt-get update && \ + apt-get -y install steam-launcher && \ + rm -vf /etc/apt/sources.list.d/tmp-steam.list + +# Install Steam dependencies +RUN dpkg --add-architecture i386 && \ + apt-get update && \ + apt-get -y install libgl1-mesa-dri:i386 libgl1-mesa-glx:i386 libc6:i386 + +# Steam severely floods DNS requests on Linux, so let's use a DNS cache. +# Run docker image with: ``--dns 127.0.0.1`` flag to use the dnsmasq for DNS cache. +# https://github.com/ValveSoftware/steam-for-linux/issues/3401 +RUN apt-get -y install dnsmasq COPY ./dnsmasq.conf /etc/dnsmasq.conf -COPY ./resolv.conf /etc/resolv.dnsmasq +COPY ./resolv.dnsmasq /etc/resolv.dnsmasq -# Fix bug https://github.com/arno01/steam/issues/11 where Pulseaudio crashes -# when microphone is accessed via push-to-talk. -RUN echo "enable-shm = no" >> /etc/pulse/client.conf - -# Get newer MESA to support new GPU (graphic cards) -RUN echo "deb http://deb.debian.org/debian jessie-backports main" | tee -a /etc/apt/sources.list -RUN apt-get update -RUN apt-get -y -t jessie-backports install libegl1-mesa-drivers:amd64 libegl1-mesa-drivers:i386 libgl1-mesa-dri:amd64 libgl1-mesa-dri:i386 libgl1-mesa-glx:amd64 libgl1-mesa-glx:i386 libglapi-mesa:amd64 libglapi-mesa:i386 libegl1-mesa:amd64 libegl1-mesa:i386 libgbm1:amd64 libgbm1:i386 libopenvg1-mesa:amd64 libopenvg1-mesa:i386 libwayland-egl1-mesa:amd64 libwayland-egl1-mesa:i386 -# Proton/vulkan deps -RUN apt-get -y install python3 libvulkan1 -RUN apt-get -y autoremove - -# locale-gen: Generate locales based on /etc/locale.gen file -# update-locale: Generate config /etc/default/locale (later read by /etc/pam.d/su, /etc/pam.d/login, /etc/pam.d/polkit-1) -RUN sed -i.orig '/^# en_US.UTF-8.*/s/^#.//g' /etc/locale.gen && \ +# Set locale to: en_US.UTF-8 +RUN apt-get -y install locales && \ + sed -i.orig '/^# en_US.UTF-8.*/s/^#.//g' /etc/locale.gen && \ locale-gen && \ update-locale LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 -ENV LANG en_US.UTF-8 -ENV LC_ALL en_US.UTF-8 - -# Create a user -ENV USER user -ENV UID 1000 -ENV GROUPS audio,video -ENV HOME /home/$USER -RUN useradd -m -d $HOME -u $UID -G $GROUPS $USER - -# DEBUGGING -#RUN apt-get -y install alsa-utils mesa-utils vim less gdb strace binutils wget +# Let ALSA lib talk to Pulseaudio. +# AL lib: (WW) alc_initconfig: Failed to initialize backend "pulse" +# ALSA lib confmisc.c:768:(parse_card) cannot find card '0' +RUN apt-get -y install libasound2-plugins libasound2-plugins:i386 -WORKDIR $HOME +# Fix to: "steam launcher crashes on second run (debian sid in a chroot on debian wheezy) #3501" +# https://github.com/ValveSoftware/steam-for-linux/issues/3501 +RUN apt-get -y install libnm-glib4:i386 libnm-util2:i386 -ENV STEAM_RUNTIME 0 +# Fix to: "Fontconfig error: "/etc/fonts/conf.d/10-scale-bitmap-fonts.conf", line 72: non-double matrix element" +# https://github.com/ValveSoftware/steam-for-linux/issues/3307 +RUN apt-get -y install fontconfig:i386 +LABEL maintainer="Andrey Arapov " COPY ./launch /launch ENTRYPOINT [ "/bin/bash", "/launch" ] diff --git a/LICENSE b/LICENSE index 11239ec..d7ebd36 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2016, Andrey Arapov +Copyright (c) 2016,2017,2018, Andrey Arapov Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above diff --git a/README.md b/README.md index 1eecb13..b17db34 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,19 @@ # Steam in Docker +## Changes + +### Dec 21 2018: + +- got rid of 'wrong ELF class' messages from the logs; +- changed the base image ``debian:jessie`` to ``ubuntu:bionic``; +- significantly reduced the amount of dependencies as the image is now using + the Steam runtime; +- added ``SYS_PTRACE`` cap so Proton can show additional process traces; +- removed grsecurity support since they have [stopped](https://lwn.net/Articles/720983/) giving us the test patches; +- simplified the ``LD_LIBRARY_PATH`` routine in the launcher; +- users can now control the ``USER_ID`` via the environment variable; +- removed the old drivers support, let me know if you want it back; + ## Why? 1. I want to set-up more fences when running the code I cannot always trust nor verify; [issue 3671](https://github.com/valvesoftware/steam-for-linux/issues/3671) @@ -13,33 +27,23 @@ Games: +- Counter-Strike 1.6 - Counter-Strike: Global Offensive -- Alien: Isolation -- PAYDAY 2 -- Insurgency -- Half-Life: Counter-Strike 1.6 -- Iron Snout -- Toribash -- DeadCore (no sound) +- Call of Duty 4: Modern Warfare +- Delta Force (NovaLogic) OS: -- Linux: Ubuntu 16.04 LTS (64-bit) -- Linux: openSUSE Leap 42.1 (64-bit) +- Linux: Ubuntu 18.04.1 LTS (64-bit) HW: -- Sony Vaio Pro 13 -- Lenovo X1 Carbon - ASUS P8Z68-V PRO/GEN3 -- Apple MacBook Pro "Core i7" 2.9 15" Touch/Mid-2017 GPU: - Intel HD Graphics 3000 -- Intel HD Graphics 4400 -- NVIDIA's GeForce GTX 560 Ti -- AMD Radeon Pro 560 +- NVIDIA's GeForce GTX 1060 > For running games on AMD Radeon please uncomment ``/dev/kfd`` device in the docker-compose.yml file. @@ -52,12 +56,10 @@ GPU: ## Launching Steam in Docker -The simplest way to launch Steam is this: - ```sh -git clone https://github.com/arno01/steam.git +git clone https://git.nixaid.com/arno/steam.git cd steam -docker-compose run steam +docker-compose up ``` If Steam does not start, you may need to allow your user making connections to @@ -67,36 +69,10 @@ your X server: xhost +SI:localuser:$(id -un) ``` -You can use the following shortcut function and place it to your `~/.bash_aliases` file: - -```sh -function docker_helper() { - pushd ~/github.com/$1 - docker-compose rm -fa "$1" - docker-compose run -d --name "$1" "$@" - popd -} - -function steam() { - docker_helper "$FUNCNAME" "$@" -} -``` - -Then just use ``steam`` command to run Steam image. - -## Updating image - -Re-run this command later on in order to keep the image updated: - -```sh -cd steam/ -git pull -VERSION=$(git rev-parse HEAD | head -c8) make -``` - ## Troubleshooting -You might want to modify the `docker-compose.yml` in case of problems, the file should be pretty self explanatory, although you may refer to the official [Docker Compose file reference](https://docs.docker.com/compose/compose-file/) +You might want to modify the `docker-compose.yml` in case of problems, +the file should be pretty self explanatory, although you may refer to the official [Docker Compose file reference](https://docs.docker.com/compose/compose-file/) Also keep in mind to uncomment or/and add your devices to the `devices:` section there. @@ -108,24 +84,13 @@ If you are getting `segmentation fault` error or Steam does not start, then you docker-compose run --rm steam --reset ``` -## Grsecurity notes - -### grsec: TPE - -Trusted Path Execution (TPE) - -This Steam docker image is working with the grsecurity patched kernel. -It only needs a `/proc/sys/kernel/grsecurity/tpe_gid` accessible by root for read. +# Links -### grsec: PaX +Below is just a bunch of links, someone might find them useful. -It is also working with PaX part of the grsecurity. -I have tested it with Half-Life games like CS 1.6, and CS:GO. -Please refer to the `launch` file if grsecurity is blocking some executable or a library. +- https://github.com/ValveSoftware/steam-for-linux/issues -# Links - -Below is just bunch of links, someone might find them useful +- https://github.com/ValveSoftware/Proton/issues - https://wiki.ubuntu.com/Valve @@ -136,5 +101,3 @@ Below is just bunch of links, someone might find them useful - http://repo.steampowered.com/steam/archive/precise/steam_latest.deb - http://repo.steamstatic.com/steam/ - -- https://grsecurity.net/ diff --git a/data/README.md b/data/README.md index 212e53e..79d8bf9 100644 --- a/data/README.md +++ b/data/README.md @@ -1,4 +1,4 @@ Steam will store its data in this folder: -- .steam/ for updates, game downloads & storage. -- .local/share/Steam/ for account configuration. \ No newline at end of file +- .steam/ for updates, game downloads & storage; +- .local/share/Steam/ for account configuration; diff --git a/docker-compose.yml b/docker-compose.yml index 056f47e..c04fb99 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,33 +1,21 @@ -version: '2' +version: '3.7' services: steam: - image: andrey01/steam + init: true + hostname: steam network_mode: bridge - volumes: - - /tmp/.X11-unix:/tmp/.X11-unix:ro - - /etc/localtime:/etc/localtime:ro - - /etc/machine-id:/etc/machine-id:ro - - $XDG_RUNTIME_DIR/pulse:/run/user/1000/pulse - - ./data:/home/user - # - /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket:ro - # Ubuntu's NVIDIA driver: - - /usr/lib/nvidia-361-prime:/h1_64:ro - - /usr/lib/nvidia-340:/h2_64:ro - - /usr/lib/nvidia-340-prime:/h3_64:ro - - /usr/lib/nvidia-304:/h4_64:ro - - /usr/lib32/nvidia-361:/h5_32:ro - - /usr/lib32/nvidia-340:/h6_32:ro - - /usr/lib32/nvidia-304:/h7_32:ro - # # Ubuntu's generic libGL: - # - /usr/lib/x86_64-linux-gnu:/h8_64:ro - # - /usr/lib/i386-linux-gnu:/h9_32:ro - # openSUSE's NVIDIA driver: - - /usr/X11R6/lib:/h10_32:ro - - /usr/X11R6/lib64:/h11_64:ro - - /usr/lib:/h12_32:ro - - /usr/lib64:/h13_64:ro - dns: steam # a DNS cache is needed to avoid upstream bug https://github.com/ValveSoftware/steam-for-linux/issues/3401 + image: andrey01/steam + # DNS cache is needed to avoid resolver abuse + # https://github.com/ValveSoftware/steam-for-linux/issues/3401 + dns: 127.0.0.1 + shm_size: 4G + environment: + - DISPLAY=unix$DISPLAY + - PULSE_SERVER=unix:$XDG_RUNTIME_DIR/pulse/native + #- DBUS_SESSION_BUS_ADDRESS=unix:path=$XDG_RUNTIME_DIR/bus + - USER_ID=1000 + # - STEAM_RUNTIME=1 devices: # Common: - /dev/dri @@ -36,14 +24,25 @@ services: - /dev/nvidia0 - /dev/nvidiactl - /dev/nvidia-uvm + - /dev/nvidia-uvm-tools # NVIDIA driver >= 361: - /dev/nvidia-modeset # AMD/ATI Radeon: # - /dev/kfd - environment: - - DISPLAY=unix$DISPLAY - - PULSE_SERVER=unix:$XDG_RUNTIME_DIR/pulse/native - # Use Steam provided runtime, requires --reset - # Steam provided runtime seems to be less stable with this image - # - STEAM_RUNTIME=1 - shm_size: 4G + volumes: + - /tmp/.X11-unix:/tmp/.X11-unix:ro + - /etc/localtime:/etc/localtime:ro + - /etc/machine-id:/etc/machine-id:ro + - $XDG_RUNTIME_DIR/pulse:/run/user/1000/pulse + # - $XDG_RUNTIME_DIR/bus:/run/user/1000/bus + - ./data:/home/user + # - /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket:ro + # Location to your NVIDIA drivers: + - /usr/lib/i386-linux-gnu:/hostlibs/32:ro + - /usr/lib/x86_64-linux-gnu:/hostlibs/64:ro + # security_opt: + # - apparmor=unconfined + cap_add: + - SYS_PTRACE + # - ALL + # privileged: true diff --git a/launch b/launch index 310bf99..4181183 100644 --- a/launch +++ b/launch @@ -1,66 +1,25 @@ #!/bin/bash -# # Make errors visible upon `docker logs -f steam` command -# exec 2>&1 service dnsmasq start -# -# Befriend with grsecurity patched Linux kernel -# -# TODO: find a way how to set these attributes dynamically, -# since this currently requires a Steam restart -# when new content is obtained. -if [ -f /proc/sys/kernel/grsecurity/tpe_gid ]; then - groupadd -r -g $(cat /proc/sys/kernel/grsecurity/tpe_gid) grsec-tpe - usermod -aG grsec-tpe $USER - setfattr -n user.pax.flags -v "m" \ - /lib/i386-linux-gnu/ld-2.19.so \ - $HOME/.local/share/Steam/ubuntu12_32/steam \ - $HOME/.local/share/Steam/ubuntu12_32/steamwebhelper \ - $HOME/.local/share/Steam/ubuntu12_32/gameoverlayui \ - $HOME/.local/share/Steam/steamapps/common/Half-Life/hl_linux \ - $HOME/.local/share/Steam/steamapps/common/Counter-Strike\ Global\ Offensive\csgo_linux64 - # paxctl -c -v -m /lib/i386-linux-gnu/ld-2.19.so -fi +id user >/dev/null 2>&1 +[ $? -eq 0 ] || useradd -s /bin/bash -d /home/user -u ${USER_ID:-1000} user -# -# Add a user to a detected "video" group -# so that it can access the nvidia devices -# -if [ -e /dev/nvidiactl ]; then - GID=$(stat -c '%g' /dev/nvidiactl) - groupadd -r -g $GID nvidia1 - if [ $? -eq 0 ]; then - usermod -aG nvidia1 $USER - else - GROUP=$(stat -c '%G' /dev/nvidiactl) - usermod -aG $GROUP $USER - fi -fi +# NOTE: This workaround has been obsolete by "apt-get -y install libnm-glib4:i386 libnm-util2:i386". +# WORKAROUND to "steam launcher crashes on second run (debian sid in a chroot on debian wheezy) #3501" +# https://github.com/ValveSoftware/steam-for-linux/issues/3501 +# rm -vf ~user/.local/share/Steam/config/config.vdf -# Use libgcrypt provided by the Steam docker image (needed by HL1 engine games) -LD_PRELOAD="$LD_PRELOAD:/lib/i386-linux-gnu/libgcrypt.so.11:/lib/x86_64-linux-gnu/libgcrypt.so.11" -export LD_PRELOAD +# LD_PRELOAD=$LD_PRELOAD:$(for LIB in ${PRELOAD_LIBS:-libnvidia-glcore.so tls/libnvidia-tls.so libGLX_nvidia.so}; do find /hostlibs -type f -iregex ".*/${LIB}.*" -print0; done | tr '\0' ':' ; echo) +# su -l user -c "HOME=/home/user STEAM_RUNTIME=${STEAM_RUNTIME:-1} LD_PRELOAD=$LD_PRELOAD steam $@" |& grep -v 'wrong ELF class' -# -# Try to load host's libGL (generic or Nvidia 32/64-bit) drivers -# -LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$(echo /h{1..20}_{32,64} | tr ' ' ':')" -export LD_LIBRARY_PATH +# LD_PRELOAD does not work well when you want to use Proton (modified version of Wine created by Steam) +# When running the games with Proton, they will fail with: +# "wine: Unhandled page fault on read access to 0x00000000 at address 0xf5c1c2b6 (thread 0009), starting debugger..." +# This is due to a mix of our LD_PRELOAD and Proton's. They add ".local/share/Steam/ubuntu12_{32,64}/gameoverlayrenderer.so". -# -# In order to avoid the inconsistency error, when launching `csgo_linux64` -# Inconsistency detected by ld.so: dl-open.c: 689: _dl_open: Assertion `_dl_debug_initialize (0, args.nsid)->r_state == RT_CONSISTENT' failed! -# Hint: to find out what's wrong, use `strace` -# -# 1) Try to load host's Pulse library instead of the one from this image -export LD_PRELOAD="$LD_PRELOAD:$(find /h{1..20}_{32,64} -type f -name "*libpulsecommon*" -print0 2>/dev/null| tr '\0' ':')" - -# BUGFIX: Steam is searching for libfreeblpriv3.so in tls/ directory -ln -sv /usr/lib/x86_64-linux-gnu/nss /usr/lib/x86_64-linux-gnu/tls -ln -sv /usr/lib/i386-linux-gnu/nss /usr/lib/i386-linux-gnu/tls - -su -p user -c "steam $@" +LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/hostlibs/32:/hostlibs/64:" +su -l user -c "HOME=/home/user STEAM_RUNTIME=${STEAM_RUNTIME:-1} LD_LIBRARY_PATH=${LD_LIBRARY_PATH} steam $@" |& grep -v 'wrong ELF class' diff --git a/resolv.conf b/resolv.dnsmasq similarity index 100% rename from resolv.conf rename to resolv.dnsmasq