[分享]DIY一个可dd写入U盘引导的混合ISO镜像关键步骤

启动讨论 grub/grub2/syslinux/grub4dos/Lilo
回复
zhangjint5
帖子: 304
注册时间: 2011-01-02 12:31

[分享]DIY一个可dd写入U盘引导的混合ISO镜像关键步骤

#1

帖子 zhangjint5 » 2018-03-02 11:11

近几年各大发行的 Linux 有个很贴心功能,就是制作U盘启动盘的时候可以直接将下载的 Linux ISO 文件当作磁盘RAW镜像直接写入U盘,并且还同时支持 BIOS 和 UEFI 引导。

稍有常识的人知道,磁盘是存在分区表架构的,BIOS引导要涉及MBR引导代码,UEFI引导要涉及一个ESP分区(也可以是MBR FAT兼容分区)和efi引导文件。

正常标准的ISO文件是没有这些东西的。例如早期 Linux 安装盘 ISO 镜像,即使你用 dd 写入 U 盘上也无法引导。

而现代的 Linux ISO 镜像大多采用一种叫 Hybrid/ISO 镜像格式,顾名思义就是混合 ISO 。

近期手工修改 Ubuntu Live 的时候,正好最后一步需要制作 ISO ,顺便研究了下 Hybrid/ISO 的制作过程,拿出来分享一下。

需要安装两个软件包 :apt install isolinux xorriso

然后使用下面命令生成 ISO 文件

代码: 全选

xorriso -as mkisofs \
-o ../ubuntu-18.04-desktop-amd64-custom-`date +%Y%m%d_%H%M%S`.iso \
-isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin \
-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 \
-isohybrid-gpt-basdat \
-input-charset utf-8 -joliet -joliet-long -l -L -r \
-V "Ubuntu 18.04 AMD64 `date +%Y%m%d`" \
dvddir
这样制作出来的 ISO ,在刻录光盘后可以同时支持 BIOS和UEFI 引导,用 dd 写入U盘后,仍然同时支持 BIOS和UEFI引导。

晒一张我 DIY 后的 Ubuntu 18.04 Alpha 截图,加入浏览器、Flash插件、网络软件、7zip、veracrypt、等等常用软件工具软件,写U盘上移动使用。
附件
2018-03-02 10-46-15 的屏幕截图.jpg
头像
Ping-Wu
帖子: 1822
注册时间: 2012-11-14 9:34
系统: Debian 12

Re: [分享]DIY一个可dd写入U盘引导的混合ISO镜像关键步骤

#2

帖子 Ping-Wu » 2018-03-02 16:19

这个题目很重要,但细节好像都藏起来了??? :Haha

我的经验,用 dd 指令做 LiveUSB 整个U棒都浪费掉了。

一般我们都先把 U棒 分出一个 8GB 的 fat 格式区,然后把ISO镜像解压缩后拷贝进去,剩下的就可以当数据储存区使用。

划出 8GB 的原因,乃是我们一般在这个 fat 格式区里会再制作(create)一个 4GB 的 ext4 分割区来做 persistence。官方的ISO镜像不太管用。

当这个 Live Ubuntu “成熟”以后,我们会利用 overlayfs 的方式做 merge,再压缩成一个新的 filesystem.squashfs 。制作新的 ISO镜像时,利用 isomaster 这个套件把 旧的 filesystem.squashfs 用新的取代就是了(即关键步骤应该是怎么制作/修改 Live Ubuntu 而不是烧 ISO 镜像)。

(希望能再讨论)
头像
ahwad
帖子: 1112
注册时间: 2009-05-06 0:36

Re: [分享]DIY一个可dd写入U盘引导的混合ISO镜像关键步骤

#3

帖子 ahwad » 2018-03-05 19:14

路过,学习了。。。。。。。。
fuhuizn
帖子: 948
注册时间: 2006-01-06 22:55
系统: ubuntu
联系:

Re: [分享]DIY一个可dd写入U盘引导的混合ISO镜像关键步骤

#4

帖子 fuhuizn » 2018-03-18 19:18

如果只是uefi启动,只要把iso中的东西整个复制到u盘根目录就行了。
mount -o loop ubuntu.iso /mnt
cp -r /mnt/* /media/usb挂载点

如果要bios启动,可以参考我最近的帖子。
头像
Ping-Wu
帖子: 1822
注册时间: 2012-11-14 9:34
系统: Debian 12

Re: [分享]DIY一个可dd写入U盘引导的混合ISO镜像关键步骤

#5

帖子 Ping-Wu » 2018-03-19 1:31

Ping-Wu 写了:划出 8GB 的原因,乃是我们一般在这个 fat 格式区里会再制作(create)一个 4GB 的 ext4 分割区来做 persistence。官方的ISO镜像不太管用。
后面这句话发现说的很不恰当。

官方的ISO镜像虽然对长期的 Linux 桌面使用者不太管用,对一般大众来讲,却是唯一接触 Linux 的工具。如另帖指出,因为有一位热心的坛友 hangying 的报导,我们发现 18.04 的镜像,不管是中文环境或非中文环境开机,甚至装到硬盘后除非另装套件,都无法输入中文:

https://forum.ubuntu.com.cn/viewtopic.php?f=49&t=486960

如果我们都不测试官方版的ISO镜像,这个问题在正式发行前没有被发现改正的话,后者真的是不堪设想!以后两年的推广工作又要被停摆了。


(希望能再讨论)
上次由 Ping-Wu 在 2018-03-19 3:50,总共编辑 1 次。
头像
Ping-Wu
帖子: 1822
注册时间: 2012-11-14 9:34
系统: Debian 12

Re: [分享]DIY一个可dd写入U盘引导的混合ISO镜像关键步骤

#6

帖子 Ping-Wu » 2018-03-19 1:47

Ping-Wu 写了:一般我们都先把 U棒 分出一个 8GB 的 fat 格式区,然后把ISO镜像解压缩后拷贝进去,剩下的就可以当数据储存区使用。

划出 8GB 的原因,乃是我们一般在这个 fat 格式区里会再制作(create)一个 4GB 的 ext4 分割区来做 persistence。
这里稍微补充一下。

在 Ubuntu 系统里,我们一般会在这个 fat 格式区里制作(create)两个 ext4 的分割区,一个是 3840MB,label 为 casper-rw 做为系统的 persistence。另一个约 1GB,叫做 home-rw,保存使用者的资料。

另外我们也把 LiveUSB 里 /boot/grub/grub.cfg 这个档案修改一下,开机时可以有 persistent 跟 非 persistent 的选择。两者也各有中文及英文环境开机。共4种开机选择。

以上的步骤,对 Linux 稍微有点经验的应该很容易了解,细节就略掉了。

(希望能再讨论)
回复