导入自定义镜像前,错误的配置(如缺少驱动、网络设置不当)可能导致实例启动失败或网络异常。使用阿里云官方镜像检测工具 sersi,可在导入前扫描、评估并自动修复镜像,确保其云上兼容性,提升部署成功率。
sersi工具的修复脚本无法回滚,对系统的修改无法撤销。
适用范围
该工具支持主流 RedHat、Debian、SUSE系列的操作系统,例如
- Red Hat 系列:Alibaba Cloud Linux, Anolis, RedHat, CentOS, CentOS Stream, Fedora, AlmaLinux, Rocky Linux, openEuler, OpenCloudOS。 
- Debian 系列:Debian, Ubuntu, Kylin, UOS。 
- SUSE 系列:SUSE, openSUSE。 
不支持FreeBSD、Fedora CoreOS以及Windows Server系统。
操作流程
步骤一:下载并解压工具
- 下载 - sersi工具包。- wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/imagecheck/sersi.tar.gz
- 解压工具包。 - tar -xf sersi.tar.gz
步骤二:检测镜像
运行检测命令,获取镜像的健康状况报告。
- 对镜像执行所有检测项的扫描。 - ./main.sh --target=image --diagnostic
- 分析检测结果。命令会输出格式化的报告。 - OK:该项符合阿里云镜像规范。
- FAILED(必须修复):该项存在严重问题,可能导致实例无法启动或核心功能(如网络)异常。
- WARNING(建议修复):该项存在配置问题,虽不影响实例启动,但可能导致部分高级功能(如云助手、监控)不可用或存在安全隐患。
 - 检测结果示例如下,报告中检测项的详细说明见检测与修复项总览。 - ------------------------------------------------------------ OS: Alibaba Cloud Linux 3 Kernel: 5.10.134-16.1.al8.x86_64 Arch: x86_64 RTC-Mode: utc Boot-Mode: Legacy ------------------------------------------------------------ Image Check Result Virtio [OK] Nvme [OK] Fstab [OK] Grub [OK] Dhcp [OK] Selinux [OK] OnlineResizeFS [OK] CloudAssistant [OK] CloudInit [OK] SecurityCenterAgent [OK] SupportMocInstanceTypes [OK] DiskUsage [OK] InodeUsage [OK] SystemFileAttribute [OK] CriticalUser [OK] QemuGuestAgent [OK] SshConfig [OK] Firewall [OK] Total case Count 18 Successes: 18 Failures: 0 Warnings: 0 ------------------------------------------------------------
步骤三:修复镜像
自动修复
sersi工具的修复脚本无法回滚,对系统的修改无法撤销。建议采用“先审查,后执行”的安全流程进行修复。
sersi工具不支持对检测项(Diskusage、Inodeusage、Criticaluser、LibDirectory和SupportMocinstanceTypes)进行自动修复,请参照指引进行手动修复。- 执行审查: - 使用 - --dry-run参数生成修复脚本并进行审查,此操作不会执行任何修改。- 通过参见单个检测项修复方案,可对单个检测项进行修复。 - # 修复所有问题 ./main.sh --target=image --run all --dry-run
- 执行修复: - 在确认脚本安全无误后,移除 - --dry-run参数来实际执行修复。- # 交互式修复:执行每个修复步骤前会请求确认 ./main.sh --target=image --run all
- 分析修复结果: - OK:表示该项修复成功。
- NO_FOUND_RISK:表示检测镜像中未找到该项的异常。
- OK_Need_Reboot:表示该项修复完成需重启系统才能生效。
- DRY_RUN:表示找到该项的异常并通过dry-run模式运行仅打印修复脚本,但未执行修复。
- FAILED:表示该项修复失败,需要进行手动修复。
 
手动修复
对于不支持自动修复,或自动修复失败的检测项,请根据以下指引进行手动操作。
- Diskusage:手动删除不必要文件。 
- Inodeusage:手动删除不必要文件。 
- Criticaluser:保留root账号。 
- LibDirectory:链接文件/lib和/lib64的指向位置不能为绝对路径,修改指向位置为相对路径。 
- SupportMocinstanceTypes:不支持神龙规格的系统通常是已经EOL不再维护的低版本系统,建议尽早更新升级,使用各发行厂商正在维护更新的操作系统版本。 
- Virtio:安装virtio驱动。 
- Nvme:安装NVMe驱动。 
- Fstab:正确配置/etc/fstab。 
- Grub:为镜像生成正确的配置grub文件。 
- Dhcp:设置镜像网络配置模式为DHCP。 
- Selinux:关闭SELinux。 
- OnlineResizeFS:安装cloud-init和growpart工具 
- Cloudinit:安装cloud-init。 
- SshConfig:检查sshd配置文件。 
- Firewall:关闭系统防火墙服务。 
- CloudAssistant:安装云助手Agent。 
- SecurityCenterAgent:安装客户端。 
- QemuGuestAgent:手动卸载qemu-guestos-agent。 
- SystemFileAttribute:不要使用 - chattr命令锁定/etc/shadow等文件。
步骤四:验证修复结果
- (可选)重启系统。部分修复项( - Nvme、- Dhcp和- Selinux)需要重启系统才能生效。
- 重新运行检测命令,确保所有问题项状态变为 - OK。- ./main.sh --target=image --diagnostic
检测与修复项总览
| 检测项 (Case Name) | 修复项 | 影响 | 说明 | 
| 
 | 
 | ECS启动异常。 | 检测镜像中是否安装virtio驱动。阿里云ECS通常为基于KVM的虚拟机,因此依赖镜像中安装虚拟磁盘的virtio驱动。 | 
| 
 | 
 | 无法使用NVMe协议云盘的实例规格,例如ecs.g7se。 | 检测镜像中是否安装NVMe驱动。ECS部分规格使用NVMe协议云盘,例如ecs.g7se,要求镜像包含NVMe驱动。NVMe相比SCSI、virtio-blk等传统驱动协议速度更快、传输带宽更高,因此建议在镜像中安装NVMe驱动,以支持相关实例规格。 | 
| 
 | 
 | 系统启动异常。 | 检测/etc/fstab配置是否正常。错误的配置会导致系统启动异常,例如配置的挂载设备信息不存在、设备UUID错误等。 | 
| 
 | 
 | 系统启动异常。 | 检测grub配置文件是否正常。配置错误(如使用设备名而非 UUID 指定启动分区)将导致系统无法启动。 | 
| 
 | 
 | 系统网络异常。 | 检测网络配置是否为DHCP。建议为网络设备配置DHCP的方式,static静态方式会导致网络配置失败,连接异常。我们还建议在grub内核启动参数中增加配置选项 | 
| 
 | 
 | 无法正常启动ECS实例。 | 检测是否禁用SELinux,建议关闭SELinux。 | 
| 
 | 
 | 实例根分区无法扩容。 | 检测镜像是否支持在线扩容文件系统。例如镜像虚拟磁盘空间大小为10 GB,而ECS实例的系统盘为100 GB,如果安装了cloud-init、growpart等组件,相关组件在实例初始化时会将根分区及文件系统扩容,扩容至系统盘的大小100 GB。更多信息,请参见扩容分区及文件系统(Linux)。 | 
| 
 | 
 | 系统初始化配置缺失。 | 检测是否安装cloud-init服务。cloud-init能在ECS实例启动阶段完成系统初始化配置,包括NTP、软件源、主机名和SSH密钥对等,同时执行实例自定义数据(User data)脚本。 | 
| 
 | 
 | 实例SSH连接失败。 | 检测sshd服务的配置文件(通常是/etc/ssh/sshd_config)是否正常。 sshd配置文件异常会导致sshd服务启动失败,进而导致SSH连接ECS失败,因此检查sshd配置文件的正确性和有效性非常重要。通常可执行以下命令: 
 | 
| 
 | 
 | 系统防火墙应用可能导致实例访问失败。 | 检测防火墙服务是否开启。建议关闭系统中的防火墙服务,使用ECS安全组统一管理云上实例的出入流量。 | 
| 
 | 
 | 云上运维不便。 | 检测镜像是否安装云助手。云助手是专为云服务器ECS打造的原生自动化运维工具,建议为镜像安装云助手服务,实现云上ECS高效运维。 | 
| 
 | 
 | 无法识别实例中的漏洞问题,缺少云安全中心的保护。 | 检测是否安装云安全中心Agent。安装云安全中心的Agent插件后,服务器才能受到云安全中心的保护。 | 
| 
 | 
 | 实例功能异常。 | 检测系统中是否安装qemu-guest-agent。该软件是运行在虚拟机上,和宿主机交互通信,会导致部分ECS服务不可用,实例功能不全。 | 
| 
 | 不支持 | 系统启动异常。 | 检测磁盘空间使用率是否正常。可执行 | 
| 
 | 不支持 | 系统启动异常。 | 检测磁盘inode使用率是否正常。可执行 | 
| 
 | 
 | 实例启动异常、功能异常。 | 检测系统中关键配置文件的文件属性是否正常。 | 
| 
 | 不支持 | 实例启动异常、功能异常。 | 检测系统中关键用户(例如root)是否存在。关键用户的缺失会导致系统启动异常,实例功能使用异常,例如无法使用用户名和密码远程连接ECS实例。 | 
| 
 | 不支持 | 系统功能异常。 | 在RedHat系列Linux系统中,/lib和/lib64通常为一个链接文件,指向/usr/lib及/usr/lib64,请不要随意修改该链接文件,否则可能导致系统异常。 | 
| 
 | 不支持 | 不能使用ecs.g6、ecs.g7等神龙规格族。 | 检测镜像是否支持阿里云ECS神龙规格。 阿里云最新的ECS实例通常为神龙规格,例如ecs.g6、ecs.g7等,如果镜像的系统和内核版本过低,在相关规格上启动会有异常。具体的实例规格信息,请参见实例规格族。 | 
修复命令详细说明
自动修复镜像的命令如下:
./main.sh --target=image --run <case> [--debug] [--dry-run] [-y]| 参数 | 是否必选 | 说明 | 
| 
 | 是 | 修复项,表示运行需要修复的检测项。 
 | 
| 
 | 否 | 建议首次修复时使用。仅打印修复脚本,不实际执行。 | 
| 
 | 否 | 启用详细日志输出,用于问题排查。 | 
| 
 | 否 | 自动确认所有修复步骤,跳过交互式提示。 | 
相关文档
通过工具检测镜像符合规范后,可获取Linux镜像文件,并导入自定义镜像到阿里云平台。
常见问题
为什么修复 nvme 、 selinux或 dhcp后问题依然存在?
这三个检测项的修复涉及内核参数或系统运行模式的根本性改变,必须重启操作系统才能应用新的配置。修复后需重启虚拟机,再运行检测进行验证。
对于单个检测项,应该如何修复?
以SshConfig检测项为例。
- 从检测与修复项总览表中,找到检测项 - SshConfig对应的修复项- sshd。
- 执行审查。 - 如要修复其他检测项,将sshd参数改为对应修复项。 - ./main.sh --target=image --run sshd --dry-run
- 执行修复。 - ./main.sh --target=image --run sshd