WSL2安装CentOS7和CentOS8
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、下载ZIP包?
- 二、安装
- 1.打开Windows子系统支持
- 2.安装到指定位置
- 3.管理虚拟机
- 4.配置虚拟机
- 1.配置国内源
- 2.安装软件
- 3.安装第三方源
- 5.配置用户
- 1.创建用户
- 2.赋予sudo权限
- 3.测试sudo权限
- 6.配置登录用户
- 总结
前言
Windows11官方WSL2已经支持Ubuntu、Open SUSE、Debian和Oracle等等发行版,由于CentOS也是非常经典的一个发行版,由于官方尚未提供安装方式,所以我整理了下安装方式给有需要的人,方法很简单。
一、下载ZIP包?
这一步比较简单,ZIP包本身也不大,打不开页面的请“科学上网”。
CentOS-WSL
CentOS-8

CentOS-7

二、安装
1.打开Windows子系统支持
WSL需要Windows子系统支持和虚拟化支持,打开方式请看我的文章或自行搜索下,方法很简单,这里就不赘述了。
2.安装到指定位置
强烈建议不要安装到C盘,这个虚拟机会越用越大,未来可能把C盘撑爆。虽然可以移动,但是配置起来麻烦,不如一步到位。
首先,在D盘创建一个文件夹CentOS8,如果安装7的话就创建文件夹CentOS7。
其次,将下载的ZIP包解压到对应的目录下,你会得到一个压缩文件和一个可执行文件。以CentOS8为例:初始有CentOS8.exe和rootfs.tar.gz两个文件,中间那个文件是配置后才有的。

最后,双击CentOS8.exe等待配置完成,这个时候你应该已经进入系统了,使用的用户是root。
安装差不多就到这里了,接下来我们简单配置下。
3.管理虚拟机
如果退出了也不用每次都到文件夹下面去打开,你只要执行wsl -d <发行版>就行了。
wsl --list -vNAME STATE VERSION
* Ubuntu-20.04 Stopped 2Ubuntu-22.04 Running 2Ubuntu-18.04 Stopped 2CentOS8 Stopped 2CentOS7 Stopped 2
上面是我安装的所有版本,可以看到CentOS8和CentOS7就是我通过前面的方式安装的。
使用下面的命令打开CentOS8:
wsl -d CentOS8
接下来最重要的一步配置,主要包括配置国内源和配置用户。
4.配置虚拟机
1.配置国内源
原始的CentOS8发行版里面是没有源的,无法更新缓存,也就是不能安装软件。
另外,CentOS7发行版里面有国外源,可以缓存,速度没有保证。
这里贴出CentOS8的换源操作,CentOS7的请自行查阅。
#备份原始源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup#下载新的源wget方法
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo#下载新的源curl方法,这个发行版是没有预装wget的,需要使用curl,效果一样
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo#替换字段
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*#缓存
yum clean
yum makecache
2.安装软件
对于习惯使用Debian的用户可能会有差别,他们的很多包名不一样。安装软件没有Debian系那么简单。
这里介绍几个简单的安装包方法:
cmake:
yum install cmake
wget:
yum install wget
和Ubuntu不一样的是,你安装gcc它会同时安装g++,只不过他这里不叫g++。
3.安装第三方源
CentOS有一个令人诟病的地方,官方的源有时候安装不了一些软件。比如:ffmpeg和htop等等。这个时候就只能通过其它的方法解决了,好在不是太难,当然也够折腾一下的了。
这里以CentOS8安装ffmpeg为例:
sudo yum install https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm
sudo yum install -y http://rpmfind.net/linux/epel/7/x86_64/Packages/s/SDL2-2.0.14-2.el7.x86_64.rpm
sudo yum install -y ffmpeg
对,没错不出意外的话还是出意外了。SDL2-2.0.14-2.el7.x86_64.rpm这个包不存在,我去网站找了一圈没有找到,这个是ffmpeg依赖的多媒体库,必须装上去才行。
所以,只能另辟蹊径了,接着往下看。
SDL2下载
包含了x86和x86_64的两个指令的,按需下载即可。

下载完成后先安装SDL2,安装完成后再安装ffmpeg就没问题了,实测运行没问题,也支持NVCUVID。
同时,WSL的图形界面也是支持的,不需要安装额外的东西。
基本你添加了额外源之后,像htop这种之前不能安装的现在都可以安装了,但可能也不包括所有的包。
其它的包各位另行想办法吧!
5.配置用户
差点漏了很重要的一个配置,我们登录CentOS8或CentOS7用的都是root用户,我们可以自己建一个用户,然后将我们的账号设为登录账号,防止一直以root操作引发灾难问题。
1.创建用户
这个比肩简单,Linux应该都一样的。这里我推荐adduser,会默认创建/home/<用户>目录,不用指定额外参数,提示输入密码就完成了。
adduser anold
因为这里没有打开密码验证,可以随便输,只做了简单的弱密码提示,直接过了就行了,没有影响。
2.赋予sudo权限
这里我发现连sudo程序都没有安装,我选择使用另一种方法配置用户的速度权限,那就是修改/etc/sudoers。
这一步一定要在root账户下进行,因为我们创建的用户这会还没有sudo权限。
yum install sudo
vim /etc/sudoers
Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"#
# Adding HOME to env_keep may enable a user to run unrestricted
# commands via sudo.
#
# Defaults env_keep += "HOME"Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin## Next comes the main part: which users can run what software on
## which machines (the sudoers file can be shared between multiple
## systems).
## Syntax:
##
## user MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
<你的用户> ALL=(ALL) ALL## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL## Allows members of the users group to mount and unmount the
## cdrom as root
# %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom## Allows members of the users group to shutdown this system
# %users localhost=/sbin/shutdown -h now## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
#includedir /etc/sudoers.d
注意:sudoers这个文件很重要,修改需要谨慎,如果是WSL我们还可以通过切换root挽救,如果是实体机可能就完犊子了。
重点就在这一句:
<你的用户> ALL=(ALL) ALL
这里我之前创建的是anold,所以应该是下面的样子:
anold ALL=(ALL) ALL
切记,wq!
3.测试sudo权限
很简单,使用sudo执行程序就行了。先把用户切换到anold,再执行更新源:
下面的命令会要求输入密码,也可以配置不需要输密码,但我是喜欢输密码,因为一方面是安全着想,另一方面是给自己留一个思考的时间,防止造成不可挽回的损害!
su - anold
sudo yum update
不出意外的话,密码验证通过后就开始更新源了,说明sudo权限增加成功了!
6.配置登录用户
不想打字了,我之前一篇文章讲述了Ubuntu配置非root用户为默认用户,同样的方法也适用于CentOS8。
WSL配置默认用户
总结
1、有CentOS需求的福音
2、只支持CentOS8和CentOS7两个发行版。
相关文章:
WSL2安装CentOS7和CentOS8
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、下载ZIP包?二、安装1.打开Windows子系统支持2.安装到指定位置3.管理虚拟机4.配置虚拟机1.配置国内源2.安装软件3.安装第三方源 5.配置用户1.创建…...
不平衡电网条件下基于变频器DG操作的多目标优化研究(Matlab代码Simulink实现)
目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码&Simulink实现&文章讲解 💥1 概述 文献来源: 最近,利用并网转换器(GCC)克服电网故障并支撑电网电压已…...
【Leetcode】(自食用)简单题||单词数
step by step. 题目: 统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。 请注意,你可以假定字符串里不包括任何不可打印的字符。 示例: 输入: "Hello, my name is John" 输出: 5 解释: 这里的单词是指连续的不是空格…...
C语言代码的x86-64汇编指令分析过程记录
先通过Xcode创建一个terminal APP,语言选择C。代码如下: #include <stdio.h>int main(int argc, const char * argv[]) {int a[7]{1,2,3,4,5,6,7};int *ptr (int*)(&a1);printf("%d\n",*(ptr));return 0; } 在return 0处打上断点&…...
基于springboot+vue的房屋租赁系统(前后端分离)
博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…...
Python文件读写操作详解:从基础到高级
摘要:文件读写是Python编程中常见的操作之一。本文将介绍Python中文件读写的基础知识,包括打开文件、读取文件内容、写入文件、关闭文件等基本操作。此外,还将探讨一些高级文件读写技术,如使用上下文管理器、处理异常、使用with语…...
ThreadLocal基本介绍
文章目录 什么是ThreadLocalThreadLocal解决了什么问题ThreadLocal的作用 ThreadLocal的使用场景ThreadLocal的代码示例ThreadLocal的优点ThreadLocal的缺点与volatile、synchronized、ThreadLocal比较 总结 什么是ThreadLocal ThreadLocal是Java中的一个线程本地变量…...
ffmpeg源码编译成功,但是引用生成的静态库(.a)报错,报错位置在xxx_list.c,报错信息为某变量未定义
背景:本文是对上一个文章的补充,在源码编译之前,项目是有完整的ffmpeg编译脚本的,只不过新增了断点调试ffmpeg,所以产生的上面的文章,也就是说,我在用make编译成功后,再去做的源码编…...
2023爱分析·信创云市场厂商评估报告:中国电子云
01 研究范围定义 信创2.0时代开启,信创进程正在从局部到全面、从细分到所有领域延展。在这个过程中,传统的系统集成,也在逐步向信创化、数字化及智能化转变。随着信创产业的发展,企业需要更多的技术支持和服务,而传统的系统集成已…...
网络安全学习笔记——XFF攻击流程
手工注入 手动报错注入,填写格式如:X-Forwarded-For: and updatexml(1,concat(0x7e,(select database()),0x7e),1) or 11 库名 1 and updatexml(1,concat(0x7e,database(),0x7e),1), 表名 1 and updatexml(1,concat(0x7e,(select table_name from…...
微信小程序阻止用户返回上一页,并弹窗给用户确定是否要返回上一页
在onload中调用微信的enableAlertBeforeUnload方法,在首次进入会自动监听当前的页面,在返回的时候会自动弹出弹窗阻止用户返回上一页,点击确定则返回上一页,取消则停留在当前页 onLoad: function(){wx.enableAlertBeforeUnload({…...
LangChain+ChatGLM整合LLaMa模型(二)
开源大模型语言LLaMa LLaMa模型GitHub地址添加LLaMa模型配置启用LLaMa模型 LangChainChatGLM大模型应用落地实践(一) LLaMa模型GitHub地址 git lfs clone https://huggingface.co/huggyllama/llama-7b添加LLaMa模型配置 在Langchain-ChatGLM/configs/m…...
【NLP】训练chatglm2的评价指标BLEU,ROUGE
当进行一定程度的微调后,要评价模型输出的语句的准确性。由于衡量的对象是一个个的自然语言文本,所以通常会选择自然语言处理领域的相关评价指标。这些指标原先都是用来度量机器翻译结果质量的,并且被证明可以很好的反映待评测语句的准确性&a…...
java+springboot+mysql员工工资管理系统
项目介绍: 使用javaspringbootmysql开发的员工工资管理系统,系统包含超级管理员,系统管理员、员工角色,功能如下: 超级管理员:管理员管理;部门管理;员工管理;奖惩管理&…...
FL Studio Producer Edition 21 v21.0.3 Build 3517 Windows/mac官方中文版
FL Studio Producer Edition 21 v21.0.3 Build 3517 Windows FL Studio Producer Edition 21 v21.0.3 Build 3517 Windows/mac官方中文版是一个完整的软件音乐制作环境或数字音频工作站(DAW)。它代表了 25 多年的创新发展,将您创作、编曲、录…...
探索Python数据容器之乐趣:列表与元组的奇妙旅程!
文章目录 零 数据容器入门一 数据容器:list(列表)1.1 列表的定义1.2 列表的下表索引1.3 列表的常用操作1.3.1 列表的查询功能1.3.2 列表的修改功能1.3.3 列表常用方法总结 1.4 补充:append与extend对比1.5 list(列表)的遍历1.6 补…...
Python自动化实战之使用Pytest进行API测试详解
概要 每次手动测试API都需要重复输入相同的数据,而且还需要跑多个测试用例,十分繁琐和无聊。那么,有没有一种方法可以让你更高效地测试API呢?Pytest自动化测试!今天,小编将向你介绍如何使用Pytest进行API自…...
TCP的三次握手以及四次断开
TCP的三次握手和四次断开,就是TCP通信建立连接以及断开的过程 目录 【1】TCP的三次握手过程 ---- TCP建立连接的过程 【2】TCP的四次挥手 ---- TCP会话的断开 注意: 【1】TCP的三次握手过程 ---- TCP建立连接的过程 三次握手的过程:…...
目标检测YOLO实战应用案例100讲-基于视觉与激光雷达信息融合的智能车辆目标检测研究
目录 前言 传感器选型及同步 2.1 各传感器工作原理及性能对比 2.1.1 视觉传感器...
Day 22 C++ STL常用容器——string容器
string容器 概念本质string和char 区别:特点string构造函数构造函数原型 string赋值操作赋值的函数原型示例 string字符串拼接函数原型:示例 string查找和替换函数原型示例 string字符串比较比较方式 字符串比较是按字符的ASCII码进行对比函数原型示例 s…...
黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...
TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)
UniApp 集成腾讯云 IM 富媒体消息全攻略(地理位置/文件) 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型,核心实现方式: 标准消息类型:直接使用 SDK 内置类型(文件、图片等)自…...
Python竞赛环境搭建全攻略
Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型(算法、数据分析、机器学习等)不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...
