WSL2 - Ubuntu 22.04使用记录

安装

搭配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

迁移

查看wsl状态wsl -l -v;需要关闭wsl --shutdown(其实关闭terminal窗口就是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脚本

网络状况

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}')
echo "export proxy target: $host_ip"

export HTTP_PROXY="$host_ip:7890"
export http_proxy="$host_ip:7890"
export HTTPS_PROXY="$host_ip:7890"
export https_proxy="$host_ip:7890"

# 7890是个人clash客户端配置的端口
# 网上似乎都每个变量都加了'http://',但经测试加不加都行;而且明显加了很别扭且冗余
# 末尾的'/'也一样随意加

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

基本配置

vim 允许鼠标滚轮:home下添加.vimrc set mouse=a

GUI: 如nautilus, gtkwave,直接装了就能用

使用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
posted @ 2023-12-31 21:54  Xlucidator  阅读(224)  评论(0编辑  收藏  举报