有關的:有沒有辦法在 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>
答案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