Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error reading Volume Descriptor: mismatched ISO version in Volume Descriptor. Found 2 expected 1 #290

Open
aol-nnov opened this issue Mar 27, 2025 · 4 comments · May be fixed by #291
Open

Comments

@aol-nnov
Copy link
Contributor

Hey, Avi! Long time no see!

Hope this issue finds you well, ha!

I'm facing an issue while trying to run the example with iso images I've created with genisoimage, the error is fully stated in the subject.

Could you please tell me, how to diagnose the problem, what extra info could I provide you with?

Let's start with the command

genisoimage -f -J -r -volid "xxx_xxxx2_1743003235_src" --publisher "YYYYY YY" --iso-level=4 --joliet-long -o theFile.iso workDir

and isoinfo

CD-ROM is in ISO 9660 format
System id: LINUX
Volume id: xxx_xxxx2_1743003235_src
Volume set id:
Publisher id: YYYYY YY
Data preparer id:
Application id: GENISOIMAGE ISO 9660/HFS FILESYSTEM CREATOR (C) 1993 E.YOUNGDALE (C) 1997-2006 J.PEARSON/J.SCHILLING (C) 2006-2007 CDRKIT TEAM
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: 6486
CD-ROM uses ISO 9660:1999 relaxed format

Joliet with UCS level 3 found.
SUSP signatures version 1 found
Rock Ridge signatures version 1 found
Rock Ridge id 'RRIP_1991A'

I'm guessing, it's due to --iso-level=4 --joliet-long, but I'm unable to change the way those images are created...

Interesting to mention, that if I comment out the following lines, everything just works! I've checked the content served and it all seems legit.

I thought, I could implement and contribute joliet support someday, but now I just need a quick local solution...
What are the implications of commenting out that check? Might I lose or unable to read any data from the image?

Thanks in advance!

@aol-nnov
Copy link
Contributor Author

Aha, it's --iso-level=4 which makes version 2, not --joliet-long

man genisoimage says:

Level 4 officially does not exist but genisoimage maps it to ISO-9660:1999, which is ISO9660 version 2.

With level 4, an enhanced volume descriptor with version number and file structure version number set to 2 is emitted.
Directory nesting is not limited to 8 levels, there is no need for a file to contain a dot and the dot has no special meaning, filenames do not have version numbers, and filenames can be up to 207 characters long, or 197 characters if Rock Ridge is used.

When creating Version 2 images, genisoimage emits an enhanced volume descriptor, similar but not identical to a primary volume descriptor. Be careful not to use broken software to make ISO9660 images bootable by assuming a second PVD copy and patching this putative PVD copy into an El Torito VD.

How lucky I am to have the images with "non-existent" iso-level!..

Still, it's not clear where to move next.. Those images are burned and work just fine in linux and windows...

@deitch
Copy link
Collaborator

deitch commented Mar 28, 2025

I always like it when smart people open issues when I am too busy to get to them. They often have 50-75% of it figured out before I have a chance to look at it. 😁

So you are generating the image with genisoimage --iso-level=4, which sets the version in the volume descriptor to 2, whereas the library expects it to be 1, and therefore hard-coded. Nice catch.

I don't see any reason not to support version 2. As far as the directory nesting, I don't think anything here restricts it on reading, so that should be fine. Do you want to open a PR to add support for level 2? I think it would be to keep the version on the volume descriptor, which in turn is part of the filesystem.

@aol-nnov
Copy link
Contributor Author

Unfortunately, I'm on fire on my main job now... I'll try to look into it, but a quick glance revealed, that despite it just works if the version check is commented out, it is not as simple as changing 1 to 2 in that snippet.. Seems, there is an extra descriptor for v2, and this info needs extra investigation on my side...

I'll try to get back to it next month hopefully.

aol-nnov added a commit to aol-nnov/go-diskfs that referenced this issue Apr 5, 2025
SVDs may have version greater than 1. For now let's check PVD version only.

closes diskfs#290
@aol-nnov aol-nnov linked a pull request Apr 5, 2025 that will close this issue
@aol-nnov
Copy link
Contributor Author

aol-nnov commented Apr 5, 2025

Avi, I've mocked some kind of fix for iso v2, please review when you have time.

Also, I've found something with make and append and fixed it in a separate commit.

aol-nnov added a commit to aol-nnov/go-diskfs that referenced this issue Apr 6, 2025
SVDs may have version greater than 1. For now let's check PVD version only.

closes diskfs#290
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants