🙌

WSL Read-onlyになった時の対処

に公開
原因

使用中のディストロのファイルシステムに障害が発生している。
障害により、ファイルシステム上のすべてのフォルダでRead-only状態になっている。まさに何もできない。touchもmkdirも不可。apt でインストールも不可、Docker起動はもちろん不可。

対処方法

e2fsck -p /dev/sdc を行い、ファイルシステムを修復する。ext4 が /dev/sdc にmount されているとする。

手順

別のディストロをインストールする。UbuntuだったらDebianをインストールすれば良い。

  1. wsl -d {新ディストロの名前} --mount --vhd --bare "元のディストロのext4.vhdx"
  2. sudo e2fsck -p /dev/sdc
解説

元ディストロが /dev/sdc にマウントされ、新ディストロは/dev/sddにマウントされるとする。元ディストロのみの状態だと、/dev/sdcが使用中になってしまい、e2fsckが実行できない。この時、/dev/sdcのマウントを外しても、e2fsck実行時にはどこかで使用中 (Warning : in use)となってしまい、修復できない。
新ディストロをインストールし、起動することによって、/dev/sdcは使用もされず、どこからもマウントもされていない状態になるため、/dev/sdcに対してe2fsckが実行可能となる。

Discussion