为什么 Fedora 分区没有列在扩展分区下?

为什么 Fedora 分区没有列在扩展分区下?

我最近在台式电脑上安装了 Fedora 22。我想将它安装在逻辑分区上。在安装过程中,在 Anaconda 安装向导中,我选择创建一个 16 GiB 的逻辑分区作为交换空间,以及一个 50 GiB 的逻辑分区用于系统、启动、主目录、根目录等(等等,等等,不是/etc......但是是的,那也是......没有双关语)

这是一个多启动系统,包含 Windows 10 预览版、Ubuntu 和 Fedora。磁盘使用 MBR 分区方案。Windows 使用主分区作为系统分区作为启动(又名系统)分区。Windows 本身安装在逻辑分区上。至少在 Windows 世界中,只能在扩展分区内创建逻辑分区(又名“逻辑驱动器”)。我在主分区旁边创建了这个扩展分区,它一直延伸到磁盘末尾。然后我安装了 Ubuntu,然后是 Fedora。

这就是它现在在 Fedora 中的磁盘工具中的样子。

fedora 磁盘

为什么 Fedora 分区没有列在“扩展分区”下?

您可以看到 Ubuntu 列在扩展分区下。这也是我对 Fedora 的期望,这也是 Windows 通常列出逻辑分区的方式,作为存在于扩展分区内的实体。

也许一个更好、更普遍的问题是:逻辑分区可以存在于扩展分区之外吗?超出扩展分区的边界了吗?到目前为止,我只认为主分区可以做到这一点。

这是同一磁盘的 fdisk 输出。

Disk /dev/sda: 465.8 GiB, 500106780160 bytes, 976771055 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: 0x9a3b2e4f

Device     Boot     Start       End   Sectors  Size Id Type
/dev/sda1  *         2048    264191    262144  128M  7 HPFS/NTFS/exFAT
/dev/sda2          266238 237123583 236857346  113G  f W95 Ext'd (LBA)
/dev/sda3       237123584 270678015  33554432   16G 82 Linux swap / Solaris
/dev/sda4       270678016 375535615 104857600   50G 83 Linux
/dev/sda5          266240 105123839 104857600   50G  7 HPFS/NTFS/exFAT
/dev/sda6       105125888 137123839  31997952 15.3G 82 Linux swap / Solaris
/dev/sda7       137125888 237123583  99997696 47.7G 83 Linux

Partition table entries are not in disk order.

您可以看到扩展分区从扇区 266238 开始,到扇区 237123583 结束。分区 3(Fedora 交换)从扇区 237123584 开始。这是怎么可能的?

以下是它在 Windows 10 磁盘管理工具中的样子。

Windows 磁盘管理

我在上面的屏幕截图中标记了我认为是 Fedora 使用的 Ext4 分区。应该就是这样,因为它正好是 50 GiB,并且 Windows 使用二进制前缀(但不幸的是使用“MB”和“GB”来表示它)。正如您所见,它被列为主分区。实际上,我创建的所有 Linux 分区都列为主分区。这与我刚刚在 Linux 中展示的内容相矛盾。那么谁对谁错呢?... Windows 还是 Linux?两者不可能都正确吗?


更新:分开

这是 parted 的输出。

Model: ATA ST3500320AS (scsi)
Disk /dev/sda: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type      File system     Flags
 1      1049kB  135MB   134MB   primary   ntfs            boot
 2      136MB   121GB   121GB   extended                  lba
 5      136MB   53.8GB  53.7GB  logical   ntfs
 6      53.8GB  70.2GB  16.4GB  logical   linux-swap(v1)
 7      70.2GB  121GB   51.2GB  logical   ext4
 3      121GB   139GB   17.2GB  primary   linux-swap(v1)
 4      139GB   192GB   53.7GB  primary   ext4

这比 fdisk 的输出更容易阅读。与 fdisk 不同的是,这里我们可以看到分区是按磁盘顺序打印的。谢谢分手!这确实有助于阐明这个问题。我可以说前 3 个分区的顺序是正确的,因为我用 diskpart 创建了它们。除了扩展分区没有运行到磁盘末尾。Ubuntu 或 Fedora 安装过程一定出于某种原因改变了它。


更新:fstab 和 grub 配置(满足要求)

根据@Chris.C 的要求,我的 fstab 和 grub 配置文件如下所示。

# /etc/fstab
# Created by anaconda on Wed Jul  1 01:18:26 2015
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=036c6533-ec01-428a-a38c-23c364cc220a /                       ext4    defaults        1 1
UUID=01d56d7c-5d48-497c-befd-05f7a7f22281 swap                    swap    defaults        0 0

现在这里是 grub 配置...我必须添加此行来创建代码块分离。

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub2-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
set pager=1

if [ -s $prefix/grubenv ]; then
  load_env
fi
if [ "${next_entry}" ] ; then
   set default="${next_entry}"
   set next_entry=
   save_env next_entry
   set boot_once=true
else
   set default="${saved_entry}"
fi

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi

export menuentry_id_option

if [ "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    save_env saved_entry
  fi
}

function load_video {
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}

terminal_output console
if [ x$feature_timeout_style = xy ] ; then
  set timeout_style=menu
  set timeout=5
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
  set timeout=5
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Fedora (4.0.4-301.fc22.x86_64) 22 (Twenty Two)' --class fedora --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-4.0.4-301.fc22.x86_64-advanced-036c6533-ec01-428a-a38c-23c364cc220a' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos4'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos4 --hint-efi=hd0,msdos4 --hint-baremetal=ahci0,msdos4 --hint='hd0,msdos4'  036c6533-ec01-428a-a38c-23c364cc220a
    else
      search --no-floppy --fs-uuid --set=root 036c6533-ec01-428a-a38c-23c364cc220a
    fi
    linux16 /boot/vmlinuz-4.0.4-301.fc22.x86_64 root=UUID=036c6533-ec01-428a-a38c-23c364cc220a ro rhgb quiet LANG=en_US.UTF-8
    initrd16 /boot/initramfs-4.0.4-301.fc22.x86_64.img
}
menuentry 'Fedora (0-rescue-6b81f900dbfc4da3b56fe2db6748aabc) 22 (Twenty Two)' --class fedora --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-0-rescue-6b81f900dbfc4da3b56fe2db6748aabc-advanced-036c6533-ec01-428a-a38c-23c364cc220a' {
    load_video
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos4'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos4 --hint-efi=hd0,msdos4 --hint-baremetal=ahci0,msdos4 --hint='hd0,msdos4'  036c6533-ec01-428a-a38c-23c364cc220a
    else
      search --no-floppy --fs-uuid --set=root 036c6533-ec01-428a-a38c-23c364cc220a
    fi
    linux16 /boot/vmlinuz-0-rescue-6b81f900dbfc4da3b56fe2db6748aabc root=UUID=036c6533-ec01-428a-a38c-23c364cc220a ro rhgb quiet
    initrd16 /boot/initramfs-0-rescue-6b81f900dbfc4da3b56fe2db6748aabc.img
}

### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_linux_xen ###

### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/20_ppc_terminfo ###
### END /etc/grub.d/20_ppc_terminfo ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows Recovery Environment (loader) (on /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-chain-2E0E4F3F0E4EFEF9' {
    insmod part_msdos
    insmod ntfs
    set root='hd0,msdos1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  2E0E4F3F0E4EFEF9
    else
      search --no-floppy --fs-uuid --set=root 2E0E4F3F0E4EFEF9
    fi
    parttool ${root} hidden-
    drivemap -s (hd0) ${root}
    chainloader +1
}
menuentry 'Ubuntu 15.04 (15.04) (on /dev/sda7)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-6f745b5e-bb49-40cb-bcae-b245d76b9d7d' {
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos7'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos7 --hint-efi=hd0,msdos7 --hint-baremetal=ahci0,msdos7 --hint='hd0,msdos7'  6f745b5e-bb49-40cb-bcae-b245d76b9d7d
    else
      search --no-floppy --fs-uuid --set=root 6f745b5e-bb49-40cb-bcae-b245d76b9d7d
    fi
    linux16 /boot/vmlinuz-3.19.0-15-generic root=UUID=6f745b5e-bb49-40cb-bcae-b245d76b9d7d ro quiet splash $vt_handoff
    initrd16 /boot/initrd.img-3.19.0-15-generic
}
submenu 'Advanced options for Ubuntu 15.04 (15.04) (on /dev/sda7)' $menuentry_id_option 'osprober-gnulinux-advanced-6f745b5e-bb49-40cb-bcae-b245d76b9d7d' {
    menuentry 'Ubuntu (on /dev/sda7)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-3.19.0-15-generic--6f745b5e-bb49-40cb-bcae-b245d76b9d7d' {
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos7'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos7 --hint-efi=hd0,msdos7 --hint-baremetal=ahci0,msdos7 --hint='hd0,msdos7'  6f745b5e-bb49-40cb-bcae-b245d76b9d7d
        else
          search --no-floppy --fs-uuid --set=root 6f745b5e-bb49-40cb-bcae-b245d76b9d7d
        fi
        linux16 /boot/vmlinuz-3.19.0-15-generic root=UUID=6f745b5e-bb49-40cb-bcae-b245d76b9d7d ro quiet splash $vt_handoff
        initrd16 /boot/initrd.img-3.19.0-15-generic
    }
    menuentry 'Ubuntu, with Linux 3.19.0-15-generic (on /dev/sda7)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-3.19.0-15-generic--6f745b5e-bb49-40cb-bcae-b245d76b9d7d' {
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos7'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos7 --hint-efi=hd0,msdos7 --hint-baremetal=ahci0,msdos7 --hint='hd0,msdos7'  6f745b5e-bb49-40cb-bcae-b245d76b9d7d
        else
          search --no-floppy --fs-uuid --set=root 6f745b5e-bb49-40cb-bcae-b245d76b9d7d
        fi
        linux16 /boot/vmlinuz-3.19.0-15-generic root=UUID=6f745b5e-bb49-40cb-bcae-b245d76b9d7d ro quiet splash $vt_handoff
        initrd16 /boot/initrd.img-3.19.0-15-generic
    }
    menuentry 'Ubuntu, with Linux 3.19.0-15-generic (upstart) (on /dev/sda7)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-3.19.0-15-generic--6f745b5e-bb49-40cb-bcae-b245d76b9d7d' {
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos7'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos7 --hint-efi=hd0,msdos7 --hint-baremetal=ahci0,msdos7 --hint='hd0,msdos7'  6f745b5e-bb49-40cb-bcae-b245d76b9d7d
        else
          search --no-floppy --fs-uuid --set=root 6f745b5e-bb49-40cb-bcae-b245d76b9d7d
        fi
        linux16 /boot/vmlinuz-3.19.0-15-generic root=UUID=6f745b5e-bb49-40cb-bcae-b245d76b9d7d ro quiet splash $vt_handoff init=/sbin/upstart
        initrd16 /boot/initrd.img-3.19.0-15-generic
    }
    menuentry 'Ubuntu, with Linux 3.19.0-15-generic (recovery mode) (on /dev/sda7)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/vmlinuz-3.19.0-15-generic--6f745b5e-bb49-40cb-bcae-b245d76b9d7d' {
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos7'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos7 --hint-efi=hd0,msdos7 --hint-baremetal=ahci0,msdos7 --hint='hd0,msdos7'  6f745b5e-bb49-40cb-bcae-b245d76b9d7d
        else
          search --no-floppy --fs-uuid --set=root 6f745b5e-bb49-40cb-bcae-b245d76b9d7d
        fi
        linux16 /boot/vmlinuz-3.19.0-15-generic root=UUID=6f745b5e-bb49-40cb-bcae-b245d76b9d7d ro recovery nomodeset
        initrd16 /boot/initrd.img-3.19.0-15-generic
    }
    menuentry 'Memory test (memtest86+, serial console 115200) (on /dev/sda7)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-/boot/memtest86+.bin--6f745b5e-bb49-40cb-bcae-b245d76b9d7d' {
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos7'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos7 --hint-efi=hd0,msdos7 --hint-baremetal=ahci0,msdos7 --hint='hd0,msdos7'  6f745b5e-bb49-40cb-bcae-b245d76b9d7d
        else
          search --no-floppy --fs-uuid --set=root 6f745b5e-bb49-40cb-bcae-b245d76b9d7d
        fi
        linux16 /boot/memtest86+.bin console=ttyS0,115200n8
    }
}

### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###
if [ -f  ${config_directory}/custom.cfg ]; then
  source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###

更新:尝试修复 fdisk 中的分区顺序

按照@Chris.CI 的建议,尝试使用 fdisk 修复分区顺序。结果如下。

[root@sg-1 /]# fdisk /dev/sda

Welcome to fdisk (util-linux 2.26.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): x

Expert command (m for help): f
Nothing to do. Ordering is correct already.

Expert command (m for help): 

不用说,但fdisk感觉很无聊,因为它有没事做。

答案1

看起来你的分区号顺序是错误的。分区 5/6/7 应该跟在分区 2 后面。这可以通过以下方法修复

sudo fdisk /dev/sda
x  (expert mode)
f  (fix the partition order)
w  (write to disk)

现在系统没有乱七八糟,但我记得更改后会立即生效。请确保在重新启动之前检查 /etc/fstab、menu.lst 等,因为分区号可能会更改,或者在修复后使用实时 CD 来修复启动问题。

答案2

MBR 代表主引导记录。它被定义为磁盘的前 512 个字节。它适合一个小的文本文件,因此您可以轻松地将其复制到软盘进行备份。如果它损坏了,您可以使用备份轻松修复它。

MBR 是一种数据结构,它保存了两条关键信息:机器引导代码分区表分区表的结构称为分割方案, 或者分割格式。分区方案不止一种,但 MBR 中使用的方案只用于 MBR 分区磁盘。但是,MBR 分区方案在历史上也有一些变化。最常见的方案是 DOS 和 Windows 使用的方案。这是出于历史原因:IBM PC 引入了 MBR 的概念,并使用 PC-DOS 作为操作系统(后来成为 MS-DOS,最终成为 Windows)。这是在 MBR 分区磁盘上发现的标准 MBR 分区方案。

标准 MBR 分区方案允许最多 4主分区要创建的分区。为了在同一磁盘上创建 4 个以上的分区,最多只能创建 3 个主分区,只留下一个分区条目用于扩展分区. 扩展分区可以容纳多个逻辑驱动器。它能容纳多少个分区取决于磁盘的大小以及操作系统安装磁盘驱动器的方式。在 DOS 和 Windows 中,这个数字与英文字母的数量相同,即 26。这是可以安装的磁盘驱动器总数。如果 3 个分区是主分区,则扩展分区可以容纳 23=26-3 个逻辑驱动器。DOS 和 Windows 无法从逻辑驱动器启动。因此,为了启动操作系统,至少 1 个分区必须是主分区。在这种情况下,扩展分区最多可以容纳 25=26-1 个逻辑驱动器。

在类 UNIX 操作系统(如 GNU Linux)上,一切都是文件。因此,这些系统上可以安装的磁盘驱动器数量没有限制。此外,它们可以从逻辑驱动器启动。这意味着 GNU Linux 系统上的 MBR 分区磁盘可以有超过 26 个逻辑驱动器,并且仍然可以从其中一个启动!当然,Linux 也可以从多个逻辑驱动器启动(多重启动)。Windows 也可以执行此操作,但不能从逻辑驱动器执行。(较新版本的 Windows 可能能够做到这一点。但最初,Windows 并非设计为允许启动多个版本或同一 Windows 版本的另一个实例。)

在 GNU Linux 系统上,具有 4 个主分区的 MBR 分区 SATA 磁盘将使用以下内容命名方案用于分区。

/dev/sda1    primary
/dev/sda2    primary
/dev/sda3    primary
/dev/sda4    primary

如果有扩展分区,它将获得命名方案中的下一个名称,即 sda5。

/dev/sda1    primary
/dev/sda2    primary
/dev/sda3    primary
/dev/sda4    primary
/dev/sda5    logical
/dev/sda6    logical
/dev/sda7    logical

这就是为什么 Linux 上的逻辑分区默认从 sda5 开始。前 4 个分区保留为主分区。不要将 Linux 设备命名方案与 MBR 分区方案混淆。

即使只有 3 个主分区,第一个逻辑分区仍将被命名为 sda5。

/dev/sda1    primary
/dev/sda2    primary
/dev/sda3    primary
/dev/sda4    extended
  /dev/sda5    logical
  /dev/sda6    logical
  /dev/sda7    logical

如果只有 1 个主分区,情况也是如此。数字不必按连续顺序排列,如 1、2、3。

/dev/sda1    primary
/dev/sda2    extended
  /dev/sda5    logical
  /dev/sda6    logical
  /dev/sda7    logical

物理位置分区中包含的数据可以通过分区扇区的起始和结束位置来读取。这是分区表的唯一目的,也是它存在的原因。分区表是一个参考表,它告诉系统要查找哪里才能读取数据或将数据写入该分区。

您可以将分区视为物理的,即原始数据物理存储在磁盘上的位置。它实际上并不是以位和字节的形式直接存储到磁盘盘片上。它以硬件级格式存储,由磁盘控制器板内部使用,然后控制器板将这些信息物理编码到磁盘盘片上的磁性介质上。

相比之下,分区表是逻辑的——它是一种逻辑数据结构。但该逻辑部分也有一个物理位置,我们已经确定它是磁盘上的前 512 个字节或扇区 1(LBA 寻址磁盘上的绝对扇区 0)。

因此,当您执行一些常见任务(例如“选择分区”)时,您实际上并不是在选择分区(文件的物理位置)。分区表本身并不是分区。您正在选择分区表中指向磁盘上存储区域的参考点。但在日常使用中,我们说我们正在“选择分区”。

Number  Start   End     Size    Type      File system     Flags
 1      1049kB  135MB   134MB   primary   ntfs            boot
 2      136MB   121GB   121GB   extended                  lba
 5      136MB   53.8GB  53.7GB  logical   ntfs
 6      53.8GB  70.2GB  16.4GB  logical   linux-swap(v1)
 7      70.2GB  121GB   51.2GB  logical   ext4
 3      121GB   139GB   17.2GB  primary   linux-swap(v1)
 4      139GB   192GB   53.7GB  primary   ext4

在这个例子中,分区 3 和 4 是主分区。Fedora Linux 这样看的原因可能是因为这些分区的起始位置在扩展分区之后。实际上,我相信它们是逻辑分区。它们似乎被分区表扇区链接到EBR(扩展引导记录)扩展分区。我必须详细检查分区表条目才能确定。

因此,Linux 似乎允许逻辑分区位于更传统的 DOS/Windows 类型的扩展分区边界之外。然而,这在 DOS 和 Windows 中是不可能的。在 DOS 和早期 Windows 版本的 FDISK 中,除非磁盘上有扩展分区,否则无法创建逻辑分区(逻辑驱动器),并且只能在扩展分区的边界内创建逻辑分区。对于较新版本的 Windows 中的 Diskpart 和磁盘管理(逻辑磁盘管理器),情况也是如此。

从技术上讲,扩展分区不包含任何文件系统。它描述的逻辑分区包含文件系统。因此,我认为扩展分区可以尽可能小或尽可能大,只要使用的工具允许,并且足够大以容纳逻辑分区条目 - 一个扇区或 512 字节。因此,只有扩展分区的第一个扇区(EBR)很重要。

Windows 磁盘管理

通过这个例子,我想说 Windows 磁盘管理工具看到了扩展分区,并用深绿色标记它,并显示其中的 NTFS 文件系统分区。这是 Windows 理解的此磁盘上唯一文件系统。Windows 不理解后面分区上使用的 Ext4 文件系统。因此,它假设它是主分区并将其从绿色扩展分区框中排除,由于这些分区的起始位置在 NTFS 分区之后,因此它将它们放在 NTFS 分区之后(右侧)。

如果每个分区都包含它无法理解的文件系统,Windows 几乎会将其描述为“主分区”。

此外,由于这是一个非标准扩展分区,在常规扩展分区的边界之外有 2 个菊花链式逻辑分区,因此它也将它们描述为主分区代替逻辑分区


更新:分区表

我终于有时间详细检查分区表。

MBR Partition Table
===================
Partition entry 1 (1BE – 1CD): 80 3E 03 00 07 19 1B 46 00 08 00 00 00 00 04 00
Partition entry 2 (1CE – 1DD): 00 57 1C 46 0F 71 E1 FF FE 0F 04 00 02 28 1E 0E
Partition entry 3 (1DE – 1ED): 00 71 E1 FF 82 71 E1 FF 00 38 22 0E 00 00 00 02
Partition entry 4 (1EE – 1FD): 00 71 E1 FF 83 71 E1 FF 00 38 22 10 00 00 40 06
--------------------
Entry 1:
80 ► active partition
07 ► NTFS file system Windows, SYSTEM (Windows 10)
00 08 00 00 ► 00 00 08 00 = 2048
00 00 04 00 ► 00 04 00 00 = 262144 = 134217728 byte = 128 MiB
--------------------
Entry 2:
00 ► not active
0F ► Extended partition (LBA)
FE 0F 04 00 ► 00 04 0F FE = 266238
02 28 1E 0E ► 0E 1E 28 02 = 236857346 = 121270961152 byte = 112 GiB
--------------------
Entry 3:
00 ► not active
82 ► GNU Linux Swap space (FEDORA)
00 38 22 0E ► 0E 22 38 00 = 237123584
00 00 00 02 ► 02 00 00 00 = 33554432 = 17179869184 byte = 16 GiB
--------------------
Entry 4:
00 ► not active
83 ► GNU Linux files system (FEDORA)
00 38 22 10 ► 10 22 38 00 = 270678016
00 00 40 06 ► 06 40 00 00 = 104857600 = 53687091200 byte = 50 GiB

EBR Partition Table 1
=====================
Partition entry 1 (81FFDBE – 81FFDCD): 00 57 1E 46 07 71 E1 FF 02 00 00 00 00 00 40 06
Partition entry 2 (81FFDCE – 81FFDDD): 00 71 E1 FF 05 71 E1 FF D2 05 40 06 30 42 E8 01
Partition entry 3 (81FFDDE – 81FFDED): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Partition entry 4 (81FFDEE – 81FFDFD): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
--------------------
Entry 1:
00 ► not active
07 ► NTFS file system Windows, BOOT (Windows 10)
02 00 00 00 ► 00 00 00 02 = 2 (266240 absolute)
00 00 40 06 ► 06 40 00 00 = 104857600 = 53687091200 byte = 50 GiB
--------------------
Entry 2:
00 ► not active
05 ► Extended partition (CHS)
D2 05 40 06 ► 06 40 05 D2 = 104859090 (105125328 absolute)
30 42 E8 01 ► 01 E8 42 30 = 31998512 = 16383238144 byte = 15 GiB

EBR Partition Table 2
=====================
Partition entry 1 (C882BA1BE – C882BA1CD): 00 71 E1 FF 82 71 E1 FF 30 02 00 00 00 40 E8 01
Partition entry 2 (C882BA1CE – C882BA1DD): 00 71 E1 FF 05 71 E1 FF 26 4C 28 08 DC DB F5 05
Partition entry 3 (C882BA1DE – C882BA1ED): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Partition entry 4 (C882BA1EE – C882BA1FD): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
--------------------
Entry 1:
00 ► not active
82 ► GNU Linux Swap space (UBUNTU)
30 02 00 00 ► 00 00 02 30 = 560 (105125888 absolute)
00 40 E8 01 ► 01 E8 40 00 = 31997952 = 16382951424 byte = 15 GiB
--------------------
Entry 2:
00 ► not active
05 ► Extended partition (CHS)
26 4C 28 08 ► 08 28 4C 26 = 136858662 (137124900 absolute)
DC DB F5 05 ► 05 F5 DB DC = 99998684 = 51199326208 byte = 47 GiB

EBR Partition Table 3
=====================
Partition entry 1 (1058B849BE – 1058B849CD): 00 71 E1 FF 83 71 E1 FF DC 03 00 00 00 D8 F5 05
Partition entry 2 (1058B849CE – 1058B849DD): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Partition entry 3 (1058B849DE – 1058B849ED): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Partition entry 4 (1058B849EE – 1058B849FD): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
--------------------
Entry 1:
00 ► not active
83 ► GNU Linux files system (UBUNTU)
DC 03 00 00 ► 00 00 03 DC = 988 (137125888 absolute)
00 D8 F5 05 ► 05 F5 D8 00 = 99997696 = 51198820352 byte = 47 GiB

如您所见,这对应于 Fedora 中磁盘实用程序的图形视图。因此,这证实了磁盘、fdiskparted都正确显示了分区。换句话说,Fedora 安装程序确实在磁盘末尾创建了两个主分区;而不是像它应该做的那样创建两个逻辑分区。它通过调整(缩小)从其当前起始扇区延伸到磁盘末尾的原始扩展分区的大小来实现这一点。因此,我误以为这两个主分区是逻辑分区(通过某种神奇的咒语)最终位于扩展分区的外部,但被错误地设置为显示为“主”。我大错特错!这两个 Fedora 分区实际上是主分区!

那么 Fedora 为什么会这样做呢?... 我的猜测是它在分区和设置过程中遇到了某种错误,并且不知道如何处理它。我只能假设它与固件错误我最近遇到的 ICH9R 的 Intel SATA 控制器 ROM 中,每当使用 AHCI 模式时,系统就会在启动过程中阻塞,除非将第一个分区的 CHS 结束位置设置为FE FF FF。因为我在磁盘开头有一个 128 MiB 的分区作为系统/启动分区,所以它适合前 1024 个柱面。因此,计算出的此分区的 CHS 结束位置低于 ,而且我实际上在最初对磁盘进行分区时FE FF FF遇到了一些问题。我必须重新启动并手动将此值设置为 ,然后才能在其上成功创建新的 MBR(使用,所以假设它这次正确设置了 CHS 值)并对磁盘进行分区并在其上安装 Windows 10 预览版,然后是 Ubuntu 15.04,然后是 Fedora。diskpartFE FF FFdiskpart

但实际上,我在扩展分区的开头出现了一个小的分区间隙(我记得是这样)。我认为这有点奇怪,但我认为 Ubuntu 安装程序在安装过程中以某种方式解决了这个问题。然后我安装了 Fedora,并选择将其安装在 2 个独立的逻辑分区上。但显然它设法欺骗了我,并没有按照我在“专家分区程序”模式下的要求去做。

所以,从一开始,就有很多原因可能导致此问题。这只能证明我错了,而磁盘实用程序(以及fdiskparted是正确的!;-) 我只是确信我不会在近期再次以多重启动配置安装 Fedora。安装程序似乎不如 Ubuntu 使用的安装程序那么好,至少对于这种类型的设置来说不是。

Windows 内部分区的图形视图与 Fedora 显示的一致。扩展分区除外。这可能是因为 Windows 不知道如何解释扩展分区内的逻辑分区,除非它们是某些常见的 Windows 文件系统类型,如 NTFS。这会破坏 Windows 的 EBR 链,因此它只显示第一个(它理解的那个)位于扩展分区内,并假设其余的是具有未知文件系统类型的常规主分区。

因此,这个问题的简短答案是:两个 Fedora 分区之所以这样出现,是因为它们实际上是主分区,而不是逻辑分区。

相关内容