【问题标题】:How does an Amazon EC2 instance select its kernel?Amazon EC2 实例如何选择其内核?
【发布时间】:2010-10-01 17:14:17
【问题描述】:

我有一个使用 Amazon 提供的 Fedora 8 64 位 AMI 的 Amazon EC2 实例,我想将其升级到 Fedora 10。

我尝试通过运行“yum update”来升级内核和所有软件包。这似乎工作正常,我看到我现在已经安装了 fc10 内核,并且我安装的所有软件包也都更新到了 Fedora 10 版本。

但是,我也注意到 fc8 内核仍然安装,当我重新启动我的映像时,它会返回运行 fc8 内核,而不是 fc10 内核(我从“uname -a”的输出推断出这一点) .

是否需要采取一些额外的步骤才能让我的映像在 fc10 内核下启动,或者这是否可能?亚马逊文档没有发现任何对我有用的东西。

【问题讨论】:

  • 注意:这个问题及其答案与 2009 年非常相关,但不再适用于现代 Amazon EC2,后者(大部分)使用 HVM 并允许您随心所欲地使用自己的任意内核。跨度>

标签: amazon-web-services amazon-ec2 kernel fedora


【解决方案1】:

您可以创建自己的 AMI,但需要使用 Amazon 提供的内核。他们提供的最新版本是 2.6.21。我有一个用于 CentOS 实例的 fc(Fedora Core)内核列表。我很确定它们在 Ubuntu 上也能正常工作。

当您使用 ec2-register 注册 AMI 时,您需要将它们烘焙到您的 AMI 中。它们可以在您启动实例时更改,但我喜欢从正确的 AKI(内核)和 ARI(ramdisk)开始。添加对临时磁盘的支持也很有帮助。您正在为更大实例的额外存储付费,您不妨使用它。我对 ec2-register 的魔法咒语:

ec2-register --snapshot snap-12345678 -K pk-XXXXXXXXXXX.pem -C cert-XXXXXXXXXXX.pem \
--description "EBS CentOS 5.5 i386" --name "base-image-i386-4" --architecture i386 \
--root-device-name /dev/sda1 -b /dev/sdb=ephemeral0 -b /dev/sdc=ephemeral1 \
-b /dev/sdd=ephemeral2 -b /dev/sde=ephemeral3 --region us-east-1 \
--kernel aki-6eaa4907 --ramdisk ari-e7dc3c8e

您可以更改区域、快照 ID、描述、名称、拱门等。

还要记住内核和 ramdisk 是特定于区域的。我不记得我从哪里得到这个列表,但我很难找到它。希望它可以帮助某人。

2.6.21 内核可用作:

美国地区:

32 位:

* aki-6eaa4907
* ari-e7dc3c8e
* ami-48aa4921

64 位:

* aki-a3d737ca
* ari-4fdf3f26
* ami-f61dfd9f

欧盟地区:

32 位:

* aki-02486376
* ari-aa6348de
* ami-0a48637e

64 位:

* aki-f2634886
* ari-a06348d4
* ami-927a51e6

亚太地区:

64 位:

* aki-07f58a55
* ari-27f58a75
* ami-ddf58a8f

32 位

* aki-01f58a53
* ari-25f58a77
* ami-c3f58a91

【讨论】:

    【解决方案2】:

    您无法将您的自己的内核映像上传到 EC2/Amazon。只有授权用户才能上传内核镜像。 即使您上传自己的 Linux 操作系统映像并在 EC2 中从它启动,也会加载一个与您最初上传的内核不同的预定内核。这是亚马逊做出的政策决定。您最多可以做的是从您希望实例启动的预定和可用亚马逊内核列表中选择更改默认内核版本。

    可以但是构建自己的内核模块或为加载的内核重建那些。编译您自己的模块或重新编译正在加载的内核提供的模块有点棘手,因为亚马逊中的内核是使用 Xen 管理程序修改的内核。您需要找出在您的实例中加载的特定内核源代码。

    干杯

    埃内斯托·贝尼迪托

    【讨论】:

      【解决方案3】:

      从技术上讲,至少直到最近,您还无法选择内核。您只能选择要打包到映像中的模块。亚马逊保留对内核的完全控制权。这可能是必要的,因为 Xen 虚拟化必须以某种特殊方式与内核交互。

      在最近的更新中(几个月前,我上次检查时),亚马逊扩展了他们的一些 API 和工具,允许您从他们提供的几个内核中选择一个。例如,您可以在 2.6.16 和 2.6.18 之间进行选择。

      看起来最终可能会支持构建您自己的“内核映像”,但为此所需的工具并不完整。我猜他们(亚马逊)仅向特殊合作伙伴提供此功能,因为我看到出现了几个具有特殊关联内核映像的第三方映像。

      【讨论】:

        【解决方案4】:

        您最好的选择可能是创建自己的 AMI;加载 AMI 时获得的内核是创建 AMI 时正在运行的内核。

        【讨论】:

        • 谢谢,Amy - 我试过这个,但我发现加载 AMI 时获得的内核是在创建 AMI 的实例被实例化时运行的内核。因此,如果您从 FC8 开始,升级到 FC10,滚动 AMI 并启动新的 AMI,它仍在运行 FC8 内核。
        【解决方案5】:

        根据我使用 OpenSolaris AMI 的经验,这是不可能的。 pkg image-update 工具也在 EC2 环境中被禁用,以精确防止这种情况发生。原因可能是每个映像都与特定的 ramdisk 和内核(aki 和 ari)相关联。而且,它们不能更新为新的。我认为,这也适用于其他 AMI,正如您在案例中所观察到的那样。

        【讨论】:

          【解决方案6】:

          看起来你不能。这家伙试过了,还没成功。

          http://developer.amazonwebservices.com/connect/thread.jspa?messageID=72964#72964

          【讨论】:

          猜你喜欢
          • 2019-04-03
          • 1970-01-01
          • 1970-01-01
          • 2014-07-16
          • 1970-01-01
          • 2018-08-23
          • 2015-11-15
          • 1970-01-01
          • 2013-03-28
          相关资源
          最近更新 更多