`wsl --unregister` nieusuwające dystrybucji w pełni oznacza, że pliki wirtualnego dysku (ext4.vhdx) mogą pozostać na dysku mimo usunięcia wpisu rejestracyjnego — wymaga ręcznego usunięcia folderu z profilu AppData.
Komunikat lub obserwacja, że wsl --unregister nie usuwa dystrybucji, zwykle wynika z różnicy między wyrejestrowaniem systemu z konfiguracji WSL a usunięciem wszystkich danych zapisanych w profilu użytkownika. Polecenie może usunąć dystrybucję z listy dostępnych środowisk, lecz nie zawsze prowadzi do natychmiastowego odzyskania całego miejsca zajmowanego przez jej pliki. Szczególnej uwagi wymaga wirtualny dysk dystrybucji, zazwyczaj zapisany jako ext4.vhdx, ponieważ przechowuje system plików Linuksa, zainstalowane pakiety, ustawienia oraz dane użytkownika.
Czym jest problem z wsl --unregister
wsl --unregister NAZWA_DYSTRYBUCJI służy do usunięcia dystrybucji z rejestru WSL. W praktyce oznacza to wyrejestrowanie wskazanego środowiska, tak aby nie było już dostępne pod dotychczasową nazwą przy użyciu poleceń WSL. Operacja jest nieodwracalna z punktu widzenia standardowych mechanizmów tej dystrybucji: zapisane w niej pliki, konfiguracje i zainstalowane programy mogą zostać utracone, jeżeli wcześniej nie wykonano eksportu.
Nie należy jednak utożsamiać wpisu rejestracyjnego z całą strukturą danych na dysku. WSL korzysta z plików przechowujących wirtualny system plików, a część danych może pozostać w katalogach profilu użytkownika, zwłaszcza gdy proces został przerwany, użyto innej nazwy dystrybucji, zadziałała synchronizacja lub wystąpił błąd dostępu do pliku. Dlatego po wyrejestrowaniu może być widoczny ślad w katalogu %LOCALAPPDATA%\Packages, w podkatalogu związanym z konkretną dystrybucją, albo w lokalizacji wybranej podczas importowania dystrybucji.
Warto rozróżnić trzy sytuacje:
- dystrybucja nadal pojawia się w wyniku
wsl --list --verbose, więc nie została poprawnie wyrejestrowana; - dystrybucja zniknęła z listy, ale plik
ext4.vhdx nadal zajmuje miejsce; - plik istnieje, lecz nie można go usunąć, ponieważ jest używany przez proces WSL, kontener lub inną aplikację.
Każdy z tych przypadków wymaga innego postępowania. Samo ponowne wykonanie polecenia z przypadkową nazwą nie rozwiązuje problemu, a próba ręcznego kasowania plików bez sprawdzenia lokalizacji może doprowadzić do usunięcia danych należących do innej dystrybucji.
Kontekst techniczny i porównanie metod - wsl --unregister nie usuwa dystrybucji
W konfiguracji WSL występują co najmniej dwa istotne elementy: informacja, że dana dystrybucja jest zainstalowana, oraz plik lub zestaw plików zawierających jej dane. wsl --unregister działa przede wszystkim na pierwszym elemencie, natomiast odzyskanie miejsca zależy od tego, czy odpowiadający mu magazyn danych został prawidłowo zamknięty i usunięty.
Najpierw należy sprawdzić dokładną nazwę dystrybucji:
wsl --list --verbose
Jeżeli środowisko nadal jest aktywne, można je zatrzymać poleceniem:
wsl --shutdown
Dopiero potem powinno się sprawdzić, czy właściwy katalog nadal istnieje. W przypadku dystrybucji instalowanej ze sklepu Microsoft odpowiednia ścieżka często znajduje się w profilu użytkownika, ale jej nazwa może różnić się od nazwy wyświetlanej przez WSL. Dla dystrybucji importowanej ręcznie plik ext4.vhdx może znajdować się w zupełnie innym katalogu, wskazanym podczas importu. Z tego powodu nie powinno się zakładać, że każda dystrybucja przechowuje dane w identycznym miejscu.
Możliwe jest również użycie eksportu i ponownego importu jako metody uporządkowania środowiska. Eksport pozwala zapisać zawartość dystrybucji do pliku archiwum, a następnie utworzyć ją ponownie w wybranej lokalizacji. Takie rozwiązanie różni się od prostego wyrejestrowania tym, że daje szansę na zachowanie danych, lecz wymaga wcześniejszego ustalenia, czy archiwum jest kompletne i czy wskazano właściwą dystrybucję.
Jeżeli pozostawiony plik ma duży rozmiar, nie musi to oznaczać, że jego zawartość nadal jest dostępna jako uruchomiona dystrybucja. Może być jedynie pozostałością po poprzedniej instalacji. Przed usunięciem należy jednak zweryfikować nazwę katalogu, datę modyfikacji i powiązanie z dystrybucją. Należy także sprawdzić kosz systemowy, ponieważ usunięcie pliku może nie zwolnić miejsca do czasu jego opróżnienia.
Typowe problemy i błędy - wsl --unregister nie usuwa dystrybucji
Jednym z częstych błędów jest podanie nazwy innej niż ta, którą WSL przechowuje w konfiguracji. Nazwa wyświetlana w menu systemu, nazwa folderu oraz nazwa zwracana przez wsl --list nie zawsze są identyczne. W poleceniu trzeba użyć nazwy rozpoznawanej przez WSL, a nie skrótu utworzonego na potrzeby interfejsu graficznego.
Drugą przyczyną bywa uruchomiona sesja WSL. Otwarte okno terminala, proces działający w tle, narzędzie deweloperskie albo aplikacja korzystająca z integracji WSL może utrzymywać plik w stanie użycia. W takiej sytuacji wyrejestrowanie może zakończyć się błędem lub pozostawić pliki, których nie da się od razu usunąć. Pomocne jest zamknięcie terminali, zatrzymanie procesów związanych z WSL i wykonanie wsl --shutdown, a następnie ponowne sprawdzenie lokalizacji danych.
Problem może także wynikać z uprawnień systemu Windows. Katalog w profilu użytkownika może mieć zmienionego właściciela, ograniczone prawa zapisu albo blokadę pochodzącą od programu zabezpieczającego. Nadawanie uprawnień całemu profilowi użytkownika nie jest dobrym rozwiązaniem. Bezpieczniej jest potwierdzić, że wskazany plik rzeczywiście należy do usuwanej dystrybucji, i dopiero wtedy zastosować działanie ograniczone do tego konkretnego katalogu.
Inny błąd polega na usuwaniu pliku ext4.vhdx przed wykonaniem kopii danych. W takim pliku mogą znajdować się dokumenty, klucze, konfiguracje narzędzi, repozytoria lub ustawienia aplikacji. Jeżeli istnieje choćby cień potrzeby zachowania zawartości, należy wcześniej wykonać eksport dystrybucji albo skopiować potrzebne pliki do lokalizacji dostępnej z poziomu Windows.
Warto również pamiętać, że rozmiar pliku wirtualnego dysku nie zawsze odpowiada ilości faktycznie używanych danych. Usunięcie plików wewnątrz systemu Linux nie musi natychmiast zmniejszyć pliku widocznego w Windows. Dlatego samo oczekiwanie, że ext4.vhdx automatycznie stanie się mniejszy po usunięciu danych, może prowadzić do błędnej diagnozy. Najpierw trzeba ustalić, czy problem dotyczy pozostałego pliku po wyrejestrowaniu, czy tylko jego rozmiaru.
Kiedy najlepiej zlecić diagnozę specjalistom - wsl --unregister nie usuwa dystrybucji
Do serwisu warto zgłosić problem, gdy dystrybucja zniknęła z listy, ale nie można ustalić, który plik należy do niej, gdy system zgłasza brak uprawnień, gdy plik jest stale używany albo gdy przed usunięciem trzeba zabezpieczyć ważne dane. Konsultacja jest szczególnie wskazana przy kilku środowiskach WSL, ręcznie importowanych dystrybucjach lub nietypowej konfiguracji profilu użytkownika, ponieważ pochopne skasowanie niewłaściwego katalogu może usunąć działające środowisko.
W Warszawskim Pogotowiu Komputerowym 24/7 można zlecić sprawdzenie konfiguracji WSL, identyfikację pozostałych plików oraz bezpieczne uporządkowanie danych po wyrejestrowaniu dystrybucji. Przed rozpoczęciem prac powinno zostać ustalone, czy celem jest wyłącznie odzyskanie miejsca, zachowanie danych, czy przygotowanie czystej instalacji. Takie rozróżnienie pozwala dobrać działania do rzeczywistego problemu i ograniczyć ryzyko przypadkowej utraty plików.
Przy zgłoszeniu dobrze jest przekazać dokładny komunikat z terminala, wynik polecenia wsl --list --verbose, nazwę usuwanej dystrybucji oraz informację, czy zachowanie pliku ext4.vhdx jest wymagane. Nie powinno się wcześniej kasować przypadkowych folderów ani zmieniać ich nazw, ponieważ utrudnia to ustalenie pochodzenia danych. Po zakończeniu prac warto ponownie sprawdzić listę dystrybucji, dostępne miejsce na dysku oraz działanie pozostałych środowisk WSL.