You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何恢复误删除的LUKS分区表?

如何恢复误删除的LUKS分区表?

别慌!既然你已经通过hexdump确认LUKS头还完好,甚至能通过loop设备解密读取所有文件,那重建分区表的操作其实很稳妥,下面一步步来:

先确认关键信息

你之前用losetup -o 0x00100000成功挂载,这个偏移量对应的是2048个扇区(因为每个扇区默认是512字节,0x100000 ÷ 512 = 2048),这就是原LUKS分区的起始位置,这个数值是我们重建的核心。

接下来需要确认磁盘的总大小,确保新分区能覆盖整个原LUKS区域:

# 查看磁盘总扇区数(也可以用fdisk -l /dev/sda查看)
sudo blockdev --getsize /dev/sda

选择对应工具重建分区表

根据你原来的分区表类型(MBR或GPT),选择对应的工具操作:

情况1:原分区表是MBR(msdos)

用fdisk工具操作:

  1. 启动fdisk:
    sudo fdisk /dev/sda
    
  2. 创建新分区:
    • 输入n,选择创建主分区(输入p)
    • 分区号默认1,直接回车
    • 起始扇区输入2048(就是我们之前确定的起始位置)
    • 结束扇区直接回车,自动使用剩余全部空间
  3. 修改分区类型为Linux兼容格式:
    • 输入t,然后输入83(这是Linux文件系统的类型码,LUKS分区用这个完全没问题)
  4. 保存分区表并退出:
    • 输入w,确认后fdisk会自动更新分区表

情况2:原分区表是GPT

用gdisk工具操作(如果没装可以先安装gdisk包):

  1. 启动gdisk:
    sudo gdisk /dev/sda
    
  2. 创建新分区:
    • 输入n,分区号默认1回车
    • 起始扇区输入2048
    • 结束扇区直接回车用剩余空间
    • 分区类型代码输入8300(这是GPT格式下Linux文件系统的标准代码,适配LUKS)
  3. 保存分区表:
    • 输入w,确认提示后完成操作

验证恢复效果

操作完成后,就可以像正常LUKS分区一样解密挂载了:

# 解密分区
sudo cryptsetup luksOpen /dev/sda1 luksrecover
# 挂载(假设挂载点是/mnt/recover)
sudo mount /dev/mapper/luksrecover /mnt/recover

之后你就能像之前一样访问所有文件了,也可以用cryptsetup luksDump /dev/sda1确认LUKS头被正确识别。

⚠️ 重要提醒:操作前最好先给整个磁盘做个镜像备份,比如用dd命令:

sudo dd if=/dev/sda of=/path/to/safe/location/backup.img bs=4M

万一操作失误,还能从镜像恢复。

备注:内容来源于stack exchange,提问作者Florian Ludewig

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 13:32:36