Is there a way to change a .iso files volume id from the command line?
7,214
Solution 1
Volume ID is always stored at offset 0x8028 as 32 byte ASCII string. Edit it in place.
#!/usr/bin/perl
use strict;
use warnings;
die "Use: $0 <iso_file> <new volume id>\n" unless @ARGV == 2;
open my $file, "+<", $ARGV[0] or die "Cannot open: $!";
seek $file, 0x8028,0;
printf $file "%-32.32s", uc($ARGV[1]);
Test - (isovolid.pl is a name of the above script):
$ genisoimage -V A123456798012345678901234567890X -o aaa.iso *
$ isoinfo -d -i aaa.iso | grep 'Volume id:'
Volume id: A123456798012345678901234567890X
$ ./isovolid.pl aaa.iso NEWVOLUMEID
$ isoinfo -d -i aaa.iso | grep 'Volume id:'
Volume id: NEWVOLUMEID
Solution 2
xorriso can do this:
$ xorriso -dev ./VBoxGuestAdditions.iso -volid 'YourLable' -commit
xorriso 1.4.6 : RockRidge filesystem manipulator, libburnia project.
xorriso : NOTE : Loading ISO image tree from LBA 0
xorriso : UPDATE : 32 nodes read in 1 seconds
Drive current: -dev './VBoxGuestAdditions.iso'
Media current: stdio file, overwriteable
Media status : is written , is appendable
Media summary: 1 session, 29111 data blocks, 56.9m data, 20.3g free
Volume id : 'VBOXADDITIONS_5.1.34_121010'
xorriso : WARNING : -volid text does not comply to ISO 9660 / ECMA 119 rules
ISO image produced: 27 sectors
Written to medium : 192 sectors at LBA 29120
Writing to './VBoxGuestAdditions.iso' completed successfully.
xorriso : NOTE : Re-assessing -outdev './VBoxGuestAdditions.iso'
xorriso : NOTE : Loading ISO image tree from LBA 0
xorriso : UPDATE : 32 nodes read in 1 seconds
Drive current: -dev './VBoxGuestAdditions.iso'
Media current: stdio file, overwriteable
Media status : is written , is appendable
Media summary: 1 session, 29147 data blocks, 56.9m data, 20.3g free
Volume id : 'YourLable'
$
Related videos on Youtube
Author by
slm
Updated on September 18, 2022Comments
-
slm almost 2 years
I have a
.iso
file under linux and have been trying to find a way to change the volume id without having to recreate the.iso
file. Most of the authoring tools such asmkisofs
provide a switch for setting the volume(-V)
for example. However I can't figure out how to change it on a pre-existing.iso
file.For clarification, the bit I'm trying to change is this
Volume id:
string. Here's an example dump from the isoinfo command.% isoinfo -d -i /usr/share/virtualbox/VBoxGuestAdditions.iso CD-ROM is in ISO 9660 format System id: Win32 Volume id: VBOXADDITIONS_4.1.8_75467 Volume set id: Publisher id: Data preparer id: Application id: MKISOFS ISO 9660/HFS FILESYSTEM BUILDER & CDRECORD CD-R/DVD CREATOR (C) 1993 E.YOUNGDALE (C) 1997 J.PEARSON/J.SCHILLING Copyright File id: Abstract File id: Bibliographic File id: Volume set size is: 1 Volume set sequence number is: 1 Logical block size is: 2048 Volume size is: 22203 Joliet with UCS level 3 found Rock Ridge signatures version 1 found
-
Elrohir over 6 yearsI would like to add that in case the ISO additionally contains a Joliet filesystem the volume id may be used from that one. In my case it was stored at offset 0x8828 in UTF-16. I added the following two lines to change that id too: seek $file, 0x8828,0; binmode($file, ":encoding(utf-16be)"); printf $file "%-16.16s", uc($ARGV[1]);