Что выбрать – GPT или MBR? Объясняем чем отличаются стандарты. GPT или MBR — какая технология лучше подходит для жестких дисков и твердотельных накопителей

Шаг 1. Сохранение MBR

1. В Acronis Disk Director щелкните правой кнопкой мыши диск, MBR-код которого

F2 , чтобы переключиться в режим

Shift , используйте

клавиши со стрелками, чтобы выбрать первые 445 байт сектора. Тем самым будет выбран

MBR-код и подпись диска.
Подсказка . Точное положение курсора отображается в поле Положение в строке состояния

(в правом нижнем углу окна).

4. Выберите пункт Записать в файл в меню Правка .
5. В окне Запись в файл выберите Обзор и укажите путь и имя файла.
6. Нажмите кнопку ОК , чтобы сохранить файл.

Шаг 2. Восстановление MBR

1. Создайте загрузочный носитель на основе WinPE чтобы иметь возможность восстановления

системы в случае ее сбоя. Загрузочный носитель создается с помощью мастера создания

загрузочных носителей Acronis в соответствии с инструкциями в разделе Как создать

загрузочный носитель.

2. Запустите машину с загрузочного носителя и откройте Acronis Disk Director.
3. Правой кнопкой мыши щелкните диск, MBR-код которого необходимо восстановить, и

выберите пункт Правка .

4. В Acronis Disk Editor нажмите клавишу F2 , чтобы переключиться в режим

шестнадцатеричного представления.

5. Установите курсор в самое начало первого байта сектора (абсолютного сектора 0 или 0000 в

шестнадцатеричном представлении) и нажмите Прочитать из файла .

6. В окне Чтение из файла выберите Обзор и укажите файл с MBR-кодом.
7. Нажмите кнопку ОК . Содержимое файла будет вставлено в сектор, начиная с текущего

положения курсора.

8. Нажмите сочетание клавиш Ctrl+S , чтобы сохранить изменения.
9. Перезагрузите машину.

Копирование MBR на другой диск

Данная операция применима к базовым дискам со схемой разделов MBR.

При перемещении системного тома с одного диска на другой необходимо скопировать

MBR-код диска на целевой диск, если он не содержит MBR или содержит другое

приложение-загрузчик.

Как скопировать MBR на другой диск

1. в Acronis Disk Director щелкните правой кнопкой мыши исходный диск, MBR-код которого

необходимо скопировать, и выберите Правка .

2. В Acronis Disk Editor нажмите клавишу F2 , чтобы переключиться в режим

шестнадцатеричного представления.

3. Установите курсор в самое начало первого байта сектора (абсолютного сектора 0 или 0000 в

шестнадцатеричном представлении). Затем, удерживая клавишу Shift , используйте

Copyright © Acronis International GmbH, 2002-2014

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

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

  • Перевод

Вы когда-нибудь задумывались о том, как загружается компьютер? Независимо от аппаратуры и операционной системы, все компьютеры при загрузке используют или традиционный метод BIOS-MBR, или более современный UEFI-GPT, реализованный в последних версиях ОС.

В этой статье мы сравним структуры разделов GPT и MBR; GPT означает GUID Partition Table, а MBR - Master Boot Record. Начнём с того, что разберём сам процесс загрузки.

В следующих главах выделяются различия между стилями разделов GPT и MBR, в том числе приводятся инструкции, как осуществить преобразование между двумя стилями, и советы, какой из них выбрать.

Понимание процесса загрузки

Когда вы нажимаете кнопку питания на своём ПК, стартует процесс, который в итоге приведёт к загрузке операционной системы в память. Первая команда зависит от того, какова структура разделов на вашем жёстком диске.

Если два вида структур разделов: MBR и GPT. Структура разделов на диске определяет три вещи:

  1. Структура данных на диске.
  2. Код, который используется при загрузке, если раздел загрузочный.
  3. Где начинается и заканчивается раздел.

Процесс загрузки MBR

Вернёмся к процессу загрузки. Если в вашей системе используется структура разделов MBR, то первый процесс выполнения загрузит BIOS. Базовая структура ввода-вывода (Basic Input/Output System) включает в себя микропрограмму загрузчика. Микропрограмма загрузчика содержит низкоуровневые функции, такие как ввод с клавиатуры, доступ к видеодисплею, осуществление дисковых операций ввода-вывода и код для загрузки начальной стадии загрузчика. До того как BIOS может определить загрузочное устройство, он выполняет последовательность функций системной конфигурации, начиная со следующих:
  • Самотестирование при включении питания.
  • Обнаружение и инициализация видеокарты.
  • Отображение стартового экрана BIOS.
  • Осуществление быстрой проверки памяти (RAM).
  • Конфигурация устройств plug and play.
  • Определение загрузочного устройства.
Как только BIOS определил загрузочное устройство, он считывает первый дисковый сектор этого устройства в память. Первый сектор диска - это главная загрузочная запись (MBR) размером 512 байт. В этот размер поместились три объекта:
  • Первая стадия загрузчика (446 байт).
  • Таблица разделов диска (16 байт на раздел × 4 раздела) - MBR поддерживает только четыре раздела, подробнее об этом ниже.
  • Подпись (2 байта).
На этом этапе MBR сканирует таблицу разделов и загружает в оперативную память загрузочный сектор - Volume Boot Record (VBR).

VBR обычно содержит начальный загрузчик программ - Initial Program Loader (IPL), этот код инициирует процесс загрузки. Начальный загрузчик программ включает в себя вторую стадию загрузчика, который затем загружает операционную систему. На системах семейства Windows NT, таких как Windows XP, начальный загрузчик программ сначала загружает другую программу под названием NT Loader (аббревиатура NTLDR), которая затем загружает операционную систему.

Для операционных систем на ядре Linux используется загрузчик GRUB (Grand Unified Bootloader). Процесс загрузки похож на описанный выше, единственная разница в наименовании загрузчиков на первой и второй стадии.

В GRUB первая стадия загрузчика называется GRUB Stage 1. Она загружает вторую стадию, известную как GRUB Stage 2. Вторая стадия загружает получает список операционных систем на жёстких дисках и предоставляет пользователю список для выбора ОС для загрузки.

Процесс загрузки GPT

На том же этапе загрузки в структуре разделов GPT происходит следующее. GPT использует UEFI , в котором нет такой как у MBR процедуры хранения в загрузочном секторе первой стадии загрузчика с последующим вызовом второй стадии загрузчика. UEFI - унифицированный расширяемый интерфейс прошивки (Unified Extensible Firmware Interface) - является более продвинутым интерфейсом, чем BIOS. Он может анализировать файловую систему и даже сам загружать файлы.

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

Затем UEFI считывает GPT - таблицу разделов GUID. GUID расшифровывается как «глобальный уникальный идентификатор» (Globally Unique Identifier). GPT располагается в первых секторах диска, сразу после сектора 0, где по-прежнему хранится главная загрузочная запись для Legacy BIOS.

GPT определяет таблицу разделов на диске, на которой загрузчик EFI распознает системный раздел EFI. Системный раздел содержит загрузчики для всех операционных систем, установленных на других разделах жёсткого диска. Загрузчик инициализирует менеджер загрузки Windows, который затем загружает операционную систему.

Для операционных систем на ядре Linux существует версия GRUB с поддержкой EFI, которая загружает файл, такой как grub.efi, или загрузчик EFI, который загружает свой файл, такой как elilo.efi.

Вы можете заметить, что и UEFI-GPT , и BIOS-MBR передают управление загрузчику, но сами напрямую не грузят операционную систему. Однако в UEFI не требуется проходиить через несколько стадий загрузчика, как в BIOS. Процесс загрузки происходит на самой ранней стадии, в зависимости от вашей аппаратной конфигурации.

Различия между структурами разделов GPT и MBR

Если вы когда-нибудь пытались установить Windows 8 или 10 на новый компьютер, то скорее всего видели вопрос: какую структуру разделов использовать, MBR или GPT.

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

GPT - более новая и продвинутая структура разделов, и у неё много преимуществ, которые я перечислю ниже. MBR используется давно, она стабильная и обладает максимальной совместимостью. Хотя GPT со временем может вытеснить MBR, поскольку предлагает более продвинутые функции, но в некоторых случаях можно использовать только MBR.

Главная загрузочная запись

MBR - традиционная структура для управления разделами диска. Поскольку она совместима с большинством систем, то по-прежнему широко используется. Главная загрузочная запись расположена в первом секторе жёсткого диска или, проще говоря, в самом его начале. Она содержит таблицу разделов - информацию об организации логических разделов на жёстком диске.

MBR также содержит исполняемый код, который сканирует разделы на предмет активной ОС и инициализирует процедуру загрузки ОС.

Диск MBR допускает только четыре основных раздела. Если вам нужно больше, то можно назначить один из разделов расширенным разделом, и на нём можно создавать больше подразделов или логических дисков.

MBR использует 32 бита для записи длины раздела, выраженной в секторах, так что каждый раздел ограничен максимальным размером 2 ТБ.

Преимущества

  • Совместима с большинством систем.
Недостатки
  • Допускает только четыре раздела, с возможностью создания дополнительных подразделов на одном из основных разделов.
  • Ограничивает размер раздела двумя терабайтами.
  • Информация о разделе хранится только в одном месте - в главной загрузочной записи. Если она повреждена, то весь диск становится нечитаемым.

Таблица разделов GUID (GPT)

GPT - более новый стандарт для определения структуры разделов на диске. Для определения структуры используются глобальные уникальные идентификаторы (GUID).

Это часть стандарта UEFI, то есть систему на основе UEFI можно установить только на диск, использующий GPT, например, таково требование функции Windows 8 Secure Boot.

GPT допускает создание неограниченного количества разделов, хотя некоторые операционные системы могут ограничивать их число 128 разделами. Также в GPT практически нет ограничения на размер раздела.

Преимущества

  • Допускает неограниченное количество разделов. Лимит устанавливает операционная система, например, Windows допускает не более 128 разделов.
  • Не ограничивает размер раздела. Он зависит от операционной системы. Ограничение на максимальный размер раздела больше, чем объём любых существующих сегодня дисков. Для дисков с секторами по 512 байт поддерживается максимальный размер 9,4 ЗБ (один зеттабайт равен 1 073 741 824 терабайт)
  • GPT хранит копию раздела и загрузочных данных и может восстановить данные в случае повреждения основного заголовка GPT.
  • GPT хранит значения контрольной суммы по алгоритму циклического избыточного кода (CRC) для проверки целостности своих данных (используется для проверки целостности данных заголовка GPT). В случае повреждения GPT может заметить проблему и попытаться восстановить повреждённые данные из другого места на диске.
Недостатки
  • Может быть несовместима со старыми системами.

GPT против MBR

  • GPT допускает неограниченное количество основных разделов, в то время как MBR допускает только четыре основных, а остальные - дополнительные.
  • GPT позволяет создавать разделы любого размера, в то время как MBR имеет ограничение в 2 ТБ.
  • GPT хранит копию данных раздела, позволяя восстановить их в случае повреждения основного заголовка GPT; MBR хранит только одну копию данных раздела в первом секторе жёсткого диска, что может привести к потере всей информации в случае повреждении информации о разделах.
  • GPT хранит значения контрольной суммы для проверки, что данные не повреждены, и может выполнить необходимое восстановление из других областей диска в случае повреждения; MBR не имеет способа узнать о повреждении данных, вы можете узнать об этом только если компьютер откажется загружаться или исчезнет раздел.

Совместимость с операционными системами

Первый сектор (сектор 0) на диске GPT содержит защитную запись MBR, в которой записано, что на диске один раздел, который распространяется на весь носитель. В случае использования старых инструментов, которые читают только диски MBR, вы увидите один большой раздел размером с весь диск. Защитная запись сделана для того, чтобы старый инструмент ошибочно не воспринял диск как пустой и не перезаписал данные GPT новой главной загрузочной записью.

MBR защищает данные GPT от перезаписи.

Apple MacBook"и используют GPT по умолчанию, так что невозможно установить Mac OS X на систему MBR. Даже хотя Mac OS X может работать на диске MBR, но установка на него невозможна. Я пыталась сделать это, но безуспешно.

Большинство операционных систем на ядре Linux совместимы с GPT. При установке ОС Linux на диск в качестве загрузчика будет установлен GRUB 2.

Для операционных систем Windows загрузка из GPT возможна только на компьютерах с UEFI, работающих под 64-битными версиями Windows Vista, 7, 8, 10 и соответствующими серверными версиями. Если вы купили ноутбук с 64-битной версией Windows 8, то с большой вероятностью там GPT.

Windows 7 и более ранние системы обычно устанавливают на диски с MBR, но вы всё равно можете преобразовать разделы в GPT, как будет рассказано ниже.

Все версии Windows Vista, 7, 8, 10 могут считывать и использовать данные из разделов GPT - но они не могут загружаться с таких дисков без UEFI.

Так GPT или MBR?

Вы можете комфортно себя чувствовать и с MBR, и c GPT. Но учитывая преимущества GPT, упомянутые ранее, и факт постепенного перехода современных компьютеров на эту технологию, вы можете предпочесть GPT. Если цель заключается в поддержке старого оборудования или нужно использовать традиционный BIOS, то вы застряли на MBR.

Проверьте тип раздела жёсткого диска

На каждом жёстком диске под Windows можно проверить тип разделов с помощью «Управления дисками» (Disk Management). Для запуска «Управления дисками» сделайте следующее:

Нажмите сочетание «горячих клавиш» Windows+R, откроется окно для запуска программ.

Наберите diskmgmt.msc и нажмите клавишу Enter.

Windows просканирует жёсткие диски и вскоре покажет их. Для проверки типа разделов любого жёсткого диска нажмите правой кнопкой мыши на плашку диска в нижней части интерфейса. Нужно нажимать на «Диск 0», «Диск 1» и так далее, а не на разделы.

В появившемся контекстном меню выберите «Свойства». Откроется окно со свойствами выбранного диска.

Перейдите на вкладку «Тома» и посмотрите на значение «Стиль раздела».

Если вы предпочитаете командную строку, то можете выбрать другой вариант. Его преимущества в том, что он чуть быстрее, поскольку сразу выводит на экран диски и стили разделов.

  1. Нажмите клавишу Windows, наберите cmd.exe , удерживая Ctrl и Shift, нажмите Enter.
  2. Подтвердите UAC-сообщение о повышении привилегий в системе.
  3. Наберите diskpart и нажмите Enter.
  4. Наберите list disk и снова нажмите Enter.

В списке перечислены все диски. В колонке Gpt указан стиль раздела для каждого диска. Если видите звёздочку в колонке, то это GPT, если её нет - это MBR.

Преобразование между MBR и GPT во время установки Windows

Есть два типичных сообщения об ошибке, которые могут возникнуть при установке Windows на жёсткий диск:
  • Ошибка № 1: «Windows не может быть установлена на этот диск. Выбранный диск не имеет стиль разделов GPT».
  • Ошибка № 2: «Windows не может быть установлена на этот диск. Выбранный диск имеет стиль разделов GPT».
Когда появляется одна из этих двух ошибок, то у вас может не быть возможности выбрать раздел для установки. Но это не значит, что с компьютером что-то не то.

Как вы уже знаете, MBR и GPT - это две абсолютно разные структуры разделов жёсткого диска. MBR - это традиционная структура разделов, а GPT - более новая.

Ошибка № 1 возникает, когда вы пытаетесь установить Windows на компьютер с UEFI, а раздел жёсткого диска не сконфигурирован для режима UEFI или совместимости с Legacy BIOS. Microsoft TechNet предлагает два варианта решения проблемы.

  1. Перезагрузить компьютер в режиме совместимости с Legacy BIOS. Этот вариант позволит сохранить текущий стиль раздела.
  2. Переформатировать диск под UEFI, используя стиль раздела GPT. Этот вариант позволит вам использовать функции прошивки UEFI. Переформатирование можно сделать самостоятельно, следуя инструкциям ниже. Всегда сохраняйте резервную копию данных перед форматированием.
Конечно, есть сторонние утилиты для преобразования дисков в GPT с сохранением данных, но всё равно безопаснее сделать резервную копию на случай, если утилита не сможет завершить преобразование.

Инструкции для преобразования жёсткого диска с MBR на GPT


С помощью Windows Setup

  1. Выберите нераспределённое пространство и нажмите «Далее». Windows определит, что компьютер загружен в режиме UEFI, и автоматически переформатирует диск с применением стиля раздела GPT. Процесс установки начнётся сразу после этого.
Преобразование вручную
  1. Выключите компьютер и вставьте загрузочный накопитель Windows (USB или DVD).
  2. Загрузитесь с него в режиме UEFI.
  3. Очистите диск: clean .
  4. Преобразование в GPT осуществляется командой convert gpt .

Инструкции для преобразования жёсткого диска с GPT на MBR

Иногда бывает необходимо преобразовать диск в структуру разделов MBR. Например, если во время установки Windows возникает такое сообщение об ошибке:

«Windows не может быть установлена на этот диск. Выбранный диск имеет стиль разделов GPT»

Загрузка с GPT поддерживается только в 64-битных версиях Windows Vista, 7, 8, 10 и соответствующих серверных версиях на UEFI-системах. Это сообщение об ошибке означает, что ваш компьютер не поддерживает UEFI, а поэтому вы можете использовать только BIOS, который работает со структурой разделов MBR.

Microsoft TechNet предлагает два варианта решения проблемы.

  1. Перезагрузить компьютер в режиме совместимости с BIOS. Этот вариант позволит сохранить текущий стиль раздела.
  2. Переформатировать диск, используя стиль раздела MBR. Всегда сохраняйте резервную копию данных перед форматированием. Хотя есть сторонние утилиты для преобразования дисков в GPT с сохранением данных, но всё равно безопаснее сделать резервную копию на случай, если утилита не сможет завершить преобразование.
Если вы выбрали второй вариант, то следуйте пошаговой инструкции:

С помощью Windows Setup

  1. Выключите компьютер и вставьте загрузочный накопитель Windows (USB или DVD).
  2. Загрузитесь с него в режиме UEFI.
  3. Выберите «Другое» (Custom) в типе установки.
  4. Появится экран с сообщением «Куда вы хотите установить Windows?» Выберите все разделы на диске и нажмите «Удалить».
  5. После успешного удаления диск будет представлять собой единую область нераспределённого пространства.
  6. Выберите нераспределённое пространство и нажмите «Далее». Windows определит, что компьютер загружен в режиме BIOS, и автоматически переформатирует диск с применением стиля раздела MBR. Процесс установки начнётся сразу после этого.
Преобразование вручную
  1. Выключите компьютер и вставьте загрузочный накопитель Windows (USB или DVD).
  2. Загрузитесь с него в режиме BIOS.
  3. Из установки Windows нажмите Shift+F10, чтобы открыть консоль. После каждой следующей команды нажимайте Enter.
  4. Запустите инструмент diskpart командой diskpart .
  5. Чтобы выбрать диск для преобразования, наберите list disk .
  6. Укажите номер диска для преобразования: select disk # .
  7. Очистите диск: clean .
  8. Преобразование в GPT осуществляется командой convert mbr .
  9. Наберите exit для выхода из diskpart.
  10. Закройте консоль и возвращайтесь к установке Windows.
  11. При выборе типа установки выберите «Другое». Диск будет представлять собой единую область нераспределённого пространства.
  12. Выберите нераспределённое пространство и нажмите «Далее». Windows начнёт установку.

Одним из эффективных шагов по устранению неполадок связанную с загрузкой windows, является восстановление загрузочной записи Master Boot Record или MBR. Одна из распространенных причин, по которым MBR может быть повреждена, связана с заражением вредоносными программами. Неправильное завершение работы также может привести к повреждению загрузочной записи (MBR). Иногда проблемы бывают, когда Linux Grub установлен, и Windows не может его обнаружить. В некоторых случаях вы можете получить ошибку Bootmgr is Missing или BCD при включении компьютера. В таких случаях вы можете запустить восстановление MBR для устранения этих проблем.

Восстановление загрузчика Master Boot Record (MBR) в Windows 10

Нам нужно запустить командную строку (cmd) при загрузке системы windows, когда она не работает и не загружается на рабочий стол. Процесс одинаков для Windows 10/8/7. Прежде всего, нужен установочный DVD-диск или установочная флешка.

Шаг 1 . Нажмите F8 во время загрузки системы, чтобы войти в меню восстановления Windows. В более поздних версиях F8 не работает - можно создать или , чтобы запустить меню дополнительных параметров.

Шаг 2 . Нажмите "Поиск и устранение неисправностей ".

Шаг 3 . Выберите "Дополнительные параметры ".


Шаг 4 . Нажмите на "Командная строка ".


Шаг 5 . Теперь воспользуемся инструментом Bootrec.exe . Введите командную строку следующие команды одну за другой:

bootrec /RebuildBcd

bootrec /fixMbr

В 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»: одна программа - часть механизма, выполняет исключительно свою задачу, и выполняет ее хорошо. В руках человека, который знает свое дело, которому свойственен не стандартный подход к решению задачи, такие маленькие программки помогут быстро и эффективно решать комплексные задачи, которые, на первый взгляд, должны решать крупные специализированные пакеты.