在 windows10上使用 WSL2 安装 centOS9 系统(支持 systemd)
The virtual machine could not be started because a required feature is not installed2022年9月微软官方发布声明,wsl 已经支持 systemd。运行 WSL 2 需要 Windows 10 系统版本 2004+(内部版本 19041+)。或者 Windows 11 系统。微软官方文档:安装 WSL 条件
在 bios 中开启虚拟化
CPU 是 Intel(英特尔)的话,虚拟化技术即 VT(Virtualization Technology);CPU 是 AMD 的话,虚拟化技术即 SVM(Secure Virtual Machine mode)。
虚拟化技术能够令单个 CPU 模拟多个 CPU 并行,将一台电脑分成了多个独立的电脑,每台“虚拟”的电脑上都可以按照需要进行模拟。一台电脑上就可以运行多个操作系统,并且可以在相互独立的“虚拟电脑”内运行而互不影响。
华硕主板+ Intel(英特尔)CPU 开启虚拟化:进入 bios 主界面后,选择Advanced Mode(F7),然后选择Advanced设置,并找到Intel(VMX)Virtuallzation Technology设置项,将默认的 Disable,改成Enabled启用,表示开启 VT 虚拟化。
在 Windows 功能面板中,启用“虚拟机平台”和“WSL子系统”可选组件
在 Windows 中,打开控制面板->卸载程序->启用或关闭 Windows 功能
勾选上“适用于 Linux 的 Windows 子系统”、勾选上“虚拟机平台”。
windows自动安装组件,然后重启电脑。
在 Windows 功能面板中,不需要勾选 hyper-v 组件,只需要勾选“适用于 Linux 的 Windows 子系统”、“虚拟机平台”,这两个组件。
升级 WSL 2 为最新版本
在Microsoft Store 中获取最新版本的 WSL。
安装完毕,然后打开命令行工具:Windows Powershell(管理员),查看 wsl 版本:
# 查看 wsl 版本wsl --version # 显示如下: WSL version: 1.2.5.0 Kernel version: 5.15.90.1 WSLg version: 1.0.51 MSRDC version: 1.2.3770 Direct3D version: 1.608.2-61064218 DXCore version: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp Windows version: 10.0.19045.2965
2022年9月微软官方发布声明,wsl 已经支持 systemd。
安装 centOS
在Microsoft Store 中查看 GNU/Linux 分发版。里面没有 CentOS-WSL,需要从 github.com 中寻找。地址:CentOS for WSL,这里有适合 wsl2 的centOS9和 centOS8。
Centos Stream 是 Centos 8 之后一个滚动发布的 Linux 分发版。在 2021 年年底,Centos 8 将会停止维护,届时 Centos Stream 将作为 RHEL 的上游分支进行持续更新。在红帽开源开发模式中,红帽在发布红帽企业 Linux 新版本前,会先在 CentOS Stream 上开发红帽企业 Linux 源代码,使 CentOS Stream 成为红帽企业 Linux 未来版本的预览。
第一步:下载最新版:CentOS 9-stream。然后解压 zip 文件。其中包含有两个文件。一个是能安装在 wsl2 上的centOs,一个是根目录系统文件。
第二步:把文件解压到,其他盘,专门用来做 centOS 的系统的位置,其中能搭建开发环境,以及开发程序。例如:E:\wsl\centOS
第三步:在CentOS安装文件上,用鼠标右键点击,以管理员的身份运行。然等待安装完毕。再然后按回车键。看到多出来一个文件:ext4.vhdx,它式虚拟硬盘。centOS系统文件以及开发安装的文件,都会储存在它里面。
安装 Window Terminal 终端
Window Terminal(Windows终端)是微软在Build 2019大会上发布的面向 Windows 10 的新命令行程序,terminal 集成了Windows上的 PowerShell、cmd、Windows Linux子系统(WSL)三大环境。用来输入 wsl 命令,非常合适。
打开Microsoft Store,搜索 Window Terminal,然后点“获取”。然后等待下载安装。
- cmd和Powershell都可以做命令行交互、批处理、运行脚本功能。Windows Powershell是专为系统管理员设计的新 Windows 命令行 shell。PowerShell 兼容原来的 cmd,命令统一使用 cmdlet 命令格式(动词-名词)。Windows Powershell包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用。此外,使用 Windows Powershell提供程序还可以访问其他数据存储,如注册表和数字签名证书存储,就像访问文件系统一样容易。
- Window Terminal(Windows 终端)是微软在 Build 2019 大会上发布的,面向 Windows 10 的新命令行程序,Terminal集成了Windows 上的Powershell、
- cmd、Windows Linux子系统(WSL)三大环境。用来输入 wsl 命令,非常合适。
打开 Microsoft Store,搜索Window Terminal
,然后点“获取”。然后等待下载安装。
点击【开始】菜单,拖动【Windows Terminal】图标到桌面,可得到一个桌面快捷方式。还可以把它【固定到任务栏】,便于经常使用。
登录 CentOS
方式一:使用Window Terminal终端,来登录管理 centOS 非常方便。
在Window Terminal终端中,查看。
查看已经安装的全部 wsl 子系统wsl --list 查看正在运行的 wsl 子系统wsl -l -v 把 centOS 设置为默认wsl -s CentOS9-stream 启动 centOSwsl -d CentOS9-stream 停止所有已启动的 WSL 子系统wsl --shutdown 只已启动的 centOSwsl -t CentOS9-stream
方式二:鼠标右击CentOS.exe,并“以管理员身份运行”,即成功登录系统了。
开启 systemd 支持
若要刚安装发行版 centOS,启用 systemd,需要设置:/etc/wsl.conf。登录刚安装 centOS,执行命令:
echo -e "[boot]\nsystemd=true" | tee -a /etc/wsl.conf
此命令会创建/etc/wsl.conf文件,并且写入设置:
[boot] systemd=true
# 或者手工写入vi /etc/wsl.conf
然后,关闭 WSL 分发版 centOS,再重启 WSL 实例。在Window Terminal终端中,执行命令:
停止关闭 centOS 分发版wsl --shutdown 查看在运行的分发版wsl --list --running
检测 systemd 支持
然后重新登陆 centOS,判断 wsl 是否已启用 systemd,可通过以下命令查看:
ps --no-headers -o comm 1
如果命令返回的是 init 说明 systemd 未启用,如果是 systemd 那么你的 systemd 已启用成功了。
查看已启用的 systemd service
systemctl list-unit-files --type=service
安装软件包
当前 centos 版本与 redhat 对应的版本的命令 | |
适用于 RedHat、CentOS | |
适用于所有的 linux,包括Redhat、SuSE、Debian、Centos等 | |
此命令适用于所有的 Linux 分发版,包括 RedHat、SUSE、Debian…等分发版。 在默认情况下,Linux 中是不带 lsb_release 命令的,安装命令 dnf -y install redhat-lsb 。LSB是Linux Standard Base的缩写,用来显示 LSB 和特定版本的相关信息。如果使用该命令时不带参数,则默认加上-v 参数。 |
安装工具包
cd /tmpdnf -y install vimdnf -y install wgetdnf -y install zip unzipdnf -y install tree
安装 epel-release 源
查看本地源文件
ls -l /etc/yum.repos.d 显示如下: -rw-r--r-- 1 root root 4229 Mar 3 02:30 centos-addons.repo -rw-r--r-- 1 root root 2588 Mar 3 02:30 centos.repo
epel-release源是由 Fedora 社区打造,为 RHEL 及衍生分发版如 CentOS、Scientific Linux 等提供高质量软件包的项目。装上了 EPEL之后,就相当于添加了一个第三方源。官方的 rpm repository 提供的 rpm 包也不够丰富,很多时候需要自己编译那太辛苦了,而 EPEL 恰恰可以解决这两方面的问题。
dnf -y install epel-release
再次,查看本地源文件
ls -l /etc/yum.repos.d 显示如下: -rw-r--r-- 1 root root 4229 Mar 3 02:30 centos-addons.repo -rw-r--r-- 1 root root 2588 Mar 3 02:30 centos.repo -rw-r--r-- 1 root root 1519 Dec 2 2021 epel-next.repo -rw-r--r-- 1 root root 1621 Dec 2 2021 epel-next-testing.repo -rw-r--r-- 1 root root 1453 Dec 2 2021 epel.repo -rw-r--r-- 1 root root 1552 Dec 2 2021 epel-testing.repo
安装 packages-microsoft-prod 源
packages-microsoft-prod源是软件包库,是 Microsoft 构建并支持适用于 Linux 系统的各种软件产品,并使它们可通过标准 APT 和 YUM 程序包存储库提供。适用于 Linux 分发版和 Linux 包版本的自动配置存储库。packages-microsoft-prod
cd /tmpwget -c https://packages.microsoft.com/config/rhel/9.0/packages-microsoft-prod.rpmrpm -ivh packages-microsoft-prod.rpm # 清理缓存dnf clean all # 更新源dnf makecache
再次,查看本地源文件
ls -l /etc/yum.repos.d 显示如下: -rw-r--r-- 1 root root 4229 Mar 3 02:30 centos-addons.repo -rw-r--r-- 1 root root 2588 Mar 3 02:30 centos.repo -rw-r--r-- 1 root root 1519 Dec 2 2021 epel-next.repo -rw-r--r-- 1 root root 1621 Dec 2 2021 epel-next-testing.repo -rw-r--r-- 1 root root 1453 Dec 2 2021 epel.repo -rw-r--r-- 1 root root 1552 Dec 2 2021 epel-testing.repo -rw-r--r-- 1 root root 206 May 3 11:55 microsoft-prod.repo
升级 CentOS 软件包
只升级所有软件包,不升级操作系统,不升级系统内核。
cd /tmpdnf -y upgrade
卸载 centOS 系统
在某些情况下,需要卸载 wsl 分发系统 centOS 的时候,有两种办法:
方式一:使用Window Terminal终端命令注销来卸载:
停止全部分发版系统wsl --shutdown 查看正在运行的分发版系统wsl --list --running 查看已经安装上的全部分发版系统wsl --list 注销分发版系统 centOSwsl --unregister CentOS9-stream 查看已经安装上的全部分发版系统wsl --list
虚拟硬盘文件ext4.vhdx,会被清除掉,卸载完成。
方式二:使用Window Terminal终端,先停止分发版系统,然后切换到安装目录下E:\wsl\centOS
,运行如下命令:
停止全部分发版系统wsl --shutdowne: cd wsl/centOS ./CentOS9-stream.execlean
虚拟硬盘文件ext4.vhdx,会被清除掉,卸载完成。
windown 10 与 wsl 中 centOS 文件互传
windown 10 上的磁盘空间都直接挂在到 centOS 上。
方法一
打开 WSL子系统 centoOS 的 shell 终端,对于 wsl 来说, windows 是挂载/mnt,目录下。列出来本机电脑上的所有磁盘空间。
cd /mntls -l
列出来本机电脑上的 E 磁盘空间上的所有文件夹以及文件。
cd /mnt/els -l
把 windown 上的文件复制到 centOS
把windown 10上的E盘上 wwww 文件夹下 lanmper,全部复制到 centOS 上的 www 目录下
cp -r /mnt/e/www/lanmper /usr/www/
方法二
在windows上打开资源管理器,输入\\wsl$
,然后按回车键。就可以看到所有的子系统。
用鼠标点击wsl的子系统,就能进入centOS的目录,点击任何目录,都能进入
方法三
打开 WSL子系统 centoOS 的shell终端,输入:
explorer.exe
会打开 window 下目录。即可在资源管理器界面中浏览 WSL 系统的目录数据。