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

求助:使用xorriso制作带自定义Grub配置与自动安装文件的Ubuntu 20.04.2 Live Server ISO

求助:使用xorriso制作带自定义Grub配置与自动安装文件的Ubuntu 20.04.2 Live Server ISO

我折腾了一整天试图让xorriso正常工作,目的是修改Ubuntu 20.04.2 Live Server AMD64 ISO的grub.cfg,同时加入自定义的user-data和meta-data文件来测试自动安装功能,没想到这事比想象中难太多了。

以下是我执行xorriso -indev ubuntu-20.04.2-live-server-amd64.iso -report_el_torito as_mkisofs得到的输出:

xorriso : NOTE : Loading ISO image tree from LBA 0

xorriso : UPDATE :     721 nodes read in 1 seconds

xorriso : NOTE : Detected El-Torito boot information which currently is set to be discarded

Drive current: -indev 'ubuntu-20.04.2-live-server-amd64.iso'

Media current: stdio file, overwriteable

Media status : is written , is appendable

Boot record  : El Torito , MBR isohybrid cyl-align-on GPT APM

Media summary: 1 session, 593344 data blocks, 1159m data,  421g free

Volume id    : 'Ubuntu-Server 20.04.2 LTS amd64'

-V 'Ubuntu-Server 20.04.2 LTS amd64'

--modification-date='2021020117574100'

-isohybrid-mbr --interval:local_fs:0s-15s:zero_mbrpt,zero_gpt,zero_apm:'ubuntu-20.04.2-live-server-amd64.iso'

-partition_cyl_align on

-partition_offset 0

-partition_hd_cyl 73

-partition_sec_hd 32

--mbr-force-bootable

-apm-block-size 2048

-iso_mbr_part_type 0x00

-c '/isolinux/boot.cat'

-b '/isolinux/isolinux.bin'

-no-emul-boot

-boot-load-size 4

-boot-info-table

-eltorito-alt-boot

-e '/boot/grub/efi.img'

-no-emul-boot

-boot-load-size 8000

-isohybrid-gpt-basdat

-isohybrid-apm-hfsplus

Version information:

xorriso 1.5.2

ISO 9660 Rock Ridge filesystem manipulator and CD/DVD/BD burn program

Copyright (C) 2019, Thomas Schmitt <scdbackup@gmx.net>, libburnia project.

xorriso version   :  1.5.2

Version timestamp :  2019.10.26.180001

Build timestamp   :  -none-given-

libisofs   in use :  1.5.2  (min. 1.5.2)

libjte     in use :  2.0.0  (min. 2.0.0)

libburn    in use :  1.5.2  (min. 1.5.2)

libburn OS adapter:  internal GNU/Linux SG_IO adapter sg-linux

libisoburn in use :  1.5.2  (min. 1.5.2)

Provided under GNU GPL version 3 or later, due to libreadline license.

我正在尝试制作一个包含自定义Grub启动选项、user-data和meta-data的修改版启动ISO,参考了一份制作Ubuntu自动安装ISO的教程,但现在完全卡住了,有人能帮我一下吗?谢谢!


解决方案步骤

别着急,我之前也折腾过这个,给你一套一步步的操作流程,应该能解决你的问题:

1. 提取原ISO内容到本地工作目录

首先把原ISO的所有文件提取到一个本地文件夹,方便修改:

mkdir -p ubuntu-iso-working
xorriso -osirrox on -indev ubuntu-20.04.2-live-server-amd64.iso -extract / ubuntu-iso-working

2. 修改Grub配置文件

进入Grub配置目录,编辑grub.cfg添加自动安装的启动选项:

cd ubuntu-iso-working/boot/grub

打开grub.cfg,在合适的位置(比如原有的Ubuntu Server菜单之后)添加自定义启动项:

menuentry "Ubuntu Server 自动安装" {
    set gfxpayload=keep
    linux   /casper/vmlinuz quiet autoinstall ds=nocloud;s=/cdrom/nocloud/ ---
    initrd  /casper/initrd
}

这里的ds=nocloud;s=/cdrom/nocloud/是关键,它告诉系统从ISO的nocloud目录读取自动安装配置文件。

3. 创建自动安装配置文件

在工作目录下创建nocloud文件夹,放入user-data和meta-data:

mkdir -p ../nocloud
# meta-data必须存在,哪怕是空文件
touch ../nocloud/meta-data

然后编辑user-data,写入你的自动安装配置(示例如下,根据你的需求修改):

cat > ../nocloud/user-data << EOF
#cloud-config
autoinstall:
  version: 1
  identity:
    hostname: my-ubuntu-server
    # 用mkpasswd -m sha-512生成密码哈希,替换下面的内容
    password: "\$6\$rounds=4096\$abcdefg\$xxxxxxx"
    username: admin
  # 磁盘分区配置(示例为全盘自动分区)
  storage:
    layout:
      name: lvm
  # 安装后要安装的软件包
  packages:
    - openssh-server
  # 启用SSH并允许密码登录(按需调整)
  ssh:
    allow-pw: true
    install-server: true
EOF

注意:密码哈希要用mkpasswd -m sha-512命令生成,不要直接写明文密码。

4. 用xorriso重新打包ISO

这一步最关键,必须保留原ISO的所有启动参数(就是你之前用-report_el_torito as_mkisofs得到的那些),只需要调整输出路径和工作目录:

cd ../../
xorriso -as mkisofs \
  -V 'Ubuntu-Server 20.04.2 LTS amd64' \
  --modification-date='2021020117574100' \
  -isohybrid-mbr --interval:local_fs:0s-15s:zero_mbrpt,zero_gpt,zero_apm:'ubuntu-20.04.2-live-server-amd64.iso' \
  -partition_cyl_align on \
  -partition_offset 0 \
  -partition_hd_cyl 73 \
  -partition_sec_hd 32 \
  --mbr-force-bootable \
  -apm-block-size 2048 \
  -iso_mbr_part_type 0x00 \
  -c '/isolinux/boot.cat' \
  -b '/isolinux/isolinux.bin' \
  -no-emul-boot \
  -boot-load-size 4 \
  -boot-info-table \
  -eltorito-alt-boot \
  -e '/boot/grub/efi.img' \
  -no-emul-boot \
  -boot-load-size 8000 \
  -isohybrid-gpt-basdat \
  -isohybrid-apm-hfsplus \
  -o ubuntu-20.04.2-autoinstall.iso \
  ubuntu-iso-working

执行完这个命令后,当前目录下的ubuntu-20.04.2-autoinstall.iso就是你需要的修改版ISO了。

常见问题排查

  • 如果ISO无法引导,检查grub.cfg里的路径是否正确,比如/casper/vmlinuz和/casper/initrd是否存在于工作目录中
  • 确保user-data的YAML格式正确,比如缩进、引号都要符合规范,可以用在线YAML校验工具检查
  • 打包时不要遗漏任何原ISO的启动参数,尤其是-isohybrid相关的选项,否则可能无法同时支持BIOS和UEFI引导

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 10:15:34