Linux
有沒有辦法從命令行更改 .iso 文件卷 ID?
我
.iso
在 linux 下有一個文件,並且一直在嘗試找到一種無需重新創建.iso
文件即可更改卷 ID 的方法。例如,大多數創作工具mkisofs
都提供了用於設置音量的開關(-V)
。但是我不知道如何在預先存在的.iso
文件上更改它。為澄清起見,我試圖改變的是這個
Volume id:
字元串。這是 isoinfo 命令的範例轉儲。% 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
卷 ID 始終以 32 字節 ASCII 字元串形式儲存在偏移量 0x8028 處。就地編輯它。
#!/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]);
測試 - (isovolid.pl 是上述腳本的名稱):
$ 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