首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建自定义Ubuntu22.04活动服务器

创建自定义Ubuntu22.04活动服务器
EN

Ask Ubuntu用户
提问于 2022-04-26 14:03:02
回答 1查看 3K关注 0票数 2

这是Ubuntu22.04构建ISO (两者均: MBR和EFI )的后续问题。不幸的是,我没有声誉评分,以作出评论的原件。

我也为安装目的创建了修改过的iso映像,但在我的示例中,我使用的是活动服务器iso。我在上面的网址上修改了托马斯·施密特的非常有用的答案。在调整了22.04服务器的使用和烧录我的自定义之后,我得到了一个工作启动USB棒,但是有一个糟糕的备份GPT表。以下是dmesg在我的笔记本上安装时的摘录:

代码语言:javascript
复制
[3991990.397058] GPT:Primary header thinks Alt. header is not at the end of the disk.
[3991990.397063] GPT:2872323 != 30310399
[3991990.397066] GPT:Alternate GPT header not at the end of the disk.
[3991990.397067] GPT:2872323 != 30310399

当从USB棒启动时,也有类似的消息。在这种情况下,内核会使用诸如“备份GPT表损坏了,但主表显示为OK,所以将被使用”之类的消息来抱怨和调整自己。但是,我知道必须有一种方法来调整xorriso来修复我不知道的次要表。

当然,分区布局与桌面版不同。为了解释下面代码段中的数字,这里是布局。

代码语言:javascript
复制
#/sbin/fdisk -l ubuntu-22.04-live-server-amd64.iso
Disk ubuntu-22.04-live-server-amd64.iso: 1.37 GiB, 1466714112 bytes, 2864676 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: C84E0225-4BE7-447A-9FA1-EBF040BDC01F

Device                                Start     End Sectors  Size Type
ubuntu-22.04-live-server-amd64.iso1      64 2855515 2855452  1.4G Microsoft basic data
ubuntu-22.04-live-server-amd64.iso2 2855516 2864011    8496  4.2M EFI System
ubuntu-22.04-live-server-amd64.iso3 2864012 2864611     600  300K Microsoft basic data

基于Thomas Schmitt在桌面iso的回答中所写的内容,我编写了这个bash脚本:

代码语言:javascript
复制
#!/bin/bash

#output name of image
IMAGE=ubuntu22_04_custom.iso

OPWD=/home/[something]/ubuntu_22_04_isomaker/

cd $OPWD

#this is where the files for the custom iso are located
BUILD=$OPWD/iso_raw/

#this is a copy of the original iso as downloaded
BASE_IMAGE=$OPWD/baseiso/ubuntu-22.04-live-server-amd64.iso

#extract MBR / EFI
MBR_IMAGE=$OPWD/partitions/ubuntu_isohybrid_mbr.img
EFI_IMAGE=$OPWD/partitions/efi.img
BASE_IMAGE=$OPWD/baseiso/ubuntu-22.04-live-server-amd64.iso

dd if="$BASE_IMAGE" bs=1 count=432 of="$MBR_IMAGE"

dd if="$BASE_IMAGE" bs=512 skip=2855516 count=8496 of="$EFI_IMAGE"



# make the md5sum for the modified iso
cd $BUILD

rm -f md5sum.txt
find . -type f -not -name md5sum.txt -print0 | xargs -0 md5sum | tee md5sum.txt

cd $OPWD


# Finally pack up an ISO the new way
/usr/local/bin/xorriso -as mkisofs -r \
  -V 'Ubuntu 22.04' \
  -o "$IMAGE" \
  --grub2-mbr "$MBR_IMAGE" \
  -partition_offset 16 \
  --mbr-force-bootable \
  -append_partition 2 28732ac11ff8d211ba4b00a0c93ec93b $EFI_IMAGE \
  -appended_part_as_gpt \
  -iso_mbr_part_type a2a0d0ebe5b9334487c068b6b72699c7 \
  -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:::' \
    -no-emul-boot \
  "$BUILD"

exit 0

作为记录,所使用的xorriso版本为1.5.4.pl02 (昨天构建)。

那么,如何使xorriso正确地编写辅助GPT表呢?

EN

回答 1

Ask Ubuntu用户

回答已采纳

发布于 2022-04-30 07:26:32

这些抱怨是无可避免的,除非你的USB卡提供与图像大小完全相同的容量。GPT规范规定了存储设备开始时的主分区表和其末端的备份表。在ISO映像中,此表属于它的位置。但是在复制到USB卡之后,备份表之后仍然有未使用的块。

投诉是无害的,直到你想要添加分区到你的USB棒。分区编辑器将发出类似的投诉,并应提出修复的情况。我在邮箱中找到了一份关于sfdisk 2.33.1的实验的成功报告,它添加了一个名为"DATA“的分区,该分区要求在/dev/sdc上占用USB棒的所有未使用的空间:

代码语言:javascript
复制
echo 'name=DATA' | sudo sfdisk -a /dev/sdc

这也挽救了备用GPT的局面。

MBR分区表而不是GPT将避免这个问题。但是,已知的EFI实现如果没有GPT的味道,就不接受用于引导的USB棒。旧的Ubuntu布局是一个背带着一个无效的GPT的野狗。现代分区编辑器通常认为它是磁盘大故障的坏结果。一个错误的备份GPT的情况对他们来说不那么令人愤怒。

如果您有更多关于xorriso的问题,请将邮件发送到:

bug-xorriso@gnu.org

我不能保证我会注意到你在askubuntu.com的帖子,或者它会让我回答。

祝你今天愉快:)

托马斯

票数 2
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1404757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档