wsl2安装和使用
最近在做毕设的过程中发现windows下的开发环境配置起来好复杂,遂想到用wsl2来配置开发环境,但是在使用过程中也遇到了一些问题,记录下来以供未来参考
安装
第一步肯定是安装并启用相关功能首先检查系统和硬件支持情况:windows机器需要支持虚拟化,并且需要在BIOS中开启虚拟化技术,因为WSL2基于hyper-V。
1 | systeminfo |
找到Hyper-V Requirements:如果有4个yes说明一切正常。如果是A hypervisor has been detected. Features required for Hyper-V will not be displayed.也行然后运行以下指令安装并设置wsl默认版本,如果想使用ubuntu发行版就去掉--no-distribution,会默认安装最新的ubuntu lts版本。
1 | wsl.exe --install --no-distribution |
- 也可以通过
wsl --install -d <Distribution Name>。 将<Distribution Name>替换为要安装的发行版的名称。 - 若要查看可通过在线商店下载的可用 Linux 发行版列表,请输入:
wsl --list --online或wsl -l -o。 - 若要在初始安装后安装其他 Linux 发行版,还可使用命令:
wsl --install -d <Distribution Name>。安装完成后重启计算机即可
安装位置的迁移
以上方法安装的发行版默认位置应该是c盘,但我不想把它放在C盘
- 首先通过
wsl --shutdown关闭正在运行的子系统。
命令 wsl --shutdown 是重启 WSL 2 发行版的快速路径,但它会关闭所有正在运行的发行版,因此请谨慎使用。 还可以使用 wsl
–terminate来终止立即运行的特定发行版。
- 利用
wsl --export <DistributionName> <FileName>来备份子系统,结果会得到一个tar归档文件。例如我默认的名为Ubuntu的子系统,想要将结果文件保存为Ubuntu.tar,则调用的命令为wsl --export Ubuntu G:\wsl\Ubuntu.tar - 使用
wsl --unregister Ubuntu注销原始子系统并删除文件系统(可以之后做)。 - 然后利用
wsl --import <DistributionName> <InstallLocation> <FileName>来恢复子系统。例如wsl --import Ubuntu G:\wsl\Ubuntu\ G:\wsl\Ubuntu.tar(将新恢复的子系统命名为Ubuntu) - 设置默认登陆用户为安装时用户名
Ubuntu config --default-user <USERNAME> - 删除Ubuntu.tar文件
del G:\wsl\Ubuntu.tar
如果以上办法没有办法修改默认登陆用户名,可以先进入子系统后vim /etc/wsl.conf然后在里面添加如下内容。将<USERNAME>替换为你的用户名
1 | [user] |
.wslconfig 配置
需要对wsl做一些自定义配置
wsl.conf 和 .wslconfig 之间有什么差别?
可以为已安装的 Linux 发行版配置设置,使它们在你每次启动 WSL 时自动应用,有两种方法:
.wslconfig用于在 WSL 2 上运行的所有已安装发行版中配置全局设置。wsl.conf用于为在 WSL 1 或 WSL 2 上运行的每个 Linux 发行版按各个发行版配置本地设置。具体参考官方文档
.wslconfig的配置
参考配置
1 | [wsl2] |
修改软件源
添加ppa软件源
ppa:ubuntu-toolchain-r是常用的自定义软件源,提供了工具链的更新,我们把它加上
1 | sudo add-apt-repository ppa:ubuntu-toolchain-r/test |
修改至镜像源
加速国内访问软件源的速度,修改配置文件中的地址
1 | sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak #备份原始文件 |
1 | sudo mv /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak #备份原始文件 |
还有要对之前添加的ppa软件源进行修改,使用ustc的反代加速,每个ppa都会在/etc/apt/sources.list.d
目录下创建一个list文件。只需要将其中的https://ppa.launchpad.net替换为https://launchpad.proxy.ustclug.org就行。然后更新一下软件
1 | sudo apt update && sudo apt upgrade |
安装编译工具链
sudo apt install build-essential git 安装ubuntu2204默认支持的编译工具链
Ninja 构建工具
我平时使用Ninja会多一点,所以先把它装了
1 | sudo apt install ninja-build |
gcc12/gcc13
sudo apt install aptitude安装好用的包管理工具 安装后代码里的apt都可以用aptitude替换sudo apt install gcc-12 g++-12 gdb安装新版本gcc编译器sudo apt install gdb安装调试器sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 60 --slave /usr/bin/g++ g++ /usr/bin/g++-12将默认编译器切换到gcc12编译器
切换清华源
sudo apt install python3 python3-pip安装python
1 | python3 -m pip install --upgrade pip |
如果有提示
WARNING: The scripts pip, pip3 and pip3.10 are installed in ‘/home/cs/.local/bin’ which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
echo 'export PATH=/home/cs/.local/bin:$PATH' >>~/.bashrc
使用中得问题
/usr/lib/wsl/lib/libcuda.so.1 is not a symbolic link
/sbin/ldconfig.real: /usr/lib/wsl/lib/libcuda.so.1 is not a symbolic link
这是一个文件链接的问题 需要在windows中解决,且需要管理员权限
1 | cd C:\Windows\System32\lxss\lib |
或者在cmd中运行以下指令
1 | cd C:\Windows\System32\lxss\lib && del libcuda.so && del libcuda.so.1 && mklink libcuda.so libcuda.so.1.1 && mklink libcuda.so.1 libcuda.so.1.1 |
然后重启wsl
安装cuda
https://docs.nvidia.com/cuda/wsl-user-guide/index.html
出现报错nsight-systems-2023.4.4 : Depends: libtinfo5 but it is not installable:
1 | wget http://archive.ubuntu.com/ubuntu/pool/universe/n/ncurses/libtinfo5_6.4-2ubuntu0.1_amd64.deb |





