どうも、白夜霧(@KiRi_Byakuya)です。
今回は、WSLのUbuntuをCドライブから別のドライブへ移動(引っ越し)させる方法の覚書記事です。
CドライブでWSLのディストリビューションを使っていても、機能面では全く問題ありません。
ただ、今後色々とやっていくことを考えると、容量の問題も出てきそうなので、WindowsがいるCドライブ以外の別ドライブに移動させます。
私は「Cドライブはできる限り空き容量を確保しておきたい」派
目次
WSLを別ドライブに移動 / 環境情報
この記事は下記環境で実施しています。
エディション Windows 11 Home
バージョン 23H2
インストール日 2023/08/21
OS ビルド 22631.3296
エクスペリエンス Windows Feature Experience Pack 1000.22687.1000.0
WSLのバージョン
wsl --version
WSL バージョン: 2.1.5.0
カーネル バージョン: 5.15.146.1-2
WSLg バージョン: 1.0.60
MSRDC バージョン: 1.2.5105
Direct3D バージョン: 1.611.1-81528511
DXCore バージョン: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows バージョン: 10.0.22631.3296
尚、本記事で使用しているWSLのコマンドの詳細は下記を参照して下さい。
WSLのディストリビューションをCドライブから別のドライブに移動させる
私の場合、WSLのUbuntuをCドライブからEドライブ(増設したSSD)に移動します。
今回の移動は「WSLのUbutnuのデータを保存するドライブを、CドライブからEドライブに変更する」という作業です。
WSLやUbuntuの本体はCドライブにインストールされています。
簡単な流れ
- 引っ越しするディストリビューションを停止
- 引越し先のフォルダを準備
- 引っ越しするディストリビューションをエクスポートする
- 引越し前のディストリビューションの登録を解除する
- エクスポートしたディストリビューションを引越し先にインポートする
引っ越しさせるディストリビューションの確認
まず、引っ越しさせるディストリビューションを、下記コマンドで確認。※引っ越しさせるディストリビューションの「NAME」をメモる。
wsl -l -v
NAME STATE VERSION
* Ubuntu Running 2
移動させるUbuntuがRunning(起動中)なので、停止させる。
wsl --shutdown
もう一度「wsl -l -v」を入力して、Stoppedを表示されていればOK
wsl -l -v
NAME STATE VERSION
* Ubuntu Stopped 2
今はこんな感じ
引越し先のフォルダを準備
次に、引越し先のフォルダを準備します。移動先のドライブ(今回やE)に任意の空のフォルダを作成。※フォルダ名は任意で可
作成したフォルダを「Shifを押しながら左クリック」→「PowerShellウィンドウをここで開く」をクリック
こうすることで、指定のフォルダに移動した状態でPowerShellを開くことができます。
もちろん、普通にコマンドでフォルダを作成して移動しても全く問題なし。
本記事の以後の作業はすべて「E:\wsl」上で行っている前提です。ご注意下さい。
引っ越しするディストリビューションをエクスポートする
引っ越しさせるUbuntuを「.tar」ファイルにエクスポートします。
wsl --export DistributionName FileName
「DistributionName」が引っ越しさせるディストリビューションの名前(NAME)。「FileName」がエクスポートする「.tar」ファイル名。
FileNameは任意の名前でOK。わかりやすい名前にしておくこと。
実際にコマンドを入力すると、エクスポートが開始されて、正常に終了すれば下記のようになります。
先ほど作った空のフォルダに作成した「.tar」ファイルが作成されています。これでエクスポートは完了です。
引っ越し前の「Ubuntu」をWSLから登録解除する
次に「引越し前のUbuntu」をWSLが管理するディストリビューションからの登録を解除します。
- 「登録解除」を行うと、該当のディストリビューションに関連付けられているすべてのデータ、設定、及びソフトウェアが完全に削除されます。重要なファイルがある場合は、バックアップを準備して下さい。
- 少しわかりにくいですが、この作業を実施しても「Windowsにインストールされているディストリビューション」は削除されません。あくまでWSLに登録されているディストリビューションが解除されるだけです。
まだUbuntu上で何もしてなければ気にする必要なし
下記コマンドを入力して、Ubuntuを登録解除。※DistributionNameは指定のディストリビューションのNAME
wsl --unregister DistributionName
解除後は確認のためインストールされているディストリビューションの一覧を表示して、Ubuntuが無いことを確認。
wsl -l -v
インストールしているディストリビューションが一つだけなら、下記画像の様に「Linux用Windowsサブシステムにインストールされているディストリビューションはありません。」と表示されます。
引越し先にエクスポートした「Ubuntu」をインポートする
エクスポートした「Ubutnu」を下記コマンドでインポートします。
wsl --import DistributionName InstallLocation FileName
「DistributionName」は、インポートするディストリビューションの名前(NAME)。「InstallLocation」は引越し先のフォルダパス。「FileName」はエクスポートしたtarファイル名。
つまり、今回の場合はこれを入力する。
wsl --import Ubuntu E:\wsl E:\wsl\ubuntu
さらに詳しく
- 作業ディレクトリにインポートするtarファイルがあるならファイル名だけでも可。
- 私の場合、FileNameに「.tar」をつけると認識してくれなかったので、拡張子は省略しています。
インポートが成功すると、下記のように表示されます。これで引っ越しは完了です。
引っ越しが完了したらエクスポートしたtarファイルは削除して問題ありません。
WSL2/Ubuntuのログインユーザーを「root」からデフォルトの「一般ユーザー」に戻す
引越し後、ログインユーザーがroot(システム管理者用のアカウント、つまり何でもできるアカウント)に変わっています。
これはどうやらWSLの仕様?らしいので、一般ユーザーに戻します。戻さなくても普通に動きますが、色々と危ない部分もあるので戻します。
rootから切り替える一般ユーザー名を確認する
まず、切り替える(元に戻す)ユーザー名を確認します。覚えていれば問題ありませんが、一応確認します。
まず、Ubuntuを起動。rootでログインしていることを確認して、下記コマンドを入力してhomeディレクトに移動します。
cd /home
「ls」コマンドを入力して、homeディレクトリにある「ユーザー名のフォルダ」を確認します。
ls
私の場合「kiri」というフォルダがあるので、一般ユーザー名は「kiri」となります。
WSLのUbuntuのデフォルトユーザーを一般ユーザーに変更
ユーザーを変更するために「wsl.conf」という設定ファイルを書き換えます。
wsl.conf ファイルと .wslconfig ファイルは、すべての WSL 2 ディストリビューション (.wslconfig) 全体で、ディストリビューションごと (wsl.conf) にグローバルに詳細設定オプションを構成するために使用されます。
下記コマンドで「wsl.conf」を開く。
nano /etc/wsl.conf
下記の画像のようにユーザーの部分を追記して下さい。※ユーザー名は各自のもので
下記を追記したら「ctrl + x」→「y」→「Enter」でwsl.confを上書き保存。
上書きが完了すると、下記画面戻り、wsl.confの編集作業は完了です。「exit」と入力して、一旦Ubuntuからログアウトします。※PowerShellのウィンドウを閉じて可
Ubuntuをログアウトして、Windows側に戻ってきたら、下記コマンドでWSLをシャットダウンします。このコマンドは必ず実行して下さい。
wsl --shutdown
WSLのシャットダウンが完了したらubuntuを起動して、一般ユーザーに戻っていることを確認して下さい。
以上、ありがとうございましたm(_ _)m