Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – 有没有办法从命令行更改.iso文件卷id?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我在 linux下有一个.iso文件,并且一直试图找到一种方法来更改卷ID而无需重新创建.iso文件.大多数创作工具(如mkisofs)都提供了一个用于设置音量(-V)的开关.但是我无法弄清楚如何在预先存在的.iso文件中更改它. 为了澄清,我想要改变的是这个Volume id:String.这是isoinfo命令的示例转储. % isoinfo -d -i /usr/share/virtualb
我在 linux下有一个.iso文件,并且一直试图找到一种方法来更改卷ID而无需重新创建.iso文件.大多数创作工具(如mkisofs)都提供了一个用于设置音量(-V)的开关.但是我无法弄清楚如何在预先存在的.iso文件中更改它.

为了澄清,我想要改变的是这个Volume id:String.这是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.YOUNG@R_301_2054@ (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始终存储在偏移量0x8028处,为32字节ASCII字符串.在适当的位置编辑它.
#!/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

大佬总结

以上是大佬教程为你收集整理的linux – 有没有办法从命令行更改.iso文件卷id?全部内容,希望文章能够帮你解决linux – 有没有办法从命令行更改.iso文件卷id?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。