我打算安裝一個全新的 Linux 發行版 (Mageia),我將其視為重新組織分割區的機會。我希望所有非 Linux(Windows、復原等)分割區都位於開頭,Linux 分割區位於末尾,這樣如果我想測試更多發行版,我可以更輕鬆地建立新的 Linux 分割區。
我使用 GParted 刪除了現有的 Linux 分割區(我備份了想要保留的資料)並將剩餘的移到前面。我稍後會在 Mageia 安裝程式中建立 Linux 分割區。
雖然花了一些時間,但最終 GParted 順利完成。 Mageia 也安裝得很順利。
當啟動到 Mageia 時,我遇到了 ATI Radeon 顯示卡的一些(無關?)問題(仍未解決),這讓我只剩下控制台,當重新啟動時,我看到了Error: Can't have overlapping partitions
疾馳而過。
沒問題,我想,我只需再次啟動 GParted 並修復它。唉,GParted 將整個磁碟顯示為未指派。好吧,回到Linux。從命令列開始分離給了我
[root@localhost ~]# parted
GNU Parted 2.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Error: Can't have overlapping partitions.
fdisk
應該給我更多信息,它確實做到了:
[root@localhost ~]# fdisk -l -u /dev/sda
Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 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
Disk identifier: 0x2bd2c32a
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 206847 102400 7 HPFS/NTFS
/dev/sda2 208845 1953520064 976655610 5 Extended
/dev/sda3 950740992 1013655551 31457280 7 HPFS/NTFS
/dev/sda4 1013655552 1015754751 1049600 12 Compaq diagnostics
/dev/sda5 208896 409808895 204800000 7 HPFS/NTFS
/dev/sda6 409810944 950740991 270465024 7 HPFS/NTFS
/dev/sda7 1015757883 1034184374 9213246 82 Linux swap / Solaris
/dev/sda8 1034184438 1953520064 459667813+ 83 Linux
如果我按分區開始排序,似乎/dev/sda5
應該/dev/sda6
調用/dev/sda3
和/dev/sda4
,反之亦然。
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 206847 102400 7 HPFS/NTFS
/dev/sda2 208845 1953520064 976655610 5 Extended
/dev/sda5 208896 409808895 204800000 7 HPFS/NTFS
/dev/sda6 409810944 950740991 270465024 7 HPFS/NTFS
/dev/sda3 950740992 1013655551 31457280 7 HPFS/NTFS
/dev/sda4 1013655552 1015754751 1049600 12 Compaq diagnostics
/dev/sda7 1015757883 1034184374 9213246 82 Linux swap / Solaris
/dev/sda8 1034184438 1953520064 459667813+ 83 Linux
透過谷歌搜索,我發現testdisk
可以解決這個問題。
- 我該如何使用
testdisk
?介面相當混亂。 - 我可以從 Linux/Windows 運行它還是應該啟動即時版本?
先謝,
缺口
我按照下面答案中的說明進行操作,但它不起作用。
我必須重新建立這些分割區:
/dev/sda3 950740992 1013655551 31457280 7 HPFS/NTFS
/dev/sda4 1013655552 1015754751 1049600 12 Compaq diagnostics
發生的情況是這樣的:
[root@localhost ~]# fdisk /dev/sda
Command (m for help): d
Partition number (1-8): 3
Command (m for help): d
Partition number (1-8): 4
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First sector (950743040-1953520064, default 950743040): 950740992
Value out of range.
First sector (950743040-1953520064, default 950743040):
第一個分區需要從 95074 開始0992但新的可能只能從95074開始3040。
我該如何繼續?
答案1
我找到的修復分區順序的最佳解決方案:
Enter into the disk partition place:
fdisk /dev/sda
Command (m for help): m
Command action
...
l list known partition types
m print this menu
p print the partition table
q quit without saving changes
w write table to disk and exit
x extra functionality (experts only)
Command (m for help): x
Expert command (m for help): m
Command action
...
f fix partition order
m print this menu
p print the partition table
q quit without saving changes
r return to main menu
v verify the partition table
w write table to disk and exit
Expert command (m for help): f
Done.
Expert command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
完畢!
答案2
重疊分割區問題的出現部分是由於 PC 分割區的奇怪之處。
分區表的空間剛好可以容納 4 個「主分區」條目。如果您需要有4 個以上的分區,則有一種稱為「擴展」分區的機制- 它實際上創建一個大分區(在您的情況下是分區#2),而該分區又具有一個自己的子分割區表,允許新增稱為「擴充」的附加條目「邏輯」分割區。
您所做的是建立一個從磁區 208845 到 1953520064 的擴充分割區,同時也建立了與為「擴充」分割區保留的磁碟空間重疊的附加主分割區 3 和 4。
解決問題最簡單的方法如下:
- 使用 Linux fdisk 刪除分割區 3 和 4
- 使用與先前相同的磁區開始/結束值將它們重新建立(再次使用 fdisk)作為擴充分割區中的邏輯分割區
如果您希望邏輯分割區順序反映它們在磁碟上的「實體」位置,fdisk
也可以提供協助。只需按“x”即可啟動擴充功能並使用F ix 分區順序功能。之後您可能需要fstab
針對 Linux 系統調整 s - Windows 具有基於 GUID 的分割區識別,並且不應該關心順序。
答案3
請注意:我嘗試了 fdisk 中的高級修復選項並重新啟動了系統。這產生了災難性的影響,因為我的 /dev/sda8 變成了 /dev/sda5 ,而 /boot/grub 並沒有因此而改變。
因此,為了避免損壞,解決此問題的明顯方法是:
$ fdisk /dev/sda
x
f
w
$ update-grub
$ grub-install
但首先請確保安裝了 grub 命令(上面),因為它在某些系統中似乎已被棄用。