Unprivileged container to run wine/steam on slackware64 with no multilib
SlackwareThis Forum is for the discussion of Slackware Linux.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
Unprivileged container to run wine/steam on slackware64 with no multilib
So until now I was using flatpaks to install steam and wine stuff on my slackware64-current, this in order to avoid installing and maintaining multilib.
But today I found this cute little portable unprivileged container: Conty
The prepackaged release is based on arch and contains quite a lot of stuff: steam, wine staging, gcc, pcmanfm... but you can roll your own as minimal as you like according to the README.
It's also sandboxable with bubblewrap if you are a fan of this feature.
I briefly tested it and it ran my diablo 2 like a champ, so I'm definitely thinking about replacing the flatpaks with this.
The container requires unprivileged user containers to be enabled on the kernel and I found instructions on how to do so in Debian and Arch because they are disabled by default, but I don't recall setting anything specific here on slackware in the past, so it seems to run fine out-of-the-box, I hope someone can confirm this.
Thanks! It runs some applications better than alien's wine but doesn't run others at all. So it can't replace multilib + wine and crossover in my case but is a nice addition.
By testing this I found out that some programs that had bugs in former versions of the normal wine now run smoothly. It seems that some improvement have been made there as well. I probably do not need my windows vm anymore
That sad I have only tested commercial business software with wine. I did not test steam and lutris since I'm not a gamer.
But today I found this cute little portable unprivileged container: Conty
Wow. That is very useful. Thanks for posting!
EDIT: I just tried this on a clean installation of Slackware64-current without multi-lib. It loads Warcraft 3 with no issues. It's brilliant! This is the way of the future.
The container requires unprivileged user containers to be enabled on the kernel and I found instructions on how to do so in Debian and Arch because they are disabled by default, but I don't recall setting anything specific here on slackware in the past, so it seems to run fine out-of-the-box, I hope someone can confirm this.
Regarding this, it's a bit misleading. The X-namespace kernel features are enabled by default, see /boot/config-generic-x
It's up to the OS/user/program to use the namespace, that's why it came with sysfs entries that can be activated/deactivated in runtime (without reboot) via sysctl.
Anyone have any tricks to get sound working on a 14.2 install? Steam games are silent. I also tried using mpg123 to play an mp3 out of my home directory and got the following:
Code:
jbhansen@craven-moorhead:~/Downloads$ sh conty.sh mpg123 ~/04\ \ -\ Linkin\ Park\ -\ New\ Divide\ -\ Linkin\ Park.mp3
Running Conty
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3
version 1.26.5; written and copyright by Michael Hipp and others
free software (LGPL) without any warranty but with best wishes
Directory: /home/jbhansen/
Terminal control enabled, press 'h' for listing of keys and functions.
Playing MPEG stream 1 of 1: 04 - Linkin Park - New Divide - Linkin Park.mp3 ...
[src/libout123/modules/alsa.c:129] error: initialize_device(): cannot set hw params
main: [src/mpg123.c:323] error: out123 error 7: failed to open device
EDIT: Steam doesn't seem to show any errors tied to audio (the below is me trying to launch the original Half Life game):
Code:
No cached sticky mapping in ActivateActionSet.GameAction [AppID 70, ActionID 2] : LaunchApp changed task to ProcessingInstallScript with ""
GameAction [AppID 70, ActionID 2] : LaunchApp changed task to SynchronizingCloud with ""
GameAction [AppID 70, ActionID 2] : LaunchApp changed task to SiteLicenseSeatCheckout with ""
GameAction [AppID 70, ActionID 2] : LaunchApp changed task to CreatingProcess with ""
GameAction [AppID 70, ActionID 2] : LaunchApp waiting for user response to CreatingProcess ""
GameAction [AppID 70, ActionID 2] : LaunchApp continues with user response "CreatingProcess"
Game update: AppID 70 "", ProcID 21937, IP 0.0.0.0:0
ERROR: ld.so: object '/home/jbhansen/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
Starting app 70
>>> Adding process 21937 for game ID 70
GameAction [AppID 70, ActionID 2] : LaunchApp changed task to WaitingGameWindow with ""
GameAction [AppID 70, ActionID 2] : LaunchApp changed task to Completed with ""
ERROR: ld.so: object '/home/jbhansen/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
pid 21939 != 21938, skipping destruction (fork without exec?)
ERROR: ld.so: object '/home/jbhansen/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
>>> Adding process 21938 for game ID 70
ERROR: ld.so: object '/home/jbhansen/.local/share/Steam/ubuntu12_64/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
>>> Adding process 21940 for game ID 70
>>> Adding process 21941 for game ID 70
Using breakpad crash handler
Game update: AppID 70 "", ProcID 21941, IP 0.0.0.0:0
RecordSteamInterfaceCreation (PID 21941): SteamUser016 / User
RecordSteamInterfaceCreation (PID 21941): SteamFriends013 / Friends
RecordSteamInterfaceCreation (PID 21941): SteamUtils005 / Utils
RecordSteamInterfaceCreation (PID 21941): SteamMatchMaking009 / Matchmaking
RecordSteamInterfaceCreation (PID 21941): SteamMatchMakingServers002 / MatchmakingServers
RecordSteamInterfaceCreation (PID 21941): STEAMUSERSTATS_INTERFACE_VERSION011 / UserStats
RecordSteamInterfaceCreation (PID 21941): STEAMAPPS_INTERFACE_VERSION005 / Apps
RecordSteamInterfaceCreation (PID 21941): SteamNetworking005 / Networking
RecordSteamInterfaceCreation (PID 21941): STEAMREMOTESTORAGE_INTERFACE_VERSION010 / RemoteStorage
RecordSteamInterfaceCreation (PID 21941): STEAMSCREENSHOTS_INTERFACE_VERSION002 / Screenshots
RecordSteamInterfaceCreation (PID 21941): STEAMHTTP_INTERFACE_VERSION002 / HTTP
RecordSteamInterfaceCreation (PID 21941): STEAMUNIFIEDMESSAGES_INTERFACE_VERSION001 / UnifiedMessages
Setting breakpad minidump AppID = 70
Forcing breakpad minidump interfaces to load
Looking up breakpad interfaces from steamclient
Calling BreakpadMiniDumpSystemInit
Looking up breakpad interfaces from steamclient
Calling BreakpadMiniDumpSystemInit
Steam_SetMinidumpSteamID: Caching Steam ID: 76561197970112770 [API loaded yes]
Steam_SetMinidumpSteamID: Setting Steam ID: 76561197970112770
GL_SIZES: r:8 g:8 b:8 a:0 depth:24
Installing breakpad exception handler for appid(gameoverlayui)/version(20210323201103)
Installing breakpad exception handler for appid(gameoverlayui)/version(1.0)
Installing breakpad exception handler for appid(gameoverlayui)/version(1.0)
[0331/154109:ERROR:object_proxy.cc(239)] Failed to call method: org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.NetworkManager was not provided by any .service files
[0331/154109:WARNING:proxy_service.cc(646)] PAC support disabled because there is no system implementation
Platform config directory: platform/config
0:Initializing platform...
[ALSOFT] (EE) Failed to set real-time priority for thread: Operation not permitted (1)
[ALSOFT] (EE) Failed to set real-time priority for thread: Operation not permitted (1)
Server module initialized.
World module initialized.
[0331/154109.853899:INFO:crash_reporting.cc(270)] Crash reporting enabled for process: renderer
STEAM Auth Server
AppActive: active
RecordSteamInterfaceCreation (PID 21941): SteamUtils005 / Utils
Installing breakpad exception handler for appid(gameoverlayui)/version(1.0)
[0331/154110.001680:ERROR:frame_sink_video_capturer_impl.cc(206)] Invalid resolutions constraints: 0x0 must not be greater than 0x0; and also within media::limits.
AppActive: active
CAppInfoCacheReadFromDiskThread took 1 milliseconds to initialize
RecordSteamInterfaceCreation (PID 21941): SteamGameServer011 / GameServer
RecordSteamInterfaceCreation (PID 21941): SteamUtils005 / Utils
RecordSteamInterfaceCreation (PID 21941): STEAMAPPS_INTERFACE_VERSION005 / Apps
RecordSteamInterfaceCreation (PID 21941): STEAMHTTP_INTERFACE_VERSION002 / HTTP
RecordSteamInterfaceCreation (PID 21941): SteamNetworking005 / Networking
RecordSteamInterfaceCreation (PID 21941): SteamGameServerStats001 / GameServerStats
Looking up breakpad interfaces from steamclient
Calling BreakpadMiniDumpSystemInit
Steam_SetMinidumpSteamID: Caching Steam ID: 76561197970112770 [API loaded yes]
Steam_SetMinidumpSteamID: Setting Steam ID: 76561197970112770
RecordSteamInterfaceCreation (PID 21941): SteamUtils005 / Utils
Game update: AppID 70 "", ProcID 21941, IP 0.0.0.0:27015
CApplicationManagerPopulateThread took 61 milliseconds to initialize (will have waited on CAppInfoCacheReadFromDiskThread)
Unknown command: VModEnable
Dropped Player from server
Reason: Server shutting down
World module shutdown.
Server module shutdown.
Game removed: AppID 70 "", ProcID 21941
Game 70 created interface STEAMAPPS_INTERFACE_VERSION005 / Apps
Game 70 created interface STEAMHTTP_INTERFACE_VERSION002 / HTTP
Game 70 created interface STEAMREMOTESTORAGE_INTERFACE_VERSION010 / RemoteStorage
Game 70 created interface STEAMSCREENSHOTS_INTERFACE_VERSION002 / Screenshots
Game 70 created interface STEAMUNIFIEDMESSAGES_INTERFACE_VERSION001 / UnifiedMessages
Game 70 created interface STEAMUSERSTATS_INTERFACE_VERSION011 / UserStats
Game 70 created interface SteamFriends013 / Friends
Game 70 created interface SteamMatchMaking009 / Matchmaking
Game 70 created interface SteamMatchMakingServers002 / MatchmakingServers
Game 70 created interface SteamNetworking005 / Networking
Game 70 created interface SteamUser016 / User
Game 70 created interface SteamUtils005 / Utils
Game 70 method call count for IClientFriends::GetPersonaName : 1
Game 70 method call count for IClientUtils::GetAppID : 17
Game 70 method call count for IClientUtils::RecordSteamInterfaceCreation : 14
Game 70 method call count for IClientAppManager::BIsDlcEnabled : 1
Game 70 method call count for IClientAppManager::GetAppStateInfo : 1
Game 70 method call count for IClientAppManager::GetCurrentLanguage : 2
Game 70 method call count for IClientAudio::StopVoiceRecording : 2
Game 70 method call count for IClientUser::GetSteamID : 1
Game 70 method call count for IClientUser::BIsSubscribedApp : 107
Game 70 method call count for IClientUser::TerminateGameConnection : 1
Game 70 method call count for IClientUser::InitiateGameConnection : 1
Uploaded AppInterfaceStats to Steam
Exiting app 70
No cached sticky mapping in ActivateActionSet.
Last edited by bassmadrigal; 03-31-2021 at 11:44 AM.
EDIT: Steam doesn't seem to show any errors tied to audio
Just a guess, but there's this openAL error in your log:
Code:
[ALSOFT] (EE) Failed to set real-time priority for thread: Operation not permitted (1)
Got this (EE) here too, with a simple openal-info command, on 14.2 without pulseaudio.
Setting openal as default output driver for mplayer works fine, however.
Just a guess, but there's this openAL error in your log:
Code:
[ALSOFT] (EE) Failed to set real-time priority for thread: Operation not permitted (1)
Got this (EE) here too, with a simple openal-info command, on 14.2 without pulseaudio.
Setting openal as default output driver for mplayer works fine, however.
Good catch! I didn't realize ALSOFT was from OpenAL.
Unfortunately, this doesn't really give me anything to go off of. mpg123 wouldn't be using OpenAL, so it seems there's some issue with sharing audio between the container and the OS.
Well if there's a difference in openal-info output when it runs from inside and outside the container, it may point to the probable cause.
Anyway, there must be some cli switch or configuration option like in winecfg to specify the correct audio device.
But I don't actually run the container, just noticed the same error that I already seen before with openal.
Not sure if it will help, but here's the diff between the two
OK, already figured the default playback device will differ because of your mpg123 output.
There is also the openal version mismatch which may or may not be relevant, but my first guess would be it's just trying to use the wrong device for whatever reason.
Few notes:
mpg123 has -a switch to specify device
The alsamixer on host and alsamixer on guest should display the same default device, so I guess when the correct device is specified in the guest it could be saved with "alsactl store".
Unless something else is using the host device; sound on the guest should just work the same as sound on the host.
Old wine (2.0 and below) required a hardware device and did not tolerate an emulated pulseaudio device, no idea about new wine and wine-staging as I don't really use it.
Since the OP appears to have sound working, it's probably just some local setting on your end.
That makes a lot of sense. I imagine it's probably defaulted to my hdmi output, so I'll have to play with it once I get home from work to figure out how to change the default audio device. However, would I be doing this in the container through alsa (bringing me back to the days before 14.2) or would I do it with pulseaudio (and if it's with pulseaudio, would I be using pavucontrol or some config file)?
That makes a lot of sense. I imagine it's probably defaulted to my hdmi output, so I'll have to play with it once I get home from work to figure out how to change the default audio device. However, would I be doing this in the container through alsa (bringing me back to the days before 14.2) or would I do it with pulseaudio (and if it's with pulseaudio, would I be using pavucontrol or some config file)?
Do you have some other programs that are actively using your sound card running in the background? And do you use manual ALSA config like /etc/asound.conf or ~/.asoundrc?
I suggest to try to run with SANDBOX enabled:
Code:
SANDBOX=1 BIND="${HOME}/04 - Linkin Park - New Divide - Linkin Park.mp3" bash conty.sh mpg123 ~/"04 - Linkin Park - New Divide - Linkin Park.mp3"
And you can try to bind /proc and/or whole /etc:
Code:
BIND="/proc /etc" - Linkin Park - New Divide - Linkin Park.mp3" bash conty.sh mpg123 ~/"04 - Linkin Park - New Divide - Linkin Park.mp3"
Also try mpg123 with another output module (e.g. sdl).
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.