{"id":30526892,"url":"https://github.com/linux-apfs/linux-apfs-rw","last_synced_at":"2026-01-30T23:13:57.966Z","repository":{"id":38838961,"uuid":"353501030","full_name":"linux-apfs/linux-apfs-rw","owner":"linux-apfs","description":"APFS module for linux, with experimental write support","archived":false,"fork":false,"pushed_at":"2025-11-26T21:32:10.000Z","size":1025,"stargazers_count":690,"open_issues_count":8,"forks_count":44,"subscribers_count":19,"default_branch":"master","last_synced_at":"2025-11-29T17:02:15.933Z","etag":null,"topics":["apfs","filesystem","linux"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/linux-apfs.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":"https://www.paypal.me/eafer"}},"created_at":"2021-03-31T22:01:04.000Z","updated_at":"2025-11-28T08:00:21.000Z","dependencies_parsed_at":"2023-02-16T15:00:51.792Z","dependency_job_id":"b11f2a99-59c7-4e4b-97ca-4355e056fd4f","html_url":"https://github.com/linux-apfs/linux-apfs-rw","commit_stats":{"total_commits":200,"total_committers":11,"mean_commits":"18.181818181818183","dds":"0.11499999999999999","last_synced_commit":"b5a2f9fb6208b4d08d367ecf53d999f5420a244a"},"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/linux-apfs/linux-apfs-rw","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linux-apfs%2Flinux-apfs-rw","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linux-apfs%2Flinux-apfs-rw/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linux-apfs%2Flinux-apfs-rw/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linux-apfs%2Flinux-apfs-rw/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/linux-apfs","download_url":"https://codeload.github.com/linux-apfs/linux-apfs-rw/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linux-apfs%2Flinux-apfs-rw/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28922525,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-30T22:32:35.345Z","status":"ssl_error","status_checked_at":"2026-01-30T22:32:31.927Z","response_time":66,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apfs","filesystem","linux"],"created_at":"2025-08-27T01:03:27.153Z","updated_at":"2026-01-30T23:13:57.961Z","avatar_url":"https://github.com/linux-apfs.png","language":"C","readme":"===========================\nApple File System for Linux\n===========================\n\nThe Apple File System (APFS) is the copy-on-write filesystem currently used on\nall Apple devices. This module provides a degree of experimental support on\nLinux. It's intended to work with all kernel versions since 4.12, but testing\nis focused on 5.18 and above.\n\nTo help test write support, a set of userland tools is also under development.\nThe git tree can be retrieved from https://github.com/eafer/apfsprogs.git.\n\nKnown limitations\n=================\n\nThis module is the result of reverse engineering and testing has been limited.\nIf you make use of the write support, there is a real risk of data corruption,\nso mounts are read-only by default. Please report any issues that you find.\n\nWrites to fusion drives will likely never be supported, though I might\nreconsider this if people actually need it. Encryption is not yet implemented\neven in read-only mode.\n\nReporting bugs\n==============\n\nIf you encounter any problem, the first thing you should do is run (as root)::\n\n\tdmesg | grep -i apfs\n\nto see all the error messages. If that doesn't help you, please file a github\nissue at https://github.com/eafer/linux-apfs-rw/issues. Or send me an email if\nyou prefer.\n\nBuild\n=====\n\nNote that at this point the driver has been packaged for several distros, so\nit may be more convenient to install it from there instead of building it\nyourself. The distro packages are often outdated though, so be sure to check\nthe version.\n\nIn order to build a module out-of-tree, you will first need the Linux kernel\nheaders. Depending on your distro, you can get them by running (as root)::\n\n\t# Debian/Ubuntu\n\tapt-get install linux-headers-$(uname -r)\n\n\t# Arch/Manjaro\n\tpacman -Sy linux-headers\n\n\t# RHEL/Rocky/CentOS/Fedora\n\tyum install kernel-headers kernel-devel\n\nNow you can just cd to the linux-apfs-rw directory and run::\n\n\tmake\n\nThe resulting module is the apfs.ko file. Before you can use it you must insert\nit into the kernel, as well as its dependencies. Again as root::\n\n\tmodprobe libcrc32c\n\tinsmod apfs.ko\n\nMount\n=====\n\nLike all filesystems, apfs is mounted with::\n\n\tmount [-o options] device dir\n\nwhere ``device`` is the path to your device file or filesystem image, and\n``dir`` is the mount point. The following options are accepted:\n\n============   =================================================================\nvol=n\t       Volume number to mount. The default is volume 0.\n\nsnap=label     Volume snapshot to mount (in read-only mode).\n\ntier2=path     Path to the tier 2 device. For fusion drives only.\n\nuid=n, gid=n   Override on-disk inode ownership data with given uid/gid.\n\ncknodes\t       Verify the checksum on all metadata nodes. Right now this has a\n\t       severe performance cost, so it's not recommended.\n\nreadwrite      Enable the experimental write support. This may corrupt your\n\t       container.\n============   =================================================================\n\nSo for instance, if you want to mount volume number 2, and you want the metadata\nto be checked, you should run (as root)::\n\n\tmount -o cknodes,vol=2 device dir\n\nTo unmount it, run::\n\n\tumount dir\n\nCredits\n=======\n\nOriginally written by Ernesto A. Fernández \u003cernesto@corellium.com\u003e, with\nseveral contributions from Gabriel Krisman Bertazi \u003ckrisman@collabora.com\u003e,\nArnaud Ferraris \u003carnaud.ferraris@collabora.com\u003e and Stan Skowronek\n\u003cskylark@disorder.metrascale.com\u003e. For attribution details see the historical\ngit tree at https://github.com/eafer/linux-apfs.git.\n\nWork was first based on reverse engineering done by others [1]_ [2]_, and later\non the (very incomplete) official specification [3]_. Some parts of the code\nimitate the ext2 module, and to a lesser degree xfs, udf, gfs2 and hfsplus.\n\n.. [1] Hansen, K.H., Toolan, F., Decoding the APFS file system, Digital\n   Investigation (2017), https://dx.doi.org/10.1016/j.diin.2017.07.003\n.. [2] https://github.com/sgan81/apfs-fuse\n.. [3] https://developer.apple.com/support/apple-file-system/Apple-File-System-Reference.pdf\n","funding_links":["https://www.paypal.me/eafer"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinux-apfs%2Flinux-apfs-rw","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flinux-apfs%2Flinux-apfs-rw","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinux-apfs%2Flinux-apfs-rw/lists"}