惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
DataBreaches.Net
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Google DeepMind News
Google DeepMind News
博客园 - 聂微东
Microsoft Azure Blog
Microsoft Azure Blog
V
Visual Studio Blog
IT之家
IT之家
博客园 - 【当耐特】
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
B
Blog
爱范儿
爱范儿
阮一峰的网络日志
阮一峰的网络日志
云风的 BLOG
云风的 BLOG
Vercel News
Vercel News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
H
Hackread – Cybersecurity News, Data Breaches, AI and More
H
Help Net Security
J
Java Code Geeks
aimingoo的专栏
aimingoo的专栏
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
B
Blog RSS Feed
Blog — PlanetScale
Blog — PlanetScale
S
SegmentFault 最新的问题
Apple Machine Learning Research
Apple Machine Learning Research

公牛博客

《观局》——乡野猪噜噜 《观局》——乡野猪噜噜 《观局》——乡野猪噜噜 《观局》——乡野猪噜噜 – 公牛博客 《观局》——乡野猪噜噜 – 公牛博客 《观局》——乡野猪噜噜 – 公牛博客 《观局》——乡野猪噜噜 – 公牛博客 《观局》——乡野猪噜噜 – 公牛博客 《观局》——乡野猪噜噜 – 公牛博客 《观局》——乡野猪噜噜 – 公牛博客 《观局》——乡野猪噜噜 – 公牛博客 《观局》——乡野猪噜噜 – 公牛博客 《观局》——乡野猪噜噜 – 公牛博客 《观局》——乡野猪噜噜 – 公牛博客 《观局》——乡野猪噜噜 – 公牛博客 《观局》——乡野猪噜噜 – 公牛博客 《观局》——乡野猪噜噜 – 公牛博客 《观局》——乡野猪噜噜 – 公牛博客 《观局》——乡野猪噜噜 – 公牛博客 《观局》——乡野猪噜噜 – 公牛博客 《观局》——乡野猪噜噜 – 公牛博客 《观局》——乡野猪噜噜 – 公牛博客 《观局》——乡野猪噜噜 – 公牛博客 《观局》——乡野猪噜噜 – 公牛博客 《观局》——乡野猪噜噜 – 公牛博客 《观局》——乡野猪噜噜 – 公牛博客 《观局》——乡野猪噜噜 – 公牛博客 《观局》——乡野猪噜噜 – 公牛博客 《观局》——乡野猪噜噜 – 公牛博客 《观局》——乡野猪噜噜 – 公牛博客
Linux 系统启动提示 "Invalid partition table",如何修复?
大嘴 · 2025-01-02 · via 公牛博客

引言

在 Linux 系统启动过程中,如果出现 “Invalid partition table” 提示,通常意味着分区表(Partition Table)损坏或无法被识别。分区表是硬盘上用于记录分区信息的关键数据结构,其损坏可能导致系统无法找到启动分区或数据分区。本文将详细介绍如何排查和修复此类问题,帮助您恢复系统正常运行。


一、理解 “Invalid partition table” 的常见原因

  1. 分区表损坏
  • 非法操作(如使用不兼容的分区工具)。
  • 硬盘写入错误或坏道。
  1. 分区表类型不匹配
  • 系统尝试读取 MBR(Master Boot Record)分区表,但硬盘实际使用 GPT(GUID Partition Table),或反之。
  1. 引导加载程序错误
  • GRUB 或其他引导加载程序配置错误,导致无法正确识别分区表。
  1. 硬件故障
  • 硬盘物理损坏或数据线接触不良。

二、排查与修复步骤

1. 进入 Live 环境

使用 Linux Live USB 或 CD 启动系统,以便在不挂载硬盘的情况下进行修复。

2. 检查分区表类型

使用 fdiskgdisk 检查分区表类型:

sudo fdisk -l /dev/sda
  • 如果输出中包含 Disklabel type: gpt,则表示使用 GPT 分区表。
  • 如果输出中包含 Disklabel type: dos,则表示使用 MBR 分区表。
3. 修复 MBR 分区表

如果使用 MBR 分区表,可以使用 fdisk 修复:

sudo fdisk /dev/sda
  • 输入 p 查看分区信息。
  • 如果分区信息丢失,可以尝试使用 v 验证分区表。
  • 使用 w 保存更改并退出。
4. 修复 GPT 分区表

如果使用 GPT 分区表,可以使用 gdisk 修复:

sudo gdisk /dev/sda
  • 输入 p 查看分区信息。
  • 如果分区信息丢失,可以尝试使用 r 进入恢复模式,然后使用 v 验证分区表。
  • 使用 w 保存更改并退出。
5. 重建分区表

如果分区表完全损坏,可以尝试重建分区表。注意:此操作会丢失所有分区信息,需谨慎使用。

sudo fdisk /dev/sda
  • 输入 o 创建新的 MBR 分区表,或 g 创建新的 GPT 分区表。
  • 使用 n 创建新分区,并按照提示设置分区大小和类型。
  • 使用 w 保存更改并退出。
6. 恢复数据

如果分区表修复后数据丢失,可以尝试使用数据恢复工具(如 testdisk)恢复:

sudo apt-get install testdisk
sudo testdisk /dev/sda
  • 按照提示选择分区类型和恢复操作。
7. 修复 GRUB 配置

如果分区表修复后仍无法启动,可能需要修复 GRUB 配置:

sudo grub-install /dev/sda
sudo update-grub

三、常见错误场景与解决方案

场景 1:MBR signature not found
  • 原因:MBR 签名丢失或损坏。
  • 解决:使用 fdisk 重建 MBR 分区表。
场景 2:GPT header corrupted
  • 原因:GPT 头损坏。
  • 解决:使用 gdisk 修复 GPT 分区表。
场景 3:Partition table entries are not in disk order
  • 原因:分区表条目顺序错误。
  • 解决:使用 fdiskgdisk 重新排序分区表条目。
场景 4:Invalid partition table - no partitions found
  • 原因:分区表完全丢失。
  • 解决:使用 testdisk 恢复分区表。

四、预防措施

  1. 定期备份分区表
  • 使用 sfdisk 备份 MBR 分区表:
    bash sudo sfdisk -d /dev/sda > sda-partition-table.bak
  • 使用 sgdisk 备份 GPT 分区表:
    bash sudo sgdisk --backup=sda-gpt-table.bak /dev/sda
  1. 避免非法操作
  • 使用兼容的分区工具(如 fdiskgdisk)。
  • 避免在硬盘读写过程中断电或强制重启。
  1. 监控硬盘健康
  • 使用 smartctl 定期检查硬盘健康状态:
    bash sudo smartctl -a /dev/sda
  1. 使用冗余存储
  • 使用 RAID 或 LVM 提供存储冗余,防止单点故障。

五、附录

1. 常用工具
  • fdisk:用于管理 MBR 分区表。
  • gdisk:用于管理 GPT 分区表。
  • testdisk:用于恢复丢失的分区表和数据。
  • smartctl:用于检查硬盘健康状态。
2. 参考文档
3. 示例命令
  • 备份 MBR 分区表:
  sudo sfdisk -d /dev/sda > sda-partition-table.bak
  • 恢复 MBR 分区表:
  sudo sfdisk /dev/sda < sda-partition-table.bak
  • 备份 GPT 分区表:
  sudo sgdisk --backup=sda-gpt-table.bak /dev/sda
  • 恢复 GPT 分区表:
  sudo sgdisk --load-backup=sda-gpt-table.bak /dev/sda

总结

“Invalid partition table” 是 Linux 系统启动过程中常见的错误,通常由分区表损坏、类型不匹配或硬件故障引起。通过使用 fdiskgdisktestdisk 等工具,可以修复分区表并恢复系统正常运行。为了预防类似问题,建议定期备份分区表、避免非法操作并监控硬盘健康状态。

0