ISO Image Command Line Examples
How to Determine What Your CD or DVD Drive Uses for the Mount Point
- Use the "eject" command to open the drive, and then use the "dmesg" command to view kernel messages, the last of which should be something like this:
[50208.534770] SELinux: initialized (dev sr0, type iso9660), uses genfs_contexts
In the above example, the CD/DVD burner is device sr0, so the mount point of it is /mnt/sr0.
In case anybody is wondering, sr0 in the above and below mount point stands for "SCSI Recorder 0", the first CD/DVD burner connected to the machine. If you have more than one, adjust accordingly. You can use the eject /dev/sr0 or eject /dev/sr1, etc to find out which physical device is which logical "block" device.
The Best Way to Rip a DVD or CD from a Disk to an ISO File!
First, you need to find out some info from the physical disk, so that the image you create is "EXACTLY" the same size as the original. Without this info, the dd command used to create the ISO image file will add two additional bytes to the end of the image file. By first running this command to find out the block size and volume size, you can force the dd command to create the ISO image with exactly the same number of bytes the original disk has!
Run this command from the command prompt to find out the info required to rip the disk:
isoinfo -d -i /dev/sr0 | grep -i -E 'block size|volume size'
Be sure to include the single quotes in the above example! The output of the above command should look similar to this:
Logical block size is: 2048 Volume size is: 3782
My example is using a very tiny disk, so the volume size is much lower than a normal DVD or even CD.
Then, with the above block size and volume size given in my example above, use it to rip the disk:
dd if=/dev/cdrom of=MyDisk.iso bs=2048 count=3782
When done creating the newly created disk ISO image file, eject the physical disk using the eject command, shown here, assuming the same DVD/CD burner drive, /dev/sr0
To close the DVD/CD tray, if your's has one, use the eject command with the -t switch, shown here:
eject -t /dev/sr0
More Examples to Create ISO Image Files From Any Disk or File Structure
- If it is a disk you are copying to an ISO image, first un-mount it, using the umount command:
(Only one of the below commands are required, depending on your system and how it automatically mounts disks)
umount /mnt/cdrom OR umount /mnt/sdd OR umount /mnt/sr0 OR umount /run/media/username/disk_name
- Use the dd command to create an exact image of the disk or file system:
(Again, use the correct mounting point for your particular Linux system)
In all of these examples using the dd command, the tags if= and of= stand for "InputFile"= and "OutputFile"=
dd if=/dev/sr0 of=ISO_Image_File_Name.iso OR dd if=/directory_structure_name of=ISO_Image_File_Name.iso
Here is the actual scroll-back of a DVD image creation of the older Red Hat Enterprise Linux 5.1 I needed to do:
[root@server RHEL-5.1_64-Bit]# dd if=/dev/sr0 of=RHEL_5.1_x64.iso 6866560+0 records in 6866560+0 records out 3515678720 bytes (3.5 GB) copied, 251.405 s, 14.0 MB/s [root@server RHEL-5.1_64-Bit]#
- A really nice way of creating an ISO image using the dd command along with some other command line arguments,
to create a nice ncurses based status indicator while it creates the image, allowing you to monitor the progress of ISO image creation:
(pv -n /dev/sr0 | dd of=ISO_Image_File_Name.iso bs=2048 conv=notrunc,noerror) 2>&1 | dialog --gauge "Creating ISO Image... Please stand by..." 10 70 0
Extensions & Improvements
- There are several extensions to ISO9660 that relax some of its limitations:
- Rock Ridge supports the preservation of POSIX (UNIX/Linux-Type) permissions and long file names.
- Joliet supports Unicode names stored in UCS-2, so that any character can be used.
- El Torito enables disks to be bootable.
- Apple ISO9660 Extensions adds support for classic MAC OS-Specific file characteristics like resource forks, file backup dates, etc.
Create ISO Image from Mounted CD or DVD:
- In the example below:
- Replace "IMAGE_NAME.ISO" with what you want to name the ISO image file.
- Replace "/run/media/dir_disk_mounted_on/" with the entire path that the disk is mounted on.
- This exact same command can also be used to create an ISO image containing any mounted directory tree.
- Switches used in below example: -v = verbose output, -J and -R = Juliet & RockRidge extensions included for Windows compatibility.
genisoimage -o IMAGE_NAME.ISO -v -J -R /run/media/dir_disk_mounted_on/