Как прочитать mbr linux

Обновлено: 06.07.2024

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

Существует 2 типа таблиц разметки:

  • Устаревшая MSDOS (MBR) [часто обозначается как BIOS, Legacy BIOS] - главная загрузочная запись - Master Boot Record, редакторы его могут отображать как dos или msdos.
  • И современная UEFI (GPT) - GUID Partition Table.

Диск можно разметить и поделить при установке операционной системы или в случае с многими установочными образами Линукса - операционная система запускается с флешки или с диска и можно в графическом режиме разметить диски. И не только - можно наставить софта, сделать какие-то изменения и все они будут записаны при установке операционной системы (это как вариант). Т.е. под рукой всегда живой образ системы с которого можно загрузиться и что-то сделать..

В графическом режиме доступны утилиты, например Редактор разделов System - PartitionManager , или GParted , кому что больше нравится.. Ниже покажу как это можно сделать из командной строки (консоли Linux).

Смысл делить диск на разделы в Линуксе - чтоб директория /home была в отдельном разделе (папки и настройки пользователей). В случае переустановки операционной системы отформатируем первый (корень) раздел и установим недостающий софт, и вуаля все настройки программ автоматом подцепятся из /home.. Сегодня достаточно 20Гб под корень / и от 10 ГБ под /home. т.е. создаём 2 раздела на диске + EFI раздел если доступен UEFI (GPT)..

Своп (linux-swap - раздел подкачки) я не использую, начиная с Ubuntu 18.04 отказываются от раздела swap, вместо него будет использоваться файл подкачки (swapfile) . Он может понадобиться для режима сна ноутбука или если мало памяти - система менее 1 - 2 Гб памяти использует (в зависимости от сборки).. Для режима сна необходим раздел/файл подкачки = размер памяти + 2 Гб. т.е. просто добавьте запас места в корневом разделе..

Если используете SSD диск - оставляйте 10% (от 10 до 20%) места в конце неразмеченными, это продлит его ресурс, поскольку там будут проходить фоновые операции записи.. (По умолчанию на SSD диске есть скрытая область для этого, эта неразмеченная пойдёт в плюс к ней..) И судя по тестам из интернетов - эта дополнительная область увеличит IOPS - количество операций ввода и вывода, тем самым ускоряя операции с диском.

Просмотр разметки диска и прочей информации в консоли

Вариантов намного больше, но первых 4-х вполне достаточно..

Диск с таблицей разделов MBR

Где-то в 80-х был создан формат для загрузки диска с таблицей разделов MBR, он имеет ограничение поддержки дисков объёмом до 2.2 Тб и ограничения по количеству(4) первичных (главных - primary) разделов, остальные создаются в расширенном разделе.. Необходимо выставлять флаг с какого раздела грузиться для БИОС-а компьютера, его ещё активным разделом называют.. Запись MBR занимает первые 512 байт в первом секторе на диске..

В консоли создать MBR и поделить можно так (пусть диск будет 30 Гб):

Изменяем тип таблиц на Linux (L введите чтоб уточнить, зависит от версий).
Должно по умолчанию назначаться..

Скопировать разметку на диск 2, для MBR это делается так (в случае с RAID - полезно):

Диск с таблицей разделов GPT

Диск с таблицей разделов GPT устроен по иному и имеет ряд преимуществ:

  • Размер диска может быть до 9.4 Зеттабайт, для сравнения:
    MBR=2,2Тб против GPT=10 093 173 145,6 Тб.
    Запас на будущее колоссальный, весь трафик интернета за 2016 примерно 1,1 Зеттабайт.
  • GPT допускает 2 64 = 18 446 744 073 709 552 000 основных разделов, но вот Windows допускает не более 128 разделов, хотя в реальной жизни более 3-х не используется..
  • GPT хранит копию данных раздела в конце диска и значения контрольной суммы для проверки целостности данных, позволяя восстановить их в случае повреждения основного заголовка GPT. (MBR же такого не умеет и помнится у меня были случаи повреждения этой записи под Windows.)
  • Загрузка операционной системы происходит быстрее, с UEFI быстрее инициализируется железо.. (На EFI разделе находятся драйверы аппаратных компонентов, к которым может получать доступ запущенная операционная система и в этом случае загрузка происходит прямо с этого раздела, что быстрее.)
  • Нет необходимости в boot флаге разделу.

В биосе должен быть включён режим UEFI или UEFI + Legacy ищите где-то в Boot Options (загрузка итп..), обычно спаренный режим уже включен на новом железе. Естественно грузимся из под UEFI при установке с флешки (F2, F8, F10, F11, бут меню в БИОС-е или иные)..

Если связь между оборудованием и операционной системой (ОС) осуществляется только через режим UEFI (а не Legacy BIOS), использование GPT для разбивки разделов становится практически обязательным, иначе могут быть проблемы совместимости с MBR. Советую из консоли или при помощи редактора разделов GParted итп. установить тип таблицы gpt, при установке операционной системы, установщик может по умолчанию dos поставить..

UEFI имеет собственный загрузчик операционных систем с интегрированными менеджерами их запуска. Для загрузчика UEFI на диске должен быть создан небольшой загрузочный раздел, который называется EFI System Partition , он же ESP , он же EFISYS и имеет тип EF00 .
При установке Linux будет возможность обозначить тип - системный раздел EFI.
EFI - Extensible Firmware Interface System Partition - системный раздел расширяемого интерфейса прошивки.

На дисках расширенного формата 4K Native (секторы по 4 Кб, по сути это неминуемо в будущем (сейчас 512кб в ходу), с 2010г операционные системы поддерживают новый формат) EFI должен быть не менее 256 Мб в виду ограничений FAT32, посему я делаю его с запасом = 260 Мб (этого хватит на несколько ОС на 1 диске), но можно и 100 Мб.. В интернете встречаются экспериментаторы советующие делать размер не менее 520 Мб (546 Мб), чтоб любой каприз влез, но Линукс занимает около 4 Мб.

На каждом диске может быть не более одного раздела EFI. По стандартам, раздел должен быть отформатирован в файловой системе FAT32 (для USB HDD, USB Flash могут быть поняты при загрузке более старые FAT12, FAT16 (в том числе и EFI)).

Запись GPT занимает первые 2048 секторов (1 Мб) на диске и включает в себя резерв - отступ для MBR 512 байт.

В консоли создать GPT и поделить можно так (пусть диск будет 30 Гб):

Посмотреть разметку диска:

Непосредственно работа с дисками

Тип таблиц на Linux (L введите чтоб уточнить, обозначение зависит от версий)
8200 Linux swap
8300 Linux filesystem

Копирование разметки диска для GPT (в случае с RAID - полезно):

Будьте бдительны, какому гению в голову пришло в обратном порядке выстраивать диски, точнее применять сразу после ключа -R, --replicate=second_device_filename. Поэтому запись в логичном/привычном порядке sgdisk -R /dev/sda /dev/sdb приведёт к затиранию первого диска sda, в этой форме первым пишется диск на который копируется разметка, а вторым с которого копируют.



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

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

  • if: указывает на источник, т.е. на то, откуда копируем. Указывается файл, который может быть как обычным файлом, так и файлом устройства.
  • of: указывает на файл назначения. То же самое, писать можем как в обычный файл, так и напрямую в устройство.
  • bs: количество байт, которые будут записаны за раз. Можно представлять этот аргумент как размер куска данные, которые будут записаны или прочитаны, а количество кусков регулируется уже следующим параметром.
  • count: как раз то число, которое указывает: сколько кусочков будет скопировано.

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

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

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

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

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

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

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

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

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

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

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

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

Операции с MBR

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

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

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

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

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

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

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

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

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

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

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


Поскольку в UNIX многие объекты (жёсткие/гибкие диски, COM/LPT-порты, оперативная память компьютера, память с кодом/данными каждого процесса) представлены в виде специальных файлов, спектр применения утилиты dd гораздо шире, чем кажется на первый взгляд. Регулярно возникает необходимость не просто скопировать файл или несколько файлов (для чего предназначена утилита cp), а скопировать первые n байт файла, пропустить m байт от начала, прочитать файл с дефектного носителя, транслировать содержимое файла в ASCII, «развернуть» порядок байтов в файле (Little-Endian vs. Big-Endian), просто скопировать очень большой файл или все вместе взятое. Для этой цели и служит dd.

Кроме всего прочего, данная утилита позволяет скопировать регионы из файлов «сырых» устройств, например, сделать резервную копию загрузочного сектора жёсткого диска, или прочитать фиксированные блоки данных из специальных файлов, таких, как /dev/zero или /dev/random.

Название утилиты dd иногда в шутку расшифровывают, как «disk destroyer», «data destroyer», «delete data» или «добей диск», так как утилита позволяет производить низкоуровневые операции на жёстких дисках — при малейшей ошибке (такой, как реверс параметров if и of) можно потерять часть данных на диске (или даже все данные). Есть и более «уважительное» прозвище — «disk duplicator», потому что на практике основное её применение — это копии, образы и бэкапы разделов.

Параметры для iflag, oflag:

Для count, seek, skip, bs, cbs, ibs, obs можно использовать слудующую размерность:

Примеры утилиты dd в Unix/Linux

Узнать версию можно вот так:

Замечание: Работат на Linux. На Unix, возможно не будет работать.

-=== ПРИМЕР 1 ===-

Чтобы записать образ на флешку или диск, можно использовать:

-=== ПРИМЕР 2 ===-

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

-=== ПРИМЕР 3 ===-

Так же, иногда полезно сжать данные и записать их куда-то (Проверял только с gzip, bzip2). Например, необходимо сделать бэкап. Используем bzip2 сжатие:

Или, используем gzip:

Не забываем комбинировать опции (можно использовать в этом случае: bs=8m, status=progress, conv=fsync)

PS: для рестора можно заюзать:

Можно удаленно создать бэкап, например:

Как другое решение, можно делать бекап по указанному времени и бэкапить его по сети. Например:

PS: Стоит добавить SSH ключи ssh будет работать такая схема

-=== ПРИМЕР 4 ===-

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

PS: Можно обнулить только определенное количество байт, например:

Проверить можно тем же dd, но преобразовав данные в hex:

Должны быть 0. Или, можно проверить еще другим методом:

Уничтожить суперблок можно:

или еще один солюшен:

Чтобы очистить первые 113 МБ раздела:

-=== ПРИМЕР 5 ===-

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

Чтобы восстановить, используем:

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

Вернуть назад можно так:

Cкопировать MBR на дискету:

Просмотр MBR-а через dd утилиту:

-=== ПРИМЕР 6 ===-

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

Заполнить диск рандомными значениями:

Затереть файл\диск n-раз, можно так (в моем случаее, будет перезапись 20 раз):

-=== ПРИМЕР 7 ===-

Создаем ISO из CD/DVD ROM-а на локальное устройство (файл на вашем диске):

Создать DVD образы раздела (полезно для резервного копирования):

После такого копирования, можно развернуть все назад следующим образом:

Создать ISO из флопика можно вот так:

-=== ПРИМЕР 8 ===-

Преобразовать формат данных файла( пример с EBCDIC в ASCII):

Преобразовать формат данных файла( пример с ASCII в EBCDIC):

-=== ПРИМЕР 9 ===-

Например у вас есть файл с текстом:

Если нужно сконвертировать содержимое файл в верхний регистр:

Если нужно сконвертировать содержимое файла в нижний регистр:

-=== ПРИМЕР 10 ===-

Для просмотра вашей виртуальной памяти служит команда:

-=== ПРИМЕР 11 ===-

Чтобы проверить какие файловые системы установлены, выполните:

-=== ПРИМЕР 12 ===-

Проверить все загруженные модули с помощью dd:

-=== ПРИМЕР 13 ===-

Для посмотра таблицы прерываний, есть команда:

-=== ПРИМЕР 14 ===-

Проверить сколько секунд работала система:

-=== ПРИМЕР 15 ===-

Чтобы проверить разделы и так же, их размеры (в кб), используем:

-=== ПРИМЕР 16 ===-

Вывод статистики памяти:

-=== ПРИМЕР 17 ===-

Хороший способ проверить наличие бэдов на устройстве с командой dd:

-=== ПРИМЕР 17 ===-

Так же, можно с данной утилитой проверить файл на вирусы (но нужен для этого, нужно установить ClamAV):

Ссылка на ClamAV:

-=== ПРИМЕР 18 ===-

Тестируем скорость чтения/записи жестких дисков:

-=== ПРИМЕР 19 ===-

Вывести файл на стандартный вывод можно вот так:

-=== ПРИМЕР 20 ===-

Нашел еще пример, с которым можно выполнить поиск какой-то строки по всему разделу (Даже если наложена секьюрити), то можно использовать LiveCD и загрузиться с ним и выполнить:

-=== ПРИМЕР 21 ===-

Чтобы считать BIOS, выполните:

-=== ПРИМЕР 22 ===-

Нашел забавный пример:

-=== ПРИМЕР 23 ===-

Убрать/проигнорировать первые 111 байтов стандартного ввода:

-=== ПРИМЕР 24 ===-

Делаем быстрое резервное копирование по сети с использованием Netcat:

-=== ПРИМЕР 25 ===-

Создаем временное пространство подкачки:

-=== ПРИМЕР 26 ===-

Определите скорость последовательного ввода-вывода вашего привода. Чтение 1 ГБ файла:

-=== ПРИМЕР 27 ===-

Можно добавить прогресс бар, например:

-=== ПРИМЕР 28 ===-

Генерируем рандомную строку с 32 символами ( задали их):

Добавить комментарий Отменить ответ

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.


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

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

Это поможет вам увидеть, сколько разделов уже было создано на диске.

Кроме того, это позволяет нам проверить, есть ли у нас свободное место или нет.

Обычно жесткие диски можно разделить на один или несколько логических дисков, называемых разделами.

Каждый раздел может использоваться как отдельный диск со своей файловой системой, а информация о разделе хранится в таблице разделов.

Это 64-байтовая структура данных.

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

Информация о разделе сохраняется в 0 секторе диска.

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

Это можно проверить с помощью следующих 12 методов.

Как проверить раздел жесткого диска в Linux с помощью команды fdisk?

fdisk обозначает фиксированный диск или формат диска.

Это утилита cli, которая позволяет пользователям выполнять следующие действия с дисками.

Это позволяет нам просматривать, создавать, изменять размер, удалять, перемещать и копировать разделы.

Как проверить разделы жесткого диска Linux с помощью команды sfdisk?

sfdisk поддерживает метки дисков MBR (DOS), GPT, SUN и SGI, но больше не предоставляет никаких функций для адресации CHS (головка цилиндра)

Как проверить разделы жесткого диска Linux с помощью команды cfdisk?

Он обеспечивает базовую функциональность разделения с удобным интерфейсом.

Как проверить разделы жесткого диска в Linux с помощью команды parted?

Он поддерживает несколько форматов таблиц разделов, включая MS-DOS и GPT.

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

Как проверить разделы жесткого диска в Linux с помощью команды lsblk?

lsblk выводит информацию обо всех доступных или указанных блочных устройствах.

Команда lsblk читает файловую систему sysfs и базу данных udev для сбора информации.

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

В этом случае необходимы права суперпользователя.

По умолчанию команда выводит все блочные устройства (кроме дисков RAM) в древовидном формате.

Как проверить разделы жесткого диска в Linux с помощью команды blkid?

Она использует библиотеку libblkid для получения UUID раздела диска в системе Linux.

Как проверить разделы жесткого диска в Linux с помощью команды hwinfo?

hwinfo расшифровывается как инструмент информации об оборудовании.

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

Как проверить разделы жесткого диска в Linux с помощью команды lshw?

Как проверить разделы жесткого диска в Linux с помощью команды inxi?

Как проверить разделы жесткого диска в Linux с помощью команды lsscsi?

Использует информацию в sysfs (ядро Linux серии 2.6 и новее) для просмотра списка устройств (или хостов) SCSI, которые в данный момент подключены к системе.

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

По умолчанию в этой утилите имена узлов устройства (например, «/dev/sda» или «/dev/root_disk») получаются, отмечая старшие и младшие номера для перечисленного устройства, полученные из sysfs.

Как проверить разделы жесткого диска в Linux с помощью ProcFS?

Иногда ее называют псевдофайловой системой с информацией о процессе.

Она содержит не «реальные» файлы, а системную информацию времени выполнения (например, системную память, подключенные устройства, конфигурацию оборудования и т. д.).

Как проверить разделы жесткого диска в Linux, используя путь /dev/disk?

Этот каталог содержит четыре каталога, это by-id, byuuid, by-path и by-partuuid.

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

Читайте также: