Oli*_*nde 17 linux partition kernel block-device
我不小心用 GParted 覆盖了我的 /dev/sda 分区表(AskUbuntu 上的完整故事)。由于我还没有重新启动并且我的文件系统仍然完全可用,我被告知我可能能够从内核内存中恢复分区表。那可能吗?如果是这样,我如何恢复它并恢复它?

phe*_*mer 28
是的,您可以使用/sys文件系统执行此操作。
/sys是由内核和内核驱动程序动态生成的假文件系统。
在这种特定情况下,您可以转到/sys/block/sda,您将看到驱动器上每个分区的目录。您需要的这些文件夹中有 2 个特定文件,start以及size. start包含从驱动器开始的偏移量,size是分区的大小。只需删除分区并使用与/sys.
例如,这就是我的驱动器的样子:
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 133119 65536 83 Linux
/dev/sda2 * 133120 134340607 67103744 7 HPFS/NTFS/exFAT
/dev/sda3 134340608 974675967 420167680 8e Linux LVM
/dev/sda4 974675968 976773167 1048600 82 Linux swap / Solaris
Run Code Online (Sandbox Code Playgroud)
这就是我所拥有的/sys/block/sda:
sda1/
start: 2048
size: 131072
sda2/
start: 133120
size: 134207488
sda3/
start: 134340608
size: 840335360
sda4/
start: 974675968
size: 2097200
Run Code Online (Sandbox Code Playgroud)
我已经对此进行了测试,以验证在正在运行的系统上修改分区表后信息是否准确
小智 12
我制作了一个脚本来帮助解决这个问题,没有 WARRANTY。(但我在我的虚拟机上测试过)
运行以下脚本,第一个参数为损坏的 HD,如下所示:
user@host:~$ ./repart.sh sda
Run Code Online (Sandbox Code Playgroud)
内容repart.sh:
user@host:~$ ./repart.sh sda
Run Code Online (Sandbox Code Playgroud)
输出是 sfdisk 格式。但请注意,必须修改此文件才能使用。在扩展分区类型=5 时,增加大小,使用所有逻辑空间加上扩展开始和第一个逻辑分区开始之间的空间。
unit: sectors
/dev/sda1 : start=63, size=2040192, type=XX
/dev/sda2 : start=2040255, size=20482875, type=XX
/dev/sda3 : start=22523130, size=19197675, type=XX
/dev/sda4 : start=41720805, size=2, type=XX
/dev/sda5 : start=41720868, size=208782, type=XX
Run Code Online (Sandbox Code Playgroud)
您必须将type,从 XX更改为分区类型的数量。将可引导分区放在第一行。
unit: sectors
/dev/sda1 : start=63, size=2040192, type=83, bootable
/dev/sda2 : start=2040255, size=20482875, type=83
/dev/sda3 : start=22523130, size=19197675, type=fd
/dev/sda4 : start=41720805, size=208845, type=5
/dev/sda5 : start=41720868, size=208782, type=82
Run Code Online (Sandbox Code Playgroud)
应用此更改
cat repart.sfdisk | sfdisk -f /dev/sda
Run Code Online (Sandbox Code Playgroud)
重读分区表
partprobe
/sbin/blockdev --rereadpt
Run Code Online (Sandbox Code Playgroud)
重新安装 grub
grub-install /dev/sda
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15295 次 |
| 最近记录: |