最近發現我 Windows11 上的 WSL 打不開了,一直提示我虛擬化功能沒有開啟,但我看了下配置,發現虛擬化功能其實是開著的。然後試了各種方法,重灌了好幾次系統,我一個軟體一個軟體的試,最後發現是 Spacedesk 與 WSL2 不相容,只要不裝 Spacedesk 就行了。我也正好趁這個機會,配置了一些其他的東西,比如終端的美化,WebDAV 伺服器的搭建,硬碟分割槽的備份等。
大體思路
先做個U盤啟動盤來裝 Windows 11 系統,然後配置一下系統和安裝各種軟體。之後用 Oh My Posh 來美化 PowerShell 和 Linux 終端。然後在區域網內的另一臺 Windows 上部署兩個 WebDAV 服務,其分別掛載在本地以及阿里雲盤。最後再備份了一下系統分割槽,作用和一鍵還原備份差不多。
用到的東西
配置時最好參考官方的教程
-
簡單來說,Ventoy 是一個製作可啟動U盤的開源工具。
有了 Ventoy 你就無需反覆地格式化U盤,你只需要把 ISO/WIM/IMG/VHD(x)/EFI 等型別的檔案直接拷貝到U盤裡面就可以啟動了,無需其他操作。
你可以一次性拷貝很多個不同型別的映象檔案,Ventoy 會在啟動時顯示一個選單來供你進行選擇。
安裝之後,同一個U盤可以同時支援 BIOS 和多種 UEFI 模式。
支援大部分常見型別的作業系統
-
WSL:(Windows Subsystem for Linux)
適用於 Linux 的 Windows 子系統可讓開發人員按原樣執行 GNU/Linux 環境 - 包括大多數命令列工具、實用工具和應用程式 - 且不會產生傳統虛擬機器或雙啟動設定開銷。
-
Oh My Posh is a custom prompt engine for any shell that has the ability to adjust the prompt string with a function or variable.
Oh My Posh 是一個可自定義終端提示符的軟體,它支援任何種類的命令列環境,並能通過函式或變數來配置提示符的字元顯示
-
Cloudreve 可以讓您快速搭建起公私兼備的網盤系統。Cloudreve 在底層支援不同的雲端儲存平臺,使用者在實際使用時無須關心物理儲存方式。你可以使用 Cloudreve 搭建個人用網盤、檔案分享系統,亦或是針對大小團體的公有云系統
-
阿里雲盤 WebDAV 服務,主要使用場景為配合支援 WebDAV 協議的客戶端 App 如 Infuse、nPlayer 等實現在電視上直接觀看雲盤視訊內容, 支援上傳檔案,但受限於 WebDAV 協議不支援檔案秒傳。
-
DiskGenius 是一款專業級的資料恢復軟體;支援檔案恢復、分割槽恢復;檔案預覽、扇區編輯、加密分割槽恢復、Ext4分割槽恢復、RAID恢復等高階功能
DiskGenius 是一款經典的硬碟分割槽工具 。建立分割槽、刪除分割槽、格式化分割槽、隱藏分割槽、分配碟符等基本功能外,DiskGenius 還提供快速分割槽、無損調整分割槽大小,分割槽表備份恢復等更多高階功能。支援GPT分割槽格式,支援EXT4檔案系統。
DiskGenius 還是一款強大的備份軟體,可以方便的備份或克隆硬碟或分割槽;支援增量備份及多點還原、熱備份、系統備份等眾多特性。
系統重灌
先做個U盤啟動盤出來重灌系統,順便在U盤裡放個 PE 系統映象,方便以後配置電腦。
製作 Ventoy U盤
安裝U盤啟動盤時,整個U盤會被格式化,有重要資料的話,記得提前儲存
安裝完成之後,可以把 Ventoy U盤當成一般的U盤來使用,不會影響U盤的引導。
配置 Ventoy 外掛( VentoyPlugson )
Ventoy 支援許多的外掛,這裡我只配置了“指定搜尋目錄”,主要是為了加快映象的搜尋速度。當然你也可以不配置,一般搜尋映象的速度都是比較快的。
指定搜尋ISO檔案的根目錄。預設Ventoy會搜尋U盤上的所有目錄和子目錄,當你U盤上有海量的檔案時,這個過程會很慢。
這種情況下你可以把ISO檔案單獨放在某個目錄下,然後通過這個變數來指定搜尋路徑,此時Ventoy就只會搜尋該目錄及其子目錄。
Ventoy 外掛裡面有一個資料持久化外掛,如果想在 Linux LiveCD 中儲存資料的話,可以試試這個外掛。
下載系統映象
Windows 和 Linux 的映象都可以,不過如果要在 Windows 11 上用 QQ 的話,要用簡體中文版的映象。我開始用的英文版映象,QQ 就一直說我檔案損壞,後來改用簡體中文版後才正常。
下完了映象後,就直接把映象檔案複製到U盤裡(任意位置都行),當然也可以在U盤裡放一些軟體安裝包,方便裝完系統後安裝。
製作 PE 映象
這裡我做了個 PE 的映象檔案,放到U盤裡,方便以後電腦有什麼問題時,可以用U盤進 PE 系統解決。比如,可以用 PE 來修復系統引導,或者恢復系統盤資料等。
做好 PE 的 ISO 映象後,和系統映象一樣,放到U盤裡就行。
安裝系統
- 插上U盤,重啟電腦,進入 BIOS 選擇U盤啟動。
- 然後選擇要安裝的映象,電腦問你要系統啟用碼可以跳過,我選的是 Windows 11 的 Pro 工作站版,感覺這個版本的功能要全一點。
- 然後就是選擇要裝到哪個地方,可以先刪除之前的分割槽,然後選擇整個硬碟或者某個未分配的區域,來安裝系統。
- 之後就是電腦開始從U盤安裝系統了,在電腦讀取完了U盤的資料之後,就可以拔掉U盤了,然後等它重啟。
- 之後進入了設定介面,按步驟走就好,唯一要注意的就是賬號的登陸。我這選擇的是離線登陸,如果你這裡選的是線上賬號登陸的話,系統使用者名稱就會變成你登陸賬號的前幾位,以後進命令列也是這個名字。離線登陸的話,進入系統後顯示的使用者名稱則是自己輸入的名字。
配置系統
進了系統就是配置各種 Windows 設定裡面的東西了,比如改改工作列軟體圖示或者刪一些不用的軟體,最重要的是記得更新系統。當然你也可以對硬碟進行分割槽,我一般用 DiskGenius 來進行硬碟操作。
我之後重定位了,文件、下載、音樂、圖片、視訊的資料夾位置,這樣就不用以後一個一個更改瀏覽器或者下載軟體裡的下載位置了
安裝軟體
然後就是安裝軟體了,比如 7z,執行庫,Clash(代理軟體),Docker 等。有些軟體可能需要我們進 Windows 商店裡面下載(比如,Ubuntu),我發現如果要進商店的話,要先把 Clash 代理關了,不然進不去。
要想新增開機自啟程式的話,可以在檔案瀏覽器的位址列中輸入 startup
,會自動跳轉到開機自啟資料夾,我的位置是 C:\Users\Admin\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
這裡要特別注意某些軟體可能和 WSL2 不相容,比如 Spacedesk。如果想要用 WSL2 的話,就不要裝 Spacedesk(我現在目前 Spacedesk 的最新版為 Beta RC v1.0.29)
安裝 WSL
這裡我是通過安裝 docker 來安裝 WSL 的, 不過 docker 安裝的是 WSL1,在安裝時 docker 會提示你需要升級到 WSL2,官方有教程。
以管理員身份開啟 PowerShell 並執行:
-
啟用適用於 Linux 的 Windows 子系統:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
-
啟用虛擬機器功能:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
-
將 WSL 2 設定為預設版本:
wsl --set-default-version 2
-
安裝所選的 Linux 分發,我這選的是 Ubuntu,安裝好後開啟,設定一下使用者名稱和密碼,就可以正常使用 WSL 了。
配置終端
這裡我用的終端是系統自帶的 Windows Terminal,然後通過 Oh My Posh 來配置終端,主要是因為它同時支援 Windows 和 Linux。
先裝一個 Nerd Font 字型 防止裝完 Oh My Posh 後出現亂碼,我裝的是 Hack Nerd Font,然後記得更改一下 Windows Terminal 的預設字型就行了。
Windows 終端配置
Oh My Posh | Installation | Windwos
-
安裝 Oh My Posh :
winget install JanDeDobbeleer.OhMyPosh
-
替換現有提示符,先用
$PROFILE
找到 PowerShell 啟動時的指令碼(沒有就在對應位置新建一個同名檔案)。比如我的:PS C:\Users\Admin> $PROFILE D:\Document\PowerShell\Microsoft.PowerShell_profile.ps1
-
在
Microsoft.PowerShell_profile.ps1
指令碼檔案中新增一行命令 :oh-my-posh --init --shell pwsh --config ~/jandedobbeleer.omp.json | Invoke-Expression
之後重啟終端,就能看見新的提示符了。
-
不過我這裡自己更換了另一個更喜歡的主題 craver,如果你不換主題的話,這一步就不用看了。我把剛剛那個
Microsoft.PowerShell_profile.ps1
指令碼里的~/jandedobbeleer.omp.json
更改為了~\AppData\Local\Programs\oh-my-posh\themes\craver.omp.json
,然後再重啟終端就行了。或者直接下載網上 json 檔案並配置。
WSL 終端配置
WSL 的配置大體和 PowerShell 一樣,不過我是在 oh-my-zsh 的基礎上配置的,主要是為了加強終端的功能,這裡我用的是 Ubuntu。
-
先更新一下 Ubuntu 系統:
sudo apt update -y && sudo apt upgrade -y
-
安裝 zsh, git, vim, unzip:
sudo apt install zsh git vim unzip -y
-
設定 zsh 為預設 shell:
chsh -s $(which zsh)
(或 chsh -s zsh) -
設定 WSL2 代理,後面從 Github 下載檔案時可能會有 HTTP 的 443 錯誤,需要我們使用代理,這裡我用的是 Clash,埠號預設為 7890。如果不使用代理的話,從 Github 上下載檔案可能會很慢。
在
~/.zshrc
檔案最後新增如下指令碼程式碼,以後每次 zsh 啟動時都會執行下面的程式碼,可以用剛剛安裝的 Vim 開啟~/.zshrc
並新增程式碼。export hostip=$(cat /etc/resolv.conf |grep -oP '(?<=nameserver\ ).*') export https_proxy="http://${hostip}:7890" export http_proxy="http://${hostip}:7890"
-
安裝 oh-my-zsh:
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
-
配置 oh-my-zsh 外掛,比如:
安裝 zsh-autosuggestions (可以自動提示以前輸過的命令):
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
安裝 zsh-syntax-highlighting(可以使命令列的命令高亮):
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
然後在
~/.zshrc
檔案已有的 plugins 的欄位中新增外掛名稱,例如plugins=( git zsh-autosuggestions zsh-syntax-highlighting )
-
同樣的安裝 Oh My Posh,就直接跟著官網的教程走就行。
Oh My Posh | Installation | Linux
下載 oh my posh:
sudo wget https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/posh-linux-amd64 -O /usr/local/bin/oh-my-posh sudo chmod +x /usr/local/bin/oh-my-posh
下載主題:
mkdir ~/.poshthemes wget https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/themes.zip -O ~/.poshthemes/themes.zip unzip ~/.poshthemes/themes.zip -d ~/.poshthemes chmod u+rw ~/.poshthemes/*.json rm ~/.poshthemes/themes.zip
-
替換現有提示符,在
~/.zshrc
最後新增下面的程式碼:eval "$(oh-my-posh --init --shell zsh --config ~/jandedobbeleer.omp.json)"
當然也可以把
jandedobbeleer
改成其他喜歡的主題,比如我改成了:eval "$(oh-my-posh --init --shell zsh --config ~/.poshthemes/craver.omp.json)"
然後重啟終端就行了
部署區域網 WebDAV 伺服器
我用區域網內的另外一臺 Windows 來做下載器,在其上安裝了 Cloudreve 以及 aliyundrive-webdav 來實現 Webdav,操作則用 Windows 自帶的遠端桌面來控制。cloudreve 主要是用來在兩臺 Windows 之間傳輸檔案的,aliyundrive-webdav 則是部署阿里雲盤的 webdav 服務。webdav 的客戶端的話,我則是用的是 Raidrive
配置 Windows 遠端桌面
先在被控制的電腦上開啟遠端控制,然後找到其的 IP 地址。比如我用 ipconfig
找到本地的 IPv4 地址為 192.168.1.7
。當然,你也可以不用遠端控制,直接在另一臺 Windows 電腦面前操作。
這裡最好配置一下路由器的 DHCP ,為其靜態分配一個固定的 IP 地址,以後連的時候就不用再看地址了。然後在控制端開啟遠端桌面連線,輸入被控制電腦的 IP 地址,連上就行了。
配置 Cloudreve
在被控制的電腦中開啟 cloudreve.exe
即可,第一次啟動時會提示一次使用者名稱和密碼,以後啟動時就沒有提示了,所以要注意儲存。
然後在瀏覽器開啟 localhost:5212
就能看見 Cloudreve 的前端網頁了,之後新增一個 WebDAV 賬號,它預設使用的是本地(被控制裝置)儲存,這樣就能在兩臺電腦之間傳輸檔案了。其實遠端桌面連線,支援直接複製貼上檔案,不過每次都要開啟遠端桌面手動複製貼上,有點麻煩。
Cloudreve 預設每個使用者的容量為 1G,可以進 cloudreve 的後臺更改使用者組的容量設定。
之後就是在主控制端的 Windows 上裝 Webdav 客戶端了,我用的是 Raidrive 因為其可以掛載 One Drive 和 Google Drive 等的其他儲存方式,而且配置功能也比較豐富。下面是剛剛配置的 Cloudreve 的 raidrive 配置,比如,埠 5212
,路徑預設/dav
,使用者名稱預設 admin@cloudreve.org
,密碼則是剛剛建立的 Webdav 新賬號的密碼
配置 aliyundrive-webdav
我把阿里雲盤的 webdav 服務放在了被控制的 windows 上一直開著,比較方便,而且區域網內的其他裝置也可以用。下面跟著 Github 上的說明走就行,我是用 docker 部署的服務:
docker run -d --name=aliyundrive-webdav --restart=unless-stopped -p 8080:8080 -v /etc/aliyundrive-webdav/:/etc/aliyundrive-webdav/ -e REFRESH_TOKEN='your refresh token' -e WEBDAV_AUTH_USER=admin -e WEBDAV_AUTH_PASSWORD=admin messense/aliyundrive-webdav
等同於在 Powershell 中的
docker run -d --name=aliyundrive-webdav --restart=unless-stopped -p 8080:8080 `
-v /etc/aliyundrive-webdav/:/etc/aliyundrive-webdav/ `
-e REFRESH_TOKEN='your refresh token' `
-e WEBDAV_AUTH_USER=admin `
-e WEBDAV_AUTH_PASSWORD=admin `
messense/aliyundrive-webdav
-
-v
:繫結的卷,這裡的這個卷主要是用來存放阿里雲盤的 refresh_token。前面的那個
/etc/aliyundrive-webdav/
是 windows 裡的地址(我隨便改了個~/
地址)後面的那個
/etc/aliyundrive-webdav/
是 docker 容器裡的地址 -
-e
:環境變數REFRESH_TOKEN
:阿里雲盤 refresh_token (獲得方法的話,作者在 Github 上有說)WEBDAV_AUTH_USER
:想要設定的 WebDAV 服務的使用者名稱(我直接預設的)WEBDAV_AUTH_PASSWORD
:想要設定的 WebDAV 服務的密碼(我直接預設的)
被控制的 Windows 上的 docker 執行正常後,就可以在主控制端配置 webdav 了,我順便還連上了 OneDrive 和 Google Drive
備份分割槽/磁碟
這次配置系統,不知道出了多少的問題(主要是因為 Spacedesk 和 WSL2 不相容的問題),還把機械硬碟弄成了動態卷,然後又一不小心把機械硬碟的分割槽弄壞了。後來用 DiskGenius 重建分割槽表都只恢復了部分分割槽,感覺以後隨時都要注意備份分割槽和硬碟了。我前面弄的那個阿里雲盤 webdav 主要也是為了方便儲存一些資料和系統備份映象,以免本地電腦出問題後花時間來重新配置系統。
這裡備份的時候,有兩種主要的方式:備份與克隆
備份只是生成一個映象檔案,不會覆蓋其他分割槽的資料,而且映象檔案移動起來也比較方便。如果還嫌麻煩的話,就直接用各種一鍵還原的軟體,還能自動的幫你裝啟動項和做U盤啟動盤,貌似 DiskGenius 官方就有一個叫易數一鍵還原的工具。
克隆則是直接把一個分割槽(或硬碟)的所有資料複製到另一個分割槽(或硬碟),而且會覆蓋掉另一個分割槽原有的資料。所以我個人認為,分割槽備份要方便一點,當然如果要進行系統遷移的話,還是最好用克隆硬碟的方式。
這以後如果在雲端能做的事情,我就儘量線上上操作算了,這樣就不用注意本地備份的問題了。
本文由 Tsanfer's Blog 釋出!