moku-moku

もくもくインストール

mokumoku-installation

目的と概要

Windows PCに

します。

Windows PCは以下の要件を満たすことを前提とします。

一部の操作では管理者権限が必要です。特に、会社所有のPCをご使用の場合はご注意ください。

Macなど、Windows以外の計算機については、付録Aにて簡潔に説明します。

WSLのバージョン

WSLには、WSL1とWSL2があり、現在の既定値はWSL2です。 WSL2はWSL1の完全な上位バージョンではありませんが、WSL2の使用を強くお勧めします。

WSL 1 と WSL 2 の比較 | Microsoft Docs

後述するWSLgは、WSL2で動作します。

なお、WSL1とWSL2は、インストール後に相互変換可能です。

WSL環境でのGUI実行 (WSLg)

一般的にLinux環境では、グラフィックス描画にX Window System (X11)という仕組みを利用します。 (近年、Waylandへの置き換えが進んでいる、そうです。) その仕組みの利用に際して、表示を担うソフトウェアが「Xサーバー」です。

かつて、WSLでグラフィカルアプリケーションを利用するには、Xサーバー(Windowsアプリケーション)が必要でした。 現在は、WSLがグラフィカルアプリケーション(X11とWayland両方)の実行をサポートしています(WSLgと呼ばれます)。

Linux 用 Windows サブシステムで Linux GUI アプリを実行する

仮想GPU用のドライバーをインストールしてください。

環境設定

WSL実行基盤の設定とUbuntuのインストール

WSLのインストール手順はシンプルです。

スタートメニューの右クリックから、管理者権限のWindows PowerShell(もしくはコマンドプロンプト)を起動し、以下コマンドを実行するだけで、Ubuntu(ディストリビューションの既定値;2022年12月時点では22.04 LTS)がインストールされます。

wsl --install

WSL を使用して Windows に Linux をインストールする

再起動を促された場合は、指示に従って再起動してください。 サインインすると初回起動が始まります。

このコマンドは、

します。 前者「実行環境を整える」には管理者権限が必要ですが、後者のディストリビューションのインストールに管理者権限は不要です。 前者のみを実行するコマンドは無いようですので、インストールされるディストリビューションが不要な場合はインストール後に削除するか、手動で実行環境を整えてください。 また、WSLがすでにインストールされている場合、上記コマンドはヘルプメッセージを表示して終了します。 次節以降を参照して、ディストリビューションを指定したオンラインインストール、もしくは、Microsoft Storeからインストールしてください。 普段、管理者権限を持たない一般ユーザーとしてサインインしている方は、管理者としてサインインしてコマンド実行することをお勧めします。 一般ユーザーとしてサインインして、管理者権限のWidows PowerShell(もしくはコマンドプロンプト)から上記コマンドを入力した場合は、Ubuntuは管理者アカウントにインストールされますのでご注意ください。

また、WSL環境を整えてからしばらく使っていなかった場合は、次のコマンドでアップデートすることをお勧めします。(Windowsの管理者権限が必要です)

wsl --update

なお、管理者がディストリビューションをインストールすると、WSL2になるようです。 管理者として実行基盤を整え、一般ユーザーがディストリビューションをインストールした場合は、WSL1が既定値です。 一般ユーザーも既定値をWSL2にするためには、以下コマンドを実行します。

wsl --set-default-version 2

導入後のWSL1 <-> WSL2の相互変換は、付録Cを参照してください。

既定値以外のディストリビューションのオンラインインストール

wsl --installコマンドでインストール(オンラインインストール)できるのはUbuntuだけではありません。 以下のコマンドで、オンラインインストール可能なディストリビューション一覧が表示されます。

PS C:\Users\matelier> wsl -l --online
The following is a list of valid distributions that can be installed.
Install using 'wsl --install -d <Distro>'.

NAME                                   FRIENDLY NAME
Ubuntu                                 Ubuntu
Debian                                 Debian GNU/Linux
kali-linux                             Kali Linux Rolling
Ubuntu-18.04                           Ubuntu 18.04 LTS
Ubuntu-20.04                           Ubuntu 20.04 LTS
Ubuntu-22.04                           Ubuntu 22.04 LTS
Ubuntu-24.04                           Ubuntu 24.04 LTS
OracleLinux_7_9                        Oracle Linux 7.9
OracleLinux_8_7                        Oracle Linux 8.7
OracleLinux_9_1                        Oracle Linux 9.1
openSUSE-Leap-15.5                     openSUSE Leap 15.5
SUSE-Linux-Enterprise-Server-15-SP4    SUSE Linux Enterprise Server 15 SP4
SUSE-Linux-Enterprise-15-SP5           SUSE Linux Enterprise 15 SP5
openSUSE-Tumbleweed                    openSUSE Tumbleweed
PS C:\Users\matelier>

例えばUbuntu 24.04LTSをオンラインインストールするためには下記コマンドを実行します。

wsl --install -d Ubuntu-24.04

Microsoft Storeからのディストリビューション導入

オンラインインストールできないけれども、Microsoft Storeから提供されているディストリビューションもあります。

例えば、Microsoft Storeにて、wslで検索してください。 ディストリビューションを選び、表示される画面で入手もしくはインストールをクリックするとインストールされます。

store.png

インストール後、開くをクリックすると初回起動が始まります。

初回起動

インストールに成功すると、Linuxの世界が始まります。 初回起動時に、ユーザー名とパスワードを設定します。 ユーザー名は、Windowsのユーザー名とは関係なく設定できます。 同じでも良いですが、全角文字の使用はお勧めしません。 パスワードにも全角文字を使用しないでください。

Enter new UNIX username:
New password:
Retype new password:

次回以降起動の際は、スタートメニューにUbuntuなどの項目が現れるので、それを選択してください(メニュー項目の詳細はインストールしたディストリビューションに依存します)。

メモリ使用量制限

たくさんのメモリを搭載したPCでWSLを動かすこともあるでしょう。 大規模な計算では、多くのメモリを必要とすることがあります。 ところが既定値では、WSLが利用できるメモリ量は、PCに搭載されているメモリ量の半分に制限されるようです。

メモリ量は、WSL環境にて以下のコマンドで確認します。

$ free
               total        used        free      shared  buff/cache   available
Mem:         4014156      410952     3277884        2980      325320     3384068
Swap:        1048576           0     1048576

上記例では、WSLで約4GBのメモリが利用可能です。

WSLが利用できるメモリ量を変更するためには、設定ファイル C:\Users\[ユーザー名]\.wslconfig に、以下の記述を追加します。 (ファイルが存在しない場合は、新規作成してください。)

[wsl2]
memory=8GB

(設定を直ちに反映させるためには、wsl --shutdownコマンドを実行します。)

例えば64GB搭載したPCでは、50GB程度をWSLに割り当てても良いのではないでしょうか。

ただし、メモリの大部分をWSLが使用すると、Windowsの動作に支障が出る恐れがあります。 WSLが利用するメモリ量を拡大する場合は注意してください。

Linux開発環境設定

以下の三つのコマンドを実行して、必要なソフトウェア(ライブラリ)を導入します。 コマンド実行時にパスワード入力を求められたら、初回起動時に設定したパスワードを入力します。

sudo apt update
sudo apt upgrade -y
sudo apt install -y make gnuplot-x11 gfortran libopenmpi-dev libfftw3-dev liblapack-dev libopenblas-dev evince

各コマンドは、ネットワーク環境が良いところで実行してください。 ただし、セキュリティに厳しい組織内で実行すると、ファイヤーウォールで通信が遮断される場合があるそうです。

ここでインストールされるLAPACK, BLASはスレッド並列化されています。 スレッド並列は効果的でない場合が多いので、下記コマンドで無効化すること(.bashrcに書き込むこと)をお勧めします。

export OMP_NUM_THREADS=1

Linux上での作業には、テキストエディタを使用します。 標準でvimnanoはインストールされています。 Emacsgeditを使いたい人は、追加インストールしてください。

sudo apt install -y emacs
sudo apt install -y gedit

グラフィック表示を確認します。

gnuplot
gnuplot> plot sin(x)

sin関数が表示されれば、正常に動作しています。

sin.png

ファイル共有

WSLは、Windowsとは別の計算機であるかのように振る舞いますが、ファイルを共有するための仕組みが用意されています。

WSLから、Windowsのファイルを読み書きする

WindowsのCドライブは、WSLの/mnt/cにマウントされます。 例えばWindowsのデスクトップに配置されたファイルは、Cドライブ以下Users\[ユーザー名]\Desktop\にあります。 これはWSLからは、/mnt/c/Users/[ユーザー名]/Desktop/に見えます。

WSLのホームディレクトリにWindowsデスクトップへのリンクを作成すると、デスクトップを介してのファイル共有に便利です。

cd
ln -s /mnt/c/Users/[ユーザー名]/Desktop
ls Desktop

[ユーザー名]は、Windowsのユーザー名です。

WSLから、Windowsのエクスプローラーを起動する

WSLから、Windowsのコマンド(*.exe)を実行できます。 Windowsのエクスプローラーを実行するコマンドは、explorer.exeです。 同コマンドの引数にディレクトリを与えることができます。

WSLのカレントディレクトリを、Windowsのエクスプローラーで開くコマンドは

explorer.exe .

です。

Windowsから、WSLのファイルを読み書きする

Windowsのエクスプローラーのナビゲーションウィンドウ内のLinuxから、WSLのファイルシステムにアクセスできます。

ディストリビューション名のネットワークドライブアイコン(下図Ubuntu)が、WSLのルートディレクトリに相当します。

Windowsエクスプローラー

もしくは、エクスプローラーを起動してアドレスバーにLinux(もしくは\\WSL$)と入力して表示されるUbuntuなども、WSLのルートディレクトリです。

ホームディレクトリ以外のファイルをうかつに操作するとWSL環境を破壊しかねませんので、ご注意ください。

端末ソフトウェア

Windows11から、 Windowsターミナルが標準添付されています。 WSL、Windows PowerShell、コマンドプロンプトのいずれもが、Windowsターミナルで動作します。 Windows10でも、Microsoft Storeから追加インストールして利用できます。

MobaXtermは、端末ソフトウェアとして利用できるのはもちろんのこと、Xサーバーやファイル転送GUIなど豊富な機能を備えており、とても便利です。 有償版(Professional Edition)がありますが、無償枠(Home Edition)でも十分に実用的です。 WSLのみを利用する場合も役立ちますので、ご利用をお勧めします。

MobaXterm

アプリケーションのコンパイル

PHASE/0

PHASE/0のソースコードをダウンロード(登録が必要です)し、phase0_2024.01.tar.gzをWindowsのデスクトップに配置します。 Ubuntuを起動し、ホームディレクトリにこれらのファイルをコピーします。

cp /mnt/c/Users/[ユーザー名]/Desktop/phase0_2024.01.tar.gz ~

ファイルを伸長します。

cd
tar xf phase0_2024.01.tar.gz
cd phase0_2024.01

Ubuntu 24.04LTSを使っている場合は、付属するMakefile.Linux_genericでコンパイルする際にオプションを追加してください。

cd src_phase
F90="mpifort -fallow-argument-mismatch" make -f Makefile.Linux_generic install

講習会で利用されることも多い、仕事関数解析プログラムworkfuncを併せてコンパイルします。

cd ../src_workfunc
F90="gfortran -fallow-argument-mismatch" make install

実行形式ファイルphase, ekcal, epsmainworkfuncは、phase0_2024.01/bin/ディレクトリにあります。

動作検証

続けて、付属サンプルsamples/basic/Si8で動作を検証します。

cd ../samples/basic/Si8

PHASE/0:電子状態計算

まず、1コアだけ利用して計算します(非並列)。

../../../bin/phase

ファイルjobstatus000(二回目以降の実行では001, 002, …)に経過時間が出力されます。

 status       =      FINISHED
 iteration    =             15
 iter_ionic   =              1
 iter_elec    =             15
 elapsed_time =       201.3720

5行目が経過時間(単位:秒)です。

PHASE/0:並列計算

次に並列計算をテストします。-n 2で2並列で実行することを指示します。WSL1では並列実行時にWarningが出力されますが、計算結果に悪影響はありません。

mpiexec -n 2 ../../../bin/phase

実行時間が概ね半分になっていれば(半分より少し多くて)正常です。物理コア数以上の並列は実行時間の短縮になりません。

可視化のためのソフトウェアVESTA

VESTAは、主に固体物理分野において原子配列の表示などに用いられる著名なソフトウェアです。

VESTA_download

Windows版インストール

普通のWindowsアプリケーションです。 64bit版の利用をお勧めします。

ダウンロードしたZIPファイルを展開します。

VESTA_file.png

Linux版インストール

WSLgのおかげて、そのまま使えます。 VESTA-gtk3.tar.bz2をダウンロードします。

追加ソフトウェアが必要です。

sudo apt install -y bzip2 libglu1-mesa

ダウンロードしたファイルを展開(伸長)して、実行形式ファイルを実行します。

tar xz VESTA-gtk3.tar.bz2
./VESTA-gtk3/VESTA

Xサーバー無しでも動作しますが、(特に、低スペックのPCで)Xサーバーに表示を任せた方が動作が軽快に感じられることがありました。 Windows版は、さらに軽快に動作するように感じます。 WSLgの今後の改良に期待します。

VESTAによる電荷密度分布の可視化

上記実行サンプルでは電荷密度分布が出力されていますので、それを描画します。 VESTA(Windows版の利用を推奨)を起動して、上部メニューからFiles - Open...を選択します。 表示されるエクスプローラーのナビゲーションウィンドウ(左側のフォルダ階層表示)のLinuxを起点に、次のようにフォルダを選択していきます。

Linux > Ubuntu > home > [ユーザー名] > phase0_2021.02 > samples > basic > Si8

選択可能なファイルとしてnfchr.cubeファイルが表示されますので、これを選択するとVESTAで描画されます。

chargeSi8half.png

この意味にご興味ある方は、PHASE利用講習会や材料シミュレーションもくもく会に参加してください。

付録A:Windows(WSL Ubuntu)以外の計算機

コンパイラ(C, Fortran)、MPI(並列計算ライブラリ)、FFTW3(高速フーリエ変換ライブラリ)を用意すると何とかなる場合が多いです。 その他 Python3, gnuplot, Emacsなどお好みで追加してください。

WSLのUbuntu以外のディストリビューション

Mac

Mac (Apple Silicon) へのインストール手順を参照してください。

XQuartzは、Macで動作する代表的なXサーバーです。インストールしてください。

Macのターミナルは、UNIX的に利用できます。仮想計算機ではありませんので、DISPLAY環境変数を意識する必要はありません。

Linux:Ubuntu

使わなくなったWindows PCがあれば、Linuxを実機にインストールして利用できます。 Ubuntuはデスクトップ環境での利用を指向したディストリビューションですが、長期サポート(long-term support; LTS)が提供されていることが魅力です。

aptコマンドの引数など、WSLと同じように利用できます。

Linux:Rocky Linux, AlmaLinux

PCクラスターなど常時稼働している科学技術計算用の実機には、Red Hat Enterprise Linux(以下RHELと記す)もしくはその互換OSが利用されることが多いです。 具体的にはCentOSがその筆頭でしたが、CentOS 8は2021年末に、CentOS 7は2024年6月にそれぞれEOLを迎えました。 Rocky LinuxAlmaLinuxは2022年以降も引き続き利用可能なRHEL互換OSの有力候補です。

RHEL互換OSでは、dnfコマンドでソフトウェア(ライブラリ)を導入します。

sudo dnf install -y gcc-gfortran openmpi-devel fftw-static perl gnuplot make patch

OpenMPI関連のコマンドは/usr/lib64/openmpi/bin以下にインストールされます。 環境変数PATHを設定してください。

export PATH=/usr/lib64/openmpi/bin:$PATH

Xサーバーは自動的にインストールされ、Xサーバーとクライアントが正真正銘の同一計算機で動作しますのでDISPLAY環境変数の設定は不要です。

付録B:Windowsのアカウント制御

(まとめ)WSLが利用可能になってさえいれば、その他の項目は管理者権限不要の代替手段があります。

管理者権限が必要な作業

管理者権限不要

付録C:WSL1とWSL2の相互変換

次のコマンドで、ディストリビューション名とそのバージョンを調べます。

> wsl -l -v

実行結果は以下のようになります。

  NAME            STATE           VERSION
* Ubuntu-20.04    Stopped         2

ディストリビューションUbuntu-20.04をWSL1に変換するには、以下のコマンドを実行します。

> wsl --set-version Ubuntu-20.04 1

ディストリビューションUbuntu-20.04をWSL2に変換するには、以下のコマンドを実行します。

> wsl --set-version Ubuntu-20.04 2

付録D:Xサーバーソフトウェア (Windows向け)

Windows向けの代表的なXサーバーソフトウェアを示します。

VcXsrvは、Windows用のXサーバーソフトウェアです。 インストールには管理者権限が必要です。

一方MobaXtermは、Xサーバー付き(他にも盛沢山)の端末ソフトウェアです。 WSLで材料シミュレーションを実行する目的にはオーバースペックですが、第一原理計算を本格活用すると手元のパソコンだけでは計算資源が不足し、他の(大規模な)計算機を利用するようになります。 他の計算機にアクセスする際には、MobaXtermのような端末ソフトウェアが便利です。 MobaXtermには、「インストーラー版」と「ポータブル版」があります。

Windowsの作法に則ってインストールします。Windowsの管理者権限が必要です。

vcxsrv.png

mobaX.png

ZIPファイルをダウンロードし、展開したものをお好きなディレクトリに配置してください。exeファイルをダブルクリックして実行します。

moba_file.png

X Windows Systemの設定

WSL環境からグラフィックスをWindowsの画面に表示するための設定です。

Xサーバー(VcXsrvもしくはMobaXterm;これらはWindowsのアプリケーションです)を起動してください。

VcXsrv スタートメニューから、`VcXsrv` - `XLaunch`を選択します。幾つか設定項目があります。最初の二つは「次へ」を押してください。 ![vcxsrvinit1.png](/moku-moku/installation/images/vcxsrv/vcxsrvinit1.png) ![vcxsrvinit2.png](/moku-moku/installation/images/vcxsrv/vcxsrvinit2.png) `Disable access control`にチェックを入れてください。 ![vcxsrvinit3.png](/moku-moku/installation/images/vcxsrv/vcxsrvinit3.png) 以上を毎回設定するのは面倒なので、`Save configuration`を押してください。 ![vcxsrvinit4.png](/moku-moku/installation/images/vcxsrv/vcxsrvinit4.png) 例えば設定ファイルをデスクトップに配置すると、以下のアイコンが表示されます。これをダブルクリックすると、保存した設定のXサーバーが起動します。 ![icon.png](/moku-moku/installation/images/vcxsrv/icon.png)
MobaXterm インストール版はスタートメニューから、ポータブル版はZIP展開したファイルを選択して起動します。 ![moba_exec.png](/moku-moku/installation/images/moba_exec.png)

Xサーバー(VcXsrvもしくはMobaXterm)とXクライアント(WSLで動作するUbuntu)を単一のWindows PCで動作させる場合でも、WSLは仮想計算機として、Windowsとは別の計算機であるかのように振る舞います。 また、大規模な計算機を利用する場合も、その計算機(Xクライアント;PCクラスター、スパコンなど)で描画コマンドを発行し、ネットワークを介して、手元のPC(WindowsのXサーバー)で表示させる使い方が一般的です。 その際、Xクライアントに、Xサーバーの画面が(ネットワーク上の)どこにあるのか指示するために、DISPLAY環境変数を設定します。

export DISPLAY=localhost:0

WSLから見たlocalhostは、WSL自身です。 一方、XサーバーはWindows PCで動作しているので、辻褄があっていないように感じられますが、これで動作します。

export DISPLAY=`hostname`.mshome.net:0

(参考)Qiita: WSL2 での DISPLAY 設定

hostnameの部分は、コマンド実行結果に置き換えられます。