AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1289400
Accepted
Tobias Wohlfarth
Tobias Wohlfarth
Asked: 2020-11-04 10:47:48 +0800 CST2020-11-04 10:47:48 +0800 CST 2020-11-04 10:47:48 +0800 CST

Ubuntu 20.10 的 Remaster 安装映像

  • 772

我确实重新制作了用于在我的计算机上安装 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

但是 20.10 似乎根本没有使用 isolinux(syslinux),因为我无法找到该目录。目录中的文件boot也发生了变化。

新的正确流程是什么?

system-installation disk-image 20.10
  • 1 1 个回答
  • 2140 Views

1 个回答

  • Voted
  1. Best Answer
    Thomas Schmitt
    2020-11-05T00:18:28+08:002020-11-05T00:18:28+08:00

    Ubuntu 的 ISO 发生了很大变化:

    BIOS 引导映像和 MBR 现在来自 GRUB。

    EFI 系统分区不再是 ISO 中的文件。

    分区表现在是 GPT。但是 ISO 通过一个类型为 00 且大小为 1 的附加 MBR 分区来保持其旧的jackalope 风格。这个几乎不存在的分区保存了一些旧 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
    

    您可以从原始 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"
    

    现在您可以打包新的 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
    

    我从运行中获得了启动准备选项

    
    xorriso -indev "$orig" -report_el_torito as_mkisofs
    

    遗憾的是 xorriso <= 1.5.2 在此命令的输出中有一个错误,使用 --mbr-force-bootable 的 ISO,还报告 -as mkisofs 选项

    
    -part_like_isohybrid
    

    这会破坏从新联想笔记本电脑启动的 ISO。最新的 GNU xorriso-1.5.3 tarball 修复了这个错误。

    祝你今天过得愉快 :)

    托马斯


    根据要求编辑:

    关于新的引导设备。

    引导诱饵集与旧 ISO 一样拥挤:El Torito 用于 BIOS 和来自光学介质的 EFI,MBR x86 代码用于 U 盘中的 BIOS,带有 EFI 分区的分区表,用于 U 盘中的 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

    • 9

相关问题

  • Wubi 和常规的“Windows 旁边”安装有什么区别?

  • 如何在 Windows 7 中运行 Ubuntu?

  • 您对台式机和家庭服务器的驱动器分区方案有什么建议?[关闭]

  • 安装时,我可以选择加密我的主文件夹——这是做什么的?

  • 在不使用标准升级系统的情况下升级有哪些替代方案?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve