当前位置: 首页 > news >正文

Wni11 下 WSL 安装 CentOS

Wni11 下 WSL 安装 CentOS

  • 方法一、安装包安装
    • 下载包安装
    • 安装
    • 打开 CentOS
      • 1. 从 Windows 终端 打开
      • 2. 从 PowerShell 打开
  • 方法二、导入 CentOS 的 tar 文件进行安装
    • 0. 查看版本(可选)
    • 1. 导出 Docker 容器到 tar 文件
    • 2. 将 tar 文件导入 WSL
      • 2.1. 导入 tar
      • 2.2. 改名(重导)
      • 2.3. 备份还原
      • 2.4. 修改默认系统
  • 三、安装完成
    • 1. 开启 systemctl
    • 2. 修改默认主机名
    • 3. 修复命令行高亮丢失的问题
    • 4. 设置阿里云的 CentOS 国内源
      • 先备份
      • 再修改源
      • 更新走一波
      • 如果没搞定
  • WSL 其他常用命令
  • 压缩动态扩展虚拟硬盘 (VHD) 文件的物理大小
  • 参考资料

方法一、安装包安装

下载包安装

https://github.com/mishamosher/CentOS-WSL
https://wsldl-pg.github.io/docs/Using-wsldl/#distros
https://github.com/wsldl-pg/CentWSL
在这里插入图片描述

安装

解压后运行 CentOS7.exe 即可
在这里插入图片描述

打开 CentOS

1. 从 Windows 终端 打开

安装 Windows 终端
在这里插入图片描述

2. 从 PowerShell 打开

在这里插入图片描述

方法二、导入 CentOS 的 tar 文件进行安装

在 docker 中运行一个 CentOS 容器,用 docker exprot 命令导出为 tar 文件。

0. 查看版本(可选)

先查看一下 CentOS 版本,很好是 8.x 前面安装包装的是 7.x 这回装个 8.x

ocker run -it centos /bin/bash                                                                          
[root@dca578a4bc76 /]# cat /etc/centos-release                                                                          
CentOS Linux release 8.4.2105    

确认版本没问题后,我们按下 Ctrl + P,然后紧接着按下 Ctrl + Q 这样退出 CentOS,但保持容器不终止。用 docker ps 查看一下容器还在:

C:\Users\jerry>docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS         PORTS     NAMES
dca578a4bc76   centos    "/bin/bash"   4 minutes ago   Up 4 minutes             wizardly_hypatia

1. 导出 Docker 容器到 tar 文件

  1. 我先创建个目录用来存导出文件 D:/OS/CentOS8/
  2. 执行导出命令,格式:docker export 容器名 > 导出文件.tar
docker export wizardly_hypatia > D:/OS/CentOS8/centos8.4.2105.tar

在这里插入图片描述
3. 容器利用完了,可以抛弃它了

docker stop wizardly_hypatia
docker rm wizardly_hypatia

2. 将 tar 文件导入 WSL

2.1. 导入 tar

执行命令格式:wsl --import <发行版名称> <安装目录> <导入文件.tar>
导入成功会在安装目录下生成一个虚拟磁盘镜像文件,比如:ext4.vhdx

wsl --import CentOS8.4.2105 D:\OS\CentOS8 D:\OS\CentOS8\centos8.4.2105.tar

导入完成用 wsl -l -v 查看一下:多了一个 CentOS8.4.2105

C:\Users\jerry>wsl -l -vNAME              STATE           VERSION
* docker-desktop    Running         2CentOS8.4.2105    Stopped         2CentOS7           Stopped         2Debian            Stopped         2

2.2. 改名(重导)

这名称太不合群了,我后悔了,还是改改吧,先注销(注销成功会清除安装目录下的 ext4.vhdx),重新导。

wsl --unregister CentOS8.4.2105
wsl --import CentOS8 D:\OS\CentOS8 D:\OS\CentOS8\centos8.4.2105.tar

重新导入效果

C:\Users\jerry>wsl -l -vNAME              STATE           VERSION
* docker-desktop    Stopped         2CentOS8           Stopped         2CentOS7           Stopped         2Debian            Stopped         2

2.3. 备份还原

wsl --exportwsl --import 配合也可以用来给系统做备份

# ------ 备份 ------
wsl --export centos8 d:\OS\centos8\bak_001.tar# ------ 还原 ------
# 卸载
wsl --unregister centos8 
# 导入
wsl --import CentOS8 "D:\OS\centos8" "D:\OS\CentOS8\bak20240908.tar"

2.4. 修改默认系统

方便以后 WIN + R 运行 WSL 直接进 CentOS8

wsl -d centos8
C:\Users\jerry>wsl -l -vNAME              STATE           VERSIONCentOS7           Running         2
* CentOS8           Stopped         2Debian            Stopped         2docker-desktop    Stopped         2

操作完后碰到要我更新,又装了一下这个 适用于 x64 计算机的 WSL2 Linux 内核更新包

三、安装完成

1. 开启 systemctl

systemctl 默认没开启,配置一下,重启就可以了1
执行命令:

echo -e "[boot]\nsystemd=true" | sudo tee -a /etc/wsl.conf

它的作用是将如下信息写入 /etc/wsl.conf

[boot]
systemd=true

注意:接下来要先用 wsl -t centos7 停掉 centos7,再启动 centos7 才生效:

# 查看一下版本信息
systemctl --version
systemd 219
+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN

2. 修改默认主机名

注意:这里按原来 centos 修改主机名的方法是没用的。
登录进来可以看到,默认主机名用的就是宿主系统 Win11 的主机名。看着容易精神分裂,我还是改改:
还是改 /etc/wsl.conf 2,然后重启生效。

[boot]
systemd=true
[user]
default=jerry
[network]
hostname=centos7
generateHosts=true

重启后进来,主机名变了:

[jerry@centos7 ~]$ 

3. 修复命令行高亮丢失的问题

  1. ~/.bashrc 末尾追加一句(网上找到),喜欢折腾的朋友可以自己研究3

    export PS1="\[\e[37;40m\][\[\e[32;40m\]\u\[\e[37;40m\]@\h \[\e[36;40m\]\w\[\e[0m\]]\\$ "
    

    执行 source ~/.bashrc 生效。
    在这里插入图片描述

  2. 当然哪果你装了多个 Linux 子系统,也可以去别的版本找参考。(打开我的电脑,看左下角)
    在这里插入图片描述

4. 设置阿里云的 CentOS 国内源

先备份

cp -rv /etc/yum.repos.d /etc/yum.repos.d_bak

再修改源

sudo sed -i.bak 's|^mirrorlist=|#mirrorlist=|g' /etc/yum.repos.d/CentOS-*.repo
sudo sed -i.bak 's|^#baseurl=http://mirror.centos.org|baseurl=http://mirrors.aliyun.com|g' /etc/yum.repos.d/CentOS-*.repo
  1. sed:这是一个文本处理工具,常用于在 Linux 和 Unix 系统中执行简单的文本模式替换。
  2. -i:这个选项告诉 sed 在原地修改文件,而不是将结果输出到标准输出(即终端)。
    加上 .bak 表示修改前做备份。
  3. 's|目标|结果|g':这是 sed 的替换命令语法。
    s 表示替换命令。
    | 作为分隔符,用于分隔命令的不同部分。
    g:全局标志,表示在同一行中进行所有的替换,而不仅仅是第一次匹配。
    将所有以 mirrorlist 替换为 #mirrorlist,也就是在开头加#注释掉。
    将所有包含 #baseurl=http://mirror.centos.org 的行修改为阿里云的 CentOS 镜像地址
  4. /etc/yum.repos.d/CentOS-*.repo:此路径匹配 /etc/yum.repos.d/ 目录下所有以 CentOS- 开头 .repo 结尾的文件。

更新走一波

yum  update

装一下 vim

yum -y install vim

如果没搞定

参考:CentOS 7- 配置阿里镜像源 4
由于我之前已经装过,这里把 gpgkey 改成了本地的gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 能省点网速。

WSL 其他常用命令

以我们前面安装的 CentOS8 为例

  • wls -t CentOS8 停止子系统运行

  • wsl -v 查看 WSL 的版本信息

    C:\Users\jerry>wsl -v
    WSL 版本: 2.2.4.0
    内核版本: 5.15.153.1-2
    WSLg 版本: 1.0.61
    MSRDC 版本: 1.2.5326
    Direct3D 版本: 1.611.1-81528511
    DXCore 版本: 10.0.26091.1-240325-1447.ge-release
    Windows 版本: 10.0.22000.1936
    
  • 如果 root 忘记密码可以直接 --user root 以 root 身份登录,再 passwd root 改密码

    wsl -u root -d centos8
    

压缩动态扩展虚拟硬盘 (VHD) 文件的物理大小

compact vdisk
减小动态扩展虚拟硬盘 (VHD) 文件的物理大小。 此参数非常有用,因为动态扩展 VHD 的大小会随着文件的添加而增加,但不会随着文件的删除而自动减小。

  1. 先把子系统都停掉
    wsl --shutdown
    
  2. 打开 diskpart
    diskpart
    
  3. 执行
    select vdisk file=D:\OS\CentOS7\ext4.vhdx
    attach vdisk readonly
    compact vdisk
    detach vdisk
    
    在这里插入图片描述

参考资料

适用于 Linux 的 Windows 子系统文档
导入要与 WSL 一起使用的任何 Linux 发行版


  1. 使用 systemd 通过 WSL 管理 Linux 服务 ↩︎

  2. WSL 中的高级设置配置 ↩︎

  3. Bash Shell PS1:10 个让 Linux 提示符变得非常实用和时尚的例子 ↩︎

  4. CentOS 7- 配置阿里镜像源 ↩︎

相关文章:

Wni11 下 WSL 安装 CentOS

Wni11 下 WSL 安装 CentOS 方法一、安装包安装下载包安装安装打开 CentOS1. 从 Windows 终端 打开2. 从 PowerShell 打开 方法二、导入 CentOS 的 tar 文件进行安装0. 查看版本&#xff08;可选&#xff09;1. 导出 Docker 容器到 tar 文件2. 将 tar 文件导入 WSL2.1. 导入 tar…...

ROADM(可重构光分插复用器)-介绍

1. 引用 https://zhuanlan.zhihu.com/p/163369296 https://zhuanlan.zhihu.com/p/521352954 https://zhuanlan.zhihu.com/p/91103069 https://zhuanlan.zhihu.com/p/50610236 术语&#xff1a; 英文缩写描述灰光模块彩光模块CWDM&#xff1a;Coarse Wave-Length Division …...

HarmonyOS开发之路由跳转

文章目录 一、路由跳转模式与实例1.router.pushUrl2.router.replaceUrl3.router.back 一、路由跳转模式与实例 跳转模式 有点类似于vue的路由跳转 router.pushUrl 保留路由栈&#xff0c;保留当前的页面&#xff1b;router.replaceUrl 销毁当前页面&#xff0c;跳转一个新的页…...

怎么使用ai 免费生成ppt?这4个工具可以帮忙

随之AI工具的流行&#xff0c;网络上也涌现了一批 AIPPT 工具&#xff0c;可以在办公上帮助我们节省很多制作PPT的时间。通常它们的操作也比较简单&#xff0c;所以适合很多人使用。为了可以帮助大家提高办公效率&#xff0c;我在这里跟大家分享4款可以免费使用的AIPPT制作工具…...

Android主副屏显示-Android13

Android主副屏显示-Android13 1、DisplayDeviceInfo屏幕信息2、每个屏幕对应LogicalDisplay2.1 LogicalDisplay添加对应DisplayContent2.2 configureDisplayLocked刷新 DisplayManagerService启动及主屏添加-Android13 1、DisplayDeviceInfo屏幕信息 DisplayManagerService启动…...

什么是 SMB 服务器以及它如何工作?

在本文中&#xff0c;您将了解 SMB 服务器以及它们如何促进网络文件共享。 我们将介绍它们的基本功能、主要特性以及如何安全地设置它们。无论您是新手还是需要复习&#xff0c;本指南都将帮助您更好地了解 SMB 服务器。 什么是 SMB 服务器&#xff1f; SMB&#xff08;服务器…...

【python计算机视觉编程——10.OpenCV】

python计算机视觉编程——10.OpenCV 10.OpenCV10.2 OpenCV基础知识10.2.1 读取和写入图像10.2.2 颜色空间10.2.3 显示图像及结果 10.3 处理视频10.3.1 视频输入10.3.2 将视频读取到NumPy数组中 10.4 跟踪10.4.1 光流10.4.2 Lucas-Kanade算法使用跟踪器使用发生器 10.5 更多示例…...

医学数据分析实训 项目二 数据预处理预备知识(数据标准化处理,数据离差标准化处理,数据二值化处理,独热编码处理,数据PCA降维处理)

文章目录 数据预处理预备知识任务一 数据标准化处理1. 数据准备2. 数据标准化 任务二 数据离差标准化处理任务三 数据二值化处理任务五 独热编码处理对数据进行“离散化处理”&#xff08;装箱&#xff09;将已经装箱的数据进行OneHotEncoder独热编码 任务六 数据PCA降维处理1.…...

MySQL查询执行(四):查一行也很慢

假设存在表t&#xff0c;这个表有两个字段id和c&#xff0c;并且我在里面插入了10万行记录。 -- 创建表t CREATE TABLE t (id int(11) NOT NULL,c int(11) DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB;-- 通过存储过程向t写入10w行数据 delimiter ;; create procedure idat…...

【Obsidian】当笔记接入AI,Copilot插件推荐

当笔记接入AI&#xff0c;Copilot插件推荐 自己的知识库笔记如果增加AI功能会怎样&#xff1f;AI的回答完全基于你自己的知识库余料&#xff0c;是不是很有趣。在插件库中有Copilot插件这款插件&#xff0c;可以实现这个梦想。 一、什么是Copilot&#xff1f; 我们知道githu…...

Spring Cloud集成Gateaway

Spring Cloud Gateway 是一个基于 Spring 生态的网关框架&#xff0c;用于构建微服务架构中的API网关。它可以对请求进行路由、过滤、限流等操作&#xff0c;是Spring Cloud微服务体系中常用的组件之一。下面介绍 Spring Cloud Gateway 的核心概念、应用场景以及简单的示例。 …...

如何准备技术面试?

大家好&#xff0c;我是老三&#xff0c;好久没更新了&#xff0c;翻出之前的一篇旧稿&#xff0c;是一篇总纲性质的文章——如何准备一场技术面试。这篇文章原本的开头是写给金三银四的&#xff0c;转眼就“金九银十”了&#xff0c;每一年都是最差的一年&#xff0c;又是未来…...

Kafka原理剖析之「Topic创建」

一、前言 Kafka提供了高性能的读写&#xff0c;而这些读写操作均是操作在Topic上的&#xff0c;Topic的创建就尤为关键&#xff0c;其中涉及分区分配策略、状态流转等&#xff0c;而Topic的新建语句非常简单 bash kafka-topics.sh \ --bootstrap-server localhost:9092 \ // …...

Java 高级学习路线概要~

前言&#xff1a;恭喜你已经掌握了 Java 的基础知识&#xff01;现在&#xff0c;让我们踏上 Java 高级学习之旅&#xff0c;探索更强大的编程技巧和技术。学习前记得不要忘了巩固和加强基础的学习哦&#xff0c;高级学习也是建立在基础的学习之上。 1. 集合框架进阶 Map 接口…...

浏览器插件快速开启/关闭IDM接管下载

假设你已经为浏览器安装了IDM扩展&#xff0c;那么按下图的点击顺序&#xff0c;可以快速开启或关闭IDM的下载接管&#xff0c;而不必在IDM软件的设置->选项中&#xff0c;临时作调整。...

初识c++:入门基础

打字不易&#xff0c;留个赞再走吧~~ 目录 一.第一个c程序二.命名空间 namespace三.C输⼊&输出四.缺省参数 C兼容C语⾔绝⼤多数的语法&#xff0c;所以C语⾔实现的hello world依旧可以运⾏&#xff0c;C中需要把定义⽂件 代码后缀改为.cpp 一.第一个c程序 做好准备我们来写…...

Java Exception 异常相关总结

1.简介 在Java中&#xff0c;当代码运行有问题时会抛出异常&#xff0c;主要分为两类&#xff1a; 1.可以通过try...catch来捕获解决的&#xff0c;不影响后续执行的RuntimeException。 2.不可以通过代码解决的Exception。 为了提高代码的健壮性&#xff0c;我们会选择去捕…...

HighCharts图表自动化简介

什么是分析数据? 在任何应用程序中捕获并以图形或图表形式显示的分析数据是任何产品或系统的关键部分,因为它提供了对实时数据的洞察。 验证此类分析数据非常重要,因为不准确的数据可能会在报告中产生问题,并可能影响应用程序/系统的其他相关领域。 什么是HighChart? …...

使用LDAP登录GitLab

使用LDAP登录GitLab gitlab.rb 配置如下 gitlab_rails[ldap_enabled] true #gitlab_rails[prevent_ldap_sign_in] false###! **remember to close this block with EOS below** gitlab_rails[ldap_servers] YAML.load <<-EOSmain:label: LDAPhost: 172.16.10.180port:…...

【2024】前端学习笔记5-表单标签使用

表单是网页提供的一种交互式操作手段,主要用于采集用户输入的信息。 学习笔记 1.表单框架:form标签1.1.action属性:目标指向1.2.method属性:提交方式1.3.id属性:唯一标识1.4.placeholder属性:提示文字2.input标签2.1.text类型:基本文本输入2.2.password类型:密码输入2.…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...