wsl2实现centos8安装、配置及解决命令缺失
一、安装子系统
1. 启动虚拟机功能
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
# 结束后最好重启系统,
或者点击 开始
直接搜索开启或关闭windows功能
做如下勾选
2. 下载 Linux 内核更新包
- 适用于 x64 计算机的 WSL2 Linux 内核更新包
备注: ARM64 计算机,请下载 ARM64 包
必须在cmd中查询类型:systeminfo | find "系统类型"
3. 将 wsl2 设置为默认版本
** 以管理员的身份打开 PowerShell,、将 WSL 2 设置为默认版本:**
wsl --set-default-version 2
# 转换已安装的centos 为wsl2
wsl --set-version Centos 2
4.安装scoop、lxrunoffline
scoop install lxrunoffl
ine
5. lxrunoffline 安装子系统(当然也可以到微软商店直接安装Ubuntu)
下载子系统: centos
# LxRunOffline install -n <子系统名称> -d <安装路径> -f <安装包>.tar.gz
LxRunOffline install -n centos-d D:/wsl/centos -f d:/wsl/backup/centos-8-x86_64.tar.xz
如果有安装 Windows Terminal 的话,下拉菜单会自动显示,不做过多描述
6.其他命令
# 查看安装的子系统
wsl -l -v
# 启用子系统
wsl -s centos
# 停用子系统(备份前需停用)
wsl -t centos
# 备份(备份完会生成一个.xml后缀的同名配置文件)
LxRunOffline e -n centos -f d:/wsl/backup/centos_backup.tar.gz
# # [ERROR] The action/argument "export" doesn't support WSL2.
# 出错可以转wsl 1 备份
# 恢复(读取备份时生成的同名配置文件并写入配置,或者-c参数指定配置文件。)
LxRunOffline i -n centos -d D:/wsl/centos -f d:/wsl/backup -f d:/wsl/backup/centos-8-x86_64.tar.xz
二、更新源
1. 方法一
# 备份源
mkdir repo_bak
mv /etc/yum.repos.d/*.repo repo_bak/
# 更新源 wget
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
# 或者 curl
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
yum clean all # 清除系统所有的yum缓存
yum repolist
yum grouplist
yum makecache # 生成yum缓存
2. 方法二:手动更改三个文件
CentOS-Linux-AppStream.repo
CentOS-Linux-BaseOS.repo
CentOS-Linux-Extras.repo
注释掉 mirrorlist= 替换baseurl
- 清华云镜像地址
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/virt/$basearch/advanced-virtualization/
- 阿里云镜像地址
baseurl=https://mirrors.aliyun.com/centos-vault//$contentdir/$releasever/AppStream/$basearch/os/
三、其他命令
yum -y install sudo
yum -y install wget vim
yum -y net-tools
dnf install langpacks-en glibc-all-langpacks -y # 安装命令语言包
# 中文支持
dnf install langpacks-zh_CN
echo 'LANG="zh_CN.UTF-8"' > /etc/locale.conf
echo 'LANG="zh_CN.UTF-8"' >> /etc/profile
yum install -y passwd # 用户密码管理
dnf -y install git
dnf -y install make
dnf -y install initscripts # 启用 service 命令
# window访问子系统文件
\\wsl$
# 子系统访问window文件
ls /mnt
四、解决 wsl 无法使用systemctl 问题
参考:hosinokoe's blog 博客repair-systemctl-in-CentOS8-on-WSL2
1. 方法一: 安装genie
dnf install -y mock perl openssh-server # 安装依赖
# 下载安装包
dnf install -y epel-release wget
wget https://github.com/arkane-systems/genie/releases/download/v1.44/genie-1.44-1.fc34.x86_64.rpm
dnf install -y genie-1.44-1.fc34.x86_64.rpm
genie -s
systemctl start mysql
vim ~/.bashrc # 添加自启动
if [ "`ps -eo pid,lstart,cmd | grep systemd | grep -v -e grep -e systemd- | sort -n -k2 | awk 'NR==1 { print $1 }'`" != "1" ]; then
genie -s
fi
2. 方法二(没试过)
sudo dnf install python2 -y
sudo ln -s /usr/bin/python2 /usr/bin/python
sudo mv /usr/bin/systemctl /usr/bin/systemctl.old
curl https://raw.githubusercontent.com/gdraheim/docker-systemctl-replacement/master/files/docker/systemctl.py >temp
sudo mv temp /usr/bin/systemctl
sudo chmod +x /usr/bin/systemctl