ARTICLE · INTELLIGENCE

战地情报 · 详情页

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

CentOS 7系统安装全指南:从启动盘制作到分区与UEFI引导

CentOS 7系统安装全指南:从启动盘制作到分区与UEFI引导

CentOS 7这个老伙计,说实话到现在还有大量服务器在跑。虽然版本比较“古典”,但很多公司的存量业务和生产环境就是离不开它。我前前后后大大小小装过几百次CentOS 7,从最开始的虚拟机到后来的物理机批量部署,踩过的坑、总结出的经验都挺多。今天这篇就围绕CentOS 7系统安装教程这条主线,把从准备镜像、制作启动盘、配置引导、分区、初始化到装完后的必做操作全部捋一遍,写给刚接触Linux的初学者,也写给偶尔需要重装系统、想少走弯路的运维同行。

这篇东西适合谁看:打算在VMware、VirtualBox或者物理服务器上装CentOS 7的人;给公司老服务器重装系统时不想再查东查西的人;以及想搞明白“为什么网上教程说的分区我照做却起不来系统”的人。

1. 装CentOS 7之前,先确认你的运行环境

很多人拿到安装镜像就直接刻盘装机,等到启动不了了才回头查原因,晚上十点蹲机房眼泪掉下来。我建议动设备前先把三个问题想清楚:装在哪、装来干嘛、用什么方式引导。

1.1 物理机还是虚拟机,两者差别在哪

装物理机和装虚拟机的过程几乎一样,但有三个点必须提前区分。

物理机的启动盘要看主板固件模式。近几年的服务器主板基本默认UEFI引导,老一点的服务器和台式机可能还是传统BIOS(Legacy)模式。CentOS 7的安装镜像同时支持UEFI和Legacy,但同一台机器如果我用UEFI引导安装,装出来的系统分区表就是GPT;如果用Legacy引导安装,分区表大概率就是MBR。这两者在后续分区和启动修复上处理方式完全不同,后面第4节会细说。

虚拟机的灵活度高得多,VMware Workstation或者VirtualBox里新建虚拟机时,固件类型可以选择“UEFI”或“BIOS”。我建议如果你只是练手或者做实验,直接用默认的BIOS模式最省事;如果希望模拟现代生产服务器环境,就选UEFI。两种模式装出来的系统都能跑,区别在于你学到的知识能不能迁移到真实机房环境。

1.2 下载镜像时最容易忽略的三种版本差异

访问CentOS官方镜像站或者国内各高校镜像源时,会看到好几个ISO文件,新手最容易一眼看上“Everything”或者“DVD”这种全量包。它们之间的差异不只是文件大小这么简单。

  • Minimal ISO(最小安装盘):体积大概接近1GB,装完只有最基础的系统内核和命令行工具,桌面环境一概没有。适合跑业务服务的服务器,也适合愿意从零开始折腾的人。
  • DVD ISO(完整安装盘):几个GB大小,包含大量常用软件包,安装时可以勾选图形化界面、开发工具、虚拟化组件等。大多数线下物理机安装都推荐用这个,因为就算选完软件包后没连外网也能完成安装。
  • Everything ISO(全量盘):把所有能选的包都塞进去了,一般是企业内部需要离线建软件源的时候才用,个人安装不建议碰,文件太大下载慢,安装时也很少需要那么多包。

新手最容易犯的错是:下载了Minimal镜像,装完发现没有图形界面,也不会用命令行,直接卡死。所以听课和练手的人,如果不想开局就劝退,DVD镜像才是正确选择。生产服务器则按需来,有时为了安全和最小化,Minimal也完全够用。

1.3 硬件最低要求与准备清单

CentOS 7对硬件不挑,官方给的最低要求是内存不低于1GB、硬盘不低于10GB,但这只是“能跑测速”。我的实际经验是:

  • 命令行服务器:2GB内存起步,硬盘分配至少20GB,否则装完系统后装点软件就满了。
  • 带图形界面:4GB内存起步,硬盘40GB以上,图形桌面的资源消耗比你想的大,2GB跑起来会有一种“点一下等三秒”的酸爽感。
  • 数据库或应用服务器:8GB内存起步,磁盘容量按业务数据量预留,这部分后面分区时要重点规划。

如果打算在一台机器上装多个系统做双引导,记得预留好分区空间,最好在Windows的自带磁盘管理里先把未分配空间腾出来,再用CentOS安装盘分区。不要贪方便直接在Windows系统盘上塞一个CentOS的分区,启动引导很容易互相覆盖,到时装Windows引导坏了又是一轮加班。

2. 启动盘的制作细节与BIOS引导坑

镜像下载完成后,把ISO写进U盘这个步骤看起来简单,其实翻车率最高。我见过太多人把ISO文件直接复制到U盘里,然后开机引导失败,还怀疑是镜像坏了。这里把原理和正确做法说清楚。

2.1 为什么强烈建议用写盘工具而不是直接解压

ISO不是普通压缩包,它是一个包含引导信息的完整的文件系统镜像。直接复制或解压到U盘会丢掉启动所需的引导数据和文件权限,装机引导时就找不到可启动设备。正确做法是用写盘工具把ISO按位逐字节写入U盘,而不是把它当成一个普通文件“粘贴进去”。

我常用Rufus这样的开源工具做启动盘,理由有三个:一是开源工具在社区里用得广,行为透明;二是体积小,不需要安装,绿色版就能用;三是支持把GPT和UEFI、MBR和BIOS的引导方式匹配好,选错模式的概率低。写盘时注意选择“DD镜像模式”还是“ISO模式”,对于CentOS 7来说,Rufus会自动识别镜像类型,通常保持默认即可。写过之后U盘会被重新分区,原有数据全部清空,提前备份好U盘里的资料。

2.2 镜像校验:用MD5验证下载完整性

这一步很多人会跳过,但我建议至少在校验上花一分钟。镜像站会给出对应的MD5校验值或SHA256校验值,下载后在本机命令行里执行校验,对比输出结果是否一致。

在Windows上下载镜像,可以用系统自带的PowerShell执行Get-FileHash计算SHA256。在Linux或macOS上则用md5sum或shasum命令。举个最直观的例子:

sha256sum CentOS-7-x86_64-DVD-2009.iso

把输出的哈希值和官方网站贴出来的值对照,完全一致就说明镜像文件没有损坏或没有被篡改。不要觉得这一步是强迫症,镜像包几个GB,下载过程中一旦缺字节,做出来的启动盘可能在安装中途报各种奇怪的错,排查起来非常崩溃。

2.3 BIOS设置:UEFI和Legacy的选择

启动盘插到机器上之后,开机时按Del或者F2进BIOS设置界面,不同品牌主板按键不同,自己提前确认一下。关键设置在于Secure Boot(安全启动)。

CentOS 7对Secure Boot支持不算顺畅,很多老主板开了Secure Boot后,U盘引导直接无法识别或用不了显卡驱动。我的建议是:自己装机图省心就把Secure Boot关掉。这不是什么高深的操作,在BIOS的Boot或者Security菜单里找到“Secure Boot”选项,改成Disabled就行。生产环境的物理机如果必须开启Secure Boot,则需要进入安装盘引导时按Esc或Tab调整内核参数,难度不大但麻烦,不适合新手折腾。

还有个常见问题是:U盘插了但开机引导菜单里没有U盘选项。大多数情况是因为BIOS里的“Fast Boot”和“CSM支持”设置不当。Fast Boot会跳过USB设备的枚举,CSM(兼容性支持模块)如果关闭,Legacy引导的设备就显示不出来。自己装机时建议先在BIOS里把CSM打开,或者干脆把启动模式改成“UEFI Only/UEFI First”后重试,启动盘写入模式和BIOS引导模式匹配对上,U盘马上就会出现。

3. 引导安装到分区前的完整操作流

从U盘启动后,看到CentOS 7的引导菜单,这里有一些小细节会影响后面的整个安装体验。很多人一路Next按到底,装完才发现选错了软件包或分区不对,只能重来。

3.1 从安装界面到语言选择的几个细节

CentOS 7的引导菜单默认是图形风格的,第一行是“Install CentOS 7”,下面一般还有“Test this media & install CentOS 7”等选项。如果镜像在U盘上已经做过校验,可以选第一项直接安装。如果镜像不可靠,选第二项会先做介质测试,费时几分钟。

进入图形安装环境后,第一步是选语言,这里选中文繁体简体都无所谓,真正影响系统的语言环境是在安装完成后的配置里确定的。这个语言选择界面主要影响安装过程的提示语言,建议你哪门语言读起来顺用哪个。

左下角有个“Continue”按钮,进去后才是真正核心的安装配置面板。面板里会列出本地化、软件、系统四个区域,我们所有关键设置都在这里面完成。

3.2 软件选择:最小化还是带GUI

新手最容易懵的是“软件选择(SOFTWARE SELECTION)”这一步,点进去之后默认选中的是“带GUI的服务器”还是“最小化安装”,取决于你用的镜像是DVD还是Minimal。Minimal镜像就没有图形界面的选项可挑,DVD镜像里能看到十几种安装环境。

我的建议很直接:

  • 纯练手:选“带GUI的服务器”,里面再勾上“图形管理工具”和“开发工具”,这样既能用图形界面学习,也提前装好了编译环境。
  • 生产服务器:选“最小化安装”,装完只有命令行,少装一个包就少一个被攻击的入口,也少一个需要维护的组件。之后再按需装服务,这是标准的服务器安装思维。

可能需要补充的是,“软件选择”之后安装过程中没法再改,装完系统后想补图形界面不是不可以,但要额外执行一堆包的安装命令。与其麻烦,不如一开始想清楚用途。

3.3 网络与主机名的设置逻辑

安装界面里“网络和主机名(NETWORK & HOST NAME)”默认是关闭网络连接状态的,这个细节很重要。

服务器装完后需要联网更新和装软件,所以建议在做系统时就把网卡打开、把主机名定好。打开右上角的开关,能看到网卡获取到的IP地址,如果是虚拟机环境一般自动通过DHCP获取了。此时点右下角的“Configure”,可以预设固定IP、网关和DNS。

主机名建议在生产环境里有明确的命名规范,比如web01、db-node-02这种,让人一眼看出服务器角色和编号。不提前设置的话,装完默认主机名是localhost.localdomain,后面还要多一条命令来改,而且有些服务会用到主机名做绑定,反复改容易出问题。

4. 三种主流分区方案,选哪种取决于用途

分区是安装CentOS 7时最能拉开认知差距的地方。很多教程一句话带过,但我遇到太多人因为分区没规划好,系统跑了一两年后磁盘不够用,才回来问怎么扩容。分区这一步,千万别跳过。

4.1 最简单方案:单根分区一张表走天下

如果你只是装个系统练手或者跑轻量服务,完全可以用安装器的“自动配置分区”,它会自动帮你把/、/boot、swap分配好。这里补充一句:安装器默认会把LVM(逻辑卷管理)作为分区方式,这也意味着未来可以做在线扩容,这点比较友好。

个人练手的场景,自动分区完全够用。不需要手动折腾/home是否单独分、/data要不要独立分区,先把系统跑起来比什么都重要。我见过太多新手在分区界面纠结半小时,最后因为不敢操作改成自动分区,白白消耗耐心。

4.2 生产环境方案:拆分/boot、/和swap

生产服务器我建议在自动分区的基础上做一次手动微调,核心思路是:把/boot独立出来,把/var和/独立出来,避免某个服务写日志把根分区塞满,导致整个系统进入一种“能开机但服务全部瘫痪”的奇怪状态。

一个典型的物理机生产分区方案可以这样参考:

  • /boot:1GB,存放内核和启动引导文件,独立挂载在MBR或EFI分区之后。
  • /:剩余空间的50%,放系统程序和基础库。
  • /var:剩余空间30%左右,独立挂载,日志和缓存全在这里,就算被日志撑爆了也不影响根文件系统的读写。
  • /home:剩余空间或者干脆不分,服务器上通常没有多少个人文件。
  • swap:分配内存的1到2倍,内存大时(比如64GB以上),反而建议固定给8GB到16GB即可,不要无脑按两倍来,大量交换分区其实对性能是种浪费。

这个方案的难点在于,安装界面里手动分区不能直接用鼠标“放大小方框”,而是靠修改每块分区的大小数值来实现。具体操作是:选择“我将配置分区”,默认会显示LVM自动分区结果,双击/对应的卷或点“修改”,把想要的容量手动填进去,然后再单独添加/var卷。新手第一次操作会慢一些,但熟悉一次之后就完全能驾驭。

4.3 数据库与应用服务器方案:LVM逻辑卷

跑数据库或大规模应用,我强烈建议用LVM把整个磁盘包起来,逻辑卷分开挂载,预留未分配的卷组空间。LVM的好处用一句话说明:普通分区扩容比登天还难,而LVM卷扩容只需要一条命令。

划分逻辑上推荐这样分层:

  • 物理卷(PV)是整块硬盘,卷组(VG)是这一块的“总仓库”。
  • 在仓库里切逻辑卷(LV):一个挂/,一个挂/var,一个挂/data,再给swap一个卷。
  • 卷组里不要一次性全分完,留出10%到20%的“自由空间”。以后/data不够用时,执行lvextend把自由空间划给它,再配grow文件系统操作,几秒钟完成扩容,不用拆机不用重装。

分区方案表列出来就是:

挂载点容量分区类型用途
/boot1GB标准分区(xfs或ext4)内核与引导文件
/50GBLVM逻辑卷(xfs)系统根目录
/var30GBLVM逻辑卷(xfs)日志、缓存、应用数据
/data剩余空间LVM逻辑卷(xfs)数据库数据文件、业务数据
swap16GBLVM逻辑卷(swap)虚拟内存

最后一个提醒,CentOS 7默认文件系统是xfs,/boot分区建议用ext4更稳,swap一律用swap类型。手动分区时看清楚“挂载点、文件系统类型、分区类型”三列再按“更新设置”,别把xfs选在swap上。

4.4 UEFI分区表和BIOS分区表的差异

如果你从UEFI引导进入安装界面,手动分区时会发现安装器自动生成了一个几百MB的/boot/efi分区,这是EFI系统分区(ESP),文件系统类型是EFI System Partition。它跟/boot两个分区缺一不可,在UEFI方案里,引导加载器存放于EFI分区,内核文件则放在/boot。不要删掉EFI分区,删了启动引导就会找不到设备。

Legacy引导模式下不会生成EFI分区,但磁盘开头会有一个1MB大小的“BIOS Boot”分区,这是安装器为gpt分区表的BIOS引导方式自动创建的保护区域。总结成一句话:UEFI模式下给EFI留足容量,Legacy模式下保持系统自动生成的BIOS引导分区不动,其余空间都由你规划,别手痒格式化或者删除它们。

5. root密码、普通用户与隐藏的初始化选项

分区完成之后,回到主配置界面,最左边会看到一个“ROOT密码”和一个“创建用户”的区块。这里的操作直接影响装完系统后的安全基础,也是很多人栽跟头的地方。

5.1 密码策略与root安全机制

设置root密码时,CentOS 7的安装器会对弱密码提出警告。这个警告不是说你不能设置弱密码,而是提醒你风险太高。生产服务器上root密码最好满足两点:长度超过12位,包含大小写字母和数字。装完系统后我建议额外启用SSH的禁止root直接登录策略,改用普通用户加sudo。

不过这里有个反差点:虚拟机里做实验,root密码设成123456也不是不行,只要你的实验环境不暴露到公网,用自己的机器玩,方便快捷远大于安全顾虑。但要清楚,这不是生产环境的做法,生产系统里root密码泄漏等于把服务器送给别人。

5.2 普通用户的sudo配置

安装时最好顺手创建一个普通用户。很多人图省事,直接跳过这步,装完就一直用root干活,时间久了路径、权限都会变得很乱。创建用户时勾上“将此用户设为管理员”,等价于把这个用户加到wheel组,之后该用户可以使用sudo获得管理员权限。

普通用户权限的具体表现是:进系统后用sudo whoami查看时输出root,执行sudo时提示输入的是当前用户密码,不是root密码。这样日常日志里会记录到具体是谁用了sudo,出了问题能追责到人,信息安全和运维规范上都更有保障,也更便于多人共用服务器时协作。

5.3 KDUMP、相关安全策略该不该关

安装界面中还有“KDUMP”和“SECURITY POLICY”两个选项。KDUMP是内核崩溃转储机制,服务器一旦内核panic,它会抓取一份内存转储用于事后分析。生产环境建议保留,方便内核故障回溯;但虚拟机或内存紧张的环境可以选择不让KDUMP预留内存,因为默认情况下KDUMP会占用系统内存的一小部分,这在内存吃紧时并不划算。

安全策略(SECURITY POLICY)通常不需要手动调整,CentOS 7默认就是推荐的安全基线,除非公司有专门的安全加固要求,否则保持默认,比装完再折腾省心很多。

6. 安装完成后的第一轮配置与验证

当所有配置都设置好,点击“开始安装”后,系统会进入正式的安装流程。此时你会看到进度条在跑,几分钟到十几分钟不等,取决于你选了哪些软件包和磁盘速度。装完后点“重新引导”,拔掉U盘,等它从硬盘启动。

6.1 登录后先做的三件事

第一次登录进入系统后,不要急着干活,先把三件事做完。

第一件事是确认系统版本和内核信息,执行命令进行验证:

cat /etc/redhat-release uname -a

这里会看到类似“CentOS Linux release 7.9.2009 (Core)”的输出,确认安装的是哪个版本、内核版本是多少。

第二件事是过一遍网络状态,检查IP、网关和DNS是否正常。装系统时如果开了DHCP,IP可能跟你预期不一致,执行ip addr查看实际分配到的地址,用ping测试连通性。远程连接如果不通,大概率就是这步没验证好。

第三件事是更新系统到最新补丁:

yum update -y

如果更新源配置有问题或者没有网络,这一步会报错。出错时先排查网络,再看/etc/yum.repos.d/里的仓库配置。

6.2 固定IP的核心:nmcli命令

服务器是不可能靠DHCP过日子的,DHCP分配的IP一旦变化,你写好的连接地址、外部的访问配置全部失效。CentOS 7用NetworkManager管理网络,命令行工具是nmcli。

设置固定IP时,可以先查看当前网卡名称,通常是ens33或ens192:

nmcli connection show

然后修改这块网卡的连接配置,把ipv4.method从auto改成manual,并填入IP、网关和DNS:

nmcli connection modify ens33 ipv4.addresses 192.168.1.100/24 nmcli connection modify ens33 ipv4.gateway 192.168.1.1 nmcli connection modify ens33 ipv4.dns 223.5.5.5 nmcli connection modify ens33 ipv4.method manual nmcli connection up ens33

执行完ip addr检查IP是否变成你设定的值。如果不生效,可能是网卡名称或NetworkManager服务状态的问题,先systemctl status NetworkManager查服务,再确认网卡名是否匹配。这一套配置流程搞明白,网络这块就打牢基磐了。

6.3 防火墙与SELinux的初期取舍

CentOS 7默认开启了firewalld和SELinux,这是默认安全机制。新手装完第一时间可能因为SSH连不上或者复制文件被拒绝就想着“先关了”,我建议分场景来看。

firewalld主要管理端口放行,装完系统后如果不放行对应服务端口,外部请求就会被拦下来。用命令行放行指定端口:

firewall-cmd --permanent --add-port=8080/tcp firewall-cmd --reload

对想先快速跑通业务的人来说,直接停掉firewalld也听过很多次:

systemctl stop firewalld systemctl disable firewalld

但生产环境不建议长期把防火墙停掉,安全边界少一道,风险高一分。这个决定权在你,但至少你要知道默认防火墙在拦你,而不是瞎猜“为什么端口通了却连不上”。

SELinux是更底层一点的强制访问控制机制。遇到文件服务、自定义目录权限导致服务起不来的时候,很多人第一反应是setenforce 0临时关掉,这样确实能快速跳过问题,但不能从根本解决问题。建议先查/var/log/audit/audit.log里的SELinux拦截日志,有时间就学一下chcon或semanage fcontext去修正策略标签。把SELinux从enforcing改成disabled属于放弃治疗,能临时解决但长期看不利于学习。

7. 一次生产环境安装后的教训:别急着交工

最后补充一个真实发生过很多次的情况。某次我帮某公司重装一台旧服务器,镜像、启动盘、分区全都很顺利,装完系统也重启成功,当时我们准备把服务器挂进机柜。结果第二天早上业务方反馈服务异常,登录一看,网卡乱序了。

起因是这台机器有双网卡,装系统时第一块网卡的顺序由主板的物理插槽决定,但重装后系统根据内核枚举顺序重新分配接口名,原本配置好的网卡1变成了网卡2。其实这套机制可以通过配置udev规则来手工指定稳定的网卡名称,但当时没提前处理,重启后才发现。

所以我的经验是:生产机器的安装收尾阶段,一定要把“重启后再验证一次”当成标准流程。装完系统只是第一步,重启后网卡是否还在、服务是否自动拉起、分区挂载是否正常,这些都需要观察一轮才能放心交接。顺手也可以把/etc/fstab里的UUID挂载信息对比一遍,避免以后插拔磁盘导致挂载错乱。

顺便多说一个关于安装的小习惯:安装完成后把当时的安装日志、分区方案、网卡配置截图存一份到内部文档里。今后这台机器或者同样型号的再装系统时,照着这份记录来,能节约非常多排查的时间。这个习惯不算什么技术亮点,但越到后面越觉得值。

RELATED READING

延伸阅读

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