Tob*_*rth 7 disk-image system-installation 20.10
我确实重新制作了在我的计算机上安装 ubuntu 的映像以获得自定义预置。但在 20.10 中,我之前使用的流程和命令不起作用
这是我在 20.04 中使用的命令:
xorriso -as mkisofs -r -V "$disk_title" -J -joliet-long -cache-inodes -l -isohybrid-mbr "$MBR_FILE" -c isolinux/boot.cat -b isolinux/isolinux.bin -boot-load-size 4 -iso-level 3 -boot-info-table -eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot -isohybrid-gpt-basdat -o Image.iso unpackedImageDirectory
Run Code Online (Sandbox Code Playgroud)
但 20.10 似乎根本不使用 isolinux(syslinux),因为我找不到该目录。目录中的文件boot
也发生了变化。
新的正确流程是什么?
Tho*_*itt 11
Ubuntu 的 ISO 发生了很大变化:
BIOS 启动映像和 MBR 现在来自 GRUB。
EFI 系统分区不再是 ISO 中的文件。
分区表现在是 GPT。但 ISO 通过类型 00 和大小 1 的附加 MBR 分区保持其旧的鹿角兔风格。这个几乎不存在的分区保存了一些旧 BIOS 机器的引导标志,只有当某些 MBR 分区条目中存在此标志时,这些机器才会引导。EE 类型的保护性 MBR 分区不允许带有此标志。
$ /sbin/fdisk -l ubuntu-20.10-desktop-amd64.iso
...
Disklabel type: gpt
...
Device Start End Sectors Size Type
ubuntu-20.10-desktop-amd64.iso1 64 5735483 5735420 2.8G Microsoft basic da
ubuntu-20.10-desktop-amd64.iso2 5735484 5745435 9952 4.9M EFI System
ubuntu-20.10-desktop-amd64.iso3 5745436 5746035 600 300K Microsoft basic da
Run Code Online (Sandbox Code Playgroud)
您可以从原始 ISO 中提取 MBR 和 EFI 分区映像。
orig=ubuntu-20.10-desktop-amd64.iso
mbr=ubuntu-20.10-desktop-amd64.mbr
efi=ubuntu-20.10-desktop-amd64.efi
# Extract the MBR template
dd if="$orig" bs=1 count=446 of="$mbr"
# Extract EFI partition image
skip=$(/sbin/fdisk -l "$orig" | fgrep '.iso2 ' | awk '{print $2}')
size=$(/sbin/fdisk -l "$orig" | fgrep '.iso2 ' | awk '{print $4}')
dd if="$orig" bs=512 skip="$skip" count="$size" of="$efi"
Run Code Online (Sandbox Code Playgroud)
现在您可以打包新的 ISO:
new=Image.iso
xorriso -as mkisofs \
-r -V "$disk_title" -J -joliet-long -l \
-iso-level 3 \
-partition_offset 16 \
--grub2-mbr "$mbr" \
--mbr-force-bootable \
-append_partition 2 0xEF "$efi" \
-appended_part_as_gpt \
-c /boot.catalog \
-b /boot/grub/i386-pc/eltorito.img \
-no-emul-boot -boot-load-size 4 -boot-info-table --grub2-boot-info \
-eltorito-alt-boot \
-e '--interval:appended_partition_2:all::' \
-no-emul-boot \
-o "$new" \
unpackedImageDirectory
Run Code Online (Sandbox Code Playgroud)
我从运行中获得了启动准备选项
xorriso -indev "$orig" -report_el_torito as_mkisofs
Run Code Online (Sandbox Code Playgroud)
遗憾的是,xorriso <= 1.5.2 在使用 --mbr-force-bootable 的 ISO 的此命令的输出中存在错误,同时还报告 -as mkisofs 选项
-part_like_isohybrid
Run Code Online (Sandbox Code Playgroud)
这会破坏从新联想笔记本电脑启动的 ISO。最新的 GNU xorriso-1.5.3 tarball 已修复此错误。
祝你今天过得愉快 :)
托马斯
根据要求编辑:
关于新的引导设备。
这套引导诱饵与旧的 ISO 一样拥挤:El Torito 用于来自光学介质的 BIOS 和 EFI,MBR x86 代码用于来自 USB 记忆棒的 BIOS,带有 EFI 分区的分区表用于来自 USB 记忆棒的 EFI。
放弃 SYSLINUX/ISOLINUX 的原因可能是其维护状况不佳,而且无论如何都需要 GRUB 才能通过 EFI 从光介质引导。ISOLINUX 和 GRUB 的旧分区布局组合无法与某些现代 EFI 笔记本电脑上的 GRUB+GRUB 一起使用。我的怀疑是,只有存在 ISOLINUX MBR 时,它们才会容忍 MBR 分区表。如果从 UEFI 规范来看,这种旧的布局是相当令人厌恶的。
所以Ubuntu采用了附加分区和GPT作为分区表。一些旧的 HP 笔记本电脑出现故障,必须通过 MBR 分区表中的启动标志将其拖入。
这种改变是费力的,而且部分是痛苦的。 https://bugs.launchpad.net/ubuntu-cdimage/+bug/1886148 https://bugs.launchpad.net/ubuntu-cdimage/+bug/1899308
归档时间: |
|
查看次数: |
4285 次 |
最近记录: |