VM-Import 导入 Debian 12 系统

介绍

之前介绍过使用 VM-Import 导入 Windows 系统到 AWS 环境启动 EC2 实例, 本文将介绍如何导入 Debian 12 系统. 本地虚拟化使用 VMWare Workstation 创建虚拟机安装和准备 Debian 12 系统, 导出 OVA 文件后上传到 S3 存储桶中再使用 AWSCLI 执行 VM-Import 命令实现导入过程.

准备工作

  1. 创建或选择一个 S3 存储桶, 建议创建个新的, 专门用来存储要导入的本地 VM 磁盘文件
  2. 参考之前文档 本地VM导入至AWS EC2 创建IAM角色进行授权 部分内容创建名为 vmimport 的 IAM Role (如果之前创建过就无需再建)
  3. 安装 AWSCLI 工具并配置好 AK/SK 建议使用管理员权限的 IAM User 身份
    https://docs.aws.amazon.com/zh_cn/cli/latest/userguide/install-cliv2.html
  4. 下载系统 ISO, 可以从清华镜像站下载, 速度快:
    https://mirrors.tuna.tsinghua.edu.cn/debian-cd/current-live/amd64/iso-hybrid/debian-live-12.5.0-amd64-standard.iso

本地 VM 准备

VMWare Workstation 中创建一台新的虚拟机, 使用下载好的 Debian 12 ISO 文件正常安装系统.

主要需要留意的就是创建磁盘时大小给 8GB 就行, 注意选择 将虚拟磁盘存储为单个文件

系统安装按照正常的流程配置即可, 为了保证导入的成功率, 建议磁盘分区时使用整个磁盘, 不用 LVM

单个分区

其余选项正常配置就行, 安装完成后进入等待登录界面

打开虚拟机设置, 删掉 CD/DVD 光驱设备

由于安装的是最基础的系统, 所以是不包含 SSH 服务的, 使用 root 账号登录系统后安装必要的软件包和配置系统:

bash 复制代码
# 安装包
apt install -y openssh-server amazon-ec2-utils amazon-ec2-net-utils cloud-init

# 配置 GRUB 支持 Serial Console
vi /etc/default/grub.d/50-cloudimg-settings.cfg

50-cloudimg-settings.cfg 粘贴以下内容后保存关闭.

ini 复制代码
GRUB_RECORDFAIL_TIMEOUT=0
GRUB_TIMEOUT=1
GRUB_TIMEOUT_STYLE=menu
GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0 nvme_core.io_timeout=4294967295"
GRUB_TERMINAL="console serial"
GRUB_SERIAL_COMMAND="serial --speed 115200"
bash 复制代码
# GRUB 更新配置
update-grub

# 关机
init 0

上面修改 GRUB 配置是为了预防导入后如果出现问题还可以通过 Serial Console 方式访问实例

虚拟机关闭后点击菜单 > 文件 > 导出为 OVF

将导出后最大的的 .vmdk 虚拟机磁盘文件上传到 S3 桶

上传可以用浏览器访问 S3 控制台或者在本地执行 AWS CLI 命令:

powershell 复制代码
aws s3 cp Debian12-disk1.vmdk s3://lpwm/vm/

VM Import 导入

等待 S3 上传完成后, 继续在本地创建导入任务的 json 配置文件:

json 复制代码
{
    "Description": "Deibian 12 import",
    "Format": "vmdk",
    "UserBucket": {
        "S3Bucket": "lpwm",
        "S3Key": "vm/Debian12-disk1.vmdk"
    }
}

继续执行 AWS CLI 命令:

powershell 复制代码
aws ec2 import-snapshot --description "Debian12" --disk-container "file://config.json"

复制命令输出中的 ImportTaskId 用于查看任务状态:

powershell 复制代码
aws ec2 describe-import-snapshot-tasks --import-task-ids import-snap-098eb6a74f12cb0fb

观察 Status 变成 "completed" 导入完成, 大概耗时 3 分钟左右. 记录 SnapshotId.

启动测试实例

在 EC2 控制台 > Snapshots 搜索上面记录的 SnapshotId 找到对应资源 > Actions > Create image from snapshot

起个名字, 写上 Description, 其他配置保持默认 > Create image

打开创建好的 AMI > Launch instance from AMI

和普通启动实例过程一样完成向导配置, 启动后观察实例屏幕截图确认启动过程:

启动完成后进入等待登录界面:

此时从本地即可使用用户名密码方式 SSH 访问实例.

补充说明

和之前导入 Windows 系统的操作不同, 这里使用的命令是 aws ec2 import-snapshot 导入 Snapshot, 再将 Snapshot 封装成 AMI 启动实例. 如果用 aws ec2 import-image 导入时会出现卡在进度 27% 走不动的情况, 可能和安装的 Debian 最小系统环境有关, 后台在进行某些任务时出现了问题, 不过暂无法确认具体原因.

相关推荐
KIDULT°15 小时前
MySQL系列 (1):数据库原理
运维·数据库·mysql·云计算
wewowilling17 小时前
认识微服务
java·运维·微服务·springcloud
玖石书17 小时前
Ubuntu 24.04 UFW 全命令攻略:从入门到端口开放实战
linux·运维·ubuntu
weifont19 小时前
自动化抓取和上架商品:能不动手,就少动手
运维·前端·自动化
拂拉氏19 小时前
【知识讲解】 Linux之动静态库的了解
linux·运维·服务器·动静态库
Mikko720 小时前
Linux 重启后日志没了?进程被 OOM 杀了去哪看?logrotate 之后日志还往旧文件写?三台真机实测日志与性能排查
linux·运维·centos
光依旧20 小时前
发版就掉请求?Spring Boot优雅停机的四步
运维·spring boot·nginx·高可用·优雅停机·mcp server
yichengerp1 天前
电子行业常用erp系统有哪些?推荐适合中小电子厂的易呈erp软件,操作简单,易落地
大数据·运维·人工智能·云计算·制造
天国梦1 天前
国密门禁品牌怎么选?2026年最新3个避坑要点
运维·服务器·数据库·python
信可维1 天前
自动化操作多平台账号:登录态、双会话与 User Data 的 3 个坑
运维·自动化