以下解决方法仅适用于Build 21364,后续可能无需采用这些方法。
安装WSL
在最新版系统中,采用wsl --install即可安装WSL。
默认直连下载速度会比较慢,执行下面的命令:
wsl --install
默认安装的是
WSL2,如需WSL1可以通过--set-version配置:wsl --set-version ubuntu 1更改镜像
默认的ubuntu镜像太慢,替换成阿里云的镜像。
vim /etc/apt/sources.list同时按住
Shift和:进入normal模式,分两次输入下列参数替换自带镜像链接%s/archive.ubuntu/mirrors.aliyun/g%s/security.ubuntu/mirrors.aliyun/g定时释放cache内存
WSL2最大的问题是占用内存过多和随机IP,我们可以通过设置定时任务手动清除cache
查看内存占用
❯ free -h total used free shared buff/cache available Mem: 5.8Gi 123Mi 5.6Gi 0.0Ki 58Mi 5.5Gi Swap: 2.0Gi 0B 2.0Gi执行定时任务:每5分钟清除一次缓存
crontab -e*/5 0 * * * echo 3 > /proc/sys/vm/drop_cachesWSL2
固定IP
wsl -d Ubuntu -u root ip addr add 192.168.50.16/24 broadcast 192.168.50.255 dev eth0 label eth0:1
netsh interface ip add address "vEthernet (WSL)" 192.168.50.88 255.255.255.0
访问WSL2通过192.168.50.16,访问win10通过192.168.50.88,设置WSL2代理是win10的IP。
将上述脚本保存为 .bat 格式到C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
服务自启
每次启动WSL后都需要手动启动所有服务,我们可以通过编写脚本在电脑启动时开启WSL并运行服务。
- 进入任意 WSL 发行版中,创建并编辑文件
vim /etc/init.wsl#! /bin/sh /etc/init.d/cron $1 /etc/init.d/ssh $1 /etc/init.d/supervisor $1
里面调用了我们希望启动的三个服务的启动脚本,设置权限为可执行,所有者为 root,这时候可以通过:
sudo /etc/init.wsl [start|stop|restart]
来启停我们需要的服务,在 Windows 中,开始—>运行,输入:
shell: startup
按照你 WSL 使用的 Linux 发行版创建启动脚本,比如我创建的 Debian.vbs 文件:
Set ws = CreateObject("Wscript.Shell")
ws.run "wsl -d debian -u root /etc/init.wsl start", vbhide
这个脚本就会在你登陆的时候自动在名字为 “debian” 的 wsl 发行版中执行 /etc/init.wsl 启动我们的服务了,如果你用的是 ubuntu18.04 的发行版,那么修改上面脚本里的 debian 为 ubuntu1804.vbs:
Set ws = CreateObject("Wscript.Shell")
ws.run "wsl -d Ubuntu-18.04 -u root /etc/init.wsl start", vbhide
GUI 安装
GUI界面可参考Windows10访问Ubuntu子系统(WSL)的桌面环境
mobaxterm访问GUI
- 选择
Advanced WSL settings - 在
Graphical environment中选择安装的桌面环境如XFCE4 Desktop,保存退出 - 双击
WSL session,即可访问wsl gui界面,不想要gui可以在第二步保持默认 - 访问ubuntu子系统
ubuntu是非常成熟的wsl了,所以没有什么困难,但是想要实现gui还必须配置一下环境变量
对于Gui程序,需要在mobaxterm中运行,因为mobaxterm本身集成了x server,无需再安装,比较方便
执行一下命令后,可直接在windows界面看到gui程序的运行,无需进入wsl的桌面了。
export LIBGL_ALWAYS_INDIRECT=
桌面环境
链接的配置做到 export DISPLAY 即可, WSL 的桌面终归性能太差,仅用于 ics2019 等课程的学习,开启x11 server display mode 为 Mutliwindow mode 就可以在终端运行时,自动打开一个新的 GUI
开启方法:mobaxterm 设置 x11 的访问权限: settings -> configuration -> x11 -> x11 remote access -> full
查询端口
netstat.exe -an | grep -i "listen" | grep -v "\[::\]"
挂载U盘
假设U盘挂载的分区是F盘
sudo mkdir /mnt/f
sudo mount -t drvfs F: /mnt/f
sudo umount /mnt/f
挂载网络分区
sudo mount -t drvfs '\\server\share' /mnt/share
写入镜像到U盘
sudo dd if=/mnt/c/Users/dev/Downloads/manjaro-kde-20.2-201207-linux59.iso of=/mnt/f bs=4M
问题
启动mysql服务报错
dev@DESKTOP-CTK1QQ1:~$ sudo service mysql start * Starting MySQL database server mysqld No directory, logging in with HOME=/ mkdir: cannot create directory ‘//.cache’: Permission denied -su: 19: /etc/profile.d/wsl-integration.sh: cannot create //.cache/wslu/integration: Directory nonexistentsudo usermod -d /var/lib/mysql/ mysqlArch 安装IDEA-UTLIMATE
error: failed retrieving file ‘intellij-idea-ultimate-edition-2020.1.2-1-any.pkg.tar.zst’ from mirrors.tuna.tsinghua.edu.cn : Operation too slow. Less than 1 bytes/sec transferred the last 10 seconds warning: failed to retrieve some files error: failed to commit transaction (download library error) Errors occurred, no packages were upgraded.
Adding --disable-download-timeout appears to work in the meantime, as in pacman -Syu --disable-download-timeout
- 安装ubuntu 出现:
WslRegisterDistribution failed with error: 0x800701bc
已安装的ubuntu无法启动:Process exited with code 4294967295
下载linux update https://aka.ms/wsl2kernel
