> **本文作者 韩旭**
>
> 北京西云数据科技有限公司亚马逊云科技技术支持
>
> 亚马逊云科技技领云博主
自从成功通过 CloudEndure 导入了 Windows 11 后,便开始尝试在 [Amazon EC2 ](https://aws.amazon.com/cn/ec2/?trk=cndc-detail)上安装其他操作系统,比如 System76 开发的 Pop!\_OS,是一个十分界面友好的 Linux。虽然它基于 Ubuntu 开发,但是他仍然不在 CloudEndure 的兼容列表中,由于内核过新等原因导致了兼容性问题。

如果严格按照兼容性列表来选择操作系统,你可能无法直接使用 Pop!\_OS。然而,**借助 CloudEndure 和其他工具,我们可以绕过这些限制,将不支持的操作系统成功导入到 [Amazon EC2 ](https://aws.amazon.com/cn/ec2/?trk=cndc-detail)中。**
### **准备:VMware 虚拟化**
由于 Pop!\_OS 没有直接提供 .raw 格式的镜像文件,首先我们需要在虚拟机(如VMware)中安装系统并导出磁盘文件,然后再使用第三方工具将 .vmdk 文件转换为 .raw 格式。
1. **安装 OpenSSH 服务**:为了在导入到 [Amazon EC2 ](https://aws.amazon.com/cn/ec2/?trk=cndc-detail)之前能够远程访问系统,需要安装并启动 SSH 服务。
```js
sudo apt install openssh-server
sudo systemctl enable ssh
sudo ufw allow ssh
```
2. **虚拟机环境设置**:许多虚拟机软件没有直接支持 Pop!\_OS 的选项,因此可以在 VMware 中选择 Ubuntu 作为模板。这不会影响功能,只是磁盘名字会显示为 Ubuntu。

### **插曲:怎么选择 AMI?**
采取的方法是使用官方的 AMI 启动实例然后替换根卷,然后借助平台的虚拟化能力启动导入的 OS。一开始选择 Amazon Linux 2023,遇到了无法引导的问题——系统启动时找不到 GRUB 引导程序,直接进入了 UEFI shell。这是因为大多数虚拟化对 UEFI 的支持都不是很好,换成 Amazon Linux 2,由 Legacy BIOS 引导,才可以成功启动。

### **迁移:DD 刻录磁盘**
成功导出 Pop!\_OS 的.vmdk文件并转换为 .raw 格式后,可以使用以下步骤将系统迁移到 Amazon EC2:
1. **安装并提取 .vmdk 文件**:首先在虚拟机中安装 Pop!\_OS 并导出 .vmdk 文件。如果目标操作系统提供 .raw 格式的镜像,可以跳过此步骤。
2. **转换并传输 .raw 文件**:将 .vmdk 转换为 .raw 格式,并将 .raw 文件传输到一台机器 A 上。挂载一个新的空的 EBS 卷到机器 A,使用 dd 命令将 .raw 文件写入 EBS 卷中。确保不对该卷进行分区或格式化。
3. **配置 [Amazon EC2 ](https://aws.amazon.com/cn/ec2/?trk=cndc-detail)实例**:创建一个新的 [Amazon EC2 ](https://aws.amazon.com/cn/ec2/?trk=cndc-detail)实例 B(最好选择 Legacy 引导模式),然后停止实例并替换其根卷为刚才写入数据的 EBS 卷。
4. **启动实例**:重新启动 [Amazon EC2 ](https://aws.amazon.com/cn/ec2/?trk=cndc-detail)实例 B,等待健康检查通过后,系统应该可以正常运行。
```js
dd if=./ubuntu.raw of=/dev/nvme1n1 bs=4M
```
### **登录:日常的 SSH 和 RDP**
通过以上步骤,成功登录到了 Pop!_OS 系统,并开始配置远程访问,以下是 neofetch 的界面,显示了系统的名字以及 [Amazon EC2 ](https://aws.amazon.com/cn/ec2/?trk=cndc-detail)的实例类型和其他配置。

为了通过 RDP 远程访问 Pop!_OS,可以使用以下步骤安装并配置 xrdp 服务:
```js
sudo apt-get update
sudo apt-get -y install xrdp
sudo systemctl enable xrdp
sudo systemctl start xrdp
```
在配置完成后,可以使用 RDP 客户端连接到服务器。然而,由于 Pop!_OS 是为桌面环境设计的,在服务器端使用 GNOME 桌面时,响应可能会出现卡顿,尤其是当开启自动锁屏等功能时,还可能导致 RDP 连接会话断开。

### **体验:多一个选择**
虽然桌面环境的响应速度还可以再提高(Gnome 桌面卡顿),但总体来说还算比较满意,打开 IDE 编写代码之后体验也还可以。

尽管亚马逊云科技官方支持了 Amazon Marketplace 的操作系统,不原生支持 Pop!_OS,但我们可以借助虚拟化的方式,在云端运行客制化的操作系统。大家可以根据需求尝试新体验!
**本文根据原文内容有微调。*



