3 releases
0.2.3 | Oct 9, 2023 |
---|---|
0.2.2 |
|
0.2.1 | Sep 18, 2023 |
0.2.0 | Sep 4, 2023 |
#734 in Filesystem
115KB
2.5K
SLoC
cdfs
ISO 9660 / ECMA-119 filesystem implementation written in Rust. It's still very much a work-in-progress. The project overview lives at Sourcehut:
Usage
See the examples directory and the documentation for more information on how to use the cdfs
library in your project.
If you're just interested in using cdfs
to mount an ISO, there's a FUSE implementation included.
To install locally:
$ cargo install cdfs
…
Compiling cdfs v0.2.2
Finished release [optimized] target(s) in 21.97s
Installing /home/user/.cargo/bin/cdfs_fuse
Installed package `cdfs v0.2.2` (executable `cdfs_fuse`)
$ cdfs_fuse images/rockridge.iso mountpoint/
2023-09-06T00:00:00.203Z INFO [cdfs_fuse] NOTE: The filesystem must be manually unmounted after exit
2023-09-06T00:00:00.206Z INFO [cdfs_fuse] Found POSIX.1 extensions with usable inodes.
2023-09-06T00:00:00.206Z INFO [fuser::session] Mounting mountpoint/
Or run cdfs
directly from the repository like so:
$ cargo run -- images/rockridge.iso mountpoint/
Finished dev [unoptimized + debuginfo] target(s) in 0.15s
Running `target/debug/cdfs_fuse`
2023-09-06T00:00:00.203Z INFO [cdfs_fuse] NOTE: The filesystem must be manually unmounted after exit
2023-09-06T00:00:00.206Z INFO [cdfs_fuse] Found POSIX.1 extensions with usable inodes.
2023-09-06T00:00:00.206Z INFO [fuser::session] Mounting mountpoint/
…
Supported ISO 9660 Extensions
System Use Sharing Protocol | |
---|---|
CE – continuation area |
yes |
PD – padding field |
no |
SP – SUSP start |
not enforced |
ST – SUSP end |
ignored |
ER – extensions reference |
yes |
ES – extensions selector |
no |
Rock Ridge Interchange | |
---|---|
PX – POSIX attributes |
yes |
PN – POSIX inodes |
yes |
SL – symbolic links |
yes |
NM – long file names |
yes |
CL – child links |
yes |
PL – parent links |
N/A |
RE – relocated directories |
yes |
TF – file timestamps |
yes |
SF – sparse files |
no |
References
- ECMA-119 standard
- ISO 9660 on the OSDev wiki
- Joliet
- Linux kernel isofs module
- Rock Ridge v1.12
- Rock Ridge v1.10
- Rock Ridge v1.09
- Wikipedia article on ISO 9660
Licensing
This project is available under the Apache 2.0 or MIT license at your choosing.
Dependencies
~8–19MB
~264K SLoC