Có cách nào để thay đổi id tập tin .iso từ dòng lệnh không?


8

Tôi có một .isotệp trong linux và đã cố gắng tìm cách thay đổi id âm lượng mà không phải tạo lại .isotệp. Hầu hết các công cụ tác giả như mkisofscung cấp một công tắc để đặt âm lượng (-V)chẳng hạn. Tuy nhiên tôi không thể tìm ra cách thay đổi nó trên một .isotập tin có sẵn .

Để làm rõ, bit tôi đang cố gắng thay đổi là Volume id:chuỗi này . Đây là một ví dụ kết xuất từ ​​lệnh 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

Câu trả lời:


11

ID khối lượng luôn được lưu trữ ở offset 0x8028 dưới dạng chuỗi ASCII 32 byte. Chỉnh sửa nó tại chỗ.

#!/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]);

Kiểm tra - (isovolid.pl là tên của tập lệnh trên):

$ 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

Tôi muốn thêm rằng trong trường hợp ISO có chứa một hệ thống tập tin Joliet, id âm lượng có thể được sử dụng từ đó. Trong trường hợp của tôi, nó được lưu trữ ở offset 0x8828 trong UTF-16. Tôi đã thêm hai dòng sau để thay đổi id đó: tìm kiếm tập tin $, 0x8828,0; binmode ($ file, ": mã hóa (utf-16be)"); in tệp $ "% -16.16s", uc ($ ARGV [1]);
Elrohir

2

xorriso có thể làm điều này:

$ 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'
$ 
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.