使用 ISO 镜像为 EC2 重装系统
前言
熟悉 AWS 的小伙伴都知道, EC2 作为云计算虚拟机服务的祖师爷, 并不支持直接挂载 ISO 镜像作为虚拟光驱, 当然也不支持直通 Console 进行 GUI 鼠标键盘操作 (现在 nitro 实例支持 Serial console, 不过还是没那么方便). 这就决定了 EC2 并不能像 VMware, VirtualBox 等环境中那样直接使用 ISO 镜像重装系统. 前段时间在网上冲浪的时候发现了这个宝藏开源脚本:
一键 VPS 系统重装脚本
- 一键重装到 Linux,支持 19 种常见发行版
- 一键重装到 Windows,使用官方原版 ISO 而非自制镜像,脚本支持自动查找 ISO 链接、自动安装 VirtIO 等公有云驱动
- 支持任意方向重装,即 Linux to Linux、Linux to Windows、Windows to Windows、Windows to Linux
- 自动设置 IP,智能设置动静态,支持 /32、/128、网关不在子网范围内、纯 IPv6、IPv4/IPv6 在不同的网卡
- 专门适配低配小鸡,比官方 netboot 需要更少的内存
- 全程用分区表 ID 识别硬盘,确保不会写错硬盘
- 支持 BIOS、EFI 引导,支持 ARM 服务器
- 不含自制包,所有资源均实时从镜像源获得
原理其实就是将系统重启到一套运行到内存里面的 Alpine 环境, 然后再执行预置的脚本完成系统自动安装部署的过程.
本文将使用该脚本演示使用准备好的 ISO 快速在 EC2 中重装操作系统为上古 Windows Server 2008 R2 的过程.
注意: 以下过程使用了 Amazon Linux 系统启动 EC2 实例, 因此重装后的 Windows 系统无法通过 AWS KMS 服务器进行系统激活, 即需要 BYOL (Bring Your Own License). 如需使用 AWS KMS 激活, 需要用 Windows 系统启动 EC2 实例, 然后再参考脚本的使用说明继续操作.
准备 EC2 实例
使用 Amazon Linux 2023 选择 64-bit (x86) 架构, 用 t3.small 类型启动实例即可.

注意修改实例根卷大小, Windows 嘛, 至少 32 GB 打底.

ISO 准备
本地准备好的 ISO 文件先上传到 S3 存储桶, 用 AWS CLI 创建 Presigned URL 给后面 reinstall 脚本访问用.
aws s3 presign s3://lpwm/ISO/cn_windows_server_2008_r2_standard_enterprise_datacenter_and_web_with_sp1_vl_build_x64_dvd_617396.iso --expires-in 7200
--expires-in 参数表明 URL 的有效时长, 单位为秒, 俩小时妥妥的够了.
记录命令返回的 URL.
reinstall
SSH 连接到准备好的实例:
# 下载 reinstall 脚本
curl -O https://cnb.cool/bin456789/reinstall/-/git/raw/main/reinstall.sh || wget -O ${_##*/} $_
# 指定 ISO 链接启动安装
sudo bash reinstall.sh windows \
--image-name "Windows Server 2008 R2 SERVERSTANDARD" \
--iso "上一步生成的 S3 presigned URL"
这里的 --image-name 如果不知道叫啥, 就随便写, 后面报错了会显示正确答案.
注意: 这一步输入的密码是一会儿实例重启后安装期间可以用于 SSH 登陆查看安装进度的密码, 并且也是最终操作系统的密码.
脚本结束后, 重启系统.

在此期间, 可以从 EC2 控制台检查实例的屏幕截图来观察进度.

这一步是在下载 ISO 镜像文件, 因为是放在 S3 上了, 所以速度很快.

如果之前 --image-name 参数写错了, 就会看到正确答案在这里, 抄下来后重头再来一遍. 😆

这是 --image-name 写对的效果, 继续等待就中…

开始启动 Windows (安装程序)

随后会有一段时间黑屏, 属于正常现象, 多等一会儿就可以刷出来安装进度了.

再等会儿看到锁屏界面就可以使用 mstsc 进行连接了.


更多推荐

所有评论(0)