Решение проблемы
Будьте осторожны! Дальнейшие объяснения приведут к возврату к предыдущей
ОС, с потерей, только что установленной, новой, если она есть! Выбирать
вам...
Простое решение
Все очень просто, если у вас есть:
диск (флоппи или CD), с которого можно загрузить Linux с программой fdisk -
многие загрузочные диски любого дистрибутива могут это сделать,
распечатанный или переписанный результат работы команды fdisk -l (ниже
"список").
Надо:
запустить Linux,
запустить fdisk /dev/hda (или тот диск, который хотите
восстановить),
использовать команду удаления раздела fdisk (опция d) для всех существующих
разделов поврежденного диска,
использовать команду создания главного раздела fdisk (опции 1-4) для всех
главных разделов из списка,
проставить соответствующие типы разделов в соответствии со списком (опция
t) : 82 - Linux swap, 83 - Linux main (опция L выдает список), 5 -
расширенный, который надо создать до создания логических разделов.
создать логические разделы.
fdisk - это очень маленькая и умная программа.
Существует много других реализаций fdisk, но я лично предпочитаю
стандартный (Я говорю только от лица пользователей Linux).
Заметьте, что fdisk не записывает ничего на диск, пока
вы не выберете опцию w и не нажмете Enter. Если вы боитесь ошибиться,
выберите опцию q (quit) или нажмите Ctrl-C для выхода без сохранения
изменений.
После записи таблицы разделов запустите свой Linux. Возможно, вам это не
удастся: lilo тоже может быть поврежден, и вам придется снова загружаться с
флоппи или загрузочного CD (выберите опцию "загрузка с существующего
раздела").
Если вы загружали свою систему при помощи lilo, то после входа в систему
пользователем root, запустите команду lilo, для
переустановки вашего загрузчика.
Ваш Linux должен быть восстановлен - проверьте его. Также попытайтесь
запустить Windows, если он у вас был. Если ничего не получается, то
существуют шансы (которые, к сожалению, очень малы), что вы сможете
прочитать данные с вашего Linux, возможно, при помощи прямого чтения
секторов с диска. Если вы можете определить номера секторов диска, в
которых находятся ваши данные, то используйте команду dd для записи их в
файл. Это просто только для текстов. Описание такой формы восстановления
данных не входит в этот документ.
Не такое простое решение
Вручную
Такой способ обычно бывает необходим, если все вышеописанное неприменимо,
например, если у вас нет распечатки результата fdisk, или она устарела
Во-первых, вам надо знать, что пока вы не пишете ничего на диск (кроме
записи таблицы разделов при помощи fdisk), вы не можете испортить свои
данные, поэтому можно пробовать устанавливать начало раздела
последовательно цилиндр за цилиндром. Это надо делать потому, что для
запуска системы с раздела, надо знать его начало. Например, если 153 не
подошло, попробуйте 154, и так далее.
Это может утомить, но если вы помните примерные размеры разделов, то у вас
есть шансы на успех.
gpartСуществует лучший путь, если у вас есть доступ к сети или есть под руками
утилита gpart.
gpart - guess PC-type hard disk partitions (Восстановление таблицы разделов
жесткого диска)" - это первая строка man-страницы для утилиты gpart
(man gpart).
"gpart пытается восстановить таблицу разделов на жестком диске, если она
была потеряна, перезаписана или разрушена, а разделы все еще присутствуют
на диске". Это как раз то, что нам надо.
Утилита gpart все еще достаточно сыра, но уже
довольно хороша для использования.
Проблема состоит в следующем: первый блок любого раздела помечается
специальным образом. Но эта пометка с блока не убирается, пока в него не
запишутся другие данные. Поэтому много "первых блоков раздела" остается на
старом диске, и gpart пытается восстановить наиболее реальную картину. На
самом деле в этом нет ничего сложного, и, к тому же, gpart ничего не
записывает на диск
Вот результат работы gpart для ранее описанного диска
hdb :
root@charles:/home/jdd > gpart /dev/hdb
Begin scan...
Possible partition(Linux ext2), size(1200Mb), offset(0Mb)
Possible partition(Windows NTFS), size(1200Mb), offset(1200Mb)
Possible partition(Linux ext2), size(1004Mb), offset(2402Mb)
Possible partition(Windows NTFS), size(1600Mb), offset(4102Mb)
End scan.
Checking partitions...
* Warning: partition(OS/2 HPFS, NTFS, QNX or Advanced UNIX) ends beyond
disk end .
Partition(Linux ext2 filesystem): primary
Partition(OS/2 HPFS, NTFS, QNX or Advanced UNIX): primary
Partition(Linux ext2 filesystem): primary
Partition(OS/2 HPFS, NTFS, QNX or Advanced UNIX): invalid primary
Ok.
Guessed primary partition table:
Primary partition(1)
type: 131(0x83)(Linux ext2 filesystem)
size: 1200mb #s(2457880) s(63-2457942)
chs: (0/1/1)-(152/254/61)d (0/1/1)-(152/254/61)r
Primary partition(2)
type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX)
size: 1200mb #s(2457880) s(2457944-4915823)
chs: (152/254/63)-(305/253/60)d (152/254/63)-(305/253/60)r
Primary partition(3)
type: 131(0x83)(Linux ext2 filesystem)
size: 1004mb #s(2056256) s(4919781-6976036)
chs: (306/61/49)-(434/60/47)d (306/61/49)-(434/60/47)r
Primary partition(4)
type: 000(0x00)(unused) size: 0mb #s(0) s(0-0) chs: (0/0/0)-(0/0/0)d
(0/0/0)-(0/0/0)r
Как видно из примера, главный раздел можно восстановить, но с расширенным
придется еще поработать.
DOS-разделы названы "Windows NTFS" потому, что они были созданы при попытке
установки Windows 2000 (очень опасный эксперимент!). А тот раздел, который
назван "invalid" - это на самом деле расширенный раздел.
После запуска gpart можно запустить обычный fdisk и попытаться снова
воссоздать таблицу разделов (помните, что это неопасно, так как исходная
таблица разделов уже потеряна).
Вариант для богатых
Partition Magic - это коммерческий продукт, не из дешевых, с точки зрения
частоты применения (его цена примерно 100 долларов во Франции), но о нем
очень хорошо отзываются. Однако, я никогда его не использовал и не буду его
оценивать. Говорят, что он может что угодно делать с разделами, в том числе,
и восстанавливать их. Однако, это утилиты для windows, и я не знаю, есть ли
в нем DOS-часть. Если необходимо устанавливать Windows для использования
Partition magic, то это не очень интересно.
Старый "Мини-HOWTO: Восстановление разделов" (автор Ralf) был почти
полностью основан на применении Partition Magic, поэтому я предполагаю, что
это хорошее решение, если у вас есть важные данные на Linux-разделе, а
возможности вашего Linux малы. Однако, недавно появились свежие версии
Partition Magic, и, я думаю, вам необходимо будет прочитать инструкции.