WSL2 配置过程及常用命令

发布时间 2023-10-10 18:09:14作者: O2iginal

01 WSL2 安装

1.1 启动WSL

  1. 以管理员身份启动Terminal
  2. 运行如下命令
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

1.2 启动虚拟机平台

  1. 以管理员身份启动Terminal
  2. 运行如下命令
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
  1. 重启电脑,使得配置完成。

1.3 下载 Linux内核更新程序包

下载直接运行安装即可。

1.4 设置WSL2默认值

wsl --set-default-version 2

1.5 安装Ubuntu-22.04LTS

  1. 打开Microsoft Store,搜索Ubuntu 22.04.2 LTS
  2. 直接安装即可。
    • 这里会安装到C盘,之后可将其打包移动到其他位置。
    • 如果下载进度条没有变化,可暂停后再次开始。
  3. 安装完毕后打开即可,初次启动较慢,需设置用户名和密码。
    (命令行 ubuntu2204可启动)

1.6 更改安装位置

  1. 将分发导出为tar文件,如下命令。
wsl --export Ubuntu-22.04 D:\Ubuntu-22.04.tar
  1. 将原分发从C盘中彻底卸载并删除。
wsl --unregister Ubuntu-22.04
  1. 从tar文件导入分发到指定位置(D:\WSL
wsl --import Ubuntu-22.04 D:\WSL D:\Ubuntu-22.04.tar

至此,安装位置移动完毕(可删除D盘下的tar文件)。

02 WSL配置相关

2.1 常用工具安装

## 先更新apt-get
sudo apt-get update

## C++ 开发环境
#(包含g++ gcc gdb 等常用工具)
sudo apt-get install build-essential  
# cmake
sudo apt-get install cmake

2.2 更改默认登录用户

WSL默认登录用户为root,需要手动切换到自己的用户,这里修改默认用户。

# 首先关闭所有wsl
wsl --shutdown
# 设置子系统<Distro>的默认登录用户为<username>
<Distro> config --default-user <username>
# 例如:
Ubuntu2204 config --default-user <username>

2.3 修改WSLlsWindows下文件夹是的绿色底色

消除WSL中ls Windows文件夹时背光配色的方法_wsl 颜色_天色微凉的博客-CSDN博客

  • 将如下内容添加到~/.bashrc中 (配色方案,其中将绿色背景色删去;具体见上博客)
LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:';
export LS_COLORS
  • 当然,为了不使得~/.bashrc中内容过于混乱,也可采用如下方法:
    • 将上述内容写入一个新建文件``~/.dircolors`中;
    • ~/.bashrc中添加如下命令:source ~/.dircolors

3 Windows VSCode 连接 WSl2

3.1 配置

开始通过 WSL 使用 VS Code | Microsoft Learn

  • 官方的教程很详细,按步骤操作即可。
  • 总得来说,即更新子系统、安装VSCode插件WSL、在VSCode中通过插件选择连接WSL子系统;
  • 注意,如果在子系统中操作Windows系统下的文件,IO速度较慢。

3.2 bug

在wsl中使用 code . 打开vscode问题_microsoft vs code/bin/code: 46: cannot create /tmp
解决权限问题,运行如下命令:

# remote-wsl-loc.txt所在目录请根据自己的报错进行调整
$ sudo rm -f /tmp/remote-wsl-loc.txt	
$ code .

04 WSL 常用命令

WSL 常用命令 - 知乎 (zhihu.com)

  • 查看wsl命令帮助
wsl --help
wls -h
  • 查看微软提供的可用子系统
wsl --list --online
  • 查看当前所有子系统运行状态
wsl -l -v
  • 安装子系统
wsl --install --distribution <Distro>
# 或者简写为
wsl --install -d <Distro>
# 例如
wsl --install -d Ubuntu-22.04
  • 设置为默认子系统(可使用wsl命令启动)
wsl --set-default <Distro>
# 或简写为
wsl -s <Distro>
  • 设置默认wsl版本 (1或2)
wsl --set-default-version <Version>
  • 设置某子系统wsl版本
wsl --set-version <Distro> <Version>
  • 查看子系统信息(wsl版本,分发类型,内核版本)
wsl --status
  • 进入某个子系统
# 进入默认子系统
wsl

# 进入微软提供的子系统、
# 直接输入子系统名 <Distro>
<Distro> 

# 进入名为<Distro>的子系统
wsl -d <Distro> <command>

# 在运行命令时指定用户 ,<Username> 如 root
wsl -d <Distro> --user <Username> <command>
  • 关闭子系统
# 关闭某个子系统
wsl --terminate <Distro> 
# 或简写为
wsl -t <Distro>

# 关闭所有子系统
wsl --shutdown
  • 卸载某个子系统
wsl --unregister <Distro>

参考

如何在 Windows 10 上安装 WSL 2 - 知乎 (zhihu.com)
全网最详细搭建Win10+WSL2+Ubuntu-22.04LTS+CUDA+Xfce4+noVNC个人工作站