Linux怎么把某个目录制作成可引导的ISO镜像

云杰大大_4013

云杰大大_4013

2026-11-01

401人浏览

原创

不能直接用genisoimage打包任意目录生成可启动ISO,因缺少引导加载器、匹配内核vmlinuz和initrd.img,且默认不注入El Torito/UEFI引导结构,导致BIOS/UEFI拒绝识别为启动介质。

linux怎么把某个目录制作成可引导的iso镜像

不能直接把任意目录做成可引导 ISO——缺少引导加载器、内核和 initrd 就算 genisoimage 成功生成,BIOS/UEFI 也根本不会认它为启动介质。

为什么用 genisoimage 直接打包目录会失败

常见错误现象是:U 盘写入后 BIOS 显示 No bootable device,或 UEFI 启动时直接跳过该介质。这是因为 ISO 文件必须包含符合规范的引导结构,而 genisoimage 默认只做文件系统打包,不注入引导逻辑。

  • genisoimage 本身不生成内核或 initrd,它只负责把已有内容按 ISO9660(+Joliet/El Torito)格式组织
  • 所谓“可引导”,本质是让固件能加载并执行一段引导代码(如 isolinux.bin 或 grubx64.efi),再由它加载 vmlinuz 和 initrd.img
  • 如果你的目录里没有 isolinux/ 或 EFI/BOOT/ 子目录,也没有对应架构的引导文件,就不可能启动

必须提前准备好这三类文件

一个最小可引导 ISO 至少要包含:

  • 引导加载器:BIOS 下用 isolinux.bin(来自 syslinux 包),UEFI 下用 EFI/BOOT/grubx64.efi(来自 grub-efi-amd64-bin)
  • 内核镜像:vmlinuz(编译好的 Linux 内核,通常在 /boot/vmlinuz-*)
  • 初始内存盘:initrd.img(含驱动模块和根文件系统挂载逻辑,通常在 /boot/initrd.img-*)

注意:vmlinuz 和 initrd.img 必须匹配——比如你用的是 vmlinuz-6.1.0-22-amd64,就得配同版本的 initrd.img-6.1.0-22-amd64,否则启动卡在 “Loading initial ramdisk”。

genisoimage 命令的关键参数不能漏

以下命令假设你已把 isolinux/、vmlinuz、initrd.img 放在 ./iso-root/ 目录下:

Linux Security Scanner
Linux Security Scanner

Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...

下载
genisoimage \
  -o bootable.iso \
  -b isolinux/isolinux.bin \
  -c isolinux/boot.cat \
  -no-emul-boot \
  -boot-load-size 4 \
  -boot-info-table \
  -joliet-long \
  -r -v \
  ./iso-root/
  • -b 指向 BIOS 引导扇区文件,路径相对于 ISO 根目录;-c 会自动生成 boot.cat,必须与 -b 在同一级目录
  • 缺 -no-emul-boot 或 -boot-info-table,多数老 BIOS 会拒绝识别为可启动盘
  • 如果要同时支持 UEFI,得额外加 -eltorito-alt-boot -e EFI/BOOT/efiboot.img -no-emul-boot,且 efiboot.img 是 FAT12/FAT32 格式的磁盘镜像,里面放好 grubx64.efi 和 grub.cfg

更省事但限制多的替代方案:用 mkisofs 或 xorriso

mkisofs 是 genisoimage 的旧名,行为一致;xorriso 更现代,支持直接嵌入 GRUB 配置:

xorriso -as mkisofs \
  -o bootable.iso \
  -b isolinux/isolinux.bin \
  -c isolinux/boot.cat \
  --boot-uefi EFI/BOOT/grubx64.efi \
  --efi-boot-part --efi-boot-image --protective-msdos-label \
  ./iso-root/

但要注意:--boot-uefi 要求 grubx64.efi 已编译好,且 grub.cfg 里 linux 行必须指向 ISO 内相对路径(如 linux /vmlinuz),不能写绝对路径或设备名。

真正容易被忽略的是 initrd 的内容——它必须包含目标硬件所需的存储控制器驱动(如 ahci、nvme、virtio_blk),否则即使 ISO 能加载,也会卡在 “Waiting for root device”。调试时建议先在虚拟机里试,用 qemu-system-x86_64 -cdrom bootable.iso -boot d 快速验证。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4330

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3653

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2913

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

7170

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

6822

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3893

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

3385

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

3639

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

297

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习