wsl安装及路径
WSL安装
安装步骤
- 控制面板->程序和功能->启用或关闭Windows功能->勾选 适用于Linux的Windows子系统
- 重启电脑
- 打开应用商城搜索 “WSL”,可根据自己需求选择安装一个或多个 Linux 系统:
- 安装完成后可在开始菜单里找到快捷方式并启动,第一次运行需要等待安装并设置用户名、密码。
home 目录位置
C:\Users\liupe\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs
wsl备份及还原,here
挂在移动硬盘
假设移动硬盘盘符为 D
在 /mnt 下建立文件夹 d:sudo mkdir /mnt/d
挂载硬盘到文件夹 d (注意:D: 后面有空格)
$ sudo mount -t drvfs D: /mnt/d
wsl设置
列出了系统中安装的子系统
可以是一个或多个
wsl -l
运行子系统
name由wsl获得
wsl -d Ubuntu-18.04 (name)
查看运行中的子系统
wsl -l --running
停止子系统
wsl -t Ubuntu-18.04
备份wsl子系统
一定要先停止子系统之后再备份wsl
wsl --export Ubuntu-18.04 c:\Ubuntu-18.04-20200210.tar
wsl --export <distribution_name> <file_name>
还原子系统
wsl --import Ubuntu-18.04 C:\wsl c:\Ubuntu-18.04-20190707.tar
wsl --import <distribution_name> <Install_location> <file_name>
设置默认版本
wsl -s Ubuntu-18.04
wsl -s <分发版>
删除子系统
避免存在重复分发版本,否则还原的时候需要指定不同的distribution_name
wsl --unregister Ubuntu-18.04
import修改默认启动user
myname=liup
echo -e "[user]\ndefault=$myname" >> /etc/wsl.conf
ps: 是否有wsl.conf不影响结果
WSL 映射磁盘
\\wsl$
xming 图形转发
export DISPLAY=localhost:0
WSL1 转换为 WSL2
查看当前版本
PS C:\Users\liupei> wsl -l -v
NAME STATE VERSION
* Ubuntu-20.04 Stopped 1
如果在运行,先停止
C:\Users\Administrator>wsl --shutdown
版本转换
PS C:\Users\liupei> wsl --set-version Ubuntu-20.04 2
正在进行转换,这可能需要几分钟时间...
有关与 WSL 2 的主要区别的信息,请访问 https://aka.ms/wsl2
WSL 2 需要更新其内核组件。有关信息,请访问 https://aka.ms/wsl2kernel
启用虚拟机功能
安装 WSL 2 之前,必须启用“虚拟机平台”可选功能。 计算机需要虚拟化功能才能使用此功能。
以管理员身份打开 PowerShell 并运行:[参考]
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
PS C:\Users\liupei> wsl --set-version Ubuntu-20.04 2
远程连接wsl
配置过程:
- 先删掉原有的ssh
sudo apt-get remove --purge openssh-server
- 重新安装ssh服务
sudo apt-get install openssh-server ssh
- 编辑sshd_config文件,修改几处配置才能正常使用用户名/密码的方式连接
sudo vi /etc/ssh/sshd_config
需要找到并修改以下几项(其他博客有修改其他项成功的,也可以只改了前两项)
- Port 223 #默认的是22,Windows自己的SSH服务也是的22端口,所以我改成了223
- PermitRootLogin yes #默认是PermitRootLogin prohibit-password
- PasswordAuthentication yes # 密码验证登录
- AllowUsers * # 远程登录时的用户,这里*是通配符
启动ssh服务
sudo service ssh --full-restart
参考文献:
screen权限问题
Cannot make directory ‘/var/run/screen’: Permission denied
sudo /etc/init.d/screen-cleanup start
mkdir ~/.screen && chmod 700 ~/.screen
export SCREENDIR=$HOME/.screen
配置ssh server
// 卸载sudo apt-get remove openssh-server
// 安装sudo apt-get install openssh-server
// 编辑配置文件vim /etc/ssh/sshd_config
Port 2222 #设置ssh的端口号, 由于22在windows中有别的用处, 尽量不修改系统的端口号
PermitRootLogin yes # 可以root远程登录
PasswordAuthentication yes # 密码验证登录
AllowUsers sky # 远程登录时的用户名
# Port 36000 # 默认的是22,但是windows有自己的ssh服务用的也是22端口,修改一下
# UsePrivilegeSeparation no
# PasswordAuthentication, 改为yes可以使用密码登录,ssh秘钥对登录,使用默认no
// 重启ssh服务
sudo service ssh --full-restart # 自己电脑上的xhell可以连接了
# 想在其他计算机上访问, 需要系统开放端口.
防火墙->高级设置->入站规则->新建规则
端口->下一步
选择tcp 特定本地端口 2222
允许连接, 默认都选上, 下一步填个名字 完成
这样就可以通过网络进行ssh远程登录了
wsl的ssh开机启动
在cmd中运行命令:C:\Users\用户名\AppData\Local\Microsoft\WindowsApps\ubuntu1804.exe run "service ssh start"
新建sshStart.batc:\Users\lab\AppData\Local\Microsoft\WindowsApps\ubuntu.exe run "service ssh start"
将bat或bat的快捷方式放入自启动目录cp sshStart.bat AppData/Roaming/Microsoft/Windows/Start\ Menu/Programs/Startup/
wsl挂载硬盘,here
sudo mount -t drvfs G: /mnt/e
# -t:指定档案系统的型态
G:表示的是可移动磁盘的盘符
windows terminal
默认打开 WSL
修改 Windows Terminal 默认打开的 Shell,每次打开 Windows Terminal 都会默认打开 Power Shell, 而我只使用 WSL Ubuntu。所以,我想将 WSL 设为默认打开。只需要点击顶部下拉箭头,选择“设置”,修改 defaultProfile 的值为对应的 guid 即可。参考文献
分屏快捷键
左右分屏:Alt + Shift + =
上下分屏:Alt + Shift + -
取消分屏:Ctrl + Shift + w

设置打开路径
原始启动路径
%USERPROFILE%
修改为:
\\wsl$\Ubuntu\home\liupei
早期版本按照如下设置:
即便设置成了默认打开 WSL,但是默认路径依然是 Windows 的用户根目录。修改成 WSL 下用户的根目录。
terminal设置
"defaultProfile": "{c6eaf9f4-32a7-5fdc-b5cf-066e8a4b1e40}",
{
"guid": "{c6eaf9f4-32a7-5fdc-b5cf-066e8a4b1e40}",
"hidden": false,
"name": "Ubuntu-18.04",
"source": "Windows.Terminal.Wsl",
"startingDirectory": "\\wsl$\Ubuntu-20.04\home\liupei"
},
wsl2archlinux
这个主题比较特殊,不再放在 archlinux arch vs manjaro,或者 wsl wsl安装及路径 主题中。
wsl 商店默认没有 archlinux 及其衍生版本,在 win 下用虚拟机或双系统都不太方便,由于最近很长一段时间都是再用 manjaro 和 endeavourOS,逐渐不喜欢 ubuntu 系列了。
win10 下通过 wsl2 安装 archlinux 很方便,用起来也很舒服,安装过程如下:
开启 win10 对 wsl2 的支持
win + s搜索启用或关闭windows功能

- 开启以下选项

- 重启
将默认的wsl版本设置为wsl2
查询默认版本:wsl -l -v
如果默认版本是 wsl1, 需要安装 wsl_update.exe
然后管理员打开powershellwsl --set-default-version 2
下载archlinux
- 从清华开源镜像站下载archlinux

下载archlinux-bootstrap-xxxx.xx.xx-x86_64.tar.gz, 注意是tar.gz文件
- 从Github 下载 LxRunOffline

选mingw或msvc版本均可
安装archlinux
- 新建一个文件夹, 作为archlinux的安装目录

- 将刚刚下载的文件移入安装目录,并解压LxRunOffline

- 在安装目录(shift + mouseRight)打开Powershell

- 安装archlinux
.\LxRunOffline i -n archlinux -f archlinux-bootstrap-2022.07.01-x86_64.tar.gz -d D:\archWsl2 -r root.x86_64-n 系统名称(随便取)
-f 刚刚下载的archlinux安装包
-d 安装目录
其余不变 - 将archlinux设为wsl2
wsl --set-version arch-test 2 - 查看archlinux状态
wsl -l -v
完成安装

配置archlinux
wsl进入 archlinux- 添加清华镜像源
打开pacman.conf文件进行编辑
在文件末尾追加
[archlinuxcn]
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch

打开下一级目录pacman.d, 编辑mirrorlist, 取消注释掉China的两个清华Tuna源链接, 当然也可以取消注释所有链接.

回到archlinux, 依次执行
pacman -Syy
pacman-key --init
pacman-key --populate
pacman -S archlinuxcn-keyring



- 安装基础软件
pacman -S base base-devel neovim wget curl

- 创建Linux账户
在shell中, 输入passwd添加root密码
新建普通用户
useradd -m -G wheel -s /bin/bash 用户名
passwd 用户名
给用户提权, 编辑 /etc/sudoers
sudo nvim /etc/sudoers
将 wheel ALL=(ALL) ALL取消注释, 保存并退出.
查看当前用户idid -u 用户名
记下账户id
退出Arch Linux, 回到Power Shell.
执行:
.\LxRunOffline su -n archlinux -v 账户id
-n后面跟wsl2虚拟机的名字, 我的是archlinux
这样, 下一次登录会自动进入刚创建的用户.

- 语言本地化
编辑/etc/locale.gen
sudo nvim /etc/locale.gen
将en_US.UTF-8 UTF-8 和 zh_CN.UTF-8 UTF-8 取消注释, 如果需要其他语言, 请一并取消注释.
执行:
sudo locale-gen
locale
locale -a
编辑/etc/locale.conf
nvim /etc/locale.conf
添加如下内容
# /etc/locale.conf
LANG=en_US.UTF-8
重启archlinux即可完成配置。
后面还可以配置 windows terminal 和字体,参考来源
使用 clash 代理
- 确保 windows 的 clash 正常运行
使用 ip route 获取 Windows 主机 IP(推荐)
ip route | grep default | awk '{print $3}'
- 输入如下命令,使 wsl 可以永久使用代理
cat >> ~/.bashrc <<'EOF'
export hostip=$(ip route | grep default | awk '{print $3}')
export http_proxy="http://$hostip:7890"
export https_proxy="http://$hostip:7890"
export all_proxy="socks5://$hostip:7891"
EOF
source ~/.bashrc
这样 Git、pip 等绝大多数工具会自动使用代理,无需单独配置。
- 验证
curl https://www.google.com
如果输出如下信息,说明成功运行
peter@xps9440:hexo[master*]$ curl google.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>
- (可选):配置 Git、APT、pip 等工具使用代理
一、Git 配置代理
- 方式 1:全局配置 HTTP/HTTPS 代理
git config --global http.proxy http://$hostip:7890 git config --global https.proxy http://$hostip:7890 - 方式 2(可选):使用 SOCKS5 代理(不是所有 Git 支持)
git config --global http.proxy "socks5h://$hostip:7891"
git config --global https.proxy "socks5h://$hostip:7891"
查看当前代理配置:
git config --global --get http.proxy
取消代理:
git config --global --unset http.proxy
git config --global --unset https.proxy
二、APT 配置代理
- 编辑或创建配置文件:
sudo nano /etc/apt/apt.conf.d/99proxy
添加内容(适用于 HTTP 代理):
Acquire::http::Proxy "http://$hostip:7890/";
Acquire::https::Proxy "http://$hostip:7890/";
保存并测试:
sudo apt update
如不再使用代理,可清除此文件或注释掉。
三、pip 配置代理
- 方法 1:使用环境变量(推荐)
export http_proxy="http://$hostip:7890"
export https_proxy="http://$hostip:7890"
然后使用 pip:
pip install numpy
- 方法 2:直接在命令中指定代理
pip install numpy --proxy="http://$hostip:7890"
- 方法 3:修改 pip 配置文件(长期使用)
编辑(如文件不存在可新建):
nano ~/.pip/pip.conf
添加内容:
[global]
proxy = http://$hostip:7890








