WSLをCドライブ以外の場所に置き,homeも別の場所に置くやつ.(自分用メモ)

Windows 再インストールした結果としてWSL環境を作り直すことになった.せっかくなので次の(a)(b)をやってみた:

(a) Cドライブ以外の場所にWSLを置き直すことにした.(Cドライブ以外の場所に置きたいのは,開発にともなってディスクの書き換えが頻繁に起こるからである).

(b) WSLのホームディレクトリをなるべく浅いところに置いた.(たとえばホームディレクトリ以下で生成したファイルなどを取り出す場合,ホームディレクトリがわかりやすい場所にあると楽だ.)

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. 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

すなわちユーザ名は 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. Ubuntu@WSL から

$ cd ~
$ cp -p .* /mnt/f/WSLHOME/

のようにして、「.bash_logout」、「.bashrc」、「.profile」などをなるべくそのまま(-p オプション)コピーしておく.

7. Ubuntu@WSL から
$ sudo vi /etc/passwd
して最後の方の行

konrad:x:1000:1000:"",,,:/home/username:/bin/bash

konrad:x:1000:1000:"",,,:/mnt/f/WSLHOME:/bin/bash

と変更し,:wqする.$ exitして一度WSLを終了する.

8. ふたたびWSLを起動して Ubuntu@WSL で

konrad@DESKTOP:~$ pwd
/mnt/f/WSLHOME

となっていればよい.

参考にした記事:
Can I move the linux subsystem to a different drive?
Bash on Windowsのホームディレクトリ変更

広告

SSDのデータサルベージ

■要約:「KURO-DACHI/CLONE/U3」で故障したSSDからデータを吸い上げられた.
※いつでもうまくいくわけではなく,私の場合うまく行ったという体験談です.

随分昔から重要なデータだけは外付けのSSDにsvnリポジトリで管理するようにしている.そのうちの一台がついに一切アクセスできなくなった.たまたま,少し容量の大きなSSDが余っていたのでダメ元で玄人志向「KURO-DACHI/CLONE/U3」で「丸ごとコピー」を試したところ,見事にコピーできた.

Cドライブの交換(作業メモ)

■要約:「KURO-DACHI/CLONE/U3」とAOMEI Partition Assistant でCドライブの交換を楽にすませた.1000円ぐらいのSSD用外付けケースもあると便利.

ずっと使っているパソコンのCドライブが300GBで手狭になってきたので交換することにした.
交換先として2TBのSSD(SanDisk Ultra | 3D SSD)を買った.SSDと一緒に玄人志向「KURO-DACHI/CLONE/U3」(以下では「KURO」と略す)というのを買った.

この「KURO」には3.5inchのHDD二台を同時に差し込むことができる.電源だけ入れて(USBでパソコンにつないでいない状態)「clone」というスイッチを押すだけで簡単にHDD1からHDD2にまるごとコピーできるというのが売りらしい.以前DドライブをバックアップしたときにはUbuntuを使って面倒な作業をしたけれど,これなら疲れていて集中力が落ちていても失敗しないだろうと考えた.

■「この手順でやればよかったな」というコピーの流れ:
1.自分のCドライブがMBRなのかGPTなのか確認する.(「mbr gpt 確認」でググってほしい).忘れないようにメモしておく.少し古いPCだと大抵MBRだと思う.
2.新品のSSDを外付け用ケースに入れてPCに接続し,自分のPCに合わせて MBR, NTFSで初期化する.
3.古い300GBのSSDを「KURO」の「HDD1」に,新しく買った2TBのSSDを「HDD2」に挿入し,「KURO」の電源を入れる.そして小さな「clone」というボタンを押す.正面四つのランプが左右に行き来する感じにオレンジ色に点滅する.
4.コピーが完了(四つのランプが同時に点滅を繰り返す状態)したら「KURO」の電源を切って2TBのSSDをPCにつなぎ,起動する.

■実際に試行錯誤しながらやったコピー作業:
1.メインPCの電源を切り,電源を抜く.
2.PCの筐体を開け,CドライブSSDを取り出す.(ドライバが必要になる作業)
3.古い300GBのSSDを「KURO」の「HDD1」に,新しく買った2TBのSSDを「HDD2」に挿入し,「KURO」の電源を入れる.そして小さな「clone」というボタンを押す.

これでコピーが始まるはずだったのだが,データの転送を示すLEDの点滅が始まらない.

なんらかの方法でSSDを初期化しないといけなかったらしい.(他の人が書いた体験記などを読むとどうも初期化なんかいらないというようなことも書いてある.こちらの条件と何が違うのかよくわからない.なにか私が読み落としたのかもしれない).それはともかく,私がやったのは:

4.2TBのSSDを「KURO」から取り出し,簡単な(1000円ぐらいの)ケースに入れてノートPC(メインじゃない方)に接続した.そして「Windowsマークを右クリック –> ディスクの管理」を開いてSSDをMBR,NTFSで初期化した.(これは自分の古いPCに合わせた.自分のCドライブがMBRなのかGPTなのかは前もって確認しておく必要がある).

5.2TBのSSDを再び「KURO」に戻し,「copy」ボタンを押した.するとコピーが始まった.数十分でコピーは完了する.(正面四つのランプが同期してオレンジ色に点滅し続けるのが完了の合図).
6.「KURO」の電源を切り,2TB SSD をメインPCに刺し,全てのケーブルを元通りにつなぐ.
7.メインPCの電源をつなぎ,起動テストする.

何事もなく「Resume From Hibernation」と表示されたのを見て「この子自分の脳が交換されたのに気づいてないんだろうな」と思ってちょっと面白かった.

■コピー後の作業:
さて,「KURO」の「丸ごとコピー」では全てがそのままコピーされるので,新しいCドライブも300GBまでしか認識されていない.「Windowsマークを右クリック –> ディスクの管理」を通じてその様子が確認できる.

System Reserved | Windows (C:) | 回復パーティション | 未割当て(1.5TB)

のようになっており,ここの未割当の1.5TBを割り当てても,間の「回復パーティション」で隔てられていてCドライブを大きくすることができない.「回復パーティション 移動」で検索し,AOMEI Partition Assistant の無料バージョンでパーティションの移動を行った.GUIですっとパーティションを動かして「確定」するだけで作業が完了するので衝撃を受けた.