WSL2 安装记录
由于 WSL2 还在不断更新,这部分内容可能已经过时了。
首先注意 WSL1 和 WSL2 是不同的产品:
- WSL1 是在 Windows 之上加了一个转换层,用来支持基本的 Linux 环境;
- WSL2 则是更完整的虚拟化,包括一个定制的 Linux 内核,支持更完整的 Linux 使用。
虽然 WSL2 在某些情境下因为虚拟化程度更高而导致效率比 WSL1 更低,例如跨系统的文件读写,但是这相比与 WSL2 的巨大优势可以忽略不计,目前只推荐安装和使用 WSL2。
需要注意的是,虽然都是基于虚拟化技术,WSL2 和普通的虚拟机还是有很多不同之处:
- 虚拟机是完全隔离在一个沙盒中,操作很难影响到外层的实体机,除非使用虚拟机软件提供的共享目录等,因此操作更加安全。
- WSL2 则更像一种“共生”关系,Windows 的硬盘也被自动挂载在 WSL2 的目录下,因此
rm -rf /*这种危险操作在损害 WSL2 的同时也会直接损坏 Windows 系统!!!
准备
首先确保 CPU 虚拟化开 启,默认似乎就是开启的,查看 CPU 就可以看到,确认一下。
然后在搜索栏中搜索启用或关闭 Windows 功能,往下翻找到适用于 Linux 的 Windows 子系统和虚拟机平台,单击确定,等待安装完成后重启。
顺便把 Hyper-V 也打开,据说不需要完整的 Hyper-V,但是开了也没事。
下载安装
在应用商店直接下载 Ubuntu24 发行版,下载完成打开 Ubuntu 的时候,可能会报错,需要安装/升级内核。
设置默认版本为WSL2
1 | wsl --set-default-version 2 |
下载/更新内核
1 | wsl --update |
然后就可以顺利安装 Ubuntu 24 了,提示输入默认用户名,提示 NAT 模式不支持 local 的网络代理,后面会修改一下。
打包迁移
默认的发行版 Ubuntu24 安装位置在C盘,这里选择迁移到D盘的 D:\WSL2\ 目录下,过程如下:
关机
1 | wsl --shutdown |
将其打包导出到指定位置
1 | wsl --export Ubuntu-24.04 D:/WSL2/export-ubuntu24.tar |
这里的打包实际上可以用于对整个子系统进行备份,tar文件可以在别的位置或别的电脑中使用。
卸载原有的发行版
1 | wsl --unregister Ubuntu-24.04 |
将刚刚导出的发行版压缩包导入到指定位置
1 | wsl --import Ubuntu-24.04 D:/WSL2/Ubuntu D:/WSL2/export-ubuntu24.tar --version 2 |
配置默认用户
1 | Ubuntu2404 config --default-user xxx |
注意这里实际是 Ubuntu-24.04,但是输入命令时必须把空格和点去掉,否则 Powershell 解析会发生错误。
还是需要养成定时备份的好习惯,虽然 WSL2 的备份文件有点大(几十个G),但是仅保留最近一个版本也是可以接受的。
.wslconfig 配置
Windows 用户主目录下的 .wslconfig 为 WSL 上运行的所有已安装的发行版提供全局配置,参考 Advanced settings configuration in WSL
加入如下设置
1 | [experimental] |
这里的 autoProxy=true 可以让 WSL2 自动继承 Windows 的系统代理设置。
基本使用
Ubuntu 系统默认只有一个具有 sudo 权限的账号,可以给 Ubuntu 系统添加 root 用户:
从默认用户 xxx 登录,先给 root 用户设置密码
1 | sudo passwd root |
这一步 sudo 需要当前用户自己的密码授权,在给 root 用户添加了密码之后,就可以使用 su - root 切换到 root 用户了。
把基本的软件更新一下
1 | sudo apt-get update |
如果网络太差,可以考虑给 apt 添加镜像源。
一些必需的软件,直接 root 用户通过 apt 安装:
- git
- cmake
- tmux
- vim
- gdb
- fish
- ninja-build
然后配置 ssh,注意涉及私钥文件的路径要完整,注意大小写,注意私钥文件的权限改为 400,否则私钥无法使用。
常用命令
我们可以安装多个发行版,下面的命令也是考虑到有多个发行版存在的,但是实践中只安装了一个 Ubuntu24 就足够了。
进入默认的发行版:
1 | wsl |
进入之后的位置仍然是当前的位置,并不是发行版中的用户家目录,下面的命令则会自动进入家目录
1 | wsl ~ |
查看 WSL2 当前的状态(版本,默认发行版)
1 | wsl --status |
输出
1 | Default Distribution: Ubuntu-24.04 |
列出已安装的所有发行版,并查看详细信息,包括它们的运行状态,非常常用。
1 | wsl --list --verbose |
输出
1 | NAME STATE VERSION |
关闭某个发行版
1 | wsl -t Ubuntu-24.04 |
关闭所有发行版
1 | wsl --shutdown |
补充
记录一个 VMware 虚拟机中的网络问题解决办法:
对于 VMware 虚拟机(Ubuntu),有时会出现突然没有网络的情况,可以尝试下面的命令
1 | sudo service NetworkManager stop |
