blob: 8ea44c0ec7a9f21fb1370f447fe971583ae40383 [file] [log] [blame]
Installation instructions for the HFS Filesystem for Linux
Paul H. Hargrove, hargrove@sccm.Stanford.EDU
version 0.95 28 Apr 1997
This document explains how to compile and install version 0.95 of
hfs_fs, the HFS filesystem for Linux.
11.. SSyysstteemm RReeqquuiirreemmeennttss
You will need the following to compile and use this release of hfs_fs:
+o Kernel version 2.0.1 or newer compiled with modules enabled
(CONFIG_MODULES).
+o The kernel sources (or at least the header files) available online.
+o The module utilities package current for your kernel version and an
understanding of how to use it. (The file
Documentation/modules.txt in the kernel source directory provides a
brief introduction.)
22.. IInnssttaallllaattiioonn
This release of the HFS filesystem is not part of the official kernel
distribution. Therefore, it is compiled as a module and then loaded
into the kernel using the module utilities. Therefore, your kernel
must be compiled with CONFIG_MODULES enabled.
22..11.. CCoommppiilliinngg tthhee llooaaddaabbllee mmoodduullee
To compile hfs.o you should only need to execute ``make'' in the
hfs_fs source directory.
If gcc complains about not finding a large number of header files with
names beginning with ``linux/'' then you probably don't have the
kernel header files installed correctly. Either /usr/include/linux,
/usr/include/asm and /usr/include/scsi should be symbolic links to
include/linux, include/asm and include/scsi in the kernel source tree
for the kernel you wish to use hfs_fs with, or else they should be
directories containing the header files for the kernel you wish to use
hfs_fs with.
If gcc complains about not finding linux/version.h, then you will need
to run ``make dep'' in the kernel source directory to build it. Under
MkLinux, run ``make include/linux/version.h'' instead.
If gcc complains about not finding the files linux/config.h or
linux/autoconf.h, then you will need to run ``make config'' and ``make
dep'' in the kernel source directory to build these two files.
If you are compiling on a DEC Alpha and receive messages saying
assignment from incompatible pointer type when compiling files dir_*.c
and file_*.c, then you need to change a single line in the file
linux/hfs_fs.h. Remove the text ``&& !defined(__alpha__)'' from the
end of line 217.
22..22.. IInnssttaalllliinngg tthhee mmoodduullee iinn tthhee mmoodduulleess ddiirreeccttoorryy ((ooppttiioonnaall))
If you plan to use kerneld to automatically load the module or if you
wish to use modprobe or insmod without supplying a complete path to
hfs.o, then you will need to copy hfs.o into a directory where the
module utilities expect to find it.
The proper directory may depend slightly on your configuration.
However, /lib/modules/default/fs/ is a common one for filesystem
modules. Once hfs.o is in the proper directory you should run depmod
-a to update the dependency list used by kerneld and modprobe.
22..33.. LLooaaddiinngg tthhee mmoodduullee iinnttoo tthhee rruunnnniinngg kkeerrnneell
There are three ways to accomplish this:
1. If you are running kerneld and have installed hfs.o in the modules
directory then you don't need to issue any commands; the module
will be loaded when you attempt to mount an HFS filesystem.
2. If you are _n_o_t running kerneld then you can load hfs.o manually by
running modprobe hfs.o. If you have not installed hfs.o in one of
the standard module directories, then you will need provide a full
path to the file hfs.o.
3. If you have been experiencing kernel crashes with hfs_fs, then you
should file a bug report including the names of the functions which
the EIP and Stack Trace point into. To help with this you can ask
for relocation map for the module when you load it. To do this
load the module with ``insmod -m hfs.o >loadmap''. Again, you may
need a full path to the file hfs.o if you have not placed it in one
of the standard module directories.
22..44.. UUssiinngg tthhee mmoodduullee wwiitthh vveerrssiioonneedd ssyymmbboollss
All the interface between the module and the kernel take place through
very stable (since the mid-1.3.x kernels) parts of the kernel. If you
enabled versioned symbols (CONFIG_MODVERSIONS) when you compiled your
kernel you should often be able to compile this module once and then
use it with many kernels newer than the one you compiled it for.
In any case, it is unlikely that this module will need changes with
each new kernel patch; simple recompilation should usually suffice.
33.. LLeeggaall NNoottiicceess
33..11.. TThhiiss DDooccuummeenntt
This document is Copyright (c) 1996, 1997 by Paul H. Hargrove.
Permission is granted to make and distribute verbatim copies of this
document provided the copyright notice and this permission notice are
preserved on all copies.
Permission is granted to copy and distribute modified versions of this
document under the conditions for verbatim copies above, provided a
notice clearly stating that the document is a modified version is also
included in the modified document.
Permission is granted to copy and distribute translations of this
document into another language, under the conditions specified above
for modified versions.
Permission is granted to convert this document into another media
under the conditions specified above for modified versions provided
the requirement to acknowledge the source document is fulfilled by
inclusion of an obvious reference to the source document in the new
media. Where there is any doubt as to what defines ``obvious'' the
copyright owner reserves the right to decide.