forked from multimediamike/gcfuse
Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
892e69e0af | |||
314f0dd53d | |||
5d3120851a | |||
27e19b002e | |||
6ec1915971 |
17
.gitignore
vendored
Normal file
17
.gitignore
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
config.log
|
||||
config.status
|
||||
*.o
|
||||
gcfuse
|
||||
aclocal.m4
|
||||
compile
|
||||
configure
|
||||
depcomp
|
||||
install-sh
|
||||
missing
|
||||
.deps
|
||||
config.h
|
||||
config.h.in
|
||||
stamp-h1
|
||||
autom4te.cache
|
70
README.md
70
README.md
@ -1,17 +1,5 @@
|
||||
# gcfuse - Use FUSE To Mount GameCube Filesystems
|
||||
|
||||
**Note (February, 2018):** The original build instructions below were written circa 2006 and are a bit obsolete. This source code should still compile and run on modern Linux kernels using this process:
|
||||
|
||||
1. Be sure to have FUSE libraries installed (as of Ubuntu 16.04, this package is 'libfuse-dev')
|
||||
2. Clone this repository
|
||||
3. Execute the following build command:
|
||||
|
||||
```gcc -D_FILE_OFFSET_BITS=64 -Wall src/gcfs.c src/main.c src/tree.c -o gcfs -lfuse```
|
||||
|
||||
This will build the binary executable ```gcfs```. Use the *Usage* section below for instructions on running this utility.
|
||||
|
||||
---
|
||||
|
||||
gcfuse is a program that allows you to mount a Nintendo GameCube DVD
|
||||
disk image as a read-only part of the Linux filesystem. This allows the
|
||||
user to browse the directory structure and read the files within.
|
||||
@ -22,36 +10,48 @@ the mounted filesystem.
|
||||
gcfuse accomplishes all this using Filesystem in Userspace (FUSE),
|
||||
available at:
|
||||
|
||||
http://fuse.sourceforge.net/
|
||||
https://github.com/libfuse/libfuse
|
||||
|
||||
Note that there are likely to be bugs and perhaps even security
|
||||
Note that it is not usually possible to simply read a Nintendo optical discs in
|
||||
an ordinary computer's DVD-ROM drive. In order to
|
||||
mount a filesystem, generally, you will have to rip the proper
|
||||
sector image from the disc using special hardware and tools, or contact
|
||||
another source who has already done so.
|
||||
|
||||
Note also that there are likely to be bugs and perhaps even security
|
||||
problems. It is currently meant as primarily an experimental research
|
||||
tool for studying GameCube discs.
|
||||
|
||||
### Requirements:
|
||||
- Linux 2.4.x or 2.6.x (as of 2.6.14 FUSE is part of the kernel, but you still need user libraries)
|
||||
- FUSE (http://fuse.sourceforge.net) 2.5.x or higher
|
||||
- FUSE development libraries; 'libfuse-dev' on Ubuntu distros
|
||||
|
||||
Requirements:
|
||||
```
|
||||
- Linux 2.4.x or 2.6.x (as of 2.6.14 FUSE is part of the
|
||||
kernel, but you still need user libraries)
|
||||
- FUSE (http://fuse.sourceforge.net) 2.5.x or higher
|
||||
```
|
||||
### Build:
|
||||
./autogen.sh
|
||||
./configure
|
||||
make
|
||||
|
||||
Build:
|
||||
```
|
||||
./configure && make
|
||||
```
|
||||
### Install:
|
||||
make install
|
||||
|
||||
Install:
|
||||
```
|
||||
make install
|
||||
```
|
||||
#### Usage:
|
||||
The basic usage is to supply a Nintendo GameCube disc image and an empty mount point on the filesystem:
|
||||
|
||||
Usage:
|
||||
```
|
||||
gcfuse <image_file.gcm> <mount_point>
|
||||
```
|
||||
gcfuse <image_file.gcm> <mount_point>
|
||||
|
||||
Browsing to the mount point will reveal the directory structure of the disc's filesystems. Further,
|
||||
it will also expose the root executable .dol file, which is an implicit part of the disc filesystem.
|
||||
This file will be named after the name of the disc.
|
||||
|
||||
Speaking of the name of the disc, the filesystem will also have a '.metadata' file at the root which
|
||||
contains a few bits of metadata embedded in the filesystem, including:
|
||||
- Game code
|
||||
- Publisher code
|
||||
- Title
|
||||
|
||||
The filesystem derives the name of the root executable from that title metadata.
|
||||
|
||||
To unmount previously mounted file, use:
|
||||
```
|
||||
fusermount -u <mount_point>
|
||||
```
|
||||
fusermount -u <mount_point>
|
||||
|
||||
|
11
configure.ac
11
configure.ac
@ -1,5 +1,5 @@
|
||||
AC_INIT([gcfuse], [0.9.1], [mike@multimedia.cx])
|
||||
AM_INIT_AUTOMAKE([gcfuse], [0.9.1])
|
||||
AM_INIT_AUTOMAKE([1.11 foreign])
|
||||
AC_CONFIG_HEADER([src/config.h])
|
||||
|
||||
AC_PROG_CC
|
||||
@ -7,14 +7,7 @@ AC_PROG_CC
|
||||
CPPFLAGS="$CPPFLAGS -Wall `getconf LFS_CFLAGS`"
|
||||
LDFLAGS="$LDFLAGS `getconf LFS_LDFLAGS`"
|
||||
|
||||
AC_CHECK_LIB([fuse], [fuse_main], , AC_MSG_ERROR([Unable to find libfuse]))
|
||||
|
||||
AC_HEADER_STDC
|
||||
AC_CHECK_HEADER([fuse/fuse.h], , AC_MSG_ERROR([Unable to find fuse.h]))
|
||||
AC_PREPROC_IFELSE(
|
||||
[#define FUSE_USE_VERSION 25
|
||||
#include <fuse.h>]
|
||||
, , AC_MSG_ERROR([You need FUSE version 2.5.x]))
|
||||
PKG_CHECK_MODULES([FUSE], [fuse >= 2.5])
|
||||
|
||||
AC_C_CONST
|
||||
|
||||
|
@ -1,3 +1,5 @@
|
||||
bin_PROGRAMS = gcfuse
|
||||
gcfuse_SOURCES = tree.c gcfs.c main.c
|
||||
noinst_HEADERS = tree.h gcfs.h
|
||||
gcfuse_CFLAGS = $(CFLAGS) $(FUSE_CFLAGS)
|
||||
gcfuse_LDADD = $(LDFLAGS) $(FUSE_LDFLAGS) $(FUSE_LIBS)
|
||||
|
Reference in New Issue
Block a user