Подробный гайд: работа с `dd` и ISO-образами в Linux
ВНИМАНИЕ:
dd(Disk Destroyer) работает на уровне байтов. Ошибка в указании устройства приведёт к безвозвратной потере данных. Всегда перепроверяйте путь к/dev/sdX.
1. Подготовка: определяем устройство
Перед любой операцией убедитесь, что правильно идентифицировали целевой диск.
lsblk
# или
sudo fdisk -l
Пример вывода lsblk:
NAME SIZE TYPE MOUNTPOINT
sda 480G disk
├─sda1 512M part /boot/efi
└─sda2 479G part /
sdb 16G disk ← ВАША ФЛЕШКА
└─sdb1 16G part ← РАЗДЕЛ (НЕ ИСПОЛЬЗОВАТЬ для dd)
Правило:
ddпишется на устройство (/dev/sdb), а не на раздел (/dev/sdb1).
Перед записью отмонтируйте все разделы:
sudo umount /dev/sdb*
2. Запись ISO-образа на USB-флешку
Большинство современных дистрибутивов используют гибридные ISO, которые dd записывает напрямую без модификаций.
sudo dd if=~/Downloads/ubuntu-24.04-desktop.iso \
of=/dev/sdb \
bs=4M \
status=progress \
conv=fsync
| Параметр | Назначение |
|---|---|
if= |
входной файл (образ) |
of= |
выходное устройство |
bs=4M |
размер блока (оптимизирует скорость) |
status=progress |
показывает прогресс в реальном времени |
conv=fsync |
гарантирует запись всех данных из кэша на диск |
После завершения выполните:
sync
sudo eject /dev/sdb
3. Создание dd-образа диска или раздела
Полный образ диска (включая MBR/GPT, таблицу разделов, загрузчик)
sudo dd if=/dev/sda of=~/backups/full_sda.img bs=4M status=progress conv=fsync
Образ конкретного раздела
sudo dd if=/dev/sda2 of=~/backups/root_partition.img bs=4M status=progress conv=fsync
Сжатие на лету (экономия места)
sudo dd if=/dev/sda bs=4M status=progress | gzip -c > ~/backups/sda.img.gz
Для восстановления сжатого образа:
gunzip -c ~/backups/sda.img.gz | sudo dd of=/dev/sdb bs=4M status=progress conv=fsync
4. Восстановление из dd-образа
sudo dd if=~/backups/full_sda.img of=/dev/sdb bs=4M status=progress conv=fsync
Важно:
- Целевой диск должен быть не меньше исходного.
ddкопирует байт-в-байт, включая пустое пространство.
После восстановления:
sync
# Проверка файловой системы (если это раздел)
sudo fsck -f /dev/sdb1
5. Проверка целостности и безопасность
Хеш-суммы перед записью
sha256sum ~/Downloads/image.iso
# Сравните с официальным значением на сайте дистрибутива
Побайтовая проверка после записи (опционально)
sudo dd if=/dev/sdb bs=4M count=$((SIZE_IN_MB)) status=progress | sha256sum
# Сравните с sha256sum исходного ISO
(Замените SIZE_IN_MB на размер образа, например 4096 для 4 ГБ)
Когда НЕ стоит использовать dd
| Задача | Лучшая альтернатива |
|---|---|
| Резервное копирование файлов | rsync, borg, restic, timeshift |
| Запись образов новичкам | balenaEtcher, Ventoy, GNOME Disks, Rufus (Windows) |
| Работа с битыми носителями | ddrescue |
| Клонирование с изменением размера разделов | Clonezilla, partclone |
dd идеален для:
- создания загрузочных носителей, побайтовых бэкапов, восстановления загрузчиков, работы с raw-образами.
Частые ошибки и решения
| Ошибка | Причина | Решение |
|---|---|---|
dd: /dev/sdb: Permission denied |
Нет прав | Добавьте sudo или работайте от root |
| Флешка не грузится | Запись на раздел /dev/sdb1 вместо /dev/sdb |
Используйте устройство, а не раздел |
| Данные "потерялись" после записи | Кэш не сброшен | Всегда выполняйте sync или conv=fsync |
| Очень медленная запись | Маленький bs |
Используйте bs=4M или bs=8M |
dd завис |
Носитель отключился/ошибка ФС | Проверьте dmesg | tail, замените кабель/порт |
Краткая шпаргалка
# 1. Найти устройство
lsblk
# 2. Отмонтировать
sudo umount /dev/sdX*
# 3. Записать ISO
sudo dd if=образ.iso of=/dev/sdX bs=4M status=progress conv=fsync
# 4. Создать бэкап
sudo dd if=/dev/sdX of=образ.img bs=4M status=progress conv=fsync
# 5. Восстановить
sudo dd if=образ.img of=/dev/sdX bs=4M status=progress conv=fsync
# 6. Синхронизировать кэш
sync