Windows PCでLinuxを使ってクライオ電子線トモグラフィー関連のプログラムを動かす（１）概要とWSLgの導入

# Windows環境でクライオ電子線トモグラフィー関連のソフトウェアを動かしたい 

クライオ電顕関連のソフトウェアはLinux系で開発されているものがほとんどで、Linux専用機準備しろって話ではあるし、特にRelionを使うレベルまでくるとWorkstationじゃないとスペック的にお話にならない説もあるのですが、他方Windowsでしか動かないプログラムもいろいろあるわけで、Windows上でLinuxのプログラムを動かしたいというお話。
Linux系を動かすだけならMacでも事足りるのだが、GPUを使った演算はNVIDIAのCUDAでないとダメだったりするので、制限がある。

Linux初心者すぎて大変苦労したので、記録ついでに記事にしておく。なお、たぶん最善でないことを多数行っているので、指摘いただけると助かります。

使用中のPCスペック
```
Windows 11 Home (Insider Preview ver 22H2)
##Insider PreviewになっているのはWin 10でWSL2を使用していた名残なので、普通のWindows11で問題ない
CPU: Intel Corei7-8700K @ 3.70GHz
メモリ 32.0 GB
GPU: NVIDIA GeForce GTX 1070 Ti
```

WSLとは"Windows Subsystem for Linux"の略称で、「Windows上で動作するLinuxサブシステム」ということになる。普通のWindows PC上でLinuxを動かせる感じになるので、VirtualBoxのような仮想マシンソフトウェアを使ったり、デュアルブートにしたりすることと比べると大変ハードルが低い。しかも、以前はGUI(graphic user interface)をWSLで使うにはひと手間必要だったが、Windows 11になってからWSLg (Windows Subsystem for Linux GUI)が発表され、LinuxのGUIアプリが使えるようになった。

CUDAなども、WSLに対応してきており、使い勝手が最近急速によくなってきた印象がある。
ここではクライオ電子線トモグラフィー(Cryo-ET)でよく使うソフトウェアImod EMAN2 Chimera Relionのインストール、そしてこれらを含む多くのソフトウェアを横断的に利用するために開発されているscipionの導入について解説していく。
なお、scipionを利用する場合には他のプログラムを別途導入しないほうがよい（競合する可能性があるため）、となっているので注意いただきたい。



本記事では、WSLgの起動までと、よく使う基礎的なLinuxコマンド、便利なWSL機能についてまとめておく。

# WSLgの導入
(1) Microsoft Storeから「Windows Subsystem for Linux Preview」をインストール
(2) Microsoft Storeから「Ubuntu 20.04.4 LTS」をインストール
(Ubuntuでなくてもよいのだが、私はubuntuしか使ったことがないので、他は分かりません）

Ubuntu 20.04.4 LTSを開く

```
#Ubuntuのインストールが始まる
Installing, this may take a few miniutes...

#ユーザー名とパスワードをそれぞれ決めるように求められるので入力
Enter new UNIX username:
Enter new UNIX password:
Retype new UNIX password:
```
以上でWSLgの導入は終了である。簡単。開いたついでなので、以下のコマンドを打っておく。
```
$sudo apt-get update

##パスワードを求められるのでパスワードを入力
##apt-getは古く、aptのほうがよい？要検証
$は打ち込む必要はない。
```
sudoはスーパーユーザー(root)で実行という意味で、管理者権限で実行みたいな感じですかね。ユーザーレベルでは変更できない変更を施します。よく使います。
apt-get （またはapt）については細かいことはよく理解していませんが、linuxで使うパッケージ（ソフトウェア）の管理システムといった感じですね。updateでパッケージリストの更新を行っています。今後もよく使います。

2回目以降はUbuntu-20.04.4 LTSのアプリを起動すればよい

# よく使うlinuxコマンド
ついでなので、WSLgでよく使うコマンドについてまとめておきます。
なお、Linuxのフォルダはちゃんとこんな感じで下のほうに表示されます。ただ、Windowsのほうのファイルを移動すると、複製されて保存されることに注意してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606601/b18d4e24-e388-8c34-3d27-b3931a514539.png)


```
#ディレクトリの変更　change directory

$cd            ## home directoryに戻る（この場合 /home/ユーザー名
$cd..          ##1つ上のdirectoryに戻る
$cd XXXX       ##現在いるdirectoryの中にあるXXXフォルダ内に移動
$cd /usr/local ## usr/localへ移動
$cd /mnt/c     ## Cドライブへ移動（Windows上のファイルにアクセスできる）


#ファイルやフォルダの一覧表示 list segment

$ls           ##現在のディレクトリ内にあるファイルやフォルダを表示する

#新たなディレクトリを作成

$mkdir Folder1   #Folder1ディレクトリを作成

#ファイルやディレクトリの削除
#Windows的にファイルやフォルダにアクセスして削除しようとしても削除できない場合があり、linuxコマンドを使う必要がある
#ゴミ箱がないので、削除すると回復できない
#権限がなく、削除できない場合には、sudoを頭に入れる

$rm sample1.txt   #sample1.txtを削除
$rm -r folder1    #folder1ディレクトリごと削除する

#web上からファイルをダウンロード

$wget https://hogehoge       #hogehogeをダウンロード
```

# Windows Powershellを使ったWSLの管理

WSLの管理にはWindows Powershellを使う。そんなに使うことはないのだが、Linux使い慣れていないと、中身がぐちゃぐちゃになってどうしてよいかわからなくなることが多々あるので、バックアップを取る、リセットする、などの機能を紹介

（参考）
https://kb.seeck.jp/archives/17024
https://qiita.com/koji_hattori/items/1480d25aca8cdf5ac4a1

```powershell
#WSLのリストを表示
>wsl --list

Linux用サブシステムディストリビューション：
Ubuntu-20.04（既定）
Ubunut-18.04

といった感じで表示される。

#デフォルトのディストリビューションの変更
>wsl --set-default <Distro>
<Distro>には上記で表示されているディストリビューション名（Ubuntu-20.04やUbuntu-18.04)を入力

#エクスポート（tarファイルとして出力される）。うまくソフトウェアがインストールできたらやっておいたほうがよい
>wsl --export <Distro> <FileName>
例
>wsl --export Ubuntu20.04 Ubuntu220526.tar

#インポート
>wsl --import <Distro> <InstallLocation> <FileName>
例
>wsl --import Ubuntu20.04 c:/users/＜ユーザー名＞ Ubuntu220526.tar

#インポートしたあとデフォルトユーザーの設定が必須となる
#下記の2コマンドを実行する（有志によって作られたFunctionらしい）
Function WSL-SetDefaultUser ($distro, $user) { Get-ItemProperty Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\*\ DistributionName | Where-Object -Property DistributionName -eq $distro | Set-ItemProperty -Name DefaultUid -Value ((wsl -d $distro -u $user -e id -u) | Out-String); };
WSL-SetDefaultUser <Distro> <UserName>

#ディストリビューションの削除
>wsl --unregister <Distro>
または、Ubuntu20.04.4 LTSをWindowsのプログラムのアンインストールによっても消せる
```