帮酷LOGO
0 0 评论
  • 显示原文与译文双语对照的内容
文章标签:ISO  MAKE  Partitioning  引导  MBR  PAR  BOO  分区  

问题:

问题和上下文:

例如,如 ubuntu-16.04-desktop-amd64.iso的MBR分区表中,为什么一个GPT分区是重叠主引导分区的。 如果我尝试以任何方式编辑分区表,这似乎会产生错误。

我想编辑MBR以添加USB持久性( 就像其他地方所述),并且必须添加一个分区或者扩大启动分区。

I,但这和类似发行版的重叠 #2 分区似乎严重混淆了 fdisk。sfdisk。parted。gparted和 partprobe,这是一个很好的。

我的计算机是一个 MBR,而不是一个 GPT bios。

我犯了什么错?

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


cat ubuntu-16.04-desktop-amd64.iso | xxd | head -32 | tail -5



给出:


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_boot_record。)

  • 从地址 01开始,你可以看到" 80",在 #1 主引导分区中。

  • 然后注意地址 01处的"有效",它表示 #2 主分区为 type=GPT。

这里的是分区( 小尾数)的表的分解:


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]的开始是如何从 sdb1 [0-2955679] inside内部

    
    sudo fdisk -l/dev/sdb
    
    
    
    

    给出:

    
     Disk/dev/sdb: 14.5 GiB, 15527313408 bytes, 30326784 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: dos
    
    
     Disk identifier: 0x40a863e7
    
    
    
     Device Boot Start End Sectors Size Id Type
    
    
    /dev/sdb1 * 0 2955679 2955680 1.4G 0 Empty
    
    
    /dev/sdb2 2927216 2931951 4736 2.3M ef EFI (FAT-12/16/32)
    
    
    
    
  • 从我读到,有一个分区是可以的,但不能让分区重叠。

  • 当我尝试把iso安装到u盘上时,问题就开始了。 这个 stick boots Ubuntu,但是我不能在没有错误的情况下编辑分区表,无论我尝试哪个分区编辑器。

  • 这里外,我甚至不能删除分区表,并将USB棒返回到正常,而不使用下列冗长程序:

    
    dd if=/dev/zero of=/dev/sdb bs=[something like 512 or 2048; doesn't matter] count=[some large number like 100000^]
    
    
    
    

    ^Smaller数字似乎并不总是修正这个问题。 我怀疑你不仅需要清除主要的fs块,还需要清除第二个。

    然后使用 fdisk 在棒上创建一个新的MS-DOS 分区表。

    注意,如果在创建新分区表之前没有进行清除,我会在尝试编辑分区映射( 来自debian8或者 ubuntu-16 ) 时获得以下错误消息:

    
    Libparted Warning The driver descriptor says the physical block size
    
    
    is 2048 bytes, but Linux says it is 512 bytes.
    
    
    
    
  • 我也有来自的收费,我得到了这个最有启发性的消息:

    
    gparted -l/dev/sdb: libparted : 2.3 Could not stat device -l -- No
    
    
    such file or directory./dev/sdb contains GPT signatures, indicating
    
    
    that it has a GPT table. However, it does not have a valid fake msdos
    
    
    partition table, as it should. Perhaps it was corrupted -- possibly
    
    
    by a program that doesn't understand GPT partition tables. Or perhaps
    
    
    you deleted the GPT table, and are now using an msdos partition table.
    
    
    Is this a GPT partition table? Both the primary and backup GPT tables
    
    
    are corrupt. Try making a fresh table, and using Parted's rescue
    
    
    feature to recover partitions.
    
    
    
    

如何编辑发行版的MBR

我不是在问如何修复重叠,因为这是发行版的方式,而从外观看,( 我还查看了 Ub-v16,14和 12 ) 是如何编辑的。

想法:

  • 这可能是由于 isohybrid ( 用于将 MS-DOS MBR添加到光盘 9660 iso,以便它可以在USB上启动)的大量应用导致的?

  • 是否有其他可能更新的分区表编辑器?

  • 有没有其他的,也许是老的Ubuntu发行版,没有这个问题?


回答 1:

ubuntu图像文件使用了一个怪物frankenstein格式,旨在支持多种启动方法和设备:

  • 引导媒体
    • 将映像写入DVD以使用 ISO-9660 和 El Torito进行引导
    • 将映像"原始"复制到 USB Flash 驱动器或者类似介质,以便使用常规磁盘分区系统进行引导
  • 启动模式
    • bios模式引导
    • efi模式引导

为了使用这么多的格式和引导方法,开发人员使用数据结构来玩游戏。 不像像"正常"磁盘那样对待这些图像,特别是,你应该强调除非你是这些数据结构中的顶级专家,否则你尝试以任何方式修改图片。 但是,我编写了GPT分区工具我不会尝试尝试你所说的 !

相反,如果需要修改安装介质,则应该执行以下两种操作之一:

  • 使用 或者UNetbootin之类的工具将映像文件写入 USB Flash 驱动器,然后修改 USB Flash 驱动程序。 这些工具之所以工作,是为了让这些工具不会像磁盘那样简单地复制图像,而是将映像从映像复制到磁盘,并将它们复制到传统分区的磁盘磁盘上,例如预先存在的文件系统。 结果是更普通的磁盘,可以用普通分区表编辑器和其他工具修改。
  • 准备你自己的自定义图像。 我没有关于如何这样做的指针,但是Ubuntu图像是由自动工具创建的,而不是手工编辑分区表。 如果你跟踪用于创建图像的工具和脚本,你可能会创建一个像你想要的图像。 这种方法由创建Ubuntu的"旋转"使用,因这里你可以能想要查找关于如何执行这些操作的文档。

对于这两种方法,第一个可能是你想要的更好的。 事实上,我相信某些类型的工具提供了你想要的精确的选择。 ( 我不记得哪个工具提供了这样的功能)。第二种方法对于将包添加到自定义安装映像更有用。

如果你以前能够做到这种情况,可以能是因为开发人员发现了一个更加奇怪的hack。 例如,如果X的品牌计算机不能解析,分区表,开发人员可能会调整它。 这只是我的部分推测,但我当然不能说明你描述的细节。


回答 2:

Workaround

如果你使用USB工具创建u盘partition你可以使用终端命令来创建你的USB棒,而不是使用USB工具来创建你的u盘。 以下是在你的系统使用BIOS时工作的详细说明:

如何使用为BIOS创建一个动态的Ubuntuu盘

使用USB记忆棒进行备份的使用提示: 我保留两个相同的USB备份操作系统,我用来备份我的Debian双引导系统。 我希望在执行备份时不运行系统。 我也想要两个相同的棒,因为有时一个u盘会磨损。 这可以让我轻松地把一个新的棒子从它的余的棒子中复制出来。

但是,当我让我的系统崩溃了,我无法修复它时,它们已经saved了我一次 ! 我在上面的链接中所包含的增量备份和恢复过程也非常快。 但是,当你需要一个系统缺陷时,当你的当前增量不能正常工作时,你应该进行完整的备份。 我现在要做一个完整的备份每周。




文章标签:PAR  BOO  引导  MAKE  Ubuntu  ISO  分区  Partitioning  

Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语