大龄程序员
发布于

windows11 用 WSL2 安装 centOS9 系统 支持 systemd

windows11 用 WSL2 安装 centOS9 系统 支持 systemd

windows 用 WSL2 安装 centOS9 系统(支持 systemd)
wsl 已经支持 systemd
运行 WSL 2 需要 Windows 系统版本 2004+(内部版本 19041+)
或者 Windows 11 系统
微软官方文档:安装 WSL 条件 https://docs.microsoft.com/zh-cn/windows/wsl/install

bios 中开启虚拟化
Intel(英特尔)CPU
虚拟化技术即 VT(Virtualization Technology)

AMD 的CPU
虚拟化技术即 SVM(Secure Virtual Machine mode)

虚拟化技术能够令单个 CPU 模拟多个 CPU 并行,
将一台电脑分成了多个独立的电脑,每台“虚拟”的电脑上都可以按照需要进行模拟
一台电脑上就可以运行多个操作系统,并且可以在相互独立的“虚拟电脑”内运行而互不影响

Windows 功能面板中
启用“虚拟机平台”和“WSL子系统”可选组件
在 Windows 中,打开控制面板->卸载程序->启用或关闭 Windows 功能

勾选上“适用于 Linux 的 Windows 子系统”、勾选上“虚拟机平台”
windows自动安装组件,然后重启电脑

在 Windows 功能面板中 两个组件
不需要勾选 hyper-v 组件
只需要勾选“适用于 Linux 的 Windows 子系统”、“虚拟机平台”

在 Windows 功能面板中,启用“虚拟机平台”和“WSL子系统”可选组件
在 Windows 中,打开控制面板->卸载程序->启用或关闭 Windows 功能
勾选上“适用于 Linux 的 Windows 子系统”、勾选上“虚拟机平台”。
windows自动安装组件,然后重启电脑。
在 Windows 功能面板中,不需要勾选 hyper-v 组件
只需要勾选“适用于 Linux 的 Windows 子系统”、“虚拟机平台”,这两个组件。

升级 WSL 2 为最新版本
在Microsoft Store 中获取最新版本的 WSL
https://aka.ms/wslstorepage

安装完毕,然后打开命令行工具:Windows Powershell(管理员),查看 wsl 版本:

查看 wsl 版本

wsl --version

安装 centOS
在Microsoft Store 中查看 GNU/Linux 分发版
里面没有 CentOS-WSL
需要从 github.com 中寻找
地址:CentOS for WSL
这里有适合 wsl2 的centOS9和 centOS8

Centos Stream 是 Centos 8 之后一个滚动发布的 Linux 分发版
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,然后点“获取”。然后等待下载安装

登录 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 /etc/os-release 适用于所有使用systemd的Linux发行版‌
包括但不限于Ubuntu、Debian、Fedora、CentOS、OpenCloudOS等

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 参数。
cat /etc/redhat-release
cat /etc/centos-release 适用于 RedHat、CentOS
cat /proc/version 当前 centos 版本与 redhat 对应的版本的命令
安装工具包
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

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 系统的目录数据。

浏览 (21)
点赞
收藏
评论
暂无数据