Hi,
exerceo wrote:
> Rock Ridge [...] does not get past the 2 GB limit of ISO9660
There is no such limit in the ISO 9660 / ECMA-119 specification.
(2 GiB was an old Linux limit when file size was stored in signed
32 bit integers.)
The limit of "Level of interchange" 1 and 2 is 4 GiB - 1.
The limit for level 3 is the maximum size of an ISO 9660 filesystem,
i.e. nearly 8 TiB. This is achieved by having multiple directory records
for the same file name (aka multi-extent).
(Released xorriso has a filesystem limit of 4 TiB because of libburn
and own use of 32 bit signed integers. This will be raised to the
theoretical maximum of 8 TiB in the next release.)
Mounting and reading level 3 is supported at least by Linux and by
MS-Windows. If the operating system does not support multiple extents
then xorriso can still copy multi-extent files out of the ISO filesystem.
xorriso in its native command mode enables level 3 by default.
For its mkisofs emulation it uses the traditional default 1, which can
be overriden by option [code] -iso--level 3[code].
> According to https://en.wikipedia.org/wiki/ISO_9660#Directories_and_files
> the limit is 4.2 GB
No. It mentions 4.2 GB as limit for a single extent:
"* Level 3: [...] Files are also allowed to consist of multiple
non-contiguous sections (with some restrictions as to order).
[...]
As the length of a file's extent on disc is stored in a 32 bit value,
it allows for a maximum length of just over 4.2 GB (more precisely, one
byte less than 4 GiB). It is possible to circumvent this limitation
by using the multi-extent (fragmentation) feature of ISO 9660 Level 3
to create ISO 9660 file systems and single files up to 8 TB. With this,
files larger than 4 GiB can be split up into multiple extents
(sequential series of sectors), each not exceeding the 4 GiB limit.
For example, the free software such as [...] mkisofs [...] are able
to create ISO 9660 file systems that use multi-extent files to store
files larger than 4 GiB on appropriate media such as recordable DVDs.
[...] Linux supports multiple extents."
> In other words, you can not have both files over 2 GB and multisession.
You are invited to try:
Code:
# To address a DVD or Blu-ray dive as target device do:
iso=/dev/sr0
# But before using slow optical media, try with an image file on fast disk.
# (Make sure this file does not exist yet.)
iso=/...some.large.filesystem.../test.iso
# Choose some large test files
file1=/.../some_large_file
file2=/.../some_other_large_file
# Write first session
test -e "$iso" && rm "$iso"
xorriso -outdev "$iso" -map "$file1" /file1
# Write second session
xorriso -dev "$iso" -map "$file2" /file2
# Mount on a GNU/Linux system
mount_point=/mnt/iso
sudo mount "$iso" "$mount_point"
ls -l "$mount_point"
You will see /mnt/iso/file1 and /mnt/iso/file2 with their large sizes
(as long as they are below 4 TiB, that is). Use "wc" to count their
bytes if you do not believe the sizes given by "ls -l".
Have a nice day

Thomas