2
2

WSL2の仮想ハードディスクvhdxファイルを移動する

Last updated at Posted at 2024-01-27

はじめに

Zybo-Z7の開発環境としてWindows版のVivadoとVitis、WSL2のUbuntu(18.04.6 LTS)にPetaLinux、Linux版のVivdoとVitisをインストールしたら、465GBのC:ドライブの空き容量が心ものなくなってしまったので、WSL2の仮想ハードディスクファイル(vhdxファイル)をD:ドライブに移動した。

ドライブとデバイス-動前.png

やり方としては、

  • ディストリビューションを別領域に複製後、元のディストリビューションを削除
  • ディストリビューションをexportし、ディストリビューションを削除、そして、exportしたファイルをimport
    の2つあるので、それぞれをやってみた。

準備

起動中のUbuntuを終了する

  • exitでWindowsターミナルを閉じただけでは、Running状態のままなので、wsl --shutdownwsl --terminate ディストリビューション で終了させる。
    • WindowsターミナルのUbuntuでexit
      Ubuntu_exit.png
      PowerShell
        PS C:\Users\ozora> wsl -l -v
        NAME            STATE           VERSION
      * Ubuntu-18.04    Running         2
      
  • wslのコマンドで終了させる
    PowerShell
     PS C:\Users\ozora> wsl --terminate Ubuntu-18.04
     この操作を正しく終了しました。
     PS C:\Users\ozora> wsl -l -v
       NAME            STATE           VERSION
     * Ubuntu-18.04    Stopped         2
    

vhdxファイルの場所を確認する

  • インストールされたvhdxファイルは、C:\Users\ユーザ名\AppData\Local\Packages\CanonicalGroupLimited.○○○○\LocalStateにある
    • Ubuntu 18.04LTSをインストールした私の環境では、○○○○の部分はUbuntu18.04LTS_79rhkp1fndgsだった。
  • 複数のディストリビューションをインストールしているときは、vshxファイルの選択を間違えないように
    元のvhdxファイル.png

vhdxファイルの複製

  • 複製と言っても、実はvhdxファイルを import である。

  • ただし、異なるディストリビューション名にする必要がある

  • --importオプションは、指定されたファイルを新しいディストリビューションとしてインポートする。デフォルトは tar ファイルだが、--vhdオプションで vhdx ファイルを指定できる。

  • wsl --import 新しいディストリビューション名 複製元vhdxファイルのパス名 複製先vhdxファイルのパス名 --version 2 --vhd

  • ここで注意してほしいのは、フォルダの区切りは''(バックスラッシュ)で入力する必要がありそうだということ。キーボードから'¥'を入力したら、区切りではなく'¥'という文字として認識されてしまった。

  • 本家のディストリビューション名が Ubuntu-18.04 なので '-' を '_' に変えた Ubuntu_18.04 にした。

    PowerShell
    PS C:\Users\ozora> wsl --import Ubuntu_18.04 D:\wsl\Ubuntu18.04LTS\ext4.vhdx C:\Users\ozora\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04LTS_79rhkp1fndgsc\LocalState  --version 2 --vhd
    インポート中です。この処理には数分かかることがあります。
    この操作を正しく終了しました。
    

  • ディストリビューションリストを表示させて確認

    PowerShell
    PS C:\Users\ozora> wsl -l -v
      NAME            STATE           VERSION
    * Ubuntu-18.04    Stopped         2
      Ubuntu_18.04    Stopped         2
    

  • Ubuntu_18.04 を起動してみる

    PowerShell
    PS C:\Users\ozora> wsl -d Ubuntu-18.04
    root@DESKTOP-H3CE8QA:/mnt/c/Users/ozora#
    

  • 起動はできたけれど、なぜか root でログインされてしまった。

    PowerShell
    PS C:\Users\ozora> wsl -d Ubuntu_18.4
    ozorakobo:/mnt/c/Users/ozora$
    

    • --user or -u オプションで、実行するユーザを指定することができる
      PowerShell
      PS C:\Users\ozora> wsl -d Ubuntu_18.04 -u ozorakobo
      ozorakobo:/mnt/c/Users/ozora$
      

    • あるいは、/etc/wsl.conf でユーザを指定してもよい。
      /etc/wsl.conf
      [boot]
      systemd=true
      [user]
      default=ozorakobo
      

    • wsl.configに[user]を追加して、起動してみる。
      PowerShell
      PS C:\Users\ozora> wsl -d Ubuntu_18.04
      ozorakobo:/mnt/c/Users/ozora$
      

  • Ubuntu_18.04 を終了する

    PowerShell
    ozorakobo:/mnt/c/Users/ozora$ exit
    logout
    PS C:\Users\ozora> wsl -l -v
      NAME            STATE           VERSION
    * Ubuntu-18.04    Stopped         2
      Ubuntu_18.04    Running         2
    PS C:\Users\ozora> wsl --terminate Ubuntu_18.4
    この操作を正しく終了しました。
    PS C:\Users\ozora> wsl -l -v
      NAME            STATE           VERSION
    * Ubuntu-18.04    Stopped         2
      Ubuntu_18.04    Stopped         2
    

  • 元のディストリビューションを削除する

    • --unregister オプションで、ディストリビューションの登録を解除し、ルート ファイルシステムを削除することができる。

    • ここでは、次の「vhdxファイルの export -> import」を行うため、複製した"Ubuntu_18.04"を削除する。

    PowerShell
    PS C:\Users\ozora> wsl --unregister Ubuntu_18.04
    登録解除。
    この操作を正しく終了しました。
    PS C:\Users\ozora> wsl -l -v
      NAME           STATE           VERSION
    * Ubuntu-18.04   Stopped         2
    
  • 無事 vhdxファイルの移動ができた。

vhdxファイルの export -> import

  • 現在のディストリビューション vhdxファイルと export し、別のパスに importする
  • export後、ディストリビューションを削除すれば、同じディストリビューション名で import することができる
  • 削除すると元に戻せないので、リスクを負うことなるので注意
  • 手順として export するが、export せずファイルをコピーして、importしても大丈夫かもしれない
  • --exportオプションは、ディストリビューションをファイルにエクスポートする。デフォルトは tar ファイルだが、--vhdオプションで vhdx ファイルを指定できる。
  • wsl --export ディストリビューション名 export先vhdxファイルのパス名 --vhd
  • ここでは、D:¥Temp に export する
    PowerShell
    PS C:\Users\ozora> wsl --export Ubuntu-18.04 D:\Temp\Ubuntu-18.04.vhdx --vhd
    エクスポートが進行中です。これには数分かかる場合があります。
    この操作を正しく終了しました。
    PS C:\Users\ozora> dir d:\Temp
        ディレクトリ: D:\Temp
    Mode                 LastWriteTime         Length Name
    ----                 -------------         ------ ----
    -a----        2024/01/27     20:11   254678138880 Ubuntu-18.04.vhdx
    
  • 思い切ってディストリビューションを削除する
    PowerShell
    PS C:\Users\ozora> wsl -l -v
      NAME           STATE           VERSION
    * Ubuntu_18.04   Stopped         2
    PS C:\Users\ozora> wsl --unregister Ubuntu-18.04
    登録解除。
    この操作を正しく終了しました。
    PS C:\Users\ozora> wsl -l -v
    Linux 用 Windows サブシステムにインストールされているディストリビューションはありません。
    
    使用可能なディストリビューションを一覧表示するには、'wsl.exe --list --online' を使用します
    インストールするには 'wsl.exe --install <Distro>' と指定します。
    
    ディストリビューションは、Microsoft Storeにアクセスしてインストールすることもできます:
    https://aka.ms/wslstore
    Error code: Wsl/WSL_E_DEFAULT_DISTRO_NOT_FOUND
    
    • ディストリビューションがなくなった。
  • exportされたvhdxファイルをインポートする
    • 将来複数のディストリビューションを扱う可能性を考慮して、D:\wsl\Ubuntu18.04LTSに import する。
    • ディストリビューション名は、元と同じ Ubuntu-18.04 とする。
    PowerShell
    PS C:\Users\ozora> wsl --import Ubuntu-18.04 D:\wsl\Ubuntu18.04LTS C:\Temp\Ubuntu-18.04.vhdx --version 2 --vhd
    インポート中です。この処理には数分かかることがあります。
    この操作を正しく終了しました。
    PS C:\Users\ozora> wsl -l -v
      NAME            STATE           VERSION
    * Ubuntu-18.04    Stopped         2
    
  • インポートされた。ヨシッ!
    PowerShell
    PS C:\Users\ozora> wsl -d Ubuntu-18.04
    ozorakobo:/mnt/c/Users/ozora$
    
  • 無事起動した。
  • Vivado, vitisも起動できたので一安心。
    Vivado 20221.png
    vitis.png

おわりに

  • vhdxファイルがC:ドライブを大きく占めるほど大きくなってしまったため、D:ドライブに移動させた。
  • 移動の際は、ディストリビューションの複製と export -> import の二つの寳保を試した。
  • 200GB以上もあるvhdxファイルの移動を試みたため、import, export にとても時間がかかってしまった。サイズが小さいうちに移動したほうがよい。
  • ディストリビューションを消去してから、import するのはリスクが大きくなるので、ディストリビューション名を変える必要はあるものの複製するほうがいいと思う。そういう意味でも、もし失っても痛手のないうちに移動させておくほうがいいだろう。
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2