问题出在我试图修复这个问题事情变得非常糟糕,我最终遇到了一个全新的问题。我做的最后一件事就是跑
sudo apt-get install
这导致我的系统冻结。我重启了电脑,但无法从硬盘启动。我从我的闪存驱动器运行了一份 Ubuntu 12.10 副本,然后运行 gparted 以查看我的分区是否全部存在。它返回了以下消息:
Invalid partition table on /dev/sda -- wrong signature 5208.
该驱动器显示为一个 2TiB 未分配驱动器,并且存在错误。该驱动器之前有 4 个分区(加上随机未分配空间)。有一个 fat32 分区、一个包含 ubuntu 13.04/13.10 的 ext4 分区(我现在甚至不知道是哪一个)、一个包含我的 ubuntu 分区的交换分区的扩展分区(我本来打算将该 ubuntu 分区移动到扩展分区,但一直没来得及),还有另一个分区(我不记得我是如何格式化它的)。我还应该提到这是一个 1TB 硬盘。
简而言之,我从主硬盘启动时发现分区表已损坏,我该如何修复它?
我尝试使用
sudo mount /dev/sda1 /media/ubuntu
然后我将目录更改为所述文件夹并尝试列出文件,然后发生了以下可怕的事情:
$ ls
ls: cannot access ��w�j^�.: Input/output error
ls: cannot access �?(�
�x?.|: Input/output error
ls: cannot access 6W_@�)?._??: Input/output error
ls: cannot access HB0v???.A}�: Input/output error
ls: cannot access ???.�X: Input/output error
ls: cannot access t)�.+�l: Input/output error
ls: cannot access ?h@
�.@ : Input/output error
ls: cannot access >? @�?.���: Input/output error
ls: cannot access m???.?�: Input/output error
ls: cannot access @ if�?a?: Input/output error
ls: cannot access ?M!vN$�.??n: Input/output error
ls: cannot access ?o�
�?.Bm`: Input/output error
ls: cannot access ?:I???
M.
: Input/output error
ls: cannot access W??.??: Input/output error
ls: cannot access �: Input/output error
ls: cannot access ?W�s??: Input/output error
ls: cannot access ?v?k?.???: Input/output error
ls: cannot access 5?$<N��: Input/output error
.x����.??i: Input/output error
ls: cannot access je?���.j?1: Input/output error
XjD?.���: Input/output error
ls: cannot access W??n�??.?: Input/output error
ls: cannot access �^x.$"�: Input/output error
ls: cannot access !�?*!?�j.�?: Input/output error
ls: cannot access '-�?k?^�.?��: Input/output error
ls: cannot access b�w?w?b.\??: Input/output error
ls: cannot access o�??�"z.?�B: Input/output error
ls: cannot access ��b�h.?3-: Input/output error
ls: cannot access �?.$7: Input/output error
ls: cannot access )??K.bk: Input/output error
ls: cannot access s?�z?.?(�: Input/output error
ls: cannot access �F@?0?.@�: Input/output error
.�D: Input/output error
.?�: Input/output error
ls: cannot access?�??�.
@: Input/output error
ls: cannot access ?/?�
?.��: No such file or directory
ls: cannot access rk?p4q(�.�k: Input/output error
这看起来很有希望。这是 fdisk -l 的输出
$ sudo fdisk -l /dev/sda
Warning: ignoring extra data in partition table 5
Warning: ignoring extra data in partition table 5
Warning: ignoring extra data in partition table 5
Warning: invalid flag 0x5208 of partition table 5 will be corrected by w(rite)
Disk /dev/sda: 2199.0 GB, 2199023132672 bytes
255 heads, 63 sectors/track, 267349 cylinders, total 4294967056 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: 0x44fdfe06
Device Boot Start End Blocks Id System
/dev/sda1 113305600 894715903 390705152 c W95 FAT32 (LBA)
/dev/sda2 894715904 1489307647 297295872 83 Linux
/dev/sda3 1489309694 1497307135 3998721 5 Extended
/dev/sda4 1497309184 1953523711 228107264 7 HPFS/NTFS/exFAT
/dev/sda5 ? 3013257822 3688738171 337740175 aa Unknown
答案1
好吧,我不确定我到底做了什么来修复它,所以我只列出我做过的一些可能已经修复它的事情。首先,我使用 4 GB 的 U 盘启动 Ubuntu 12.10。驱动器上的空间有限,只能通过卸载其他实用程序(如 Thunderbird)来安装新实用程序。我遇到的一个实用程序叫做固定零件。我不相信有包含 fixparts 的 ppa,所以我不得不下载 .deb 并使用 Ubuntu 软件中心进行安装。在线文档/教程建议使用 fdisk 首先备份 MBR 数据,这样如果 fixparts 进一步损坏它,就可以恢复它。我这样做了(假设我们要修复的驱动器是 sda),
sudo fdisk -d /dev/sda > parts.txt
并恢复数据
sudo fdisk -f /dev/sda < parts.txt
要使用 fixparts,你只需要向它提供你想要处理的驱动器
sudo fixparts /dev/sda
从那里,您可以使用界面。它会首先告诉您它找到的主分区。它不会列出扩展分区。然后,您可以发出要执行的操作的命令。如果您想要命令列表,只需使用?
查看上述链接中的在线文档以获取更多详细信息。Fixparts 并没有真正为我解决问题,但它让我入门了。我使用前面提到的命令和 fdisk 恢复了原始分区表,然后使用 fdisk 使我的 Linux 分区可启动。只需启动不带参数的 fdisk,或者在其后使用驱动器,您就可以使用类似于 fixparts 的界面。所以我运行了
sudo fdisk /dev/sda
并将第二个分区设置为可启动。启动后,我能够像平常一样运行 Ubuntu 13.04 并访问所有分区。
如果有人了解修复此问题的技术原因,请随意重写这个混乱的答案,我会将其选为最佳答案。