WSL2 打造顶级开发环境
背景
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")
新建项目