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

    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


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

    Подробнее
    Реклама
    Комментарии 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 ;)

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