首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Ubuntu中,为什么GPT分区重叠引导分区,并使MBR不可编辑?

在Ubuntu中,为什么GPT分区重叠引导分区,并使MBR不可编辑?
EN

Ask Ubuntu用户
提问于 2016-08-20 21:55:02
回答 2查看 2.4K关注 0票数 6

问题和上下文:

在发行版的MBR分区表中,例如ubuntu-16.04-桌面-amd64.iso,为什么GPT分区看起来与主引导分区重叠?如果我试图以任何方式编辑分区表,这似乎会产生错误。

我想编辑MBR以添加USB持久性(如其他部分所述),并且必须添加分区或扩大引导分区。

我认为这过去是可行的,但是这个和类似的发行版中重叠的GPT #2分区似乎严重混淆了fdisk、sfdisk、parted、gparted和part探头。

我的机器是MBR,而不是GPT生物。

我遗漏了什么?

这里是发行版的MBR分区表(直接来自ISO文件):

代码语言:javascript
复制
cat ubuntu-16.04-desktop-amd64.iso | xxd | head -32 | tail -5

给予:

代码语言:javascript
复制
00001b0: 28db 2b00 0000 0000 708e 0e0e 0000 8000  (.+.....p.......
00001c0: 0100 0058 e0fa 0000 0000 6048 2c00 00fe  ...X......`H,...
00001d0: ffff effe ffff 4411 2c00 8012 0000 0000  ......D.,.......
00001e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00001f0: 0000 0000 0000 0000 0000 0000 0000 55aa  ..............U.

(要对此进行解码,请参见https://en.wikipedia.org/wiki/Master_开机_记录。)

  • 表从地址01be开始,在那里您可以看到#1主引导分区的"80“。
  • 然后注意地址01d2处的"ef“,它将#2主分区表示为type=GPT。

,以下是按分区(小endian)对表的细分:

代码语言:javascript
复制
partition#1 (normal MBR):
  80        = 'boot' partition flag
  00 01 00  = starting HSC (head, sector, cylindar)
  00        =  partition type ("Empty partition entry")
  58 e0 fa  = last     HSC (head, sector, cylindar)

  0000 0000 = LBA (logical block address) of first absolute sector in the 
  6048 2c00 = number of sectors in partition

partition #2 (GPT):
  00        = non-boot partition
  fe ff ff  = starting HSC (head, sector, cylindar)
  ef        = partition type ("EFI system partition")
  fe ff ff  = last HSC

  4411 2c00 = LBA (logical block adr) of first abs sector in part.
  8012 0000 = number of sectors in partition

尝试编辑分区表:

  • fdisk报告说这些分区重叠。注意sdb2 2927216的开头是如何从sudo /dev/sdb的sdb1 0-2955679中获得的: Disk /dev/sdb: 14.5 GiB,15527313408字节,30326784扇区单元:扇区1* 512 = 512字节扇区大小(逻辑/物理):512字节/ 512字节I/O大小(最小/最佳):512字节/ 512字节Disklabel类型: dos磁盘标识符: 0x40a863e7设备启动端扇区大小Id Type /dev/sdb1 1* 2955679 2955680 1.4g0空/dev/sdb1 2 2927216 2931951 4736 23m EFI (FAT-12/16/32)
  • 根据我所读到的,有一个GPT分区是可以的,但是分区不能重叠。
  • 当我试图将iso与usb接口连接时,麻烦就开始了。棒引导Ubuntu,但我无法编辑分区表而没有错误(即,虽然没有启动和未挂载),无论我尝试哪个分区编辑器。
  • 此外,如果没有以下冗长的过程,我甚至无法删除分区表并将USB粘贴返回到正常状态: dd if=/dev/zero of=/dev/sdb bs=像512或2048这样的东西;不重要 count=一些大的数字,如100000^ ^更小的数字似乎并不总是能解决这个问题。我怀疑您不仅需要清除主fs块,还需要清除次要fs块。然后使用fdisk在棒上创建一个新的ms分区表。注意,如果在创建新的分区表之前不按照上面的dd进行擦除,那么当我尝试编辑分区映射(来自debian8或ubuntu-16)时,会收到以下错误消息或类似的错误消息: Libparted警告驱动程序描述符说物理块大小为2048字节,而Linux则表示它是512字节。
  • 同样从ubuntu-12中,我得到了以下最有启发性的信息: gparted -l /dev/sdb: lib期: 2.3无法统计设备-l --没有这样的文件或目录。/dev/sdb包含GPT签名,表明它有一个GPT表。然而,它没有一个有效的假msdos分区表,因为它应该。也许它被破坏了--可能是因为一个不理解GPT分区表的程序。或者您删除了GPT表,现在正在使用msdos分区表。这是GPT分区表吗?主表和备份GPT表都已损坏。尝试创建一个新的表,并使用Parted的救援功能来恢复分区。

,那么我如何编辑发行版的MBR?

顺便说一句,我不是在问如何修复重叠,因为发行版实际上是这样的,从它的外观来看,已经有一段时间了(我还看了Ub 16、14和12),而是想找出如果可能的话如何编辑它。

的想法:

  • 这是否是由于过多的等混合应用程序(用于将ms-dos MBR添加到CDROM 9660 iso以便在USB上启动)?
  • 是否还有其他,可能是较新的分区表编辑器可供使用?
  • 有没有不同的,也许更老的,Ubuntu发行版没有这个问题?
EN

回答 2

Ask Ubuntu用户

回答已采纳

发布于 2016-10-30 12:54:17

解决方案

您可以调整您的USB棒的分区大小,如果您不使用USB工具来创建棒,而是只使用终端命令从头开始构建您的USB棒。下面是如果您的系统使用BIOS的详细说明:

如何仅使用终端为BIOS创建具有持久性的活动Ubuntu驱动器

使用USB棒备份的使用提示:我保留了两个相同的USB备份-OS棒,用于备份我的主要Debian双引导W10系统。当我做备份时,我希望我的系统不能运行。我也想要两个相同的棒,因为有时一个USB棒磨损。这使我可以很容易地作出一个新的一个,只要一个dd的副本,从剩余的好坚持到一个新的棍子。

当我的系统坏到无法修复时,他们已经不止一次地拯救了我!而且我在上面这个链接中包含的增量备份和恢复过程也非常快。但是,您应该不时地执行一个完整的备份,因为当前的增量可能在需要时无法工作,因为系统缺陷被写入它,从而破坏了它。我现在试着每周做一个完整的备份。

票数 1
EN

Ask Ubuntu用户

发布于 2016-08-21 00:13:52

Ubuntu的.iso映像文件使用Frankenstein的Monster格式,该格式旨在支持多个引导方法和设备:

  • 引导媒体
    • 使用ISO-9660和El Torito将映像写入DVD以引导。
    • 将映像“原始”复制到USB闪存驱动器或类似媒体,以便使用常规磁盘分区系统启动。

  • 引导模式
    • BIOS模式引导
    • EFI模式引导

为了处理如此多的格式和引导方法,开发人员使用数据结构进行游戏。这些映像确实不应该被视为“正常”磁盘映像,特别是,除非您是这些数据结构的顶级专家,否则您不应该试图以任何方式修改这些映像。FWIW,我编写了GPT (gdiskcgdisksgdisk)分区工具,我不会尝试您所说的尝试!

相反,如果您需要修改安装介质,您应该做两件事中的一件:

  • 使用像鲁弗斯钢笔驱动LinuxUNetbootin这样的工具将图像文件写入USB驱动器,然后修改USB驱动器。这样做的原因是,这些工具不会将图像内容的简单dd-like副本复制到磁盘;相反,它们会从映像中获取文件,并将它们复制到具有预先存在的文件系统(有时是该工具创建的文件系统)的常规分区磁盘中。结果是一个更普通的磁盘,可以使用普通分区表编辑器和其他实用程序进行修改。
  • 准备您自己的自定义图像。我没有关于如何这样做的文档的指针,但是Ubuntu映像当然是由自动化工具创建的,而不是手工编辑带有十六进制编辑器的分区表。如果您跟踪用于创建映像的工具和脚本,您可能可以创建一个以您希望的方式修改的映像。这种方法被那些创建Ubuntu“自旋”的人使用,所以您可能需要首先查找有关如何做到这一点的文档。

在这两种方法中,第一种可能对您想要的更好。事实上,我非常肯定的是,这类工具提供了一种选择,可以精确地完成您想做的事情。(不过,我不记得是哪个工具(S)提供了这样的功能。)第二种方法更可能用于向自定义安装映像添加包等任务。

如果您以前能够这样做,那么这种情况很可能已经改变了,因为开发人员发现有必要对数据结构进行更可怕的攻击,以便解决特定系统的问题。例如,如果Brand的计算机不能解析Frankenstein的Monster分区表,开发人员可能会对其进行调整,使其与Brand计算机一起工作,即使这意味着数据结构比以前更奇怪。不过,这只是我的猜测,我当然不能谈论你所描述的细节。

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

https://askubuntu.com/questions/814745

复制
相关文章

相似问题

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