fdisk:分区表“不按磁盘顺序”但“顺序已经正确”?和 GRUB 遗留问题

fdisk:分区表“不按磁盘顺序”但“顺序已经正确”?和 GRUB 遗留问题

这几天我一直在为以下问题伤脑筋:

  • 据报告分区表被搞乱了,但事实并非如此。
  • grub-legacy 在实际启动期间会出现某些分区的问题,但在 Linux 启动并运行时在 shell 中调用时不会出现问题。

我怀疑这两种症状相关,但我不确定。

背景资料:

  • Grub-legacy 多年来一直从 /dev/sda4 又名 (hd0,3) 上的 XFS 引导,没有遇到任何问题。
  • 使用 Gparted 调整 sda1 上 FAT32 文件系统的大小时,事情变得一团糟(显然 libparted 3.2 中存在一个错误导致了这个问题)。突然 grub 无法再访问 sda4 了。

以下是 fdisk 有关损坏(未损坏)分区表的输出:

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


Command (m for help): p
Disk /dev/sda: 74.5 GiB, 80026361856 bytes, 156301488 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: 0x85068506

Device     Boot     Start       End   Sectors  Size Id Type
/dev/sda1            2048   8390655   8388608    4G  c W95 FAT32 (LBA)
/dev/sda2  *      8390656  29296639  20905984   10G  7 HPFS/NTFS/exFAT
/dev/sda3        29296640 136712191 107415552 51.2G  f W95 Ext'd (LBA)
/dev/sda4       136712192 156301487  19589296  9.3G 83 Linux
/dev/sda5        29298688  33492991   4194304    2G 83 Linux
/dev/sda6        33495040  75438079  41943040   20G 83 Linux
/dev/sda7        75440128  83828735   8388608    4G 83 Linux
/dev/sda8        83830784  88025087   4194304    2G 83 Linux
/dev/sda9        88027136  94318591   6291456    3G 82 Linux swap

Partition table entries are not in disk order.

Command (m for help): x

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

parted 列出分区表如下:

# parted /dev/sda unit s print free                                                    
Model: ATA WDC WD800JB-00JJ (scsi)
Disk /dev/sda: 156301488s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start       End         Size        Type      File system     Flags
        63s         2047s       1985s                 Free Space
 1      2048s       8390655s    8388608s    primary   fat32           boot, lba
 2      8390656s    29296639s   20905984s   primary   ntfs
 3      29296640s   136712191s  107415552s  extended                  lba
 5      29298688s   33492991s   4194304s    logical   ext2
 6      33495040s   75438079s   41943040s   logical   ext3
 7      75440128s   83828735s   8388608s    logical   ext3
 8      83830784s   88025087s   4194304s    logical   ext3
 9      88027136s   94318591s   6291456s    logical   linux-swap(v1)
        94318592s   136712191s  42393600s             Free Space
 4      136712192s  156301487s  19589296s   primary   ext2

关于启动时的grub:

  • 它报告 sda7 和 sda8 的“错误 5:分区表无效或损坏”。
  • 它报告 sda4 的“文件系统类型未知”,尽管它是一个简单的 ext2(到目前为止)。

我搜索了很多论坛/维基/等,但还没有解决这个难题。我才意识到我的分区表是 1MiB 对齐的(因此有 2048 个扇区间隙)。我已经完成了一些分区删除/重新创建/重新格式化/检查等操作,但没有成功。

我正在运行 slackware 14.2(实际上是 salix)和内核 3.10。所有 Linux 文件系统都是 ext2 或 ext3。

我很好奇找到这些症状的原因。请帮助我解决这个问题。

答案1

它之所以这么说Partition table entries are not in disk order.是因为它们不是。您sda4位于磁盘末尾,但sda5-9位于磁盘之前。

输出parted应如下所示:

# parted /dev/loop0 unit s print free
Model: Loopback device (loopback)
Disk /dev/loop0: 156301488s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start       End         Size        Type      File system  Flags
        63s         2047s       1985s                 Free Space
 1      2048s       8390655s    8388608s    primary                lba
 2      8390656s    29296639s   20905984s   primary                boot
 3      29296640s   136712191s  107415552s  extended               lba
 5      29298688s   33492991s   4194304s    logical
 6      33495040s   75438079s   41943040s   logical
 7      75440128s   83828735s   8388608s    logical
 8      83830784s   88025087s   4194304s    logical
 9      88027136s   94318591s   6291456s    logical
        94318592s   136712191s  42393600s             Free Space
 4      136712192s  156301487s  19589296s   primary

请注意,这只是对该消息的解释fdisk。如果将最后一个主分区转换为逻辑分区,该消息就会消失。我不确定这是否与您的其他分区问题有任何关系。

相关内容