You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu Server 20.04离线自动安装时如何指定预下载的内核包进行安装?

Ubuntu Server 20.04离线自动安装时如何指定预下载的内核包进行安装?

嘿,我来帮你搞定这个离线安装特定内核的问题!针对Ubuntu Server的autoinstall系统,核心思路和老的preseed有点相似——都是让安装器能找到本地的包源,但配置方式略有不同,下面一步步来:

第一步:整理本地内核包的目录结构

首先,把你预下载好的三个内核相关deb包(linux-image-5.15.0-58-generic.deblinux-modules-extra-5.15.0-58-generic.deblinux-headers-5.15.0-58-generic.deb)放到安装镜像的/cdrom/local-packages目录下(目录名可以自定义,只要后续配置对应上就行)。

然后,在本地电脑(非安装环境)进入这个local-packages目录,生成APT需要的索引文件——离线源必须要有索引才能被识别,执行命令:

dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz

执行完成后,目录里会多出Packages.gz文件,把这个文件也一起放到镜像的/cdrom/local-packages中。

第二步:修改你的user-data配置

接下来更新/nocloud/user-data,主要是添加本地源配置、禁用网络源(避免安装器尝试联网),确保内核包安装指向本地源。修改后的完整配置如下:

autoinstall:
  version: 1
  identity:
    hostname: dev-pc
    username: dev-user
    password: encryptedpasswordhere
  locale: en_GB
  keyboard:
    layout: gb
  # 添加本地APT源配置,禁用默认网络源
  sources:
    - source: "deb [trusted=yes] cdrom:/// local-packages/"
      disable_sources: true  # 禁用所有默认网络源,避免离线报错
  # 指定要安装的内核包,保持原包名即可
  kernel:
    package: linux-image-5.15.0-58-generic
  packages:
    - linux-modules-extra-5.15.0-58-generic
    - linux-headers-5.15.0-58-generic
  late-commands:
    - cp -r /cdrom/install /target/
    - curtin in-target mkdir /etc/systemd/system/getty@tty1.service.d
    - curtin in-target cp /install/override_dev.conf /etc/systemd/system/getty@tty1.service.d/override.conf
user-data:
  runcmd:
    - mv /install /home/dev-user/
    - chown -R dev-user /home/dev-user/install
    - /bin/sh -c 'echo "bash install/./postinstall_mgr.sh" >> /home/dev-user/.bashrc'
    - touch /etc/cloud/cloud-init.disabled
    - reboot now

关键细节说明

  1. sources配置deb [trusted=yes] cdrom:/// local-packages/告诉APT,本地CD-ROM里的local-packages目录是可信源;disable_sources: true会关闭所有默认网络源,避免离线环境下安装器报错。
  2. 内核包指定:不需要修改包名,APT会自动从本地源匹配对应名称的包。
  3. 镜像制作:确保local-packages目录和修改后的nocloud目录都被加入安装镜像,安装过程中/cdrom会自动挂载,安装器就能访问到这些文件。

这样调整后,autoinstaller就会完全从你预下载的本地deb包安装指定内核,不需要联网啦!

备注:内容来源于stack exchange,提问作者Wezzoid

火山引擎 最新活动