{"id":16822172,"url":"https://github.com/mborgerson/fatx","last_synced_at":"2025-04-10T02:20:55.056Z","repository":{"id":36118889,"uuid":"40421452","full_name":"mborgerson/fatx","owner":"mborgerson","description":"Original Xbox FATX Filesystem Library, Python bindings, FUSE driver, and GUI explorer","archived":false,"fork":false,"pushed_at":"2023-06-08T19:09:15.000Z","size":267,"stargazers_count":107,"open_issues_count":14,"forks_count":21,"subscribers_count":12,"default_branch":"master","last_synced_at":"2024-03-15T11:52:15.046Z","etag":null,"topics":["fatx","filesystem","fuse","python","qt","xbox"],"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/mborgerson.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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}},"created_at":"2015-08-09T01:22:10.000Z","updated_at":"2024-02-19T04:57:39.000Z","dependencies_parsed_at":"2024-10-13T11:01:39.382Z","dependency_job_id":"c6db8b5f-1f7d-41ae-a3f6-070d6e686ea6","html_url":"https://github.com/mborgerson/fatx","commit_stats":{"total_commits":88,"total_committers":6,"mean_commits":"14.666666666666666","dds":0.3522727272727273,"last_synced_commit":"b24d9a64bad50c1d5994ce7b9d3398a7ea18c69a"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mborgerson%2Ffatx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mborgerson%2Ffatx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mborgerson%2Ffatx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mborgerson%2Ffatx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mborgerson","download_url":"https://codeload.github.com/mborgerson/fatx/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248143101,"owners_count":21054706,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["fatx","filesystem","fuse","python","qt","xbox"],"created_at":"2024-10-13T11:01:26.954Z","updated_at":"2025-04-10T02:20:55.023Z","avatar_url":"https://github.com/mborgerson.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"fatx\n====\n\nOriginal Xbox FATX Filesystem Library, Python bindings, FUSE driver, and GUI explorer.\n\n* [**libfatx**](#libfatx) is a C library for working with the FATX filesystem, a variant of FAT16/32 developed by Microsoft for the original Xbox console.\n* [**fatxfs**](#fatxfs) is a [FUSE driver](https://en.wikipedia.org/wiki/Filesystem_in_Userspace) built using libfatx.\n* [**pyfatx**](#pyfatx) is a Python module providing bindings to libfatx.\n* [**gfatx**](#gfatx) is a graphical utility for working with FATX disk images, built around libfatx.\n\nlibfatx\n-------\n**libfatx** provides both read and write access to FATX filesystems, and formatting disks. Large disks are supported via F partition.\n\nfatxfs\n------\nA [FUSE userspace filesystem driver](https://en.wikipedia.org/wiki/Filesystem_in_Userspace) built using libfatx that enables you to mount a FATX filesystem on your host system and interact with it using your typical system tools. Works on Linux and macOS. Other platform support is possible, but untested.\n\n### Build via Docker\nfatxfs can be easily built inside a [Docker](https://www.docker.com/) container. If you use this method, you can skip the prerequisites and build instructions below.\n\n    $ git clone https://github.com/mborgerson/fatx\n    $ docker build -t fatxfs .\n    $ docker run -it --rm -v $PWD:/work -w /work --device /dev/fuse --privileged fatxfs\n    # mkdir c\n    # fatxfs xbox.img c\n    # ls c\n\n### How to Build (Natively)\n#### Prerequisites\n\n##### Ubuntu\nAssuming you already have typical build tools installed, install FUSE and CMake:\n\n    $ sudo apt-get install libfuse-dev cmake pkg-config\n\n##### macOS\nDownload Xcode (available from the App Store) to get command line tools.\n\nAssuming you have homebrew installed, install `pkgconfig` and `cmake`:\n\n    $ brew install pkgconfig cmake macfuse\n\n#### Download Source\nClone the repository:\n\n    $ git clone https://github.com/mborgerson/fatx \u0026\u0026 cd fatx\n\n#### Build\nCreate a build directory and run `cmake` to construct the Makefiles:\n\n    $ mkdir build \u0026\u0026 cd build\n    $ cmake ..\n\nFinally, start the build:\n\n    $ make\n\n### How to Use\nFirstly, you will need a raw disk image or block device to mount. Then, you can simply create a mountpoint and mount the \"C drive\" (default behavior). For example:\n\n    $ cd fatxfs\n    $ mkdir c_drive\n    $ ./fatxfs /dev/nbd0 c_drive\n    $ ls c_drive\n\nYou can specify the drive letter of the partition to mount:\n\n    $ ./fatxfs /dev/nbd0 e_drive --drive=e\n\nOr, you can specify the offset and size of the partition manually:\n\n    $ ./fatxfs /dev/nbd0 c_drive --offset=0x8ca80000 --size=0x01f400000\n\n### Tips\n#### Mounting a qcow Image\nIf your disk image is a [qcow](https://en.wikipedia.org/wiki/Qcow) image, you can mount it as a network block device before mounting a partition on the device:\n\n    $ sudo apt-get install qemu-utils\n    $ sudo modprobe nbd max_part=8\n    $ sudo qemu-nbd --connect=/dev/nbd0 /path/to/your/image.qcow2\n    $ sudo chmod a+rwx /dev/nbd0\n\nUnfortunately, on macOS, there is not a way to mount a qcow image like this (AFAIK). I recommend converting the qcow image to a raw disk image.\n\n    $ qemu-img convert /path/to/image.qcow /path/to/output.raw\n\n#### Logging\nFor debug purposes, you can have `fatxfs` log operations to a file given by the\n`--log` option. You can control the amount of output using the `--loglevel`\noption.\n\npyfatx\n------\n[![pypi](https://img.shields.io/pypi/v/pyfatx)](https://pypi.org/project/pyfatx/)\n\nA Python module providing bindings to libfatx. Wheels are provided for Windows and Linux.\n\nThe latest release of pyfatx can be installed via:\n\n    pip install pyfatx\n\nYou can install the latest version from source with:\n\n    pip install git+https://github.com/mborgerson/fatx\n\npyfatx provides a module with some helpful utilities, like listing drive contents and extracting a filesystem, e.g. a filesystem can be extracted with:\n\n    python -m pyfatx -x ./path/to/disk.img\n\ngfatx\n-----\n\nA graphical utility for working with FATX disk images, built around libfatx.\n\nNote: This tool is in a very early state, and only has the functionality to browse filesystems in a disk at the moment.\n\n![gfatx](screenshots/gfatx.png)\n\n### Build on Ubuntu\n```\nsudo apt install qt5-default\ncd /path/to/fatx\nmkdir build\ncd build\ncmake ..\nmake gfatx\n```\n\n### Build on Windows\n* Install Visual Studio 2019 Community\n* Install Qt 5.15.2. I recommend using the Qt open source online installer.\n* From Start menu, launch a \"Qt 5.15.2 + MSVC 2019\" command prompt\n\n```\n\"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Auxiliary\\Build\\vcvars32.bat\" amd64\ncd C:\\path\\to\\fatx\nmkdir build\ncd build\ncmake ..\ncmake --build . --target gfatx\n```\n\n### Build on macOS\n```\nbrew install pkgconfig qt@5\nexport PATH=\"/usr/local/opt/qt@5/bin:$PATH\"\nexport LDFLAGS=\"-L/usr/local/opt/qt@5/lib\"\nexport CPPFLAGS=\"-I/usr/local/opt/qt@5/include\"\nexport PKG_CONFIG_PATH=\"/usr/local/opt/qt@5/lib/pkgconfig\"\ncd /path/to/fatx\nmkdir build\ncd build\ncmake --build . --target gfatx\n```\n\nLicense\n-------\n\n    Copyright (C) 2015  Matt Borgerson\n\n    This program is free software; you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation; either version 2 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with this program.  If not, see \u003chttp://www.gnu.org/licenses/\u003e.\n\nCredit\n------\nThis project was made possible in part by the research done by Andrew de Quincey, Lucien Murray-Pitts, and Michael Steil. Thank you!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmborgerson%2Ffatx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmborgerson%2Ffatx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmborgerson%2Ffatx/lists"}