Пользователь
0,0
рейтинг
17 апреля 2011 в 18:39

Администрирование → Восстановление убитых MBR и таблицы разделов

*nix*

0. Intro.


Ситуация следующая. Есть винт на 160Гб. На нем 2 раздела — 40Гб и 120Гб. С целью установки убунты как второй системы была произведена разбивка 120Гб -> 100+10+2+8.

Далее, с целью отката изменений, были объединены диски (10, 2 и 8) обратно в один 20Гб и отформатирован в NTFS. В нагрузку к этому, были проведены операции с MBR, результатом которой явилась ее смерть.

Итоги

1. При загрузке системы выводится сообщение MBR helper not found;
2. fdisk показывает один большой 160Гб диск.

Дураку понятно, что это начало веселой ночи.
Далее, под катом, решения вопроса.

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


Этот пост пример того, как на пустом месте можно создать себе проблему и полночи заниматься не тем, чем надо. Но это дало неоценимый опыт, который я постарался изложить здесь.
Возможно, кому-нибудь он пригодится. Ведь в такую ситуацию попасть очень не сложно, а детального мануала особо-то и нет.
Alex Oleskevich @mariner
карма
80,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Администрирование

Комментарии (35)

  • +5
    Это все, конечно, хорошо и полезно, но напрашивается очевидный вопрос: какого черта в 3 часа ночи проводить непонятные манипуляции с MBR? Все ж можно делать просто и безопасно соответствующими утилитами. И, кстати, неплохо было бы вначале статьи указать, что именно производилось с MBR…
  • –2
    а загрузиться с диска win7 и из консоли
    bootrec.exe /fixmbr
    не пробовал?
    • +6
      У человека разделы потеряны, зачем ему бут возвращать?
      • 0
        Это решение третьего пункта
        • +3
          Но использованы все утилиты с одного диска и это сработало. К чему ещё эти диджейские манипуляции с болванками?
  • 0
    Дело было вечером, делать было нечего? :-)
  • +17
    Знакомо-знакомо!
    Мысли наивного гика в вакууме: «Ща вот ещё чуть повожусь, всю настрою и пойду спать! %-)»
    Через 15 минут всё падает, нихрена не работает и гик эти сутки уже не спит.
  • 0
    Немного оффтоп, но все же:
    А есть ли в Parted magic утилита аналогичная виндовой chkdsk. Или вообще в линукс дистрах аналогичное приложение.

    Не первый раз случается когда под рукой была лишь флешка с записанным livecd линуксом, а проблема упавших окон решается chkdsk (приходилось бегать искать диск м$)
    • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      Винда же сама умеет запускать чекдиск при загрузке… Или тут какой-то экзотический случай?
      • НЛО прилетело и опубликовало эту надпись здесь
      • 0
        Умеет, но далеко не всегда ей это удается.
  • 0
    Как-то винде не понравились разделы. И при изменении размера одного из разделов, она решила, что остальные (линуксовые) не стоят её внимания и… объединила их в один. Данные были важны, очень. gpart не помог, к сожалению. Спасло то, что тома имели метки. Так что dd, hexdump и grep спасли. Определил начала томов, а затем было чисто дело техники и fdisk. Но с тех пор перед серьёзными делами с разделами сохраняю вывод fdisk куда-нибудь на флешку.
    • 0
      Бэкапить, бэкапить и ещё раз бэкапить! (с) Кто-то из умных.
      • 0
        Бэкапить, бэкапить и ещё раз бэкапить! (с) Любой из умных
      • +2
        Люди делятся на 2 типа: тех, кто не бэкапят, и тех, кто уже бэкапят © кто-то
  • 0
    Именно поэтому предпочитаю раздельные физические диски для ОС и своих файлов. На крайний случай внешний клон данных.
  • 0
    На всякий пожарный полезно иметь где-нибудь на флешке файл с бэкапом mbr: всего 512 байт, и проблема бы решилась гораздо быстрее.
    А так да, testdisk в таких вещах незаменим. Помнится, у товарища на 1Тб винчестере по ошибке была снесена таблица разделов (несколько linux-партиций, основная в ext4) и создан и отформатирован в FAT32 один раздел на весь винчестер (тупо на автомате были перепутаны /dev/sdb винчестер и /dev/sdс — флешка, которую и собирались форматировать). И ничего, testdisk нашёл разделы, как они были до этого катаклизма, он же нашёл резервные суперблоки на затёртом FAT-ом ext4-разделе, и fsck.ext4 по адресу одного из суперблоков восстановил все данные на, казалось бы, чистом ext4 разделе — ничего не потерялось.
  • +1
    Для себя правило выработал, никаких операций с системой и железом после 8 вечера.
    По крайнеq мере с воскресенья по четверг.
  • 0
    Господа не подскажите ли аналог утилиты scandisk/chkdisk под Linux для NTFS? А то виндовая виснет на определенном месте и дальше не идет
    • 0
      ntfsfix же из sys-fs/ntfsprogs. Хотя в тяжёлых случаях оно пасует, и предлагает попробовать использовать виндовый chkdisk.
      • 0
        в тяжелых? да почти во всех.
  • +1
    Кстати, если хочется чего-нибудь поломать, могу порекомендовать сделать гибридный MBR. Нужен, например, чтобы установить Windows на GPT-диск в BIOS-системе.
    Несколько часов экстрима обеспечено :).
  • 0
    Пост можно было закончить на пункте 1.1. :)))
    • 0
      главное не иметь инструмент, а уметь им пользоваться ;)
      • 0
        Я неправильно написал. Я не к тому, что все знают что делать дальше, но мне стало уже очень хорошо от такой сборки. :))
        • 0
          да, сборка что надо! прям швейцарский нож ;)
          • 0
            Джентельменский набор просто.

            FFS умеет? Как раз сейчас привезли на восстановление терабайтник.
            • 0
              смотря что есть FFS.
              • 0
                Фря-фря. Восьмая.
                • 0
                  думаю да. софт тот же. тока напильк, скорее всего понадобится.
  • –1
    загрузить винду в рекавери и написать fixmbr вроде проще было бы.
    • 0
      Проще, но бывает так, что диска с Windows 7 нет.
  • 0
    Фигня это всё. Вот если что-то действительно слетит, тогда это не поможет и придётся mbr вручную править.
    А ещё подарком будет то, что gpart и другие утилиты пятилетней давности с удивлением смотрят на ext4 и подобные новшества.
    • 0
      testdisk, например, с умилением и радостью смотрит на ext4 ;)

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.