如何重置 Linux 的 Windows 子系統的手動安裝?

如何重置 Linux 的 Windows 子系統的手動安裝?

有關的:有沒有辦法在 Win10 (v1709) 上安裝適用於 Linux 的 Windows 子系統而不使用應用程式商店?

安裝 WSL 發行版時外部Microsoft Store(例如在受限網路上,請參閱連結),與該發行版互動的許多標準方法都不可用。在我的範例中,當我進入「設定」>「應用程式和功能」時,發行版未顯示在清單中,且管理功能不可用。如果我手動安裝的 Linux 實例陷入不良狀態,重置它並將其恢復為全新安裝的正確方法是什麼?

編輯:迄今為止遇到的「不良狀態」範例包括「apt-get update」期間的 BSOD,導致無法復原的狀態。此外,執行多個配置變更來解決問題,刪除或停用服務並安裝其他軟體包,而不密切追蹤變更的內容,並希望「重新開始」以測試所獲得的解決方案是否確實可以自行工作..

答案1

如果我手動安裝的 Linux 實例陷入不良狀態,重置它並將其恢復為全新安裝的正確方法是什麼?

如果您使用的是 Windows 10 版本 1903:

wsl --unregister <DistributionName>

如果您使用的是 Windows 10 版本 1709、1803 或 1809:

wslconfig /unregister <DistributionName>

管理和設定適用於 Linux 的 Windows 子系統

答案2

您可以使用巧克力口味(例如,使用私有 NuGet 儲存庫)並選擇 Debian 映像:

choco install wsl-debiangnulinux

但是之後

  • 只有快捷方式可用,例如“WSL Terminal”和“Debian Terminal”。
  • 系統不會提示您建立用戶,只會啟動 root shell
  • 您不會在“設定/應用程式和功能”中找到適用於 WSL 的 Linux 發行版,因此沒有“進階選項”或“重置”

順便說一句,wsl 命令列可用,但您必須手動建立使用者帳戶(根據發行版的 useradd 或 adduser),授予 sudo (sudo 群組或 sudoers),並/etc/wsl.conf使用[user]部分建立default=yourlogin- 請參閱wsl 配置文件.就我而言,<distribution> config --default-user yourlogin沒有任何影響。

如果發生明確的中斷,唯一的選擇似乎是按以下順序運行:

wsl --export <distribution> wsl-backup-<distribution>.tar
wsl --unregister <distribution>
choco install wsl-<distribution>
wsl --import <distribution> wsl-backup-<distribution>.tar

希望匯入的檔案不會讓您遇到麻煩。

答案3

警告:以下資訊未完全正式記錄,因為問題涉及 WSL 中分發的「手動安裝」。因此程序可能是有點不同在未來的 Windows 10 版本中。

為了理解它,我們首先需要知道透過 Windows 應用程式商店安裝發行版和手動安裝發行版有什麼區別。將 Windows 應用程式商店視為 Windows 中的套件管理器。它監視所有已安裝、已卸載、已更新的軟體包。安裝發行版後,它是作為 Appx 套件(ZIP 檔案)提供。軟體包包含該發行版的 rootfs tarball(GZIP tar 檔案)(範例install.tar.gz)、啟動器執行檔(範例ubuntu.exe)和一些其他內容。

當該啟動器首次執行時,它會提取 tarball(如命令)並在註冊表項tar -xf中建立一個註冊表項。HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss\{GUID}這個註冊表項很重要,它提供了發行版的安裝位置、預設使用者等。

安裝發行版時手動建立了相同的登錄項,但具有不同的基本路徑和其他路徑。由於此手動過程不是透過 Windows 應用程式商店提供的,因此它不會在「設定」應用程式中列出。但wsl.exe --list --all指令可以顯示 WSL 中所有已安裝的發行版。透過這種方式,我們不會獲得啟動器可執行文件,但我們可以使用wsl.exe.

我們如何從「不良狀態」重置?如果您熟悉 UNIX 世界,請假設 WSL 中的發行版如下chroot 環境。總是備份 WSL 發行版。像往常一樣,在真正的基於 Debian 的發行版中,我們通常會執行這些命令來修復軟體包:

sudo dpkg –configure -a
sudo apt update –fix-missing
sudo apt install -f

如果這些都不能解決問題,卸載並重新安裝可能會解決它。您可能想要備份該/home資料夾,tar -czf因為大多數使用者特定的配置都保存在那裡。接下來使用命令卸載發行版wsl.exe --unregister <Distribution Name>。備份對使用者來說可能很重要,因為上一個指令會刪除整個根資料夾。/。現在您可以安裝新的發行版並像往常一樣提取先前的/home備份資料夾。tar -xf

答案4

嘗試這個:

wsl --set-default-version 2

您也可以將 wsl 的版本設定為任何已安裝的發行版:

wsl --set-version Ubuntu-20.04 1

相關內容