这几天我一直在为以下问题伤脑筋:
- 据报告分区表被搞乱了,但事实并非如此。
- 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
。如果将最后一个主分区转换为逻辑分区,该消息就会消失。我不确定这是否与您的其他分区问题有任何关系。