{"id":235,"date":"2014-10-31T16:56:25","date_gmt":"2014-10-31T16:56:25","guid":{"rendered":"http:\/\/blogs.gentoo.org\/titanofold\/?p=235"},"modified":"2014-11-04T14:36:47","modified_gmt":"2014-11-04T14:36:47","slug":"eve-online-on-gentoo-linux","status":"publish","type":"post","link":"https:\/\/blogs.gentoo.org\/titanofold\/2014\/10\/31\/eve-online-on-gentoo-linux\/","title":{"rendered":"EVE Online on Gentoo Linux"},"content":{"rendered":"<p>Good news, everyone! I&#8217;m finally rid of Windows.<!--more--><\/p>\n<p>A couple weeks ago my Windows installation corrupted itself on the 5 minute trip home from the community theatre. I didn&#8217;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&#8217;t do what it was supposed to so I was greeted with a blank screen. No errors. Just staring into the void.<\/p>\n<p>I&#8217;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\u00a0an ISO of <a href=\"http:\/\/www.sysresccd.org\/SystemRescueCd_Homepage\">SystemRescueCd<\/a>\u00a0(www.sysresccd.org) and installed Gentoo in the sliver of space left on the drive.<\/p>\n<p>There were only two real reasons why I was intent on keeping Windows: <a href=\"http:\/\/netflix.com\">Netflix<\/a>\u00a0(netflix.com) and <a href=\"https:\/\/eveonline.com\">EVE Online<\/a>\u00a0(eveonline.com). I intended to get Windows up and running once the show was over at the theatre, but then I read about <a title=\"Netflix on Gentoo\" href=\"http:\/\/www.mpagano.com\/blog\/?p=193\">Netflix being supported in Linux<\/a>\u00a0(www.mpagano.com). That left me with just one reason to keep Windows: EVE. I turned to <a href=\"https:\/\/www.winehq.org\/\">Wine<\/a>\u00a0(www.winehq.org) and discovered reports of it running <a href=\"https:\/\/appdb.winehq.org\/objectManager.php?sClass=version&amp;iId=25823\">EVE\u00a0quite well<\/a> (appdb.winehq.org). I also learned that\u00a0the official Mac OS release\u00a0of EVE runs on <a href=\"https:\/\/www.transgaming.com\/cider\">Cider<\/a>\u00a0(www.transgaming.com), which is based on Wine.<\/p>\n<p>I had another hitch: I chose the no-multilib stage3 for that original sliver thinking I wouldn&#8217;t be running anything other than 64 bit software, and drive space was at a premium. EVE Online is 32 bit.<\/p>\n<p>So I had to begin my adventure with switching to multilib. This didn&#8217;t involve me reinstalling Gentoo\u00a0thanks to a handy, but unsupported and unofficial,\u00a0<a href=\"http:\/\/jkroon.blogs.uls.co.za\/it\/gentoo\/gentoo-converting-no-multilib-to-multilib\">guide<\/a>\u00a0(jkroon.blogs.uls.co.za) by Jaco Kroon.<\/p>\n<p>As explained on <a href=\"http:\/\/https:\/\/wiki.gentoo.org\/wiki\/Multilib_System_without_emul-linux_Packages\">Multilib System without emul-linux Packages<\/a>\u00a0(wiki.gentoo.org), I decided it&#8217;s better to build my own 32 bit library.\u00a0So, the next\u00a0step is to mask the emulation packages:<\/p>\n<pre># \/etc\/portage\/package.mask\r\napp-emulation\/emul-linux-x86-*<\/pre>\n<p>Because I didn&#8217;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:<\/p>\n<pre># \/etc\/portage\/package.use\r\napp-arch\/bzip2 abi_x86_32\r\napp-emulation\/wine mono abi_x86_32\r\ndev-libs\/elfutils static-libs abi_x86_32\r\ndev-libs\/expat abi_x86_32\r\ndev-libs\/glib abi_x86_32\r\ndev-libs\/gmp abi_x86_32\r\ndev-libs\/icu abi_x86_32\r\ndev-libs\/libffi abi_x86_32\r\ndev-libs\/libgcrypt abi_x86_32\r\ndev-libs\/libgpg-error abi_x86_32\r\ndev-libs\/libpthread-stubs abi_x86_32\r\ndev-libs\/libtasn1 abi_x86_32\r\ndev-libs\/libxml2 abi_x86_32\r\ndev-libs\/libxslt abi_x86_32\r\ndev-libs\/nettle abi_x86_32\r\ndev-util\/pkgconfig abi_x86_32\r\nmedia-libs\/alsa-lib abi_x86_32\r\nmedia-libs\/fontconfig abi_x86_32\r\nmedia-libs\/freetype abi_x86_32\r\nmedia-libs\/glu abi_x86_32\r\nmedia-libs\/libjpeg-turbo abi_x86_32\r\nmedia-libs\/libpng abi_x86_32\r\nmedia-libs\/libtxc_dxtn abi_x86_32\r\nmedia-libs\/mesa abi_x86_32\r\nmedia-libs\/openal abi_x86_32\r\nmedia-sound\/mpg123 abi_x86_32\r\nnet-dns\/avahi abi_x86_32\r\nnet-libs\/gnutls abi_x86_32\r\nnet-print\/cups abi_x86_32\r\nsys-apps\/dbus abi_x86_32\r\nsys-devel\/llvm abi_x86_32\r\nsys-fs\/udev gudev abi_x86_32\r\nsys-libs\/gdbm abi_x86_32\r\nsys-libs\/ncurses abi_x86_32\r\nsys-libs\/zlib abi_x86_32\r\nvirtual\/glu abi_x86_32\r\nvirtual\/jpeg abi_x86_32\r\nvirtual\/libffi abi_x86_32\r\nvirtual\/libiconv abi_x86_32\r\nvirtual\/libudev abi_x86_32\r\nvirtual\/opengl abi_x86_32\r\nvirtual\/pkgconfig abi_x86_32\r\nx11-libs\/libX11 abi_x86_32\r\nx11-libs\/libXau abi_x86_32\r\nx11-libs\/libXcursor abi_x86_32\r\nx11-libs\/libXdamage abi_x86_32\r\nx11-libs\/libXdmcp abi_x86_32\r\nx11-libs\/libXext abi_x86_32\r\nx11-libs\/libXfixes abi_x86_32\r\nx11-libs\/libXi abi_x86_32\r\nx11-libs\/libXinerama abi_x86_32\r\nx11-libs\/libXrandr abi_x86_32\r\nx11-libs\/libXrender abi_x86_32\r\nx11-libs\/libXxf86vm abi_x86_32\r\nx11-libs\/libdrm abi_x86_32\r\nx11-libs\/libvdpau abi_x86_32\r\nx11-libs\/libxcb abi_x86_32\r\nx11-libs\/libxshmfence abi_x86_32\r\nx11-proto\/damageproto abi_x86_32\r\nx11-proto\/dri2proto abi_x86_32\r\nx11-proto\/dri3proto abi_x86_32\r\nx11-proto\/fixesproto abi_x86_32\r\nx11-proto\/glproto abi_x86_32\r\nx11-proto\/inputproto abi_x86_32\r\nx11-proto\/kbproto abi_x86_32\r\nx11-proto\/presentproto abi_x86_32\r\nx11-proto\/randrproto abi_x86_32\r\nx11-proto\/renderproto abi_x86_32\r\nx11-proto\/xcb-proto abi_x86_32 python_targets_python3_4\r\nx11-proto\/xextproto abi_x86_32\r\nx11-proto\/xf86bigfontproto abi_x86_32\r\nx11-proto\/xf86driproto abi_x86_32\r\nx11-proto\/xf86vidmodeproto abi_x86_32\r\nx11-proto\/xineramaproto abi_x86_32\r\nx11-proto\/xproto abi_x86_32<\/pre>\n<p>Now emerge both Wine &#8212; the latest and greatest of course &#8212; and the questionable library so textures will be rendered:<\/p>\n<pre><code>emerge -av media-libs\/libtxc_dxtn =app-emulation\/wine-1.7.29<\/code><\/pre>\n<p>You may get some messages along the lines of:<\/p>\n<pre>emerge: there are no ebuilds to satisfy \"&gt;=sys-libs\/zlib-1.2.8-r1\".<\/pre>\n<p>This was a bit of a head scratcher for me. I have syslibs\/zlib-1.2.8-r1 installed. I didn&#8217;t have to accept its keyword. It&#8217;s already stable! I haven&#8217;t really looked into why, but you have to accept its keyword to press forward:<\/p>\n<pre><code># echo '=sys-libs\/zlib-1.2.8-r1' &gt;&gt; \/etc\/portage\/package.accept_keywords<\/code><\/pre>\n<p>You&#8217;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\u00a0so you don&#8217;t downgrade anything. Once wine is installed, as your user run:<\/p>\n<pre><code>$ winecfg<\/code><\/pre>\n<p>Download the EVE Online Windows installer and run it using Wine:<\/p>\n<pre><code>$ wine EVE_Online_Installer_*.exe<\/code><\/pre>\n<p>Once that&#8217;s done, invoke the launcher as:<\/p>\n<pre><code>$ force_s3tc_enable=true wine 'C:\\Program Files (x86)\\CCP\\EVE\\eve.exe'<\/code><\/pre>\n<p><em>force_s3tc_enable=true<\/em> is needed to enable texture rendering. Without it, EVE will freeze during start up. (If you didn&#8217;t emerge media-libs\/libtxc_dxtn, EVE will start, but none of the textures will load, and you&#8217;ll have a lot of black on black objects.) I didn&#8217;t have to do any of the other things I&#8217;ve found, such as disabling DirectX 11.<\/p>\n<p>As for my Linux setup:\u00a0I have a Radeon HD6480G (SUMO\/r600) in my ThinkPad Edge E525, and I&#8217;m using the <a href=\"http:\/\/www.x.org\/wiki\/radeon\/\">open source radeon<\/a>\u00a0(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.<\/p>\n<p>There are a few things that don&#8217;t work well. Psychedelic, rendering artifacts galore when I open the in-game browser (IGB) or switch to another application, but that&#8217;s\u00a0resolve 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&#8217;t tried going into the Captain&#8217;s Quarters (other users have reported crashes entering there) as back on Windows that brings my system to a crawl, and there isn&#8217;t anything particularly interesting about going in there&#8230;yet.<\/p>\n<p>Overall, I&#8217;m quite happy with the EVE\/Wine experience on Gentoo. It was quite easy and there wasn&#8217;t any real troubleshooting for me to do.<\/p>\n<p>If you&#8217;re a fellow Gentoo-er in EVE, <a href=\"https:\/\/gate.eveonline.com\/Profile\/Samwise%20Dagordae\">drop me a line<\/a>. If you want to give EVE a go, have an <a href=\"https:\/\/secure.eveonline.com\/trial\/?invc=c20b5641-9c80-4f55-9826-02983e315504&amp;action=buddy\">extra week on me<\/a>.<\/p>\n<p>Update: I&#8217;ve been informed by Aatos Taavi that running EVE in windowed mode works quite well. I&#8217;ve also been informed that we need to declare stable packages in portage.accept_keywords because abi_x86_32 is use masked.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Good news, everyone! I&#8217;m finally rid of Windows.<\/p>\n","protected":false},"author":136,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true},"categories":[3,4],"tags":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p1tO5a-3N","_links":{"self":[{"href":"https:\/\/blogs.gentoo.org\/titanofold\/wp-json\/wp\/v2\/posts\/235"}],"collection":[{"href":"https:\/\/blogs.gentoo.org\/titanofold\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.gentoo.org\/titanofold\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.gentoo.org\/titanofold\/wp-json\/wp\/v2\/users\/136"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.gentoo.org\/titanofold\/wp-json\/wp\/v2\/comments?post=235"}],"version-history":[{"count":14,"href":"https:\/\/blogs.gentoo.org\/titanofold\/wp-json\/wp\/v2\/posts\/235\/revisions"}],"predecessor-version":[{"id":250,"href":"https:\/\/blogs.gentoo.org\/titanofold\/wp-json\/wp\/v2\/posts\/235\/revisions\/250"}],"wp:attachment":[{"href":"https:\/\/blogs.gentoo.org\/titanofold\/wp-json\/wp\/v2\/media?parent=235"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.gentoo.org\/titanofold\/wp-json\/wp\/v2\/categories?post=235"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.gentoo.org\/titanofold\/wp-json\/wp\/v2\/tags?post=235"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}