Fix "Could not validate source" error when trying to burn ISO file to USB stick.
I was trying to burn an ISO image file to my USB stick by Mac OS Disk Utility. But Disk Utility failed to burn and give me an error: "Restore Failure Could not validate source - invalid Argument".
After googling the issue, I found that the error is caused by incompatible image file formats. Disk Utility expects Apple Disk Image, including the
Universal Disk Image Format (UDIF) and the
New Disk Image Format (NDIF), while the format of ISO image file is
Following is a list of Apple disk image formats, according to man page of
UDRW - UDIF read/write image UDRO - UDIF read-only image UDCO - UDIF ADC-compressed image UDZO - UDIF zlib-compressed image UDBZ - UDIF bzip2-compressed image (Mac OS X 10.4+ only) UFBI - UDIF entire image with MD5 checksum UDRo - UDIF read-only (obsolete format) UDCo - UDIF compressed (obsolete format) UDTO - DVD/CD-R master for export UDxx - UDIF stub image UDSP - SPARSE (grows with content) UDSB - SPARSEBUNDLE (grows with content; bundle-backed) RdWr - NDIF read/write image (deprecated) Rdxx - NDIF read-only image (Disk Copy 6.3.3 format) ROCo - NDIF compressed image (deprecated) Rken - NDIF compressed (obsolete format) DC42 - Disk Copy 4.2 image
Firstly I attempted to convert the ISO file to a
UDRW image file, a kind of
$ hdiutil convert -format UDRW -o /path/to/dest.img /path/to/original.iso
The result of above line is a
dest.img.dmg file. (My Mac OS X appends
.dmg ending to the output file automatically.)
Then I tried to burn the
.img file using Disk Utility, but the burning still failed with "Could not validate source" error.
The solution is using Linux
dd command instead of Disk Utility GUI.
Checking the mounted point of USB stick:
$ diskutil list
The output was something like this:
/dev/disk2 #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme *8.0 GB disk2 1: EFI EFI 209.7 MB disk2s1 2: Apple_HFS gentoo 7.7 GB disk2s2
I assume that the device node of USB stick is:
Unmount it before burning, otherwise
dd command will complain the stick is busy.
$ diskutil unmountDisk /dev/disk2
Then burn the image file to USB stick using
$ sudo dd if=/path/to/dest.img.dmg of=/dev/rdisk2 bs=1m # or # sudo dd if=/path/to/dest.img.dmg of=/dev/disk2 bs=1m # using rdiskX will be much faster
Unmount the USB stick after finishing:
$ diskutil eject /dev/disk2