WSL安装
安装步骤
- 控制面板->程序和功能->启用或关闭Windows功能->勾选 适用于Linux的Windows子系统
- 重启电脑
- 打开应用商城搜索 “WSL”,可根据自己需求选择安装一个或多个 Linux 系统:
- 安装完成后可在开始菜单里找到快捷方式并启动,第一次运行需要等待安装并设置用户名、密码。
home 目录位置
1 | C:\Users\liupe\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs |
wsl备份及还原,here
挂在移动硬盘
假设移动硬盘盘符为 D
在 /mnt
下建立文件夹 d
:sudo mkdir /mnt/d
挂载硬盘到文件夹 d
(注意:D:
后面有空格)
1 | $ sudo mount -t drvfs D: /mnt/d |
wsl设置
列出了系统中安装的子系统
可以是一个或多个
1 | wsl -l |
运行子系统
name由wsl获得
1 | wsl -d Ubuntu-18.04 (name) |
查看运行中的子系统
1 | wsl -l --running |
停止子系统
1 | wsl -t Ubuntu-18.04 |
备份wsl子系统
一定要先停止子系统之后再备份wsl
1 | wsl --export Ubuntu-18.04 c:\Ubuntu-18.04-20200210.tar |
还原子系统
1 | wsl --import Ubuntu-18.04 C:\wsl c:\Ubuntu-18.04-20190707.tar |
设置默认版本
1 | wsl -s Ubuntu-18.04 |
删除子系统
避免存在重复分发版本,否则还原的时候需要指定不同的distribution_name
1 | wsl --unregister Ubuntu-18.04 |
import修改默认启动user
1 | myname=liup |
ps: 是否有wsl.conf不影响结果
WSL 映射磁盘
1 | \\wsl$ |
xming 图形转发
1 | export DISPLAY=localhost:0 |
WSL1 转换为 WSL2
查看当前版本
1 | PS C:\Users\liupei> wsl -l -v |
如果在运行,先停止
1 | C:\Users\Administrator>wsl --shutdown |
版本转换
1 | PS C:\Users\liupei> wsl --set-version Ubuntu-20.04 2 |
启用虚拟机功能
安装 WSL 2 之前,必须启用“虚拟机平台”可选功能。 计算机需要虚拟化功能才能使用此功能。
以管理员身份打开 PowerShell 并运行:[参考]
1 | dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart |
1 | PS C:\Users\liupei> wsl --set-version Ubuntu-20.04 2 |
远程连接wsl
配置过程:
先删掉原有的ssh
1
sudo apt-get remove --purge openssh-server
重新安装ssh服务
1
sudo apt-get install openssh-server ssh
编辑sshd_config文件,修改几处配置才能正常使用用户名/密码的方式连接
1
sudo vi /etc/ssh/sshd_config
需要找到并修改以下几项(其他博客有修改其他项成功的,也可以只改了前两项)
- Port 223 #默认的是22,Windows自己的SSH服务也是的22端口,所以我改成了223
- PermitRootLogin yes #默认是PermitRootLogin prohibit-password
- PasswordAuthentication yes # 密码验证登录
- AllowUsers * # 远程登录时的用户,这里*是通配符
- 启动ssh服务参考文献:
1
sudo service ssh --full-restart
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/
1 |
|
sudo mount -t drvfs G: /mnt/e
-t:指定档案系统的型态
G:表示的是可移动磁盘的盘符
1 |
|
%USERPROFILE%
1 |
|
“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”
},
1 |
|
打开下一级目录pacman.d
, 编辑mirrorlist, 取消注释掉China的两个清华Tuna源链接, 当然也可以取消注释所有链接.
回到archlinux, 依次执行
1 | pacman -Syy |
- 安装基础软件
pacman -S base base-devel neovim wget curl
- 创建Linux账户
在shell中, 输入passwd
添加root
密码
新建普通用户给用户提权, 编辑1
2useradd -m -G wheel -s /bin/bash 用户名
passwd 用户名/etc/sudoers
将1
sudo nvim /etc/sudoers
wheel ALL=(ALL) AL
L取消注释, 保存并退出.
查看当前用户idid -u 用户名
记下账户id
退出Arch Linux, 回到Power Shell.
执行:
.\LxRunOffline su -n archlinux -v 账户id
-n后面跟wsl2虚拟机的名字, 我的是archlinux
这样, 下一次登录会自动进入刚创建的用户.
- 语言本地化
编辑/etc/locale.gen
将1
sudo nvim /etc/locale.gen
en_US.UTF-8 UTF-8
和zh_CN.UTF-8 UTF-8
取消注释, 如果需要其他语言, 请一并取消注释.
执行:编辑1
2
3sudo locale-gen
locale
locale -a/etc/locale.conf
添加如下内容1
nvim /etc/locale.conf
重启archlinux即可完成配置。1
2# /etc/locale.conf
LANG=en_US.UTF-8
后面还可以配置 windows terminal 和字体,参考来源