EVE Online on Gentoo Linux
Good news, everyone! I’m finally rid of Windows.
A couple weeks ago my Windows installation corrupted itself on the 5 minute trip home from the community theatre. I didn’t command it to go to sleep, I just unplugged it and closed the lid. Somehow, it managed to screw up its startup files, and the restore process didn’t do what it was supposed to so I was greeted with a blank screen. No errors. Just staring into the void.
I’ve been using Windows as the sole OS on this machine with Gentoo running in VirtualBox for various reasons related to minor annoyances of unsupported hardware, but as I needed a working machine sooner rather than later and the only tools I could find to solve my Windows problem appeared to be old, defunct, and/or suspicious, I downloaded an ISO of SystemRescueCd (www.sysresccd.org) and installed Gentoo in the sliver of space left on the drive.
There were only two real reasons why I was intent on keeping Windows: Netflix (netflix.com) and EVE Online (eveonline.com). I intended to get Windows up and running once the show was over at the theatre, but then I read about Netflix being supported in Linux (www.mpagano.com). That left me with just one reason to keep Windows: EVE. I turned to Wine (www.winehq.org) and discovered reports of it running EVE quite well (appdb.winehq.org). I also learned that the official Mac OS release of EVE runs on Cider (www.transgaming.com), which is based on Wine.
I had another hitch: I chose the no-multilib stage3 for that original sliver thinking I wouldn’t be running anything other than 64 bit software, and drive space was at a premium. EVE Online is 32 bit.
So I had to begin my adventure with switching to multilib. This didn’t involve me reinstalling Gentoo thanks to a handy, but unsupported and unofficial, guide (jkroon.blogs.uls.co.za) by Jaco Kroon.
As explained on Multilib System without emul-linux Packages (wiki.gentoo.org), I decided it’s better to build my own 32 bit library. So, the next step is to mask the emulation packages:
# /etc/portage/package.mask app-emulation/emul-linux-x86-*
Because I didn’t want to build a 32 bit variant for everything on my system, I iterated through what Portage wanted and marked several packages to build their 32 bit variant via use flags. This is what I wound up with:
# /etc/portage/package.use app-arch/bzip2 abi_x86_32 app-emulation/wine mono abi_x86_32 dev-libs/elfutils static-libs abi_x86_32 dev-libs/expat abi_x86_32 dev-libs/glib abi_x86_32 dev-libs/gmp abi_x86_32 dev-libs/icu abi_x86_32 dev-libs/libffi abi_x86_32 dev-libs/libgcrypt abi_x86_32 dev-libs/libgpg-error abi_x86_32 dev-libs/libpthread-stubs abi_x86_32 dev-libs/libtasn1 abi_x86_32 dev-libs/libxml2 abi_x86_32 dev-libs/libxslt abi_x86_32 dev-libs/nettle abi_x86_32 dev-util/pkgconfig abi_x86_32 media-libs/alsa-lib abi_x86_32 media-libs/fontconfig abi_x86_32 media-libs/freetype abi_x86_32 media-libs/glu abi_x86_32 media-libs/libjpeg-turbo abi_x86_32 media-libs/libpng abi_x86_32 media-libs/libtxc_dxtn abi_x86_32 media-libs/mesa abi_x86_32 media-libs/openal abi_x86_32 media-sound/mpg123 abi_x86_32 net-dns/avahi abi_x86_32 net-libs/gnutls abi_x86_32 net-print/cups abi_x86_32 sys-apps/dbus abi_x86_32 sys-devel/llvm abi_x86_32 sys-fs/udev gudev abi_x86_32 sys-libs/gdbm abi_x86_32 sys-libs/ncurses abi_x86_32 sys-libs/zlib abi_x86_32 virtual/glu abi_x86_32 virtual/jpeg abi_x86_32 virtual/libffi abi_x86_32 virtual/libiconv abi_x86_32 virtual/libudev abi_x86_32 virtual/opengl abi_x86_32 virtual/pkgconfig abi_x86_32 x11-libs/libX11 abi_x86_32 x11-libs/libXau abi_x86_32 x11-libs/libXcursor abi_x86_32 x11-libs/libXdamage abi_x86_32 x11-libs/libXdmcp abi_x86_32 x11-libs/libXext abi_x86_32 x11-libs/libXfixes abi_x86_32 x11-libs/libXi abi_x86_32 x11-libs/libXinerama abi_x86_32 x11-libs/libXrandr abi_x86_32 x11-libs/libXrender abi_x86_32 x11-libs/libXxf86vm abi_x86_32 x11-libs/libdrm abi_x86_32 x11-libs/libvdpau abi_x86_32 x11-libs/libxcb abi_x86_32 x11-libs/libxshmfence abi_x86_32 x11-proto/damageproto abi_x86_32 x11-proto/dri2proto abi_x86_32 x11-proto/dri3proto abi_x86_32 x11-proto/fixesproto abi_x86_32 x11-proto/glproto abi_x86_32 x11-proto/inputproto abi_x86_32 x11-proto/kbproto abi_x86_32 x11-proto/presentproto abi_x86_32 x11-proto/randrproto abi_x86_32 x11-proto/renderproto abi_x86_32 x11-proto/xcb-proto abi_x86_32 python_targets_python3_4 x11-proto/xextproto abi_x86_32 x11-proto/xf86bigfontproto abi_x86_32 x11-proto/xf86driproto abi_x86_32 x11-proto/xf86vidmodeproto abi_x86_32 x11-proto/xineramaproto abi_x86_32 x11-proto/xproto abi_x86_32
Now emerge both Wine — the latest and greatest of course — and the questionable library so textures will be rendered:
emerge -av media-libs/libtxc_dxtn =app-emulation/wine-1.7.29
You may get some messages along the lines of:
emerge: there are no ebuilds to satisfy ">=sys-libs/zlib-1.2.8-r1".
This was a bit of a head scratcher for me. I have `sys-libs/zlib-1.2.8-r1` installed. I didn’t have to accept its keyword. It’s already stable! I haven’t really looked into why, but you have to accept its keyword to press forward:
# echo '=sys-libs/zlib-1.2.8-r1' >> /etc/portage/package.accept_keywords
You’ll have to do the above several times for other packages when you try to emerge Wine. Most of the time the particular version it wants is something you already have installed. Check what you do have installed with eix or other favorite tool so you don’t downgrade anything. Once wine is installed, as your user run:
$ winecfg
Download the EVE Online Windows installer and run it using Wine:
$ wine EVE_Online_Installer_*.exe
Once that’s done, invoke the launcher as:
$ force_s3tc_enable=true wine 'C:\Program Files (x86)\CCP\EVE\eve.exe'
force_s3tc_enable=true
is needed to enable texture rendering. Without it, EVE
will freeze during start up. (If you didn’t emerge media-libs/libtxc_dxtn
, EVE
will start, but none of the textures will load, and you’ll have a lot of black
on black objects.) I didn’t have to do any of the other things I’ve found, such
as disabling DirectX 11.
As for my Linux setup: I have a Radeon HD6480G (SUMO/r600) in my ThinkPad Edge E525, and I’m using the open source radeon (www.x.org) drivers with graphics on high and medium anti-aliasing with Mesa and OpenGL. For the most part, I find the game play to be smooth and indistinguishable from my experience on Windows.
There are a few things that don’t work well. Psychedelic, rendering artifacts galore when I open the in-game browser (IGB) or switch to another application, but that’s resolve without logging out of EVE by changing the graphics quality to something else. It may be related to resource caching, but I need to do more testing. I haven’t tried going into the Captain’s Quarters (other users have reported crashes entering there) as back on Windows that brings my system to a crawl, and there isn’t anything particularly interesting about going in there…yet.
Overall, I’m quite happy with the EVE/Wine experience on Gentoo. It was quite easy and there wasn’t any real troubleshooting for me to do.
If you’re a fellow Gentoo-er in EVE, drop me a line. If you want to give EVE a go, have an extra week on me.
Update: I’ve been informed by Aatos Taavi that running EVE in windowed mode
works quite well. I’ve also been informed that we need to declare stable
packages in package.accept_keywords
because abi_x86_32
is use masked.