Ubuntu(WSL2)をCドライブからDドライブへ引越す
0.概要
この記事は下記2点を実施した際の記録です.
Ubuntu(WSL2)を公式の手順に則ってインストールすると,Cドライブへとインストールされます.ただ,Cドライブのディスク容量に空きを作りたいなどの動機で,WSL2で構築したUbuntu環境を別のディスクへと引越したい場合などもあると思います.
Microsoft公式HPに載っている情報を使えば,任意のドライブへと引越すことができます.今回は引越しの例として,Ubuntu(WSL2)をCドライブからDドライブ(外付けSSD)へと引越す方法を紹介します.そんなことをする人は居ないと思いますが,「右クリック→コピー→貼り付け」のようにしてUbuntu(WSL2)が入っているフォルダを移動させる方法だと,環境が壊れるか正しくコピーできないと思うので,辞めた方が良いです.私は怖くて試していませんが.
また,今回紹介する引越し方法は公式HPで紹介されている方法ですが,この方法を使うとデフォルトのログインユーザーがrootユーザーに変更されてしまいます.自分しかその環境を使わないのならそれでも良いのかもしれませんが,そのままにしておくのは非常に危険です.
rootユーザーは最も権限の強いユーザーです.rootユーザーはあらゆることを実行できてしまうため,重要なシステムファイルなどを誤って削除してしまう可能性があります.(今どきのLinuxはrootユーザーで破壊の呪文rm -rf /
を唱えても恐らくコマンドを受け付けませんが,rm -rf /bin
などは多分コマンドが通ってしまうので危険なことに変わりないと思います.)
よって,「俺は常にrootユーザーで作業したいんだ!」という豪気な人以外は,この記事で紹介するような方法で,デフォルトのログインユーザーを一般ユーザーへと変更しておくことをお勧めします.
Ubuntu(WSL2)そのもののインストール方法は,Microsoftの公式HPを参照するのが一番間違いが少ないと思います.沢山の人が既に記事を作っていますが,私も記事を作っています.
1.Dドライブへの引越し
まずはPowerShellを起動します.インストールされているLinuxディストリビューションを確認します.コマンドはwsl -l -v
です(図1).今回は「Ubuntu-20.04」をDドライブへと引越します.念のため,引越しをするLinuxディストリビューションは落としておいた方が良いと思います.STATEの欄に「Stopped」と記入されていれば,落ちていることが確認できます.
図1. 引越しするLinuxディストリビューションの確認
PowerShell上で,引越し先のディレクトリに移動します.今回はDドライブ直下に「wsl」というディレクトリを作り,ここを引越し先としています(図2).コマンドは下記ですが,コマンドを打ち込む際は先頭の「・」は省略してください.以後,「D:\wsl\」内のフォルダで作業を進めます.
・cd D:\
・mkdir wsl
・cd wsl
図2. Dドライブへの移動,引越し先の作成,引越し先への移動
引越しするために下記3点を実施します.上から順番に実施していきます.
- Ubuntuを.tarファイルとしてエキスポート.
- UbuntuのWSLからの登録解除とアンインストール.
- 最初に作った.tarファイルから,元のUbuntu環境を引越し先に復元する.
まずはUbuntu環境の.tarファイル化です.下記のコマンドで.tarファイルを作れます.
wsl --export <Distribution Name> <FileName>
<Distribution Name>には引越ししたいLinuxディストリビューションの名前を入力します.今回の場合は「Ubuntu-20.04」です.<FileName>にはエキスポートする.tarファイルの名前を入力します.<FileName>は任意の名前を付けることができますが,今回は「ubuntu.tar」としてます.図3に実施例を示します.
図3. Linux環境の.tarファイル化
次は,引越し元のUbuntuのWSLからの登録解除とアンインストールです.これを実施すると,引越し元の環境は完全に削除されてしまうので,重要なファイルなどは念のためバックアップなどを取っておくとよいと思います.コマンドは下記です.<Distribution Name>には,今回の場合,「Ubuntu-20.04」と入力します.図4に実施例を示します.
wsl --unregister <Distribution Name>
図4. Linux環境の削除と削除されたことの確認
念のため,対象のLinuxディストリビューションが削除されていることを確認します.コマンドはwsl -l -v
です.実施例を図4に示しています.私の場合は,「Ubuntu-20.04」しか入れていなかったので,「Linuxディストリビューションは何もない」という表示がでています.
wsl --unregister <Distribution Name>
としないままに次のステップに進み,tarファイルをインポートしようとすると,「既にそのLinuxディストリビューションはインポートされています」という表示が出て,引越しすることができないので,元の環境を削除したうえで次のステップに進みましょう.
次は引越しの最後のステップです.tarファイル化した元の環境を,インポートして引越し先に復元します.コマンドは下記になります.<Distribution Name>は今回の場合,「Ubuntu-20.04」と入力します.<InstallLocation>は引越し先のディレクトリを指定しますが,今回の場合「D:\wsl」です.<FileName>は先ほど作成した.tarファイルの名前を指定します.今回の場合,tarファイルをD:\wslの下に置いているので,「D:\wsl\ubuntu.tar」です.D:\wslの下で作業しているので,単に「ubuntu.tar」としても良いと思います.実施例を図5に示します.
wsl --import <Distribution Name> <InstallLocation> <FileName>
図5. 元のLinux環境の復元
これで,Dドライブへの引越しは完了です.
2.ログインユーザーの変更
まずは,Ubuntuを起動してみましょう.図6のようにログインユーザーがrootユーザーになっているはずです.ここでは,デフォルトのログインユーザーを一般ユーザーへと変更する方法を説明します.
図6. デフォルトのログインユーザーがrootユーザーになっている
ここで紹介する方法は,こちらの記事を参考にしました.手順としては下記です.
- /etc/wsl.confの末尾でデフォルトユーザーを指定する.
- /etc/にwsl.confが無い場合は,wsl.confを新たに作り,デフォルトユーザーを指定する.
参考にせてもらった記事では下記のコマンドを使用していました.user-name
にはデフォルトでログインする一般ユーザーのユーザー名を入力します.ユーザー名が分からなくなった人はcd /home
でhomeディレクトリに移動してみましょう.自分で作った「ユーザー名」のフォルダがあるはずです.
wsl.confへの書き込み方は下記の方法が一番簡単だと思いますが,何でもよいです.私はvi /etc/wsl.conf
で下記内容をファイルの末尾に直接書き込みました.
cat << EOF > /etc/wsl.conf
[user]
default=user-name
EOF
上記を実施した後,ubuntuからログアウトして,再度ログインし直すと,先ほど指定した一般ユーザーでログインされていることが確認できると思います.
今回の記事はこれで終わりです.ここまで記事を読んでいただきありがとうございます.
環境
・Windows 10 home
・Ubuntu-20.04(WSL2)
・引越し先:Dドライブ(外付けSSD,KIOXIA)
Discussion
windows 11pro
Ubuntu-20.04(WSL2)でも全く同じ手順で再現できました。わかりやすいまとめありがとうございます。
デフォルトユーザーが反映されない問題は、ログアウトしてから
でいけると思います