WSL安装
安装步骤
控制面板
->程序和功能
->启用或关闭Windows功能
->勾选适用于Linux的Windows子系统
- 重启电脑
- 打开应用商城搜索 “WSL”,可根据自己需求选择安装一个或多个 Linux 系统:
- 安装完成后可在开始菜单里找到快捷方式并启动,第一次运行需要等待安装并设置用户名、密码。
wsl2 kali 安装报错
WslRegisterDistribution failed with error: 0x80004005
解决方法:
csdn
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
参考文献:
- https://www.cnblogs.com/mydailycoding/p/12375273.html
- zhihu
screen权限问题
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.bat
c:\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/
[参考文献](https://blog.csdn.net/lcuwb/article/details/82885920)
wsl挂载硬盘,[here](https://www.jianshu.com/p/3749c12eee44)
sudo mount -t drvfs G: /mnt/e
-t:指定档案系统的型态
G:表示的是可移动磁盘的盘符
# windows terminal
## 默认打开 WSL
修改 Windows Terminal 默认打开的 Shell,每次打开 Windows Terminal 都会默认打开 Power Shell, 而我只使用 WSL Ubuntu。所以,我想将 WSL 设为默认打开。只需要点击顶部下拉箭头,选择“设置”,修改 defaultProfile 的值为对应的 guid 即可。[参考文献](https://www.sunzhongwei.com/modify-windows-terminal-open-shell-by-default)
## 分屏快捷键
左右分屏:`Alt + Shift + =`
上下分屏:`Alt + Shift + -`
取消分屏:`Ctrl + Shift + w`
![img](/pci/wsl_splitScreen.png)
## 设置打开路径
原始启动路径
%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 {% post_link manjaro %},或者 wsl {% post_link wsl %} 主题中。
wsl 商店默认没有 archlinux 及其衍生版本,在 win 下用虚拟机或双系统都不太方便,由于最近很长一段时间都是再用 manjaro 和 endeavourOS,逐渐不喜欢 ubuntu 系列了。
win10 下通过 wsl2 安装 archlinux 很方便,用起来也很舒服,安装过程如下:
## 开启 win10 对 wsl2 的支持
1. `win + s` 搜索启用或关闭 `windows` 功能
![img](/pic/wslarch00.png)
2. 开启以下选项
![img](/pic/wslarch00a.png)
3. 重启
## 将默认的wsl版本设置为wsl2
查询默认版本:`wsl -l -v`
如果默认版本是 wsl1, 需要安装 [wsl_update.exe](https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi)
然后管理员打开powershell
`wsl --set-default-version 2`
## 下载archlinux
1. 从清华开源镜像站[下载](https://mirrors.tuna.tsinghua.edu.cn/archlinux/iso/latest/)archlinux
![img](/pic/wslarch00b.png)
下载archlinux-bootstrap-xxxx.xx.xx-x86_64.tar.gz, 注意是tar.gz文件
2. 从Github [下载](https://github.com/DDoSolitary/LxRunOffline/releases) LxRunOffline
![img](/pic/wslarch00c.png)
选mingw或msvc版本均可
## 安装archlinux
1. 新建一个文件夹, 作为archlinux的安装目录
![img](/pic/wslarch00d.png)
2. 将刚刚下载的文件移入安装目录,并解压LxRunOffline
![img](/pic/wslarch00e.png)
3. 在安装目录(shift + mouseRight)打开Powershell
![img](/pic/wslarch00f.png)
4. 安装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 安装目录
> 其余不变
5. 将archlinux设为wsl2
`wsl --set-version arch-test 2`
6. 查看archlinux状态
`wsl -l -v`
完成安装
![img](/pic/wslarch01.png)
## 配置archlinux
1. `wsl` 进入 archlinux
2. 添加清华镜像源
打开pacman.conf文件进行编辑
在文件末尾追加
bash
[archlinuxcn]
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch
![img](/pic/wslarch01a.png)
打开下一级目录`pacman.d`, 编辑mirrorlist, 取消注释掉China的两个清华Tuna源链接, 当然也可以取消注释所有链接.
![img](/pic/wslarch01b.png)
回到archlinux, 依次执行
bash
pacman -Syy
pacman-key –init
pacman-key –populate
pacman -S archlinuxcn-keyring
![img](/pic/wslarch02.png)
![img](/pic/wslarch03.png)
![img](/pic/wslarch03a.png)
3. 安装基础软件
`pacman -S base base-devel neovim wget curl`
![img](/pic/wslarch04baseSoftware.png)
4. 创建Linux账户
在shell中, 输入 `passwd` 添加 `root` 密码
新建普通用户
bash
useradd -m -G wheel -s /bin/bash 用户名
passwd 用户名
给用户提权, 编辑 `/etc/sudoers`
bash
sudo nvim /etc/sudoers
将 `wheel ALL=(ALL) AL`L取消注释, 保存并退出.
查看当前用户id
`id -u 用户名`
记下账户id
退出Arch Linux, 回到Power Shell.
执行:
`.\LxRunOffline su -n archlinux -v 账户id`
> -n后面跟wsl2虚拟机的名字, 我的是archlinux
这样, 下一次登录会自动进入刚创建的用户.
![img](/pic/wslarch05user.png)
5. 语言本地化
编辑`/etc/locale.gen`
bash
sudo nvim /etc/locale.gen
将`en_US.UTF-8 UTF-8` 和 `zh_CN.UTF-8 UTF-8` 取消注释, 如果需要其他语言, 请一并取消注释.
执行:
bash
sudo locale-gen
locale
locale -a
编辑`/etc/locale.conf`
bash
nvim /etc/locale.conf
添加如下内容
bash
/etc/locale.conf
LANG=en_US.UTF-8
“`
重启archlinux即可完成配置。
后面还可以配置 windows terminal 和字体,参考来源