WSL2安装Linux
安装ubuntu
20.04(D盘)
在 D://wsl 目录下打开 powershell,执行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18mkdir D:\Linux
cd D:\Linux
# 下载ubuntu20.04 文件有4G多,等一会是正常的 等他下载完即可
Invoke-WebRequest -Uri https://wsldownload.azureedge.net/Ubuntu_2004.2020.424.0_x64.appx -OutFile Ubuntu20.04.appx -UseBasicParsing
Rename-Item .\Ubuntu20.04.appx Ubuntu.zip
Expand-Archive .\Ubuntu.zip -Verbose
cd .\Ubuntu\
# 安装
.\ubuntu2004.exe
Installing, this may take a few minutes...
# 看看自己安装的版本
.\ubuntu2004.exe config --default-user root
wsl -l -v
# wsl后查看linux发行版本信息
lsb_release -a安装会弹出一个黑框框等几分钟这样,然后输你想要的入用户名和密码就行
22.04 LTS
1 | # 下载 Ubuntu-22.04 LTS 镜像文件 下载的文件是 wsl.rootfs.tar.gz |
当您第一次打开“Ubuntu”应用程序时,系统会要求您为 Linux 环境设置用户名和密码
将分发设置为默认值
1 | wsl -l -v |
打开终端机,输入下指令更新 Ubuntu
1 | sudo apt update |
CentOS7
安装
- 官方没有提供 CentOS7,可以在下面这个 CentOS-WSL 仓库下载,选择对用的版本下载,也可以使用其他的 CentOS 版本
- 下载完成后解压是两个文件,注意此时放在哪个目录下则会在对应的目录下创建 ext4.vhdx 虚拟磁盘,不建议放到 C 盘,这个文件随着时间增长会变得很大, 双击
CentOS7.exe
即可安装。
YUM 源修改
wsl2备份和还原
1 | wsl -l -v |
WSL配置
设置网络、主机名、开启systemd
1 | $ sudo vim /etc/wsl.conf |
设置DNS
1 | # 临时设置 |
重启生效
1 | # Windows PowerShell下运行 (关闭后重启) WSL |
开启wsl新特性
更新到 WSL2 2.0, 配置 .wslconfig 文件开启新特性:
启用镜像网络后,WSL2 和 Windows 主机将使用相同的网络,并且可以通过 localhost 访问本机系统上的服务。这意味着你可以在 WSL2 中访问本机系统上运行的应用程序,以及通过本机系统访问在 WSL2 中运行的应用程序。
1 | # windows user/fulsun 目录下配置 .wslconfig 文件开启新特性 |
重启 WSL
1 | # 重启 WSL |
更新wsl内核
检查 WSL 内核版本: 通过在 PowerShell 中运行以下命令,确保具有最新的内核:
1 | $ wsl cat /proc/version |
升级内核: https://github.com/microsoft/WSL2-Linux-Kernel,下载最新版本
1 | git config --global http.postBuffer 5242880000 |
1 | sudo apt install build-essential bc flex bison dwarves libssl-dev libelf-dev |
将其复制到你想要的位置。
1 | # 注意这个位置应该存在于你的主硬盘而不是 wsl 中 |
打开你的用户目录,修改 .wslconfig 文件,在 [wsl2] 标签中添加 kernel 字段,它的值为带有转义反斜杠的 Windows 路径。
1 | 修改 \Users\<UserName>\.wslconfig |
重启wsl查看内核
1 | wsl --shutdown |
升级GLIBC高版本
1 | strings /lib/x86_64-linux-gnu/libc.so.6 |grep GLIBC_ |
终端配置
WSL(Ubuntu) 默认终端是 bash, zsh(oh-my-zsh) 功能比 bash 要强大得多,但是配置起来太难了。国外的一个程序员看不下去一直这么单调的 zsh,就开发了 oh my zsh。配置起来,不要太简单。可谓是高档大气上档次,狂拽炫酷吊炸天。
配置为zsh后 ,不要随便卸载,否则登录还是使用/bin/zsh会导致登录不上
卸载zsh
1 | # 先 cat /etc/passwd 复制到本地备份一下 |
安装 zsh
检查环境
1
2
3
4
5
6# 查看当前系统的 shell
echo $SHELL
# 查看系统安装的 shell
cat /etc/shells
# 安装 zsh 若有 zsh,则切换未 zsh
chsh -s/bin/zshWSL(Ubuntu) 默认是未安装 zsh 的,使用以下指令安装并切换:
1
2
3sudo apt-get install zsh -y
chsh -s /bin/zsh
exec /bin/zsh
安装 oh my zsh
使用以下指令下载并安装 oh my zsh
1 | sudo apt install zsh -y |
❌ 注意:若有人在这里遇到错误:
curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused
,那是因为 github 被墙了。解决方法如下(亲测有效): 输入网址(先确能进 github):https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh 进入后是一个文件,将该.zsh
文件下载下来,保存为install.zsh
到一个目录。接下来在 WSL 进入该目录,执行命令:
1 | chmod +x install.sh |
切换主题
常用命令:
1 | # 查看 oh my zsh 自带了哪些主题: |
输入以下指令,进入 .zshrc
配置文件。 注意:ZSH_THEME=
与主题名之间没有空格!!!
1 | # 进入 `.zshrc` 后修改 `ZSH_THEME` 为指定主题 |
外部主题
在其仓库wiki中有一些额外的主题, 推荐笔者常用的spaceship
主题,安装方法如下:
1 | # 拉取项目仓库,可以通过上面提到的方法进行加速,此处直接放镜像地址,如果因为时间问题镜像失效,请使用其github官方地址 |
安装 P10k
1 | # 安装 P10k |
安装插件
插件与主题一样,同样是在.zshrc
文件中进行配置。ohmyzsh
默认自带了很多插件放置在~/.oh-my-zsh/plugins
目录下面,具体每个插件的作用可以参考其仓库wiki:
1 | # 查看可用插件 |
默认只启用了git
插件,打开~/.zshrc
配置文件,找到plugins
变量,将您想启用的插件加入进入即可,不通插件名称之间以空格隔开,保存后重开终端或者执行exec $SHELL
命令即可生效。除ohmyzsh
自带的插件外,您还可以安装一些额外的插件,在其仓库wiki中介绍了一些,可以自行去查看,此处推荐笔者经常使用的插件:
- zsh-autosuggestions:能在输入命令时根据历史记录提供自动建议的插件
- zsh-syntax-highlighting 当你输入命令的时候,提供语法高亮的插件
- conda-zsh-completion 提供
conda
虚拟环境名称补全的插件 - pip 为
python
包管理器pip
提供补全 - ufw 为防火墙管理工具
ufw
命令提供补全 - sudo 通过双击Esc键快速为当前命令添加
sudo
前缀 - docker 为
docker
命令添加自动补全支持 - docker-compose 为
docker-compose
命令添加自动补全支持 - extract 一条
extract
命令解压多种压缩包格式,使用方法:extract <filename>
- command-not-found 此插件在
zsh
找不到命令时提供建议的安装包
1 | # 启用插件 |
自动安装脚本安装
1 | ## 为了便于安装,笔者将安装 oh-my-zsh 以及常用主题和插件的过程写成了脚本,内容如下: autozsh.bash |
nvm设置
1 | # 修改 环境变量 |
Windows Termian
1 | { |
Centos7下zsh
1 | yum install zsh |
配置vim
1 | apt install vim |
sudo 免密
sudo adduser user root
sudo visudo
1
2# Append a line
# youruser ALL=(ALL) NOPASSWD:ALL
开启镜像网络
版本要求:
- OS: ≥ Windows 11 22H2(Build 22621.2359+)
- WSLg/WSL2: Windows Subsystem for Linux 2.0.0+ ⇐
点我更新 WSL2 子系统到较新的版本
1 | # 设置 WSL2 为默认分发版本 |
配置~\.wslconfig
文件,加入以下配置
1 | # 此 Powershell/Posh/Pwsh 代码块用于创建或打开配置文件 ~\.wslconfig |
1 | # 推荐的一些配置项如下 |
如果遇到以下任意一个错误,请确保已 Windows 版本符合要求,并且已更新到 Windows Subsystem for Linux 2.0.0+
- wsl: 此计算机上不支持嵌套虚拟化。
- wsl: 不支持镜像网络模式,正在回退到 NAT 网络
- wsl: Hyper-V 防火墙不受支持
- wsl: DNS 隧道不受支持
另外子系统虚拟硬盘空间自动回收(sparseVhd=true),需要将 Linux 发行版所使用的虚拟硬盘(VHDX)转换为稀疏格式
1 | # wsl --manage '<Distro>' --set-sparse true |
WSLg/WSL2 子系统内配置/etc/wsl.conf
文件,加入以下配置,推荐一并配置 systemd 支持
1 | # 此配置文件不能通过符号链接配置(软链接和硬链接都不行),只能通过真实副本拷贝 |