linux · 2021年 1月 13日 0

WSL

WSL安装

安装步骤

  1. 控制面板->程序和功能->启用或关闭Windows功能->勾选 适用于Linux的Windows子系统
  2. 重启电脑
  3. 打开应用商城搜索 “WSL”,可根据自己需求选择安装一个或多个 Linux 系统:
  4. 安装完成后可在开始菜单里找到快捷方式并启动,第一次运行需要等待安装并设置用户名、密码。

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 下建立文件夹 dsudo 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

下载内核组件(这里download),安装,然后重新运行

PS C:\Users\liupei> wsl --set-version Ubuntu-20.04 2
  1. wsl安装,here
  2. import后启动账户,here
  3. wsl迁移,here

远程连接wsl

配置过程:

  1. 先删掉原有的ssh
sudo apt-get remove --purge openssh-server
  1. 重新安装ssh服务
sudo apt-get install openssh-server ssh  
  1. 编辑sshd_config文件,修改几处配置才能正常使用用户名/密码的方式连接
sudo vi /etc/ssh/sshd_config
  1. 需要找到并修改以下几项(其他博客有修改其他项成功的,也可以只改了前两项)
  • Port 223 #默认的是22,Windows自己的SSH服务也是的22端口,所以我改成了223
  • PermitRootLogin yes #默认是PermitRootLogin prohibit-password
  • PasswordAuthentication yes # 密码验证登录
  • AllowUsers * # 远程登录时的用户,这里*是通配符
  1. 启动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 和字体,参考来源

TOC