Sortix
Sortix Download Manual Development Source Code News Blog More
current nightly

Sortix nightly manual

This manual documents Sortix nightly, a development build that has not been officially released. You can instead view this document in the latest official manual.

NAME

iso9660fs — iso 9660 filesystem driver

SYNOPSIS

iso9660fs [-bf] [-o mount-options] [-p path] device mountpoint

DESCRIPTION

iso9660fs mounts the ISO 9660 aka ECMA-119 filesystem on the device for reading at the mountpoint. iso9660fs forks and runs in the background once the filesystem has been mounted.
A compatible ISO 9660 filesystem can be created using xorriso(1). Filesystems can be automatically mounted by init(8) on boot by creating an entry in fstab(5) with the iso9660 type.
iso9660fs implements the System Use Sharing Protocol that allows extensions such as Rock Ridge.
iso9660fs implements the Rock Ridge 1.10 and 1.12 extensions that provide POSIX metadata, such as long file names with arbitary characters, deep directory hiearchies, permissions, owner and group metadata, special files, hard links, symbolic links, multiple timestamps with 10 ms precision until year 9999, and more. Sparse files are not implemented.
The options are as follows:
-b, --background
Run in the background in a subprocess after successfully mounting. This is the default behavior.
-f, --foreground
Run in the foreground and do not detach in a subprocess.
-o mount-options
Mount the filesystem with the following comma-separated mount-options:
cache=size
Sets the filesystem cache to the specified size, which is measured in an optional suffix: % for percent of system memory, K for KiB, M for MiB, or G for GiB. The default is 10% of the system memory.
nosusp
Disable the System Use Share Protocol and therefore Rock Ridge.
norock
Disable the Rock Ridge extensions.
ro
Mount the filesystem as read-only. This option is the default behavior and write support is not possible.
-p, --pretend-mount-path=path
When answering requests about where the filesystem is mounted, reply with this path instead of the actual mountpoint in tcgetblob(2). This behavior is useful for chroot(2) environments.
The following identifiers are available to recognize a filesystem in fstab(5) in the fs_spec field and can be queried with the disked(8) id command:
LABEL=label
Search for a filesystem with this label as the volume identifier.
ABSTRACT_ID=value
Search for a filesystem with this value as the abstract file id.
APPLICATION_ID=value
Search for a filesystem with this value as the application id.
BIBLIOGRAPHIC_ID=value
Search for a filesystem with this value as the bibliographic file id.
COPYRIGHT_ID=value
Search for a filesystem with this value as the copyright file id.
DATA_PREPARER_ID=value
Search for a filesystem with this value as the data preparer id.
PUBLISHER_ID=value
Search for a filesystem with this value as the publisher id.
VOLUME_SET_ID=value
Search for a filesystem with this value as the volume set id. This identifier may be a good choice for the filesystem search if it has been set to a unique value.
SYSTEM_ID=value
Search for a filesystem with this value as the system id that can interpret the boot data.
UUID=creation-time
Search for a filesystem with this creation-time in the YYYY-MM-DD-HH-MM-SS-CC format, without respecting the time zone field. uuid. This identifier is generally recommended for filesystem searches to avoid mounting the wrong filesystem, but may not be unique, and another identifier may be better suited depending on the volume.

IMPLEMENTATION NOTES

If -f, then iso9660fs signals readiness when it has successfully mounted the filesystem.
The System Use Sharing Protocol continuation areas are limited to 32 blocks.

ASYNCHRONOUS EVENTS

SIGTERM
Request daemon termination. iso9660fs will exit after gracefully unmounting the filesystem.

EXIT STATUS

If -b, iso9660fs exits 0 after successfully mounting the filesystem and serving requests in a background process.
If -f, iso9660fs signals readiness on the READYFD file descriptor when filesystem has been mounted, and continues running in the same process.
iso9660fs runs as a daemon(7) until stopped by SIGTERM or until the filesystem is unmounted with unmount(8) or unmount(2), after which iso9660fs exits 0 if the filesystem was cleanly unmounted.
iso9660fs exits non-zero on fatal errors.

EXAMPLES

$ iso9660fs /dev/foo0 /mnt 
$ ls /mnt 
$ unmount /mnt

SEE ALSO

xorriso(1), fstab(5), disked(8), init(8), unmount(8)

STANDARDS

Volume and File Structure of CD-ROM for Information Interchange, ISO International Organization for Standardization, ISO/IEC 9660:2023, ISO/IEC JTC 1/SC 23, 2023.
Volume and File Structure of CDROM for Information Interchange, Ecma International, ECMA-119 5th Edition, December 2024.
System Use Sharing Protocol, Institute of Electrical and Electronics Engineers, IEEE P1281 1.12, IEEE CD-ROM File System Format Working Group, July 8, 1994.
Rock Ridge Interchange Protocol, Institute of Electrical and Electronics Engineers, IEEE P1282 1.12, IEEE CD-ROM File System Format Working Group, July 8, 1994.

BUGS

Hard links are not perfectly implemented, as the different directory entries have different inode numbers due to current technical limitations.
Multiple sessions are not supported yet due to no driver support.
Multiple file extents are not supported.
Rock Ridge sparse files are not implemented. This lack of support matches xorriso(1).
Interleaved files via the Interleave Gap Size and File Unit Size are not implemented. This lack of support matches xorriso(1).
readdir(2) runs in O(n) linear time, which takes O(n^2) quadratic time when reading a full directory.
ISO 9660 Extended Attributes are not implemented, as Rock Ridge provides the needed features.
The Rock Ridge long form timestamps have a four digit year field and will overflow in the year 10000. If this extension is not used, the timestamps use a byte count since the year 1970 and will overflow in the year 2156.
The owner and group values are limited to 32-bit.
The logical sector size must be 2048 bytes. Supporting other sector sizes would require searching multiple offsets for the sector size used by the filesystem, which might not match the underlying device.
Copyright 2011-2025 Jonas 'Sortie' Termansen and contributors.
Sortix's source code is free software under the ISC license.
#sortix on irc.sortix.org
@sortix_org