2023-05-13

WSL shrink maximum image size

WSL がディスクを食い尽くすのをの何とかしたい。vhdx のサイズが 1TB 決め打ちで変更できないとか、Microsoft のそういう所ほんと嫌い。

基本戦略は上記に従う。ちなみに老人なのでパワーシェルとかは知らない。

まず Ubuntu をクリーンインストールした後、即終了。(初回インストール時は管理者で wsl --install を実行する必要あり)

C:\Users\user>wsl --version
WSL バージョン: 1.2.5.0
カーネル バージョン: 5.15.90.1
WSLg バージョン: 1.0.51
MSRDC バージョン: 1.2.3770
Direct3D バージョン: 1.608.2-61064218
DXCore バージョン: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows バージョン: 10.0.22621.1555

C:\Users\user\Documents>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

C:\Users\user\Documents>wsl --install
インストール中: Ubuntu
Ubuntu がインストールされました。
Ubuntu を起動しています...
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: user
New password:
Retype new password:
passwd: password updated successfully
この操作を正しく終了しました。
Installation successful!
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

Welcome to Ubuntu 22.04.2 LTS (GNU/Linux 5.15.90.1-microsoft-standard-WSL2 x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage


This message is shown once a day. To disable it please create the
/home/user/.hushlogin file.

user@MY-PC:~$
logout

C:\Users\user\Documents>wsl --shutdown

C:\Users\user\Documents>wsl -l -v
  NAME      STATE           VERSION
* Ubuntu    Stopped         2

Ubuntu の vhdx をコピー。ファイルの場所は臨機応変に探す。

C:\Users\user\Documents>copy "%LOCALAPPDATA%\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState\ext4.vhdx" ubuntu.vhdx
        1 個のファイルをコピーしました。

新しい vhdx を作る(ここでは 10GB)。

C:\Users\user\Documents>diskpart

Microsoft DiskPart バージョン 10.0.22621.1

Copyright (C) Microsoft Corporation.
コンピューター: MY-PC

DISKPART> create vdisk file="C:\Users\user\Documents\ext4.vhdx" maximum=10000 type=expandable

  100% 完了しました

DiskPart により、仮想ディスク ファイルが正常に作成されました。

DISKPART> exit

Ubuntu を起動し、新旧 vhdx をアタッチ。

C:\Users\user\Documents>wsl
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

Welcome to Ubuntu 22.04.2 LTS (GNU/Linux 5.15.90.1-microsoft-standard-WSL2 x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage


This message is shown once a day. To disable it please create the
/home/user/.hushlogin file.

user@MY-PC:/mnt/c/Users/user/Documents$ wsl.exe --mount --vhd --bare ubuntu.vhdx
この操作を正しく終了しました。

user@MY-PC:/mnt/c/Users/user/Documents$ wsl.exe --mount --vhd --bare ext4.vhdx
この操作を正しく終了しました。

user@MY-PC:/mnt/c/Users/user/Documents$ lsblk
NAME MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda    8:0    0 363.3M  1 disk
sdb    8:16   0     1G  0 disk [SWAP]
sdc    8:32   0     1T  0 disk /snap
                               /mnt/wslg/distro
                               /
sdd    8:48   0     1T  0 disk
sde    8:64   0   9.8G  0 disk

旧 vhdx が sdd、新 vhdx が sde だと分かるので、新 vhdx (/dev/sde)をフォーマット。

user@MY-PC:/mnt/c/Users/user/Documents$ sudo mkfs.ext4 /dev/sde
[sudo] password for user:
mke2fs 1.46.5 (30-Dec-2021)
Discarding device blocks: done
Creating filesystem with 2560000 4k blocks and 640848 inodes
Filesystem UUID: 0d215fd7-0556-4259-8854-54fa8768d86c
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

新旧 vhdx をマウント、中身をコピーした後、Ubuntu を終了。

user@MY-PC:/mnt/c/Users/user/Documents$ sudo mkdir /mnt/vdisk-src /mnt/vdisk-dst

user@MY-PC:/mnt/c/Users/user/Documents$ sudo mount -r /dev/sdd /mnt/vdisk-src

user@MY-PC:/mnt/c/Users/user/Documents$ sudo mount /dev/sde /mnt/vdisk-dst

user@MY-PC:/mnt/c/Users/user/Documents$ ls /mnt/vdisk-src /mnt/vdisk-dst
/mnt/vdisk-dst:
lost+found

/mnt/vdisk-src:
bin   dev  home  lib    lib64   lost+found  mnt  proc  run   snap  sys  usr
boot  etc  init  lib32  libx32  media       opt  root  sbin  srv   tmp  var

user@MY-PC:/mnt/c/Users/user/Documents$ sudo cp -axT /mnt/vdisk-src /mnt/vdisk-dst

user@MY-PC:/mnt/c/Users/user/Documents$ ls /mnt/vdisk-dst
bin   dev  home  lib    lib64   lost+found  mnt  proc  run   snap  sys  usr
boot  etc  init  lib32  libx32  media       opt  root  sbin  srv   tmp  var

user@MY-PC:/mnt/c/Users/user/Documents$ wsl.exe --shutdown

Ubuntu の vhdx を新 vhdx にすり替え、Ubuntu を起動してディスクサイズを確認。

C:\Users\user\Documents>move ext4.vhdx "%LOCALAPPDATA%\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState\ext4.vhdx"
C:\Users\user\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState\ext4.vhdx を上書きします か? (Yes/No/All): y
        1 個のファイルを移動しました。

C:\Users\user\Documents>wsl
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

Welcome to Ubuntu 22.04.2 LTS (GNU/Linux 5.15.90.1-microsoft-standard-WSL2 x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage


This message is shown once a day. To disable it please create the
/home/user/.hushlogin file.

user@MY-PC:/mnt/c/Users/user/Documents$ df -h | grep /dev/sd
/dev/sdc        9.6G  1.1G  8.0G  12% /

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。