Freesurfer install on Ubuntu Linux in WSL

Please read the latest MS documentation about how to setup WSL (version2 as of this writing) on your Windows machine, MS WSL Dcoumentation. Once you are able to bring up a terminal window in WSL's pre-installed version of Ubuntu linux you can proceed to setting up the Freesurfer environment. As of this writing, WSL should install Ubuntu 22 Linux and so the install of a Freesurfer Ubuntu 22 package is listed below.

The commands below shows how to download and install the freesurfer package. That is followed by notes on setting up a 3rd party X-windows server on the host Windows machine using Xming. If you do not need to view any brain images, e.g., through Freeview, then there is no need to setup the X-Windows server.

We do not advise manually trying to install packages in the Ubuntu Linux image in order to get freesurfer to run. Please allow the installer to try and determine what packages are needed on the system and install them.

developer@DESKTOP-LD48TB7:~$ cd

developer@DESKTOP-LD48TB7:~$ wget https://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/7.4.1/freesurfer_ubuntu22-7.4.1_amd64.deb
... download output ...

developer@DESKTOP-LD48TB7:~$ ls freesurfer_ubuntu22-7.4.1_amd64.deb
freesurfer_ubuntu22-7.4.1_amd64.deb

... update the package information in Ubuntu linux ...

developer@DESKTOP-LD48TB7:~$ sudo apt-get update -y
[sudo] password for developer:
... output from package updates ...

... install the freesurfer distribution under /usr/local/freesurfer/<release>. Anwer "Y" to any prompts ...

developer@DESKTOP-LD48TB7:~$ sudo apt-get -y install ./freesurfer_ubuntu22-7.4.1_amd64.deb
[sudo] password for developer:
The following NEW packages will be installed:
... output from package updates followed by install of freesurfer package ...

... the development stream package is installed under /usr/local/freesurfer/7-dev. The 7.2.0 release install would be under /usr/local/freesurfer/7.2.0 There is no conflict with having multiple versions of freesufer installed under parallel subdirectories - you only need to change the setting of the FREESURFER_HOME environment variable ...


developer@DESKTOP-LD48TB7:~$ ls /usr/local/freesurfer/7-dev/
ASegStatsLUT.txt FreeSurferEnv.sh Simple_surface_labels2009.txt build-stamp.txt fsafd mni sources.csh tktools
DefectLUT.txt SegmentNoLUT.txt WMParcStatsLUT.txt diffusion fsfast models sources.sh trctrain
FreeSurferColorLUT.txt SetUpFreeSurfer.csh average docs lib python subjects
FreeSurferEnv.csh SetUpFreeSurfer.sh bin etc matlab sessions tkmeditParcColorsCMA

... setup your shell with the necessary environment variables for X-windows graphics and freesurfer. You can add these directly to your shell init file, e.g., the .bashrc file for bash shell. You will also need a license file for freesurfer which can be pointed to by an environment variable ...


developer@DESKTOP-LD48TB7:~$ echo "export XDG_RUNTIME_DIR=$HOME/.xdg" >> $HOME/.bashrc
developer@DESKTOP-LD48TB7:~$ echo "export DISPLAY=:0" >> $HOME/.bashrc
developer@DESKTOP-LD48TB7:~$ echo "export FREESURFER_HOME=/usr/local/freesurfer/7-dev" >> $HOME/.bashrc

... Add your license file and set FS_LICENSE to point to it ...


developer@DESKTOP-LD48TB7:~$ echo "export FS_LICENSE=$HOME/license.txt" >> $HOME/.bashrc
developer@DESKTOP-LD48TB7:~$ echo "source /usr/local/freesurfer/7-dev/SetUpFreeSurfer.sh" >> $HOME/.bashrc

... logout and log back in and verify you see the following ...


- - - - - - - -freesurfer-linux-ubuntu18_x86_64-dev-20210518-60f02e6- - - - - - - -
Setting up environment for FreeSurfer/FS-FAST (and FSL)
FREESURFER_HOME /usr/local/freesurfer/7-dev/
FSFAST_HOME /usr/local/freesurfer/7-dev//fsfast
FSF_OUTPUT_FORMAT nii.gz
SUBJECTS_DIR /usr/local/freesurfer/7-dev//subjects
INFO: /home/developer/matlab/startup.m does not exist ... creating
MNI_DIR /usr/local/freesurfer/7-dev//mni

... you should now be able to run freeview and other commands from the distribution pointed to by $FREESURFER_HOME/bin. Please note that if you see the following error when trying to run freeview ...


developer@DESKTOP-LD48TB7:~$ freeview
QXcbConnection: Could not connect to display :0
Could not connect to any X display.

... then modify your DISPLAY variable to contain your IP address before the :0 ...


developer@DESKTOP-LD48TB7:~$ grep nameserver /etc/resolv.conf
nameserver 154.132.1.1
developer@DESKTOP-LD48TB7:~$ export DISPLAY="154.132.1.1:0"

... edit the Xming X0.hosts file from the windows side to contain your IP address BELOW the entry for localhost ...

... before edit ...
developer@DESKTOP-LD48TB7:~$ cat /mnt/c/"Program Files (x86)"/Xming/X0.hosts
localhost
... after edit ...
developer@DESKTOP-LD48TB7:~$ cat /mnt/c/"Program Files (x86)"/Xming/X0.hosts
localhost
154.132.1.1
... check DISPLAY matches IP address...
developer@DESKTOP-LD48TB7:~$ echo $DISPLAY
154.132.1.1:0

... try running freeview again ...


developer@DESKTOP-LD48TB7:~$ freeview