You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 20.04自动安装时无需重新打包ISO,从外部磁盘加载cloud-init配置的Grub配置方法求助

Ubuntu 20.04自动安装时无需重新打包ISO,从外部磁盘加载cloud-init配置的Grub配置方法求助

你遇到的问题我之前用戴尔iDRAC做自动部署时也碰到过,Grub里直接用(hd3)这种设备标识在安装环境里不生效,因为安装阶段的设备命名规则和Grub里的不一样。这里给你几个可行的解决方案:


方法1:通过磁盘标签(LABEL)指定外部设备

这是最省心的方式,自定义标签不会随设备顺序变化:

  1. 先给你的外部.img文件里的分区设置一个唯一标签(比如cloud-config):
    • 如果是ext文件系统,用e2label工具:e2label /dev/你的分区路径 cloud-config
    • 如果是FAT32,用mlabel工具:mlabel -i 你的img文件 ::cloud-config
  2. 修改Grub的linux启动参数为:
    linux /casper/vmlinuz autoinstall ds=nocloud;s=/cloud-init/ root=LABEL=cloud-config ro ---
    
    安装环境会自动挂载带有cloud-config标签的分区,cloud-init就能顺利读取/cloud-init目录下的user-data和meta-data了。

方法2:通过UUID指定外部设备

如果不想用标签,也可以用分区的UUID(UUID是唯一且固定的,不会受设备顺序影响):

  1. 获取外部分区的UUID:用blkid工具查看,比如blkid /dev/你的分区路径,会输出类似UUID="xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"的内容
  2. 修改Grub参数为:
    linux /casper/vmlinuz autoinstall ds=nocloud;s=/cloud-init/ root=UUID=xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ro ---
    
    这个原理和方法1一致,只是用UUID替代了标签,适合对磁盘标识有严格规范的场景。

方法3:通过硬件路径指定设备(应急测试方案)

如果只是临时测试不想修改磁盘标签/UUID,可以用基于硬件连接的固定路径,这个路径不会随设备顺序变化:

  1. 在Grub控制台里执行ls /dev/disk/by-path/,找到对应外部设备的路径(比如pci-0000:02:00.0-scsi-0:0:1:0-part1)
  2. 修改Grub参数为:
    linux /casper/vmlinuz autoinstall ds=nocloud;dev=/dev/disk/by-path/你的设备路径;s=/cloud-init/ ---
    

⚠️ 注意:你的外部磁盘里的cloud-init目录必须同时存在user-data和meta-data两个文件,meta-data可以是空文件,但不能缺失,否则cloud-init会启动失败。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 07:39:50