1. 前言
將windows作為開放環境,對於開發人員並不友好(至少對於我這總習慣在unix下開發的人來說),其難用的powershell,讓人很頭疼,不過幸運的是Windows提供了WSL2,可以運行linux子系統。倘若能夠用WSL作為開發環境,宿主Windows用作辦公環境,就可以彌補只用linux作為主力環境下一些軟件生態不足的缺點(有錢直接上mac)。這篇文章就是為那些,用windows下WSL2作為開發環境的人員提供的。
注意:開始前請確保你的系統支持wsl2
- 對於 x64 系統:版本 1903 或更高版本,采用內部版本 18362 或更高版本。
- 對於 ARM64 系統:版本 2004 或更高版本,采用內部版本 19041 或更高版本。
- 低於 18362 的版本不支持 WSL 2。
2. 宿主機Windows的配置
以下所涉及的所有命令均使用管理員身份運行(“開始”菜單 >“PowerShell”> 單擊右鍵 >“以管理員身份運行”)
1. 啟用WSL
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
2. 啟用虛擬機功能
安裝 WSL 2 之前,必須啟用“虛擬機平台”可選功能。
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
重啟計算機
3. 下載 Linux 內核更新包
-
下載最新包
-
運行上一步中下載的更新包。 (雙擊以運行 - 系統將提示你提供提升的權限,選擇“是”以批准此安裝。)
4. 將 WSL 2 設置為默認版本
wsl --set-default-version 2
5. 安裝所選的 Linux 分發
打開應用商店選擇一款Linux發行版(本教程使用Ubuntu)
首次啟動新安裝的 Linux 分發版時,將打開一個控制台窗口,系統會要求你等待一分鍾或兩分鍾,以便文件解壓縮並存儲到電腦上。 未來的所有啟動時間應不到一秒。
然后,需要為新的 Linux 分發版創建用戶帳戶和密碼。
6. 下載vscode作為開發工具(可選)
推薦使用vscode是因為vscode提供了RemoteWSL插件,可以直接將WSL作為開發環境,並且vscode是免費的
7. windows terminal的美化(可選)
本教程不涉及過多美化,只有設置透明背景以及更換字體等簡單操作。
打開windows terminal的配置文件(ctrl + ,), 找到// Put settings here that you want to apply to all
這句話,改成如下,下面涉及到的字體可以從這里下載到
"defaults":
{
// Put settings here that you want to apply to all profiles.
"acrylicOpacity": 0.85, // 背景透明度 0-1
"useAcrylic": true, // 背景模糊
"fontFace": "RobotoMono Nerd Font", // 字體
"cursorShape": "vintage", // 光標樣式 "bar" ( ┃ )、"vintage" ( ▃ )、"underscore" ( ▁ )、"filledBox" ( █ )、"emptyBox" ( ▯ )
"antialiasingMode": "cleartype" // 抗鋸齒
},
通過windows terminal打開的ubuntu默認的路徑是你Windows的Home目錄,可以將其修改為ubuntu的Home目錄(如果你想這樣做的話)
{
"guid": "{2c4de342-38b7-51cf-b940-2309a097f518}",
"hidden": false,
"name": "Ubuntu",
"source": "Windows.Terminal.Wsl",
"startingDirectory": "//wsl$/Ubuntu/home/kain" // 新增這一行,最后的名字改成你自己的用戶名
}
3. 在WSL中配置開發環境
注意:本教程使用的是Ubuntu
1. 修改shell為zsh
sudo apt-get install zsh
chsh -s /bin/zsh
重新進入wsl,確保shell已經被換成zsh
2. 安裝oh-my-zsh
- 先確保這幾個命令已經被安裝
sudo apt-get install git wget curl
- 安裝ohmyzsh
sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"
- 安裝兩個常用插件
git clone git://github.com/zsh-users/zsh-autosuggestions.git ~/.oh-my-zsh/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ~/.oh-my-zsh/plugins/zsh-syntax-highlighting
sed -i 's!plugins=(git)!plugins=(git sudo zsh-autosuggestions zsh-syntax-highlighting)!g' ~/.zshrc
- source
source ~/.zshrc
3. 安裝docker
直接使用apt安裝的docker可能版本較老,使用下面的過程可安裝最新的docker
- 更新源&安裝依賴
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
- 添加Docker官方的GPG密鑰
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
- 添加apt倉庫
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- 安裝docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
- 將當前用戶加入docker用戶組
sudo gpasswd -a ${USER} docker
- 啟停docker的命令
啟動docker
sudo service docker start
停止docker
sudo service docker stop
重啟docker
sudo service docker restart
4. 安裝golang開發環境
直接使用apt安裝的golang可能版本較老,使用下面的過程可安裝最新的golang
- 從官方網站下載最新的golang安裝包這里以1.17.7為例
wget https://golang.google.cn/dl/go1.17.7.linux-amd64.tar.gz
- 解壓安裝包
sudo tar -C /usr/local -xzf go1.17.7.linux-amd64.tar.gz
- 創建gopath目錄(~/.go為例)
mkdir -p ~/.go
mkdir -p ~/.go/bin
mkdir -p ~/.go/src
mkdir -p ~/.go/pkg
- 加入環境變量
echo "export GOROOT=/usr/local/go" >> ~/.zshrc
echo "export GOPATH=~/.go" >> ~/.zshrc
echo "export GOBIN=~/.go/bin" >> ~/.zshrc
echo "export PATH=$PATH:$GOROOT/bin:$GOBIN" >> ~/.zshrc
source ~/.zshrc
- goproxy
go env -w GOPROXY=https://goproxy.io,direct
4. 結尾
我們完全不需要在windows宿主機中安裝任何開發環境,所有的開發環境只需要安裝在wsl中即可,windows中只需要一些常用的IDE,辦公聊天軟件。
注意宿主機通過vEthernet
這張網卡和WSL通信,宿主機和wsl擁有不同的兩個IP
wsl命令參考:https://docs.microsoft.com/zh-cn/windows/wsl/basic-commands