Jump to content

Recommended Posts

Posted (edited)

I haven't seen many people mention Slackware on this forum so I figured I'd make a thread about running Vintage Story on Slackware specifically. Namely, I'm having trouble with the installation of OpenGL. The documentation and installation guide are geared towards Debian and Ubuntu and "other distros" which means finding relevant information means disregarding 80% of the material and using 5 year old Youtube videos.

 

Here's my machine's specs:

Machine: Lenovo ThinkPad T480s

OS: Slackware 15.0

CPU: Intel i7-8550U

RAM: 23808M

GPU: Integrated graphics

 

So far, I've tried https://wikis.khronos.org/opengl/Getting_Started which eventually brings you to Mesa, which means you have to download and install Meson, which hasn't worked no matter what I try.

 

What am I missing? Is there a different/better way to install just OpenGL? Is there better documentation specifically for Slackware?

Edited by CapnBlackHeart
verified ram amount
Posted

Nah, there's not really a way to just install OpenGL because it's provided/implemented by the drivers for your hardware. On Linux, for Intel integrated graphics, that is indeed Mesa. But like. If you have a graphical user interface, you should have Mesa and OpenGL installed. Did you see an error message that sent you down this rabbit hole?

Posted (edited)
7 hours ago, CapnBlackHeart said:

So far, I've tried https://wikis.khronos.org/opengl/Getting_Started which eventually brings you to Mesa, which means you have to download and install Meson, which hasn't worked no matter what I try.

Are you saying, you don't have Mesa installed (that would be rather surprising)? It should come with a tiny OpenGL demo app "glxgears". Do you have that? Does it work?

What does "inxi -G" say?

Edited by pigfood
Posted
1 hour ago, pigfood said:

Are you saying, you don't have Mesa installed (that would be rather surprising)? It should come with a tiny OpenGL demo app "glxgears". Do you have that? Does it work?

What does "inxi -G" say?

Running "glxgears returns:

Error: couldn't get an RGB, Double-buffered visual

Running "inxi -G" returns:

/usr/bin/env: ‘perl’: No such file or directory

I should mention that when I installed Slackware recently, I opted to not include the d/ (development) module since i did not plan on developing software on mylaptop. Is this why I don't have Mesa installed?

Posted
5 hours ago, Diff said:

Nah, there's not really a way to just install OpenGL because it's provided/implemented by the drivers for your hardware. On Linux, for Intel integrated graphics, that is indeed Mesa. But like. If you have a graphical user interface, you should have Mesa and OpenGL installed. Did you see an error message that sent you down this rabbit hole?

What sent me down this rabbit hole was following the installation steps of .NET 8 (which was another story but I got it working), installing OpenAL (which was a breeze), and getting to the graphics drivers step. I know when I bought this laptop that it has integrated graphics (and not the upgradeable option Nvidia integrated graphics) so I tried following the steps I mentioned earlier. I know it has some drivers installed because I have the /x, /xap, and /xfce packages installed and the desktop works just fine. Obviously there's an easy way to do this and clearly I haven't done that lol.

  • Like 1
Posted
2 hours ago, CapnBlackHeart said:

I know it has some drivers installed because I have the /x, /xap, and /xfce packages installed and the desktop works just fine.

If you have Xfce running you almost certainly have a functional set of kernel-mesa modules and userland-mesa libraries and utilities installed. What are you seeing that is telling you that this is not the case?

Posted

This is my current crash log report:

Running on 64 bit Linux (Slackware 15.0 x86_64) [Kernel 5.15.19.0] with 23808 MB RAM
Game Version: v1.21.6 (Stable)
1/17/2026 1:53:03 PM: Critical error occurred
Loaded Mods: 
System.TypeInitializationException: The type initializer for 'OpenTK.Windowing.Desktop.Monitors' threw an exception.
 ---> System.DllNotFoundException: Unable to load shared library 'glfw' or one of its dependencies. In order to help diagnose loading problems, consider using a tool like strace. If you're using glibc, consider setting the LD_DEBUG environment variable: 
/root/comp/vintagestory/glfw.so: cannot open shared object file: No such file or directory
/usr/share/dotnet/shared/Microsoft.NETCore.App/8.0.20/glfw.so: cannot open shared object file: No such file or directory
/root/comp/vintagestory/Lib/glfw.so: cannot open shared object file: No such file or directory
/root/comp/vintagestory/libglfw.so: cannot open shared object file: No such file or directory
/usr/share/dotnet/shared/Microsoft.NETCore.App/8.0.20/libglfw.so: cannot open shared object file: No such file or directory
/root/comp/vintagestory/Lib/libglfw.so: cannot open shared object file: No such file or directory
/root/comp/vintagestory/glfw: cannot open shared object file: No such file or directory
/usr/share/dotnet/shared/Microsoft.NETCore.App/8.0.20/glfw: cannot open shared object file: No such file or directory
/root/comp/vintagestory/Lib/glfw: cannot open shared object file: No such file or directory
/root/comp/vintagestory/libglfw: cannot open shared object file: No such file or directory
/usr/share/dotnet/shared/Microsoft.NETCore.App/8.0.20/libglfw: cannot open shared object file: No such file or directory
/root/comp/vintagestory/Lib/libglfw: cannot open shared object file: No such file or directory

   at System.Runtime.InteropServices.NativeLibrary.LoadLibraryByName(String libraryName, Assembly assembly, Nullable`1 searchPath, Boolean throwOnError)
   at OpenTK.Windowing.GraphicsLibraryFramework.GLFWNative.LoadLibrary(String libraryName, Version version, Assembly assembly, Nullable`1 searchPath)
   at OpenTK.Windowing.GraphicsLibraryFramework.GLFWNative.<>c.<.cctor>b__4_0(String name, Assembly assembly, Nullable`1 path)
   at System.Runtime.InteropServices.NativeLibrary.LoadLibraryCallbackStub(String libraryName, Assembly assembly, Boolean hasDllImportSearchPathFlags, UInt32 dllImportSearchPathFlags)
   at OpenTK.Windowing.GraphicsLibraryFramework.GLFWNative.glfwSetErrorCallback(ErrorCallback callback)
   at OpenTK.Windowing.GraphicsLibraryFramework.GLFW.SetErrorCallback(ErrorCallback callback)
   at OpenTK.Windowing.Desktop.GLFWProvider.EnsureInitialized()
   at OpenTK.Windowing.Desktop.Monitors..cctor()
   --- End of inner exception stack trace ---
   at OpenTK.Windowing.Desktop.Monitors.GetPrimaryMonitor()
   at VSPlatform.XPlatImpl.GetScreenSize() in XPlatformInterface\PlatformFormsImpl.cs:line 32
   at Vintagestory.Client.NoObf.ClientPlatformWindows..ctor(Logger logger) in VintagestoryLib\Client\ClientPlatform\GameWindow.cs:line 64
   at Vintagestory.Client.ClientProgram.Start(ClientProgramArgs args, String[] rawArgs) in VintagestoryLib\Client\ClientProgram.cs:line 171
   at Vintagestory.Client.ClientProgram.<>c__DisplayClass10_0.<.ctor>b__1() in VintagestoryLib\Client\ClientProgram.cs:line 131
   at Vintagestory.ClientNative.CrashReporter.Start(ThreadStart start) in VintagestoryLib\Client\ClientPlatform\ClientNative\CrashReporter.cs:line 95
System.DllNotFoundException: Unable to load shared library 'glfw' or one of its dependencies. In order to help diagnose loading problems, consider using a tool like strace. If you're using glibc, consider setting the LD_DEBUG environment variable: 
/root/comp/vintagestory/glfw.so: cannot open shared object file: No such file or directory
/usr/share/dotnet/shared/Microsoft.NETCore.App/8.0.20/glfw.so: cannot open shared object file: No such file or directory
/root/comp/vintagestory/Lib/glfw.so: cannot open shared object file: No such file or directory
/root/comp/vintagestory/libglfw.so: cannot open shared object file: No such file or directory
/usr/share/dotnet/shared/Microsoft.NETCore.App/8.0.20/libglfw.so: cannot open shared object file: No such file or directory
/root/comp/vintagestory/Lib/libglfw.so: cannot open shared object file: No such file or directory
/root/comp/vintagestory/glfw: cannot open shared object file: No such file or directory
/usr/share/dotnet/shared/Microsoft.NETCore.App/8.0.20/glfw: cannot open shared object file: No such file or directory
/root/comp/vintagestory/Lib/glfw: cannot open shared object file: No such file or directory
/root/comp/vintagestory/libglfw: cannot open shared object file: No such file or directory
/usr/share/dotnet/shared/Microsoft.NETCore.App/8.0.20/libglfw: cannot open shared object file: No such file or directory
/root/comp/vintagestory/Lib/libglfw: cannot open shared object file: No such file or directory

   at System.Runtime.InteropServices.NativeLibrary.LoadLibraryByName(String libraryName, Assembly assembly, Nullable`1 searchPath, Boolean throwOnError)
   at OpenTK.Windowing.GraphicsLibraryFramework.GLFWNative.LoadLibrary(String libraryName, Version version, Assembly assembly, Nullable`1 searchPath)
   at OpenTK.Windowing.GraphicsLibraryFramework.GLFWNative.<>c.<.cctor>b__4_0(String name, Assembly assembly, Nullable`1 path)
   at System.Runtime.InteropServices.NativeLibrary.LoadLibraryCallbackStub(String libraryName, Assembly assembly, Boolean hasDllImportSearchPathFlags, UInt32 dllImportSearchPathFlags)
   at OpenTK.Windowing.GraphicsLibraryFramework.GLFWNative.glfwSetErrorCallback(ErrorCallback callback)
   at OpenTK.Windowing.GraphicsLibraryFramework.GLFW.SetErrorCallback(ErrorCallback callback)
   at OpenTK.Windowing.Desktop.GLFWProvider.EnsureInitialized()
   at OpenTK.Windowing.Desktop.Monitors..cctor()

 

Posted (edited)

You have glxgears, so you do have Mesa installed. Something is wrong with your graphics drivers. E.g., you might be using the generic VESA kernel module, instead of the proper i915 driver. The VESA driver works for basic things, but doesn't support graphics acceleration or 3D stuff like OpenGL.

You have to install Perl for "inxi" to work. It can tell you your driver situation, without having to dig through other stuff. The output of "inxi -G" for a properly working setup would look something like this:

Graphics:
  Device-1: Intel HD Graphics 620 driver: i915 v: kernel
  Display: x11 server: X.Org v: 21.1.11 with: Xwayland v: 23.2.6 driver: X:
    loaded: modesetting unloaded: fbdev,vesa dri: iris gpu: i915
    resolution: 1920x1080~60Hz
  API: EGL v: 1.5 drivers: iris,swrast platforms: gbm,x11,surfaceless,device
  API: OpenGL v: 4.6 compat-v: 4.5 vendor: intel mesa
    v: 25.0.7-0ubuntu0.24.04.2 renderer: Mesa Intel HD Graphics 620 (KBL GT2)

(Your integrated GPU is a HD Graphics 620.)

Edited by pigfood
Posted (edited)

BTW, choosing Slackware this day and age seems like a very odd choice. I've used it 25+ years ago, but nowadays I can't think of a good reason to use it (and the current user base is TINY).

If I wanted to tinker with stuff, I would use Arch (binary packages with no distro-tweaks and it's the base for SteamOS) or Gentoo (build from source). If I wanted something that most of time works well out of the box, I would choose some Debian or Ubuntu derivative. There is a variant for whatever desktop environment you want.

Most Linux OS ISOs can be used as Live images booted from USB sticks without installation, so you can easily experiment with stuff.

Edited by pigfood
Posted

I installed Perl an ran "inxi -G". this is the output from that:

bash-5.1# inxi -G
Graphics:
  Device-1: Intel UHD Graphics 620 driver: i915 v: kernel
  Device-2: Acer SunplusIT Integrated Camera type: USB driver: uvcvideo
  Display: server: X.Org 1.20.14 driver: loaded: modesetting unloaded: vesa
    resolution: 1920x1080~60Hz
  OpenGL: renderer: N/A v: N/A

I'm going to try updating the BIOS on my laptop and see if that helps. Lenovo does not offer and non-Windows update for the graphics drivers through their website so I don't have any options for that.

Posted
Just now, pigfood said:

BTW, choosing Slackware this day and age seems like a very odd choice. I've used it 25+ years ago, but nowadays I can't think of a good reason to use it (and the current user base is TINY).

If I wanted to tinker with stuff, I would use Arch (binary packages with no distro-tweaks and it's the base for SteamOS) or Gentoo (build from source). If I wanted something that most of time works well out of the box, I would choose some Debian or Ubuntu derivative. There is a variant for whatever desktop environment you want.

Most Linux OS ISOs can be used as Live images booted from USB sticks without installation, so you can easily experiment with stuff.

I'm using Slackware because my father has been using it since before 1.0 and is very well accustomed to it so I can ask as many questions as I need

Posted
On 1/17/2026 at 2:53 PM, CapnBlackHeart said:

This is my current crash log report:

Odd, just taking this at face value, it looks like it's failing to load the glfw library. That's shipped with VintageStory itself, so I don't believe it's something you'd have to install. Log says to set `LD_DEBUG` to get more info out of it to explain why it's failing to load.

Posted
On 1/18/2026 at 5:14 PM, CapnBlackHeart said:

I installed Perl an ran "inxi -G". this is the output from that:

bash-5.1# inxi -G
Graphics:
  Device-1: Intel UHD Graphics 620 driver: i915 v: kernel
  Device-2: Acer SunplusIT Integrated Camera type: USB driver: uvcvideo
  Display: server: X.Org 1.20.14 driver: loaded: modesetting unloaded: vesa
    resolution: 1920x1080~60Hz
  OpenGL: renderer: N/A v: N/A

I'm going to try updating the BIOS on my laptop and see if that helps. Lenovo does not offer and non-Windows update for the graphics drivers through their website so I don't have any options for that.

That inxi output does look ok. The kernel i915 driver is used and X11 uses the correct modesetting driver.

Do you have "glxinfo"? What does "glxinfo -B" say?

Do you have the libraries from the files list of this package (I don't know if that binary package is trustworthy):

https://slackware.pkgs.org/15.0/slackware-x86_64/mesa-21.3.5-x86_64-2.txz.html

What does "LIBGL_DEBUG=verbose glxgears" say?

Posted (edited)
Just now, Diff said:

Odd, just taking this at face value, it looks like it's failing to load the glfw library. That's shipped with VintageStory itself, so I don't believe it's something you'd have to install. Log says to set `LD_DEBUG` to get more info out of it to explain why it's failing to load.

I ran "LD_DEBUG=all ./run.sh" and got walls of debug logs but couldn't write it to a file to sift through it, so I ran LD_DEBUG=all ./run.sh >> crash.log" and got the same crash log I've been getting.

Just now, pigfood said:

Do you have "glxinfo"? What does "glxinfo -B" say?

That returns:

name of display: :0.0
Error: couldn't find RGB GLX visual or fbconfig

 

Just now, pigfood said:

Do you have the libraries from the files list of this package (I don't know if that binary package is trustworthy):

https://slackware.pkgs.org/15.0/slackware-x86_64/mesa-21.3.5-x86_64-2.txz.html

What does "LIBGL_DEBUG=verbose glxgears" say?

I have all of those files in /usr/bin, and "LIBGL_DEBUG=verbose glxgears" returns:

Error: couldn't get an RGB, Double-buffered visual

What I could do is wipe the drive and reinstall (I have nothing important on this machine) and install all of the available packages (full install) and see if that fixes anything. My thought is that since I didn't opt for the program development package, I'm missing some important programs or links or libs somewhere that most people would ordinarily have.

Edited by CapnBlackHeart
Posted

I reinstalled Slackware (full this time, no packages left out) and updated it, installed ASP.NET Core 8, made sure Perl and OpenAL were installed, ran "inxi -G" and this was the output:

Graphics:
  Device-1: Intel UHD Graphics 620 driver: i915 v: kernel
  Device-2: Acer SunplusIT Integrated Camera type: USB driver: uvcvideo
  Display: server: X.Org 1.20.14 driver: loaded: modesetting unloaded: vesa
    resolution: 1920x1080~60Hz
  OpenGL: renderer: Mesa Intel UHD Graphics 620 (KBL GT2)
    v: 4.6 Mesa 21.3.5

After running that, I ran "glxinfo -B" and got:

name of display: :0
display: :0  screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
    Vendor: Intel (0x8086)
    Device: Mesa Intel(R) UHD Graphics 620 (KBL GT2) (0x5917)
    Version: 21.3.5
    Accelerated: yes
    Video memory: 3072MB
    Unified memory: yes
    Preferred profile: core (0x1)
    Max core profile version: 4.6
    Max compat profile version: 4.6
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.2
OpenGL vendor string: Intel
OpenGL renderer string: Mesa Intel(R) UHD Graphics 620 (KBL GT2)
OpenGL core profile version string: 4.6 (Core Profile) Mesa 21.3.5
OpenGL core profile shading language version string: 4.60
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile

OpenGL version string: 4.6 (Compatibility Profile) Mesa 21.3.5
OpenGL shading language version string: 4.60
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile

OpenGL ES profile version string: OpenGL ES 3.2 Mesa 21.3.5
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20

The problem is, I'm still getting the same crash report, even now when Mesa and OpenGL seem to register fine with my system now. Does anyone know what could still be causing this? Is it a bug?

Posted

If it's still glfw that's freaking out, I'd say try exporting that LD DEBUG variable. I'm a little rusty on the finer details of environment variables but passing it in by prepending it *may* not propagate it correctly to everything in the shell script. 

Posted

Recent Vintage Story versions (including 1.21.6) come with the glfw library included (as Lib/libglfw.so.3). It gets properly loaded and used on my systems. The version that comes with Vintage Story is used, even if a system version of glfw is also installed.

What does "ldd Lib/libglfw.so.3" run from the Vintage Story directory say? (glfw/libglfw is the same library it's trying to load using different possible names.)

Does "glxgears" work and give you the spinning gears window?

  • Like 1
Posted
On 1/18/2026 at 8:03 AM, pigfood said:

BTW, choosing Slackware this day and age seems like a very odd choice. I've used it 25+ years ago, but nowadays I can't think of a good reason to use it (and the current user base is TINY).

If I wanted to tinker with stuff, I would use Arch (binary packages with no distro-tweaks and it's the base for SteamOS) or Gentoo (build from source). If I wanted something that most of time works well out of the box, I would choose some Debian or Ubuntu derivative. There is a variant for whatever desktop environment you want.

Most Linux OS ISOs can be used as Live images booted from USB sticks without installation, so you can easily experiment with stuff.

True or not, it's always a good opportunity to test software on different systems to ensure everything's properly modular. Ideally the game will run on any system with the correct dependencies; if not, something's wrong and needs to be fixed on the game's and/or the system's end.

Posted (edited)
4 hours ago, Sleeves said:

True or not, it's always a good opportunity to test software on different systems to ensure everything's properly modular. Ideally the game will run on any system with the correct dependencies; if not, something's wrong and needs to be fixed on the game's and/or the system's end.

IMO, Slackware is an expert-only distribution. It has the worst package management / dependency tracking out there and has a tiny user base these days. It's extremely easy to end up with a broken system with incompatible or missing dependencies. No offense to OP, but he is running VS as root and very clearly not in the target audience.

While I've been using Linux for 3 decades, I'm also aware of the fact that distributing software for it is a nightmare with dozens of distributions doing weird incompatible crap. The kernel itself has rather good backwards compatibility, pretty much everything else doesn't. Even if the libraries are compatible, there is a huge amount of "minor" surrounding things that aren't compatible between different versions, let alone different distributions.

The error handling and reporting in the Linux graphics stack is absolutely atrocious.

Edited by pigfood
Posted
On 1/23/2026 at 6:15 PM, Diff said:

If it's still glfw that's freaking out, I'd say try exporting that LD DEBUG variable. I'm a little rusty on the finer details of environment variables but passing it in by prepending it *may* not propagate it correctly to everything in the shell script. 

Working with LD_DEBUG_OUTPUT is proving to be more of a headache than I'm willing to deal with at the moment so I'm going to circle back to that bu thanks for pointing me to that option.

12 hours ago, pigfood said:

Recent Vintage Story versions (including 1.21.6) come with the glfw library included (as Lib/libglfw.so.3). It gets properly loaded and used on my systems. The version that comes with Vintage Story is used, even if a system version of glfw is also installed.

What does "ldd Lib/libglfw.so.3" run from the Vintage Story directory say? (glfw/libglfw is the same library it's trying to load using different possible names.)

Does "glxgears" work and give you the spinning gears window?

Running "glxgears' produces the desired output, the small window with spinning gears, and running "ldd Lib'libglfw.so.3" returns:

Lib/libglfw.so.3: /lib64/libc.so.6: version `GLIBC_2.34' not found (required by Lib/libglfw.so.3)

the problem with that is when I search for glibc with slackpkg, I get:

...
[ installed ] - glibc-2.33-x86_64-8_slack15.0
[ installed ] - glibc-i18n-2.33-x86_64-8_slack15.0
[ installed ] - glibc-profile-2.33-x86_64-8_slack15.0
[ installed ] - glibc-zoneinfo-2025c-noarch-1_slack15.0
...

None of these show an option for upgrading. I've already updated and upgraded all packages in my system (and ran lilo) so unless different mirrors have different versions of packages (I'm using the princeton mirror, option #1 in the U.S. list), I don't have know how to upgrade that

Posted (edited)
13 minutes ago, CapnBlackHeart said:

Running "glxgears' produces the desired output, the small window with spinning gears, and running "ldd Lib'libglfw.so.3" returns:

Lib/libglfw.so.3: /lib64/libc.so.6: version `GLIBC_2.34' not found (required by Lib/libglfw.so.3)

the problem with that is when I search for glibc with slackpkg, I get:

[ installed ] - glibc-2.33-x86_64-8_slack15.0

I looked at slackware's packages and it seems that, in version 15, the latest version of glibc is 2.33. Given there seems to be no glfw package (at least not an official one), I think your easiest solution would be to simply download an older glfw version that works with glibc 2.33 - a quick search told me 3.3.10 but I couldn't immediately find a concrete answer. Then you'd tell Vintage Story to use that copy instead. Though it may not actually work with the game, which is always a concern with downgrading packages.

Edited by Sleeves
Clarify VS may not work with old glfw
Posted

I have two T480. One slackware, one debian 12.

I play on debian 12 without issue. I know this isn't really an answer but because these laptops are so cheap, maybe consider getting a second one with debian and skip all this stuff.

Posted (edited)
13 hours ago, CapnBlackHeart said:

Working with LD_DEBUG_OUTPUT is proving to be more of a headache than I'm willing to deal with at the moment so I'm going to circle back to that bu thanks for pointing me to that option.

LD_DEBUG_OUTPUT isn't going to tell you anything new. The .NET runtime failed to load glfw, since it was linked against a glibc that was too new.

12 hours ago, CapnBlackHeart said:

Would downgrading glfw be preferable to upgading to Slackware-current from 15?

Downgrading glfw probably won't be enough. At least the sqlite and openal libraries that come with Vintage Story were linked against more recent glibc versions (meaning they won't work on your system). If you have Slackware 15 versions for these installed, that may work. (Try "ldd ..." against all the files in the Lib dir with .so in their name.)

Edited by pigfood
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.