1 安装

搭配Windows Terminal使用为佳,在微软商店可下载;

然后依照官网描述即可。

命令行中运行wsl --install即可。不过由于想自行指定发行版,于是:

wsl --list --online # 查看分发系统和名字
wsl --install -d Ubuntu-22.04 # 安装一个分发版,-d后为指定分发系统的名字

会进行相应的安装;但之后执行任何wsl命令,都会遭遇

WSL 正在完成升级...
更新失败(退出代码: 1603)。
Error code: Wsl/CallMsi/E_ABORT

重启,过程中windows会更新配置,之后就好了。根据提示再次运行

wsl --install Ubuntu-22.04
# 检测到已存在发行版时会进行Linux安装配置

之后创建UNIX user即可

Ubuntu 22.04 LTS 已安装。
正在启动 Ubuntu 22.04 LTS...
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: xlucidator-laptop-wsl2
New password:
Retype new password:
passwd: password updated successfully
Installation successful!

之后把对应发行版的内容添加到Windows Terminal设置中的默认配置文件即可方便使用

常用命令:

wsl # 开启
wsl -d <发行版名> #指定启动
wsl --list # 查看已有分发版
wsl --list --online # 查看在线有的分发版
wsl --list --version
wsl --shutdown # 关闭
# 均可用首字母缩写,如-l -v

2 迁移

分区间移动

查看wsl状态wsl -l -v;需要关闭wsl --shutdown(其实关闭terminal窗口就是shutdown了,无需这样 \(\to\) 并不是,shutdown和关闭窗口还是不一样的)

然后先export再import,网上多有记载:

wsl --export Ubuntu-22.04 d:\wsl\Ubuntu2204.tar
# wsl --export <分发版名> <导出到位置>
wsl --unregister Ubuntu-22.04
# wsl --unregister <分发版名>
wsl --import Ubuntu-22.04 d:\wsl\Ubuntu-22.04 d:\wsl\Ubuntu2204.tar
# wsl --import <分发版名> <导入到位置> <导入包位置>

不过这之后会默认切回root用户。如果想要换回自己的用户,对于自己导入的发行版,无法使用命令类似ubuntu2204 config --default-user <用户名>(看到的说法:因为无可用启动器)

可以在wsl中修改/etc/wsl.conf文件,添加

[user]
default=自己的用户名

然后windows命令行中关一下wsl(wsl --shutdown),重启后就回到自己的用户了(似乎关terminal窗口再进即可)

导入未打包的ext4.vhdx

重装系统前,应该按上述操作给WSL打包成.tar的,结果忘记了只留下了运行用的ext4.vhdx文件和旧版包(它们本身就在非系统盘里)。

不过这是可以直接复制导入的。见wsl导入已有的ext4.vhdx

在新系统装完wsl后,先安装对应发行版的系统(我这里就导入旧版包了),然后在命令行使用copy将ext4.vhdx文件覆盖过去即可。

copy E:\wsl\Ubuntu-22.04\ext4.vhdx D:\WSL2\Ubuntu-22.04\ext4.vhdx
# copy [old path] [new path] 等一段时间即可
# 没用链接给出的python脚本

3 网络配置

基本网络状况

wsl2的网络和通常的虚拟机比较像,以我本地为例:

example:

    wsl2 (eth0:172.19.121.9/20) ----- (vEthernet:172.19.112.1/20) Windows10 (Ethernet 10.1) ----- (...) other LAN of my host

可在network adaptor中验证,或ipconfig

多了层主机的中转,所以外部要直接访问wsl2则需要在主机上添加相应路由(大概);而wsl2的代理也不应再127.0.0.1环回指向自己,而应指向主机(也就是nameserver)

设置代理

发现自己ubuntu上的代理命令都有些错误,导致对github的wget都有错误;对于大小写(http_proxy/HTTP_PROXY)变量,不同应用可能使用不同,应该同时设置上;同时对于wsl,根据上节的原理,代理的ip不应是127.0.0.1而应改为对应的名称服务器/DNS服务器(指向宿主windows),在/etc/resolv.conf里有写

所以对于设置proxy,可写脚本proxy_set.sh

#!/bin/bash

# host_ip=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}')
host_ip=$(grep nameserver /etc/resolv.conf | awk '{print $2}' | head -n 1)
echo "export proxy target: $host_ip" prot_ip="http://$host_ip"
echo "add protocol: $prot_ip" export HTTP_PROXY="$prot_ip:7890"
export http_proxy="$prot_ip:7890"
export HTTPS_PROXY="$prot_ip:7890"
export https_proxy="$prot_ip:7890" # 为了某些域名解析,在resolv.conf中加了其他nameserver,所以完善host_ip的获取方式:head -n 1以获得第一个nameserver的ip(确保是wsl的windows网关) # 7890是个人clash客户端配置的端口 # 网上似乎都每个变量都加了'http://',但经测试加不加都行;而且明显加了很别扭且冗余
# -> 最新测试发现如果不加协议名的话npm install会失败,所以还是加上吧 # 末尾的'/'也一样随意加

查看export变量export -p;删除export变量export -n <变量名>

DNS服务器配置

不知道为什么(可能哪里我做了什么配置),我的WSL会经常性的连不上网(apt下载不了东西),再一检查发现ping www.baidu.com会因域名解析不了导致不通。

于是在/etc/resolve.conf中再加一行nameserver 8.8.8.8手动指定DNS服务器,之后便可ping通百度,apt也能正常下载软件,网络基本回归正常。

讲道理这个文件用于配置系统的域名解析服务器地址,在WSL中被指向了连向宿主机的网关vEthernet;所以是否可以这样认为,WSL将域名解析的工作交给了宿主机一并处理,但不知为何我的Windows系统没有替他完成这个工作或某个环节出错了(我严重怀疑肯定是自己宿主机代理方面配置有问题),所以还是得手动指向标准的8.8.8.8才生效,不过明先发觉这个解析很慢。

同时在/etc/resolve.conf中有这么一段注释。这解释了为什么我每次添加的配置都会被刷掉(大概是每次启动WSL时会生成一份)

# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
# [network]
# generateResolvConf = false

所以根据提示在/etc/wsl.conf中加上相应的配置向,保留自己添加的域名解析服务器配置。\(\to\) 这样配置似乎不对的,这样重启wsl后,resolve.conf会直接消失,从而出现问题。

4 图形桌面配置

基本情况

较新的WSL2都会内置GUI支持WSLGd,可以通过ps aux | grep WSLGd查看。如此就允许WSL2中直接运行GUI应用,无需手动配置X服务器:

  • nautilus, gtkwave,直接装了就能用
  • python的matplotlib如果要呈现图片,则需pip装PyQt6
  • 使用OpenGL接口:sudo apt install mesa-utils,可通过glxinfo | grep OpenGL查看,旋转齿轮测试glxgears

较旧的Windows10版本中,可能需要手动装X服务器(如VcXsrv等)

使用RDP远程桌面

想试试较完整的桌面,尚未完全成功

WSL2中配置

# 安装GUI桌面环境:轻量级xfce4, KDE完整kubuntu-desktop,GNOME完整ubuntu-desktop
sudo apt install xfce4 xfce4-goodies # 后者是增强 xfce 桌面环境功能的一些工具
# 安装xrdp
sudo apt install xrdp # 启动xrdp
sudo service xrdp start

Windows端操作:打开远程桌面连接mstsc,连接到<WSL2_IP>:3389,输入WSL2中的用户和密码即可。(不可用localhost:3389,会报错“计算机无法连接到远程计算机的另一个控制台会话,原因是你正在运行一个控制台会话”)

快速获取WSL IP:ip addr show eth0 | grep "inet " | awk '{print $2}' | cut -d/ -f1



进入登录界面后,Session选Xorg,用户和口令就是WSL2的。不过如此之后会黑屏然后闪退,这可能是因为xrdp没有Xorg的访问权限:

查看/etc/X11/Xwrapper.config,应该会是allowed_users=console,于是需要将其改为改为anybody。快速修改命令如下

echo "allowed_users=anybody" | sudo tee /etc/X11/Xwrapper.config
sudo systemctl restart xrdp xrdp-sesman
# 重启xrdp,感觉可能手动关windows中rdp窗口估计也行

再次启动就ok了、

鼓捣期间还做过的一些操作,不知道有没有影响

  • 添加~/.xsession
    echo "xfce4-session" > ~/.xsession
    chmod +x ~/.xsession
  • 添加~/.xinitrc
    echo "exec startxfce4" > ~/.xinitrc
    chmod +x ~/.xinitrc
  • 修改/etc/xrdp/startwm.sh:似乎原版默认调用/etc/X11/Xsession,似乎是用于Ubuntu默认桌面环境的
    # 备份一下
    sudo cp /etc/xrdp/startwm.sh /etc/xrdp/startwm.sh.bak
    # 手动修改/etc/xrdp/startwm.sh有效内容为如下所示:
    unset DBUS_SESSION_BUS_ADDRESS
    unset XDG_RUNTIME_DIR
    startxfce4
  • 之前由于Xorg黑屏卡退,选择使用Xvnc,不过如此登录后就是青蓝色背景没有桌面内容被加载,.vnc也没有log;不过不管这个了

5 基本配置

Vim允许鼠标滚轮

home下添加.vimrc set mouse=a

使用LaTeX

推荐安装tex-live(中文注意需要包括ctex宏包)

# 感觉装全比较好(虽然有3G多,但基本还算快)
sudo apt install texlive-full
# 因为之前只装了texlive-base, texlive-latex-extra等部分内容,结果没有ctex宏包无法编译
# 安装目录在 /usr/share/texlive/

完整版装完后包含ctex宏包,在/usr/share/texlive/tex/texmf-dist/tex/latex/ctex中(和windows下MikTek中ctex包差不多)

此后可能只需要配置一些中文字体(copy一下windows的字体应该就行)

安装windows字体

直接将windows上的字体弄到/usr/share/fonts中再刷新缓存即可

# Windows字体库在C:\Windows\Fonts;则挂载在wsl中一般为/mnt/c/Windows/Fonts
# Ubuntu中字体在/usr/share/fonts中 ### step1: 搞到字体
# 可直接软链接一份到ubuntu
sudo ln -s /mnt/c/Windows/Fonts /usr/share/fonts/windowsfonts
# 或者拷贝过去(怂,不想再有关联选了这个方式)
mkdir /usr/share/fonts/windowsfonts
sudo cp /mnt/c/Windows/Fonts/* /usr/share/fonts/windowsfonts/ ### step2:刷新
# 重新生成fontconfig缓存
fc-cache

去除Windows中的环境变量

由于两边都装了anaconda,结果wsl中优先引导到了windows这边的

/etc/wsl.conf中继续添加如下内容

[interop]
appendWindowsPath=false

可能并不是简单重启wsl就可以(关闭terminal再打开可能wsl并没有关)

所以需要在cmd中wsl --terminate Ubuntu-22.04后再打开(wsl名称通过wsl --list查看)

不过这样的话,Windows中有些东西的用不了了,比如说code(没想到code用的竟然是win这边的)。

那就把要用的手动加回来,我选择在~/.profile中统一添加,目前需要的也就是vscode

PATH="$PATH:/mnt/c/Users/Xlucidator/AppData/Local/Programs/Microsoft VS Code/bin"

WSL2 - Ubuntu 22.04使用记录的更多相关文章

  1. Qemu/Limbo/KVM镜像 Ubuntu 22.04 精简版,可运行Windows软件,内存占用不到200M

    镜像特征: Ubuntu 22.04系统 内置Wine 7.8,可运行大量Windows 软件 高度精简,内存占用仅200M不到. 自制UI,Windows3.1风格. 完全开源 镜像说明: 用户名为 ...

  2. Ubuntu 22.04 LTS 安装 0.A.D 实时策略游戏 并汉化

    众所周知,Linux生态中,能玩的正儿八经的大型游戏其实没几个,而 0.A.D 这个游戏就是这其中之一.这是一个类似于帝国时代的实时策略游戏,开源跨平台,这是其官方网站:https://play0ad ...

  3. Win10+WSL2+Ubuntu 18.04(WSL下)+VS Code(Win10下)+TexLive 2019(Ubuntu下)安装和配置

    本人手头电脑是Win10 Home版全新安装的系统,由于不想在新系统盘里面安装TexLive导致固态硬盘不断扩大,所以,考虑安装Ubuntu做为WSL,然后把TexLive安装在Ubuntu,并通过V ...

  4. 图文详解在VMware Workstation 16 PRO虚拟机上安装Ubuntu 22.04.5 linux系统

    一.下载Ubuntu linux系统镜像 机构 下载地址 官网地址 https://cn.ubuntu.com/download 南京大学 https://mirrors.nju.edu.cn/ubu ...

  5. ubuntu 22.04 网络配置ib网卡配置

    第一步:查看Ubuntu版本与内核版本 cat /etc/issue 这说明系统的版本为:Ubuntu 20.04.4 LTS \n \l uname -a Linux gacs-gm-11 5.4. ...

  6. WSL安装Ubuntu 22.04 (1)

    1. 安装WSL WSL是适用于 Linux 的 Windows 子系统可让开发人员按原样运行 GNU/Linux 环境 - 包括大多数命令行工具.实用工具和应用程序 - 且不会产生传统虚拟机或双启动 ...

  7. Ubuntu 22.04 搭建K8s集群

    目录 1. 虚拟机基础配置 配置静态ip 设置主机名 设置hosts 安装ssh 2. Ubuntu系统设置 禁用swap 修改内核参数 3. 安装containerd 4. 安装Kubernetes ...

  8. Ubuntu 22.04 安装 utools 时的疑难杂症

    Error: libcrypto.so.1.1 原因:libcrypto.so.1.1 该依赖的版本不对,ubuntu 默认是使用的 openssl3 的依赖 这个是 openssl1 的 wget ...

  9. Ubuntu 22.04 GCC Arm 12.2.rel1编译 DAPLink

    ARMmbed / DAPLink 项目 仓库地址 https://github.com/ARMmbed/DAPLink Arm Mbed 应该属于Arm的机构或者是Arm资助的机构. 常用的 DAP ...

  10. Ubuntu 22.04 安装 VMWare 16.2.3 后无法启动

    异常日志: 2022-06-13T03:49:56.019Z In(05) host-29676 In file included from /tmp/modconfig-XR2GVI/vmmon-o ...

随机推荐

  1. CentOS中升级openssl与卸载重装以及提示:error while loading shared libraries: libssl.so.1.1: cannot open shared obje

    场景 在CentOS6中安装sqlserver时提示: Requires:openssl >=1:1.0.1g 所以需要对openssl进行升级 可以通过 openssl version -a ...

  2. Mybatis Plus条件构造器condition动态判断优化

    ConditionQueryWrapper package com.common.util; import com.baomidou.mybatisplus.core.conditions.query ...

  3. 快速生成视频互动直播包含会议直播APP(Android)

    阿里云服务器推荐购买99元 首先此应用基于腾讯云实时音视频TRTC.注册腾讯云https://console.cloud.tencent.com/trtc 并完成实名认证开始. 安卓直播高级版 包括直 ...

  4. 国产系统UOS上的可视化大屏电子看板系统

    一.功能特点 采用分层设计,整体总共分三级界面,一级界面是整体布局,二级界面是单个功能模块,三级界面是单个控件. 子控件包括饼图.圆环图.曲线图.柱状图.柱状分组图.横向柱状图.横向柱状分组图.合格率 ...

  5. 鸿蒙OS高级技巧:打造个性化动态Swiper效果

    前言 在鸿蒙OS的广阔天地中,开发者们有机会创造出令人惊叹的用户体验.最近,我着手设计一款具有独特滑动效果的Swiper组件,它在滑动时能够迅速进入视野,同时巧妙地将旧的cell隐藏到视线之外.本文将 ...

  6. Quartz分布式定时任务

    前言: 项目需要执行定时任务,该类定时任务只需要实现类似Spring原生的@Scheudle注解的定时方法即可,无需考虑分片.刷新及重启,且因项目是多实例,所以需要考虑实现分布式,考察了目前开源的几款 ...

  7. IM技术分享:万人群聊消息投递方案的思考和实践

    本文由融云技术团队原创分享,原题"技术实践丨万人群聊的消息分发控速方案",为使文章更好理解,内容有修订. 1.引言 传统意义上的IM群聊,通常都是像微信这样的500人群,或者QQ的 ...

  8. 零门槛的向量数据库「GitHub 热点速览」

    上周,DeepSeek-V3 将训练大模型的成本给打下来了,但训练大模型对普通开发者来说仍然门槛很高.所以,本期的热门开源项目聚焦于降低 LLM 应用开发的入门门槛. 极易上手的向量数据库 chrom ...

  9. 前端(二)-CSS

    1.样式 1.1 行内样式 <h1 style="color:red;">行内样式</h1> 1.2 内部样式 CSS代码写在 <head> 的 ...

  10. bat脚本(批处理程序)调用WinRAR及7zip压缩和解压缩

    最近项目要用到定期批量将文件及文件夹下的文档打包,所以想到要写脚本来实现,然后做Windows定期任务调用.bat脚本(批处理程序)调用WinRAR及7zip压缩和解压缩. 调用WinRAR来实现 因 ...