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.