Jump to content
Read the Funtoo Newsletter: Summer 2023 ×
  • 0

Renamed to Issues with Steam, Xorg, PulseAudio, and Docker


lazlo.vii

Question

Because my motherboard is so new I chose to use the non-lts version of debian-sources.  When I installed docker just now I received these warnings:

 

* Messages for package app-emulation/docker-18.09.6_p20190604:
	 *   CONFIG_NF_NAT_IPV4:         is not set when it should be.
 *   CONFIG_NF_NAT_NEEDED:       is not set when it should be.
 *   CONFIG_MEMCG_SWAP_ENABLED:  is not set when it should be.
 *   CONFIG_IOSCHED_CFQ: is optional for container statistics gathering
 *   CONFIG_CFQ_GROUP_IOSCHED:   is not set when it should be.
 *   CONFIG_CGROUP_HUGETLB:      is not set when it should be.
 *   CONFIG_RT_GROUP_SCHED:      is not set when it should be.
 * Please check to make sure these options are set correctly.
 * Failure to do so may cause unexpected problems.

Is this worthy of a bug report or is it something I can safely ignore?

Link to comment
Share on other sites

23 answers to this question

Recommended Posts

  • 0

This is Docker's way of asking you to set some kernel variables.  It has been a while since I set up Docker, so my memory of Docker's required kernel variables is a little hazy.

You will need to research those and most likely configure them (in /etc/sysctl.conf or similar).  I think some of them are required for Docker to work properly.

Link to comment
Share on other sites

  • 0

4.19.67_p2-r1-debian-sources-lts Seems to missing a few things by default as well:

>>> Emerging (1 of 1) app-emulation/docker-18.09.6_p20190604::nokit
 * docker-18.09.6_p20190604.tar.gz BLAKE2B SHA512 size ? ...                                                                                                        [ ok ]
 * Determining the location of the kernel source code
 * Found kernel source directory:
 *     /usr/src/linux
 * Found sources for kernel version:
 *     4.19.67_p2-r1-debian-sources-lts
 * Checking for suitable kernel configuration options...
 *   CONFIG_MEMCG_SWAP_ENABLED:  is not set when it should be.
 *   CONFIG_CGROUP_HUGETLB:      is not set when it should be.
 *   CONFIG_RT_GROUP_SCHED:      is not set when it should be.

 

I can get the steam container to play sound as demonstrated in the install guide, but I cannot get it initialize a display. 

My two of my display device files show slightly different properties from those listing in the install guide.  I have:

 ls /dev/nvidia* -l
crw-rw-rw- 1 root root 195, 254 Oct 28 20:34 /dev/nvidia-modeset
crw-rw-rw- 1 root root 240,   0 Oct 28 20:34 /dev/nvidia-uvm
crw-rw-rw- 1 root root 240,   1 Oct 28 20:34 /dev/nvidia-uvm-tools
crw-rw-rw- 1 root root 195,   0 Oct 28 20:34 /dev/nvidia0
crw-rw-rw- 1 root root 195, 255 Oct 28 20:34 /dev/nvidiactl

Instead of:

ls /dev/nvidia* -l
crw-rw-rw- 1 root root 195, 254 Oct 23 10:09 /dev/nvidia-modeset
crw-rw-rw- 1 root root 239,   0 Oct 23 10:09 /dev/nvidia-uvm
crw-rw-rw- 1 root root 239,   1 Oct 23 10:09 /dev/nvidia-uvm-tools
crw-rw-rw- 1 root root 195,   0 Oct 23 10:08 /dev/nvidia0
crw-rw-rw- 1 root root 195, 255 Oct 23 10:08 /dev/nvidiactl

Notice that two of my devices have "240" instead of "239" and, no, I do not know what that means. Maybe I messed up when editing /etc/modprobe.d/nvidia.conf?

alias char-major-195 nvidia NVreg_DeviceFileMode=0666
alias /dev/nvidiactl char-major-195 NVreg_DeviceFileMode=0666

I can run "nvidia-container-cli info" and get the following output:

$ nvidia-container-cli info
NVRM version:   435.21
CUDA version:   10.1
	Device Index:   0
Device Minor:   0
Model:          GeForce RTX 2070
Brand:          GeForce
GPU UUID:       GPU-889ae3f3-3add-9960-c0a2-f961e55a797c
Bus Location:   00000000:08:00.0
Architecture:   7.5

Honestly, I am not sure if this is a kernel configuration issue or if it's somewhere else in the system. 

EDIT:  It might help I showed the actual out put from the container, huh?

	$ ./steam-nvidia-launcher
 * Funtoo Steam NVIDIA Launcher 1.3
	 * Allowing local connections to your X session.
 * Found container...
 * Starting container...
 * Here we go! Press ^C when you're done gaming to stop steam.
	 * There may be up to a 10-second delay while Steam starts and
   authenticates your account.
	 * Steam begins...
	
ILocalize::AddFile() failed to load file "public/steambootstrapper_english.txt".
[2019-10-29 02:12:29] Startup - updater built Nov 23 2016 01:05:42
No protocol specified
../steamexe/updateui_xwin.cpp (339) : Assertion Failed: Could not open connection to X
sh: 1: /home/steam/.steam/root/steam_msg.sh: not found
../steamexe/main.cpp (525) : Assertion Failed: failed to initialize update status ui, or create initial window
tar: This does not look like a tar archive
xz: (stdin): File format not recognized
tar: Child returned status 1
tar: Error is not recoverable: exiting now
find: '/home/steam/.steam/ubuntu12_32/steam-runtime': No such file or directory
^Csteam: no process found
	 * Steam command complete; stopping container...
 * Done.

Link to comment
Share on other sites

  • 0
58 minutes ago, drobbins said:

With the steam container running, use the launcher with the "attach" option to connect to a shell inside the container and try running "glxgears", and debug from there. There is info on the Steam page on the wiki on how to do this.

I tried it last night.  It cannot open the display:

oot@2b739c474a3e:/# glxgears
No protocol specified
Error: couldn't open display :0

Is there anything else I should be trying? 

Link to comment
Share on other sites

  • 0

This is from dmesg on the host.  The block of messages below repeats as long as the steam-nvidia-launcher is active:

[53909.798612] systemd-logind[23]: Failed to start user slice user-1000.slice, ignoring: Launch helper exited with unknown return code 1 (org.freedesktop.DBus.Error.Spawn.ChildExited)                                                                             
[53909.801133] systemd-logind[23]: Failed to start user service, ignoring: Launch helper exited with unknown return code 1
[53909.803728] systemd-logind[23]: Failed to start session scope session-1.scope: Launch helper exited with unknown return code 1
[53911.689537] systemd-logind[23]: Failed to start user service, ignoring: Launch helper exited with unknown return code 1
[53911.692124] systemd-logind[23]: Failed to start session scope session-1.scope: Launch helper exited with unknown return code 1
[53911.695034] systemd-logind[23]: Failed to stop user service: Launch helper exited with unknown return code 1
[53911.697568] systemd-logind[23]: Failed to stop user slice: Launch helper exited with unknown return code 1
[53911.719384] systemd-logind[23]: Attempted to remove disk file system, and we can't allow that.
[53911.719401] systemd-logind[23]: Failed to remove runtime directory /run/user/1000 (after unmounting): Operation not permitted

Link to comment
Share on other sites

  • 0

This is from inside the docker container, looking at the display hardware:

root@2b739c474a3e:/# ls -al /dev/nvi*
crw-rw-rw- 1 root root 195, 254 Oct 29 01:34 /dev/nvidia-modeset
crw-rw-rw- 1 root root 240,   0 Oct 29 01:34 /dev/nvidia-uvm
crw-rw-rw- 1 root root 240,   1 Oct 29 01:34 /dev/nvidia-uvm-tools
crw-rw-rw- 1 root root 195,   0 Oct 29 01:34 /dev/nvidia0
crw-rw-rw- 1 root root 195, 255 Oct 29 01:34 /dev/nvidiactl
root@2b739c474a3e:/# ls /dev/dri
card0  renderD128
root@2b739c474a3e:/# lspci | grep VGA
08:00.0 VGA compatible controller: NVIDIA Corporation Device 1f02 (rev a1)

Link to comment
Share on other sites

  • 0

OK, I made a huge step forward.  The display couldn't be opened and I was reminded of errors I had seen while learning how to use x11vnc.  That problem was caused because x11vnc couldn't find a valid .Xauthority file.  So while trying to find a way to pass the tell glxgears to use a valid .Xauthority file I found this question and answer on askubuntu.com:

 

https://askubuntu.com/questions/827070/cant-run-glxgears-in-root-on-lxc-2-0-container

 

I passed my user account xauth into the steam container's root account I was able to run glxgears as root.

On host do:

$ xauth list
your-host-name/unix:0  MIT-MAGIC-COOKIE-1  <Image a long hexadecimal string here>

After starting the container and attaching to it:

# xauth add $DISPLAY . <The long hexadecimal string from you host goes here>

Now glxgears runs as root.  But steam still couldn't open a display. So inside the container:

# su steam
	$ xauth add $DISPLAY .  <The long hexadecimal string from your host goes here>

At this point Steam should begin to install.  I have a lot...a whole lot of windows spamming my desktop telling that these libraries are missing and that Steam might fail to run:

Error: You are missing the following 32-bit libraries, and Steam may not run:
libXtst.so.6
libpulse.so.0
libva.so.1
libbz2.so.1.0
libvdpau.so.1
libva.so.1
libva-x11.so.1

But Steam did run and I was able to login, install Euro Truck Simulator 2 and play it.  Without sound.  No sound in game and no sound in the Steam client.  Even the movies in the Steam store were silent.  But it did run and the frame rates was exactly what I expected them to be.  The systemd-logind spam also stopped apearring in dmesg at this point.

Just to be sure I double check that pulseaudio was giving me output in the container using "pacat -vvvv /dev/urandom" and it worked for both root and steam users.  So that is where I am at now.  I need food and rest so I will be back later.

Link to comment
Share on other sites

  • 0

A bit more info about things that do not work as expected:

 

Trying to launch any game the using Steam Play, A.K.A. Proton, A.K.A. Steam's fork of WINE will cause a segfault in vgui2_s.so

 

Steam seems to trying to use ALSA as it's audio backend.  Here is a bit of /home/steam/.steam/error.log:

AL lib: (WW) alc_initconfig: Failed to initialize backend "pulse"
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
AL lib: (EE) ALCplaybackAlsa_open: Could not open playback device 'default': No such file or directory

That is added to the log every time I launch Euro Truck Simulator 2.

Link to comment
Share on other sites

  • 0
  • Funtoo Linux BDFL

@lazlo.vii will be adding persistent games storage (beyond container wipes) at some point.

Can you first make sure that the container works with PulseAudio? I do not currently support ALSA.

When you are in the container testing glxgears, type "echo $DISPLAY" and make sure it is set to the same value as your regular user outside of the container, and also run "xhost +local:" as your regular user outside of the container. Then see if glxgears will start.

I have not reproduced this issue but someone else has, but they did not tell me the root cause of it. So hang tight, should be fixable.

Link to comment
Share on other sites

  • 0
4 hours ago, drobbins said:

@lazlo.vii will be adding persistent games storage (beyond container wipes) at some point.

Can you first make sure that the container works with PulseAudio? I do not currently support ALSA.

When you are in the container testing glxgears, type "echo $DISPLAY" and make sure it is set to the same value as your regular user outside of the container, and also run "xhost +local:" as your regular user outside of the container. Then see if glxgears will start.

I have not reproduced this issue but someone else has, but they did not tell me the root cause of it. So hang tight, should be fixable.

For testing purposes I did a container wipe before I started this post.  Both the host and the container return :0 when told to "echo $DISPLAY".  The when told "xhost +local:" the host returned " bash: xhost: command not found" so I did "emerge -va xhost" then issued "xhost +local:" again and (because the containter was still running) the Steam Client launched immediately. I was also able to launch glxgears as root as well as with the steam account.

 

Inside the container both the  root account and the steam account can generate white noise with "pacat -vvvv /dev/urandom".   However Steam itself still refuses to use pusleaudio.  No sound was played by the Steam client or by Euro Truck Simulator 2 when it was installed.

 

I am attaching a copy of the full error log (from /home/steam/.steam/error.log inside the container) in the hope you can find a clue in it that I cannot.

 

 

 

 

error.log

Link to comment
Share on other sites

  • 0

Getting closer!  I have sound from Steam if after every reboot on my desktop system I start the steam-nvidia-launcher then open another terminal and do:

pusleaudio --kill
	pulseaudio --start

After doing this I can even start games the require Steam Play, A.K.A. Proton, A.K.A. Steam's fork of WINE (and why fsck -sake don't they just call it WINE?! I mean it's not like it's a secret or anything!)  However I cannot launch games the require Vulkan.  So no X4:  Foundations or No Man's Sky. 

At this point I am not only getting frustrated, I am getting drunk.  After all, why pound my head against this when I could be pounding it against my toilet?

Link to comment
Share on other sites

  • 0
  • Funtoo Linux BDFL

I was able to reproduce the issue with pulseaudio not working until I killed it and I restarted. I spent a day trying to figure out why this was and no luck so far. I am wondering if it's an issue related to how steam interfaces with pulseaudio.

Link to comment
Share on other sites

  • 0

Cannot emerge the new steam-nvidia-launcher.

output of emerge -av steam-nvidia-launcher:

These are the packages that would be merged, in order:

Calculating dependencies... done!

emerge: there are no ebuilds to satisfy "app-emulation/nvidia-container".
(dependency required by "games-platforms/steam-nvidia-launcher-1.4::games-kit" [ebuild])
(dependency required by "steam-nvidia-launcher" [argument])

Cannot find "app-emulation/nvidia-container" when i search for nvidia-container (emerge -s nvidia-container)

[ Results for search key : nvidia-container ]
Searching...

*  app-emulation/libnvidia-container-bin
      Latest version available: 1.0.2-r1
      Latest version installed: 1.0.2-r1
      Size of files: 298 KiB
      Homepage:      https://github.com/NVIDIA/libnvidia-container
      Description:   NVIDIA container runtime library and nvidia-container-cli tool
      License:       NVIDIA

*  app-emulation/nvidia-container-runtime
      Latest version available: 1.0.2
      Latest version installed: 1.0.2
      Size of files: 1,681 KiB
      Homepage:      https://github.com/NVIDIA
      Description:   nvidia-container-runtime (clone of runc with nvidia hooks) and the hook itself.
      License:       Apache-2.0

*  virtual/libnvidia-container
      Latest version available: 1.0.2
      Latest version installed: 1.0.2
      Size of files: 0 KiB
      Homepage:      
      Description:   A virtual for libnvidia-container(-bin)
      License:       

[ Applications found : 3 ]

 

Link to comment
Share on other sites

  • 0
  • Funtoo Linux BDFL

You're welcome. Let us know if you encounter any other issues, or if you just want to leave general feedback here. And it's fine to report problems here too -- if they seem like a real bug, don't be shy to report it to the bug tracker too.

Link to comment
Share on other sites

  • 0
On 10/29/2019 at 6:52 PM, lazlo.vii said:

A bit more info about things that do not work as expected:

 

Trying to launch any game the using Steam Play, A.K.A. Proton, A.K.A. Steam's fork of WINE will cause a segfault in vgui2_s.so

 

Steam seems to trying to use ALSA as it's audio backend.  Here is a bit of /home/steam/.steam/error.log:

 


AL lib: (WW) alc_initconfig: Failed to initialize backend "pulse"
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
AL lib: (EE) ALCplaybackAlsa_open: Could not open playback device 'default': No such file or directory

 

That is added to the log every time I launch Euro Truck Simulator 2.

I'm having a similar issue.  Steam is looking for ALSA.  In my case restarting Pulse does not fix it.   I assume this is on the host system since I don't see PA running in the container.   Sound is fine from pacat in the container and it shows as a stream in pavucontrol.   The steam client itself never shows up in pavucontrol.

Background -  I had to install PA (ptui!) since I've been an ALSA holdout.   But first I tried tinkering around a bit trying to get ALSA working.  Installed alsa-utils in the container and tried some different run options on the docker launch.  No luck so I wiped the container, installed PA, and reinstalled the container.  But I it appears that the Steam install persists now.   

Is it possible that steam is remembering the ghost of alsa-utils past?    I see a line in my log that says PulseAudio access denied but I followed the config instructions to set anonymous access and pacat works.

PulseAudio connect failed (used only for Mic Volume Control) with error: Access denied

 

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 err
or: 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
[1230/211250.330147:ERROR:alsa_util.cc(204)] PcmOpen: default,No such file or directory
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
[1230/211250.331123:ERROR:alsa_util.cc(204)] PcmOpen: plug:default,No such file or directory

Is there a prescribed process for starting the container storage from scratch other than just removing SteamData?

error.log

Link to comment
Share on other sites

  • 0

I figured this out.  I found that sound works in the container with pacat under the root account but not when I su to the steam account.

Whenever I create an account I use the same UID which is not 1000.  Using 1111 for this example.

It seems like the root environment that you get when you attach to the container gets the environmental variable passed to the container at runtime that points to the correct pulseaudio socket.

PULSE_SERVER=unix:/run/user/1111/pulse/native

But when you su to the steam account that variable isn't set.  So it's trying to use the default socket.  If you specify the server in the pacat command line it works as expected.

pacat  -s unix:/run/user/1111/pulse/native /dev/urandom

So looking at where the default server is defined when not overridden by $PULSE_SERVER I find that /etc/pulse/client.conf contains a default setting.

# Connect to the host's server using the mounted UNIX socket
default-server = unix:/run/user/1000/pulse/native

This will work if the userid launcing pulseaudio is 1000, but not otherwise.  I changed it to hard code my UID but it could probably be dynamic for any UID using the environment variable.   I'll report a bug on this.

 


 

 

 


 

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...