本文主要用于记录在Windows上使用WSL2和centos系统打造一个免费高效的shell终端的配置过程以及界面优化过程。
1、选型分析
之前一直都是使用termius和windows来进行ssh管理,但是最近termius要过期了(没钱续费),不用盗版(版权意识),ssh的Agent Forwarding功能是个人刚需且为termius的付费版才有的功能,所以开始研究windows上免费的ssh客户端管理工具或者是方式。
(mac系统用户可以跳过这篇文章)首先考虑到了mac,因为mac系统是类unix系统,在命令行终端操作上要比windows好太多,但是没钱买mac,所以pass
然后如果直接使用linux系统的话虽然shell的问题很容易解决,但是其他的办公软件无法使用或者很难用;如果用虚拟机跑linux,启动麻烦,耗费性能,文件管理也十分麻烦;所以pass
还有就是各种windows上的各种免费第三方工具,如powershell、GitBash、cmder等等,能实现一定的Linux命令和shell功能,但是相比原生linux还是功能残缺。
**但是如果只要管理各种ssh客户端的话很多免费工具已经足够优秀了,**而笔者本次除了管理ssh之外还想要实现一定的shell功能,因此最后锁定Windows10上面的2004版本的wsl2工具,用它来运行一个linux系统,虽然是残缺的Linux,但是在shell功能和ssh功能上和直接运行Linux并无差异。唯一需要注意的就是windows的版本要比较新。
WSL 2 is only available in Windows 10 builds 18917 or higher
2、安装wsl
windows官网的安装教程比较详细,并且wsl的安装启用比较简单,我们可以直接使用管理员模式的powershell通过命令行来启用:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
命令顺利执行完后需要重启,这时候输入wsl --help
就可以看到wsl已经安装成功。
3、安装centos
Windows的应用商店中有一些不错的linux发行版,包括很多同学都很喜欢的ubuntu,但是个人比较熟悉使用centos,而应用商店中的centos是要收费的,不过好在github上面有CENTOS官方开源的安装包,我们这里使用github上的安装包进行安装。
如果使用应用商店中的发行版直接点击安装即可。随后便可以跳过下面的centos的安装部分。
首先我们去centos的GitHub页面下载对应的安装包:
注意这里要切换分支进行下载,以centos7-x86.64
为例,这里对应的就是最新的centos7.8
系统,我们只需要下载对应的tar.xz
压缩包即可。
wget https://github.com/CentOS/sig-cloud-instance-images/blob/CentOS-7-x86_64/docker/centos-7-x86_64-docker.tar.xz
接着我们以管理员身份打开一个powershell窗口:
# 安装 Chocolatey
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
# 安装 LxRunOffline
choco install lxrunoffline
注意这里安装完成之后需要重启powershell来进行下一步的安装
LxRunOffline install -n 自定义系统名称 -d 安装目录路径 -f tar.xz安装包路径
# 注意windows系统命令行中的文件路径和linux系统差别很大
# 比如我这里的安装命令就是
LxRunOffline.exe install -n centos -d D:/centos -f .\centos-7-x86_64-docker.tar.xz
# 将centos安装到D盘的centos文件夹下,并且命名为centos
接下来就可以使用下述两种方式尝试启动
LxRunOffline run -n 自定义系统名称
wsl -d 自定义系统名称
4、升级centos为wsl2
# 列出已经安装的wsl的信息
wsl -l -v
# 将对应的wsl设为wsl2,注意<Distro>要和上面查询到的信息一致
wsl --set-version <Distro