Mbr файл. GPT или MBR — какая технология лучше подходит для жестких дисков и твердотельных накопителей? Инструкции для преобразования жёсткого диска с MBR на GPT

Mbr файл. GPT или MBR — какая технология лучше подходит для жестких дисков и твердотельных накопителей? Инструкции для преобразования жёсткого диска с MBR на GPT

MBR (по-русски – главная загрузочная запись) – определенный набор данных, строчек кода, таблица разделов и сигнатуры. Необходим он для загрузки операционной системы Windows после включение компьютера. Бывают случаи, когда в результате различных аппаратных и системных сбоев, МБР повреждается или стирается, что приводит к невозможности запуска Windows. Подобные проблемы решает восстановление загрузочной записи MBR Windows 7. В данной статье рассмотрено несколько несложных способов, которыми можно восстановить записи.

Немного теории

После включение компьютера BIOS выбирает носитель информации, с которого будет осуществляться загрузка. На этом этапе устройству необходимо знать, какой именно раздел жесткого диска содержит системные файлы Windows. MBR – небольшая программка, которая хранится в первом секторе HDD и указывает компьютеру на правильный раздел для запуска системы.

Если вы некорректно установите вторую операционную систему, таблица разделов может повредиться и старт первой Windows будет невозможен. То же самое иногда происходит при внезапном отключении электроэнергии. Если это произошло – не стоит отчаиваться, поврежденные данные можно полностью восстановить.

Восстановление загрузочной записи

Для того чтобы восстановить MBR, вам понадобится инсталляционный диск, с которого вы устанавливали Windows (либо любой другой). Если же диска нет, можно создать загрузочную флешку с Win7. Алгоритм действия:

Автоматическое восстановление

Для начала стоит предоставить починку MBR стандартным средствам от Microsoft. Выберите пункт «Восстановление запуска». Больше ничего делать не требуется, пройдет некоторое время, и компьютер сообщит о завершении процесса. Попробуйте запустить Windows. Если ничего не получилось – значит, необходимо восстановить МБР вручную.

Командная строка

Этот путь требует ввода нескольких команд в командную строку Windows.

  • В меню восстановления системы выберите пункт «Командная строка».
  • Теперь необходимо ввести «bottrec/fixmbr ». Данная команда служит для записи новой MBR совместимой с Win 7. Команда удалит нестандартные части кода, исправит повреждения, но не будет затрагивать существующую таблицу разделов.
  • Следом введите «bootrec/fixboot ». Эта команда служит для создания нового загрузочного сектора для Windows.
  • Далее «bootrec/nt60 sys ». Эта команда обновит загрузочный код MBR.
  • Закройте консоль, перезагрузите компьютер и попробуйте запустить систему. Если проблема все еще не решена, необходимо ввести еще несколько команд.
  • Снова запустите консоль и введите «bootrec/Scanos » и «bootrec/rebuildbcd ». С помощью этих утилит компьютер просканирует жесткий диск на наличие операционных систем, а затем внесет их в меню загрузки.
  • Следом опять введите «bootrec/nt60 sys » и перезагрузите компьютер.

Утилита TestDisk

Если у вас нет загрузочной флешки или диска, можно восстановить поврежденную запись с помощью сторонней программы. Для этого необходимо запустить другую (рабочую) ОС. Если на вашей машине была всего одна Windows, придется подключить жесткий диск к другому компьютеру. Работа с TestDisk достаточно сложна, поэтому рекомендуется ознакомиться с руководствами, посвященными конкретно этой программе.

1. Загрузить компьютер, с загрузочного DVD диска, загрузочной дискеты или загрузочной флешки, (см. как создать загрузочную флешку / USB flash )

2. Запустить утилиту debug.exe. Debug.exe присутствует в любой DOS , Windows но она чувствительна к версии, т.е. если переписать на загрузочный диск Win98 debug.exe из XP она не запустится. (см. Загрузочная флэшка).

3. Загрузить компьютер запустить debug.exe .

Теперь вводим короткую программу.

A100

int13

jmp100

u100 102

r

Пояснения:

a, u, r - команды утилиты debug

? - выводит полный список команд.
a - позволяет вводить программу с адреса
u - показывает программу
r - показывает регистры процессора
AX,BX,CX,DX,SP,BP,SI,DI это регистры процессора.
DS,ES,SS,CS - сегментные регистры значения в них будут отличаться от тех что на картинке, но они будут одинаковые.

IP(Instruction Pointer) регистр команд, указывает на адрес XXXX:0100 , куда мы ввели команду INT13 .

INT 13 команда процессора, вызывает подпрограмму BIOS для работы с дисками. Параметры передаются через регистры.

Команда JMP100 возвращает указатель команд на адрес 100

Е сли запустить такой код на выполнение командой G компьютер зависнет в бесконечном цикле, но т.к. мы собираемся выполнять нашу программу в пошаговом режиме, команда безусловного перехода избавит нас от необходимости изменять значение в регистре IP после каждого вызова int13

Итак освоим чтение загрузочного сектора. Master Boot Record

Вводим команды

rax
201
rbx
200
rcx
1
rdx
80

r


нетрудно догадаться, что команда r< имя регистра> позволяет менять значение в регистре процессора.

Для вызова int13 смысл этих значений такой:
AX = 02 старший байт код операции 02= чтение (03 =запись)
01

младший байт количество секторов которое надо прочитать

BX =0200 адрес памяти куда считывать сектор
CX =0001 младшие биты задают номер сектора. Сектора нумеруются с 1
DX =00 старший байт номер головки, головки нумеруются с нуля
80 младший байт номер диска 01 для флоповода , 80,81 для жестких дисков и USB flash дисков, которые BIOS видит как жесткий диск.

Теперь вводим

после вызова INT13 важно проконтролировать последние две буквы регистра флагов CY-означает ошибку, при успешном выполнении должно быть NC. (На картинке CY, т.к. из под Windows нельзя прочитать MBR, а из под DOS нельзя создать скриншот)

Итак мы прочитали нулевой сектор в память по адресу 200.


Команда n задает имя файла. Команда w

записывает в файл данные из памяти по адресу. Количество байт задается сразу в двух регистрах BX:CX.

Чтобы загрузить файл в память используем команду L

. В регистре CX ,будет количество прочитанных байт. Чтобы просмотреть память по адресу (в нашем случае, там содержимое нулевого сектора) команда d


Рассмотрим варианты редактирования данных перед записью их обратно на диск.

f200 3bd 00 обнуляет загрузочную программу но оставляет информацию о разделах диска нетронутой.

Команда e

позволяет редактировать память.

Чтобы записать данные из памяти на диск вводим.

rax
301
rbx
200
rcx
1
rdx
80

r

p

Надо перезагрузить

Ситуация следующая. Есть винт на 160Гб. На нем 2 раздела - 40Гб и 120Гб. С целью установки убунты как второй системы была произведена разбивка 120Гб -> 100+10+2+8.
Итоги
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)

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

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

В UNIX системах есть одна очень древняя команда, которая называется dd. Она предназначена для того, чтобы что-то куда-то копировать побайтово. На первый взгляд - ничего выдающегося, но если рассмотреть все возможности этого универсального инструмента, то можно выполнять довольно сложные операции без привлечения дополнительного ПО, например: выполнять резервную копию MBR, создавать дампы данных с различных накопителей, зеркалировать носители информации, восстанавливать из резервной копии данные на носители и многое другое, а, при совмещении возможностей dd и поддержке криптографических алгоритмов ядра Linux, можно даже создавать зашифрованные файлы, содержащие в себе целую файловую систему.
Опять же, в заметке я опишу самые часто используемые примеры использования команды, которые очень облегчают работу в UNIX системах.

Начну с небольшого примера, наглядно иллюстрирующего основные параметры команды:

# dd if=/dev/urandom of=/dev/null bs=100M count=5

Параметры:

  • if: указывает на источник, т.е. на то, откуда копируем. Указывается файл, который может быть как обычным файлом, так и файлом устройства.
  • of: указывает на файл назначения. То же самое, писать можем как в обычный файл, так и напрямую в устройство.
  • bs: количество байт, которые будут записаны за раз. Можно представлять этот аргумент как размер куска данные, которые будут записаны или прочитаны, а количество кусков регулируется уже следующим параметром.
  • count: как раз то число, которое указывает: сколько кусочков будет скопировано.
Таким образом, описанная команда читает 5*100 мегабайт из устройства /dev/urandom в устройство /dev/null. Придавая этой команде смысловую нагрузку получается, что система сгенерирует 500 мегабайт случайных значений и запишет их в null устройство. Конечно, единственное, что сделает эта команда: нагрузит процессор на несколько секунд. Рассмотрим примеры из практики:

Создание образа диска:

# dd if=/dev/cdrom of=image.iso

Команда будет считывать из устройства данные и записывать в файл до тех пор, пока не достигнет окончания устройства. Если диск битый, можно попробовать его прочитать, игнорируя ошибки чтения:

# dd if=/dev/cdrom of=image.iso conv=noerror

Параметр «conv» позволяет подключать несколько фильтров, применимых к потоку данных. Фильтр «noerror» как раз отключает остановку работы программы, когда наткнется на ошибку чтения. Таким образом, некоторые данные с диска все же можно будет прочитать. Точно таким образом я спас данные со своей флешки Corsair, которую погнули: подобрал подходящее положение, когда контакт есть, и сделал дамп файловой системы.
Подключить, кстати, такие образы можно при помощи команды mount с ключем "-o loop":

# mount -o loop image.iso /mnt/image

Если что-то не получается, процесс разбивается на 2 уровня:

# losetup -e /dev/loop0 image.iso

Если и так не работает, значит файловая система образа полетела.

Работа с носителями информации

Очень простое, хоть и не оптимальное решение клонирования жесткого диска:

# dd if=/dev/sda of=/dev/sdb bs=4096

Все то же побайтовой копирование с размером буфера 4 Кб. Минус способа в том, что при любой заполненности разделов копироваться будут все биты, что не выгодно при копировании разделов с маленькой заполненностью. Чтобы уменьшить время копирования при манипуляции с большими объемами данных, можно просто перенести MBR на новый носитель (я ниже опишу как), перечитать таблицу разделов ядра (при помощи того же fdisk), создать файловые системы и просто скопировать файлы (не забыв сохранить права доступа к файлам).

Как вариант, можно даже по расписанию делать бекап раздела по сети. Разрулив ключи ssh будет работать такая схема:

# dd if=/dev/DEVICE | ssh user@host «dd of=/home/user/DEVICE.img».

Когда-то читал исследование, согласно которому очень большая доля жестких дисков на барахолке подвергается восстановлению данных без привлечения чего-то специализированного, и содержит конфиденциальную информацию. Чтобы на носителе ничего нельзя было восстановить - можно забить его нулями:

# dd if=/dev/zero of=/dev/DEVICE

Думаю, понятно на что нужно заменить DEVICE. После проведения лекций по Linux, я очень тщательно стал следить за тем, что пишу.
Проверить можно тем же dd, но преобразовав данные в hex:

# dd if=/dev/sda | hexdump -C

Должны посыпаться нули.

Операции с MBR

MBR расположена в первых 512 байтах жесткого диска, и состоит из таблицы разделов, загрузчика и пары доп. байт. Иногда, ее приходится бекапить, восстанавливать и т.д. Бекап выполняется так:

# dd if=/dev/sda of=mbr.img bs=512 count=1

Восстановить можно проще:

# dd if=mbr.img of=/dev/sda

Причины этих махинаций с MBR могут быть разные, однако хочу рассказать одну особенность, взятую из опыта: после восстановления давней копии MBR, где один из разделов был ext3, а позже стал FAT и использовался Windows, раздел перестал видиться виндой. Причина - ID раздела, который хранится в MBR. Если UNIX монтирует файловые системы согласно суперблоку, то винды ориентируются на ID разделов из MBR. Поэтому всегда нужно проверять ID разделов при помощи fdisk, особенно если на компьютере есть винды.

Генерация файлов

При помощи dd можно генерировать файлы, а затем использовать их как контейнеры других файловых систем даже в зашифрованном виде. Технология следующая:
При помощи dd создается файл, забитый нулями (случайными числами забивать не рационально: долго и бессмысленно):

# dd if=/dev/zero of=image.crypted bs=1M count=1000

Создался файл размером почти в гигабайт. Теперь нужно сделать этот файл блочным устройством и, при этом, пропустить его через механизм шифрования ядра linux. Я выберу алгоритм blowfish. Подгрузка модулей:

# modprobe cryptoloop
# modprobe blowfish

Ассоциация образа с блочным устройством со включенным шифрованием:

# losetup -e blowfish /dev/loop0 image.crypted

Команда запросит ввести пароль, который и будет ключем к образу. Если ключ введен не правильно, система не смонтируется. Можно будет заново создать данные в образе, используя новый ключ, но к старым данным доступа не будет.
Создаем файловую систему и монтируем:

# mkfs.ext2 /dev/loop0
# mount /dev/loop0 /mnt/image

Образ готов к записи данных. После завершения работы с ним, нужно не забыть его отмонтировать и отключить от блочного loop устройства:

# umount /dev/loop0
# losetup -d /dev/loop0

Теперь шифрованный образ готов.

Основные идеи я расписал, однако множество задач, которые можно решить при помощи маленькой программки, имя которой состоит из двух букв, намного шире. Программа «dd» - яркий пример того, что IT"шники называют «UNIX way»: одна программа - часть механизма, выполняет исключительно свою задачу, и выполняет ее хорошо. В руках человека, который знает свое дело, которому свойственен не стандартный подход к решению задачи, такие маленькие программки помогут быстро и эффективно решать комплексные задачи, которые, на первый взгляд, должны решать крупные специализированные пакеты.

Если у вас при включении компьютера не загружается Windows, процесс зависает на черном экране, то может быть повреждена загрузочная запись жесткого диска (MBR).

Внешние проявления

При появлении ошибки на экране сомнения пропадают.

Может выдаваться и иная информация о неисправности загрузчика HDD.

Текстовая информация может быть разная в зависимости от классификации ошибки. Но когда упоминается слово boot, то ясно, что с загрузкой непорядок.

Как восстановить MBR, доведаетесь на этой странице.

Причины

Обратите внимание на распространенные причины неисправностей загрузочного сектора HDD.

Два типа загрузчика

На старых системах до Windows XP использовался загрузчик NT Loader (NTLDR). В Windows 7, Vista и последующих версиях ОС стал применяться UEFI и EFI. Поэтому старые и новые системы на одном ПК, обычно, не ставят. В ином случае NTLDR затирает UEFI.

Сторонний софт

Ошибки в загрузочном секторе HDD могут происходить при использовании даже популярных программ для раздела винчестера. У меня такое случалось с Acronis. Такое бывает потому, что подобный софт заменяет драйвера загрузки дисков своими. Это способно испортить исходную запись MBR. Поэтому лучше пользуйтесь встроенными методами раздела жесткого диска от Windows.

Вирусы

Свои «порядки» в MBR иногда наводят вирусы. Следовательно, после восстановления загрузки HDD проверьте компьютер антивирусными программами.

Если вы уверены, что причина в вирусах, то очистите от них ПК еще до ремонта MBR. Для этого существуют утилиты известных антивирусных компаний, например - Kaspersky Rescue Disk. Их предоставляют бесплатно на официальных сайтах с инструкциями по применению.

Любая из таких программ входит в комплект софта для CD или DVD, который позволяет загружаться с компакт-диска, находить и удалять вирусы на HDD.

Восстановление загрузки Windows 7

Ремонт сектора выполняется с компакт-диска или с USB-флеш-накопителя с установочным пакетом операционной системы.

  1. Сначала вставляете DVD в дисковод или флеш-накопитель в USB-разъем с дистрибутивом Windows.
  2. Затем нужно разрешить запуск с данных устройств. Делается это в настройках BIOS.

Изменение источников загрузки

Технология следующего порядка:


Обязательно при выходе нажимаете F10, иначе изменения не сохранятся!

Работа с компакт-диска или флеш-устройства

Действуете в следующем порядке:

  1. После перезагрузки внизу появится надпись: «Press any key…». Это просят нажать любую клавишу. Нажимаете. Иначе не выйдет. Если надпись уже пропала, повторяете все сначала. Для этого жмете сразу три клавиши: Ctrl+Alt+Del. Это вызовет перезагрузку компьютера.
  2. Когда загрузитесь с DVD или «флешки», появится окно установки Windows. Слева внизу выбираете «Восстановление системы».
  3. Будут предлагать подключить сетевые возможности, выбрать языки или букву диска. Ничего не меняете и доходите до выбора систем.
  4. Выделяете нужную Windows и ставите отметку напротив «Используйте средства восстановления…».
  5. Если требуемой системы нет, то она должна появиться, когда нажмете «Загрузить драйверы».
  6. Продолжаете кнопкой «Далее».
  7. В следующем окне выбираете «Восстановление запуска», и MBR может реанимироваться в автоматическом режиме.
  8. Если сектор не заработал, тогда жмете «Командная строка».
  9. В командной строке вызываете утилиту Bootrec и пишете для нее, чтобы она отремонтировала MBR: bootrec /fixmbr . Каждую команду заканчиваете клавишей Enter.
  10. Затем создаете новый загрузочный сектор: bootrec / fixboot . Для выхода из программы набираете exit и помните, что нужно нажать Enter.

Если исправления не помогли

Имеется еще одна команда реанимации MBR - bootsect /NT60 SYS . После нее пробуйте снова загрузиться.

В случае неудачной попытки пишите в командной строке так: bootsect /rebuildbcd. Произойдет поиск операционных систем, установленных на ПК.

Теперь снова попытайтесь зайти в Windows. Обратите внимание, что в списке систем сейчас будет на одну больше. Пробуйте зайти в каждую из них. Должно получиться!

Нестандартный способ

Если не спасли все варианты восстановления сектора, то рекомендуется переустанавливать Windows. А как ни хочется иногда это делать! Ведь правда?

Я тоже так подумал и решил поставить рядом еще одну маленькую систему. Что означает «маленькую»? Это система-загрузчик. Она пустая: я не ставил на нее драйвера и свои программы, потому что в ней не работаю. Но зато она загружается!

То, что было нужно, я добился: на винчестере появился рабочая загрузочная область. Теперь в прежнюю систему я нормально захожу. Недостаток в том, что потерял около 14 Гб места на диске. Если вам это не страшно, можете взять такой способ на вооружение !

Как исправить сектор в Windows 8-10 и Vista?

Для Vista и более поздних версий Windows подходят те же методы, что и для «семерки», отличается лишь дизайн. Например, в «восьмерке» он такой.

Но пункты остаются те же. Поэтому описывать их не будем. Используйте описанную выше инструкцию для Windows 7.

В Windows XP

В «экспишке» принцип реанимации сектора аналогичный. Но вход немного другой.Сейчас его увидите:

  1. После загрузки с компакт-диска начинается копирование файлов системы на винчестер.
  2. Потом появляется окно выбора действий.


© 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows