WSL2: changing permissions Read-only file system

Главные вкладки

Аватар пользователя kosskren kosskren 21 октября 2023 в 9:49

Всем привет.

Внезапно отключили электричество и моя виртуалка в wsl перешла в режим чтения. Хочу описать путь решения такой проблемы. Руководство взято с офф. документации microsoft (ссылка) + личные дополнения. По шагам:

1. Устанавливаем еще один дистрибутив и выбираем его дефолтным.

# установка дистрибутива Ubuntu-22.04 для примера
wsl --install --distribution Ubuntu-22.04

# выбираем Ubuntu-22.04, как дефолтный
wsl --setdefault Ubuntu-22.04

2. Останавливаем все дистрибутивы.

wsl --shutdown

3. Потребуется узнать путь к VHDX файлу дистрибутива, который выдал ошибку "Read-only file system".

Ubuntu-20.04 - имя дистрибутива

(Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | Where-Object { $_.GetValue("DistributionName") -eq 'Ubuntu-20.04' }).GetValue("BasePath") + "\ext4.vhdx"

4. Монтируем файл VHDX без привязки.

E:\WSL\ext4.vhdx - путь к файлу из 3 шага, в моем случае такой.

wsl --mount E:\WSL\ext4.vhdx --vhd --bare

5. Узнаем под каким именем примонтировался файл.

wsl lsblk

6. Выполним проверку файловой системы.
sdb - имя из 5 шага.

можно указать флаг -y, отвечает на все вопросы утвердительно

wsl sudo e2fsck -f /dev/sdb

7. Уберем монтирование.

wsl --unmount

8. Возвращаем дефолтный дистрибутив.

wsl --setdefault Ubuntu-20.04

После проделанных действий проблема ушла.