কমান্ড লাইন থেকে একটি .iso ফাইল ভলিউম আইডি পরিবর্তন করার কোন উপায় আছে?


8

আমার .isoলিনাক্সের অধীনে একটি ফাইল রয়েছে এবং .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

ভলিউম আইডি সর্বদা অফসেট 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

আমি যুক্ত করতে চাই যে আইএসওতে অতিরিক্তভাবে জোলিয়েট ফাইল সিস্টেম রয়েছে তবে সেই থেকে ভলিউম আইডি ব্যবহার করা যেতে পারে। আমার ক্ষেত্রে এটি ইউটিএফ -16 এ 0x8828 অফসেটে সঞ্চিত ছিল। আমিও এই আইডিটি পরিবর্তন করতে নিম্নলিখিত দুটি লাইন যুক্ত করেছি: ফাইলটি 0x8828,0 অনুসন্ধান করুন; বিনমোড ($ ফাইল, ": এনকোডিং (utf-16be)"); printf f ফাইল "% -16.16s", uc ($ এআরজিভি [1]);
এলরোহির

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.