All Projects → linux-apfs → linux-apfs-rw

linux-apfs / linux-apfs-rw

Licence: GPL-2.0 license
APFS module for linux, with experimental write support

Programming Languages

c
50402 projects - #5 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to linux-apfs-rw

apfs-clone-checker
An utility to check if two files are clones in macOs APFS.
Stars: ✭ 30 (-84.21%)
Mutual labels:  filesystem, apfs
paragon apfs sdk ce
Paragon APFS SDK Free
Stars: ✭ 97 (-48.95%)
Mutual labels:  filesystem, apfs
apfs
Package apfs implements an Apple File System(apfs) bindings for Go
Stars: ✭ 30 (-84.21%)
Mutual labels:  filesystem, apfs
gcsfs
Google Cloud Storage filesystem for PyFilesystem2
Stars: ✭ 36 (-81.05%)
Mutual labels:  filesystem
ansible-role-glusterfs
Ansible Role - GlusterFS
Stars: ✭ 95 (-50%)
Mutual labels:  filesystem
sandboxed-fs
Sandboxed Wrapper for Node.js File System API
Stars: ✭ 41 (-78.42%)
Mutual labels:  filesystem
whichpm
Locates installed Perl modules.
Stars: ✭ 20 (-89.47%)
Mutual labels:  filesystem
MeowDB.js
Database in JSON (Node.JS Library)
Stars: ✭ 12 (-93.68%)
Mutual labels:  filesystem
core
An advanced and highly optimized Java library to build frameworks: it's useful for scanning class paths, generating classes at runtime, facilitating the use of reflection, scanning the filesystem, executing stringified source code and much more...
Stars: ✭ 100 (-47.37%)
Mutual labels:  filesystem
VBCorLib
The VBCorLib framework brings many of the powerful .NET classes to VB6.
Stars: ✭ 81 (-57.37%)
Mutual labels:  filesystem
exuberant
React filesystem renderer
Stars: ✭ 52 (-72.63%)
Mutual labels:  filesystem
ModernOperatingSystems AndrewTanenbaum
My notes after reading 'Modern Operating Systems' book by Andrew Tanenbaum and Herbert Bos.
Stars: ✭ 71 (-62.63%)
Mutual labels:  filesystem
diskspace
macOS command line tool to return the available disk space on APFS volumes
Stars: ✭ 123 (-35.26%)
Mutual labels:  apfs
cpmtools
Tools to access CP/M file systems (forked)
Stars: ✭ 29 (-84.74%)
Mutual labels:  filesystem
chicon-rs
A file abstraction system for Rust
Stars: ✭ 55 (-71.05%)
Mutual labels:  filesystem
encfs4win
Windows port of EncFS
Stars: ✭ 356 (+87.37%)
Mutual labels:  filesystem
go-fsimpl
Go io/fs.FS filesystem implementations for various URL schemes
Stars: ✭ 225 (+18.42%)
Mutual labels:  filesystem
fat32
[New Version] This is FAT32 FileSystem Library, which is #![no_std] and does not use alloc.
Stars: ✭ 25 (-86.84%)
Mutual labels:  filesystem
vk-music-fs
FUSE file system for VK audios
Stars: ✭ 34 (-82.11%)
Mutual labels:  filesystem
itree
Interactive tree command for file system navigation
Stars: ✭ 18 (-90.53%)
Mutual labels:  filesystem

Apple File System for Linux

The Apple File System (APFS) is the copy-on-write filesystem currently used on all Apple devices. This module provides a degree of experimental support on Linux.

It's supposed to work with a range of kernel versions starting at 4.9 or before, but only a few of those have actually been tested. Also, kernel versions below 4.12 will be slower for some operations. If you run into any problem, please send a report to <[email protected]> or file a github issue at https://github.com/eafer/linux-apfs-rw/issues.

To help test write support, a set of userland tools is also under development. The git tree can be retrieved from https://github.com/eafer/apfsprogs.git.

Known limitations

This module is the result of reverse engineering and testing has been limited. If you make use of the write support, expect data corruption. Please report any issues that you find, but I can't promise a quick resolution at this stage.

Many features are not yet implemented, including encryption and most forms of compression.

Build

In order to build a module out-of-tree, you will first need the Linux kernel headers. Depending on your distro, you can get them by running (as root):

# Debian/Ubuntu
apt-get install linux-headers-$(uname -r)

# Arch/Manjaro
pacman -Sy linux-headers

# RHEL/Rocky/CentOS/Fedora
yum install kernel-headers kernel-devel

Now you can just cd to the linux-apfs-rw directory and run:

make

The resulting module is the apfs.ko file. Before you can use it you must insert it into the kernel, as well as its dependencies. Again as root:

modprobe libcrc32c
insmod apfs.ko

Mount

Like all filesystems, apfs is mounted with:

mount [-o options] device dir

where device is the path to your device file or filesystem image, and dir is the mount point. The following options are accepted:

vol=n Volume number to mount. The default is volume 0.
uid=n, gid=n Override on-disk inode ownership data with given uid/gid.
cknodes Verify the checksum on all metadata nodes. Right now this has a severe performance cost, so it's not recommended.
readwrite Enable the experimental write support. This will corrupt your container.

So for instance, if you want to mount volume number 2, and you want the metadata to be checked, you should run (as root):

mount -o cknodes,vol=2 device dir

To unmount it, run:

umount dir

Credits

Originally written by Ernesto A. Fernández <[email protected]>, with several contributions from Gabriel Krisman Bertazi <[email protected]>, Arnaud Ferraris <[email protected]> and Stan Skowronek <[email protected]>. For attribution details see the historical git tree at https://github.com/eafer/linux-apfs.git.

Work was first based on reverse engineering done by others [1] [2], and later on the (very incomplete) official specification [3]. Some parts of the code imitate the ext2 module, and to a lesser degree xfs, udf, gfs2 and hfsplus.

[1]Hansen, K.H., Toolan, F., Decoding the APFS file system, Digital Investigation (2017), https://dx.doi.org/10.1016/j.diin.2017.07.003
[2]https://github.com/sgan81/apfs-fuse
[3]https://developer.apple.com/support/apple-file-system/Apple-File-System-Reference.pdf
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].