【WSL】[bioinfomatics] Windows11にWSL環境を整える(1)
2023年4月
この度新たにWSL環境を整える機会があったので備忘録として記録しておく。
使用したパソコンは2022年12月に¥115,980で購入したミニPC。RAM 64GBものがあったのでそちらを使用。
Minisforum EliteMini B550 AMD Ryzen™ 7 5700G / 64GB RAM+512GB SSD
使用した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.
- タスクバーの検索などからWindowsの機能の有効化または無効化を開く。
-
Linux用Windowsサブシステムの有効化
とHyper-V
にチェックを入れて、OK
- 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/ユーザー名 がホームディレクトリとなっている。
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起動時に実行されるファイルで、上写真では以下の実行内容が書かれているだけである。
- ホームディレクトリにある.bashrcを実行
- ホームディレクトリのbinフォルダにパスを通す
- ホームディレクトリの.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のメモ帳のようなアプリも使えるようになった。
続き↓↓
Discussion