SUMMARY I have an ISO of a "multi-partition ISO" images (dual use for Windows and Mac). When mounting it using Dolphin (clicking on the device in the "Devices" list), it mounts the HFS partition. STEPS TO REPRODUCE 1. Setup a loop device for a multi-partition ISO image (using losetup, udisksctl or Dolphin's new "Mount ISO" service). 2. Double click the new device that appears in the "Devices" list. OBSERVED RESULT The HFS filesystem on the ISO is shown with the Mac specific files. The Joliet file system is not shown. EXPECTED RESULT The Joliet file system should be shown. SOFTWARE/OS VERSIONS Linux/KDE Plasma: KDE Plasma Version: 5.19.80 KDE Frameworks Version: 5.74.0 Qt Version: 5.14.2 ADDITIONAL INFORMATION Dolphin is version 20.11.70 installed from neon unstable repositories. The Joliet file system can be accessed by using the FuseISO tools on the loop device setup by losetup/udisksctl/Dolphin by executing something like this on a terminal: fuseiso /dev/loop28 ~/mnt/tmp/ Using `solid-hardware5 list details`, the relevant output looks like this: udi = '/org/freedesktop/UDisks2/block_devices/loop28' parent = '/' (string) vendor = '' (string) product = '' (string) description = 'INSTALL' (string) icon = 'application-x-cd-image' (string) Block.major = 7 (0x7) (int) Block.minor = 28 (0x1c) (int) Block.device = '/dev/loop28' (string) StorageVolume.ignored = true (bool) StorageVolume.usage = 'PartitionTable' (0x3) (enum) StorageVolume.fsType = 'iso9660' (string) StorageVolume.label = 'INSTALL' (string) StorageVolume.uuid = '2004-08-12-14-36-55-00' (string) StorageVolume.size = 654561280 (0x2703d000) (qulonglong) udi = '/org/freedesktop/UDisks2/block_devices/loop28p2' parent = '/' (string) vendor = '' (string) product = '' (string) description = 'XXXXXXXXXXX' (string) icon = 'drive-harddisk' (string) Block.major = 259 (0x103) (int) Block.minor = 10 (0xa) (int) Block.device = '/dev/loop28p2' (string) StorageAccess.accessible = false (bool) StorageAccess.filePath = '' (string) StorageAccess.ignored = true (bool) StorageVolume.ignored = false (bool) StorageVolume.usage = 'FileSystem' (0x2) (enum) StorageVolume.fsType = 'hfs' (string) StorageVolume.label = 'XXXXXXXXXXX' (string) StorageVolume.uuid = 'dbd5a3ea-5614-384e-8d15-045117946523' (string) StorageVolume.size = 628582400 (0x25776800) (qulonglong) udi = '/org/freedesktop/UDisks2/block_devices/loop28p1' parent = '/' (string) vendor = '' (string) product = '' (string) description = 'MRKS' (string) icon = 'drive-harddisk' (string) Block.major = 259 (0x103) (int) Block.minor = 9 (0x9) (int) Block.device = '/dev/loop28p1' (string) StorageVolume.ignored = true (bool) StorageVolume.usage = 'Unused' (0x1) (enum) StorageVolume.fsType = '' (string) StorageVolume.label = 'MRKS' (string) StorageVolume.uuid = '' (string) StorageVolume.size = 1024 (0x400) (qulonglong) While the specific ISO image I'm using was created by a commercial software for a commercial product, according to the mkisofs man page, that can also be used to generate multi-partition ISO images with different HFS and Joliet views. `isoinfo -d` shows: CD-ROM is in ISO 9660 format System id: APPLE COMPUTER, INC., TYPE: 0002 Volume id: INSTALL Volume set id: NOT_SET Publisher id: Data preparer id: Application id: TOAST ISO 9660 BUILDER COPYRIGHT (C) 1997-2002 ROXIO, INC. - HAVE A NICE DAY 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: 319610 Joliet with UCS level 1 found NO Rock Ridge present Isolyzer output is as follows: <?xml version="1.0" ?> <isolyzer> <toolInfo> <toolName>isolyzer</toolName> <toolVersion>1.3.1</toolVersion> </toolInfo> <image> <fileInfo> <fileName>XXXXXXXXXXX.iso</fileName> <filePath>/home/odeda/Documents/XXXXXXXXXXX.iso</filePath> <fileSizeInBytes>654561280</fileSizeInBytes> <fileLastModified>Fri May 1 20:21:13 2020</fileLastModified> </fileInfo> <statusInfo> <success>True</success> </statusInfo> <sectorOffset>0</sectorOffset> <tests> <containsKnownFileSystem>True</containsKnownFileSystem> <sizeExpected>654561280</sizeExpected> <sizeActual>654561280</sizeActual> <sizeDifference>0</sizeDifference> <sizeDifferenceSectors>0.0</sizeDifferenceSectors> <sizeAsExpected>True</sizeAsExpected> <smallerThanExpected>False</smallerThanExpected> </tests> <fileSystems> <fileSystem TYPE="ISO 9660"> <primaryVolumeDescriptor> <typeCode>1</typeCode> <standardIdentifier>CD001</standardIdentifier> <version>1</version> <systemIdentifier>APPLE COMPUTER, INC., TYPE: 0002</systemIdentifier> <volumeIdentifier>INSTALL</volumeIdentifier> <volumeSpaceSize>319610</volumeSpaceSize> <volumeSetSize>1</volumeSetSize> <volumeSequenceNumber>1</volumeSequenceNumber> <logicalBlockSize>2048</logicalBlockSize> <pathTableSize>238</pathTableSize> <typeLPathTableLocation>19</typeLPathTableLocation> <optionalTypeLPathTableLocation>0</optionalTypeLPathTableLocation> <typeMPathTableLocation>20</typeMPathTableLocation> <optionalTypeMPathTableLocation>0</optionalTypeMPathTableLocation> <volumeSetIdentifier>NOT_SET</volumeSetIdentifier> <publisherIdentifier/> <dataPreparerIdentifier/> <applicationIdentifier>TOAST ISO 9660 BUILDER COPYRIGHT (C) 1997-2002 ROXIO, INC. - HAVE A NICE DAY</applicationIdentifier> <copyrightFileIdentifier/> <abstractFileIdentifier/> <bibliographicFileIdentifier/> <volumeCreationDateAndTime>2004/08/12, 14:34:59</volumeCreationDateAndTime> <volumeModificationDateAndTime>2004/08/12, 14:36:55</volumeModificationDateAndTime> <volumeExpirationDateAndTime/> <volumeEffectiveDateAndTime/> <fileStructureVersion>1</fileStructureVersion> </primaryVolumeDescriptor> </fileSystem> <fileSystem TYPE="HFS"> <appleZeroBlock> <signature>ER</signature> <blockSize>512</blockSize> <blockCount>1278438</blockCount> <deviceType>1</deviceType> <deviceID>1</deviceID> <driverData>0</driverData> <driverDescriptorCount>0</driverDescriptorCount> <driverDescriptorBlockStart>0</driverDescriptorBlockStart> <driverDescriptorBlockCount>0</driverDescriptorBlockCount> <driverDescriptorSystemType>0</driverDescriptorSystemType> </appleZeroBlock> <applePartitionMap> <signature>PM</signature> <numberOfPartitionEntries>2</numberOfPartitionEntries> <partitionBlockStart>1</partitionBlockStart> <partitionBlockCount>2</partitionBlockCount> <partitionName>MRKS</partitionName> <partitionType>Apple_partition_map</partitionType> <partitionLogicalBlockStart>0</partitionLogicalBlockStart> <partitionLogicalBlockCount>2</partitionLogicalBlockCount> <partitionFlags>51</partitionFlags> <bootCodeBlockStart>0</bootCodeBlockStart> <bootCodeSizeInBytes>0</bootCodeSizeInBytes> <bootCodeLoadAddress>0</bootCodeLoadAddress> <bootCodeJumpAddress>0</bootCodeJumpAddress> <bootCodeChecksum>0</bootCodeChecksum> <processorType/> </applePartitionMap> <applePartitionMap> <signature>PM</signature> <numberOfPartitionEntries>2</numberOfPartitionEntries> <partitionBlockStart>50738</partitionBlockStart> <partitionBlockCount>1227700</partitionBlockCount> <partitionName>Toast 5.2 HFS Optimizer</partitionName> <partitionType>Apple_HFS</partitionType> <partitionLogicalBlockStart>0</partitionLogicalBlockStart> <partitionLogicalBlockCount>1227700</partitionLogicalBlockCount> <partitionFlags>51</partitionFlags> <bootCodeBlockStart>0</bootCodeBlockStart> <bootCodeSizeInBytes>0</bootCodeSizeInBytes> <bootCodeLoadAddress>0</bootCodeLoadAddress> <bootCodeJumpAddress>0</bootCodeJumpAddress> <bootCodeChecksum>0</bootCodeChecksum> <processorType/> </applePartitionMap> <masterDirectoryBlock> <signature>BD</signature> <blockSize>61384</blockSize> <blockCount>10240</blockCount> <volumeName>XXXXXXXXXXX</volumeName> </masterDirectoryBlock> </fileSystem> </fileSystems> </image> </isolyzer>
Hello, First of all, the mountiso is just a frontend to `udisksctl` which means that if the iso is not mounted correctly, it is probably because of `udisksctl`. On my machine, I tried to create an HFS/Joliet iso image using `mkisofs`: ``` $ mkisofs -o test.iso -R -J -hfs test ``` where the `test` directory contains a single file. But I was not able to mount this iso using `udisksctl` (but `fuseiso` and `mount` worked). So I have the following questions: * Can you mount your iso file using only `udisksctl` commands? (you can use `udisksctl loop-setup -f image.iso` to create a loop device and `udisksctl mount --block-device /dev/loop1` to mount the loop device) * Could you provide an iso file with which I could reproduce your results? You can mail it to me directly at my email address if you want (kwon-young.choi@hotmail.fr)
(In reply to Kwon-Young Choi from comment #1) > First of all, the mountiso is just a frontend to `udisksctl` which means > that if the iso is not mounted correctly, it is probably because of > `udisksctl`. The issue is not with the "mount iso" feature - sorry about the confusion, specifically about the component chosen, I just don't know which other component to choose. The issue is what happens after "mount iso" completes its work - i.e. when clicking the newly attached device. As mentioned in the report - the same behavior is observed with other methods of "mounting an iso". > On my machine, I tried to create an HFS/Joliet iso image using `mkisofs`: ... > But I was not able to mount this iso using `udisksctl` (but `fuseiso` and > `mount` worked). I have the same issue as well - I have yet to manage to use mkisofs to create an ISO that `udisksctl` and/or Dolphin can successfully mount - i.e. make it appear in the "Devices" list in Dolphin, even though `solid-hardware5 list` does show a device (though it doesn't look correct in some ways, compared to a commercial ISO). I can mount the ISO manually using mount or fuseiso after using udisksctl (or Dolphin) but it is not the same behavior and even if I make a hybrid HFS ISO, mounting manually always goes for the Joliet/RockRdige file system. None the less, the problem I reported reproduces 100% with commercial ISOs that I have. > * Can you mount your iso file using only `udisksctl` commands? Yes, but only the second partition: after `loop-setup`, I have /dev/loop24, /dev/loop24p1 and /dev/loop24p2. with `sudo mount` I can mount either /dev/loop24 (Joliet/ISO9660 file system) or /dev/loop24p2 (HFS filesystem). I'm not sure what /dev/loop24p1 is - maybe the isolyzer or solid-hardware output from above has some clues. When using `udisksctl mount`, only /dev/loop24p2 successfully mounts. So I have a feeling this is indeed not a Dolphin problem but a udisks2 problem. > * Could you provide an iso file with which I could reproduce your results? > You can mail it to me directly at my email address if you want > (kwon-young.choi@hotmail.fr) It is commercial software, so I'm not sure that is a good idea, and it is also very large. I'll email you privately and we can discuss there.
(In reply to Oded Arbel from comment #2) > > > * Can you mount your iso file using only `udisksctl` commands? > > Yes, but only the second partition: after `loop-setup`, I have /dev/loop24, > /dev/loop24p1 and /dev/loop24p2. with `sudo mount` I can mount either > /dev/loop24 (Joliet/ISO9660 file system) or /dev/loop24p2 (HFS filesystem). > I'm not sure what /dev/loop24p1 is - maybe the isolyzer or solid-hardware > output from above has some clues. When using `udisksctl mount`, only > /dev/loop24p2 successfully mounts. So I have a feeling this is indeed not a > Dolphin problem but a udisks2 problem. Could you share the output of the following commands: ``` $ udisksctl info --block-device /dev/loop24 $ udisksctl info --block-device /dev/loop24p1 $ udisksctl info --block-device /dev/loop24p2 ``` `udisksctl` has often more detailed informations than `solid-hardware`. From what I understand of `udisksctl`, /dev/loop24 represent the partition table of the image and each additional loop device loop24p1, loop24p2 represent an different partition. I found this issue at the udisks project page: https://github.com/storaged-project/udisks/issues/725 but I am not sure if it is the exact same problem. For now, I think it is fair to say that this is a problem coming from udisks and maybe you could add a comment on that udisks issue thread. > > * Could you provide an iso file with which I could reproduce your results? > > You can mail it to me directly at my email address if you want > > (kwon-young.choi@hotmail.fr) > > It is commercial software, so I'm not sure that is a good idea, and it is > also very large. I'll email you privately and we can discuss there. Since I'm a new contributor and you do not know me, I 100% understand that. Moreover, I might not be the best person to help you since I don't know a lot about this stuff. I guess the other solution would be to switch to from udisks to another tool like fuseiso, but that would be a enormous amount of work.
(In reply to Kwon-Young Choi from comment #3) > Could you share the output of the following commands: $ udisksctl loop-setup -r -f 'XXXXXXXX.iso' Mapped file XXXXXXXX.iso as /dev/loop36. $ udisksctl info --block-device /dev/loop36 /org/freedesktop/UDisks2/block_devices/loop36: org.freedesktop.UDisks2.Block: Configuration: [] CryptoBackingDevice: '/' Device: /dev/loop36 DeviceNumber: 1828 Drive: '/' HintAuto: false HintIconName: HintIgnore: false HintName: HintPartitionable: true HintSymbolicIconName: HintSystem: true Id: IdLabel: INSTALL IdType: iso9660 IdUUID: 2004-08-12-14-36-55-00 IdUsage: filesystem IdVersion: Joliet Extension MDRaid: '/' MDRaidMember: '/' PreferredDevice: /dev/loop36 ReadOnly: true Size: 654561280 Symlinks: /dev/disk/by-label/INSTALL /dev/disk/by-uuid/2004-08-12-14-36-55-00 UserspaceMountOptions: org.freedesktop.UDisks2.Loop: Autoclear: false BackingFile: /home/odeda/XXXXXXXX/XXXXXXXX.iso SetupByUID: 1000 org.freedesktop.UDisks2.PartitionTable: Partitions: ['/org/freedesktop/UDisks2/block_devices/loop36p1', '/org/freedesktop/UDisks2/block_devices/loop36p2'] Type: mac $ udisksctl info --block-device /dev/loop36p1 /org/freedesktop/UDisks2/block_devices/loop36p1: org.freedesktop.UDisks2.Block: Configuration: [] CryptoBackingDevice: '/' Device: /dev/loop36p1 DeviceNumber: 66313 Drive: '/' HintAuto: false HintIconName: HintIgnore: false HintName: HintPartitionable: true HintSymbolicIconName: HintSystem: true Id: IdLabel: IdType: IdUUID: IdUsage: IdVersion: MDRaid: '/' MDRaidMember: '/' PreferredDevice: /dev/loop36p1 ReadOnly: true Size: 1024 Symlinks: UserspaceMountOptions: org.freedesktop.UDisks2.Partition: Flags: 0 IsContained: false IsContainer: false Name: MRKS Number: 1 Offset: 512 Size: 1024 Table: '/org/freedesktop/UDisks2/block_devices/loop36' Type: Apple_partition_map UUID: $ udisksctl info --block-device /dev/loop36p2 /org/freedesktop/UDisks2/block_devices/loop36p2: org.freedesktop.UDisks2.Block: Configuration: [] CryptoBackingDevice: '/' Device: /dev/loop36p2 DeviceNumber: 66314 Drive: '/' HintAuto: false HintIconName: HintIgnore: false HintName: HintPartitionable: true HintSymbolicIconName: HintSystem: true Id: IdLabel: XXXXXXXX Install IdType: hfs IdUUID: dbd5a3ea-5614-384e-8d15-045117946523 IdUsage: filesystem IdVersion: MDRaid: '/' MDRaidMember: '/' PreferredDevice: /dev/loop36p2 ReadOnly: true Size: 628582400 Symlinks: /dev/disk/by-label/XXXXXXXX\x20Install /dev/disk/by-uuid/dbd5a3ea-5614-384e-8d15-045117946523 UserspaceMountOptions: org.freedesktop.UDisks2.Filesystem: MountPoints: Size: 0 org.freedesktop.UDisks2.Partition: Flags: 0 IsContained: false IsContainer: false Name: Toast 5.2 HFS Optimizer Number: 2 Offset: 25977856 Size: 628582400 Table: '/org/freedesktop/UDisks2/block_devices/loop36' Type: Apple_HFS UUID: > I found this issue at the udisks project page: > https://github.com/storaged-project/udisks/issues/725 but I am not sure if > it is the exact same problem. I will review. Thank you. > I guess the other solution would be to switch to from udisks to another tool > like fuseiso, but that would be a enormous amount of work. yea, that does not seem very feasible. IMO fixing udisks is the way to go. If the above linked issue is not relevant, I'll open a new ticket there. Do you think this bug report should be closed? or would you rather have it open and blocking on a possible update from udisks?
Thanks for your additional input. For now, I'll mark this bug as resolved and add a link to the udisks issue. If you happen to open a new issue, let me know so that I can update the url.