0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

要旨

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とレジストリが用いています。

settings.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からの最小限の設定に止めた方が無難です。

スクリーンショット 2025-04-22 142552.png

PowerShell (pwsh.exe)にwsl -d ディストリビューション名によって、起動する方法が一般的です。

Windowsターミナルでは、「パスの変換」の機能はあり(新しい環境ではデフォルトで設定される)、WindowsとLinuxのフォルダ名を相互変換してくれます。

スクリーンショット 2025-04-22 142719.png

エクスプローラーとWindowsターミナル(LinuxのBash)とを用いて、ディレクトリ名の手直しなしに移動できます。

つまり、bashからLinuxアプリを起動し、Windows側のデータを簡単に開くことができます。

Windowsターミナルとエクスプローラー.png

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"と入力する
エクプローラーの上バーへの入力.png

Paraviewはディレクトリが移動した状態で起動します
Paraviewのファイル開く-1.png

resultsフォルダのvtuファイルを選んで、読み込み・表示することが可能です
Paraview-温度データ可視化.png

右クリックして端末を開く

Linuxフォルダに移動するまでは同じです。エクスプローラー下側の余白部分で右クリックすると、下図のポップアップが表示されます。
ターミナルで開く.png

LinuxのディレクトリでWindowsの端末が起動します
ディレクトリを移動して端末が開いた.png

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を追加しない設定にしています。

/etc/wsl.conf
# Default user
[user]
default=elmeruser

# Do not append Windows PATH
[interop]
appendWindowsPath = false

CAE用の設定ファイルを編集して実行するだけなので、VS Codeからフォルダーを開けばEditorと、ディレクトリを移動したbash端末が使用できます。
Windowsターミナルを開くことなく作業ができます。
スクリーンショット 2025-04-22 170032.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?