Results of testing 3rd party applications on 64-bit only eoan (19.10)

Further to the recent announcement and subsequent discussion, I did a little testing over lunch on eoan 19.10 with all i386 packages removed and the i386 part of the repo disabled.

I did this because there’s been a couple of assertions made:

  • That games ship their own required libs and will likely work
  • That WINE64 is sufficient for playing Windows games

These don’t seem to be true for the limited testing I did. I would urge more testing and feedback. I’m also keen to hear if my testing strategy is flawed in any way. Bear in mind I’m trying to approach this from a “normal user” point of view who wants to download and run a game they already had in their collection, or a new title they just bought.

I have a few (50) games in GOG that I have purchased over the years. I only had time to select a few at ~random. I picked 5 which gave me a representative sample of relatively modern stuff mixed with retro games, and a good mix between native Linux and native Windows titles.

I did this in a clean eoan VM. I used VirtualBox. VirtualBox isn’t great for 3d accelerated gaming, but it’s good enough to see if I can fulfill my two goals:

  • Does the game install?
  • Does the game run?

Preparation

  • Install eoan from June 6th daily ISO from cdimage.ubuntu.com

  • Install all updates using sudo apt update && sudo apt dist-upgrade

  • Remove any i386 packages - sudo apt remove "*:i386" (none removed as none found)

  • Disable i386 repo - sudo dpkg --remove-architecture i386

  • Shutdown and take a snapshot of the VM

  • Boot the VM and install WINE, because I know there’s going to be some Windows applications going on here.

sudo apt update
sudo apt install wine64

Note: The wine64 package from the Ubuntu archive recommends wine32 - which is uninstallable (obviously, as I have removed the capability to install i386 packages, of which wine32 is one.

alan@eoan:~$  sudo apt install wine32
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package wine32 is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'wine32' has no installation candidate
  • Logged into my GOG account and downloaded the installers for a bunch of games.

I then attempted to install and run each game in turn using either WINE64 (for Windows titles) or the supplied installer shell script.

Results

GOG - Theme Hospital
setup_theme_hospital_v3_(28027).exe

Fails to install
wine/wine64 complain that wine32 is not installed

alan@eoan:~/GOG$ wine64 ./setup_theme_hospital_v3_\(28027\).exe 
it looks like wine32 is missing, you should install it.
multiarch needs to be enabled first.  as root, please
execute "dpkg --add-architecture i386 && apt-get update &&
apt-get install wine32"
wine: Bad EXE format for Z:\home\alan\GOG\setup_theme_hospital_v3_(28027).exe.

GOG Quake The Offering
setup_quake_the_offering_2.0.0.6.exe

Fails to install
wine/wine64 complain that wine32 is not installed

alan@eoan:~/GOG$ wine64 ./setup_quake_the_offering_2.0.0.6.exe 
it looks like wine32 is missing, you should install it.
multiarch needs to be enabled first.  as root, please
execute "dpkg --add-architecture i386 && apt-get update &&
apt-get install wine32"
wine: Bad EXE format for Z:\home\alan\GOG\setup_quake_the_offering_2.0.0.6.exe.

GOG Braid
gog_braid_2.0.0.3.sh

Successfully installed game using supplied shell script

alan@eoan:~/GOG$ ./gog_braid_2.0.0.3.sh 
Verifying archive integrity... All good.
Uncompressing Braid (GOG.com)  100%  
Collecting info for this system...
Operating system: linux
CPU Arch: x86_64
trying mojosetup in bin/linux/x86_64
USING en_US
Braid
Braid
....

Game won’t launch - only 32-bit binary supplied

alan@eoan:~/Games/Braid$ ./start.sh 
Running Braid
./start.sh: line 19: ./launcher.bin.x86: No such file or directory
alan@eoan:~/Games/Braid$ file game/launcher.bin.x86 
game/launcher.bin.x86: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.18, BuildID[sha1]=e0a7c50f752aa8ca97613b0be74b44de7afd2437, not stripped

Used apt to install libc6-i386. This got the game one step further. Now it complains about some 32-bit libraries which are required. I didn’t iterate through all of them, but we can guess the 50 or so X related libs it will need, this was just the first. Clearly I cannot install any of them because my system now has no i386 support.

alan@eoan:~/Games/Braid$ ./start.sh 
Running Braid
./launcher.bin.x86: error while loading shared libraries: libX11.so.6: cannot open shared object file: No such file or directory

GOG Surgeon Simulator 2013
gog_surgeon_simulator_2013_2.0.0.3.sh

Successfully installed game
Game launches - selects 64-bit binary.
Game is a black window - suspect this is poor OpenGL support in VirtualBox

alan@eoan:~/Games/SS2013$ ./start.sh 
Running Surgeon Simulator 2013
Set current directory to /home/alan/Games/SS2013/game/64
Found path: /home/alan/Games/SS2013/game/64/ss2013.bin
Mono path[0] = '/home/alan/Games/SS2013/game/64/ss2013_Data/Managed'
Mono path[1] = '/home/alan/Games/SS2013/game/64/ss2013_Data/Mono'
Mono config path = '/home/alan/Games/SS2013/game/64/ss2013_Data/Mono/etc'
/dev/input/js0: driver version: 2.1.0 (20100)
/dev/input/js0: fd 3, buttons 5, axes 2, name VirtualBox USB Tablet
/dev/input/js0: axis  0: raw -32767, mapped 0.000000
/dev/input/js0: axis  1: raw -32767, mapped 0.000000
/dev/input/js1: driver version: 2.1.0 (20100)
/dev/input/js1: fd 4, buttons 1, axes 2, name VirtualBox mouse integration
/dev/input/js1: axis  0: raw   8200, mapped 0.000000
/dev/input/js1: axis  1: raw  -2048, mapped 0.000000

FTL Advanced Edition
ftl_advanced_edition_1_6_9_25330.sh

Successfully installed game using supplied shell script
Game launches - selects 64-bit binary
Game is a black window - suspect this is poor OpenGL support in VirtualBox

alan@eoan:~/Games/FTLAE$ ./start.sh 
Running FTL: Advanced Edition
Loading Arch = amd64
lib/SIL/src/sysdep/posix/time.c:82(sys_time_init): Using CLOCK_MONOTONIC as time source
Version: 1.6.9
Loading settings
Failed to load settings file!
Initializing Crash Catcher...
Starting up
Loading text
Initializing Video
Video: 1280x720, windowed

Shadow Warrior
setup_shadow_warrior_2_1.1.14.0_(18469).exe
Fails to install

alan@eoan:~/GOG$ wine64 ./setup_shadow_warrior_2_1.1.14.0_\(18469\).exe 
it looks like wine32 is missing, you should install it.
multiarch needs to be enabled first.  as root, please
execute "dpkg --add-architecture i386 && apt-get update &&
apt-get install wine32"
wine: Bad EXE format for Z:\home\alan\GOG\setup_shadow_warrior_2_1.1.14.0_(18469).exe.
10 Likes

Could you run the executables for Braid using “ldd”? That should give us a clue on what are the basic 32-bit libs needed for such kind of games.

Oh we kinda already know which are the most commonly needed libs, it’s the usual suspects. libxcursor, libxext, libxft, libfontconfig, libxeinerama, libx11. Some stuff is shipped like a custom libsdl2 and libfltk, but the rest is missing. Each game differs but those are the good base starter set. There’s about a hundred if you want to make sure you cover them all.

Those should be a good starting point. Keep in mind that the GPU (Mesa/Nvidia) and libc are the really critical ones since the Steam/Lutris Runtime are unable to provide them (they would conflict with the system).

Also keep in mind wine32 dependencies.

2 Likes

These are the ones that the Lutris runtime provides (from Ubuntu 18.04 actually), I would assume Steam Runtime has even more:

-rw-r--r-- 1 jorgetech     5040 mar 26 02:08 libaio.so.1
-rw-r--r-- 1 jorgetech   992520 mar 26 02:08 liballeg.so.4.4
-rw-r--r-- 1 jorgetech   108212 mar 26 02:08 libaudio.so.2
-rw-r--r-- 1 jorgetech 13839516 mar 26 02:08 libavcodec.so.57
-rw-r--r-- 1 jorgetech  2832816 mar 26 02:08 libavformat.so.57
-rw-r--r-- 1 jorgetech   546176 mar 26 02:08 libavutil.so.55
-rw-r--r-- 1 jorgetech   104236 mar 26 02:08 libboost_filesystem.so.1.62.0
-rw-r--r-- 1 jorgetech    91852 mar 26 02:08 libboost_iostreams.so.1.62.0
-rw-r--r-- 1 jorgetech    13764 mar 26 02:08 libboost_system.so.1.62.0
-rw-r--r-- 1 jorgetech  1363668 mar 26 02:08 libcairo.so.2
-rw-r--r-- 1 jorgetech   162776 mar 26 02:08 libcdio.so.17
-rw-r--r-- 1 jorgetech    30004 mar 26 02:08 libdatrie.so.1
-rw-r--r-- 1 jorgetech    46520 mar 26 02:08 libenet.so.7
-rw-r--r-- 1 jorgetech    95488 mar 26 02:08 libexslt.so.0
-rw-r--r-- 1 jorgetech   259344 mar 26 02:08 libfaad.so.2
-rw-r--r-- 1 jorgetech   397072 mar 26 02:08 libfluidsynth.so.1
-rw-rw-r-- 1 jorgetech   300888 ene 23 20:30 libfontconfig.so.1
-rw-r--r-- 1 jorgetech    91544 mar 26 02:08 libfribidi.so.0
-rw-r--r-- 1 jorgetech   230808 mar 26 02:08 libfuse.so.2
-rw-r--r-- 1 jorgetech    38140 mar 26 02:08 libgif.so.7
-rw-r--r-- 1 jorgetech  1301448 mar 26 02:08 libgloox.so.15
-rw-r--r-- 1 jorgetech   194608 mar 26 02:08 libgomp.so.1
-rw-r--r-- 1 jorgetech    42484 mar 26 02:08 libhistory.so.7
-rw-r--r-- 1 jorgetech 26903708 mar 26 02:08 libicudata.so.60
-rw-r--r-- 1 jorgetech  2913960 mar 26 02:08 libicui18n.so.60
-rw-r--r-- 1 jorgetech  1820016 mar 26 02:08 libicuuc.so.60
-rw-r--r-- 1 jorgetech  5422084 mar 26 02:08 libIrrlicht.so.1.8
-rw-r--r-- 1 jorgetech    59988 mar 26 02:08 libixml.so.2
-rw-r--r-- 1 jorgetech    58884 mar 26 02:08 libjansson.so.4
-rw-r--r-- 1 jorgetech    57536 mar 26 02:08 libjbig.so.0
-rw-r--r-- 1 jorgetech    46596 mar 26 02:08 libjson-c.so.3
-rw-r--r-- 1 jorgetech   399156 mar 26 02:08 libleveldb.so.1
-rw-r--r-- 1 jorgetech   198840 mar 26 02:08 liblua5.1.so.0
-rw-r--r-- 1 jorgetech   223024 mar 26 02:08 liblua5.2.so.0
-rw-r--r-- 1 jorgetech   501436 mar 26 02:08 libluajit-5.1.so.2
-rw-r--r-- 1 jorgetech    95664 mar 26 02:08 libmad.so.0
-rw-r--r-- 1 jorgetech   287060 mar 26 02:08 libmikmod.so.3
-rw-r--r-- 1 jorgetech    54828 mar 26 02:08 libminiupnpc.so.10
-rw-r--r-- 1 jorgetech   317208 mar 26 02:08 libmodplug.so.1
-rw-r--r-- 1 jorgetech    30204 mar 26 02:08 libmpeg2convert.so.0
-rw-r--r-- 1 jorgetech   124780 mar 26 02:08 libmpeg2.so.0
-rw-r--r-- 1 jorgetech   363544 mar 26 02:08 libmpg123.so.0
-rw-r--r-- 1 jorgetech   148800 mar 26 02:08 libncurses.so.5
-rw-r--r-- 1 jorgetech   214336 mar 26 02:08 libncursesw.so.5
-rw-r--r-- 1 jorgetech    42356 mar 26 02:08 libnih-dbus.so.1
-rw-r--r-- 1 jorgetech   111996 mar 26 02:08 libnih.so.1
-rw-r--r-- 1 jorgetech   165184 mar 26 02:08 libphysfs.so.1
-rw-rw-r-- 1 jorgetech   169632 mar 26 02:07 libpng12.so.0
-rw-r--r-- 1 jorgetech   198828 mar 26 02:08 libportaudio.so.2
-rw-r--r-- 1 jorgetech   287104 mar 26 02:08 libreadline.so.7
-rw-r--r-- 1 jorgetech   141008 mar 26 02:08 libSDL2_image-2.0.so.0
-rw-r--r-- 1 jorgetech   141776 mar 26 02:08 libSDL2_mixer-2.0.so.0
-rw-r--r-- 1 jorgetech    17896 mar 26 02:08 libSDL_net-1.2.so.0
-rw-r--r-- 1 jorgetech   169740 mar 26 02:08 libSDL_sound-1.0.so.1
-rw-r--r-- 1 jorgetech    26100 mar 26 02:08 libSDL_ttf-2.0.so.0
-rw-r--r-- 1 jorgetech    30176 mar 26 02:08 libsnappy.so.1
-rw-r--r-- 1 jorgetech    58832 mar 26 02:08 libsndio.so.6.1
-rw-r--r-- 1 jorgetech    71172 mar 26 02:08 libSoundTouch.so.1
-rw-r--r-- 1 jorgetech   173820 mar 26 02:08 libsoxr.so.0
-rw-r--r-- 1 jorgetech   757220 mar 26 02:08 libstdc++.so.5
-rw-r--r-- 1 jorgetech   599400 mar 26 02:08 libswscale.so.4
-rw-r--r-- 1 jorgetech    25852 mar 26 02:08 libthreadutil.so.6
-rw-r--r-- 1 jorgetech   513648 mar 26 02:08 libtiff.so.5
-rw-r--r-- 1 jorgetech   137076 mar 26 02:08 libtinfo.so.5
-rw-r--r-- 1 jorgetech   256144 mar 26 02:08 libupnp.so.6
-rw-r--r-- 1 jorgetech   165392 mar 26 02:08 libv4lconvert.so.0
-rw-r--r-- 1 jorgetech   464412 mar 26 02:08 libwebp.so.6
-rw-r--r-- 1 jorgetech  2761284 mar 26 02:08 libwx_baseu-3.0.so.0
-rw-r--r-- 1 jorgetech  1696952 mar 26 02:08 libwx_gtk2u_adv-3.0.so.0
-rw-r--r-- 1 jorgetech  5714704 mar 26 02:08 libwx_gtk2u_core-3.0.so.0
-rw-r--r-- 1 jorgetech  1051208 mar 26 02:08 libx264.so.152
-rw-r--r-- 1 jorgetech     9636 mar 26 02:08 libXinerama.so.1
-rw-r--r-- 1 jorgetech  2011260 mar 26 02:08 libxml2.so.2
-rw-r--r-- 1 jorgetech     5476 mar 26 02:08 libxshmfence.so.1
-rw-r--r-- 1 jorgetech   280012 mar 26 02:08 libxslt.so.1
-rw-r--r-- 1 jorgetech   120300 mar 26 02:08 libz.so.1
-rw-r--r-- 1 jorgetech    30520 mar 26 02:08 libzzip-0.so.13

Actually, I’ll try to test a 32-bit Linux native game and see what would be the missing dependencies using Lutris Runtime, that should narrow down the list to the most important ones.

1 Like

For testing games, you should probably not be using VirtualBox. VMware has decent graphics support while being easy to set up, or KVM can be passed a physical graphics card.

1 Like

Completely agree. I was merely using a lunch-break to test whether they could be installed and launched. The 3d performance wasn’t something I was concerned with. Testing on real bare metal with “proper” drivers would be ideal.

I hope someone setup “gaming repos” for next ubuntu release.

1 Like

I put one of my laptops to use and tested a few games. I didn’t bother with 32bit native games but I did try one which comes bottled up in its own WINE prefix.

Pretty pictures: https://imgur.com/a/ivkEOqP

FTL - Figured I might try it to confirm @popey’s findings - Works fine

FlatOut 2 - Comes with WINE bundled in (perfect test to see if a self contained version of WINE would work) - It doesn’t work, WINE segfaults and the game never starts

Observer - Recent game, Unreal Engine 4 - Segfaults as it gets into game proper

SOMA - Works fine

3 Likes

Just a couple of dependency data points from my notes. List of dependencies is not exhaustive; just what I needed to install to get it running.

The Binding of Isac (HumbleBundle)
libgtk2.0-0:i386 libxtst6:i386 libbz2-1.0:i386 libvorbisfile3:i386 libcurl3:i386 libnss3:i386 libidn11:i386 libxt6:i386

Trine2 (HumbleBundle)
libopenal1:i386

STM32CubeMX (Embedded development tool from ST Microelectronics):

Supported operating systems and architectures
Linux®: 32-bit (x86) and 64-bit (x64) (tested on RedHat, Ubuntu and Fedora)
Since STM32CubeMX is a 32-bit application, some versions of Linux 64-bit
distributions require to install 32-bit compliant packages such as ia32-libs.

Edit: Does not install without i386 libs.

3 Likes

I seriously hope Canonical reverses the decision to drop 32-bit libraries. Otherwise, gamers (and maybe even everyday users) would avoid Ubuntu like a plague.

Ran the same games on a different laptop with NVidia graphics. Just swapped the SSD over.

Everything was similar with the difference that Observer actually works: https://imgur.com/a/aPVuvLQ

So, any 32bit Linux games are no go. Any 32bit Windows games or GOG installers (which is all of them) also don’t work. VALVe has said they’re not going to support 19.10. This could effectively kill Ubuntu usage among the gaming crowd, and something tells me the overhead from containerizing every game isn’t going to make people too happy.

3 Likes

I don’t know why Ubuntu not maintain just more or less 100 packages necessary to have compatibility with almost games and apps.

1 Like

So, how about including the i386 libraries in 19.10? This is like if Microsoft removed the Wow64 emulator.

Otherwise… you will lose users.

Ubuntu is not just Canonical it’s also us all from the rest of the Community, why does it have to be Canonical doing it? Why won’t the rest of us do it?

3 Likes

Last time I checked .NET 3.5, .NET 4.0 and .NET 4.5 didn’t install on 64 bit wine , so all the .NET softwares are gone too.

2 Likes

Because that’s part of core system, and envolved giant projects like Steam and Wine, if Canonical don’t think that is important, they saying lot users don’t have importance, and well, they can do this, but that users can move to another way

1 Like

At least there’s still Pop!_OS. We can just add their repos

Intel/Altera Modelsim
FPGA development tool used for VHDL simulation. Requires 32-bit libraries. Sources:
https://www.lvoudouris.com/installing-xilinx-vivado-2016-4-and-intel-modelsim-starter-edition-16-1-on-64-bit-ubuntu-16-10/
http://fpgasoftware.intel.com/requirements/19.1/

Can we change the title to: “Results of testing 3rd party applications on 64-bit only eoan (19.10)”?

1 Like