XORRISO-DD-TARGET(1)
XORRISO-DD-TARGET π
okay bestie, so this is a page from the General Commands Manual β the manual name is xorriso-dd-target, section 1, and it's giving device evaluator realness. Let's get into it π«Ά
β¨ NAME β¨
xorriso-dd-target β Device evaluator and disk image copier for GNU/Linux
β¨ SYNOPSIS β¨
xorriso-dd-target [ options ] [ device_names ]
β¨ DESCRIPTION β¨
So xorriso-dd-target looks at block devices on the Linux kernel and is like, "hmm, are you a suitable target for a disk image file?" and then optionally it copies the image file onto one of them. Lowkey iconic. π
It's specialized on the device names of the Linux kernel and it uses the capabilities of the util-linux program lsblk. Therefore, it refuses to run on non-Linux kernels. Not us being exclusive, just, like, it literally won't. π«
The main purpose of xorriso-dd-target is to inspect the device files of disk-like storage media and to judge whether they look like removable devices with disposable content. If a single plausible candidate is detected, then the program is willing to copy a disk image file onto it. This will overwrite or make inaccessible the previous partition table and all previous data content of the target device. π Yeah. Gone. Poof.
Superuser power is often needed for filesystem type identification, for possible unmounting, and for possible image writing. Option -with_sudo offers a way to gain this power only for those tasks and to run the program elsewise with a normal user's power. Slay, privilege hygiene. π
If a particular disk image file is intended as copy source, then its path should be given by option -image_file, so that its size can be used as decision criterion.
Following are use case descriptions with examples:
- List plain device names
- List all devices with reasoning
- Evaluate particular given devices
- Detect intended device by plugging
- Write image to an advised device
- Show commands for writing to a not advised device
π List plain device names π
The most simple and most boring use case is a program run without device names and without options -list_all, -plug_test, -DO_WRITE, -dummy_force. It prints on standard output (stdout) only the names of advisable devices without "/dev/" prefix. One name per line and without any reasoning text. no cap, just vibes and names. β¨
The possible sudo password prompt, the message line about sudo, and the empty line after it do not go to stdout. (very much keeping stdout clean, we respect that here π )
Example:
$ xorriso-dd-target -with_sudo
Testing sudo to possibly get password prompting done now:
[sudo] password for thomas:
sudo /bin/lsblk seems ok.
sde
π¦ List all devices with reasoning π¦
For the more curious user, there is option -list_all which prints the evaluation of each disk-like device that is listed by program lsblk. Optical drives, floppy disks, RAM block devices, loop devices are excluded, though. sorry bestie, they didn't make the cut. π
Each device is shown by one line of the form
name : advice : reasoning : info
name is the device name without "/dev/" prefix.
advice is either "YES" or "NO". "YES" indicates that the device appears to be pluggable disk-like, not used as system disk or sincere data storage, and β if tested β of sufficient or plausible size.
reasoning is a blank separated list of words with either suffix '+' for an inviting device property or '-' for a prohibitive property. Normally a single '-' reason disqualifies the device from being advisable. Only if option -look_for_iso is given, a reason "has_XYZ-" can be overridden by the presence of an ISO 9660 filesystem on the device.
info is composed from VENDOR and MODEL as told by lsblk.
Option -list_long causes with each line an additional listing of the information provided by lsblk which led to the shown reasons.
Example:
$ xorriso-dd-target -with_sudo -list_all
...
sda : NO : not_usb- has_vfat+ has_ext4- : ATA Samsung SSD 850
sdb : NO : not_usb- has_swap- has_ext4- : ATA WDC WD20EFRX-68A
sdc : YES : usb+ has_iso9660+ has_vfat+ : Intenso Ultra Line
sdd : NO : usb+ has_iso9660+ has_vfat+ has_ext2- : SanDisk Cruzer
πΈ Evaluate particular given devices πΈ
If device names are given instead of option -list_all, then only these devices are inspected. Their result gets listed without the ": info" part, unless option -with_vendor_model is given.
Device names must not begin by '-' and must be single words composed of the characters [A-za-z0-9_/-]. They should not contain '/'. E.g. 'sdc' is valid, '/dev/sdc' is not valid. yeah she's strict about this one π
If one of the given device names gets not advised, the exit value is 1.
It makes few sense to give device names which are not listed by -list_all.
Examples:
$ xorriso-dd-target -with_sudo sdc
...
sdc : YES : usb+ has_iso9660+ has_vfat+
$ xorriso-dd-target -with_sudo -with_vendor_model sdc
...
sdc : YES : usb+ has_iso9660+ has_vfat+ : Intenso Ultra Line
$ xorriso-dd-target sdc
sdc : NO : usb+ no_fs_while_not_su-
π Detect intended device by plugging π
Option -plug_test triggers an interactive method to unambiguously determine the intended target device candidate. It consists of 2 or 3 steps. it's giving little ritual, honestly π―οΈ
Step 1 is to have the intended storage device unplugged and to confirm this by pressing the Enter key at the program's prompt. The program will then assess the list of not wanted devices.
Step 2 is to plug in the intended storage device and to confirm this by pressing the Enter key a second time. The program will wait up to 10 seconds for a disk-like storage device which is not in the list of not wanted devices. The user may wait with key pressing until the device blinking looks like it is ready. (blinking device = main character energy β¨)
Only if a single new device is found, the program will go on as if a single device name was given. Option -list_all and any device names given as arguments will be ignored.
Step 3 happens only if options -DO_WRITE or -dummy_force are given. The program asks for a final input of the word 'yes' before real or simulated writing begins.
Example:
$ xorriso-dd-target -with_sudo -plug_test
...
Caused by option -plug_test: Attempt to find the desired device by
watching it appear after being plugged in.
Step 1:
Please make sure that the desired target device is plugged _out_ now.
If it is currently plugged in, make sure to unmount all its filesystems
and then unplug it.
Press the Enter key when ready.
Found and noted as _not_ desired: sda sdb sdc
Step 2:
Please plug in the desired target device and then press the Enter key.
Waiting up to 10 seconds for a new device to be listed ... found: sdd
Now waiting 5 seconds to let it settle .........
Found and noted as desired device: sdd
sdd : NO : usb+ has_iso9660+ has_vfat+ has_ext2- : SanDisk Cruzer
π₯ Write image to an advised device π₯
Only if option -DO_WRITE is given and -list_all is not, and if exactly one advisable device is listed, it really gets overwritten by the file content of the given -image_file. In this case the exit value is zero if writing succeeded, non-zero else.
Option -dummy prevents this kind of real action and rather shows the planned umount and dd commands on stdout. (a little dress rehearsal, no actual destruction π)
Example:
$ xorriso-dd-target -with_sudo -plug_test -DO_WRITE \
-image_file debian-live-10.0.0-amd64-xfce.iso
... sudo messages and above plug test steps 1 and 2 ...
sde : YES : usb+ has_iso9660+ has_vfat+
Step 3:
Last chance to abort. Enter the word 'yes' to start REAL WRITING.
yes
Looking for mount points of sde:
/dev/sde1 on /mnt/iso type iso9660 (ro,relatime)
/dev/sde2 on /mnt/fat type vfat (rw,...,errors=remount-ro)
Unmounted: /dev/sde1
Unmounted: /dev/sde2
Performing:
sudo /bin/dd if=/dev/zero of=/dev/'sde' bs=512 seek='245759999'
count=1 status=none
sudo /bin/dd if='debian-live-10.0.0-amd64-xfce.iso' of=/dev/'sde'
bs=1M status=progress oflag=dsync ; sync
... dd messages ...
The first dd run shall erase a possible GPT backup header. It is performed only if the local program "expr" can deal with the byte size of the device.
β οΈ bestie, that's REAL WRITING. -DO_WRITE does not play. the previous partition table and all previous data content get overwritten or made inaccessible. periodt. π
π§ Show commands for writing to a not advised device π§
There should be no way to convince xorriso-dd-target of writing to a target device which it does not deem advisable. Please report any set of arguments that can be misused for that.
The outmost complicity to potentially unwise actions is offered by option -dummy_force. If given together with a single device name or with option -plug_test it will act like -dummy -DO_WRITE with this device, even if it looks not advisable. I.e. it will show the shell commands which the program does not dare to perform.
Example:
$ xorriso-dd-target -with_sudo -list_long -dummy_force sdd \
-image_file debian-live-10.0.0-amd64-xfce.iso
...
sdd : NO : usb+ has_iso9660+ has_vfat+ has_ext2-
NAME SIZE FSTYPE TRAN LABEL
sdd 3.8G iso9660 usb d-live 9.5.0 xf i386
|-sdd1 1.9G iso9660 d-live 9.5.0 xf i386
|-sdd2 320K vfat
`-sdd3 512M ext2
Overriding any advice because of -dummy_force
Looking for mount points of sdd:
/dev/sdd1 on /mnt/iso type iso9660 (ro,relatime)
/dev/sdd2 on /mnt/fat type vfat (rw,...,errors=remount-ro)
/dev/sdd3 on /mnt/ext type ext2 (rw,relatime)
AGAINST THE ADVICE BY THIS PROGRAM, a daring user could do:
sudo /bin/umount /dev/sdd1
sudo /bin/umount /dev/sdd2
sudo /bin/umount /dev/sdd3
sudo /bin/dd if=/dev/zero of=/dev/'sdd' bs=512 seek='7864318'
count=1 status=none
sudo /bin/dd if='debian-live-10.0.0-amd64-xfce.iso' of=/dev/sdd
bs=1M status=progress oflag=dsync ; sync
BE SMART. BE CAUTIOUS. BEWARE.
π¨ BE SMART. BE CAUTIOUS. BEWARE. like, genuinely. -dummy_force is the "I'm not touching you" of disk tools. π
π Alphabetical List of positive and negative reasons π
As stated with use case "List all devices", reasons are words with either suffix '+' for an inviting device property or '-' for a prohibitive property.
Normally a single '-' reason disqualifies the device from being advisable.
...and that's where part 1 stops, bestie. more parts coming, don't go anywhere π
β¦and here's the rest of the reason codes, bestie, don't scroll away, these are lowkey important π
has_XYZ-β there's a filesystem of type XYZ chillin' on the base device or a partition, and it's ruining the whole "this device is disposable" fantasy. spoiling the vibe fr.has_iso9660+β an ISO 9660 filesystem got detected β¨has_vfat+β a FAT (MS-DOS-like) filesystem got detected β¨look_for_iso++β option-look_for_isowas given and an ISO 9660 filesystem is detected. This reason overrides anyhas_XYZ-reason. periodt.looks_like_cd_drive-β the device name you handed over looks like an optical drive name:sr[0-9]*. bestie, use programxorrecordfor this kind of devices πlooks_like_disk_partition-β the name looks like a partition. the program expects names of base devices, likesde, not of their partitions, likesde1. π«Άlooks_like_floppy-β the name looks like a floppy disk drive:fd[0-9]*looks_like_loopdev-β the name looks like a loop device:loop[0-9]*looks_like_ramdev-β the name looks like a RAM block device:zram[0-9]*lsblk_no_size-β a size test is given by-max_size,-min_size, or-image_file, but the size of the device cannot be inquired bylsblk. this is only supposed to happen with inappropriate device names.mmcblk+β the device name looks like a directly connected memory card πΈname_with_slash-β the device name contains/characters. not it.no_bus_info-β the device is not a memory card andlsblkreports nothing about how it's connected to the computer πno_fs_while_not_su-β no filesystem is reported bylsblkand the program doesn't believe it was run with superuser powers. there's a risk thatlsblksilently failed to detect existing filesystems. scary, ik.no_iso9660-β option-look_for_isois given but no ISO 9660 filesystem is detected πnot_usb-β the device is not a memory card andlsblksays it's connected by something other than USB.size_too_large-β option-max_sizewas given with a size smaller than the size of the device.size_too_small-β option-min_sizeor-image_filewas given with a size or file size larger than the size of the device.usb+βlsblkreports the device is connected via USB π
β¨ OPTIONS β¨
-plug_testβ find the target device by asking the user to press the Enter key when the desired target is not plugged in, then to plug it in, then to press Enter again π¦ this overrides device names and option-list_all. The found device is then shown with advice, vendor, and model. Option-DO_WRITEis obeyed if given. In this case, the word'yes'has to be entered to let unmounting and writing begin. yes, literally the word'yes', type it yourself bestie-list_allβ print list of all found devices with advice, vendor and model. One per line. Ignore any device names. Ignore-DO_WRITE.-list_longβ after each result line, which shows reasons, add an additional listing of the information provided bylsblkwhich led to the reasons, and add an empty line. β¨-with_vendor_modelβ print vendor and model with each submitted device name.-max_size n[M|G|T]β set the upper byte size limit for advisable devices. Plain numbers get rounded down to full millions. As suffix are recognized:M= million,G= billion,T= trillion. Be generous to avoid problems with GB < GiB.-min_size n[M|G|T]β set the lower byte size limit for advisable devices. After processing like with-max_size, one million gets added to the size limit.-look_for_isoβ demand presence of an ISO 9660 filesystem. If so, then any further filesystem type is acceptable on that device. If this option is missing, only ISO 9660 and VFAT filesystems are accepted.-with_sudoβ run'lsblk -o FSTYPE'by sudo. If no filesystems are detected on a device while the program has no superuser power, then the device is not advised. Option-with_sudoavoids this refusal without the need to run the whole program as superuser. If-DO_WRITE -with_sudois given, then the programsumountandddwill be run by sudo, too. π-trust_lsblk_udevβ suppress the reasonno_fs_while_not_su-iflsblkis linked withlibudev.so. In this case it is likely thatlsblkcan retrieve FSTYPE even if run by a non-priviledged user. This option is intended for use by frontend programs which are certain that they do not encounter a udev-using version oflsblkwhich nevertheless fails to detect existing filesystems. Human users should better acquire superuser powers if reasonno_fs_while_not_su-is reported. tl;dr β humans, just get sudo, this option is not for you-image_file PATHβ set the path of the image file which shall be written to a device. Its size will be set as-min_size.-DO_WRITEβ write the given-image_fileto the one advisable device that is found. If more than one such device is found, then they get listed but no writing happens. In this case, to get a real write run, consider unplugging unneeded devices, or using option-plug_test, or a re-run with one of the advised device names as additional argument. π-no_pacifierβ do not useddoptions to print progress messages and to perform synchronized output. These options are used by default if programddoffers progress messages.-dummyβ report the-DO_WRITEactions but do not perform them. π-dummy_forceβ if a single device name is given, do a run of-dummy -DO_WRITEeven against the advice of this program. This probably shows you ways to shoot your own foot. π bestie this is the foot-shooting option, respect the advice-versionβ print the program name, version text, and timestamp to stdout and then end the program.-helpβ print the help text to stdout and then end the program.
π EXAMPLES π
Examples are given in the above description of use cases. β¨
π FILES π
For now, no files are defined for configuration. (iconic, unbothered, fileless)
π₯ SEE ALSO π₯
lsblk(8), umount(8), dd(1), xorrecord(1)
π BUGS π
To report bugs, request help, or suggest enhancements for xorriso-dd-target, please send electronic mail to the public list <bug-xorriso@gnu.org>. If more privacy is desired, mail to <scdbackup@gmx.net>. π«Ά
Please describe what you expect the program to do, the program arguments which you used, the messages of xorriso-dd-target, and the undesirable outcome of your program run.
Expect to get asked more questions before solutions can be proposed. (yes, more questions. it's a whole conversation, not a drive-by)
π AUTHOR π
Thomas Schmitt <scdbackup@gmx.net> for libburnia-project.org
πΈ COPYRIGHT πΈ
Copyright (c) 2019 - 2026 Thomas Schmitt
Permission is granted to distribute this text freely. It shall only be modified in sync with the technical properties of xorriso-dd-target. If you make use of the license to derive modified versions of xorriso-dd-target then you are entitled to modify this text under that same license.
π CREDITS π
xorriso-dd-target is developed in cooperation with Nio Wiklund alias sudodus. π«Ά
okay that's the whole page bestie, you read it all, I'm so proud ππ this was Version 1.5.8, dated Apr 01, 2026 β slay, go write some images safely, and remember: respect the advice or you WILL shoot your own foot π β¨
π¦ where this page comes from
- alpine 3.24: libisoburn-doc 1.5.8-r0 Β· GPL-2.0-or-later
- arch rolling: libisoburn 1.5.8.2-1 Β· GPL-2.0-or-later
- fedora 43: xorriso 1.5.8-2.fc43 Β· GPL-2.0-or-later
- fedora 44: xorriso 1.5.8-2.fc44 Β· GPL-2.0-or-later
- nixpkgs unstable: libisoburn 1.5.8.pl02
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms