news 2026/10/3 9:16:46

VMware创建CentOS虚拟机:从安装到配置的完整实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
VMware创建CentOS虚拟机:从安装到配置的完整实战指南

VMware里创建CentOS虚拟机,这个操作我这些年做了太多次了,从大学时装的CentOS 5到现在的CentOS Stream,中间踩过不少坑。今天就把整套流程完整捋一遍,从VMware Workstation的下载安装、CentOS镜像的选型,到虚拟机创建、系统安装、VMware Tools配置,再到后期扩容、备份、迁移和常见问题排查,让刚接触的人照着能装出一台正常使用的CentOS虚拟机,也让老手能查漏补缺。

1. 准备工作:VMware Workstation与CentOS镜像的选型

1.1 VMware Workstation Pro 17:下载安装与两个坑

先解决宿主机的阵地。VMware Workstation Pro 目前是17.x版本,个人使用已经免费,这是VMware归到Broadcom之后放开的政策,在Broadcom官方下载页面注册一个账号,选“Personal Use”个人使用授权,就能拿到Windows版安装包。网站前后换过几版,入口确实不算好找,但别去第三方站点下那种打包过的东西,容易带私货,账号密码、浏览器设置都可能被改,这点要切记。

安装本身没什么特殊选项,一路Next就行,安装包大概几百MB,下个几分钟。真正要花心思的是装完之后的环境检查,有两点必须在装之前或者刚装完时确认,不然新建虚拟机大概率要返工。

第一,Windows得开启硬件虚拟化。判断方法很简单:打开任务管理器,性能页,看“虚拟化”是不是“已启用”。如果显示未启用,进主板BIOS/UEFI里找Intel VT-x或AMD-V开关,不同主板牌子位置不一样,但一般都在CPU或高级设置下面。没开这个,VMware装64位的CentOS十有八九会出问题,而且报错让人摸不着头脑,最常见的就是“此主机支持Intel VT-x,但Intel VT-x处于禁用状态”。

第二,如果你电脑上开了Hyper-V、Windows虚拟机监控程序平台,或者Windows安全中心的“内核隔离/内存完整性”,VMware可能出现兼容性报错。两者其实可以共存,前提是开启Windows的“Hypervisor Platform”功能,但我个人的习惯是直接关掉Hyper-V,VMware跑起来最干净,也不需要额外的兼容层。这个取舍看实际需要,如果你平时还要用WSL2或者Docker Desktop,那保留Hyper-V就得走兼容路线。

装完打开VMware Workstation Pro,新建虚拟机之前,还有一个小建议:先把“编辑→首选项→更新→启动时检查更新”关掉,不然每次打开都弹更新提示,演示或上课的时候很尴尬,后台的更新检查也会时不时占一点CPU和网络资源。这个选项虽然无关紧要,但关掉之后整个软件用起来清爽不少。

1.2 CentOS版本怎么选:别盲目追新也别死守老版本

镜像选型是很多人会忽视的一步。CentOS家族目前常见的是CentOS 7.9(最后的7系列小版本2009)、CentOS Stream 8/9/10。CentOS 7已经结束维护,官方源也基本停止更新,如果你只是为了学习或临时搭建环境,建议直接CentOS Stream 9或10,属于滚动更新版,内核和软件包比老版本新不少,用来练手不会遇到装个软件都要找旧源的问题。

也有些场景确实必须用CentOS 7,比如公司老项目还在跑,或者某个软件只支持RHEL 7系。那就选7.9 2009,但注意:装完之后必须先处理yum源,因为7的官方源已经归档到vault,直接用原来的源会连不上,这个问题在后面换源部分我会专门说。

镜像类型上,主要用Minimal和DVD两种:

镜像类型大小适用场景
Minimal1.6GB左右服务器、无图形界面需求、喜欢自己装组件
DVD3.8GB~9GB需要图形界面、离线安装包较多
Everything8GB以上全量离线仓库,一般用不上

新手如果怕命令行不熟,可以先选DVD装个带桌面的环境,把基础摸熟了再回头折腾Minimal。老手或者目标是跑服务的,Minimal起步最干净,后面缺什么装什么,也好排查依赖问题。

1.3 镜像下载与校验:别把校验跳过

下载ISO我有两个习惯:一是优先去国内高校或云厂商镜像站,速度比官方快得多,比如阿里云镜像和清华TUNA;二是下载完必校验哈希值。这个校验步骤很多教程会跳过去,但我在实际维护中遇到过ISO损坏导致安装到一半报错的案例,排查了大半天最后发现是镜像下载不完整,纯浪费时间。

Windows下校验SHA256很简单,在CMD里执行:

certutil -hashfile CentOS-Stream-9-latest-x86_64-dvd1.iso SHA256

Linux下用:

sha256sum CentOS-Stream-9-latest-x86_64-dvd1.iso

然后把输出的那串哈希值和镜像站提供的SHA256SUMS文件对比,一致再用。这一步十几秒的事,值得养成习惯。跳过校验的代价有时候会很惨,我有一次装CentOS 7在“软件包安装”阶段反复报错,重试了好几轮都没用,最后重新下载镜像一次解决,白白耗掉一个下午。

2. 创建虚拟机的完整流程与参数设计

2.1 新建虚拟机:这几步设置别乱选

打开VMware Workstation Pro,文件→新建虚拟机,选“自定义(高级)”比“典型”更实用,因为可以一步到位控制硬件和固件类型。到“安装程序光盘映像文件”那一步,先不急着选ISO,选“稍后安装操作系统”,这样虚拟机创建完成后还能随时换镜像,配置也更灵活。这个选择影响不算大,但灵活性差很多,后面想换版本就是几秒钟的事。

客户机操作系统这里一定要选Linux,版本选CentOS 7 64位或CentOS 8 64位,和下载镜像的大版本对应。版本选得不对,VMware虽然也能启动,但一些自动适配逻辑会走偏,比如默认固件和SCSI控制器类型,容易出现系统起不来或者磁盘认不到的情况。这种问题我在给别人排查时见过,新建虚拟机时改一个下拉框就能解决,属于典型的低级但隐蔽的错误。

名称和位置建议单独建一个目录,比如D:\VMs\CentOS-Stream-9,别放到系统盘用户目录下,虚拟机磁盘文件动辄几十GB,C盘塞满之后整个电脑都会变卡。这个目录名会显示在VMware的库面板里,起得规范一点,比如“CentOS-Stream-9-dev”,后面同时维护多台虚拟机的时候会非常省心。我自己的目录命名习惯是“系统名-版本-用途”,时间长了也不会看混。

2.2 CPU、内存、磁盘:参数怎么给才合理

虚拟硬件配置没有绝对标准,但有一个安全区间可以参考。处理器:2核是最低推荐,跑编译或者装桌面环境可以给4核,但别贪心,给到物理核心数的一半以上,反而会因为CPU调度开销导致整体变慢,更何况拖慢宿主机对谁都没好处。

内存:CentOS Minimal建议至少2GB,带GNOME桌面的至少4GB,开发机可以给到8GB。宿主机内存自己得留够,否则宿主机卡顿不说,虚拟机里的服务也会频繁触发swap,磁盘IO直接飙升。我见过有人把16G内存全塞给虚拟机,宿主机卡到鼠标都飘,虚拟机里的编译也没快多少。

磁盘:20GB是最小可用量,但装完系统加常用软件很容易就满了,我自己的习惯是Minimal给40GB、带桌面版给60GB。磁盘类型保持默认的SCSI或SATA就行,NVMe性能好一些,但老内核比如CentOS 7早期版本对NVMe支持不完善,装的时候可能找不到盘,没必要冒险。

注意:两个磁盘相关的选项要留心。“立即分配所有磁盘空间”别勾,虚拟磁盘本身是稀疏文件,用多少占多少,一旦预分配,几十GB空间瞬间没掉;“将虚拟磁盘存储为单个文件”保留,性能略好也便于迁移,拆成2GB小文件只有上传云盘时才需要。

2.3 系统安装全程:分区、软件选择与网络

启动虚拟机之后,如果没自动进入安装界面,手动挂载一下ISO:虚拟机→设置→CD/DVD→使用ISO映像文件。开机后,第一个界面通常有“Test this media & install”和“Install CentOS”两个选项,第一次装可以测一下介质,装过多次就直接选Install,没必要每次等完整校验,这一步能省两三分钟。

进入安装信息摘要页,有几个地方必须处理。日期时间选亚洲/上海,打开网络时间同步,不设时区的后果是日志时间全错,排查问题时各种对不上,非常痛苦。软件选择:Minimal镜像默认就是最小安装,如果你用DVD镜像是可以选带GNOME桌面的。我自己建议先用Minimal走一遍,因为后面用虚拟机练Linux的时候,少一个桌面环境就少一层干扰,等你真需要界面,去装也是几分钟的事。

安装目的地:新手直接点“自动配置分区”就好,CentOS安装器默认会按LVM来分,生成一个卷组,后续想扩容可以直接lvextend,不用推倒重来。自动分区有一个小问题是/boot和/的分配比例不一定最合理,但日常使用完全足够。网络和主机名:进入后把网卡开关打开,NAT模式下自动获取IP,主机名改成好认的,比如centos-dev,最后设置root密码并创建一个普通用户。

安装过程通常几分钟到十几分钟,取决于磁盘速度和镜像类型。装完重启前会提示移除安装介质,在虚拟机设置里把CD/DVD改为“使用物理驱动器”或直接断开,不然下次开机又会进入安装引导界面,白白浪费时间。

3. 系统安装后的必备设置与VMware Tools

3.1 换源、装基础工具、确认网络

CentOS 7刚装完,第一件事就是把yum源换掉,因为官方源已经归档,直接用会报连接超时或404。备份原有repo文件,然后用阿里云或清华的vault源替代。CentOS Stream 9则简单很多,原始源基本可用,想加速一样能换成国内镜像地址。

对CentOS 7的vault源,操作命令我贴在下面,注意不同小版本的repo文件名会略有差异,以实际目录为准:

# 先备份 cp -a /etc/yum.repos.d /etc/yum.repos.d.bak sed -i 's|^mirrorlist=|#mirrorlist=|g' /etc/yum.repos.d/CentOS-Base.repo sed -i 's|^#baseurl=http://mirror.centos.org/centos|baseurl=http://mirrors.aliyun.com/centos-vault|g' /etc/yum.repos.d/CentOS-Base.repo yum clean all && yum makecache

执行完看到元数据缓存成功,源就没问题了。这里有个细节容易被忽略:CentOS 7的老repo在EOL之后很多镜像站只留vault目录,如果直接用原有地址解析到的都是空目录或者404,后续装任何包都可能卡在源解析上。

基础工具包我的固定清单是:vim、net-tools、wget、lrzsz、bash-completion、chrony。前几个不用解释,lrzsz提供rz/sz命令,终端里传文件非常方便;chrony做时间同步。装完bash-completion之后建议退出终端重进,否则补全不生效,你以为自己没装成功,其实只是没有重新加载shell配置。网络验证别只盯着ping,更稳的方法是同时测ping -c 3和DNS解析,一个测链路一个测解析,能快速把问题定位到具体层。

3.2 VMware Tools:决定复制粘贴和分辨率的关键

虚拟机装好系统后,有一个动作千万别跳过:安装VMware Tools。没有它,虚拟机的窗口分辨率不会自适应、鼠标进出不流畅、拖拽复制文件更是想都别想。现在的推荐做法是直接装open-vm-tools包,这是VMware官方维护的开源版本,不用挂VMware自带的安装CD,也不用走编译流程。

安装命令只有一条:

yum install -y open-vm-tools

装完后确认服务在跑:

systemctl status vmtoolsd

如果用的是旧方式,比如虚拟机菜单里的“安装VMware Tools”,挂载的虚拟光驱里有一个tar.gz,解压后执行vmware-install.pl,一路默认即可。但说实话,这种编译方式依赖内核头文件等一堆东西,CentOS新版本上还容易因为kernel-devel版本不匹配失败,非特殊情况我真不推荐,直接open-vm-tools省心太多。

VMware Tools就位并重启一次虚拟机后,分辨率会自动跟随窗口大小,拖拽复制一般也就恢复了。如果还是不行,检查虚拟机设置里“选项→客户机隔离”的两个勾是否打开。共享文件夹在“选项”页设置,启动后挂载:

mkdir -p /mnt/hgfs vmhgfs-fuse .host:/ /mnt/hgfs

想开机自动挂载就把挂载行写进/etc/fstab。有两个容易踩的坑:共享路径里别带中文,Windows端目录名有中文时挂载会莫名失败;另外,共享文件夹默认挂载到/mnt/hgfs,如果目录不存在,记得mkdir先建好。

3.3 快照与克隆:装完基础环境后先拍一张

当我完成系统安装、换源、装好常用工具之后,一定会做的动作就是拍快照。VMware菜单里“虚拟机→快照→拍摄快照”,名称写“base”,备注里写一句“CentOS Stream 9 + open-vm-tools 已配置”。快照意味着后面无论你怎么折腾,坏了直接恢复快照,几十秒回到干净状态,这个能力是物理机给不了的。

克隆要单独说。右键虚拟机→管理→克隆,有两种模式:完整克隆和链接克隆。完整克隆会生成一个独立的新虚拟磁盘文件,可分发可移植;链接克隆依赖父磁盘,省空间但父磁盘不能删。我给团队成员分发的模板用完整克隆,自己本地快速开实验机用链接克隆。克隆出来的虚拟机默认带着原系统的hostname、SSH主机密钥和网卡信息,直接开机会冲突,重新设置hostname、清理 /etc/ssh/ssh_host_* 并重启sshd就能解决。

克隆还有一个技巧:先给原虚拟机拍快照,再基于快照做链接克隆,这样克隆出来的机器互不干扰,且不会因为原虚拟机继续写入导致父磁盘被锁定。我日常做实验经常一台父机挂几个克隆体,环境互不污染,用完一键删除,很爽快。

4. 常见问题与排查技巧实录

先给一个速查表,下面再挑几个展开讲:

现象常见原因解决方向
虚拟机开机蓝屏或卡住宿主虚拟化未开启;镜像与固件不匹配开启VT-x/AMD-V;检查BIOS/UEFI模式
复制粘贴失效VMware Tools未安装安装open-vm-tools并重启
拖拽文件没反应客户机隔离选项未开勾选“启用拖拽和复制粘贴”
虚拟机没网NAT服务被禁用启动VMware NAT/DHCP服务
网卡起来但IP获取不到网卡未激活或DHCP异常用nmcli激活,dhclient手动获取
时间越来越不准未启用时间同步安装chrony,或勾选宿主机同步
磁盘空间不足初始分配太小VMware设置扩容+分区逻辑卷扩展

4.1 开机蓝屏或无法引导的排查顺序

虚拟机蓝屏分两种情况,一种是一启动VMware界面就报错,另一种是虚拟机里引导时崩溃。前者多半是宿主机虚拟化没开或者Hyper-V抢占,打开任务管理器确认虚拟化状态,没有就去BIOS开;Windows功能里Hyper-V和虚拟机监控程序平台如果开着,要么关,要么用兼容路线。后者在装CentOS时较少见,但如果出现“Kernel panic”或卡死在某个模块,先查固件类型。

虚拟机设置→选项→高级→固件类型,CentOS 7 某些场景下对UEFI支持并不完美,改成BIOS引导通常能解决。还有一个隐蔽原因:客户机操作系统版本选错了,比如选了CentOS 7 64位但镜像是Stream 9,系统类型自动配置会偏离正常值,新建虚拟机时重新选对版本比瞎排查要快得多。

4.2 复制粘贴、拖拽失效的详细排查

定位顺序就三步:先确认open-vm-tools装没装、vmtoolsd服务在不在跑;再确认客户机隔离的两个勾是否勾上;最后重启虚拟机。三步做完九成能恢复。我自己遇到过一种邪门情况:open-vm-tools装了,服务也跑着,但拖拽就是没反应,最后发现是虚拟机设置里“客户机隔离”的“拖拽”没勾上,勾上重启就恢复了。

如果三步都试过还不行,有个土办法叫共享文件夹兜底。设一个共享目录,Windows和虚拟机各在自己侧访问,虽然没有拖拽直观,但文件至少能来回倒。还要提醒一句:拖拽复制大文件(比如好几个GB的压缩包)极容易卡住或中断,这种场景老老实实走共享文件夹或scp,别贪方便。

4.3 虚拟机无法联网:从宿主机服务到虚拟机内一一排查

NAT模式下,虚拟机通过宿主机上网,宿主机上负责转发的是Windows服务里的VMware NAT Service(vmnet8)。如果你装的是精简版VMware,或者某优化软件把启动服务关了,虚拟机里就怎么都上不了网。在services.msc里确认VMware NAT Service和VMware DHCP Service都处于运行状态,再回到虚拟机内查网卡。

CentOS 7里网卡默认是ens33,先激活再确认IP:

nmcli device status nmcli connection up ens33

如果还是拿不到IP,手动触发一次DHCP:

dhclient ens33

桥接模式单独说一句:虚拟机如果选桥接,宿主机用无线网卡,切Wi-Fi或换热点都会导致虚拟机掉线。桥接适合需要局域网其他设备直接访问虚拟机的场景,日常学习用NAT最省心。

4.4 时间漂移与虚拟机的性能小优化

时间漂移是虚拟机通病,尤其宿主机睡眠唤醒后,虚拟机里的系统时间可能差出几分钟甚至更多,直接影响cron任务和日志排查。解决思路是装chrony:

yum install -y chrony systemctl enable --now chronyd

同时VMware里有一个设置,虚拟机设置→选项→高级→“每次唤醒时同步虚拟机时间”,建议勾上,双保险。如果你观察发现时间仍然不准,优先检查宿主机的电源计划,睡眠频率太高会让所有时间同步方案都打折扣。

性能方面两个点值得说。一是给虚拟机CPU勾上“虚拟化Intel VT-x/EPT或AMD-V/RVI”,在处理器的高级选项里,这个选项对嵌套虚拟化和编译性能都有帮助。二是虚拟磁盘尽量放在固态盘上,机械硬盘跑编译会让你怀疑人生。把整个虚拟机目录放到SSD之后,开机速度和包安装速度差距非常明显,这个提升是硬件层面马上能感知的。

5. 进阶操作:扩容、备份与迁移

5.1 磁盘扩容:从VMware设置到系统内分区扩展

虚拟磁盘空间不够了,扩容的步骤其实不难,但容易错。首先注意:如果虚拟机有快照,VMware不允许直接调整磁盘大小,先删掉旧快照或者恢复后再操作。然后在关机状态下,虚拟机设置→硬盘→磁盘工具→扩展,把容量调大,比如40GB扩到60GB。

开机进CentOS后先确认新空间有没有识别:

lsblk

如果虚拟机是自动配置分区的LVM结构,典型流程是下面这样:

# 用fdisk删除物理卷所在分区sda2并重建(保留原起始扇区) fdisk /dev/sda # 输入 d 删除分区 2,再输入 n 重建分区 2,起始扇区保持默认或沿用原值,类型改成LVM(8e) partprobe /dev/sda pvresize /dev/sda2 lvextend -l +100%FREE /dev/mapper/cl-root xfs_growfs /

这里最容易翻车的两个点:一是fdisk重建分区时起始扇区必须和原来一致,如果删了重建后起始位置偏移,数据就没了,第一次操作时建议把fdisk的p输出截图留底;二是根文件系统如果是xfs,只能用xfs_growfs,如果是ext4则用resize2fs,命令不能混用。动手之前先拍快照,一旦失手恢复成本非常高,这个不是危言耸听。

5.2 Clonezilla备份:比快照更可靠的系统保险

快照依赖VMware的虚拟磁盘文件,如果整个虚拟机目录被误删,或者想换到另一台电脑上,快照就不好使了。Clonezilla是另一套思路:它把分区或整个磁盘打成镜像文件,镜像可以拷到U盘、网盘、其他磁盘,随时恢复。简单理解,快照是给当前虚拟机留后路,Clonezilla是给系统做可携带的备份包。

在VMware里用的步骤不复杂:下载Clonezilla的ISO,虚拟机设置里挂载,开机进入固件菜单选择从CD启动。进入界面后选device-image模式,镜像仓库建议挂一块额外的虚拟磁盘,或者用共享文件夹映射到宿主机目录,不然源盘和目标写在同一个盘上会比较尴尬。备份CentOS时可选savedisk备份整个磁盘,也可以saveparts只备份根分区。实测下来,CentOS的备份和恢复基本半小时内搞定,相当于系统级的保险丝。

5.3 虚拟磁盘转U盘:DiskGenius的玩法与限制

有些场景要把虚拟机里的系统搬到真实设备上,比如做好了一个定制化CentOS环境,想做成U盘启动盘带走。VMware的虚拟磁盘文件vmdk无法直接被物理机识别,DiskGenius这类工具可以把vmdk打开,再克隆到U盘。操作思路:DiskGenius里打开虚拟磁盘文件,然后选择克隆磁盘功能,把虚拟磁盘内容克隆到U盘,注意U盘容量要大于虚拟磁盘的实际使用量。

说实话,这个玩法我试过几次,成功率并不高,主要卡在驱动上:虚拟机里用的是虚拟SCSI控制器,到了物理机上变成SATA或NVMe,内核没有对应驱动就蓝屏。如果只是想快速分发一个可复制的CentOS环境,完整克隆虚拟机或导出OVF模板要靠谱得多。想转U盘物理启动,得提前在内核里集成好目标机器的磁盘驱动,属于高阶定制,新手不建议一上来就折腾这个。

最后分享一点个人习惯:我在虚拟机里每完成一个阶段目标,都会拍一张快照再继续往下走,装软件、改配置、练命令都遵循这个节奏,坏了就回滚,不心疼,这才是虚拟机的正确打开方式。如果你刚接触Linux,建议就从一台CentOS虚拟机开始折腾,它给你充分的试错空间,试错恰恰是学Linux最快的方式。补充一个小技巧:虚拟机里卡死想强制返回宿主机时,按住Ctrl+Alt鼠标就会出来;想全屏显示,按Ctrl+Alt+Enter切换。希望这篇指南能让你少走一些弯路。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/3 9:12:10

openclaw接入飞书保姆级教程:从环境配置到多维表格自动化

最近在项目里想把 openclaw 和飞书打通,折腾了整整两天,前半天全耗在环境上,后半天被回调地址折磨。等到终于跑通,发现这套组合比想象中能做的多得多:群里 机器人直接查数据、定时把多维表格结果推到会话、老板要报表…

作者头像 李华
网站建设 2026/10/3 9:10:44

基于Django+MySQL+Python的大气污染源可视分析系统开发实战

这个题目我盯了好一阵子——基于Django、MySQL、Python的大气污染源可视分析系统,看似是个典型的课程设计/毕设项目,但真做起来,里面的坑比想象中多得多。我本就长期用Python做数据分析和Web应用开发,这类“数据采集存储可视化”的…

作者头像 李华
网站建设 2026/10/3 9:09:15

从零手写协同过滤:Python实现UserCF与ItemCF推荐算法

简介:这份资源面向推荐算法入门与进阶学习者,提供基于Python实现的协同过滤推荐算法参考代码,涵盖基于物品与基于用户两条技术路线,可作为课程设计、大作业、工程实训或毕设项目的起步素材。压缩包共4个文件,以2个py脚…

作者头像 李华
网站建设 2026/10/3 9:09:11

SpringBoot+Vue前后端分离健身俱乐部系统实战全记录

前后端分离健身俱乐部网站系统,从脚手架到上线的完整实战记录 这套系统是我今年独立完成的一个前后端分离项目,技术栈就是标题里那套:SpringBoot Vue MyBatis MySQL。做的是一个健身俱乐部的官网和会员管理后台,包含课程展示、…

作者头像 李华
网站建设 2026/10/3 9:08:17

粗糙集在配电网故障定位中的应用:决策表约简到规则匹配实战

简介:面向配电网故障定位研究者和有一定Matlab基础的读者,该源码包利用粗糙集理论处理故障信息的不确定性与不完备性,帮助快速判别故障可能发生的区域。压缩包共4个文件、约5KB,包含Matlab主程序(.m)、两个…

作者头像 李华
网站建设 2026/10/3 9:08:12

Python爬虫+Flask+ECharts:高校录取分数分析与可视化毕设全流程拆解

简介:一份面向计算机专业毕业设计/课程设计的完整项目资料,聚焦高校历年招生分数数据的采集、清洗、存储与可视化。系统基于Python网络爬虫抓取高校录取分数线,清洗后写入文件系统,借助Flask提供Web查询服务,并用EChar…

作者头像 李华