title: WSL2配置 date: 2022-10-06 17:35:04 tags: 环境配置
Windows可以使用WSL(Windows Subsystem for Linux)来使用Linux环境
如果关闭窗口后再想重新进入这个系统,只需要在命令行中输入 wsl 或者这个操作系统的名字就可以直接进入
当然也支持安装运行多个操作系统,不过暂时没有这个必要
gdb -v
sudo apt-get update
sudo apt-get install build-essential gdb
<details><summary>如果下载太慢了</summary>
考虑切换一个下载的源
vim /etc/apt/sources.list
在文件最前面加入 / 删除整个文件重新创建一个新的文件并写入
deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
保存退出,重新执行
</details>
wsl --list --verbose
如果是WSL1的运行gdb会出现问题,升级到WSL2
回到Windows系统的命令行, 升级WSL系统
wsl --set-version Ubuntu 2
WSL正常情况下会出现在文件资源管理器,可以直接在 home 目录下找到当前安装的操作系统
如果安装之后没有找到, 可以通过其他方式
\wsl$
explorer.exe .
我们可以直接打开两个文件夹,直接通过复制粘贴实现文件传输
除此之蛙wsl将windows中的文件挂载到 /mnt 虚拟磁盘下,默认的登录路径也是这里,我们可以直接通过mnt切换盘符及路径,比如:
kamilu@LZX:/mnt/c/Users/luzhi$ cd /mnt/d
kamilu@LZX:/mnt/d$
再利用 cp 或者 mv 命令就可以实现文件的传输了,笔者这里还是推荐第一种,比较直接
原生的命令行窗口并不好看,由于本实验可能需要大部分时间面对一个终端的显示,我们考虑选择使用一个更加美观漂亮的终端
在 terminal release 中下载最新版的安装包
注意区分 Win10/11版本,不要下错了
如果不清楚windows版本可以按下Win + r 输入 winver查看
下载后点击对应版本安装即可,接下来尝试再来按下 Win + r 输入cmd进入控制台吧,是不是好看多了?
WSL2由于直接使用局域网与本机通信,可以直接使用Windows上的代理端口,这里假定读者已安装过 Windows 下的 V2ray
设置->参数设置->允许来自局域网的连接
http的系统代理走局域网的10811端口
打开.bashrc
vim ~/.bashrc
在文件结尾加入
export host_ip=$(cat /etc/resolv.conf |grep "nameserver" |cut -f 2 -d " ")
export http_proxy="http://$host_ip:10811"
export https_proxy="http://$host_ip:10811"
:wq保存退出,激活环境
source ~/.bashrc
wget www.google.com
wget https://raw.githubusercontent.com/luzhixing12345/MyScripts/main/main.py
得到两个文件即为成功
正常使用v2ray会出现访问一些服务器的域名无法访问,但是直连可以访问.这时候需要 设置-路由设置-直连的Domain/IP
之前有一段时间突然发现 git 一直push不上去, 也pull不下来
然后使用 ssh -vT git@github.com
查看发现原来是 SSH 的问题, 一直卡在下面的这个地方
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
后来查阅了一些资料, 在 Github cloning error in wsl2 (driver MTU) 得到了解决
总结一下就是先下载网卡驱动
正常来说你安装完网卡驱动应该就可以解决了, 重启一下, 要不就等一下
如果仍然有问题: 用 ip addr | grep mtu
看下 eth0 的 mtu
(base) kamilu@LZX:~$ ip addr | grep mtu
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
2: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN group default qlen 1000
3: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
4: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
5: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
6: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
改成
sudo ifconfig eth0 mtu 1350
或者
sudo ip link set eth0 mtu 1400
安装 npm 后使用提示: /usr/bin/env: 'bash\r': No such file or directory
相关问题及解决办法见: After installing npm on WSL
sudo apt install nodejs npm
修改 /etc/wsl.conf
sudo vim /etc/wsl.conf
复制下面的内容
[interop]
appendWindowsPath = false
重启
wsl --shutdown
wsl
WSL2 中执行
sudo apt install xfce4
Windows 中执行, 找到下面 WSL 对应的 IP 地址
ipconfig
在 ~/.bashrc 中添加, 将 IP 地址替换为你的
export DISPLAY=172.19.64.1:0
下载 sourceforge vcxsrv, 完成后点击 xlaunch.exe
启动, 选择 one large window, 第二个不动, 最后参数添加 -ac
启动图形化界面, 然后在 WSL2 中运行 xfce4
sudo startxfce4
默认安装路径在 C 盘, 但是用久了会变大, 可以考虑移动目录到其他位置
查看虚拟机
wsl -l -v
假设名字为 Ubuntu
wsl --shutdown
导出 Ubuntu 保存为一个镜像, 这一步会比较慢, 相当于打一个快照以便后期恢复
wsl --export Ubuntu H:\wsl2-backup\WSL2Ubuntu.bak
注销原先用户
wsl --unregister Ubuntu
导入到一个新位置(F)
wsl --import Ubuntu F:\wsl2\ H:\wsl2-backup\WSL2Ubuntu.bak --version 2
导入成功后可以再次查看一下
wsl -l -v
如果不在第一个默认启动位置可以修改默认启动为 Ubuntu
wsl --set-default Ubuntu
默认使用 wsl
登录会以 root 用户登录, 修改为之前的用户名
Ubuntu config --default-user kamilu
默认的 wsl2 占用的内存是主机的一半, 如果需要启用全部内存, 编辑 .wslconfig
, 设置 memory 为全部内存即可
[wsl2]
memory=16GB