如果你正准备给一台物理机或者虚拟机装RHEL 8,我得先把丑话说在前面:安装程序本身并不难,难的是装完以后你面对的第一个dnf install报错、第一次重启找不到引导项,以及第一次发现网卡名和网上文档里写的不一样。红帽企业级Linux 8(Red Hat Enterprise Linux 8,以下简称RHEL8)作为生产环境里最常见的发行版之一,安装流程早就不用你像老前辈那样自己编译内核,但它同样不是一个让你全程“下一步”就能高枕无忧的系统。这篇博文不打算做成官方手册,我只想站在一个反复装过几十台RHEL8系统的人的角度,把从拿到ISO之前到装完初始化这段路讲清楚,把那些最容易踩的坑提前指出来。
1. 拿不定主意先别下ISO:版本、介质与硬件兼容性
1.1 RHEL8的小版本选择:不是越旧越稳,而是越新越省事
RHEL8是一个大版本代号,从8.0一路走到8.10,每个小版本都会包含更新的驱动、固件以及安全补丁。很多新人有个惯性思维:生产环境用旧版本更“稳定”,于是上来就找一个8.2、8.3的老镜像。说实话,我在一台较新的联想工作站上试过装8.2,结果NVMe固态硬盘识别正常,但板载Intel网卡驱动没跟上,安装界面里“网络和主机名”那一步直接看不到网卡,装完系统后还得自己找驱动包去打补丁,非常折腾。
我的建议是:如果你不是被客户合同绑定了某个特定小版本,优先选择官方能下载到的最新小版本。因为RHEL8的小版本之间,软件包仓库是持续向后兼容的,新版驱动和硬件支持覆盖旧版,安全补丁也更完整。而且你之后用dnf update升级时,系统本来就会把软件包推进到当前订阅仓库里的最新状态,所以从安装介质角度,新版本永远是更方便的起点。
1.2 Boot ISO与DVD ISO:两种镜像,别选错
RHEL8官网下载页面通常提供两类ISO:
| 类型 | 体积 | 用途 | 适合场景 |
|---|---|---|---|
| Boot ISO | 约800MB | 只含安装程序引导文件,安装时从网络拉取软件包 | 有内网YUM源、镜像站、网络环境稳定 |
| DVD ISO | 约4GB多 | 自带完整BaseOS和AppStream软件包 | 物理机离线安装、网络不稳、虚拟机挂载安装 |
绝大多数情况下我推荐直接下载DVD ISO。原因很简单:Boot ISO在安装过程中如果网络源断一下,或者仓库地址配置错一个字母,安装就会卡在“下载软件包”阶段,出错后排查链路长,很打击信心。而DVD ISO相当于把软件包全部打包带在身边,安装全程不需要网络,等系统装完再处理订阅和更新问题也不迟。
另外有个常见误区:页面上还会出现“Source ISO”之类的源码镜像,那是给开发者看源代码用的,体积可能比DVD ISO还大,但它不是用来安装系统的,别下错了。
1.3 刻录U盘的正确姿势:校验和、Rufus和dd命令
下载完ISO之后,第一步永远是对校验和。Red Hat官网每个ISO旁边都会给SHA256值,Linux和macOS下可以用:
sha256sum rhel-8.10-x86_64-dvd.isoWindows下用PowerShell也行:
Get-FileHash .\rhel-8.10-x86_64-dvd.iso -Algorithm SHA256如果校验值对不上,直接重新下载。这一步我踩过坑:曾经图快用某个网盘转存的“RHEL8镜像”,校验值对不上,强行刻录后安装到60%报软件包损坏,排查了很久才发现是镜像本身被截断了。
U盘制作工具方面,Windows系统我推荐Rufus,Linux环境则直接命令行dd:
sudo dd if=rhel-8.10-x86_64-dvd.iso of=/dev/sdX bs=4M status=progress注意of=后面是U盘设备名,比如/dev/sdb,千万别写成了/dev/sda或者某个分区/dev/sdb1,后者会直接损坏你现有系统。确认U盘写完后,用sync让缓存落盘,再拔U盘。
Rufus有一个细节需要注意:默认分区类型是MBR,如果你要在UEFI环境安装,建议在Rufus里把“分区类型”手动改成GPT,目标系统类型选“UEFI(非CSM)”。不然有些主板会以传统BIOS方式启动U盘,装出来的系统引导布局和后续维护习惯会有出入。
2. 开机到安装界面:启动引导、安全启动与安装源
2.1 UEFI好还是BIOS好,安全启动要不要关
现在物理机基本都是UEFI固件,RHEL8安装程序对UEFI的支持已经很完善了,安装时会自动创建/boot/efi分区来放EFI引导文件。我在实践中一直建议:能选UEFI就选UEFI,磁盘分区表选GPT。原因很直白,UEFI+GPT可以支持2TB以上磁盘,后续磁盘扩容不别扭,而且开机速度和支持特性都好一些。
安全启动(Secure Boot)是个容易被忽略的点。RHEL8的引导程序是经过微软签名的,正常情况下开着Secure Boot也能启动。但如果你后面要安装NVIDIA闭源驱动、某些第三方内核模块,或者主板对Secure Boot实现有兼容问题,就会在启动阶段卡住或者出现无法加载驱动的情况。所以我的经验是:在物理机上装RHEL8,如果这台机器不是严格受控的企业终端,安装时直接在固件里关闭Secure Boot,省得以后自找麻烦。虚拟机里一般没有这个选项的压力,默认设置即可。
2.2 引导界面改启动参数:什么时候用nomodeset、inst.repo
RHEL8安装光盘启动后,会出现一个GRUB引导菜单。如果你只是直接回车,大多数机器能顺利进入图形安装界面,但也有不少情况会黑屏。这时候就要用到临时修改内核启动参数的技巧:在GRUB菜单界面选中“Install Red Hat Enterprise Linux 8”,按e键进入编辑模式,找到以linux开头的那一行,在行尾追加参数,然后按Ctrl+X启动。
最常用的几个参数:
nomodeset:不让内核加载显卡驱动模式设置,解决安装界面黑屏、花屏问题。inst.repo=hd:LABEL=RHEL-8.10:手动指定安装源,用于安装程序找不到U盘或ISO的情况。inst.vnc:如果你需要通过网络做VNC远程安装,可以加这个参数。ip=dhcp:网络安装时先让网卡自动获取地址。
这里要特意说明:这种方式改的参数只对当前这一次启动有效,不会写入硬盘,所以试错了可以重启再来,没有任何风险。我几乎每次在物理机上装RHEL8都会先加一个nomodeset,尤其在NVIDIA显卡的机器上,这招能避免90%的安装黑屏问题。
2.3 安装源选择:本地介质、HTTP、NFS和Kickstart的适用场景
进入图形安装界面的第一步,安装程序会问“安装源”。如果你用的是DVD ISO,选“本地介质”然后它一般能自动识别到光盘或U盘;如果识别不到,可以手工指定iso:///dev/sda1或者用hd:LABEL=xxx的方式。虚拟机挂载ISO时,直接选“本地介质”并点“完成”,基本不会出错。
在有企业内网镜像站的场景下,很多人会选HTTP源,比如:
http://mirror.internal.example.com/rhel8/BaseOS这种方式的优势是安装源更新方便,可以统一管理软件包版本,适合批量装机。NFS源和HTTP类似,早期老运维习惯用NFS,因为那时网络安装协议方面NFS更稳定,现在HTTP/HTTPS已经完全够用了。
如果你需要批量部署十台以上相同配置的机器,可以考虑Kickstart无人值守安装,在引导菜单按e修改inst.ks=http://your-server/ks.cfg指向一个应答文件,系统就会全自动装完。但新手不建议一上来就折腾Kickstart,先把单台手工安装跑通,理解每一步在做什么,再去做自动化才不会抓瞎。
3. 别急着点“开始安装”:配置页里最花时间的四件事
3.1 软件选择:带GUI和最小化到底差在哪,AppStream是什么
RHEL8安装摘要页里,“软件选择”是新手最容易纠结的地方。默认选项往往是“带GUI的服务器”,装上以后不仅有Gnome桌面,还带了一大堆图形管理工具,装完占硬盘好几GB,运行内存也吃得多。对生产服务器来说,这通常不是最优解。
如果你只是练手或者需要在图形界面里操作,选“带GUI的服务器”没问题;但如果你是给生产环境装系统,我强烈建议选“最小化安装”。最小化安装只包含核心系统组件和基础命令行工具,装完大概只占1GB多空间。后续需要哪个软件,再用dnf install单独装,既清晰又可控。
这里要解释一下RHEL8的软件仓库结构:它把软件包拆成了BaseOS和AppStream两个仓库。BaseOS里是系统底层核心组件,比如内核、glibc、systemd;AppStream里则是各种应用软件如Nginx、PHP、PostgreSQL等,并且很多软件提供了模块化多版本选择,你可以指定dnf module install postgresql:13来装特定大版本。其实安装的时候我们不用太纠结这个,系统会默认启用这两个仓库,但理解了这层关系,后面配置订阅和仓库时就不会一头雾水。
3.2 磁盘分区:手动LVM分区的每一步和容量规划
安装摘要页里“安装目的地”是最关键的环节,默认是“自动分区”,对新手来说全自动确实省事,但自动分区方案不一定适合你的业务需求。我个人的习惯是直接选“自定义”手动分区,用LVM做逻辑卷管理。
手动分区前先理清楚规划思路,以一台256GB固态硬盘的服务器为例:
| 分区/卷 | 大小 | 说明 |
|---|---|---|
| /boot | 1GB | 用ext4或xfs,存放内核和引导文件 |
| /boot/efi | 200MB | UEFI环境自动要求,格式为EFI System Partition |
| pv.01(物理卷) | 剩余全部空间 | 加入LVM卷组 |
| vg_root(卷组) | = 物理卷大小 | 在卷组上划分逻辑卷 |
| / | 80GB | 根分区,我通常给到80GB以上,系统和日志都在这里 |
| /var | 30GB | 日志和缓存数据放独立逻辑卷,避免根分区被塞满 |
| /home | 剩余空间 | 如果不需要多人多目录,可不分 |
| swap | 4GB | 内存大时可以设小一些 |
在图形分区界面里,操作顺序大致是:新建/boot、/boot/efi,然后创建LVM物理卷,再创建卷组,最后在卷组里创建逻辑卷并挂载到/、/var、swap等路径。每一步都有下拉框选择文件系统类型,比如根分区选xfs,swap选swap,/boot选ext4或者xfs都没毛病。
为什么要用LVM而不是标准分区?因为LVM可以在系统运行状态下扩缩容,比如以后/var空间不够了,可以直接从卷组里分一块加上去,不用重新分区、不用重启。这对运维来说太重要了。
3.3 Kdump要不要开:影响的是内存占用而不是安装本身
安装摘要页里的“Kdump”默认是启用的,它会在系统内核崩溃时保留一块内存用于保存崩溃转储(vmcore),便于事后排查死机原因。生产环境建议开启,尤其是数据库、核心业务服务器,一旦内核panic,Kdump转储文件是定位问题的重要证据。
但如果你是在一台内存只有2GB的小虚拟机上装RHEL8学习,Kdump默认会划走一部分内存作为“预留内存”,导致系统可用内存进一步缩水,这时候我就会在安装界面的Kdump选项里直接把它禁用。装完以后可以用systemctl status kdump查看状态,如果没开,改完配置后需要执行systemctl enable --now kdump。
很多新手有一个误解,以为Kdump影响的是安装过程速度或者磁盘占用。实际上它只关系到内存预留和崩溃时的转储机制,安装过程中几乎不占用资源。所以开不开主要看业务场景,不是必选项。
3.4 网络与主机名:安装时配好,省得装完再折腾
安装摘要页里“网络与主机名”这一步,往往被人直接跳过,等装完系统才发现IP不对、主机名不对,又要去改配置文件,其实完全没必要。
我建议在安装时就做好三件事:
- 点击“网络”右上角的开关,把网卡启用为自动连接,并确认网卡能拿到IP(DHCP环境)或者手动填上静态IP、子网掩码、网关和DNS。
- 在下方的主机名输入框里,填上你规划好的主机名,比如
web01.internal.example.com,点击“应用”。这里注意主机名不要乱填,后面很多服务会依赖它。 - 如果是一台有多个网卡的机器,安装界面会列出所有网卡,你要确认哪一块是管理口的网卡,把管理口配好,避免装完以后远程登录找不到机器。
安装时把网络配好还有一个好处:注册订阅那一步如果是在图形界面里操作,网络通了就能直接注册,省去后续命令行排查网络的时间。
4. 安装中那些报错与黑屏,我踩过的坑和排查路径
4.1 “软件包下载失败”和安装中断:多半是ISO或U盘问题
安装到中途突然报“无法下载软件包”或者“软件包与源不匹配”,这是我在早期遇到过比较多的中断场景。首先不要慌,按下面的链路排一遍:
第一,确认ISO校验和是否通过。这一步如果没做,直接重下ISO再试,不要继续拿有问题的镜像折腾。
第二,检查U盘接口和供电。U盘插在机箱前面板的USB口可能供电不稳,安装过程中掉盘,就会报各种读取错误。换到机箱后面板或者换个USB2.0口,往往就好了。
第三,如果是用Boot ISO + 网络源安装,那就要检查网络源地址是否能访问、仓库路径是否正确,尤其注意HTTP源需要BaseOS和AppStream两个仓库路径都存在,只写一半装到中途也会失败。
第四,虚拟机场景下,检查虚拟光驱是否正常挂载了ISO,CD/DVD设备是否在虚拟机启动顺序里排在第一位。如果ISO文件本身没问题,虚拟化平台一般不会报这种错。
4.2 进入图形界面后黑屏、花屏:显卡驱动和启动参数排查
物理机上很常见的一种现象是:安装界面一开始能看到GRUB菜单,按回车后显示器一直黑屏,但硬盘灯在闪,机器似乎在工作。这种问题九成是显卡驱动加载失败,尤其是NVIDIA独立显卡在笔记本或台式机上特别常见。解决办法就是前面提到的,在GRUB编辑界面给内核参数加nomodeset。
加nomodeset的本质是让内核在启动过程中不进行模式切换和显卡驱动加载,先用最基础的显示输出,等系统安装完成、进入桌面或者安装好专有驱动后再恢复。这里有一个容易混淆的地方:如果你是在虚拟机里装RHEL8,虚拟显卡(比如VMware SVGA)一般不会触发黑屏,所以不需要加这个参数。
如果加了nomodeset仍然黑屏,那就要考虑是不是显示器接口或者分辨率问题,比如DP线接触不良、4K显示器在安装界面默认分辨率过高导致无法显示。可以尝试换HDMI口,或者在GRUB参数中追加video=1024x768强制一个低分辨率。
4.3 装完重启找不到引导项:GRUB装到哪块盘上了
这个坑在手动分区时特别容易踩。装完系统后重启,屏幕提示“No bootable device found”,或者直接进BIOS界面,人一下就慌了。问题根源通常是GRUB引导程序虽然装到了某块硬盘,但主板的启动顺序指向了另一块盘,或者GRUB被装到了分区上而不是磁盘的主引导记录/EFI分区。
排查路径是这样的:开机进BIOS,看启动顺序,确认第一启动项是不是你装RHEL8的那块盘。UEFI模式下,应确保启动项里出现了类似“Red Hat Enterprise Linux”或者“UEFI: 硬盘型号”的选项。如果没有,说明引导信息没有正确写入EFI分区。
修复方法很简单:用安装介质重新启动,在引导菜单里选择“故障排除 → 救援已安装的系统”,等它探测到你的根分区后,选择挂载到/mnt/sysimage,然后执行:
chroot /mnt/sysimage grub2-mkconfig -o /boot/grub2/grub.cfg grub2-install /dev/sda如果是UEFI系统,执行grub2-install /dev/sda之前确认EFI分区已经挂载在/boot/efi下。修完以后重启就能正常引导了。这个命令组合在我工作中使用频率不低,建议遇到引导问题时先别急着重装系统。
5. 装完后的第一小时:订阅、仓库与基础初始化
5.1 订阅原理解析:为什么RHEL8不注册就不能正常yum安装
第一次接触RHEL8的人,最不适应的就是:明明系统装好了,dnf install nginx却提示“无法找到可用的软件包”或者“没有已启用的仓库”。这是因为RHEL的包管理机制默认绑定在订阅服务上,系统必须完成Red Hat订阅注册,才能解锁官方软件仓库。
很多人会把订阅和“破解”“盗版”画上等号,其实完全不是一回事。RHEL本身是开源的,但红帽的商业模式是提供企业级支持服务,注册订阅以后才能获得补丁、技术支持以及合规的仓库访问。个人学习用,红帽官方提供免费开发者订阅,注册一个Red Hat开发者账号,就能把最多16台RHEL系统注册到开发者订阅里,合法免费使用。这条路径我亲测有效,适合学习和实验。
5.2 注册、订阅与仓库配置的完整命令流程
系统装完后,先用root或者有sudo权限的用户登录,执行:
subscription-manager register --username 你的账号 --password 你的密码如果系统里有多个订阅可用,可以查看并附加:
subscription-manager list --available subscription-manager attach --auto注册完成后,启用对应的仓库:
subscription-manager repos --enable=rhel-8-for-x86_64-baseos-rpms subscription-manager repos --enable=rhel-8-for-x86_64-appstream-rpms这两条是必须的,BaseOS和AppStream缺一不可,刚才讲过它们各自承载系统底层和应用层软件。
很多同学还需要EPEL仓库,它是Fedora社区维护的扩展包仓库,里面有大量不包含在RHEL标准仓库里的软件包:
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm装完之后执行一次全量更新:
dnf update -y更新完成后系统重启一下,确保内核和驱动都处于最新状态。
5.3 系统初始化检查清单:SELinux、网卡名、时区、防火墙、SSH
装完系统并更新完,我建议按下面这个清单过一遍,每一项都关系到后续使用体验:
先查看SELinux状态:
getenforce如果是Enforcing,说明强制模式开启。生产环境建议保持这个状态,不要为了省事一上来就改Permissive或者Disabled。如果某些应用确实不兼容SELinux,再针对性调整策略,而不是全局关闭。
查看网络和主机名:
hostnamectl ip addrRHEL8默认使用Systemd的网卡命名规则,例如ens160、enp3s0。如果你看惯了Ubuntu的eth0,别急着改,只要网卡能正常联网,名字并不重要。如果确实需要改,配置/etc/default/grub里的net.ifnames=0 biosdevname=0,然后重新生成GRUB配置,比较麻烦,非必要不折腾。
同步时间是很容易被忽视的一步:
timedatectl set-timezone Asia/Shanghai systemctl enable --now chronyd timedatectl status时间不同步会导致日志排查困难、SSL证书验证失败等问题,别小看。
防火墙和SSH:
firewall-cmd --list-all systemctl status sshd如果你不打算用密码登录,可以提前把公钥写到~/.ssh/authorized_keys,然后修改/etc/ssh/sshd_config关闭密码登录。这一步建议在确保密钥可用之后再操作,否则会把自己锁在外面。
6. 从踩过的坑里提炼的几条“反常识”经验,建议新手先记住
6.1 一条适合大多数人的安装路线图
说了这么多,给一条可以照着走的标准路线:
- 从官网下载最新RHEL8 DVD ISO,校验SHA256。
- 用Rufus或dd制作U盘,UEFI环境记得选GPT。
- 物理机进BIOS关闭Secure Boot,开启UEFI启动。
- 启动安装介质后,在GRUB界面加
nomodeset(物理机显卡用户强烈建议)。 - 安装摘要里,软件选择用“最小化安装”,安装目的地用手动LVM分区,网络配置里填好主机名和IP。
- 安装完成后注册开发者订阅,启用BaseOS和AppStream仓库,安装EPEL。
- 执行
dnf update -y,配置时区、时间同步、防火墙、SSH密钥登录。 - 重启一次,验证所有服务状态,做一个虚拟机快照或者系统备份。
这张路线图适合大多数场景,不管是虚拟机还是物理机,只要跟着走,基本不会出大问题。
6.2 几个“反常识”的注意点
第一点:别在安装时为了“省事”把SELinux禁用。这个反常识在于,禁用SELinux确实会让系统变“宽容”,很多软件部署时少报错,但一旦系统被入侵,禁用了SELinux就等于少了一层重要防线。我更建议保持Enforcing,等真的出现服务启动失败时,先看/var/log/audit/audit.log里的AVC拒绝记录,再判断是否要调整策略。
第二点:最小化安装的系统不一定更安全。有些人觉得装的东西越少越安全,但从实际事故案例看,最小化系统往往缺少审计、日志分析工具,出了问题反而更难定位。安全的关键在于持续更新和合理配置,而不是单纯的“少”。
第三点:分区时很多人坚持要单独分/home,实际服务器上我基本不分。因为服务型系统上/home只是给登录用户放基础文件用的,占用通常很小,把它独立出来反而会浪费空间、影响卷组分配灵活性。真正需要重点保护的是/、/var、/opt这些路径,做容量规划时优先考虑它们。
关于物理机安装的最后一条经验:如果安装界面黑屏,先加nomodeset;如果装完重启没引导,先进BIOS看启动顺序;如果dnf装不了包,先查订阅和仓库。这三个“如果”,基本覆盖了我这几年遇到的大部分RHEL8装机和初始化问题。遇到新问题,不要一上来就重装系统,先想清楚它是出现在哪个阶段、哪个配置环节,按链路排查,往往十分钟内就能定位。
我自己的习惯是,每次在物理机上装完RHEL8后,都会顺手把主机名、IP、分区结构、SELinux状态、Kdump状态、注册账号和订阅ID记录在一个Markdown文档里。这台机器以后出任何问题,翻这个文档能省大量排查时间。RHEL8安装本身不难,难的是你从安装那一刻起就做出的每个选择——分区怎么分、SELinux开不开、网络是不是装时配好了——这些决定都会在后续运维里兑现成省心或者费劲。希望这篇博文能让你在下一次安装时少走几步弯路。