在Windows10上安装CentOS7子系统
由于客户使用的服务器主要是linux的系统,redhat或centos等,而日常办公更多的是使用windows系统,这样就导致有时候做一些调试或者问题复现,需要再申请一台虚拟机,搞得很麻烦。偶尔可能由于网络问题,也无法正常链接到公司的网络,就会导致问题处理效率下降。本文介绍一种在Win10的PC机上安装CentOS7子系统的方法。
准备资料
PowerShell
windows命令行工具。本文所述操作,大多在PowerShell上执行。
LxRunOffline
由于我们安装的CentOS系统在微软商店上没有官方镜像,我们需要使用此工具完成安装。下载后安装到本机备用。
CentOS7的docker镜像
用于安装wsl子系统的镜像包。
WSL2更新包
为了解决部分权限问题,我们需要升级到wsl2。 wsl_update_x64.msi
关于wsl,可以查阅官网资料:什么是适用于 Linux 的 Windows 子系统 | Microsoft Docs
关于wsl1和wsl2的区别,可以查阅官网资料:比较 WSL 1 和 WSL 2 | Microsoft Docs
安装WSL
启用适用于 Linux 的 Windows 子系统
需要先启用“适用于 Linux 的 Windows 子系统”可选功能,然后才能在 Windows 上安装 Linux 分发。
以管理员身份打开 PowerShell 并运行:dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
检查WSL2的运行要求
若要更新到 WSL 2,需要运行64位Win10系统:版本 1903 或更高版本。
查看版本的方法,powershell执行:winver
启用虚拟机功能
安装 WSL 2 之前,必须启用“虚拟机平台”可选功能。
以管理员身份打开 PowerShell 并运行:dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
重新启动 计算机,以完成 WSL 安装并更新到 WSL 2。
安装WSL2的Linux内核更新包
运行WSL2更新包 wsl_update_x64.msi。 (双击以运行 - 系统可能提示你需要提升权限,选择“是”以完成此安装。)
将 WSL 2 设置为默认版本
打开 PowerShell,将 WSL 2 设置为默认版本:wsl --set-default-version 2
安装WSL2子系统centos7
安装centos7
使用lxRunOffline安装WSL子系统。
命令格式:LxRunOffline install -n 自定义系统别名 -d 安装目录路径 -f 安装包路径.tar.xz
执行命令完成安装(注意替换系统别名、安装路径、安装包路径):LxRunOffline install -n centos7 -d D:\wsl -f F:\Download\centos-7-docker.tar.xz
安装失败或者不再使用此wsl,也可以卸载:
LxRunOffline.exe uninstall -n 待卸载的系统别名
安装后的确认
安装完成后,使用wsl的查询命令查看已安装的wsl子系统列表和运行状态:wsl -l -v
也可以使用
LxRunOffline list
查看已安装的wsl子系统列表
如果查到的wsl列表中version为1,则表示该子系统为wsl 1的版本。
使用
wsl --set-version centos7 2
转换为wsl 2版本。注意,centos7是已安装的系统别名,需要根据实际情况替换名称,下文亦如此,不再赘述
如果安装了多个wsl子系统,可以使用wsl --set-default centos7
设置centos7为默认的子系统。
启动
使用wsl或bash命令启动默认的子系统。
使用wsl -d centos7
启动指定的子系统。
关闭
使用wsl --shutdown
关闭所有wsl子系统。
使用wsl --shutdown -n centos7
关闭指定的wsl子系统。
安装Windows Terminal原生工具
打开Microsoft Store搜索并安装Windows Terminal。安装完成后根据个人喜好配置和优化。
Windows Terminal帮助说明
请参考官方资料:Windows 终端安装 | Microsoft Docs
善后工作
注意:使用官方镜像安装后,root用户缺少环境变量,需要自行配置。一种简单的方法是创建一个新用户,把该用户的.bash开头的文件拷贝过来。操作命令依次是useradd testx
、cp /home/testx/.* /root/
、source .bash_profile
。
设置root密码
打开wsl后,使用passwd
设置root用户密码。
修改hosts文件
首先使用ip addr
或者ifconfig
命令查看当前服务的ip地址,使用hostname
查看主机名。
然后编辑/etc/hosts
文件,修改后参考:
127.0.0.1 localhost #仅保留这一条127.0.0.1的配置 192.168.111.111 H1-11111WSC #根据上边查到的ip hostname设置这一条记录 # The following lines are desirable for IPv6 capable hosts,以下ipv6的配置如不使用ipv6可以不管 ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
修改yum源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo # 改点东西 sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo # 刷新缓存 yum makecache
更新本地包
yum update -y
安装一些常用的包
yum install -y NetworkManager net-tools bind netstat ncat iptables yum install -y abrt alias alias-lib autoconfig autoconf ModemManager lrzsz mlocate bash-completion yum install -y libaio color-filesystem colord epel-release file gcc gcc-c++ http-parser java lshw lsof yum install -y man nmap ntp openssh-server pciutils perf python3 rsyslog tcpdump telnet-server telnet yum install -y traceroute tracker unzip usermode vim xml xml-common yum-langpacks zip gdb htop iproute
配置ssh服务
修改/etc/ssh/sshd_config文件,新增如下内容:
设置开放的ssh端口,默认是22,防止和主机冲突,我们设置为2222 Port 2222 # 允许root远程登录 PermitRootLogin yes # 允许密码验证登录 PasswordAuthentication yes # 远程登录时的用户名 AllowUsers root
生成密钥:
ssh-keygen -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key ssh-keygen -t ecdsa -b 256 -f /etc/ssh/ssh_host_ecdsa_key ssh-keygen -t ed25519 -b 256 -f /etc/ssh/ssh_host_ed25519_key
启动sshd服务:
/usr/sbin/sshd
注意事项
由于wsl是部署在windows系统上的linux子系统,资源与windows系统共享,所以,涉及系统底层管理的命令会被禁用,请知悉。譬如:systemctl、hostnamectl等。