Создание загрузочной флэшки для установки Windows с использованием программы Rufus. Как записать iso-образ дистрибутива на флешку из терминала в Ununtu и производные Создание образа dd

dd — простая утилита, которая входит в состав большинства Unix-подобных операционных систем — Linux, FreeBSD, Solaris и т.д.
Ее предназначение — чтение данных из одного устройства или файла и запись в другой.

dd можно эффективно использовать для создания образа жесткого диска, при этом обойдясь без коммерческих утилит вроде Acronis True Image или Norton Ghost.

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

  • /dev/sda — диск, образ которого необходимо создать;
  • /dev/sdb — диск на который будет записан образ.

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

Первым делом необходимо загрузиться с любого доступного Live-CD диска, имеющего утилиту dd, и войти в командную строку в качестве суперпользователя. Создаем точку монтирования для проведения резервного копирования.

mkdir /mnt/backup

Монтируем жесткий диск на который необходимо сохранить образ.

Создание образа жесткого диска

dd if=/dev/sda of=/mnt/backup/sda.img bs=8M conv=sync,noerror

  • if=/dev/sda — копируем весь жесткий диск sda;
  • of=/mnt/backup/sda.img — копируем в /mnt/backup/sda.img;
  • bs=8M — задаем размер кэша жесткого диска для ускорения процедуры копирования (иначе данные будут сбрасываться малыми порциями по 512 байт);
  • conv=sync,noerror — указываем dd на необходимость копирования по типу бит-в-бит с игнорированием ошибок чтения.

Для сокращения размера образа жесткого диска его можно сжать любым архиватором.

dd if=/dev/sda bs=8M conv=sync,noerror | gzip -c > /mnt/backup/sda.img

Восстановление образа жесткого диска

Для восстановления образа жесткого диска необходимо проделать процедуру обратную процедуре создания этого образа.

dd if=/mnt/backup/sda.img of=/dev/sda bs=8M conv=sync,noerror

При использовании сжатия параллельно необходимо разархивировать образ.

gunzip -c /mnt/backup/sda.img | dd of=/dev/sda conv=sync,noerror bs=8M

Миграция системы на другой жесткий диск

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

dd if=/dev/sda of=/dev/sdb bs=8M conv=sync,noerror

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

Статистика копирования в dd

Главный минус в dd - это отсутствие наглядного представления статистики выполнения процедуры копирования. Однако этот минус можно легко обойти. Достаточно подключиться к другому терминалу.

Определить номер процесса, под которым запущена dd.

Периодически посылать данному процессу команду kill -USR1 номер_процесса_dd .

watch -n 5 kill -USR1 номер_процесса_dd

  • watch -n 5 — выполнять команду каждые 5 секунд;
  • kill -USR1 номер_процесса_dd — показать статистику копирования.

Минусы использования dd для создания образов диска

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

Таким образом, объем образа диска, созданный с помощью dd будет равен объему самого диска — вне зависимости, сколько на диске данных.

Команда dd выполняет всего одну простую функцию: копирует данные из файла в другой файл. Но поскольку в Linux многие сущности представлены именно как файлы, то и применений у dd становится много. Рассмотрим наиболее полезные из них.

А что значит dd?

dd - это сокращение от data duplicator (копирование данных). Но из-за того, что в неумелых руках команда dd может привести к полной потере всех данных, программу часто в шутку называют disk destroyer (разрушитель диска). Попытаемся разобраться как не только не уничтожить свои данные, но и даже извлечь пользу из применения dd.

Общий случай использования dd

Синтаксис команды следующий:

Dd if=$input_data of=$output_data

Команда скопирует данные из файла $input_data в файл $output_data, учитывая опции option. Казалось бы все просто. А теперь рассмотрим какие возможности открывает это простое копирование.

Примеры использования dd

1. Уничтожение всех данных на диске без возможности восстановления:

Dd if=/dev/urandom of=/dev/sda bs=4k

2. Полное побайтное копирование одного диска на другой (клонирование):

Dd if=/dev/sda of=/dev/sdb bs=4096

3. Копирование одного раздела в другой:

Dd if=/dev/sda3 of=/dev/sdb3 bs=4096 conv=notrunc,noerror

4. Отображение списка доступных файловых систем:

Dd if=/proc/filesystems | hexdump -C | less

5. Копирование данных на устройствах с разным размером блока (1Кб у источника и 2 Кб у приемника):

Dd if=/dev/st0 ibs=1024 obs=2048 of=/dev/st1

6. Создать загрузочную флешку:

Dd if=/home/$user/bootimage.img of=/dev/sdc

7. Проверить диск на сбойные сектора:

Dd if=/dev/sda of=/dev/null bs=1m

8. Создание резервной копии MBR диска и сохранение на дискету

Dd if=/dev/sda of=/dev/fd0 bs=512 count=1

9. Снятие образа ISO с компакт-диска:

Dd if=/dev/sr0 of=/home/$user/mycdimage.iso bs=2048 conv=nosync

10. Проверка файла на вирусы (разумеется, потребуется ClamAV):

Dd if=/home/$user/suspicious.doc | clamscan -

11. Сохранение содержимого ОЗУ в файл:

Dd if=/dev/mem of=/home/$user/mem.bin bs=1024

12. Конвертация образа из формата Nero NRG в стандартный образ ISO:

Dd bs=1k if=imagefile.nrg of=imagefile.iso skip=300k

13. Просмотр содержимого MBR:

Dd if=/dev/sda count=1 | hexdump -C

А где же обещанный миллион применений?

Наблюдательный читатель, вероятно, заметит, что в статье перечислен не миллион полезных применений, а несколько меньше. Но в том и заключается мощь программы dd, что остальные применения пользователь может найти самостоятельно, комбинируя разные файлы в качестве параметров if, of и подбирая нужные опции. Только не забудьте, что работа с dd требует повышенного внимания. Если вы не знаете точно какие действия будут выполнены, то лучше воздержитесь от экспериментов. Старайтесь не давать dd права суперпользователя, когда без этих прав можно обойтись.

В комментариях с радостью принимаются ваши собственные примеры использования этой замечательной программы.

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

В утилите Rufus доступны четыре метода загрузки, один из которых следует выбрать из выпадающего списка. В списке они обозначены как MS-DOS, FreeDOS, ISO-образ, DD-образ. Первые два доступны только для компьютеров и устройств, имеющих BIOS – их нужно выбрать из выпадающего списка в строке «Схема раздела и тип системного интерфейса».

Такой метод загрузки в Rufus создаёт загрузочную флешку с операционной системой MS-DOS. Это дисковая операционная система, которая может потребоваться в следующих случаях:

  • для обновления и перепрошивки BIOS, эту процедуру безопаснее выполнять из-под DOS;
  • для диагностики и тестирования компьютера или ноутбука, поскольку большинство утилит для глубокой диагностики оперативной памяти или жёсткого диска работают только под DOS;
  • если необходимо получить доступ к файлам на жёстком диске при отсутствующей или испорченной операционной системе;
  • при использовании старых консольных программ (например, для программирования периферийных устройств), которые под Windows могут работать некорректно;
  • если нужен доступ к файловой системе жёстких дисков компьютера или ноутбука на более низком уровне.

FreeDOS – операционная система, аналогичная MS-DOS, которая распространяется бесплатно на условиях свободной лицензии и доступна в Rufus. Также позволяет обновить BIOS, починить жёсткий диск при помощи специальных программ, тестировать оперативную память (RAM) и прочее. Действия производятся специальными командами из командной строки.

Метод загрузки ISO-образ следует выбирать для перенесения готового ISO-образа загрузочного диска на USB-накопитель. ISO-образ следует создать предварительно, воспользовавшись предназначенными для этого программами. Этот метод можно использовать в операционных системах Windows, Linux, и других. Полученный загрузочный диск можно затем использовать для аварийного восстановления операционной системы и средств диагностики жёстких дисков.

Метод загрузки DD-образ в Rufus

Используется для создания загрузочных дисков из образов, созданных в операционной системе Linux программой DD. Принципиальное отличие этого метода загрузки в том, что программа DD по сути не создаёт образ, а делает побитовую копию заданной директории.

Программа Rufus не является чем-то уникальным в области создания загрузочных носителей, главным её достоинством является простота пользования.

Команда dd предназначена для задействования одноименной утилиты, предназначенной для низкоуровневого копирования и преобразования данных. Ее название расшифровывается как «data duplicator» или «дупликатор данных». Данная утилита используется главным образом для записи образов установочных дисков дистрибутивов Linux на флеш-накопители и создания образов оптических носителей, тем не менее, круг ее функций не ограничивается перечисленными операциями. Например, dd может использоваться для простого копирования файлов или изменения регистра символов текстовых строк. Вообще, рассматриваемая утилита является в какой-то мере уникальной, ведь она предполагает использование собственного формата передачи параметров.

Стандартный синтаксис команды выглядит следующим образом:

$ dd if=<имя исходного файла> of=<имя целевого файла> [параметры]

Несложно заметить, что для передачи параметров утилите используется формат записи <имя параметра>=<значение параметра> . Утилита может читать исходные данные из стандартного потока ввода и выводить результирующие данные с помощью стандартного потока вывода в случае отказа от использования параметров if и of , но в подавляющем большинстве случаев данные параметры являются необходимыми для указания имен файлов с соответствующими данными. Утилита читает и записиывает данные блоками, причем размер блока может изменяться с помощью параметра bs (по умолчанию используются блоки размером в 512 Кб). Существуют отдельные параметры для задания размеров читаемых и записываемых блоков, а именно, ibs и obs . Количество читаемых блоков может ограничиваться в помощью параметра count . Для пропуска заданного количества блоков исходного файла может использоваться параметр skip , целевого файла - параметр seek . Для указания флагов чтения и записи через запятую может использоваться параметр iflag

  • append - активация режима дописывания данных в целевой файл.
  • direct - режим обработки данных в обход кэша файловых систем (повышает скорость).
  • dsync - режим записи данных с синхронизацией (повышает надежность).
  • sync - режим записи данных и метаданных с синхронизацией (повышает надежность).
  • fullblock - чтение лишь полных блоков.
  • nonblock - активация режима неблокируемого ввода/вывода (повышает скорость).
  • noatime - отключение механизма обновления меток времени элементов файловой системы (повышает скорость).
  • nofollow - отказ от перехода по символьным ссылкам.

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

  • lcase - перевод символов строки в кодировке ASCII в нижний регистр.
  • ucase - перевод символов строки в кодировке ASCII в верхний регистр.
  • nocreat - вывод сообщения об ошибке в случае отсутствия целевого файла.
  • excl - вывод сообщения об ошибке в случае существования целевого файла.
  • notrunc - отказ от урезания целевого файла.
  • swab - смена мест каждых двух байтов из исходного файла.
  • noerror - продолжение работы даже в случае возникновения ошибок.
  • fdatasync - активация режима записи данных в целевой файл перед завершением работы утилиты.
  • fsync - активация режима записи данных и метаданных в целевой файл перед завершением работы утилиты.

Примеры использования

Создание резервной копии данных дискового накопителя

Предположим, мы используем жесткий диск, представленный файлом устройства /dev/sda , и нам нужно создать посекторную резервную копию всех размещенных на нем данных, сохранив ее в файле в разделе съемного диска с интерфейсом USB, представленном файлом устройства /dev/sdb1 и смонтированным в директорию /mnt/sdb1 . Обычно такие файлы резервных копий называются дампами или образами дисков. Наш файл образа диска будет носить имя backup.img . Это команда, с помощью которой его можно создать:

# dd if=/dev/sda of=/mnt/sdb1/backup.img

В данной команде с помощью параметра if задается путь к исходному файлу, а с помощью параметра of - к целевому.

Восстановление данных из резервной копии

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

# dd if=/mnt/sdb1/backup1.img of=/dev/sda

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

Клонирование жесткого диска

Перед клонированием жесткого диска вы должны убедиться в том, что у вас имеется жесткий диск того же объема, что и исходный. Эта же операция может выполняться и в случае флеш-накопителей с интерфейсом USB аналогичных объемов. Предположим, что исходный флеш-накопитель представлен файлом устройства /dev/sdb , а целевой - файлом устройства /dev/sdc . В этом случае вы можете клонировать исходный накопитель с помощью следующей команды:

# dd if=/dev/sdb of=/dev/sdc

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

Передача файла образа диска на другой компьютер

Для передачи файла образа диска по сети на другой компьютер с именем target может использоваться следующая команда:

# dd if=/dev/sdb | ssh root@target "(cat >backup.img)"

Сжатие файла образа диска

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

# dd if=/dev/sdb | bzip2 backup.img.bz2

Создание образа оптического диска формата ISO

Для создания образа оптического диска CD, DVD или BD достаточно поблочно прочитать его содержимое и сохранить это содержимое в файле:

# dd if=/dev/sr0 of=image.iso bs=2048

Сохранение файла с поврежденного носителя или создание образа такого носителя

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

# dd if=movie.avi of=/home/alex/movie.avi conv=noerror,sync

Вы также можете создать файл образа поврежденного носителя и попытаться извлечь файлы из него:

# dd if=/dev/sdb of=/home/alex/movie.iso bs=2048 conv=noerror,sync

Запись образа установочного диска на флеш-накопитель с интерфейсом USB

Для установки дистрибутива Linux с флеш-накопителя с интерфейсом USB необходимо записать на этот флеш-накопитель образ установочного диска формата ISO. Для этой цели может использоваться аналогичная команда:

# dd if=/home/alex/Fedora-Workstation-Live-x86_64-26_Alpha-1.7.iso of=/dev/sdc

Важно помнить, что даже в случае наличия на флеш-накопителе разделов следует указывать не путь к файлу устройства одного из разделов, а путь к файлу устройства самого накопителя, в нашем случае это /dev/sdc .

Анализ содержимого жесткого диска

Утилита dd является отличным инструментом для исследования файловых систем. Для анализа содержимого жесткого диска с выводом данных из отдельных блоков, в нашем случае, блока 1001 на разделе, представленном файлом устройства /dev/sdc1 , достаточно использовать следующую команду:

# dd if=/dev/sdc1 count=1 skip=1000

Для того, чтобы увидеть первые 40 байт вашего жесткого диска в шестнадцатеричном представлении следует использовать команду:

# dd if=/dev/sda bs=1 count=40 | hexdump -C

В данном случае с помощью параметра bs задается размер блока диска.

Тестирование производительности дисковых накопителей

Для тестирования производительности дискового накопителя, представленного, к примеру, файлом устройства /dev/sda в условиях чтения блоков различных размеров может использоваться аналогичная команда:


1000000+0 records in
1000000+0 records out

# dd if=/dev/sda of=/dev/null bs=4096 count=1000000
1000000+0 records in
1000000+0 records out
4096000000 bytes (4.1 GB) copied, 29.8747 s, 137 MB/s

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

# dd if=/dev/sda of=/dev/null bs=512 count=1000000
1000000+0 records in
1000000+0 records out
512000000 bytes (512 MB) copied, 4.25186 s, 120 MB/s

# dd if=/dev/sda of=/dev/null bs=512 count=1000000
1000000+0 records in
1000000+0 records out
512000000 bytes (512 MB) copied, 0.417317 s, 1.2 GB/s

Для получения корректных результатов тестов рекомендуется вообще обходить механизм кэширования файловых систем, задействуя режим ввода/вывода без кэширования:

# dd if=/dev/sda of=/dev/null bs=512 count=100000 iflag=direct
100000+0 records in
100000+0 records out
51200000 bytes (51 MB) copied, 5.01053 s, 10.2 MB/s

Копирование файлов

Да, утилита dd может использоваться даже для обычного копирования файлов. Конечно же, для этой цели лучше использовать специально предназначенную для этого утилиту, а именно, cp . В любом случае, вы можете скопировать файл с помощью аналогичной команды:

$ dd if=/home/alex/test.txt /home/alex/test_copy.txt

Создадим с помощью утилиты dd образ флешки с архивацией свободного места. Резервный образ пригодится, если вдруг внезапно перестанет работать оригинал с важной информацией. Например, флешка с закрытыми ключами электронных подписей руководства организации. Итак, у нас есть флешка /dev/sdd объемом 4ГБ, информация на которой занимает около 90МБ.
du - sh / run / media / aleksey / Transcend

89M /run/media/aleksey/Transcend

Все команды выполняются от имени пользователя root . Или в соответствующих дистрибутивах перед командами добавляйте sudo .
fdisk - l / dev / sdd

Disk /dev/sdd: 3.7 GiB, 3904897024 bytes, 7626752 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xc653eaa4 Device Boot Start End Sectors Size Id Type /dev/sdd1 2048 7628543 7626496 3.7G b W95 FAT32

Disk /dev/sdd: 3.7 GiB, 3904897024 bytes, 7626752 sectors

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disklabel type: dos

Disk identifier: 0xc653eaa4

Device Boot Start End Sectors Size Id Type

/dev/sdd1 2048 7628543 7626496 3.7G b W95 FAT32

Создав простой образ командой
dd if = / dev / sdd of = sdd . iso bs = 4M conv = noerror ,
мы обрекаем себя на хранение файла 4ГБ. А если бы флешка была емкостью 64ГБ? И не одна? Эту проблему нам поможет решить обычный архиватор, возьмем стандартный gzip .
dd if = / dev / sdd bs = 4M conv = noerror | gzip - c > sdd . iso . zip
где ключ -c позволяет работать со стандартным выводом.
После завершения работы посмотрим на получившийся файл. ls - al sdd*

Получился файл размером примерно 25МБ. Реальная экономия места на диске даже по сравнению с 4ГБ файлом!
Для восстановления флешки из образа используем обратный порядок команд.
gunzip - c sdd . iso . zip | dd of = / dev / sdd conv = noerror bs = 4M

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

Кстати! Для наглядности процесса из-за отсутствия у dd своего прогресс-бара предлагаю использовать небольшую утилитку progress — Coreutils Progress Viewer. Установить её в Fedora не составит труда.
dnf install progress
Для других дистрибутивов нужный репозиторий можно найти по ссылке https://pkgs.org/download/progress .
Установив и запустив утилиту командой watch progress во втором терминале (в первом у нас работает архиватор и dd) от имени того же пользователя, увидим примерно такую картину.

man progress покажет Вам различные полезные ключи этой утилиты.