当前位置: 首页 > 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

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 提示符变得非常实用和时尚的例子 ↩︎

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • vue+el-table 可输入表格使用上下键进行input框切换
  • 【C语言】结构体超详细全讲解 (代码+万字文字+画图讲解)
  • Linux 大文件和大量小文件的复制策略
  • 常见SQL整理
  • SprinBoot+Vue药房管理系统的设计与实现
  • 存储型XSS漏洞
  • Linux系统flatpak的简单设置
  • 牛客周赛 Round 58(上)
  • 文心快码前端工程师观点分享:如何保证在企业内落地?
  • 【数学建模】2024数学建模国赛经验分享
  • 无线会议解决方案
  • 石头科技闪耀IFA百年展:斩获多项大奖,全球知名媒体一致好评
  • 10个C++绘图案例
  • 【大模型专栏—入门篇】CUDA入门与AutoDL“炼丹”
  • 34465A-61/2 数字万用表(六位半)
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • interface和setter,getter
  • java多线程
  • jquery cookie
  • js ES6 求数组的交集,并集,还有差集
  • JS 面试题总结
  • php面试题 汇集2
  • Sublime Text 2/3 绑定Eclipse快捷键
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 今年的LC3大会没了?
  • 前端工程化(Gulp、Webpack)-webpack
  • 深度学习在携程攻略社区的应用
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 小程序01:wepy框架整合iview webapp UI
  • 再次简单明了总结flex布局,一看就懂...
  • Spring Batch JSON 支持
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​比特币大跌的 2 个原因
  • ‌前端列表展示1000条大量数据时,后端通常需要进行一定的处理。‌
  • #Datawhale AI夏令营第4期#AIGC文生图方向复盘
  • $ git push -u origin master 推送到远程库出错
  • (3)(3.5) 遥测无线电区域条例
  • (CPU/GPU)粒子继承贴图颜色发射
  • (javaweb)Http协议
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (补充):java各种进制、原码、反码、补码和文本、图像、音频在计算机中的存储方式
  • (接口自动化)Python3操作MySQL数据库
  • (每日一问)基础知识:堆与栈的区别
  • (数据大屏)(Hadoop)基于SSM框架的学院校友管理系统的设计与实现+文档
  • (四)Linux Shell编程——输入输出重定向
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)shell调试方法
  • (转载)hibernate缓存
  • .chm格式文件如何阅读
  • .net 发送邮件
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .NET微信公众号开发-2.0创建自定义菜单
  • :如何用SQL脚本保存存储过程返回的结果集
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • @transaction 提交事务_【读源码】剖析TCCTransaction事务提交实现细节