要旨
WindowsからLinuxを動作させる定番ソフトは、VirtualBOXやVMware Workstation Playerでした。
しかし、(a) 起動に時間がかかる、(b) ホスト・ゲスト間の連携に難がある、(c) Pコア+Eコアのマシンでの動作が不安定、... などの課題があり快適とはいえない状況でした。
現在はこれらの課題が改善されたWSL2の利用が増えています。
WSLを快適に使うための基本操作を簡単にまとめました。
WSL2やVS-Codeは活発に開発が行われていて、改善・仕様変更されています。
柔軟に考えることも必要かもしれません。
1. 基本操作
1.1 確認した環境
2025年4月17日時点において、最新のリリース版を使用しました。
wsl --version
WSL バージョン: 2.4.13.0
カーネル バージョン: 5.15.167.4-1
WSLg バージョン: 1.0.65
MSRDC バージョン: 1.2.5716
Direct3D バージョン: 1.611.1-81528511
DXCore バージョン: 10.0.26100.1-240331-1435.ge-release
Windows バージョン: 10.0.26100.3775
1.2 使用したLinuxディストリビューションとアプリ
"wsl -l -o" コマンドで表示されるディストリビューションを使用しました。
OracleLinux 9は、利用者が少ないようです。tar形式の別メディアからのインストールが推奨されました。
PS C:\Users\xxxyyy> wsl -l -o
'wsl.exe --install <Distro>' を使用してインストールします。
NAME FRIENDLY NAME
AlmaLinux-8 AlmaLinux OS 8
AlmaLinux-9 AlmaLinux OS 9
AlmaLinux-Kitten-10 AlmaLinux OS Kitten 10
Debian Debian GNU/Linux
FedoraLinux-42 Fedora Linux 42
SUSE-Linux-Enterprise-15-SP5 SUSE Linux Enterprise 15 SP5
SUSE-Linux-Enterprise-15-SP6 SUSE Linux Enterprise 15 SP6
Ubuntu Ubuntu
Ubuntu-24.04 Ubuntu 24.04 LTS
archlinux Arch Linux
kali-linux Kali Linux Rolling
openSUSE-Tumbleweed openSUSE Tumbleweed
openSUSE-Leap-15.6 openSUSE Leap 15.6
Ubuntu-18.04 Ubuntu 18.04 LTS
Ubuntu-20.04 Ubuntu 20.04 LTS
Ubuntu-22.04 Ubuntu 22.04 LTS
OracleLinux_7_9 Oracle Linux 7.9
OracleLinux_8_7 Oracle Linux 8.7
OracleLinux_9_1 Oracle Linux 9.1
全て、WSL Ver. 2です。
- elmer_deb12
Debian 12にElmer (Elmer/Ice, MUMPS, Hypre, MMG, Zoltan and NetCDF) - Smeca-Alma9
Alma Linux 9にSalome-meca 2024.1 (Apptainer, NVIDIA Container Toolkit,
/etc/apptainer/apptainer.confを編集し、--nvを有効化) - Fistr_Oracle9
Oracle Linux 9にFrontISTR(autofistrのスクリプトにより、oneAPIのIMPIとMKLを組み込んだ)とEasyISTR
デスクトップアプリは、Flatpak、AppImage、ParaviewやScilabのようにLinuxディストリビューションの種類によらず動作するものが増えました。
昔と比べて、OSにはパッケージの新しさが要求されなくなったと思います。
リリースから2年弱のDebian 12、十分なテストで検証されたRHEL9互換を選びました。
アプリが古くて困ることはなかったです。
1.3 Windowsターミナルからの起動
WSLをインストール後、しばらくしてから管理者でWindowsターミナルを開くとWSLの端末が自動的に追加されます。
インフォメーション
入れ替えを繰り返すと、「無効な "icon" を持つプロファイルが見つかりました。...」のエラーが発生しました。
一度、アイコンを「無し」にして、エラーが止まってから、再度iconを指定することで登録を復旧できました。
なお、WSLの仕様変更によって、sourceの表記も変わったようです。
旧(ネット検索でよく見つかる従来の表記) 新たな表記
"source": "Windows.Terminal.Wsl" → "source": "Microsoft.WSL"
同様のことが以下のURLに記載されています。
対処法「ユーザー設定の読み込み中にエラーが発生しました。」
なお、設定の記録にはsetting.jsonとレジストリが用いています。
{
"$help": "https://aka.ms/terminal-documentation",
"$schema": "https://aka.ms/terminal-profiles-schema",
"actions": [],
"copyFormatting": "none",
"copyOnSelect": false,
"defaultProfile": "{574e775e-4f2a-5b96-ac1e-hjfsimdcvo}",
"keybindings":
...
{
"guid": "{574e775e-4f2a-5b96-ac1e-jdgicmighs}",
"hidden": false,
"name": "PowerShell",
"source": "Windows.Terminal.PowershellCore"
},
{
"closeOnExit": "always",
"guid": "{58486d3e-83cb-5614-962b-hjcusxgkv}",
"hidden": false,
"icon": "D:\\WSL_VMs\\elmer_deb12\\Elmer.ico",
"name": "elmer_deb12",
"source": "Microsoft.WSL"
},
{
"closeOnExit": "always",
"guid": "{dce20538-5b37-57f9-b601-iahcnumz}",
"hidden": false,
"name": "Smeca-Alma9",
"source": "Microsoft.WSL"
},
{
"closeOnExit": "always",
"commandline": "wsl -d Fistr_Oracle9",
"guid": "{c7477bdc-7b4a-55ba-a81d-cenhvvlbnicmc}",
"hidden": false,
"icon": "C:\\Users\\xxhhyd\\AppData\\Local\\Packages\\3810OracleAmericaInc.62074632F71C9_viklcionc\\LocalState\\frontistr-2.ico",
"name": "Fistr_Oracle9",
"pathTranslationStyle": "wsl",
"startingDirectory": "~"
}
...
強引に編集すると、ディストリビューションを認識しなくなることがありました。
レジストリやJSONファイルの編集、GUIからの設定と弄る箇所が多いので、消えたときの対処が面倒です。
時間に余裕ある方以外は、GUIからの最小限の設定に止めた方が無難です。
PowerShell (pwsh.exe)にwsl -d ディストリビューション名によって、起動する方法が一般的です。
Windowsターミナルでは、「パスの変換」の機能はあり(新しい環境ではデフォルトで設定される)、WindowsとLinuxのフォルダ名を相互変換してくれます。
エクスプローラーとWindowsターミナル(LinuxのBash)とを用いて、ディレクトリ名の手直しなしに移動できます。
つまり、bashからLinuxアプリを起動し、Windows側のデータを簡単に開くことができます。
1.4 スピード(一例としてFrontISTRのTutorial 2の計算時間により比較した)
Windows → Linux, Linux → Windowsの異なるファイルシステムをまたぐと、遅くなります(1.2~1.4倍の時間)。4年前は2倍近くかかっていたので、チューニングが進んで改善されたと思われます。
ソルバー:Windows、データの場所:Windows
D:\DEXCS\easyIstr-Work\FrontISTR\tutorial\02_elastic_hinge_parallel>mpiexec -np 4 fistr1 -t 1
##################################################################
# FrontISTR #
##################################################################
---
version: 5.7
git_hash: ef119f4133e843f4d6db0f6a9c018982c89a9fc8
build:
date: 2025-04-07T08:04:48%z
MPI: "2.0, Microsoft MPI"
OpenMP: 201511
option: "-p --with-tools --with-refiner --with-metis --with-mumps --with-lapack --with-ml "
HECMW_METIS_VER: 5
...
[MUMPS]: Analysis and Factorization completed.
[MUMPS]: Solution completed.
setup time : 2.6756726999999501
solve time : 0.12167199999998957
### Relative residual = 3.92644E-10
### FSTR_SOLVE_NLGEOM FINISHED!
====================================
TOTAL TIME (sec) : 3.48
pre (sec) : 0.10
solve (sec) : 3.38
====================================
FrontISTR Completed !!
ソルバー:Windows、データの場所:Linux
PS Microsoft.PowerShell.Core\FileSystem::\\wsl.localhost\Fistr_Oracle9\home\masahiro\autofistr\FrontISTR\tutorial\02_elastic_hinge_parallel> mpiexec -np 4 "D:\DEXCS\FrontISTR-msmpi_openblas-20250407\fistr1.exe" -t 1
##################################################################
# FrontISTR #
##################################################################
---
version: 5.7
git_hash: ef119f4133e843f4d6db0f6a9c018982c89a9fc8
build:
date: 2025-04-07T08:04:48%z
MPI: "2.0, Microsoft MPI"
OpenMP: 201511
option: "-p --with-tools --with-refiner --with-metis --with-mumps --with-lapack --with-ml "
HECMW_METIS_VER: 5
...
[MUMPS]: Analysis and Factorization completed.
[MUMPS]: Solution completed.
setup time : 2.7948485000001710
solve time : 0.12351859999989756
### Relative residual = 3.92583E-10
### FSTR_SOLVE_NLGEOM FINISHED!
====================================
TOTAL TIME (sec) : 4.79
pre (sec) : 0.26
solve (sec) : 4.54
====================================
FrontISTR Completed !!
ソルバー:Linux、データの場所:Linux
[masahiro@Desktop-12th 02_elastic_hinge_parallel]$ mpirun -np 4 fistr1 -t 1
##################################################################
# FrontISTR #
##################################################################
---
version: 5.7
git_hash: ef119f4133e843f4d6db0f6a9c018982c89a9fc8
build:
date: 2025-04-21T19:41:36%z
MPI: "3.1, Intel MPI 2021.15.0"
OpenMP: 201511
option: "-p --with-tools --with-refiner --with-metis --with-mumps --with-lapack --with-ml --with-parmetis --with-mkl "
HECMW_METIS_VER: 5
...
[MUMPS]: Analysis and Factorization completed.
[MUMPS]: Solution completed.
setup time : 2.8609017844502489
solve time : 8.5876552006922680E-002
### Relative residual = 4.93683E-10
Start visualize PSF 1 at timestep 1
### FSTR_SOLVE_NLGEOM FINISHED!
====================================
TOTAL TIME (sec) : 3.49
pre (sec) : 0.09
solve (sec) : 3.39
====================================
FrontISTR Completed !!
ソルバー:Linux、データの場所:Windows
[masahiro@Desktop-12th 02_elastic_hinge_parallel]$ cd /mnt/d/DEXCS/easyIstr-Work/FrontISTR/tutorial/02_elastic_hinge_parallel
[masahiro@Desktop-12th 02_elastic_hinge_parallel]$ mpirun -np 4 fistr1 -t 1
##################################################################
# FrontISTR #
##################################################################
---
version: 5.7
git_hash: ef119f4133e843f4d6db0f6a9c018982c89a9fc8
build:
date: 2025-04-21T19:41:36%z
MPI: "3.1, Intel MPI 2021.15.0"
OpenMP: 201511
option: "-p --with-tools --with-refiner --with-metis --with-mumps --with-lapack --with-ml --with-parmetis --with-mkl "
HECMW_METIS_VER: 5
...
[MUMPS]: Analysis and Factorization completed.
[MUMPS]: Solution completed.
setup time : 2.8661856873756619
solve time : 8.5866299930444256E-002
### Relative residual = 4.90191E-10
Start visualize PSF 1 at timestep 1
### FSTR_SOLVE_NLGEOM FINISHED!
====================================
TOTAL TIME (sec) : 4.03
pre (sec) : 0.16
solve (sec) : 3.87
====================================
FrontISTR Completed !!
1.5 LinuxフォルダのデータをWindowsアプリから開く
Windowsの標準仕様のアプリであれば、設定を弄ることなく、WindowsのアプリからLinuxフォルダのデータを開くことができます。
開くことができない例としては、CAD、メッシャー、ポストなどの統合環境 "Salome Platform"があります。
デイレクトリを移動して、アプリを開くには、以下の方法があります。
エクスプローラーでLinuxフォルダ(初回のみ"\wsl$"の入力が必要)に移動し、上のバーにコマンド入力
データ可視化ソフトのコマンド名”Paraview"と入力する
resultsフォルダのvtuファイルを選んで、読み込み・表示することが可能です
右クリックして端末を開く
Linuxフォルダに移動するまでは同じです。エクスプローラー下側の余白部分で右クリックすると、下図のポップアップが表示されます。
2. WSLのファイル編集・実行
2.1 sudo(管理者権限)が必要なファイル
ターミナル上で動作するソフト(vi、Emacsなど)からの編集が推奨されています(私はnanoを使用)。
但し、CAE用途に加えられた/optや/usr/localの長いファイル(壊れてもOSの動作自体に影響しません)は、GUIから操作をしたいので、"sudo gedit"により編集しています。
2.2 homeディレクトリのファイル
- 短く、作業内容が単純なもの
nanoを使うことが多いです - 文法チェックやシンタックスハイライトの機能を利用したいとき
VS-Codeを使うようにしています。ファイルの編集と実行のみで開発者用の機能は活用していません。
エクスプローラーからWSLのファイルの場所で右クリックし、ファイルを開き、編集します。
2.3 ファイルの編集と実行
WSLのLinux側からWindowsへのPATHが通っていると、Linux側から「code .」と入力すると、支援機能が自動インストールされるようです。
Linux 用 Windows サブシステムで Visual Studio Code の使用を開始する
私の場合は、コンパイル時にWindows側をスキャンして、ご認識することがあり、Windows側のPATHを追加しない設定にしています。
# Default user
[user]
default=elmeruser
# Do not append Windows PATH
[interop]
appendWindowsPath = false
CAE用の設定ファイルを編集して実行するだけなので、VS Codeからフォルダーを開けばEditorと、ディレクトリを移動したbash端末が使用できます。
Windowsターミナルを開くことなく作業ができます。