BeOS filesystem for Linux

Document last updated: Dec 6, 2001

WARNING
=======
Make sure you understand that this is alpha software.  This means that the
implementation is neither complete nor well-tested. 

I DISCLAIM ALL RESPONSIBILITY FOR ANY POSSIBLE BAD EFFECTS OF THIS CODE!

LICENSE
=====
This software is covered by the GNU General Public License. 
See the file COPYING for the complete text of the license.
Or the GNU website: <http://www.gnu.org/licenses/licenses.html>

AUTHOR
=====
The largest part of the code written by Will Dyson <will_dyson@pobox.com>
He has been working on the code since Aug 13, 2001. See the changelog for
details.

Original Author: Makoto Kato <m_kato@ga2.so-net.ne.jp>
His original code can still be found at:
<http://hp.vector.co.jp/authors/VA008030/bfs/>
Does anyone know of a more current email address for Makoto? He doesn't
respond to the address given above...

This filesystem doesn't have a maintainer.

WHAT IS THIS DRIVER?
==================
This module implements the native filesystem of BeOS http://www.beincorporated.com/ 
for the linux 2.4.1 and later kernels. Currently it is a read-only
implementation.

Which is it, BFS or BEFS?
================
Be, Inc said, "BeOS Filesystem is officially called BFS, not BeFS". 
But Unixware Boot Filesystem is called bfs, too. And they are already in
the kernel. Because of this naming conflict, on Linux the BeOS
filesystem is called befs.

HOW TO INSTALL
==============
step 1.  Install the BeFS  patch into the source code tree of linux.

Apply the patchfile to your kernel source tree.
Assuming that your kernel source is in /foo/bar/linux and the patchfile
is called patch-befs-xxx, you would do the following:

	cd /foo/bar/linux
	patch -p1 < /path/to/patch-befs-xxx

if the patching step fails (i.e. there are rejected hunks), you can try to
figure it out yourself (it shouldn't be hard), or mail the maintainer 
(Will Dyson <will_dyson@pobox.com>) for help.

step 2.  Configuration & make kernel

The linux kernel has many compile-time options. Most of them are beyond the
scope of this document. I suggest the Kernel-HOWTO document as a good general
reference on this topic. http://www.linuxdocs.org/HOWTOs/Kernel-HOWTO-4.html 

However, to use the BeFS module, you must enable it at configure time.

	cd /foo/bar/linux
	make menuconfig (or xconfig)

The BeFS module is not a standard part of the linux kernel, so you must first
enable support for experimental code under the "Code maturity level" menu.

Then, under the "Filesystems" menu will be an option called "BeFS
filesystem (experimental)", or something like that. Enable that option
(it is fine to make it a module).

Save your kernel configuration and then build your kernel.

step 3.  Install

See the kernel howto <http://www.linux.com/howto/Kernel-HOWTO.html> for
instructions on this critical step.

USING BFS
=========
To use the BeOS filesystem, use filesystem type 'befs'.

ex)
    mount -t befs /dev/fd0 /beos

MOUNT OPTIONS
=============
uid=nnn        All files in the partition will be owned by user id nnn.
gid=nnn	       All files in the partition will be in group nnn.
iocharset=xxx  Use xxx as the name of the NLS translation table.
debug          The driver will output debugging information to the syslog.

HOW TO GET LASTEST VERSION
==========================

The latest version is currently available at:
<http://befs-driver.sourceforge.net/>

ANY KNOWN BUGS?
===========
As of Jan 20, 2002:
	
	None

SPECIAL THANKS
==============
Dominic Giampalo ... Writing "Practical file system design with Be filesystem"
Hiroyuki Yamada  ... Testing LinuxPPC.



