【问题标题】:KernelId for Packer EBS builderPacker EBS 构建器的 KernelId
【发布时间】:2017-04-28 00:07:14
【问题描述】:

有没有办法设置内核 ID 以与 Packer EBS 构建器一起使用?

我正在尝试为安装了 NVIDIA 驱动程序的 ECS(弹性容器服务)构建 AMI(亚马逊机器映像),以便我可以在容器中运行 GPU 任务。

这是我的 Packer 文件:

{
  "variables": {
    "aws_access_key": "",
    "aws_secret_key": "",
    "region": "us-west-2",

    "ami": "ami-62d35c02",
    "ami_arch": "x86_64",

    "nvidia_release": "367.57"
  },
  "builders": [
    {
      "type": "amazon-ebs",
      "access_key": "{{ user `aws_access_key` }}",
      "secret_key": "{{ user `aws_secret_key` }}",
      "region": "{{ user `region` }}",
      "source_ami": "{{ user `ami` }}",
      "instance_type": "g2.2xlarge",
      "ssh_username": "ec2-user",
      "ami_name": "ecs-machine-image",
      "user_data": "#cloud-config\nrepo_releasever: 2016.09"
    }
  ],
  "provisioners": [
    {
      "type": "shell",
      "inline": [
        "sudo yum update -y",
        "sudo yum groupinstall -y \"Development Tools\"",
        "sudo yum install -y kernel-devel-$(uname -r)",
        "cd /tmp",
        "curl -L -O http://us.download.nvidia.com/XFree86/Linux-{{ user `ami_arch` }}/{{ user `nvidia_release` }}/NVIDIA-Linux-{{ user `ami_arch` }}-{{ user `nvidia_release` }}.run",
        "chmod +x NVIDIA-Linux-{{ user `ami_arch` }}-{{ user `nvidia_release` }}.run",
        "echo `uname -a`",
        "sudo sh -c \"./NVIDIA-Linux-{{ user `ami_arch` }}-{{ user `nvidia_release` }}.run -silent\""
      ]
    }
  ]
}

这构建得很好,但是与内核版本相呼应的行(即uname -r)表明打包程序构建器正在运行具有内核4.4.51-40.58 的机器。但是,当我使用此 AMI 通过 AWS 控制台启动实例时,我看到该实例正在运行内核 4.9.20-11.31,因此它无法找到内核模块 nvidia,如果我运行 find,它就存在于其中/lib/modules/4.4.51-40.58/....

我尝试让 Packer 暂存具有以下内容的 /boot/grub/menu.lst 文件:

# created by imagebuilder
default=0
timeout=0
hiddenmenu

title Amazon Linux 2016.09 (4.4.51-40.58.amzn1.x86_64)
root (hd0,0)
kernel /boot/vmlinuz-4.4.51-40.58.amzn1.x86_64 root=LABEL=/ 
console=tty1 console=ttyS0
initrd /boot/initramfs-4.4.51-40.58.amzn1.x86_64.img

通过此更改,我再次启动了一个实例,但它运行的是4.4.51-40.60,而不是4.4.51-40.58,并且menu.lst 中有一个我没有指定的相应额外条目。

在我尝试执行反模式时是否将内核模块构建到 Packer EBS 映像中,还是我遗漏了什么?

【问题讨论】:

    标签: amazon-ecs packer


    【解决方案1】:

    g2.2xlarge 仅适用于 HVMKernel Id 仅对 PV 实例有效。

    问题是你这样做了:

    sudo yum update -y
    

    这将安装一个新内核,该内核将在下次启动时使用。但随后您为当前运行的内核安装 Nvidia 驱动程序。

    curl -L -O http://us.download.nvidia.com/XFree86/Linux-{{ user `ami_arch` }}/{{ user `nvidia_release` }}/NVIDIA-Linux-{{ user `ami_arch` }}-{{ user `nvidia_release` }}.run
    chmod +x NVIDIA-Linux-{{ user `ami_arch` }}-{{ user `nvidia_release` }}.run
    echo `uname -a`
    sudo sh -c "./NVIDIA-Linux-{{ user `ami_arch` }}-{{ user `nvidia_release` }}.run -silent"
    

    如果您不更新内核,或者您明确为新内核构建模块,我希望它能够正常工作。

    【讨论】:

      猜你喜欢
      • 2019-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-13
      • 2022-06-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多