linux – 有没有办法从命令行更改.iso文件卷id?
发布时间:2020-12-13 17:58:33 所属栏目:Linux 来源:网络整理
导读:我在 linux下有一个.iso文件,并且一直试图找到一种方法来更改卷ID而无需重新创建.iso文件.大多数创作工具(如mkisofs)都提供了一个用于设置音量(-V)的开关.但是我无法弄清楚如何在预先存在的.iso文件中更改它. 为了澄清,我想要改变的是这个Volume id:string.
我在
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.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始终存储在偏移量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 安装 iptables防火墙
- 适用于Dell PowerEdge Server的Linux驱动程序?
- linux – 在Ubuntu 8.04服务器上释放内存(RAM)
- 使用Linux上的C访问Sony Playstation SixAxis Co
- linux – 用于Mac 10.7.1的LDAP用户管理工具
- 使用scp提示错误ECDSA host key for [ip address
- openwrt procd启动流程和脚本分析
- 如何构建相同的Linux内核两次源并获得相同的校验
- redhat – Kickstart:通过CGI或PHP脚本提供动态
- [leetcode]187. Repeated DNA Sequences重复DNA序
热点阅读