Steamuxulation redux

Throwing in more info in case anyone has any suggestions for me to check / implement...

I downloaded the "linux-chroot" gist and can run ./linux-chroot vkcube, which outputs:
Code:
Selected GPU 0: AMD Unknown (RADV GFX1100), type: 2
and ./linux-chroot glxgears -info, which outputs:
Code:
GL_RENDERER   = GFX1100 (gfx1100, LLVM 15.0.7, DRM 3.54, 5.15.0)

I can also run FreeBSD-native vkcube, which outputs:
Code:
Selected WSI platform: xcb
Selected GPU 0: AMD Radeon RX 7900 XTX (RADV NAVI31), type: DiscreteGpu
and FreeBSD-native glxgears -info which outputs:
Code:
GL_RENDERER   = AMD Radeon RX 7900 XTX (radeonsi, navi31, LLVM 19.1.7, DRM 3.54, 15.0-RELEASE)

The Linux vs FreeBSD outputs are different - does that point to anything?
If I'm using Steam compatibility mode "FreeBSD Wine (emulators/wine-proton)" then is that using FreeBSD or Linux-RL9 libraries?

I just can't seem to progress any further than launching a game, seeing the green PLAY button turn into blue STOP button but nothing else happening.
 
redmog are you able to play games? You only tested LSU chroot the wine and other linuxulator-steam-utils work?

I am trying to get back into gaming not sure what route to go. Mizuma at least for me is pretty limited in the games I want to play.
My other concern if I use linuxulator I am already using /compat/linux for another installation programs do I need to move that to another name / chroot install?
 
redmog are you able to play games? You only tested LSU chroot the wine and other linuxulator-steam-utils work?

I am trying to get back into gaming not sure what route to go. Mizuma at least for me is pretty limited in the games I want to play.
My other concern if I use linuxulator I am already using /compat/linux for another installation programs do I need to move that to another name / chroot install?
Yes, although I had a ton more help getting started via the FreeBSD Discord server.
I don't really know what I did wrong the 1st time, or the 2nd time, as somehow games just started working.

Games that worked for me (from memory) to give you an idea of how modern and which game engines work:
  • Untitled Goose Game (I think Unity based)
  • Stray (no idea which game engine)
No joy with Squad yet (UE5.5) but maybe due to Easy Anti Cheat not starting up correctly.
I think my next task is to try to run Squad directly via FreeBSD-native Wine, now that Steam has installed it.

There was a recent BSD/FreeBSD convention where someone demoed running CyberPunk 2077 I think?

I'm not new to development but I just can't seem to get my head around how the pieces fit together and after a few hours of head bashing it's easier to simply boot into Windows and play.
Like:
  • I have to install Linux emulation and some version of Wine to run Linux-version of Steam
  • ... in order to install a Windows game
  • ... and some Linux and/or Windows components (Proton?) from Steam also
  • ... but then install a different version of Wine to run the actual game maybe?
  • ... and some combination of Mesa or Vulkan or Wayland
Even just a simple diagram of how the pieces fit/overlap might go a long way (for me)!
Or maybe I'm just too dense to work it out
 
This is the sort of diagram I mean, but bear in mind that I'm probably wrong here and also that I think Easy Anti Cheat starts up first and then launches the actual game:
Gaming on FreeBSD v1.png


or maybe it's like this:
Gaming on FreeBSD v2.png


... which would explain the problems I have with (Linux?) EAC trying to launch Windows-based Squad.



I'm still a bit vague on where Mesa / Vulkan / Wayland fit into the above as I'm still using X.
My best guess is that Mesa / Vulkan are alternatives to DirectX - which itself is like a drawing/rendering API for Windows apps/games?
Wayland seems to be an X replacement so might not even be important to running games on FreeBSD?

Maybe there's enough up-to-date info out there for AI to patiently explain it to me so I can improve the diagrams!
 
Hi,

I think the below is right, from experimenting with stuff, but I could be wrong.

For native freebsd games (i.e. from ports) it's: App <-> (X11/Wayland) <-> Graphics <-> Kernel
For linux native games (assuming 64 bit elf) it's: App <-> Linuxlator <-> (X11/Wayland on Linuxlator) <-> Linux DRM shim (Linux<->FreeBSD, i.e. linsysfs, lindevfs, etc) <-> Graphics card <-> FreeBSD Kernel
For windows games (assuming 64bit exe and FreeBSD wine) it's: App <-> Wine <-> (X11/Wayland on FreeBSD) <-> Graphics card <-> FreeBSD Kernel
For windows games (assuming 32bit exe and FreeBSD wine) it's App <->Wine 32bit (i.e. running FreeBSD 14 i386 build of Wine) <-> (X11/Wayland on FreeBSD) <-> Graphics card <-> FreeBSD Kernel
Steam for linux native games is like above but you also have Steam on Linuxlator.
Steam for Windows apps is like wine above but instead of the default Wine build, it's a patched Proton (wine fork build) for FreeBSD which includes WoW64 (windows 32bit on windows 64bit), Steam just uses that instead of the Valve shipped proton build (which would not work as it's for linux).

What steam does for Linux games is that it has a runtime environment (can use LD_LIBRARY_PRELOAD for runtime v1,v2 and v3 or linux namespaces for v4) that apps can use instead of host libraries, so games can target glibc 2.6 that is packed in that runtime instead of the host glibc 2.8. This runtime can also be used by proton. Though it's more of an extension than a new layer.

As for anti-cheat software, that's a lost cause. Even stuf that should work in Linux often breaks.
 
As for anti-cheat software, that's a lost cause. Even stuf that should work in Linux often breaks.
I have good luck with games that use lenient anticheat software such as VAC, but similar to redmog I'm not sure what keeps the other anticheats from working in multiplayer games that do allow their anticheat to work under Proton. A multiplayer game with anticheat that works well on Linux doesn't in FreeBSD even under the compatibility layer, at least in my experience. If anyone has been successful, that would be nice to know about.
 
Hello everyone, I have not been able to play Steam games for a long time, first ,the problem was the linux-steam-utils moving away from linux-c7 to linux-rl9, because my CPU did not support x86-x64-v2. So after a while I bought a new combo which would support that instruction set (A10-5800k APU), so that I could finally upgrade my system to linux-rl9. I have 15.1 installed now. I also bought and installed a Radeon RX Vega 56 GPU. Linux-steam-utils now runs, but I do not get any 3D acceleration under linux-emu. I also found the culprit, it seems to be nullfs, which is necessary for linux-steam-utils to run:
When nullfs is not loaded, my acceleration under linux-emu works. I have a linux installation of ETQW (still fabulous multiplayer game!), which has been working for years with linux-c7 and now keeps on working with linux-rl9, but the moment I kldload nullfs, the 3D acceleration under linux-emu is gone and ETQW starts as a program, but as a software slideshow. Consecuently, no game runs under linux-steam-utils, I get a message like "No GLX visual found". The moment I kldunload nullfs and reboot my PC, 3D-acceleration under linux-emu (ETQW) works again. So what is going on here? I tested linux-steam-utils with an old Geforce GTX 750 and then 3D-acceleration under linux-emu and steam games work with nullfs loaded, but I have bought the Radeon Vega for a reason. Needless to say that it's way more powerful then a Geforce GTX with only 1 GB of VRAM.
 
cabriofahrer which FreeBSD release are you running?

I'm on 15.1 with a radeon 780M and have no issues.
For reference here's my fstab:

devfs /compat/linux/dev devfs rw,late 0 0
tmpfs /compat/linux/dev/shm tmpfs rw,late,size=1g,mode=1777 0 0
fdescfs /compat/linux/dev/fd fdescfs rw,late,linrdlnk 0 0
linprocfs /compat/linux/proc linprocfs rw 0 0
linsysfs /compat/linux/sys/.sys linsysfs rw 0 0
/tmp /compat/linux/tmp nullfs rw,late 0 0
/home /compat/linux/home nullfs rw,late 0 0

The /sys/.sys mount point is for vulkan support: https://forums.freebsd.org/threads/how-to-enable-vulkan-on-compat-linux.101997/

The software slideshow is probably because it's using the softpipe or lllvmpipe (i.e. software renderers).
For accelerated output with the vega card you will need the following packages:
  • linux-rl9-dri
  • linux-rl9-libdrm
  • linux-rl9-vulkan (for vulkan)
You can also install linux-rl9-glx-utils so you can run glxinfo -B from /compat/linux chroot to see what it shows you (or vulkaninfo --summary for vulkan).
 
cabriofahrer which FreeBSD release are you running?
Thanks for your response. 15.1 amd64, I mentioned it in my post.
For accelerated output with the vega card you will need the following packages:
  • linux-rl9-dri
  • linux-rl9-libdrm
  • linux-rl9-vulkan (for vulkan)
I guess it's "linux-rl9-vulkan-loader", "linux-rl9-vulkan" does not exist. I had those 3 packages installed.
I assume ".sys" is a file? Or is it a directory? And if it does not exist, I have to create it first? But I don't seem to be able to:
Code:
$ su
Password:
# cd /compat/linux/sys/
# ls
bus    class    dev    devices    kernel
# touch .sys
touch: .sys: No such file or directory
# mkdir .sys
mkdir: .: No such file or directory
#

If it doesn't exist, the entry linsysfs /compat/linux/sys/.sys linsysfs rw 0 0

in /etc/fstab makes the PC hang at boot. Please advice on this, before I can do any further testing.
 
Thanks for your response. 15.1 amd64, I mentioned it in my post.

I guess it's "linux-rl9-vulkan-loader", "linux-rl9-vulkan" does not exist. I had those 3 packages installed.

I assume ".sys" is a file? Or is it a directory? And if it does not exist, I have to create it first? But I don't seem to be able to:
Code:
$ su
Password:
# cd /compat/linux/sys/
# ls
bus    class    dev    devices    kernel
# touch .sys
touch: .sys: No such file or directory
# mkdir .sys
mkdir: .: No such file or directory
#

If it doesn't exist, the entry linsysfs /compat/linux/sys/.sys linsysfs rw 0 0

in /etc/fstab makes the PC hang at boot. Please advice on this, before I can do any further testing.
Sorry, missed the part of 15.1.

My fstab is made to work with the /etc/rc.d/linux script of the linked thread (if you use and follow the instructions the script will take care of that for you). If you won't be using that you don't need those fstab entries (as linux_mounts_enable="YES" on /etc/rc.conf will get you the same mount points). It's for the general vulkan on /campat/linux use case and not specifically tied with steam gaming.

In any case steam-utils-linux has some loader scripts that will get you a better outcome, check the steam-linux-utils repo to see if you missed anything and maybe ask monwarez if he has any idea.

And you are correct, it is linux-rl9-vulkan if you are using the latest repo (which is my case) and linux-rl9-vulkan-loader on quarterly, my bad.
 
Thanks again.
If you won't be using that you don't need those fstab entries (as linux_mounts_enable="YES" on /etc/rc.conf will get you the same mount points). It's for the general vulkan on /campat/linux use case and not specifically tied with steam gaming.
So let's go with that (without Vulkan) for now. I have added
linux_mounts_enable="YES"
to my
/etc/rc.conf
now, so now I have

Code:
linux_enable="YES"
linux_mounts_enable="YES"

My /etc/fstab looks like this:
Code:
$ more /etc/fstab
# Device        Mountpoint      FStype  Options Dump    Pass#
/dev/ada0s1a    /               ufs     rw      1       1
/dev/ada1p1     /Disk2          ufs     rw      2       2
fdesc           /dev/fd         fdescfs rw      0       0
proc            /proc           procfs  rw      0       0
/dev/ada0s1b    none            swap    sw      0       0
devfs           /compat/linux/dev devfs rw,late 0 0
tmpfs           /compat/linux/dev/shm tmpfs rw,late,size=1g,mode=1777 0 0
fdescfs         /compat/linux/dev/fd fdescfs rw,late,linrdlnk 0 0
linprocfs       /compat/linux/proc linprocfs rw 0 0
#linsysfs       /compat/linux/sys/.sys linsysfs rw 0 0
#/tmp           /compat/linux/tmp nullfs rw,late 0 0
#/home          /compat/linux/home nullfs rw,late 0 0

My
mount
now looks like this:

Code:
$ mount
/dev/ada0s1a on / (ufs, local, soft-updates, journaled soft-updates)
devfs on /dev (devfs)
/dev/ada1p1 on /Disk2 (ufs, local, soft-updates)
fdescfs on /dev/fd (fdescfs)
procfs on /proc (procfs, local)
linprocfs on /compat/linux/proc (linprocfs, local)
linsysfs on /compat/linux/sys (linsysfs, local)
devfs on /compat/linux/dev (devfs)
fdescfs on /compat/linux/dev/fd (fdescfs)
tmpfs on /compat/linux/dev/shm (tmpfs, local)

But
steam
won't even start now:

Code:
$ steam
ERROR: unsafe call to unsetenv count:1 var:'LD_PRELOAD'
CProcessEnvironmentManager is ready, 5 preallocated environment variables.
[2026-08-07 10:35:56] Startup - updater built Aug  3 2026 19:41:02
[2026-08-07 10:35:56] Startup - Steam Client launched with: '/usr/home/steam/.steam/steam/ubuntu12_32/steam'
08/07 10:35:57 /tmp/dumps: failed to create, skipping
08/07 10:35:57 /tmp/dumps01: failed to create, skipping
08/07 10:35:57 /tmp/dumps02: failed to create, skipping
08/07 10:35:57 /tmp/dumps03: failed to create, skipping
08/07 10:35:57 /tmp/dumps04: failed to create, skipping
08/07 10:35:57 /tmp/dumps05: failed to create, skipping
08/07 10:35:57 /tmp/dumps06: failed to create, skipping
08/07 10:35:57 /tmp/dumps07: failed to create, skipping
08/07 10:35:57 /tmp/dumps08: failed to create, skipping
08/07 10:35:57 /tmp/dumps09: failed to create, skipping
src/crashhandler/breakpad_linux.cpp (740) : Fatal Assertion Failed:
FATAL: Steam cannot run. Please delete some /tmp/dumps* directories or change their ownership to the local user.

src/crashhandler/breakpad_linux.cpp (740) : Fatal Assertion Failed:
FATAL: Steam cannot run. Please delete some /tmp/dumps* directories or change their ownership to the local user.

src/crashhandler/breakpad_linux.cpp (740) : Fatal assert; application exiting
src/crashhandler/breakpad_linux.cpp (740) : Fatal assert; application exiting
08/07 10:35:57 Init: Installing breakpad exception handler for appid(steam)/version(1785799196)/tid(3252)
ExceptionHandler::GenerateDump waitpid failed:No child processes
08/07 10:35:57 Failed writing minidump, nothing to upload.
lsu-kill: Steam is not running
$ steam
ERROR: unsafe call to unsetenv count:1 var:'LD_PRELOAD'
CProcessEnvironmentManager is ready, 5 preallocated environment variables.
[2026-08-07 10:36:06] Startup - updater built Aug  3 2026 19:41:02
[2026-08-07 10:36:06] Startup - Steam Client launched with: '/usr/home/steam/.steam/steam/ubuntu12_32/steam'
08/07 10:36:06 /tmp/dumps: failed to create, skipping
08/07 10:36:06 /tmp/dumps01: failed to create, skipping
08/07 10:36:06 /tmp/dumps02: failed to create, skipping
08/07 10:36:06 /tmp/dumps03: failed to create, skipping
08/07 10:36:06 /tmp/dumps04: failed to create, skipping
08/07 10:36:06 /tmp/dumps05: failed to create, skipping
08/07 10:36:06 /tmp/dumps06: failed to create, skipping
08/07 10:36:06 /tmp/dumps07: failed to create, skipping
08/07 10:36:06 /tmp/dumps08: failed to create, skipping
08/07 10:36:06 /tmp/dumps09: failed to create, skipping
src/crashhandler/breakpad_linux.cpp (740) : Fatal Assertion Failed:
FATAL: Steam cannot run. Please delete some /tmp/dumps* directories or change their ownership to the local user.

src/crashhandler/breakpad_linux.cpp (740) : Fatal Assertion Failed:
FATAL: Steam cannot run. Please delete some /tmp/dumps* directories or change their ownership to the local user.

src/crashhandler/breakpad_linux.cpp (740) : Fatal assert; application exiting
src/crashhandler/breakpad_linux.cpp (740) : Fatal assert; application exiting
08/07 10:36:06 Init: Installing breakpad exception handler for appid(steam)/version(1785799196)/tid(3281)
ExceptionHandler::GenerateDump waitpid failed:No child processes
08/07 10:36:06 Failed writing minidump, nothing to upload.
lsu-kill: Steam is not running
$

I have done a
rm -rf
and
rm -rf .*
in /tmp, but that makes no difference. So since messing with
/etc/fstab
the Steam client does not even start anymore. Also creating a new account with
adduser
makes no difference.
 
cabriofahrer I don't think your issue is related with the linux compatibility layer script, the mount points are correct and are exactly the needed ones as you can see from the source (lines 75 to 79), and in fact the /etc/rc.d/linux script doesn't use any nullfs mount points.

So your issue is either with the steam-linux-utils scripts or with the base system. Open issues on the steam-linux-utils repo and/or bugzilla (if you can reproduce that without steam-linux-utils and just launching some random linux binary) to have someone, hopefully, look at that.
 
Back
Top