Windows 再インストールした結果としてWSL環境を作り直すことになった.せっかくなので次の(a)(b)(c)をやってみた:
(a) Cドライブ以外の場所にWSLを置き直すことにした.(Cドライブ以外の場所に置きたいのは,開発にともなってディスクの書き換えが頻繁に起こるからである).
(b) WSLのホームディレクトリをなるべく浅いところに置いた.(たとえばホームディレクトリ以下で生成したファイルなどを取り出す場合,ホームディレクトリがわかりやすい場所にあると楽だ.)
(c) chmod できるようにする.デフォルトではWSLではchmodが無視される.このことにより問題が起こる場合もあるのでこのfixは重要.
1. 移動先フォルダの作成.Fドライブ(でもなんでも)直下に WindowsSubsystemForLinux と WSLHOME というフォルダを作っておく.WindowsSubsystemForLinux にWSLが置かれる予定である.WSLHOMEが将来WSLのホームディレクトリになる.
2. WSLを入れる準備.Power Shell を管理者権限で開き,次のように入力する:
PS C:\Users\Henrik> Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
再起動を要求されるのでそれに従う.
3. LinuxをStoreから選ぶ.Microsoft Storeを開き,linux で検索すると色々候補がでる.ここでは Ubuntu 18.04LTS を選んだ前提で話を進める.Ubuntu@WSL を初回起動し username/password を入れておく.以下では username = konrad とする.その後 exit して Ubuntu を終了する.
4. Power Shellの実行.管理者として実行する.(しばらくPower Shell での作業が続く).
まずchocolatelyを入れる:
PS C:\Users\Henrik> Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
次にlxrunofflineを入れる:
PS C:\Users\Henrik> choco install lxrunoffline
質問されたら y で答えてインストールを完了し exit する.
5. 再び Power Shell を管理者権限で起動する.
念のためユーザ名を確認しておく:
PS C:\Users\Henrik> whoami desktop\henrik
すなわちWindowsのユーザ名は henrik であることが確認できた.(この「henrik」の箇所は各自読み替えてほしい).次にFドライブ直下のWindowsSubsystemForLinux フォルダに書き込み権限を与える:
PS C:\Users\Henrik> icacls F:\WindowsSubsystemForLinux /grant "henrik:(OI)(CI)(F)" 処理ファイル: F:\WindowsSubsystemForLinux 1 個のファイルが正常に処理されました。0 個のファイルを処理できませんでした PS C:\Windows\system32>
次に
PS C:\Users\Henrik> lxrunoffline move -n Ubuntu-18.04 -d f:\WindowsSubsystemForLinux
する.確かに移動ができたことを確認しておく:
PS C:\Windows\system32> lxrunoffline get-dir -n Ubuntu-18.04 f:\WindowsSubsystemForLinux
以上でWSLがFドライブに置かれるようになった.
6. homeの移動.Ubuntu@WSL から
$ cd ~ $ cp -p .* /mnt/f/WSLHOME/
のようにして、「.bash_logout」、「.bashrc」、「.profile」などをなるべくそのまま(-p オプション)コピーしておく.
7. X環境の整備
Ubuntu@WSL から$ sudo vi /etc/passwd
して最後の方の行
konrad:x:1000:1000:"",,,:/home/konrad:/bin/bash
を
konrad:x:1000:1000:"",,,:/mnt/f/WSLHOME:/bin/bash
と変更し,:wq
する.$ exit
して一度WSLを終了する.
8. 確認.ふたたびWSLを起動して Ubuntu@WSL で
konrad@DESKTOP:~$ cd;pwd /mnt/f/WSLHOME
となっていればよい.
9. chmod 対応.まず,/etc/wsl.conf というファイルを必要ならば作る:$sudo touch /etc/wsl.conf
$sudo vim /etc/wsl.conf
のようにして編集する.
(case1)もし空ファイルだったら
[automount] options = "metadata"
のように書いて保存する.
(case2)もしすでに
[automount] options = "foo"
という行があったら
[automount] options = "metadata, foo"
のように修正し,保存する.
[2021/04/24追記]さらに,vim ~/.profile して最後の行に umask 022 と書いて保存する.
10. その他(git の設定)
改行コードを変更しないようにする.$ git config --global core.autocrlf input
参考にした記事:
Can I move the linux subsystem to a different drive?
Bash on Windowsのホームディレクトリ変更
WSLからマウントしたWindowsのドライブでchmodしたい
WSL(Windows Subsystem for Linux)の初期パーミッション設定
Ta Gen
/ 2020/05/01とても助かりました!
ratha
/ 2020/10/14ソフトウェアによっては/home/konradを直接見に行くので
sudo mv /home/konrad /home/konrad-org
(or sudo rm -rf /home/konrad)
sudo ln -s /mnt/f/WSLHOME /home/konrad
を併用した方がよりスムーズかと思います。