ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

openEuler入门:CentOS停更后的替代方案与实战部署

openEuler入门:CentOS停更后的替代方案与实战部署 如果你这两年的服务器运维清单里出现过 CentOS那 openEuler 这个名字你一定不会觉得陌生。CentOS 8 的提前停更让一大批生产环境被迫进入“择业期”我也在那一波浪潮里开始认真评估各种替代方案。openEuler 就是其中之一而且它和我预期里的“又一个 Linux 发行版”不太一样——它由华为将内部 EulerOS 的基础能力开放而来社区开源后很快形成了自己的 LTS 节奏、软件工具链和行业落地案例。这篇笔记是 openEuler 学习系列的第一篇先把前世今生讲清楚它从哪里来、现在发展到哪一步、在安装部署和日常使用里有哪些值得留意的细节适合正在做 CentOS 替代评估、刚准备入手 openEuler 的运维和开发朋友参考。1. openEuler 的前世CentOS 停更与欧拉的诞生1.1 CentOS 停更引发的迁徙潮要聊 openEuler绕不开 CentOS。CentOS 曾经是企业服务器场景里存在感极高的发行版因为它基于 Red Hat Enterprise LinuxRHEL源码构建二进制兼容相当于“免费的 RHEL”很多公司用它来跑 Web、数据库、内网业务系统。我自己早期维护的服务器里CentOS 7 占了将近一半连脚本都是按 CentOS 去写的。但 2020 年底红帽宣布 CentOS Linux 8 将于 2021 年 12 月 31 日停止维护CentOS 7 也紧随其后在 2024 年 6 月正式 EOL。这个消息对生产环境的影响是实实在在的操作系统不像普通应用软件说换就能换内核驱动、软件依赖、安全基线、团队技能都要跟着变。短时间内要找一个稳定、长期可维护、又尽量兼容现有运维习惯的替代系统并不是一件容易的事。我当时也列过对比清单。Debian 和 Ubuntu LTS 都是成熟选择但和内部既有 RPM 体系的自动化脚本、监控采集、软件包镜像会有些摩擦。Rocky Linux 和 AlmaLinux 是 CentOS 的兼容续作适合“平滑平移”。而 openEuler 出现在清单里是因为它在国内有完整的技术栈和社区且 ARM 生态上表现很强。但说实话当时我对它最大的疑问是这到底是一个“换皮 CentOS”还是真的有自己底气的操作系统1.2 华为 EulerOS 开源openEuler 顺势而来openEuler 不是从零开始的新项目它最早可以追溯到华为内部的 EulerOS。EulerOS 是华为在数据中心、云基础设施、通信设备等场景里长期使用和打磨的服务器操作系统经历过大规模生产环境的验证不是实验室里的玩具。2019 年华为宣布将 EulerOS 的基础能力开源命名为 openEuler并逐步把内核优化、安全能力、迁移工具等核心资产带进社区。为什么要把一套内部已经成熟的操作系统开源站在商业和技术两个角度看都很合理。操作系统是典型的“生态型基础软件”单靠一家公司自用很难形成外围的软硬件适配、ISV 认证、开发者积累。开源之后芯片厂商、整机厂商、云厂商、个人开发者和行业用户都能基于同一个底座做适配和迭代这套系统才真正活得长久。类似的事情在业界也不少见Red Hat 长期主导 Fedora/CentOS 生态就是先例只是 openEuler 把社区本身放在了更靠前的位置。这里要理清一个容易混淆的概念openEuler 是社区开源版本而华为云上的 Huawei Cloud EulerOS 是面向云场景的商业发行版。不只是华为任何厂商和个人都可以基于 openEuler 构建自己的商业版本或定制版本。所以你在网上看到“openEuler”和“EulerOS”两个词时可以这样理解openEuler 是上游社区EulerOS 是历史累积和一部分商业产品线的名称。1.3 命名与定位叫“欧拉”是有原因的openEuler 这个英文名里藏着一个数学梗。欧拉Leonhard Euler是历史上极其高产和重要的数学家图论、复分析、流体力学里到处都有 Euler 的名字比如欧拉公式、欧拉角。华为内部很多产品用数学家命名GaussDB 数据库对应高斯EulerOS 对应对应欧拉。openEuler 就是“开放的欧拉操作系统”社区里也常直接叫它“欧拉”。从定位上讲openEuler 与 CentOS 确实有不少相似之处比如都使用 RPM 包格式和 yum/dnf 包管理工具目录结构、systemd 使用习惯、用户管理方式都与主流发行版一致。这意味着一个熟悉 CentOS 的运维切到 openEuler 后很多常规操作可以直接复用学习成本比想象中低。但它又没有把自己定位成“某某系统的替代品”在后续版本里可以看到它加入了很多面向云原生、虚拟化、AI 场景的独特能力这些我会在下一节展开。2. 今生版本演进、生命周期与技术底座2.1 LTS 与创新版的发布节奏openEuler 的版本策略用一句话概括长期支持版LTS稳生产创新版给尝鲜。社区每两年发布一个 LTS 大版本例如 20.03 LTS、22.03 LTS、24.03 LTS奇数年份则发布创新版本例如 21.09、23.09、25.03。LTS 版本会提供长期维护常规生命周期覆盖数年期间会有 SPService Pack小版本迭代持续修复安全漏洞和缺陷创新版则更快地引入新内核、新特性生命周期相对短适合测试和预研。这个节奏和我习惯的 Red Hat 系玩法有些异曲同工。CentOS Stream 是滚动更新的“中游”RHEL 是稳定的商业下游openEuler 更像把 Fedora 的“尝鲜”和 RHEL 的“稳定”同时放在一个社区里用户根据场景自己选。对生产环境来说选 LTS 是稳妥的对想体验新特性的个人或测试团队创新版更合适。我看 openEuler 官方社区文档时会特别留意生命周期表。生产环境选型不能只看“今天能用”还要看“三年后谁来维护”。openEuler 的 LTS 周期在当前开源社区里属于中上等水平配合迁移工具能够在版本到期前平滑升级这一点对于企业评估替代方案非常关键。2.2 技术底座内核、包管理与自研工具先给一个总结openEuler 的内核基于上游 Linux Kernel但并不是简单追新而是围绕服务器、云、嵌入式场景做了很多长期演进的工作比如 CPU 调度、内存管理、网络性能优化、容器隔离增强等方面都有改动合入。普通运维可能不会直接感知到这些底层变化但高并发服务、数据库、虚拟化业务的稳定性表现会体现出差异。包管理方面openEuler 使用 RPM 包格式和 dnf/yum 工具链你可以直接使用dnf install、dnf groupinstall、dnf update等命令。曾经在 CentOS 上写的自动化脚本大部分不需要改动就能在 openEuler 上跑这是它让人“心理上很舒服”的重要一点。软件源配置结构也与主流发行版类似一般配置文件放在/etc/yum.repos.d/下。openEuler 还有一批自研或深度定制的组件。比如毕昇编译器BiSheng Compiler是基于 LLVM 的编译器工具链在高性能计算场景里有针对性优化iSula 容器引擎是面向云原生的轻量容器方案和 Docker/K8s 的关系是兼容并存A-Tune 是智能调优引擎可以自动识别业务负载并给出内核参数建议stratoVirt 是轻量虚拟机方案适合容器和虚机混合部署的场景。这些组件让 openEuler 不只是一个“操作系统内核”而是一个完整的服务器软件栈。安全方面openEuler 支持国密算法SM2/SM3/SM4提供完整性度量架构IMA内置安全增强特性对等保合规、政企客户比较友好。如果你只在公网普通 Linux 上跑过可能会觉得这些特性有点“重”但在金融、政务、运营商这类场景里这套安全能力是实打实的需求。2.3 社区生态与商业发行版openEuler 由开放原子开源基金会托管社区通过 SIGSpecial Interest Group特定兴趣小组组织日常工作。SIG 的覆盖面很广包括内核、虚拟化、容器、桌面、AI、嵌入式、RISC-V 等方向。每个 SIG 都有自己的 maintainer 和贡献者特性讨论、代码合入、文档维护都在社区透明进行。这也带来一个好处你想参与某个方向可以直接去对应 SIG 仓库提 issue、发 PR上手门槛没有想象中高。商业生态上很多厂商基于 openEuler 制作自己的商业发行版对自家硬件或行业场景做额外适配和支持。相当于 openEuler 社区等同于一个“底座”商业发行版在这个底座上长出各自的增值服务。对终端用户来说这意味着选择不是单一的你可以用社区版跑跑看也可以购买商业支持服务来兜底。顺带提一句热词里的“openEuler easysoftware”。它对应的其实是华为云镜像站里 openEuler 软件仓库这类入口很多朋友在搜 openEuler 安装包、yum 源时都会碰到。国内网络环境下配置好这个镜像源能明显提升软件下载速度具体配置方法我在下一节写。3. 落地上手安装、源配置与图形界面3.1 镜像选择与最小化安装从零接触 openEuler 时最先遇到的是选镜像。官方提供多种 ISO常见的有最小化镜像Minimal、标准安装镜像DVD和全量软件包镜像Everything。如果你只是想建一个测试虚拟机、跑跑命令行服务用最小化镜像就够了装完系统底座干净如果需要在安装阶段就勾选图形界面或离线安装较多软件包DVD 或 Everything 镜像会更省心。安装过程对熟悉 Linux 的人来说没有太多陌生感。openEuler 使用 Anaconda 安装器这和 Fedora/CentOS 同源所以分区、语言、时区、Root 密码设置、安装源配置这几步基本可以照搬经验。安装时记得选好软件包组最小化安装默认不包含图形界面你要么在安装阶段勾选“带 GUI 的服务器”要么装完系统后通过 dnf 手动补装。我在 VMware Workstation 里装 openEuler 时虚拟机客户机操作系统选“Linux 5.x 或更高版本 64 位”通常都可以正常引导。装完以后有两个细节建议留意一是确认网卡是否已经启动并配置好 IPopenEuler 默认网卡可能没有开启 DHCP二是尽早安装 open-vm-tools否则分辨率上不去共享文件夹、剪贴板这些体验也会很差。3.2 yum 源配置用起来的第一道坎openEuler 刚装完很多人第一件事跑去dnf install一个包结果发现速度感人或者超时。这里面多半是源的问题。openEuler 默认源指到官方或海外镜像国内网络环境并不友好所以第一步建议换成国内镜像源配置方式和 CentOS 很相似手动创建一个.repo文件即可。我常用的配置写法类似下面这样以华为云镜像为例[openEuler] nameopenEuler $releasever - Base baseurlhttps://mirrors.huaweicloud.com/openEuler/$releasever/OS/$basearch/ enabled1 gpgcheck1 gpgkeyhttps://mirrors.huaweicloud.com/openEuler/$releasever/OS/$basearch/RPM-GPG-KEY-openEuler把这段写到/etc/yum.repos.d/openEuler.repo然后执行dnf clean all dnf makecache再安装软件就会快很多。如果所在环境是完全离线的内网还可以用createrepo在有网机器上把 RPM 包目录打成本地仓库再在内网服务器上指向这个仓库地址这是离线场景里的常规操作。热词里“openeuler配置yum”对应的基本就是这些坑。还要留意架构参数$basearch在 x86_64 上会解析成x86_64在 ARM 的 aarch64 服务器上会解析成aarch64所以同一份 repo 文件是可以通用的不必为不同架构写死路径。3.3 图形界面当我不想只盯着命令行虽然服务器通常没有图形界面但作为个人学习或桌面场景在 openEuler 上装一个 GUI 也很有价值毕竟鼠标点点比背命令快。安装 GNOME 桌面最直接的方式是使用 dnf 分组安装dnf groupinstall GNOME Server with GUI装完后可以设置默认启动到图形界面systemctl set-default graphical.target reboot如果只想临时从命令行切到图形界面也可以直接systemctl isolate graphical.target不需要重启。反过来说如果一台 GUI 机器想改回纯命令行对应执行systemctl set-default multi-user.target即可。图形界面装好后很多常用软件都可通过 dnf 安装比如 Firefox 浏览器、文件管理工具、终端模拟器等。热词里“openeuler安装浏览器”在社区版上最直接的答案就是用 dnf 装 Firefox 或 Chromium 的 RPM 包。要注意的是某些商业软件只提供 Ubuntu/CentOS 的包在 openEuler 上不一定开箱即用需要找 RPM 或源码编译这一点和 CentOS 时代遇到的问题类似。4. 进阶场景虚拟化、OpenSSH 离线升级与 AI 推理4.1 ARM 服务器上的 KVM 虚拟化openEuler 与 ARM 架构的组合是一个高频话题尤其是基于鲲鹏处理器的 ARM 服务器。原因很简单openEuler 对 aarch64 的适配深度和优化力度都比较强很多在 x86 上用的虚拟化、容器、数据库方案都能平滑迁移到 ARM 上。我自己在 ARM 环境里实践最多的场景就是 KVM 虚拟化。搭建 KVM 环境所需的软件包不多重点是libvirt-daemon-kvm、virt-install、qemu-kvm这几项dnf install -y qemu-kvm libvirt-daemon-kvm virt-install libvirt-client systemctl enable --now libvirtd装完确认一下虚拟化是否生效systemctl status libvirtd virsh list --all正常情况下virsh list --all返回空列表表示 libvirt 服务正常还没有虚拟机。要创建一台 ARM 虚拟机可以用virt-install指定 aarch64 架构和对应镜像virt-install \ --name test-vm \ --vcpus 4 \ --memory 4096 \ --disk path/var/lib/libvirt/images/test-vm.qcow2,size40,formatqcow2 \ --os-variant centos-stream9 \ --network networkdefault \ --graphics vnc,listen0.0.0.0 \ --location /path/to/openEuler-xxx-aarch64.isoARM 虚拟化有三个容易踩的坑。第一客户机镜像必须下载 aarch64 版本拿 x86_64 镜像硬装是起不来的第二部分 ARM 虚拟机需要使用 UEFI 引导而不是传统 BIOS创建时可能需要加--boot uefi第三嵌套虚拟化要检查宿主 CPU 是否支持相关扩展如果是在普通 x86 虚拟机里再做 ARM 模拟性能损耗会非常明显这种场景更适合用纯软件模拟做验证而不是跑生产。4.2 源码编译离线升级 OpenSSH 至 10.5p1为什么要折腾 OpenSSH因为安全扫描会盯着 SSH 版本。很多内网环境因为合规要求需要把 OpenSSH 升到指定版本但服务器不能随便连外网dnf update走不通这时最常见的手段就是准备源码包在内网离线编译安装。热词里的“openeuler openssh 离线升级至10.5p1”就是这类需求。离线升级的原理说起来并不复杂在能联网的机器上提前下载 OpenSSH 源码包、依赖库源码包zlib、openssl或者对应的 devel 包拷贝到目标服务器然后完成编译安装。需要注意一点OpenSSH 对 OpenSSL 版本比较敏感编译前确认系统里的 openssl-devel 版本满足要求否则 configure 阶段就会报错。基本编译流程如下tar xf openssh-10.5p1.tar.gz cd openssh-10.5p1 ./configure --prefix/usr/local/openssh --sysconfdir/etc/ssh --with-pam --with-ssl-dir/usr make make install编译安装完成后/usr/local/openssh下就有了新的 sshd 和 ssh 客户端。但此时系统默认启动的还是旧版 sshd需要用新二进制替换或调整 systemd 服务启动路径。比较稳妥的做法是先备份旧文件mv /usr/sbin/sshd /usr/sbin/sshd.bak cp /usr/local/openssh/sbin/sshd /usr/sbin/sshd mv /usr/bin/ssh /usr/bin/ssh.bak cp /usr/local/openssh/bin/ssh /usr/bin/ssh然后执行sshd -t检查配置确认没有语法问题再重启服务。这里我必须强调一句升级 SSH 前务必保留一条备用登录通道。要么在物理控制台操作要么提前开好一个 tmux 会话或临时放行一个新的 sshd 端口否则一旦新二进制启动失败你连不上远程机器就只能干瞪眼。SELinux 在 openEuler 上默认可能是 enforcing 状态新替换的 sshd 如果文件上下文不对会被强制拦截。遇到“启动成功但连接异常”的情况可以先setenforce 0临时放行测试确认是新二进制导致的问题后再通过semanage fcontext把新路径的上下文加进去。这个细节在纯源码升级的踩坑帖里是最常见也最容易忽略的。4.3 部署 Qwen3 27B多了一个跑大模型的选项openEuler 不只是传统意义上的服务器系统它也在往 AI 推理场景扩展。热词里“openeuler安装qwen3.8 27b”应该指的是部署 Qwen3 系列大模型27B 是常见的中大规模参数版本。要在 openEuler 上跑 Qwen3 27B有两种主流路线用 Ollama 一行拉起或者用 vLLM 做高性能推理服务。如果只是个人实验Ollama 是最省事的。安装脚本拉取后直接ollama run qwen3:27b就能聊天。但 27B 模型对显存要求不低量化后大概需要 16GB 以上的显存空间纯 CPU 环境也能跑只是速度比较感人生成一个字等几秒是常有的事。所以我的建议是先搞清楚自己手里有什么硬件再决定模型量级。如果是带昇腾 NPU 的服务器openEuler 配合 CANN 工具链能发挥硬件的推理加速能力这也是它在 AI 服务器场景里比其他发行版有优势的地方。vLLM 的部署方式更贴近服务化pip install vllm vllm serve Qwen/Qwen3-27B-AWQ --quantization awq --port 8000模型文件需要提前下载。国内网络环境建议从 ModelScope 拉速度比海外源稳定很多离线环境则可以先把模型文件整体拷贝到内网。我试下来的感受是openEuler 上跑 PyTorch/CUDA 生态的兼容性没有出过奇怪问题因为底层依然是标准 Linux 内核和 glibcAI 框架的 Linux 安装包基本都能适配真正需要花时间的是驱动、CUDA 和框架版本的三方匹配。5. 踩坑记录与技术心得5.1 常见问题速查表整理了一张速查表都是我在 openEuler 试玩过程中真实碰到或身边同事频繁踩过的问题按“现象-原因-解决”列出来方便直接照用。现象原因解决方式dnf makecache超时或连接失败默认源访问慢或不可达更换华为云等国内镜像源重试dnf clean all dnf makecache最小化安装后没有图形界面安装阶段未选择 GUI 软件组执行dnf groupinstall GNOME Server with GUIVMware 虚拟机屏幕分辨率很低缺少 VMware Toolsdnf install open-vm-tools重启或手动加载模块ARM 虚拟机无法引导安装使用了 x86_64 架构镜像下载 aarch64 的 openEuler ISO检查 UEFI 设置OpenSSH 升级后无法远程登录新 sshd 启动失败或 SELinux 拦截先sshd -t检查配置再用semanage fcontext修正上下文备好物理控制台通道部署 Qwen3 27B 时显存不足模型体积超过 GPU 显存使用 AWQ/GPTQ 量化权重或切换更小参数量模型virt-install看不到 KVM 加速嵌套虚拟化未开启或 CPU 不支持确认宿主 CPU 虚拟化特性确保 kvm 模块已加载lsmod5.2 几点实操心得与后续计划第一点是迁移思路。如果你和我一样是从 CentOS 环境转过来的推荐先熟悉 openEuler 的迁移工具和兼容性测试方案。社区提供 x2openEuler 这类工具可以把 CentOS 7/8 系统自动迁移到 openEuler并保留数据和基本服务配置。但迁移只是第一步迁移之后一定要重新验证业务应用不能默认“二进制兼容就等于行为一致”毕竟内核版本、安全策略和系统库都有差异。第二点是别怕折腾源码编译。热词里的大量问题比如 OpenSSH 升级、特殊工具安装、GUI 环境配置本质上都回到 Linux 的基础功准备依赖、配置环境变量、处理 systemd 与 SELinux。openEuler 的文档和社区讨论密度这些年已经明显上来了遇到问题去搜 openEuler 关键字大多能找到现成方案。第三点是建议从虚拟机开始建立实验环境。我自己喜欢拿一台最小化安装的 openEuler 虚拟机当“沙盘”把换源、装 GUI、部署虚拟化、源码升级 OpenSSH 整个链路都跑一遍再决定要不要在生产环境落地。这样即使踩了坑也不影响线上服务而且整个过程会逼着你把系统原理和地方弄清楚。openEuler 在我这里的定位已经逐渐从“CentOS 替代备选”变成了“值得长期跟进的操作系统”。后续笔记我会接着写容器化、虚拟化和 AI 推理的实践过程中如果再碰到值得记录的新坑我再单独开一篇聊。
返回列表