Восстановление убитых MBR и таблицы разделов | ||
Железо > Восстановление данных Ситуация следующая. Есть винт на 160Гб. На нем 2 раздела — 40Гб и 120Гб. С целью установки убунты как второй системы была произведена разбивка 120Гб -> 100+10+2+8. 1. При загрузке системы выводится сообщение MBR helper not found; Дураку понятно, что это начало веселой ночи (шел 3й час).
1. Восстановление таблицы разделов 1.1. Parted magic Данный LiveCD\USB дистрибутив, размером в 100Мб несет в себе огромную кучу софта, для работы с дисками. От разбивки, до восстановления. Из них всех, нам нужны будут gpart, testdisk, fdisk и ms-sys. 1.2. Gpart gpart — это утилита, сканирующая по-секторно диск на наличие разделов, которые присутствуют на носителе, но отсутствуют в таблице. В своей работе, она игнорирует уже существующую таблицу (если присутствует). Программа разаботана немецким программистом Michail Brzitwa и больше им не поддерживается. Вялотекущая разработка ведется командами Fedora и Debian. Текущая версия — 0.1h. Утилита позволяет наиболее быстро и легко восстановить таблицу разделов, но она несет в себе несколько недостатков. Во-первых, разработка была давно заброшена, во-вторых, она иногда не совсем корректно определяет разделы. gpart может работать в 2-х режимах. Это быстрый анализ и подробное сканирование. В некоторых случаях, первого режима достаточно. Мы же будем смотреть на второй. gpart -if /dev/sda -i — интерактивный режим. На каждую найденную партицию будет задан вопрос, сохранять ее, либо пропустить. -f — полный скан диска. После, довольно продолжительного времени, будет создан отчет с возможными разделами. Его-то и нужно обязательно максимально внимательно просмотреть перед записью. Пример отчета (не мой): Begin scan... Possible partition(DOS FAT), size(1907mb), offset(0mb) Possible partition(SGI XFS filesystem), size(5730mb), offset(1907mb) End scan. Checking partitions... Partition(DOS or Windows 95 with 32 bit FAT, LBA): primary Partition(Linux ext2 filesystem): primary Ok. Guessed primary partition table: Primary partition(1) type: 012(0x0C)(DOS or Windows 95 with 32 bit FAT, LBA) size: 1907mb #s(3906544) s(16-3906559) chs: (0/1/1)-(1023/19/16)d (0/1/1)-(12207/19/16)r Primary partition(2) type: 131(0x83)(Linux ext2 filesystem) size: 5730mb #s(11736000) s(3906560-15642559) chs: (1023/19/16)-(1023/19/16)d (12208/0/1)-(48882/19/16)r Primary partition(3) 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 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 Если все ОК, то соглашаемся на запись в таблицу разделов, скрещиваем пальцы и перезагружаемся. В моем случае, программа определила разделы, которые были до разбивки (40 и 120), что не подходило и заставило искать альтернативные способы восстановления. 1.3. testdisk Note: подробнее эта утилита описана в этом посте, здесь не буду повторяться. Эта утилита аналогична предыдущей, но имеет ряд плюсов: 1. более свежая и активно поддерживается; 2. субъективно, работает намного быстрее; 3. функциональнее; 4. есть простой консольный интерфейс на базе ncurses. Поехали! 1. в первом окне выбираем Create a new log file; 2. выбираем нужный диск (/dev/sda) -> Proceed; 3. отмечаем тип разделов как Intel; 4. выбираем Analyse current partition structure and search for lost partitions; 5. если найденные разделы верны, жмем Backup и переходим к пункту 6, есть возможность быстро пересканировать диск, если где-то ошибка (Quick search); 6. здесь уже виден зеленый список с разделами. Если ок, то записываем, иначе запускаем Deep search.; В моем случае, результат был аналогичен результату gpart, что есть некорректен. Запустив Deep search, выждав около 40 минут я получил ответ, от которого на душе так нехило отлегло. Было найдено несколько партиций, которые накладывались одна на другую (это были изначальная (до манипуляций) 120Гб и новая, на 100Гб). Отметив ненужную, как удаленную, я записал таблицу на диск и перезагрузился. К счастью, все обошлось и компьютер вернулся к состоянию, который был изначально, а я мог с чистой совестью лечь спать. 3. Восстановление MBR Для этой задачи, у нас в арсенале есть тулза ms-sys. Сперва узнаем, что с нашей MBR. ms-sys /dev/sda /dev/sda has an x86 boot sector it is unknown boot sector Теперь видно, что на данном диске нет загрузочного сектора. Утилита может работать с MBR различных операционных систем. Список можно получить, запустив программу без агрументов. В моем случае, необходим был от Windows 7. Записываем MBR на диск: ms-sys -7 /dev/sda Windows 7 master boot record successfully written to /dev/sda Проверяем: ms-sys /dev/sda it is Microsof 7 master boot record, like the one this program creates with the switch -7 on a hard disk device. Вот и все, нужная MBR установлена и можно перезагружаться. 3. Outro Этот пост пример того, как на пустом месте можно создать себе проблему и полночи заниматься не тем, чем надо. Но это дало неоценимый опыт, который я постарался изложить здесь. Возможно, кому-нибудь он пригодится. Ведь в такую ситуацию попасть очень не сложно, а детального мануала особо-то и нет. |
||
Комментарии | ||