Как скопировать ISO-образ на USB с помощью dd

Вопрос или проблема

Последний абзац Заметок о выпуске SliTaz 3.0 говорит следующее о liveCD:

ISO-образ теперь использует «гибридную» систему: его можно также скопировать на USB-накопитель без его форматирования (с помощью dd).

Кто-нибудь знает, как это сделать?

Попробуйте это (обновлено согласно предложению @Kimvais и @Kelly Bang):

dd if=/path/to/your/isofile of=/your/usb/disk bs=8M status=progress

Если вы хотите видеть прогресс или получить приблизительное время завершения, вы можете использовать Pipe View (pv), например:

dd if=<путь к входному файлу> | pv -s <размер, например 1377M> | dd of=<путь к целевому устройству>

Это даст вывод типа:

850MiB 0:05:18 [6.44MiB/s] [===================> ] 61%
ETA 0:03:16

Примечание: Это универсальный подход, который должен работать почти на любой системе *nix. Если у вас возникли проблемы с другими рекомендациями, попробуйте этот способ.
Если вы хотите запустить dd (уничтожитель диска), сначала появление вашего устройства блока, затем cat /proc/partitions, затем снова подключите устройство и снова cat /proc/partitions. Разница покажет ваше целевое устройство. Если различий нет, значит, у вас нет нужного драйвера для его распознавания или возникли аппаратные проблемы.

Вот как это выглядит на моем ноутбуке, до и после, соответственно:

jcholsap@T430s:~$ cat /proc/partitions 

major minor  #blocks  name
8        0  117220824 sda
8        1  117219328 sda1
11       0    1048575 sr0
253      0  109109248 dm-0
253      1    8077312 dm-1

jcholsap@T430s:~$ cat /proc/partitions 

major minor  #blocks  name
8        0  117220824 sda
8        1  117219328 sda1
11       0    1048575 sr0
253      0  109109248 dm-0
253      1    8077312 dm-1
8       16   30670848 sdb

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

jcholsap@T430s:~$ dmesg | tail -30
[   10.197383] thinkpad_acpi: EC reports that Thermal Table has changed
[   34.599234] random: crng init done
[   35.133277] rfkill: input handler disabled
[ 9737.190954] usb 4-2: new SuperSpeed USB device number 2 using xhci_hcd
[ 9737.211756] usb 4-2: New USB device found, idVendor=0781, idProduct=5580
[ 9737.211762] usb 4-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 9737.211765] usb 4-2: Product: Extreme
[ 9737.211768] usb 4-2: Manufacturer: SanDisk
[ 9737.211770] usb 4-2: SerialNumber: AA010507161254310422
[ 9737.244492] usb-storage 4-2:1.0: USB Mass Storage device detected
[ 9737.245540] scsi host6: usb-storage 4-2:1.0
[ 9737.245746] usbcore: registered new interface driver usb-storage
[ 9737.247465] usbcore: registered new interface driver uas
[ 9738.259485] scsi 6:0:0:0: Direct-Access     SanDisk  Extreme          0001 PQ: 0 ANSI: 6
[ 9738.260340] sd 6:0:0:0: Attached scsi generic sg2 type 0
[ 9738.260698] sd 6:0:0:0: [sdb] 61341696 512-byte logical blocks: (31.4 GB/29.3 GiB)
[ 9738.260919] sd 6:0:0:0: [sdb] Write Protect is off
[ 9738.260925] sd 6:0:0:0: [sdb] Mode Sense: 53 00 00 08
[ 9738.261142] sd 6:0:0:0: [sdb] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[ 9738.267727] sd 6:0:0:0: [sdb] Attached SCSI removable disk
[ 9738.496445] UDF-fs: warning (device sdb): udf_load_vrs: No anchor found
[ 9738.496450] UDF-fs: Scanning with blocksize 512 failed
[ 9738.505586] UDF-fs: warning (device sdb): udf_load_vrs: No anchor found
[ 9738.505589] UDF-fs: Scanning with blocksize 1024 failed
[ 9738.519311] UDF-fs: warning (device sdb): udf_load_vrs: No anchor found
[ 9738.519324] UDF-fs: Scanning with blocksize 512 failed
[ 9738.528153] UDF-fs: warning (device sdb): udf_load_vrs: No anchor found
[ 9738.528157] UDF-fs: Scanning with blocksize 1024 failed
[ 9738.533493] UDF-fs: INFO Mounting volume 'UDF Volume', timestamp 2011/04/12 09:38 (1000)
[10100.854101] perf: interrupt took too long (2519 > 2500), lowering kernel.perf_event_max_sample_rate to 79250

Вот все детали моего флеш-накопителя. А, теперь я убежден, что у меня правильное устройство!

Но мое подключенное устройство могло автоматически монтироваться. Для dd это проблема. Чтобы быть уверенным, давайте размонтируем его с помощью umount (обратите внимание на разницу в написании). Я выполню команду дважды, потому что сообщение об ошибке указывает, что оно выполнено успешно:

jcholsap@T430s:~$ sudo umount /dev/sdb
jcholsap@T430s:~$
jcholsap@T430s:~$ sudo umount /dev/sdb
umount: /dev/sdb: не смонтировано.

Теперь, поскольку в Linux все считается файлом, dd называет целевое устройство блока, в моем случае /dev/sdb, выходным файлом. Итак, чтобы использовать dd с этим устройством, вы хотите использовать of=/dev/sdb. Вам нужно сделать это правильно, иначе dd может стать для вас уничтожителем диска. Вот как это выглядит на моем ноутбуке:

jcholsap@T430s:~$ sudo dd of=/dev/sdb if=/home/jcholsap/centos7.iso bs=4M

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

СМОТРИТЕ ТАКЖЕ
Полная документация доступна по адресу: http://www.gnu.org/software/coreutils/dd
или доступна локально через: info ‘(coreutils) dd invocation’

Привет, это помогло!

  1. Размонтировать
  2. Просто это!

Выполните одну из следующих команд, заменив /dev/disk/by-id/usb-My_flash_drive на ваше устройство, например, /dev/disk/by-id/usb-Kingston_DataTraveler_2.0_408D5C1654FDB471E98BED5C-0:0

НЕТ! НЕТ! НЕТ! это – /dev/sdb т.е. используйте более простое /dev/sd<letter>

https://wiki.archlinux.org/title/USB_flash_installation_medium

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

Этот метод рекомендуется из-за его простоты и универсальной доступности, поскольку эти инструменты являются частью coreutils (входят в базовый мета-пакет).

Узнайте имя вашего USB-накопителя с помощью ls -l /dev/disk/by-id/usb-* и проверьте с помощью lsblk, чтобы убедиться, что он не смонтирован.

Выполните одну из следующих команд, заменив /dev/disk/by-id/usb-My_flash_drive на ваше устройство, например, /dev/disk/by-id/usb-Kingston_DataTraveler_2.0_408D5C1654FDB471E98BED5C-0:0. (Не добавляйте номер раздела, не используйте что-то вроде /dev/disk/by-id/usb-Kingston_DataTraveler_2.0_408D5C1654FDB471E98BED5C-0:0-part1 или /dev/sdb1)

  • используя cat(1):

    # cat path/to/archlinux-version-x86_64.iso \
             > /dev/disk/by-id/usb-My_flash_drive
    
  • используя cp(1):

    cp path/to/archlinux-version-x86_64.iso \
       /dev/disk/by-id/usb-My_flash_drive
    
  • используя dd:

    dd bs=4M if=path/to/archlinux-version-x86_64.iso \
             of=/dev/disk/by-id/usb-My_flash_drive conv=fsync \
             oflag=direct status=progress
    
  • используя tee:

    tee < path/to/archlinux-version-x86_64.iso \
             > /dev/disk/by-id/usb-My_flash_drive
    
  • используя pv:

    pv path/to/archlinux-version-x86_64.iso \
             > /dev/disk/by-id/usb-My_flash_drive
    

Ответ или решение

Копирование образа ISO на USB-накопитель с помощью dd — это надежный метод, особенно когда требуется создание загрузочного USB-накопителя. Этот процесс может показаться сложным для новичков, но он довольно прямолинеен и универсален для любых систем на базе Linux или Unix. Рассмотрим детально, как это осуществить, следуя методу TEA (Теория, Пример, Применение).

Теория

Образы ISO — это компактный способ хранения структуры данных CD или DVD-дисков в виде файла. Очень часто ISO используется для распространения операционных систем или других больших программных пакетов. Гибридные ISO позволяют использовать записи с USB-накопителями, что упрощает создание загрузочных носителей.

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

  • if — input file, или входной файл. Здесь указывается путь к ISO-образу.
  • of — output file, или выходной файл. Это цель, куда записывается образ, в данном случае — USB-накопитель.
  • bs — block size, размер блока, который определяет, сколько данных читается и записывается за один раз. Обычно устанавливается в 4M для быстрой обработки.
  • status=progress — выводит прогресс выполнения на экран.
  • conv=fsync и oflag=direct — обеспечивают корректную запись данных, избегая использования кэша.

Эти опции делают dd мощным и опасным инструментом, особенно если вы ошибочно укажете неверное целевое устройство, что может привести к потере данных.

Пример

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

sudo dd if=/путь/к/вашему/isofile of=/ваш/usb/диск bs=4M status=progress conv=fsync oflag=direct

Шаги:

  1. Идентификация USB-устройства:

    • Подключите USB-накопитель и выполните sudo lsblk или sudo fdisk -l, чтобы определить, какое устройство является USB-диском, например, /dev/sdb.
  2. Размонтируйте устройство:

    • Убедитесь, что устройство не смонтировано: sudo umount /dev/sdb.
  3. Выполните dd:

    • Используйте команду dd, предоставив корректные пути для входного (ISO-файл) и выходного (USB) устройства.

Проверка результата

После завершения, используйте sync, чтобы удостовериться, что все данные сброшены на диск:

sudo sync

Теперь у вас есть USB-накопитель с записанным ISO-объектом, который можно использовать для загрузки системы.

Применение

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

  1. Универсальность: Этот метод работает на всех *nix системах, включая Linux и MacOS, и не требует установки дополнительных пакетов.
  2. Надежность: dd обходит высокоуровневые файловые системы, гарантируя точную байт-в-байт запись.
  3. Гибкость: Можно использовать для создания разных типов загрузочных накопителей — от простых установочных дисков до сложных наборов утилит.

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

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

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

Капча загружается...