背景
Linux 桌面容易崩潰,通常沒有主流的辦公軟件
Mac 剛換ARM架構有些兼容性問題,《不能玩游戲,劉海太丑》
Windows 啥都能干,但是powershell 太復雜配置個環境變量都費勁,國內服務器一般使用Linux,powershell 操作起來不太習慣,一些語言都是從類Unix平台移植過來的,運行速度和編譯速度沒有 Linux 快
WSl介紹
微軟近些年一改從前對開源的態度,開始積極擁抱開源,然后就在windows上內置了一個linux子系統簡稱wsl
wsl1 是一個仿真的系統不支持某些內核特性,比如 namespace,唯一的優點就是跨文件系統訪問速度幾乎沒有開銷
wsl2 是基於hyper-v技術的輕量級虛擬機,完整的 linux 內核,啟動只需要幾秒
以下操作均在win11 22000下操作
安裝
powershell(管理員)
wsl --install
該命令會自動啟用子系統功能並安裝ubuntu
常用配置
全局配置
配置文件 %UserProfile% .wslconfig
[wsl2] # wsl虛擬機cpu核數 processors=8 # wsl虛擬機內存 memory=4GB swap=1GB # 開啟localhost 訪問 localhostforwarding=true # 關閉嵌套虛擬化 nestedVirtualization=false
分發配置
配置文件/etc/wsl.conf
[automount] # window 分區掛載文件權限掩碼 options = "metadata,umask=022,fmask=033" [interop] # 是否開啟互操作,也就是在linux使用win命令 enabled = true appendWindowsPath = true [boot] # 開機啟動命令一些想開機啟動的命令可以放進來 command = sudo /etc/init.d/start.sh
配置支持中文
# 安裝中文包 sudo apt install language-pack-zh-hans -y
# 勾選選en_US.UTF8 zh_CN.UTF8 並設置zh_CN.UTF8為默認 sudo dpkg-reconfigure locales
# 安裝字體配置工具 sudo apt install fontconfig # 拷貝windows字體
sudo cp -r /mnt/c/Windows/Fonts /usr/share/fonts/windows # 或者安裝文泉字體,感覺沒有windows字體看着舒服
sudo apt-get install fonts-wqy-zenhei
# 刷新字體 fc-cache -f -v
安裝GUI應用
sudo apt update # 安裝常用軟件 sudo apt install gedit nautilus -y # 安裝輸入法 sudo apt install fcitx fcitx-googlepinyin -y # 啟動語言檢查,可以完整一下中文環境 sudo echo "sudo /etc/init.d/dbus start" >> /etc/init.d/start.sh sudo /etc/init.d/dbus start sudo gnome-language-selector # 安裝edge瀏覽器 curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg sudo install -o root -g root -m 644 microsoft.gpg /usr/share/keyrings/ sudo sh -c 'echo "deb [arch=amd64 signed-by=/usr/share/keyrings/microsoft.gpg] https://packages.microsoft.com/repos/edge stable main" > /etc/apt/sources.list.d/microsoft-edge.list' sudo rm microsoft.gpg sudo apt install microsoft-edge-stable -y
裝好的應用會自動出現在windows的開始菜單,直接在開始菜單啟動即可,除了分辨率有點不對,使用起來很流暢
配置中文輸入法
wsl不支持systemd,要想自動啟動fcitx 可以在 ~/.bashrc 加入
export GTK_IM_MODULE=fcitx export XMODIFIERS=@im=fcitx export QT_IM_MODULE=fcitx if [ $(ps -ef |grep fcitx-dbus-watcher |wc -l) -eq 1 ]; then fcitx-autostart >/tmp/fcitx.log 2>&1 fi
打開 Fcitx 配置 (Ubuntu)
改一下快捷鍵
安裝Docker
# 安裝docker sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo \ "deb [arch=$(dpkg --print-architecture) 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 sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io # 自動啟動 sudo echo "sudo /etc/init.d/docker start" >>/etc/init.d/start.sh
設置固定IP
powershell(管理員)
netsh interface ip add address "vEthernet (WSL)" 192.168.128.254 255.255.255.0
wsl
sudo ip addr add 192.168.128.1/24 broadcast 192.168.128.255 dev eth0 label eth0:1 # 開機自動設置 sudo echo "sudo ip addr add 192.168.128.1/24 broadcast 192.168.128.255 dev eth0 label eth0:1" >>/etc/init.d/start.sh
網絡訪問
win 訪問 wsl
telnet localhost 3306
wsl 訪問 win
telnet 192.168.128.254 3306
win 局域網遠程訪問,假設你的局域網IP為192.168.1.1
netsh interface portproxy add v4tov4 listenport=3306 listenaddress=192.168.1.1 connectport=3306 connectaddress=192.168.128.1 # 遠程主機 telnet 192.168.1.1 3306
環境變量配置
- /u
win 環境變量傳入 linux,這個很好用,即使 wsl 不加載任何用戶環境配置也會傳入
- /w
linux 變量傳入 win
- /p
相互轉換win和linux路徑
- /l
相互轉換win和linux路徑列表
IDE使用WSL
VS Code
打開WSL遠程窗口
Jetbrains 全家桶
目前 (2022.1)Jetbrains 家的IDE基本上都支持WSL,下面演示一下怎么用Goland + WSL 進行Golang 開發
下載sdk並配置環境變量
cd /data wget https://go.dev/dl/go1.18.1.linux-amd64.tar.gz tar -zvxf go1.18.1.linux-amd64.tar.gz
環境變量推薦使用 WSLENV
powershell
[System.Environment]::SetEnvironmentVariable("GO111MODULE","on","User") [System.Environment]::SetEnvironmentVariable("GOPATH","\\wsl$\Ubuntu\home\zhangsen\go","User") [System.Environment]::SetEnvironmentVariable("ENV_NAME","dev","User") [System.Environment]::SetEnvironmentVariable("WSLENV","GOPATH/p:GO111MODULE/u:ENV_NAME/u","User")
新建項目