Running LFS on Linux
This document will guide you through the process of installing and configuring Wine and LFS to allow you to run LFS's game client in Linux. We'll also touch on the subjects of configuring your wheel and solving common problems. For Instructions on how to run a dedicated host see Hosting - Linux with Wine.
- 1 Intro
- 2 Basic setup
- 3 Configure a game controller
- 4 Troubleshooting
- 5 Advanced topics
What to expect
Users have reported that LFS runs great on Linux. It's however likely that performance will be a bit worse compared to Windows, and the Force Feedback is not as detailed. Graphics and audio appears to be at par with the native environment, and gamepads should work out of the box (although you may have to map the buttons manually).
Although LFS is intended to run on Windows the LFS developers make efforts to make sure that LFS runs on Linux and maintains comparability with older versions of Windows.
The Demo and S1/S2 versions should work equally well.
The steps in this article has been verified to work with:
- LFS S2 6J
- Kernel 3.16.7
- Debian GNU/Linux 8.1 (x86_64)
- Logitech G25 Racing Wheel
- Xbox 360 Wireless Controller for Windows
- Basic knowledge of Linux and your distribution (shell, package manager).
- A recent version of the Linux Kernel.
- Willingness to spend a little time setting things up (probably less time than I spent writing this article!)
Prepare your system
Let's become root, install sudo and add our primary user to the sudoers group:
su - apt-get install sudo usermod -a G sudo username exit
Replace username with the username of your primary user. After exiting, you may have to re-login for the group changes to take effect.
Contrib archive area
The winetricks package is not available in the default Debian repo. We must therefore enable the contrib archive area. Open /etc/apt/sources.list with nano:
sudo nano /etc/apt/sources.list
Add contrib to the very first deb entry so that the file reads:
deb http://ftp.se.debian.org/debian/ jessie main contrib
Obviously you do not need to change the mirror. Also, it is not necessary to add contrib to the deb-src entry.
ctrl+o to save, ctrl+x to exit.
In case you are running a x86_64 (ie: a 64-bit) operating system, you need to enable Multiarch support in order to run 32-bit software (such as LFS!):
sudo dpkg --add-architecture i386 && sudo apt-get update
Install and configure Wine
Now let's install Wine (the compatibility layer capable of running Windows applications on Linux) and winetricks (a helper script to download and install various redistributable runtime libraries):
sudo apt-get install wine wine32 winetricks
Then install the Windows DLLs required to run LFS properly (source):
winetricks d3dcompiler_43 d3dx9_43
Note that we do NOT issue this command as root!
Download LFS (list of mirrors):
Run the executable with Wine to install the game:
Wine may ask you to install mono (a cross platform, open source .NET framework), go ahead if you like but it's not required.
Follow the on-screen instructions. This guide assumes that you install LFS to the default location (C:\LFS\).
Change to directory where LFS was installed and run LFS:
cd ~/.wine/drive_c/LFS wine LFS.exe
Configure a game controller
Install the package that allows you to test, calibrate and alter the configuration of your input device (joystick as well as wheel):
sudo apt-get install joystick
Get the handler for your input device:
cat /proc/bus/input/devices | grep js
The command should output something like:
H: Handlers=event12 js0
Make note of the eventX data
If you have multiple input devices connected it might be easier to manually read the file to find the correct handler.
If you like, you may test the force feedback of your device:
ffcfstress -d /dev/input/event12
Replace event12 with whatever data you noted in the previous step.
To adjust the gain and autocenter strength:
ffset /dev/input/event12 -g 100 -a 50
Again, replace event12.
To adjust the range (wheel turn), first get the ID of your device:
dmesg | grep "Force feedback" | tail -n1
The command should output something like:
[16568.948617] logitech 0003:046D:C299.000F: Force feedback support for Logitech Gaming Wheels
Make not if the ID (in this case "0003:046D:C299.000F").
Then change the value in the corresponding "range" file, for example: /sys/module/hid_logitech/drivers/hid\:logitech/0003:046D:C299.000F/range
Finally configure the wheel from within LFS. See Options - Wheel/Joystick for more information. Please not that changing the "Force Strength" ingame does not work. See gain in the previous step.
If you are not getting any sound in LFS, trying installing the Advanced Linux Sound Architecture (ALSA):
sudo apt-get install alsa-base alsa-utils
Then run the configuration utility to make sure the ouput devices are configured correctly:
Use left/right arrow keys to select the Master item and up/down to change gain.
Press "M" to unmute the item ("MM" should change to "OO").
If you are still not getting any sound, make sure that your primary user is a member of the audio group:
sudo usermod -a -G audio username
Replace username with the username of your primary user. You may have to re-login for the group changes to take effect.
The program has encountered a serious problem
I ran into issues after switching from software rendering to NVIDIA's driver package.
If you encounter an error message similar (or identical) to:
Unhandled exception: page fault on write access to 0x7bf02fe8 in 32-bit code [...]
You may want to try the development branch of wine. To do this, install:
sudo apt-get install wine-development wine32-development
And run LFS with the development binary:
A LFS community forum member have reported experiencing momentary sound + graphic pauses when launching LFS from the (Wine) desktop shortcut created by the installer.
Launching the game from a terminal or configuring the shortcut to 'Run in terminal' appears to resolve the issue.
This has yet to be confirmed by another user.
Increase process priority
In Linux you may change the priority of a process by using the nice program. This comes in handy if you'd like to make sure that no background processes steals cpu time from LFS.
To launch LFS with higher priority, use:
nice -10 wine LFS.exe
Niceness values range from -20 (most favorable) to 19 (least favorable).
To change the priority of an already running process, first get the PID (process id) of LFS:
Take note of the number.
Then "renice" the process:
renice -p 12345 -n -10
Replace 12345 with the PID noted in the previous step and -10 with whatever priority you'd like to assign.
Launch LFS from a headless environment
So you just completed a minimal netboot installation of Linux without a graphical environment? What a coincidence! To be able to run LFS, first you will need to install the X server and the X Window System initializer:
sudo apt-get install xserver-xorg xinit
Then use xinit to launch wine (and LFS):
xinit "/usr/bin/wine32" "LFS.exe" -- :1
Manually install NVIDIA's driver package
First install the packages required to successfully run NVIDIA's installer package:
sudo aptitude install binutils gcc make linux-headers-$(uname -r)
Note that $(uname -r) will be reassigned to your kernel version. This is called command substitution and is, in this case, pretty safe.
Download your desired NVIDIA driver:
Make the binary file executable:
chmod +x NVIDIA-Linux-x86_64-352.30.run
Run the installer:
Choose to install NVIDIA's 32-bit compatability libraries when asked.
Choose to automatically update the X configuration file when asked.