操作场景
由于 ISO 镜像通常无法直接使用,当您需要在云服务器 CVM 上使用 ISO 镜像时,可以基于 ISO 镜像制作云服务器自定义镜像,实现将 ISO 镜像导入至 CVM的目的。本文为您介绍将 Linux ISO 镜像导入至 CVM 的具体操作。
基本概念
ISO 镜像
ISO 镜像是光盘镜像,一般用于烧录光盘。各个发行版的 ISO 镜像主要提供安装操作系统的功能,镜像本身通常不能直接使用。
ISO 镜像特点:
ISO 镜像一般仅提供将系统安装到硬盘的功能。
只读,ISO 镜像中的文件不支持修改。从 ISO 引导启动时,可能会在根目录挂载一个 overlayFS 提供修改功能,挂载的 overlayFS 上层是 tmpfs,修改是保存在内存中的,重启后修改会丢失。
一个典型的 ISO 镜像使用步骤如下图所示:

服务器镜像
服务器镜像提供启动云服务器实例所需的所有信息。
服务器镜像与 ISO 镜像相比:
服务器镜像启动 CVM 后可直接部署业务,ISO 镜像启动 CVM 后存在较多限制,一般无法直接使用。
服务器镜像创建的 CVM 是支持读写的,系统配置或文件在系统重启后都会保存,ISO 镜像重启会导致修改丢失。
导入方案
ISO 镜像无法直接导入使用,服务器镜像为可以直接启动的磁盘镜像,您可以基于 ISO 镜像制作云服务器自定义镜像。下文提供了两种方案供您参考:
方案一:通过救援模式导入(推荐)
导入流程

优缺点以及限制条件
优点:
兼容性好,Legacy BIOS 和 UEFI 启动模式均适用。
无需修改 grub。
实例无公网访问能力时可以使用。
缺点:
需要手动进入救援模式。
数据冗余复制次数较多,步骤较长。
限制条件:
适用于 Linux ISO,年代久远的 Linux 发行版可能存在兼容性问题。
操作步骤
1. 在对应发行版官网下载 ISO 镜像,并 导入镜像 到 CVM。
1.1 下载 ISO 镜像。
1.2 上传 ISO 镜像到 COS 存储桶。
1.3 将 COS 存储桶的 ISO 镜像导入 CVM。
注意:
导入镜像时要选中启用强制导入。
操作系统架构确保选择正确(一般是64位,即 x86_64,arm 镜像要选择 arm_64)。
请您确认当前选择的启动模式与镜像文件的启动模式一致,否则使用该镜像会影响您实例的正常启动。

2. 使用导入的镜像创建实例,详细操作请参见 通过自定义镜像创建实例。
注意:
创建实例时,至少需要挂载一块数据盘,且数据盘容量不应大于系统盘容量。导入镜像后,默认可用空间与数据盘大小一致。
数据盘和系统盘的大小都应该大于发行版推荐的磁盘大小。
若您的实例没有数据盘需求,建议您先选择按量计费计费模式,ISO 镜像导入成功后,可退还数据盘,再根据需求切换为合适的计费模式,详细操作请参见 按量计费转包年包月。
创建的实例配置要满足发行版的推荐配置,本文案例安装使用 Ubuntu 24.10发行版,实例使用 SA5.MEDIUM4 规格。图示如下:

3. 使用 VNC 方式登录新创建的云服务器实例,将 ISO 系统安装到数据盘 vdb,同时设置 root 密码。
说明:
根据不同发型版的要求,可能需要先选择清空磁盘后安装。
强制导入 ISO 镜像并创建实例,相当于把 ISO 通过 dd 命令写入到系统盘 vda。因为目前运行的程序就是系统盘 vda 上的安装程序,所以无法将系统装到系统盘 vda。





5. 在救援模式下,通过
dd
命令将数据盘内容写入到系统盘。dd if=/dev/vdb of=/dev/vda bs=2M status=progress

6. 在救援模式下,通过
dd
命令清空数据盘首部64M。避免数据盘中的一些 UUID 与系统盘重复,导致出现问题。dd if=/dev/zero of=/dev/vdb bs=2M count=32

7. 退出救援模式,退出后实例会自动重启。
说明:
方案二:通过数据盘引导的方式导入
导入流程

优缺点以及限制条件
优点:
数据冗余复制少,步骤相对较短。
缺点:
Legacy BIOS 和 UEFI 启动模式的操作不同。
Legacy BIOS 启动模式的镜像需要操作 grub。
限制条件:
适用于 Linux ISO,年代久远的 Linux 发行版可能有兼容性问题。
Windows 安装 ISO 文件无法用
dd
命令写入磁盘,需要安装额外工具。操作步骤
1. 创建云服务器实例。
创建的实例配置要满足发行版的推荐配置,本文案例安装使用 Ubuntu 24.10发行版,实例使用 SA5.MEDIUM4 规格。
注意:
创建实例时至少挂载一块数据盘,数据盘大小要大于发行版 ISO 的大小。
需要手动设置实例的登录密码,方便后续 VNC 登录。
系统盘需要大于发行版推荐的磁盘大小,且系统盘需要有足够的空间,用于在后续步骤下载存储 ISO 镜像。
实例必须具备公网访问能力,需要您创建实例时选中分配公网 IP,便于使用公网下载 ISO 镜像。
CVM 控制台实例操作系统信息可能与 ISO 文件的操作系统不一致,无法统一,但不影响实例的运行。

若您的实例没有数据盘需求,建议您先选择按量计费计费模式,ISO 镜像导入成功后,可退还数据盘,再根据需求切换为合适的计费模式,详细操作请参见 按量计费转包年包月。
下载的 ISO 镜像需要支持 UEFI 启动模式(一般会支持),创建实例时需要选择 TencentOS Server 3.1 (TK4) UEFI 版镜像。



2. 实例创建完成后,通过 VNC 登录实例,粘贴网址下载对应的 ISO。


3. 通过
dd
命令将 ISO 写入数据盘。dd if=<ISO文件名> of=/dev/vdb bs=2M status=progress

4. 通过 VNC 重启实例。
1. 如果是 UEFI 引导的实例(使用 TencentOS Server 3.1 (TK4) UEFI 版镜像),重启后立刻多次短按 F2,直到进入 firmware 界面。

注意:
重启后要立刻多次短按 F2,才能进入 firmware 界面,错过按 F2 的时机会进到 grub 界面。在 grub 界面按
c
键进入 grub cmdline,在 grub 界面输入fwsetup
命令也能进入 firmware 界面。

2. 在 firmware 界面选择 Boot Manager 选项。

3. 选择从 UEFI Misc Device 2 启动(Device 2 表示第二个磁盘,也就是数据盘)。

上述步骤操作成功时,会进入 ISO(这里是 Ubuntu 24.10)的 GRUB 页面,在该界面选择 Try or Install Ubuntu Server。

5. 安装系统到系统盘。
说明:
根据不同发型版的要求,可能需要先选择清空磁盘后安装。


6. 系统安装完成后,重启实例。
说明:
常见问题
系统安装完成并重启实例后,实例没有通过 DHCP 获取到 IP
问题现象
ip addr
输出的结果中 eth 网卡没有 IP 地址。
解决方案
建议采用如下方法之一来获取 IP:
说明:
方法一:如果实例上有 NetworkManager,可以用
nmtui
命令来调整机器的网络配置,配置调整后,机器会通过 DHCP 自动获取 IP。


方法二:如果实例上没有 NetworkManager,但有
dhclient
命令,可以通过 dhclient -1 -d <网卡名>
获取 IP,获取到 IP 后,可以用 Ctrl + C 退出 dhclient 进程。
方法三:如果实例上既没有 NetworkManager,也没有
dhclient
命令,可以考虑直接从 /dev/sr0
中获取 IP 信息,并手动配置。
如何判断系统当前的引导方式?如何判断 ISO 支持的引导方式?
系统当前引导方式判断方法:可以根据
/sys/firmware
目录下面的内容来判断当前系统的引导方式,如果/sys/firmware
目录下有efi
目录,则是 UEFI 引导,否则是 BIOS 引导。

ISO 文件是否支持 BIOS 引导判断方法:如果 ISO 文件前0~446个字节非空,那么一般支持 BIOS 引导,否则不支持 BIOS 引导。

ISO 文件是否支持 UEFI 引导判断方法:根据经验,一般2010年以后的 ISO 镜像都支持 UEFI 引导,时间更早的镜像可能支持或不支持 UEFI 引导。
更正式的方式是判断 ISO 文件中是否存在
efi/boot/bootx64.efi
文件,bootx64.efi
文件需要存储在 FAT 格式的 UEFI 引导分区中或者存储在 ISO 文件系统中。下面提供一种供参考的检查方式: