Jump to content
funtoo forums
  • 0
lazlo.vii

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

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?

Share this post


Link to post
Share on other sites

14 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.

Share this post


Link to post
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.

Share this post


Link to post
Share on other sites
  • 0

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.

Share this post


Link to post
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? 

Share this post


Link to post
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

Share this post


Link to post
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)

Share this post


Link to post
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.

Share this post


Link to post
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.

Share this post


Link to post
Share on other sites
  • 0

Had another thought.  How hard would it be to script the creation of a empty ext4 filesystem image that gets mounted into the Steam image?  This could be used to store backups of the game installation files and be persistent across Steam container wipes.

Share this post


Link to post
Share on other sites
  • 0

@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.

Share this post


Link to post
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

Share this post


Link to post
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?

Share this post


Link to post
Share on other sites
  • 0

I had this issues with the newer docker images. I didn't have time to test but please, can you check the script repo if there's older scripts there? I had no big problems with the older script.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...