ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

RHEL 9.2虚拟机安装与初始化配置实战:从VMware到yum源

RHEL 9.2虚拟机安装与初始化配置实战:从VMware到yum源 1. 写在开头为什么又开始折腾RHEL了如果你是个常年跟Linux打交道的人一定对Red Hat Enterprise Linux这个名字不陌生。我最近又重新把RHEL装了一遍起因其实挺简单——手头有个测试环境需要模拟生产服务器的运行场景而生产那边用的就是RHEL 9.2。虽然平时更多用CentOS Stream或者Ubuntu但真要跟生产环境对齐还得老老实实把RHEL装起来。这一装不要紧踩了一堆坑也把很多以前没细想的细节给捋明白了所以干脆记录下来当成一份学习日志。这篇内容适合谁看我觉得有三类人一是刚接触Linux、准备从RHEL入门的初学者二是需要在虚拟机里部署RHEL做测试或学习的开发、运维朋友三是在企业里需要装RHEL但苦于订阅、源配置等问题的人。我会把从镜像获取、虚拟机创建、系统安装到安装后初始化配置的完整流程讲一遍重点放在那些容易踩坑、但文档里又不太会明说的细节上比如VMware设置里的固件类型、安装时的分区选择、装完之后的yum源配置等。标题里那几个热搜词——rhel虚拟机安装教程、rhel 9.2 vmware安装、rhel 6.10配置外网yum——正好也是这次实操中绕不开的几个环节我都会一一展开。先交代一下我的实验环境宿主机是Windows 11虚拟机软件用VMware Workstation 17 Pro镜像用的是RHEL 9.2的DVD ISO。后面提到老版本RHEL 6.10的yum源配置时会单独说明适用场景。整个过程我尽量按实际操作顺序来写但会把容易出问题的点提前标记出来省得你们再走一遍我走过的弯路。2. 镜像获取与环境准备2.1 RHEL镜像到底从哪来很多人第一个问题就是RHEL镜像去哪下这跟Ubuntu直接官网下载不一样Red Hat官方对镜像发放是有门槛的。最正规的方式是去Red Hat官网注册一个账号然后开通Red Hat Developer订阅这个订阅对个人开发者是免费的能让你合法获取ISO镜像和使用yum源算是最适合学习测试的途径。具体路径是访问Red Hat官网注册账号在订阅页面选择Red Hat Enterprise Linux Developer Suite然后进入Red Hat Customer Portal的Downloads页面就能找到对应版本的DVD ISO了。不过说实话官网下载对国内用户不太友好速度慢不说有时候还会中途断掉。所以很多人会选择国内一些网盘或镜像站来获取那些“rhel linux 9.2 百度网盘”之类搜索词的来源也就在这。我自己这次用的ISO就是从公司内网拿到的但如果你要走网盘渠道一定要把校验和SHA256核对一下至少看看文件大小对不对防止拿到被修改过的镜像。至于网速问题也可以用一些下载工具来加速但来源务必可靠这一点我后面会再强调。2.2 宿主机的准备工作和VMware版本选择在开始装虚拟机之前先把宿主机环境理一下。内存建议至少16GB因为RHEL 9.2图形化界面装好之后分配4GB给虚拟机是比较舒服的再加上宿主机本身的占用内存太小会卡到怀疑人生。CPU方面现在的电脑基本都是8核起步给虚拟机分2到4核都行。磁盘剩余空间至少要有50GBRHEL 9.2全量安装大概会占掉20GB左右留出余量给后续的软件和数据。VMware版本我建议用Workstation 15.5以上我这次用17 Pro整体很稳定。虚拟机创建时有个“硬件兼容性”选项默认是当前版本最高的比如17.x如果你不需要把虚拟机迁移到其他版本保持默认就行。有一个细节很多人会忽略创建虚拟机时选择“稍后安装操作系统”而不是“安装程序光盘映像文件”这样可以在设置里调整更多硬件参数后再开始安装。如果直接用ISO文件创建很多选项会被隐藏掉后面想改还得重新编辑设置。3. 虚拟机创建过程中的关键设置3.1 新建虚拟机向导里那些容易踩的坑在VMware里新建虚拟机操作系统类型选择Linux版本选择Red Hat Enterprise Linux 9 64位。这里要注意如果你选成CentOS 9或者Red Hat Enterprise Linux 8 64位虽然也能引导但VMware Tools的兼容性和一些虚拟硬件参数可能会有细微差别最好还是精准匹配。内存和CPU分配上我给了4GB内存和4核处理器。对于RHEL 9.2的图形化安装过程来说2GB内存理论上也能跑但安装界面的响应会明显变慢。如果你只是装个最小化系统2GB够用如果打算带图形界面跑建议至少4GB。网络类型选择NAT模式这样虚拟机可以通过宿主机上网不需要额外配置IP就能访问外网对于需要配置yum源的场景特别重要。磁盘大小我给的是60GB选择“将虚拟磁盘存储为单个文件”性能上比拆分成多个文件略好一点也方便后续做快照或者复制迁移。3.2 固件类型和虚拟化引擎的选择逻辑这是很多人装RHEL时最困惑的地方。VMware创建虚拟机时在“自定义硬件”里会看到“固件类型”选项默认可能是BIOS也可能让你选UEFI。RHEL 9.2对UEFI的支持已经非常成熟但这里要分两种情况如果你打算用VMware自带的引导方式选BIOS是最省事的兼容性最好几乎不会出问题。如果你想模拟现代物理服务器的启动方式或者后续要在这个虚拟机上用Secure Boot那就选UEFI。我自己这次选的是UEFI因为手头有个需求是要验证安全启动相关的配置。但如果你只是单纯想装一个能用的RHEL选BIOS可以少折腾很多。另一个相关的选项是“虚拟化引擎”里的“虚拟化Intel VT-x/EPT或AMD-V/RVI”这个默认勾选就行可以让虚拟机里的嵌套虚拟化功能生效比如之后在RHEL里再跑KVM虚拟机。注意如果在安装过程中出现引导不了、黑屏或者提示找不到启动设备十有八九是固件类型和安装时生成的引导文件不匹配。解决方案是确认当前固件类型或者在安装时手动分区时确保/boot/efi分区UEFI模式已经正确创建。3.3 处理器和内存之外显卡、声卡、USB控制器这些小细节既然是虚拟机硬件都是虚拟的但每个“虚拟设备”都会占用宿主机的资源。显卡方面VMware默认提供一个虚拟显卡内存分配256MB足够了不要给太多因为虚拟机的显存并不能真正提升性能反而白占内存。声卡默认会加如果你的服务器场景根本不需要音频直接移除减少一个设备就少一个潜在的驱动问题。USB控制器建议保留USB 3.1因为后面可能要挂载U盘或者USB设备进去别的用不上就默认。另外CD/DVD驱动器的设置一定要确认创建完成后在虚拟机设置里把“启动时连接”勾上并且选择正确的ISO文件路径。很多人装到一半提示找不到安装介质就是因为光盘没连接。挂载ISO后在虚拟机电源开启时快速按EscBIOS或F2UEFI进入引导菜单选择从CD-ROM启动就能进入安装界面了。4. 系统安装全流程实操4.1 安装引导和初始配置从语言选择到安装概要从ISO引导后RHEL会显示一个欢迎界面让你选择“Install Red Hat Enterprise Linux 9.2”或者“Test this media and install”。如果镜像来源可靠可以直接选第一项省去检测介质的时间。接下来选择语言这里建议选EnglishUnited States这不是装洋气而是因为中文字体在某些安装界面下会显示成方块而且后面在命令行操作时英文环境排错更方便。装完之后随时可以再添加中文语言包所以安装过程用英文最稳妥。进入安装概要页你会看到几个需要配置的模块本地化里的键盘和语言支持软件里的安装源和软件选择系统里的安装目的地、网络和主机名等等。逐个点进去设置。4.2 分区方案LVM的正确打开方式安装目的地这一块很多人图省事直接选“自动配置分区”这当然能装上系统但如果你后续要做LV扩容、快照或者调整文件系统结构自动分区就不够灵活了。我建议选择“自定义”手动做分区布局。RHEL 9.2默认文件系统是XFS分区方案建议这样分区大小类型说明/boot1024MBxfs存放内核和引导文件/boot/efi512MBvfatUEFI模式必须要有/20GB可扩展xfs根分区swap8GBswap交换分区约为内存的2倍/home剩余空间xfs用户数据单独存放这里有个小技巧LVM逻辑卷可以在安装时创建好然后根分区和home分区都放在同一个卷组里。这样以后空间不够了用lvextend就能在线扩容不用重新分区。具体操作就是在“安装目的地”里选择“自定义”然后点“”号创建分区分区类型选“LVM”创建一个卷组比如叫vg_system然后在卷组里创建逻辑卷。另外SWAP分区的大小如果内存是4GB我给的是8GB这个值在服务器场景下可以按比例调整。内存越大swap可以相对缩小因为系统会优先使用物理内存。如果你内存超过16GBswap给16GB或者更小都行关键是别因为没有swap导致内存吃紧时系统直接OOM。4.3 软件选择Server with GUI还是Minimal软件选择这个模块RHEL 9.2提供了一系列预定义环境。我这次选的是“Server with GUI”因为需要图形化界面做后续的桌面操作演示。如果你纯粹做服务器建议选“Minimal Install”少装很多用不到的包系统更干净攻击面也更小。这里有一个经常被忽视的点软件选择决定了很多系统服务的默认配置。比如选了Minimal连vim、wget这些常用命令都没有装完还得自己补选了带GUI的版本又会多出NetworkManager的图形化工具等。我建议实际生产环境用Minimal但学习和测试阶段尤其你是第一次接触RHEL装带GUI的会更友好至少能直接在图形界面上操作网络设置、防火墙这些功能不用一上来就面对纯命令行。4.4 Root密码、用户创建和Kdump设置安装概要我还会顺手做三件事设置root密码、创建普通用户、调整Kdump。root密码设置成强密码长度至少12位包含大小写字母、数字和特殊字符。很多人觉得虚拟机里密码随便设就行但虚拟机同样可能暴露在内部网络中弱密码是对自己不负责任。创建用户时勾选“使此用户成为管理员”这样这个用户就具备sudo权限日常操作就用普通用户登录需要root权限时sudo提权这个习惯一定要养成。Kdump这个服务是用来捕获内核崩溃转储的它会预留一部分内存默认设置会在系统crash时保留内存用于抓取dump对于学习用处不大但可以保留默认值4GB内存的情况下它占用的资源并不多。如果你实在担心内存不够也可以把Kdump关掉后面需要再装。这些都配置完点“Begin Installation”系统开始安装这个过程大概10到15分钟取决于你的磁盘速度和ISO读取速度。安装完成后重启拔掉ISO在VMware里可以设置“启动时连接”取消勾选就进入系统了。5. 安装后的初始化必修课5.1 注册订阅能更新系统的大前提RHEL装完之后的第一件事不是配网络不是装软件而是把订阅搞定。不注册订阅的话默认yum源是空的你想装任何软件都会提示找不到包。RHEL的订阅机制是它跟CentOS最大的区别也是很多初学者最容易卡住的地方。如果你是用Red Hat Developer订阅可以免费注册一个然后在系统里执行subscription-manager register输入账号密码就会把当前系统跟你的账号绑定。注册成功后再执行subscription-manager attach --auto系统会自动匹配可用的订阅并附加。完成后执行dnf update就能正常更新系统了。Developer订阅同样能获得全部软件仓库对于学习场景完全够用。如果没有开发者账号也不想注册那RHEL系统基本上就是“半残废”状态这也是为什么很多人会在标题里搜“rhel配置外网yum”——他们要的就是在没有订阅的情况下让系统能用yum安装软件。这个方案我下面会专门讲但先说明一句这不是Red Hat官方支持的做法仅适用于学习和测试环境生产环境还是要正规订阅。5.2 网络配置用nmcli搞定静态IP装完系统后默认网络是DHCP对于虚拟机来说其实也能用但IP可能会变不方便后续通过SSH连接。我建议设置成静态IP。用命令行工具nmcli几行命令就搞定# 查看当前网络连接名称 nmcli connection show # 修改IP地址、网关和DNS nmcli connection modify ens160 \ ipv4.addresses 192.168.80.100/24 \ ipv4.gateway 192.168.80.2 \ ipv4.dns 192.168.80.2 223.5.5.5 \ ipv4.method manual # 重启网络连接 nmcli connection up ens160如果你的网络是NAT模式网关通常是VMware虚拟网卡8的IP一般是192.168.*.2DNS可以设置成宿主机网关地址也可以直接用公共DNS。有个我踩过的坑改完IP后用ip addr查看地址已经变了但ping外网还是不通。排查了很久发现是路由表的问题原来默认的DHCP路由还在。解决办法是把原来的连接先down再up一次或者直接重启NetworkManager服务。另外RHEL 9.2里ifcfg文件虽然还在但官方推荐用NetworkManager管理网络你在ifcfg文件里手动改配置NetworkManager不一定马上生效用nmcli是最稳妥的方式。5.3 配置外网yum源从RHEL 9到老版本6.10终于到了热搜词里出现频率最高的部分——配置外网yum源。这个问题要分两种情况来说。新版本RHEL 9.x、8.x的源配置有订阅的情况下系统自带的repo文件指定的是Red Hat官方的CDN地址速度在国内不太稳定。这时候可以配置国内镜像源比如阿里云、清华TUNA都提供RHEL的镜像但注意它们只提供基础源而且需要你自行注册订阅后才有完整的BaseOS和AppStream。一个常用的做法是修改/etc/yum.repos.d/redhat.repo文件在里面的baseurl参数替换成镜像地址。但这里有个大前提源的面板验证还是要通过订阅所以如果你没注册就算改了源地址也一样拉不到软件。这也是为什么网上很多教程会教你“绕过”订阅机制去用CentOS源这在学习环境确实可行。老版本RHEL 6.x的特殊处理RHEL 6.10是2018年的版本了Red Hat官方对它的支持早已结束很多老教程里的官方yum源已经失效。但国内依然有很多老服务器在用这个版本所以“rhel 6.10配置外网yum”的需求一直存在。在没有订阅的情况下一个常见方案是配置CentOS 6的vault源。因为RHEL 6和CentOS 6是同一个上游版本RPM包基本兼容可以用CentOS 6的仓库来替代。具体做法备份并替换/etc/yum.repos.d/CentOS-Base.repo内容指向阿里云的vault源大致如下[base] nameCentOS-6.10 - Base baseurlhttp://mirrors.aliyun.com/centos-vault/6.10/os/x86_64/ gpgcheck0 enabled1 [extras] nameCentOS-6.10 - Extras baseurlhttp://mirrors.aliyun.com/centos-vault/6.10/extras/x86_64/ gpgcheck0 enabled1 [updates] nameCentOS-6.10 - Updates baseurlhttp://mirrors.aliyun.com/centos-vault/6.10/updates/x86_64/ gpgcheck0 enabled1注意老版本的yum源现在基本都用centos-vault路径因为CentOS官方已经停止维护CentOS 6的普通镜像所有版本归档到vault里。如果你直接写6.10/os/x86_64/很多源现在已经不提供了。另外因为证书链太老最好是gpgcheck设为0否则会报错。重要提醒用CentOS源替代RHEL源是无奈之举包的兼容性并非100%尤其涉及内核模块、系统库的时候可能出现依赖问题。这个方案只建议在测试环境使用生产环境请务必走正规订阅路线。5.4 防火墙和SELinux处理RHEL默认开启firewalld和SELinux这两个是新手最容易忽略的部分。firewalld会限制外部访问如果你在虚拟机里启动了一个服务比如nginx监听80端口宿主机去访问时发现不通第一反应是防火墙没放行。临时放行命令firewall-cmd --add-port80/tcp --permanent firewall-cmd --reloadSELinux是另一个容易让人摸不着头脑的东西。RHEL 9.2的SELinux默认是Enforcing模式很多从没接触过的朋友因为某个服务起不来就去网上查查到一个建议——setenforce 0。这个命令临时把SELinux关掉确实很多问题就解决了。但我要提醒你生产环境的SELinux一定不要关因为它是RHEL最重要的安全防线之一。如果某个服务起不来优先去看ausearch -m avc -ts recent查一下SELinux的拦截日志找到原因去改上下文或者放行策略而不是一关了之。学习环境为了省事可以临时关但要明确知道自己在干嘛以及为什么可以这么做。6. 常见问题与排查技巧实录6.1 安装和启动阶段的高频问题问题现象可能原因解决办法虚拟机无法引导黑屏固件类型与安装时不匹配确认BIOS/UEFI设置VMware设置里切换后再启动提示找不到安装介质CD/DVD没连接ISO或ISO损坏检查虚拟机设置确保启动时连接ISO校验SHA256图形界面安装非常卡内存或显存分配不足把虚拟机内存提升到4GB以上显存改为256MB安装完成后重启又进入安装界面ISO没有与虚拟机脱离关闭虚拟机在设置中取消ISO连接登录后网络不通NetworkManager没接管连接用nmcli重新配置网络重启NetworkManager服务yum报“Could not resolve host”DNS没配置好检查/etc/resolv.conf配置正确的DNS服务器这些问题里面最烦人的其实是“引导失败”和“网络不通”因为它们可能反复出现而且原因不唯一。比如网络不通可能是DHCP没拿到IP也可能是NAT网卡的网段不对还可能是NetworkManager服务本身没起。排查顺序建议是先ip addr看有没有IP再ping 网关再ping 外网IP最后ping 域名逐层定位。6.2 yum源配置完成后还报错的排查思路很多人在配置好yum源后执行yum update还是报“Cannot retrieve repository metadata”之类的错。这里我总结了三步排查法第一步检查repo文件语法。执行yum repolist看看能不能识别到你配置的仓库如果提示[Errno 14] curl#6 - Could not resolve host说明Mirror地址写错了或者网络不通。注意baseurl里的路径必须精确到repodata的上一级目录比如仓库的repodata在http://xxx/6.10/os/x86_64/repodata/那baseurl就要写到http://xxx/6.10/os/x86_64/。第二步检查源地址是否真的能访问。用curl去请求baseurl对应的repodata/repomd.xml文件比如curl http://mirrors.aliyun.com/centos-vault/6.10/os/x86_64/repodata/repomd.xml如果返回200说明地址没问题。如果返回404说明路径不对或者这个版本不在该镜像里。第三步检查时间。老版本最常见的问题是系统时间不对导致SSL证书验证失败。RHEL 6的CA证书和现在的TLS版本已经存在兼容性问题。如果你用的是https的镜像源经常会报证书过期或验证失败解决方法是改用http协议或者yum --nogpgcheck update。对于老系统我这里直接提醒证书相关的报错十有八九是时间不对先date看看时间不对就ntpdate校准一下。6.3 我装完RHEL后必做的五个加固动作作为一个习惯每次装完RHEL之后我还会额外做几件事虽然不一定每次都用得着但心里踏实更新系统dnf update把内核和基础包全部升到最新尤其刚装完系统补丁往往一大堆。配置SSH密钥登录用ssh-keygen生成密钥把公钥放到authorized_keys里关闭密码登录生产环境强烈建议。设置主机名hostnamectl set-hostname rhel9-test不设置的话主机名会是localhost日志和监控里全是一堆localhost很难区分。安装常用工具dnf install vim wget net-tools lrzsz unzip tar别看这些不起眼没有的时候你会抓狂。做一次虚拟机快照装完基础系统、没装多余软件之前打一个快照后面怎么折腾都能一键回滚。这个习惯救了我无数次。6.4 关于“RHEL到底值不值得学”的一点想法最后说点题外话。我知道很多人在犹豫要不要学RHEL因为订阅要钱、安装不如Ubuntu简单、网上资料也不如Debian系丰富。我的观点是如果你所在的公司或者你未来的职业方向是偏向企业级运维、云原生基础设施或者SRERHEL系包括CentOS、Rocky、Alma你是绕不开的。金融、政务、国企这些行业的生产环境里RHEL和它的下游发行版是绝对的主流。趁早把RHEL的安装、订阅、源配置、SELinux、firewalld这些机制摸透在未来几年内都不会过时。而且RHEL的很多设计哲学——比如用subscription-manager管理订阅、用dnf统一做包管理、把SELinux默认开启——这些一开始感觉很“麻烦”的东西恰恰是它在企业环境里能站住脚的原因。你用Ubuntu的时候可能一年多都不需要知道自己系统上运行着SELinux还是AppArmor但放到企业环境安全合规的每一层都需要你清楚知道开没开、配没配、验证没验证。这也是我为什么愿意花时间把这些细节记录下来。7. 最后的几点实操感受装RHEL这个事看着好像就是个安装流程真自己动手做一遍里面的门道还是挺多的。我记得头一回装RHEL 8的时候卡在订阅这步卡了一个下午当时觉得Red Hat搞这么复杂纯粹是折腾人。后来真正在生产环境里维护RHEL服务器才发现订阅管理、软件仓库、生命周期这些机制每一环都有它的道理。如果你现在也正卡在某个环节我给的建议是先把错误信息原文贴到搜索引擎里找大部分问题都有前人踩过坑其次是善用journalctl -xe和dmesg | tail这两个命令装完系统后遇到服务起不来、驱动加载失败这类的怪问题基本都能在那里找到线索实在不行就退回上一步比如网络配置怎么都不通就返回到“网络和主机名”那块重新设置别在一个地方死磕。还有一个细节想单独提一下虚拟机快照一定要善用。我这次在配置完yum源之后就因为一个拼写错误把redhat.repo文件改得面目全非折腾了半天。后来直接回滚快照一分钟就恢复如初。从那一刻起我真正体会到了快照这东西的价值。如果你是那种喜欢把所有东西都配好才开始用的人装了系统之后先打个快照绝对是最稳妥的做法。这篇学习日志写到这里我的RHEL 9.2虚拟机已经能正常使用了后续我还会继续记录SELinux策略调优和容器环境搭建的过程如果你也在折腾RHEL欢迎一起交流。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进