发布FreeBSD/EC2桌面AMI
摘要
AWS EC2上FreeBSD的新桌面AMI已发布,允许用户通过远程桌面协议运行带有图形用户界面的FreeBSD,并提供设置说明。
<p><a href="https://lobste.rs/s/ufor73/launching_freebsd_ec2_desktop_amis">评论</a></p>
查看缓存全文
缓存时间: 2026/09/25 03:08
# 启动 FreeBSD/EC2 桌面 AMI
来源:https://www.daemonology.net/blog/2026-09-24-Launching-FreeBSD-EC2-desktop-AMIs.html
我很高兴地宣布——别担心,我不会再搞那种(https://www.daemonology.net/blog/2026-08-27-Launching-Route-53-Files.html)了——FreeBSD/EC2 平台的一个新功能:桌面 AMI。大多数人认为 FreeBSD 是一个仅通过命令行使用的服务器操作系统,但任何参加过 BSD 会议的人都可以证明,它也能很好地运行图形界面。在 BSDCan(https://www.bsdcan.org/)上,我看到许多开发者在 Framework、Lenovo 和 Dell 的笔记本电脑上运行 FreeBSD,并且在很多设备上认出了 KDE 和 Xfce 桌面环境。
桌面 AMI 旨在让新用户更容易发现和开始使用 FreeBSD。您可以在 EC2 中启动它们,包括作为 AWS 免费套餐(https://aws.amazon.com/free/)的一部分,并使用与连接 Windows 虚拟机相同的远程桌面协议(https://en.wikipedia.org/wiki/Remote_Desktop_Protocol)进行连接。事实上,我精心设计了这些 AMI,使其行为尽可能接近 Windows 镜像——当然,例外之处在于,由于它们运行的是 FreeBSD,您无需为操作系统付费。
**让我向您展示如何开始。**
我已经在运行 FreeBSD,因此我使用 FreeBSD 命令行中的 AWS CLI(https://aws.amazon.com/cli/),但 Amazon 表示 AWS CLI 支持 Linux、macOS 和 Windows,因此无论您运行什么操作系统,都应该能够按照步骤操作。由于我住在加拿大温哥华附近,我使用 ca-west-1 AWS 区域,但您当然可以选择最方便您的区域。
我首先创建一个 EC2 安全组,允许从我的 IP 地址访问 TCP/3389 端口:
```
$ aws --region ca-west-1 ec2 create-security-group \
--group-name "remote-desktop" \
--description "Allows RDP Access"
$ aws --region ca-west-1 ec2 authorize-security-group-ingress \
--group-name remote-desktop --protocol tcp --port 3389 \
--cidr 1.2.3.4/32
```
然后创建一个 SSH 密钥对——我们不会使用这个密钥对进行 SSH 连接(尽管实际上,如果我们打开安全组中的该端口,启动的镜像将会启用 SSH),而是用于加密一个随机生成的登录密码。请注意,我们需要一些非默认的 `ssh-keygen` 选项:为了使密码加密正常工作,我们需要一个 RSA 密钥,并且需要将其存储为 PEM 格式且不设密码短语。(如果您的操作系统上没有 `ssh-keygen`,您可以通过 AWS 控制台生成密钥对。)
```
$ ssh-keygen -q -t rsa -f ec2_desktop_key -N "" -m PEM
$ aws --region ca-west-1 ec2 import-key-pair --key-name desktop \
--public-key-material fileb://ec2_desktop_key.pub
```
创建了安全组和密钥对后,我查找 FreeBSD 15.1-STABLE 的最新桌面 AMI 并启动一个实例:
```
$ aws --region ca-west-1 ssm get-parameter \
--name /aws/service/freebsd/amd64/desktop/ufs/15.1/STABLE \
--query 'Parameter.Value' --output text
ami-0338948310e7f17c3
$ aws --region ca-west-1 ec2 run-instances \
--query 'Instances[].InstanceId' --output text \
--key-name desktop --security-groups remote-desktop \
--instance-type m7i-flex.large --image-id ami-0338948310e7f17c3
i-0b683b23ff0e08515
```
FreeBSD 现在将启动,创建 `ec2-user` 账户,并为其设置一个随机密码,我们可以使用 `aws ec2 get-password-data` 命令(也称为 EC2 GetPasswordData API)来获取它:
```
$ time aws --region ca-west-1 ec2 wait password-data-available \
--instance-id i-0b683b23ff0e08515
92.08 real 0.66 user 0.08 sys
$ aws --region ca-west-1 ec2 get-password-data \
--query 'PasswordData' --output text \
--priv-launch-key ec2_desktop_key --instance-id i-0b683b23ff0e08515
35zukC+t+:hqQZv3
```
现在我们需要查找实例的 IP 地址,还应该获取主机证书指纹——这有两个版本,一个较旧的 SHA1 指纹和一个较新的 SHA256 指纹。通常,在 UNIX 上运行的工具会使用 SHA256 指纹,而 Windows 工具使用 SHA1 指纹。(如果第二个命令没有立即打印出指纹,请稍等几秒再试。)
```
$ aws --region ca-west-1 ec2 describe-instances \
--query 'Reservations[].Instances[].PublicIpAddress' --output text \
--instance-ids i-0b683b23ff0e08515
56.112.45.61
$ aws --region ca-west-1 ec2 get-console-output \
--query 'Output' --output text --latest \
--instance-id i-0b683b23ff0e08515 | grep THUMBPRINT
RDPCERTIFICATE-THUMBPRINT: 2B9840830741A21B4777FF59F69E1D0E5CDAC8D8
RDPCERTIFICATE-THUMBPRINT256: 3b:0f:1a:5d:ab:98:bc:1f:1d:fb:c8:4c:3b:11:7a:09:6b:70:0f:41:83:fe:f4:97:32:50:dd:41:7e:94:08:60
```
由于我是在 FreeBSD 上运行,我使用 `xfreerdp` 连接到实例;如果您在 macOS 或 Windows 上运行,您需要在此处运行适合您操作系统的相应工具。无论使用哪种工具,您都需要指定用户名 `ec2-user`、IP 地址(如上所示)和密码(如上所示——如果从命令行运行,您可能需要将其引起来以避免 shell 元字符问题);并且在某个时刻,您应该指定主机证书指纹,或者在客户端要求您确认其正确性时进行核对。对于我来说,使用 FreeBSD,我运行:
```
$ xfreerdp /u:ec2-user '/p:35zukC+t+:hqQZv3' /v:56.112.45.61 \
/cert:fingerprint:sha256:3b:0f:1a:5d:ab:98:bc:1f:1d:fb:c8:4c:3b:11:7a:09:6b:70:0f:41:83:fe:f4:97:32:50:dd:41:7e:94:08:60
```
经过几秒钟的 KDE 会话初始化后,我面前出现了一个熟悉的图形界面环境。
完成后,我当然会进行清理,终止 EC2 实例并删除我创建的密钥对和安全组。(如果删除安全组失败,请等待几秒后重试;在使用它的实例消失之前,您无法删除安全组。)
```
$ aws --region ca-west-1 ec2 terminate-instances \
--instance-ids i-0b683b23ff0e08515
$ aws --region ca-west-1 ec2 delete-key-pair --key-name desktop
$ aws --region ca-west-1 ec2 delete-security-group --group-name remote-desktop
```
**需要了解的事项**
让我分享一些我认为对您有用的重要技术细节。
- 桌面 AMI 使用 KDE,并预装了 Chromium 和 LibreOffice;您当然可以使用 `pkg` 工具安装其他软件,但我想提供一个有用的起点。
- 桌面 AMI 目前不适用于 arm64;由于一些我尚未完全理解的原因,我们没有 arm64 的 Chromium 软件包。
- 与所有 FreeBSD AMI 一样,这些 AMI 同时发布 UFS 根和 ZFS 根版本;如果您愿意,可以通过在上面的 `ssm get-parameter` 命令中将 `ufs` 更改为 `zfs` 来使用 ZFS 根。
- AWS 控制台不知道这些 AMI 支持 RDP,因此如果您通过其“启动实例”向导启动实例,它将建议创建一个开放了 TCP/22 端口而非 TCP/3389 端口的安全组;并且“连接”向导将显示 SSH 说明,而非像 Windows 那样显示 RDP 说明。我已要求 Amazon 提供一种机制,以便为 AMI 标记支持 RDP,从而启用该缺失的功能。
- 我预计这些将成为 FreeBSD 15.2-RELEASE 的一部分,该版本将于 12 月发布。
**定价和可用性**
FreeBSD 桌面 AMI 与 FreeBSD 项目发布的所有 AMI 一样,是免费的;您只需支付 EC2 基础设施的费用。它们在除中东(巴林)和中东(阿联酋)之外的所有商用 AWS 区域均可用,由于这两个区域持续存在可用性问题。
如果您一直在考虑尝试 FreeBSD,现在正是时候:去启动一个实例吧!
由 Disqus(https://disqus.com/)提供的博客评论功能
相似文章
FreeBSD 网站的新设计
FreeBSD 项目为其官方网站推出了新设计,突出了操作系统的特性,如 ZFS、虚拟化、Jails、网络、文档和社区。
笔记本电脑上的 FreeBSD 15
作者分享了他们在笔记本电脑上使用 FreeBSD 15 的积极体验,重点介绍了 pkgbase、LinuxKPI 驱动程序和笔记本电脑支持项目等改进,并提供了在 ThinkPad X1 Carbon 上安装和配置 KDE Plasma 6 的分步指南。
FreeBSD 基金会执行董事尝试在笔记本电脑上日常使用 FreeBSD
FreeBSD 基金会执行董事 Deb Goodkin 成功在 Framework 笔记本电脑上日常使用 FreeBSD,克服了长期存在的硬件支持问题。
以每月4美元在 DigitalOcean 上运行 OpenBSD
本文提供了在 DigitalOcean 上以每月4美元设置 OpenBSD 的分步指南,涵盖了从下载操作系统镜像到创建和配置 droplet 的全过程。
我尝试将 NetBSD 作为桌面系统使用,感觉像是以一种美好的方式步入了 90 年代
文章讲述了作者安装和使用 NetBSD 作为桌面操作系统的体验,强调了它的复古感以及作为 BSD Unix 后裔的历史意义。