完全重新安裝 WSL

完全重新安裝 WSL

我安裝了WSL 1,喜歡在我的 PC 上安裝 Linux,然後發現兩個作業系統之間檔案互通性稀缺的限制。

所以我安裝了WSL 2遵循規範(在 BIOS 設定和所有內容中啟用虛擬化),但安裝未完全正常工作,我無法將其設為預設值,並且並非所有 shell 命令都按預期回應。
我用谷歌搜索,有人遇到了類似的問題,但沒有提出那麼多直接的解決方案(我想這仍然是一個相對較新的案例)。

所以我想盡可能深入刪除 WSL 並從頭開始重新安裝 WSL 2。

  • 徹底刪除 WSL 的最安全、最明智的流程是什麼?
  • 是否可以在不安裝 WSL 1 的情況下從頭開始安裝 WSL 2?

答案1


更新:目前這個答案有點過時了。如果您使用的是 Windows 10 或 11 22H2 之前安裝的舊版 WSL,那麼這可能是有關如何卸載的正確答案。但是,如果正在執行 WSL 的 Store 版本(或 UWP 版本),那麼請參閱我的較新的答案(和/或其他使用者的答案,如果存在)。


是否可以在不安裝 WSL 1 的情況下從頭開始安裝 WSL 2?

否。

徹底刪除 WSL 的最安全、最明智的流程是什麼?

這是我所掌握的有關刪除的最佳信息一切與 WSL 相關。

聽起來您認為現有實例是一個失敗的原因,但如果您想為後代備份它,您可以從以下開始:

  • wsl --export <distroname> archivename.tar

然後刪除現有的發行版安裝:

  • 您從應用程式商店安裝的任何發行版,應先透過 Windows 中的「應用程式和功能」(又稱「新增或移除程式」)刪除。這也適用於透過下載的 Appx 套件手動安裝的發行版。

然後檢查以確保沒有留下任何東西。從 PowerShell 或 CMD:

  • wsl -l
  • wsl --unregister <distroname>

您可能只想從商店安裝一個新的發行版。其他組件的任何額外重新安裝都不太可能產生影響。但如果你確實想刪除它們:

  • 從 Windows 中的「應用程式和功能」(也稱為「新增或刪除程式」)中,刪除「適用於 Linux 更新的 Windows 子系統」。我相當確定這是 Linux 核心更新。如果您想在下一步之前確保它完全消失,可能需要重新啟動。

  • 從「開啟或關閉 Windows 功能」中,停用「Linux 的 Windows 子系統」。

  • 從 Windows 中的「開啟或關閉 Windows 功能」中,停用「虛擬機器平台」。這就是 WSL2 Hyper-V 支援。

  • 重啟。

當您從那裡重新安裝時,如果您能確認“Windows Subsystem for Linux Update”在安裝核心更新套件後返回到“應用程式和功能”(步驟 4),我將不勝感激。安裝文件)。我將根據該資訊更新此答案。

答案2

此答案指的是較新的 Store/UWP 版本的 WSL。若要確認您正在使用此較新版本,請從 PowerShell 執行下列命令:

Get-AppxPackage |? { $_.Name -like "*WindowsSubsystemforLinux*" }

如果您看到結果,請繼續閱讀此答案。如果您沒有得到結果,那麼您可能正在執行舊版的 WSL。看我的舊答案關於如何完全卸載該版本。

對於 Store/UWP 版本,答案已更改:

是否可以在不安裝 WSL 1 的情況下從頭開始安裝 WSL 2?

是的,在 Windows 11 22H2 下,wsl --install預設會僅有的安裝 WSL2。要安裝 WSL1,您必須新增wsl --install --enable-wsl1.

請注意,該--enable-wsl1選項在 Windows 10 上不可用,即使在與較新的 WSP 版本相容的完全更新的系統上也是如此。在 Window 10 (19045.2311) 上,WSL1 仍會自動安裝並透過wsl --install.

徹底刪除 WSL 的最安全、最明智的流程是什麼?

這是我所掌握的有關刪除的最佳信息一切與 WSL 相關。這應可確保 (a) 刪除所有功能,以及 (b) 回收所有磁碟空間。

  1. (可選)備份現有發行版:

    聽起來您認為現有實例是一個失敗的原因,但如果您想為後代備份它,您可以從以下開始:

    wsl --export <distroname> archivename.tar
    

    透過 確認要備份的所有發行版名稱wsl -l -v

    或者,僅將對您重要的文件從發行版複製到發行版以外的安全位置。通常,這將包括您的主目錄中的所有內容,但也會查看/var/etc可能想要保留的任何檔案。

  2. (可選)確認備份分發的有效性:

    當然,如果備份對您很重要,請確認它可以使用wsl --import新名稱。

  3. 取消註冊現有發行版:

    對於使用 找到的每個發行版wsl -l -v,透過以下方式將其刪除:

    wsl --unregister <distroname>
    

    警告:這是一個破壞性且不可逆的操作,除非您有上述有效的備份。

  4. 解除安裝任何發行版包包從商店安裝的(應用程式):

    設定->新增或刪除程序並尋找您可能從商店安裝的任何發行版(Ubuntu、Debian、Alpine、openSUSE 或其他)。這實際上與您上面未註冊的發行版是分開的。這些軟體包包括最初創建您的發行版的 Distro Launcher 和 rootfs(例如ubuntu2004.exe)。

    卸載每個發行版。

    在較舊的 Windows 版本下,卸載這些軟體包卸載了相應的發行版,導致一些意外的資料遺失。看來大多數最新的系統都要求透過兩個單獨的步驟來刪除它們,這是一件好事。

  5. 也在設定->新增或刪除程序,尋找並刪除任何「適用於 Linux 的 Windows 子系統」應用程式。這可能包括:

    • 適用於 Linux 的 Windows 子系統:主要 WSL 套件本身
    • 適用於 Linux 的 Windows 子系統更新:更新舊版本(內置,作為 Windows 功能)WSL 版本的核心包。
    • Windows Subsystem for Linux WSLg Preview:Windows 11 隨附的 WSLg 功能。
  6. 此時最好重新啟動以釋放任何其他正在使用的檔案。

  7. 接下來,前往設定->開啟或關閉 Windows 功能

  8. 如果已啟用,請停用:

    • 虛擬機器平台
    • Linux 的 Windows 子系統

    Windows 可能會提示重新啟動。

  9. 重新啟動後,確認以上項目已成功刪除。此時,任何wsl命令應該只需返回預設的“安裝”幫助文字即可。

從此處重新安裝的建議方法是:

  • 開啟提升的 PowerShell。最好以普通使用者身分在管理員提升的會話中執行此操作,而不是以分離管理員用戶。

    wsl --install
    

    預設情況下,這將:

    • 重新啟用虛擬機器平台
    • 從 Microsoft Store 安裝最新的 WSL 版本。此版本現在直接包含內核,而不是像以前那樣需要單獨的安裝步驟。
    • 從 Microsoft Store 安裝預設的 Ubuntu 發行版

    另請參閱wsl --help其他安裝選項。例如,您可以在此階段跳過發行版的安裝或選擇不同的發行版。

相關內容