명령 줄에서 .iso 파일 볼륨 ID를 변경하는 방법이 있습니까?


8

.iso리눅스 에 파일 이 있고 파일을 다시 만들지 않고도 볼륨 ID를 변경하는 방법을 찾으려고 노력했습니다 .iso. 예를 들어 , 제작 도구와 같은 대부분의 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

답변:


11

볼륨 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

ISO에 Joliet 파일 시스템이 추가로 포함되어있는 경우 볼륨 ID를 해당 파일에서 사용할 수 있다고 덧붙이고 싶습니다. 제 경우에는 오프셋 0x8828에 UTF-16으로 저장되었습니다. ID를 변경하기 위해 다음 두 줄을 추가했습니다. seek $ file, 0x8828,0; binmode ($ file, ": encoding (utf-16be)"); printf $ file "% -16.16s", uc ($ ARGV [1]);
Elrohir

2

xorriso는 다음을 수행 할 수 있습니다.

$ 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'
$ 
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.