📌

【WSL】[bioinfomatics] Windows11にWSL環境を整える(1)

2023/04/03に公開

2023年4月
この度新たにWSL環境を整える機会があったので備忘録として記録しておく。

使用したパソコンは2022年12月に¥115,980で購入したミニPC。RAM 64GBものがあったのでそちらを使用。
Minisforum EliteMini B550 AMD Ryzen™ 7 5700G / 64GB RAM+512GB SSD
https://store.minisforum.jp/products/minisforum-elitemini-b550


使用したPCのスペック

Cドライブに512 GBのM2.SSDがついていたが、キオクシア EXCERIA G2 NVMe™ SSDの2 TBのものに入れ替えた。

【 WSL環境構築 】

1. Ubuntuの入手

Microsoft storeからUbuntuをダウンロードする。
もし特定のversionのUbuntuが欲しければLTSと付いているものをダウンロードすればよい。(たまにversionによって使える/使えない機能がある。)

2. Linux用Windowsサブシステムの有効化

Ubuntuを立ち上げたときに以下のメッセージが出る場合は、windows側の設定が有効化されていない。

The Windows Subsystem for Linux optional component is not enabled. Please enable it and try again.

  1. タスクバーの検索などからWindowsの機能の有効化または無効化を開く。
  2. Linux用Windowsサブシステムの有効化Hyper-Vにチェックを入れて、OK
  3. PCの再起動が求められるので再起動

3. Linux カーネルの更新

Ubuntuを立ち上げなおす。

以下のメッセージが出る場合は、追加でLinuxカーネルの更新プログラムが必要。

Error: 0x800701bc WSL 2 ???????????? ??????????????????????? https://aka.ms/wsl2kernel ?????????

エラーメッセージ内のリンクに移動し、x64 マシン用 WSL2 Linux カーネル更新プログラム パッケージリンクからダウンロードして、実行。
特に選択肢がある訳でもないので、画面通りに進める。

4. ユーザー名とパスワードの設定

Ubuntuを立ち上げなおすとユーザー名とパスワードの設定が求められる。
パスワード画面は打っても何も表示されないが、実際は反映されている。

以下のようにプロンプト (ユーザー名@パソコン名:~$ のところ) が表示され、コマンド受付状態になっていれば成功

5. update/upgrade

まずはupdateとupgradeを行う。
sudoは管理者権限で実行することを明示している。無いとエラーが出るのでつけておく。update/upgrade以外でもsudoをつけるようにとメッセージが出ることがある。素直にsudoをつけてからコマンドを実行すればよい。

sudo apt update
sudo apt upgrade

yesかnoか聞かれるのでYを押す。

今後、何かをインストールする時にエラーが出るときは、まずこの2つを行って最新の状態にしてから再度試すとよい。


【 簡単なコマンド例 】

WSLのホームディレクトリ確認

pwdコマンドでLinux環境のホームディレクトリが確認できる。
/home/ユーザー名 がホームディレクトリとなっている。

parent working directoryの確認
pwd

/home/rchiji


ファイル一覧

lsコマンドで現在のディレクトリのファイル一覧を確認できる。

ls -la


-aは隠しファイルを表示、-lはリスト状に並べて表示するオプション。ls -alと書いてもls -a -lと書いても同じ。

.profileや.bashrcなどのファイルがあると思うが、これらはWSLを運用する上で重要なファイルなので調べてみるとよい。


ディレクトリ移動

cdコマンドを使用する。ディレクトリはWindowsで言うところのフォルダ。ディレクトリの移動とはWindowsのエクスプローラーでフォルダを開いていくようなイメージ。

# testフォルダを作成
mkdir test
# testフォルダに移動
cd test
# testフォルダのファイル一覧を確認
ls -la

ディレクトリを移動するとプロンプトの青色の箇所が変わるように、$の前は現在の箇所 (current directory)を示している。
初めから~とついているが、~はホームディレクトリ (私の場合はhome/rchiji)を意味する。
.は現在のディレクトリ、..は現在のディレクトリから見て一つ上のディレクトリを意味するので、うまく短縮して使うとよい。
この辺りは絶対パス/相対パスをググって勉強しておくべきである。


【 Windowsフォルダ ⇆ Linuxフォルダ】

UbuntuからWindowsのフォルダ/ファイルにアクセス

WSLもWindowsシステムのドライブを使っているのだが、ホームディレクトリのように簡単にアクセスできない。
例えばCドライブにアクセスするには/mnt/c/、Dドライブにアクセスするには/mnt/d/のように/mnt/ドライブ文字が先頭に必要となる。

# CドライブのPicturesフォルダに移動
cd /mnt/c/Users/rchiji/Pictures/
# Picturesフォルダの中身確認
ls -la

ホームディレクトリへはcd ~cdだけで戻ることができる。


WindowsのエクスプローラーからLinuxフォルダにアクセス

エクスプローラーからLinux環境のフォルダやファイルにアクセスできる。エクスプローラーの左側にLinuxという箇所が見つからなければ、エクスプローラー上部のアドレスバーにLinuxと直接打ち込んでもたどり着ける。

実際にホームディレクトリの中身を見てみる。.profileや.bashrcなどのファイルがあるのが確認できる。

何も表示されていなければ、エクスプローラーで隠しファイルを表示できるように設定変更しておくとよい。


ファイルパス

Windows側のRやPythonからWSLにファイルにアクセスすにはそのファイルパスが必要となる。

例えば、WSLのhomeディレクトリに「text.txt」というファイルがあるとする。そしてエクスプローラーでパスをコピーすると次のようなパスが得られる。
"\wsl.localhost\Ubuntu\home\rchiji\test.txt"

バックスラッシュの扱いを気を付ければWindows版のR, PythonからもWSLファイルが読み込み可能。

R

read.csv("\\\\wsl.localhost\\Ubuntu\\home\\rchiji\\test.txt")
read.csv("//wsl.localhost//Ubuntu//home//rchiji//test.txt")

Python

pd.read_csv(r"\\wsl.localhost\Ubuntu\home\rchiji\test.txt")
pd.read_csv("\\\\wsl.localhost\\Ubuntu\\home\\rchiji\\test.txt")
pd.read_csv("//wsl.localhost/Ubuntu/home/rchiji/test.txt")


【.profile/.bashrc】

ホームディレクトリにある.profileを開いてみる。ただのテキストファイルなのでメモ帳で開くことができる。※ 以下はNotepad++というフリーソフトで表示している。

.profileの中身

.profileはUbuntu起動時に実行されるファイルで、上写真では以下の実行内容が書かれているだけである。

  1. ホームディレクトリにある.bashrcを実行
  2. ホームディレクトリのbinフォルダにパスを通す
  3. ホームディレクトリの.local/binフォルダにパスを通す

実運用では.profileに起動時に行ってほしい内容を追記して、自分用にカスタマイズしていく。
例えば、Ubuntuの初期設定やエイリアス、通したいパスなどが挙げられる。

試しにプロンプトの色や表示する内容を変更してみる。
以下を.profileに書き込む。※ WindowsとLinuxでは改行コードが異なる。Windowsのメモ帳で改行するとLinuxでは読み込めない文字になるので注意。

PS1="\[\e[36m\][\u@:\w \D{%F %T}]\[\e[0m\]\n\\$ "

Ubuntuを立ち上げなおす。

プロンプトのスタイルが変更できている。(上記コードの意味は説明しない。bash プロンプト 色変更 のようにググると出てくる。自分流にカスタムしてよい。)

.bashrcにはもっと色々な処理が書かれている。

.bashrcの中身

上記の.profileへの追記を消して、.bashrcに以下を書き込んでみる。

PS1="\[\e[36m\][bioinfo@:\w]\[\e[0m\]\n\\$ "

Ubuntuを立ち上げなおすとプロンプトのスタイル変更が適応されている。

このように.profileでも.bashrcでも初期設定を書き込むことができる。

以後はこのプロンプトのスタイルで進める。

なお.bash_profileファイルが既に存在していれば.profileではなくそちらを優先して使用する。
一般的には.profileを編集するよりも.bash_profileを作成する方がよく紹介されている。
また.profileの中で.bashrcファイルが実行されるので、.bashrcの中に起動時の処理を書いてもよい。この辺りの使い分けは好みの範囲な気がする。


【GUIアプリ】

WSL2からLinuxのGUIアプリも簡単に使えるようになった。GUIアプリのxeyesやgeditを使ってみる。
まずはインストール

sudo apt install x11-apps
sudo apt install gedit

xeyesコマンドを打ってみるがdisplayを開けないというエラーが出る。

Windows PowershellでWSLをupdate

wsl --update


(Microsoft storeからWindows Subsystem for Linuxをインストールしても同じかも)

Ubuntuを立ち上げなおして、xeyesコマンドを打ってみる。眼が動くウィンドウが開かれれば成功。

Linuxのメモ帳のようなアプリも使えるようになった。





続き↓↓
https://zenn.dev/rchiji/articles/83b8b4e53393ab

Discussion