服务器操作系统安装这件事,看着简单,真正动手的时候坑比想象中多。openEuler 24.03 LTS SP3 发布已经有一段时间了,它基于 Linux Kernel 6.6 长期支持版本构建,官方明确说这是一个面向服务器场景的长期支持版本,维护周期覆盖到 2029 年。我最近在一台测试服务器上完整走了一遍安装流程,从镜像下载、启动盘制作、分区策略,到安装完成后的初始化配置都遇到了不少值得记录的问题。为了避免后来者重复踩坑,这篇文章把这套流程完整拆开讲一遍,每个环节都给出我实际用的参数和操作理由。
这篇指南适合三类读者:第一次接触 openEuler 的运维新手,准备从 CentOS 7 迁移到 openEuler 的老手,以及想在虚拟机里先跑一个试用环境、但又不清楚安装细节的同学。全程以 x86_64 物理机为例,兼容 UEFI 引导模式,虚拟机的差异点我也会单独标出来。
1. 版本选型与环境准备:为什么选 24.03 LTS SP3
1.1 版本定位:LTS、SP 和普通版本到底差在哪
openEuler 的版本命名规律很多人第一次接触会看懵。24.03 这个数字代表的是 2024 年 3 月发布的主版本,LTS 表示这是一个长期支持版本,SP3 则是第三个补丁版本(Service Pack)。也就是说,这个版本在 24.03 主版本基础上已经修复了三个维护批次的安全漏洞和缺陷,稳定性相比首发版本明显更好。
选择 LTS 版本的核心理由是维护周期。服务器环境最怕的是系统没人管,LTS 版本会有持续数年的安全更新支持,对于生产环境来说这是底线要求。相比之下,非 LTS 的版本更新频率快、特性多,但维护周期短,更适合开发者尝鲜,不适合作为业务承载平台。当前时间节点选择 SP3 是一个比较稳的决策——SP1、SP2 时代的一些早期 BIOS 兼容问题在 SP3 里已经通过内核补丁修复了,安装成功率会高一些。
1.2 硬件要求与架构确认
openEuler 支持多种 CPU 架构,包括 x86_64、aarch64、risc-v 等。绝大多数服务器场景用的是 x86_64,但如果你手里是国产 ARM 服务器,就需要下载 aarch64 对应的镜像,两者的安装包不做通用。
硬件最低要求其实不高:2 核 CPU、4GB 内存、50GB 磁盘就能跑起一个最小化安装。但真实生产环境建议至少 4 核 8GB 起步,磁盘按业务数据量预留。需要注意的是,openEuler 在安装阶段默认启用 NetworkManager 管理网络,如果服务器有多个网口,建议先确认 BIOS 里网卡的启动顺序和 PXE 设置,避免安装完成后默认网口不对导致网络不通。
1.3 镜像下载与完整性校验
镜像统一在 openEuler 官网的镜像列表里找,选择距离你最近的镜像站下载即可。我习惯用 dvd.iso 这个文件,它包含了完整软件包,安装时可以离线完成。mini.iso 体积小,但安装过程中会选择在线获取软件包,对网络环境要求高,一旦源出问题安装就会中断,物理机安装不建议用 mini 版。
下载完成后必须做完整性校验。镜像站会同步提供 sha256sums 文件,Linux 下用 sha256sum 命令直接比对:
bash复制sha256sum openEuler-24.03-LTS-SP3-x86_64-dvd.iso
Windows 下可以用 PowerShell 的 Get-FileHash:
powershell复制Get-FileHash .\openEuler-24.03-LTS-SP3-x86_64-dvd.iso -Algorithm SHA256
校验结果与官方文件不一致的镜像绝对不要使用,这既可能是下载损坏,也可能意味着镜像被篡改,属于基础安全底线。
1.4 启动介质制作:物理机的两个可选方案
制作启动 U 盘,Linux 环境推荐用 dd 命令直接写入:
bash复制sudo dd if=openEuler-24.03-LTS-SP3-x86_64-dvd.iso of=/dev/sdX bs=4M status=progress
注意 of 指向的是整个磁盘设备(比如 /dev/sdb),不是分区(/dev/sdb1)。写错了会把 U 盘分区表全部覆盖,这个操作没有后悔药。
Windows 环境推荐用 Rufus,选择 ISO 镜像后采用 DD 模式写入。这里有个容易踩的坑:Rufus 默认的 ISO 模式在某些主板上会出现引导失败的情况,切换为 DD 模式后问题基本消失。原因是 openEuler 的 ISO 采用 hybrid 引导结构,DD 模式能完整保留引导信息。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 安装引导与磁盘规划:进入 Anaconda 安装器之前的关键操作
2.1 安装介质的引导全过程
将 U 盘插入服务器,开机进入引导菜单选择 U 盘启动。绝大多数服务器按 F11 或 F12 可以调出一次性引导菜单,不需要改 BIOS 默认启动顺序。选择 U 盘后,屏幕会出现 openEuler 的引导界面,光标默认停留在 “Install openEuler 24.03 LTS SP3” 选项上。
此时如果直接按回车,系统会按默认参数进入安装器。但有一些特殊情况需要手动干预。如果你的服务器显卡比较老,或者使用的是远程管理卡(比如 IPMI 的虚拟控制台),可能会出现安装界面黑屏或花屏,这时候需要按 Tab 键编辑启动参数,在命令行末尾追加:
code复制nomodeset
这个参数会让内核跳过显卡驱动初始化,直接用通用的显示模式,我实测下来对绝大多数黑屏问题都有效。同理,遇到 ACPI 相关的 ACPI error 刷屏甚至死机时,追加:
code复制acpi=off
可以临时绕过,但需要注意这会关闭电源管理功能,仅作为安装阶段的应急方案,安装完成后正常系统里不建议常驻这个参数。
2.2 安装语言与软件包类型选择
进入 Anaconda 安装器后,第一步是选择安装语言。界面默认是英文,要切换为中文的话,在左侧列表找到 Chinese 并选中。这一步只影响安装器的显示语言,不影响系统最终的语言环境,系统语言在安装完成后的初始设置里可以再调,所以这里按自己熟悉的选择即可。
软件包选择是安装环节里最关键的一步。openEuler 默认提供多种软件包组合,我建议服务器场景选择“最小化安装”,也就是 Minimal Install。最小化安装只会装基础的命令行工具和系统服务,不包含图形界面,优点是占用资源少、攻击面小、后续想装什么自己动手 dnf install,不容易出现系统自带一堆用不上的组件的情况。
如果你的服务器需要图形化管理界面,也可以选择“带 GUI 的服务器”,但这会额外占用大量磁盘和内存空间,日常运维其实用命令行配合 Web 管理面板就足够了,不推荐在纯服务器环境装桌面。
2.3 磁盘分区策略:LVM 与标准分区的取舍
进入“安装目标”界面后,默认是自动分区。自动分区省事,但它把所有空间都分配给根分区,后续如果想单独调整某些目录的容量,操作起来非常麻烦。我的建议是选择“自定义分区”,手动规划磁盘布局。
针对典型的物理机服务器场景,我采用如下分区方案:
| 挂载点 | 分区大小 | 文件系统 | 说明 |
|---|---|---|---|
| /boot | 1GiB | ext4 | 存放内核和 initramfs |
| /boot/efi | 512MiB | vfat | UEFI 引导分区 |
| / | 50GiB | xfs | 系统根分区 |
| /var | 80GiB | xfs | 日志、缓存数据,防止日志写满根分区 |
| /home | 剩余空间 | xfs | 用户数据 |
| swap | 16GiB | swap | 内存的 1~2 倍 |
这里解释几个关键决策点。交换分区的大小我一般按物理内存的 1 到 2 倍设置,服务器如果内存充足可以设小一点。但系统要支持休眠功能的话,swap 必须等于或大于内存总量,服务器场景基本用不到休眠,所以设为一个固定值即可。
/boot 分区放在独立分区里,并且设置 1GiB,主要是为了避免系统更新内核时引导分区空间不足。之前遇到过 CentOS 7 默认 500MiB /boot,多更新几个内核就满了的情况,openEuler 的默认安装也容易踩这个坑,手动分 1GiB 就不用操心了。
磁盘分区这一层的核心决策是:用不用 LVM。如果你希望后续可以动态调整分区大小,建议把根分区、/var、/home 都放进同一个卷组里,后续在 lvresize 时可以灵活扩展。如果只是固定用途的服务器,标准分区也完全足够,性能上两者没有明显差异。
2.4 网络配置:静态 IP 还是 DHCP
安装过程中的网络配置经常被忽略。默认情况下安装器使用 DHCP 自动获取 IP,但服务器生产环境我强烈建议配置静态地址,避免 DHCP 地址变化导致服务访问异常。
在“网络与主机名”界面,先打开网卡开关,然后点击“配置”按钮手动填写 IP 地址、子网掩码、网关和 DNS。这里需要提前规划好网段信息,避免和现有网络冲突。主机名建议按照业务命名规范设置,不要用默认的 localhost.localdomain,后续改主机名虽然不复杂,但既然安装的时候就顺手做了,就没必要留着麻烦。
IPv6 协议如果没有明确需求,可以在这个界面直接关闭,减少不必要的地址配置和路由问题排查成本。
3. 安装完成后的初始化配置:从能开机到能跑业务
3.1 root 密码与用户创建的安全细节
安装过程中的最后一步是设置 root 密码和创建普通用户。root 密码要求至少 8 位,并且要包含大小写字母和数字。这里有个容易被忽略的细节:如果创建的普通用户同时勾选了“将此用户设为管理员”,这个用户会被加入 wheel 组,后续想用 sudo 提权就方便了。
生产环境的建议是:root 密码设置一个高强度的独立密码,日常操作全部通过普通用户加 sudo 完成,不要直接使用 root 登录。这不仅是为了审计追踪,也是防止误操作的基本防线。安装完成后,如果有需要,可以进一步配置 SSH 密钥登录并禁用密码登录,这一步对公网服务器尤其重要。
3.2 更新软件源与系统补丁
安装完成后第一件事是更新软件源。openEuler 默认使用的源地址是官方源,在国内网络环境下速度可能不够理想,建议切换为国内镜像源。
编辑源配置文件:
bash复制vi /etc/yum.repos.d/openEuler.repo
将 baseurl 中的官方地址替换为镜像站地址,比如替换为 mirrors 站点对应路径。注意 openEuler 的 repo 文件里包含多个源,包括 OS、everything、EPOL、debuginfo、source 等,一般只需要修改 OS 和 everything 的 baseurl 即可,debuginfo 和 source 源不需要启用。
完成替换后执行:
bash复制dnf clean all
dnf makecache
dnf update -y
dnf update 会自动升级所有已安装软件包到最新版本。首次更新下载量大,耗时较长,建议在带宽充足的时段进行。更新完成后最好重启一下系统,确保内核等底层组件的新版本生效。
3.3 时区、时间同步与主机名设置
服务器的时间同步是必须做的,时间不准会导致日志记录混乱,还会影响证书校验等依赖时间戳的机制。
设置时区为中国标准时间:
bash复制timedatectl set-timezone Asia/Shanghai
如果系统里没有安装 chrony,需要先安装:
bash复制dnf install -y chrony
systemctl enable --now chronyd
chrony 配置文件在 /etc/chrony.conf,默认会从 openEuler 官方时间服务器同步。内网环境如果有自己的 NTP 服务器,把 server 条目替换成内网地址即可。
主机名如果安装时没设置好,可以用 hostnamectl 修改:
bash复制hostnamectl set-hostname your-server-name
同时检查 /etc/hosts 文件,确保主机名解析存在,不然某些依赖主机名解析的服务会报错。
3.4 防火墙与 SELinux:安装后必查的两项安全配置
openEuler 默认启用 firewalld 服务,安装完成后需要根据业务实际开放相应端口。常用操作:
bash复制firewall-cmd --permanent --add-port=22/tcp
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload
注意 --permanent 参数和 --reload 的组合,如果不加 permanent,规则只对当前会话生效,服务重启后会丢失,这是我踩过多次的坑。
SELinux 在 openEuler 中默认是 enforcing 模式。很多从 CentOS 7 环境迁移过来的运维同学习惯直接 setenforce 0 甚至修改配置文件永久关闭,我的建议是尽量不要关闭。SELinux 是 Linux 安全体系的重要组成,权限模型在 enforcing 模式下才能发挥完整功能。遇到 SELinux 导致的权限问题时,优先用 semanage 和 audit2why 工具分析原因,而不是一刀切关闭。如果确实暂时无法解决,可以先将模式改为 permissive 观察日志,但它只是排障手段,不是长期方案。
4. 常见问题与排查技巧实录:安装过程中最容易翻车的几个环节
4.1 安装界面黑屏或花屏
这个问题在物理机尤其是使用远程管理卡的服务器上非常常见。现象是选择 Install 后屏幕一直黑着,以为死机了,实际上系统在正常运行,只是显卡驱动没有正确初始化。
解决办法就是前面提到的:在引导界面按 Tab 编辑内核参数,追加 nomodeset。这个参数会让系统使用 BIOS 的 VESA 兼容模式进行显示输出。安装完成后的系统如果仍然有类似问题,可以在 grub 配置文件里对内核参数也追加 nomodeset,方法是在 /etc/default/grub 的 GRUB_CMDLINE_LINUX 中加上该参数,然后执行 grub2-mkconfig 重新生成引导配置。
4.2 安装完成后无法引导进入系统
安装过程顺利结束,但重启后屏幕上出现 “Boot device not found” 或者直接进入固件设置界面,这通常意味着引导项没有正确写入。原因多半是安装过程中选择安装目标时,没有把引导程序安装到正确的位置。
处理方法是使用安装 U 盘重新进入救援模式。在引导界面选择 “Rescue a openEuler system”(名称可能略有不同),然后按提示挂载根分区,chroot 到系统环境后重新安装引导程序:
bash复制grub2-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg
注意 grub2-install 的目标是磁盘设备而不是分区。对于 UEFI 引导模式,还需要检查 EFI 分区是否正确挂载到 /boot/efi,并确认 efibootmgr 能正常管理引导项。
4.3 dnf 安装软件时报错:找不到 mirror 或下载失败
这类问题多发生在软件源配置错误或源连接不稳定时。首先确认网络连通性:
bash复制ping mirrors.openEuler.org
如果 ping 能通但 dnf 仍然报错,大概率是 repo 文件中的地址有问题。检查 /etc/yum.repos.d/openEuler.repo 文件,确认 baseurl 格式正确,没有多余的变量残留。也可以尝试将 gpgcheck 的值从 1 暂时改为 0 测试是否 GPG 密钥导致的问题,但修复后要改回来。
还有一个常见情况是镜像站同步不完整导致的 404 错误,这时候换个镜像源或者等待一段时间再试即可。
4.4 系统时间频繁跳变
这可能是时间同步服务未正确配置或未被正确启动。首先检查服务状态:
bash复制systemctl status chronyd
如果发现服务未运行,执行 systemctl enable --now chronyd 启动。如果服务在运行但时间仍然跳跃,检查防火墙是否放行了 UDP 123 端口,NTP 协议使用的是 UDP 端口,而不是 TCP。
虚拟机环境下还需要注意宿主机的时钟稳定性和虚拟化层的时钟虚拟化支持,某些虚拟化平台需要对虚拟机开启时间同步补丁,否则会出现时钟漂移。这个问题在 KVM 和主流虚拟化平台下通常默认处理,但如果你用的是比较小众的方案,时间紊乱会非常明显。
4.5 磁盘空间莫名被占满
系统跑了一段时间后 df -h 发现根分区满了。这个问题的头号嫌疑是日志文件。openEuler 使用 journald 存储系统日志,默认日志大小限制是系统内存的 10% 或磁盘容量的 10%,看似合理,但在高日志量的服务场景下很容易写满。
检查日志占用:
bash复制journalctl --disk-usage
清理旧日志:
bash复制journalctl --vacuum-size=200M
根本性的解决方案是修改 /etc/systemd/journald.conf 文件,设置 SystemMaxUse=500M 这类硬性上限,然后重启 systemd-journald 服务。同时确认 /var/log 下没有单个服务产生海量日志,比如某些调试模式下应用日志疯狂增长,那就不是系统问题了,而是业务层的问题。
4.6 故障速查表
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 安装界面黑屏 | 显卡驱动兼容问题 | 追加 nomodeset 内核参数 |
| 安装时 ACPI 报错刷屏 | BIOS ACPI 实现有缺陷 | 追加 acpi=off 临时绕过 |
| 重启后无法引导 | 引导程序未写入正确设备 | 救援模式重装 grub2 |
| dnf 找不到 mirror | 源地址错误或镜像未同步 | 检查 repo 文件,更换镜像源 |
| systemd 服务无法启动 | SELinux 策略阻止 | audit2why 分析日志,按策略放行 |
| 根分区被日志占满 | journald 无上限 | 设置 SystemMaxUse 限制 |
5. 补充实操心得:几个值得养成的安装习惯
安装 openEuler 这类服务器系统,有三件小事做与不做,日后的维护难度差别很大。
第一件是在安装过程中就记录好所有分区和网络配置信息。系统安装完全靠图形化界面操作,很多人装完就忘了分区有多大、用了哪些参数。建议在动手装之前,先在纸上或文档里写下规划的分区方案、IP 地址、主机名,装完后再对照校验一遍。看似多花几分钟,后续做系统审计、迁移时能省掉大把回忆和排查的时间。
第二件是养成安装完成后立刻做系统快照的习惯。如果在物理机上无法做快照,至少把 /etc 下的所有配置文件备份一份,比如打包放到 /root 或者异地存储:
bash复制tar czf /root/etc-backup.tar.gz /etc
这份备份在系统出了问题需要回退配置时就是保命稻草。
第三件是不要贪新用太激进的测试功能。openEuler 24.03 LTS SP3 里很多新特性对现有业务场景可能是透明的,但生产环境首要原则是稳定。新系统上先跑测试业务,观察几个星期再考虑迁移核心业务,这个节奏比什么都重要。
我自己在多次安装中养成的习惯是:装完后先不急着部署业务,用一个月时间把系统更新跑稳定,观察日志和资源水位,确认硬件驱动全部正常后再正式上线。这个过程虽然慢,但能为后续的稳定运行打下最扎实的基础。系统安装这件事,宁可前期慢一点,也不要后期熬夜排队修故障。
