【问题标题】:How do I install a custom kernel on a google compute engine instance?如何在谷歌计算引擎实例上安装自定义内核?
【发布时间】:2017-11-09 15:03:28
【问题描述】:

我想在 Google Compute Engine 实例上安装自定义内核映像。我有一个正在运行的实例:

foo@instance-1:/boot/efi$ uname -a
Linux instance-1 4.10.0-22-generic #24-Ubuntu SMP Mon May 22 17:43:20 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

我已经构建并安装了我的内核映像:

sudo dpkg -i linux-image-4.10.0-rc8.10.0-rc8_amd64.deb

它显示在 grub 配置文件中,我已将默认 grub 菜单项设置为正确的数字,并且我已经运行了

sudo update-grub

然而,当我重新启动时,我得到了与开始时相同的内核。

这方面的 Google 文档似乎不存在。有一个地方表明我可能必须在外部创建映像、安装内核并导入它。但是,我需要做很多事情,所以我宁愿以老式的方式安装新内核。

【问题讨论】:

标签: linux-kernel google-compute-engine grub2


【解决方案1】:

对我有用的是进入 /boot/ 并删除旧图像,然后运行 ​​sudo dpkg -i <new_image> 并使用 sudo reboot 重新启动系统

【讨论】:

    【解决方案2】:

    原来在谷歌的 Ubuntu 镜像中,有一个 grub 配置文件:

    /etc/default/grub.d/50-cloudimg-settings.cfg
    

    覆盖

    /etc/default/grub
    

    编辑第一个文件后一切正常。

    【讨论】:

    • 搜索引擎提示:这也可以为 gcp 实例添加额外的 linux 内核启动参数
    【解决方案3】:

    在尝试此操作之前,我假设您有一个备用选项?以某种方式回到您当前的状态。这很重要,因为您似乎没有对系统的物理访问权限。

    请检查/boot/grub/grub.cfg 显示的默认内核。这将是一个以menuentry 开头的部分开始,在此之下,一个以linux 开头的条目。如果它指向 /boot/<default-kernel>,那么这就是您需要与 initrd 条目一起更新的内容,以便内核映像和 initramfs 都指向您的自定义内核。

    此外,内核映像的引导顺序可能是按字母顺序排列的,因此较新的内核映像(按字母顺序排列)优先于较旧的内核映像。在这种情况下,如果您可以将内核映像的文件名更改为高于默认内核映像,并且相应的 initramfs 和配置文件相同(它们的名称都将相似),然后运行update-grub,这可能是更快的启动方式您的自定义内核。您可以在/boot/ 下找到这些文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-06
      • 1970-01-01
      • 2017-02-09
      • 1970-01-01
      相关资源
      最近更新 更多