• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 在 windows10上使用 WSL2 安装 centOS9 系统(支持 systemd)

    The virtual machine could not be started because a required feature is not installed


    2022年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,然后点“获取”。然后等待下载安装。

    • cmdPowershell都可以做命令行交互、批处理、运行脚本功能。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
    
    启动 centOS
    wsl -d CentOS9-stream
    
    
    停止所有已启动的 WSL 子系统
    wsl --shutdown
    
    只已启动的 centOS
    wsl -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 系统版本方法
    cat/proc/version当前 centos 版本与 redhat 对应的版本的命令
    cat/etc/redhat-release
    cat/etc/centos-release
    适用于 RedHat、CentOS
    uname-r
    uname-a
    适用于所有的 linux,包括Redhat、SuSE、Debian、Centos等
    lsb_release-a此命令适用于所有的 Linux 分发版,包括 RedHat、SUSE、Debian…等分发版。
    在默认情况下,Linux 中是不带 lsb_release 命令的,安装命令dnf -y install redhat-lsb
    LSB是Linux Standard Base的缩写,用来显示 LSB 和特定版本的相关信息。如果使用该命令时不带参数,则默认加上-v 参数。

    安装工具包

    cd /tmp
    
    dnf -y install vim
    dnf -y install wget
    dnf -y install zip unzip
    dnf -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 /tmp
    wget -c https://packages.microsoft.com/config/rhel/9.0/packages-microsoft-prod.rpm
    rpm -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 /tmp
    
    dnf -y upgrade
    



    卸载 centOS 系统

    在某些情况下,需要卸载 wsl 分发系统 centOS 的时候,有两种办法:

    方式一:使用Window Terminal终端命令注销来卸载:

    停止全部分发版系统
    wsl --shutdown
    
    查看正在运行的分发版系统
    wsl --list --running
    
    查看已经安装上的全部分发版系统
    wsl --list
    
    注销分发版系统 centOS
    wsl --unregister CentOS9-stream
    
    
    查看已经安装上的全部分发版系统
    wsl --list
    

    虚拟硬盘文件ext4.vhdx,会被清除掉,卸载完成。


    方式二:使用Window Terminal终端,先停止分发版系统,然后切换到安装目录下E:\wsl\centOS,运行如下命令:

    停止全部分发版系统
    wsl --shutdown
    
    e:
    cd wsl/centOS
    ./CentOS9-stream.exe clean
    

    虚拟硬盘文件ext4.vhdx,会被清除掉,卸载完成。



    windown 10 与 wsl 中 centOS 文件互传

    windown 10 上的磁盘空间都直接挂在到 centOS 上。

    方法一

    打开 WSL子系统 centoOS 的 shell 终端,对于 wsl 来说, windows 是挂载/mnt,目录下。列出来本机电脑上的所有磁盘空间。

    cd /mnt
    ls -l
    


    列出来本机电脑上的 E 磁盘空间上的所有文件夹以及文件。

    cd /mnt/e
    ls -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 系统的目录数据。