Linux/ISO

From Omnia
Revision as of 15:06, 21 August 2020 by Kenneth (talk | contribs) (→‎Create ISO)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Mount ISO

Mount ISO:

mount -o loop disk1.iso /mnt/disk

Reference:

[http://www.cyberciti.biz/tips/how-to-mount-iso-image-under-linux.html How to:

Mount an ISO image under Linux]

mkisofs

Original mkisofs utility - http://www.andante.org/mkisofs.html

The mkisofs tool is used for premastering iso9660 filesystems which are used on CDROMs. The output of mkisofs can then be sent to a CDROM writer with a utility such as cdrecord.
Note: I no longer maintain mkisofs. The information on this page was current in March 1999 and has not been updated since then.

mkisofs is now part of the cdrtools package.


cdrtools - http://cdrecord.berlios.de/old/private/cdrecord.html

Cdrtools - Highly portable CD/DVD/BluRay command line recording software
Cdrtools is a set of command line programs that allows to record CD/DVD/BluRay media.

mkisofs rpm:

Name        : mkisofs                      Relocations: (not relocatable)
Version     : 2.01                              Vendor: CentOS
Release     : 10.7.el5                      Build Date: Wed 11 Mar 2009 

11:36:00 AM MDT
Install Date: Sat 23 Oct 2010 05:10:54 PM MDT      Build Host: 

chamkaur.karan.org
Group       : Applications/System           Source RPM: 

cdrtools-2.01-10.7.el5.src.rpm
Size        : 1615431                          License: GPL
Signature   : DSA/SHA1, Tue 17 Mar 2009 05:35:57 AM MDT, Key ID 

a8a447dce8562897
Packager    : Karanbir Singh <kbsingh@karan.org>
URL         : http://cdrecord.berlios.de/old/private/cdrecord.html
Summary     : Creates an image of an ISO9660 filesystem.
Description :
The mkisofs program is used as a pre-mastering program; i.e., it
generates the ISO9660 filesystem.  Mkisofs takes a snapshot of
a given directory tree and generates a binary image of the tree
which will correspond to an ISO9660 filesystem when written to
a block device.  Mkisofs is used for writing CD-ROMs, and includes
support for creating bootable El Torito CD-ROMs.

Install the mkisofs package if you need a program for writing
CD-ROMs.

mkisofs notes

mkisofs - create an hybrid ISO9660/JOLIET/HFS filesystem with optional Rock

Ridge attributes.

mkisofs is effectively a pre-mastering program to generate an

ISO9660/JOLIET/HFS hybrid filesystem.

References:

an ISO Image :: Scott Granneman]

cdrtools

cdrtools - http://cdrecord.berlios.de/old/private/cdrecord.html

Cdrtools - Highly portable CD/DVD/BluRay command line recording software
Cdrtools is a set of command line programs that allows to record CD/DVD/BluRay media.

The suite includes the following programs:

  • cdrecord - A CD/DVD/BD recording program
  • readcd - A program to read CD/DVD/BD media with CD-clone features
  • cdda2wav - The most evolved CD-audio extraction program with paranoia support
  • mkisofs - A program to create hybrid ISO9660/JOLIET/HFS filesystes with optional Rock Ridge attributes
  • isodebug - A program to print mkisofs debug information from media
  • isodump - A program to dump ISO-9660 media
  • isoinfo - A program to analyse/verify ISO/9660/Joliet/Rock-Ridge Filesystems
  • isovfy - A program to verify the ISO-9660 structures
  • rscsi - A Remote SCSI enabling daemon

Labels

The ISOs are read only in Linux. To change the ISO label, use Magic ISO.

Create ISO

Output:

mkisofs -o [file].iso [folder]

Rock Ridge extention:

-R   # files owned by current user
-r   # files own by root

Joliet:

-J

Volume ID

       -V volid
              Specifies the volume ID (volume name or label) to be written into the master block.  There is space on  the
              disc for 32 characters of information.  This parameter can also be set in the file .mkisofsrc with VOLI=id.
              If specified in both places, the command line version is used.  Note that if you assign a volume  ID,  this
              is  the name that will be used as the mount point used by the Solaris volume management system and the name
              that is assigned to the disc on a Microsoft Win32 or Apple Mac platform.

Examples

EXAMPLES

To create a vanilla ISO-9660 filesystem image in the file cd.iso, where
the directory cd_dir will become the root directory if the CD, call:

% mkisofs -o cd.iso cd_dir

To create a CD with Rock  Ridge  extensions  of  the  source  directory
cd_dir:

% mkisofs -o cd.iso -R cd_dir

To  create  a  CD  with  Rock  Ridge extensions of the source directory
cd_dir where all files have at least read permission and all files  are
owned by root, call:

% mkisofs -o cd.iso -r cd_dir

To  write a tar archive directly to a CD that will later contain a sim-
ple iso9660 filesystem with the tar archive call:

% star -c . | mkisofs -stream-media-size 333000 | \
cdrecord dev=b,t,l -dao tsize=333000s -

To create a HFS hybrid CD with the Joliet and Rock Ridge extensions  of
the source directory cd_dir:

% mkisofs -o cd.iso -R -J -hfs cd_dir

To  create  a  HFS hybrid CD from the source directory cd_dir that con-
tains Netatalk Apple/Unix files:

% mkisofs -o cd.iso --netatalk cd_dir

To create a HFS hybrid CD from the source directory cd_dir, giving  all
files  CREATOR and TYPES based on just their filename extensions listed
in the file "mapping".:

% mkisofs -o cd.iso -map mapping cd_dir

To create a CD with the ’Apple Extensions to ISO9660’, from the  source
directories  cd_dir and another_dir.  Files in all the known Apple/Unix
format are decoded and any other files are given CREATOR and TYPE based
on their magic number given in the file "magic":

% mkisofs -o cd.iso -apple -magic magic -probe \
        cd_dir another_dir

The  following example puts different files on the CD that all have the
name README, but have different contents when seen as  a  ISO9660/Rock-
Ridge, Joliet or HFS CD.

Current directory contains:

% ls -F
README.hfs     README.joliet  README.unix    cd_dir/

The  following command puts the contents of the directory cd_dir on the
CD along with the three README files - but only one will be  seen  from
each of the three filesystems:

% mkisofs -o cd.iso -hfs -J -r -graft-points \
        -hide README.hfs -hide README.joliet \
        -hide-joliet README.hfs -hide-joliet README.unix \
        -hide-hfs README.joliet -hide-hfs README.unix \
        README=README.hfs README=README.joliet \
        README=README.unix cd_dir

i.e.  the  file README.hfs will be seen as README on the HFS CD and the
other two README files will be hidden. Similarly  for  the  Joliet  and
ISO9660/RockRidge CD.

There  are probably all sorts of strange results possible with combina-
tions of the hide options ...

Source: man mkisofs

ISO 9660

http://en.wikipedia.org/wiki/ISO_9660

Extensions

There are common extensions to ISO 9660 to deal with the limitations. Rock Ridge supports the preservation of POSIX (Unix-style) permissions and longer ASCII-coded names; Joliet supports names stored in Unicode, thus allowing almost any character to be used, even from non-Latin scripts; El Torito enables CDs to be bootable on PCs; Apple ISO 9660 Extensions adds support for Mac-OS-specific file characteristics such as Resource forks, file backup date and more.

ISO 13490 is basically ISO 9660 with multisession support.

For operating systems which do not support any extensions, a name translation file TRANS.TBL must be used. It should be located in each directory, including the root directory. This is now obsolete, since few such operating systems are in use today .

  • Rock Ridge - Standard
  • Joliet - Microsoft
  • El Torito - Bootable CDs
  • Apple ISO 9660 - Apple
  • ISO 13490 - multisession support

Source: http://en.wikipedia.org/wiki/ISO_9660

Modes

The smallest entity in the CD format is called a frame, and holds 24 bytes. Data in a CD-ROM is organized in frames and sectors. A CD-ROM sector contains 98 frames, and holds 2352 bytes.

CD-ROM Mode 1, usually used for computer data, divides the 2352 byte data area defined by the Red Book standards into 12 bytes of synchronization information, 4 bytes of header data, 2048 bytes of user data and 288 bytes of error correction and detection codes. These codes help prevent the data from becoming corrupted after readout. Executable data is particularly error intolerant and read errors would lead to arbitrary results.

CD-ROM Mode 2 Form 1, usually used for computer data, has the same user data and error correction as Mode 1, but with a slightly different layout. Its use is not recommended for compatibility reasons. [2]

CD-ROM Mode 2 Form 2, intended to be used for error-tolerant data such as audio and video, divides the 2352 bytes into 12 bytes of synchronization information, 4 bytes of header data and 2336 bytes of user data. Mode 2 provides 14% more user data space than Mode 1 by omitting error correction, since a read error in audio or video will only cause a small flaw which may not even be detectable by humans. Video CDs are classified as Mode 2 Form 2.

Source: http://en.wikipedia.org/wiki/ISO_9660

Rock Ridge extensions

http://en.wikipedia.org/wiki/Rock_Ridge

The Rock Ridge Interchange Protocol (RRIP, IEEE P1282) is an extension to the ISO 9660 volume format, commonly used on CDROM and DVD media, which adds POSIX file system semantics. The availability of these extension properties allows for better integration with Unix and Unix-like operating systems.

RRIP was developed by Andrew Young of Young Minds, Inc. in the early 1990s. The standard takes its name from the fictional town Rock Ridge in Mel Brooks' film Blazing Saddles.

The RRIP extensions are, briefly:

  • Longer file names (up to 255 bytes) and fewer restrictions on allowed characters (support for lowercase, etc.)
  • UNIX-style file modes, user ids and group ids, and file timestamps
  • Support for Symbolic links and device files
  • Deeper directory hierarchy (more than 8 levels)
  • Efficient storage of sparse files

NOTE: Rock Ridge is the standard. Joliet is not.

Joliet

Microsoft based extension

http://en.wikipedia.org/wiki/Joliet_%28file_system%29

El Torito

Bootable CDs

http://en.wikipedia.org/wiki/El_Torito_%28CD-ROM_standard%29

Universal Disk Format (UDF)

http://en.wikipedia.org/wiki/Universal_Disk_Format


Universal Disk Format (UDF) is an implementation of the specification known as ISO/IEC 13346 and ECMA-167 and is an open vendor-neutral file system for computer data storage for a broad range of media. In practice, it has been most widely used for DVDs and newer optical disc formats, supplanting ISO 9660. Due to its design, it is very well suited for incremental updates on both recordable or (re)writable optical media. UDF is developed and maintained by the Optical Storage Technology Association (OSTA).


Versions:

  • Many DVD players do not support any UDF revision other than version 1.02
  • 1.02
  • 1.50
  • 2.00
  • 2.01
  • 2.50
  • 2.60


mkisofs udf:

       -udf   Include  UDF  support  in the generated filesystem image.  UDF support is currently in alpha status and for
              this reason, it is not possible to create UDF only images.  UDF data structures are  currently  coupled  to
              the Joliet structures, so there are many pitfalls with the current implementation. There is no UID/GID sup-
              port, there is no POSIX permission support, there is no support for symlinks.  Note  that  UDF  wastes  the
              space  from  sector ~20 to sector 256 at the beginning of the disk in addition to the spcae needed for real
              UDF data structures.


"I have read into this, the only way to successfully make a UDF CD is to first make a loopback image, format that as UDF, put your files on it, then burn the image.

Essentially, it is not ready yet to flip a switch with mkisofs and cdrecord like you can with joilet or iso9660. " [1]


rpm: udftools - Linux UDF Filesystem userspace utilities.

  • mkudffs


isoinfo is unable to read udf discs:

$ isoinfo -i udf.iso -d
CD-ROM is NOT in ISO 9660 format

blkid just reports:

$ blkid udf.iso
udf.iso: TYPE="udf"

file just reports:

$ file udf.iso
udf.iso: data


rpm: dvd+rw-tools - Toolchain to master DVD+RW/+R media

  • growisofs


To create DVD UDF File:

 dd if=/dev/zero of=file.iso bs=1024 count=4589800
 mkudffs file.iso
 mkdir /mnt/loop
 mount -o loop -t udf file.iso /mnt/loop
 cp big_file /mnt/loop
 umount /mnt/loop

Articles

Linux Options - Value to large

Error:

mkisofs: Value too large for defined data type. File XXX is too large - ignoring 

source: mkisofs: Value too large for defined data type - http://www.karakas-online.de/forum/viewtopic.php?t=9693

The problem here is the ISO 9660 specification, which reserves only 32 bits for the file size. Rolling Eyes

There are 2 ways to solve this problem:

SOLUTION #1: Make a UDF-formatted loopback file, copy the files in it, then use growisofs to write the file directly to the burner device:

dd if=/dev/zero of=file.iso bs=1024 count=4589800
mkudffs file.iso
mkdir /mnt/loop
mount -o loop -t udf file.iso /mnt/loop
cp big_file /mnt/loop
umount /mnt/loop
growisofs -speed 4 -Z /dev/dvd=file.iso

This has the advantage that you can have more than one files written on the DVD.

See http://forums.gentoo.org/viewtopic-t-288827.html

HOWEVER, I don't have mkudffs...Sad

So forget this one...

SOLUTION #2: Write only the one huge file onto the DVD with:

growisofs -dvd-compat -Z /dev/dvd=backup.tgz

However, now you cannot mount the DVD, since there is no filesystem! You have to access it like a tape device:

tar -tzf /dev/dvd

See http://geekpit.blogspot.com/2007/02/creating-large-2gb-dvd-backups-under.html

HOWEVER, this does not work for me: Sad

     kernel: scsi1: ERROR on channel 0, id 0, lun 0, CDB: Request Sense 00 00 00 40 00
     kernel: Info fld=0x10, Current sd0b:00: sense key Medium Error
     kernel: Additional sense indicates Unrecovered read error
     kernel:  I/O error: dev 0b:00, sector 64
     kernel: scsi1: ERROR on channel 0, id 0, lun 0, CDB: Request Sense 00 00 00 40 00
     kernel: Info fld=0x11, Current sd0b:00: sense key Medium Error
     kernel: Additional sense indicates Unrecovered read error
     kernel:  I/O error: dev 0b:00, sector 68

Thus, my only option is to reduce the file size to less than 2GB... Sad

Regards, Chris Karakas www.karakas-online.de

ISO Info

isoinfo:

"devdump, isoinfo, isovfy, isodump - Utility programs for dumping and verifying iso9660 images."
isoinfo -i [iso] -d

Creating Bootable ISO

Install mkisofs:

yum install mkisofs

bootable notes

[http://www.cyberciti.biz/tips/how-to-mount-iso-image-under-linux.html How to:

Mount an ISO image under Linux]

"richard, to edit bootable ISO mount it as it’s described here, copy it’s

contents to some directory, edit files you need and generate new ISO by

command:"

mkisofs -o /tmp/new.iso -b isolinux/isolinux.bin -c isolinux/boot.cat 

-no-emul-boot \

   -boot-load-size 4 -boot-info-table -J -R -V “new iso name” .


[http://www.yolinux.com/TUTORIALS/LinuxTutorialRecoveryAndBootDisk.html Linux

Tutorial - Linux Recovery and Boot Disk Creation]:

mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 

-boot-info-table -o grub.iso iso


Hacking Red Hat Kickstart:

cd /RH80/ONE_CD
mkisofs -r -T -J \
 -V "My Custom Installation CD" \
 -b images/boot.img \
 -c images/boot.cat \
 -o /RH80/mydist.iso \
 /RH80/ONE_CD


[http://isg.ee.ethz.ch/tools/realmen/det/autosetup_w2k3.en.html Real Men Don't

Click -- Automated Server Setup 2003]:

mkisofs -o w2k3-isg.iso -N -d -l -no-iso-translate
  -relaxed-filenames -V W2P_ISG
  -boot-load-seg 0x7c0 -b boot.bin -c boot.cat
  -no-emul-boot nrmsvol_en


[http://www.g-loaded.eu/2007/04/25/how-to-create-a-windows-bootable-cd-with-mk

isofs/ How to create a Windows bootable CD with mkisofs]:

mkisofs \
 -b cdboot/msboot.img -no-emul-boot -boot-load-seg 1984 -boot-load-size 4 \
 -iso-level 2 -J -l -D -N -joliet-long -relaxed-filenames \
 -V "WINSP" \
 -o ../winsp.iso .

everytime I placed the msboot.img outside the win files directory and used -b

../msboot.img, mkisofs complained with the following pesky error message:

mkisofs: Uh oh, I cant find the boot image '../msboot.img' !


Burning ISO

See Linux/CD Burning

Extract El Torito Bootable Image

Use the geteltorito perl script, part of the cdrkit.

cdrtools and cdrkit

[http://cdrecord.berlios.de/private/cdrecord.html Cdrtools - Highly portable

CD/DVD/BluRay command line recording software]

  • Warning: users on Linux distributions please

read this information on

bugs and license problems.

cdrkit - portable command-line CD/DVD recorder

software

cdrkit - Wikipedia

cdrkit is a collection of computer programs for CD and DVD authoring that

work on Unix-like systems. License issues in recent cdrtools versions

prompted Debian cdrtools maintainers to fork cdrtools (mkisofs) into cdrkit.


[http://somelinuxstuff.blogspot.com/2007/08/extract-el-torito-boot-image-from-

iso.html Good stuff.: Extract an El Torito boot image from an ISO file under

linux]

geteltorito win2k3ent.iso win2k3ent.img

[http://www.sourcefiles.org/CD_Writing/Tools/geteltorito.pl geteltorito.pl: a

bootimage extractor] (online source)

[http://packages.debian.org/unstable/otherosfs/genisoimage Debian -- Details

of package genisoimage in sid]

  • geteltorito - extract an El Torito boot image from a CD image

To install geteltorito perl script:

wget http://cdrkit.org/releases/cdrkit-1.1.9.tar.gz
tar -zvxf cdrkit-1.1.9.tar.gz
cd cdrkit-1.1.9/3rd-party
sudo cp geteltorito.1 /usr/share/man/man1/
sudo mkdir /usr/share/doc/geteltorito
sudo cp geteltorito/README.geteltorito /usr/share/doc/geteltorito/README
sudo cp geteltorito/geteltorito.pl /usr/local/bin/geteltorito
sudo chmod +x /usr/local/bin/geteltorito

Notes

	gzip < /dev/cdrom > cdrom.iso.gz	Save copy of data cdrom
	mkisofs -V LABEL -r dir | gzip > cdrom.iso.gz	Create cdrom image from contents of dir
	mount -o loop cdrom.iso /mnt/dir	Mount the cdrom image at /mnt/dir (read only)
	cdrecord -v dev=/dev/cdrom blank=fast	Clear a CDRW
	gzip -dc cdrom.iso.gz | cdrecord -v dev=/dev/cdrom -	Burn cdrom image (use dev=ATAPI -scanbus to confirm dev)
	cdparanoia -B	Rip audio tracks from CD to wav files in current dir
	cdrecord -v dev=/dev/cdrom -audio *.wav	Make audio CD from all wavs in current dir (see also cdrdao)
	oggenc --tracknum='track' track.cdda.wav -o 'track.ogg'


yum install mkisofs

keywords

iso mkiso mkisofs mkfsiso mkfs.iso