Penguin

Differences between current version and previous revision of HowToModules.

Other diffs: Previous Major Revision, Previous Author, or view the Annotated Edit History

Newer page: version 3 Last edited on Friday, October 29, 2004 10:07:46 am by StuartYeates
Older page: version 2 Last edited on Friday, June 7, 2002 1:07:07 am by perry Revert
@@ -1,470 +1 @@
-Linux Kernel Modules Installation HOWTO  
-!!!Linux Kernel Modules Installation HOWTO  
-!  
-  
- rhw@bigfoot.com  
-  
-  
-  
-__Revision History__Revision 1.0Unknown dateRevised by: rhwInitial Release  
-  
-  
-  
-  
-  
- Describes the installation of Linux kernel modules.  
-  
-  
-  
-  
-  
-  
-----; __Table of Contents__; 1. Purpose of this Document; 2. Pre-requisites; 3. Compiler Speed-up; 4. Recompiling the Kernel for Modules: ; 5.1. Configuring Debian or !RedHat for Modules; 5.2. Configuring Slackware for Modules; 5.3. Configuring Other Distributions for Modules  
-!!!1. Purpose of this Document  
-  
- My experience with Linux and modules has been that the existing  
-documents fail to provide a satisfactory explanation as to how to  
-successfully set up Linux with modules configured and working. The  
-procedure explained in this document has been successfully used several  
-times, both on my own system and over the Internet to give directions  
-to somebody trying to get some feature to work which requires a driver  
-supplied only in module form.  
-  
-  
-  
-  
- My own system runs from a !RedHat 4.1 distribution of Linux, and it was  
-on this setup that I developed the procedure. I have since successfully  
-installed it on systems running from various Slackware distributions, and  
-on one system running from a Debian distribution, and the necessary  
-procedure to correctly configure modules under Linux in all three is  
-documented herein.  
-  
-  
-  
-  
-  
-  
-  
-  
-  
- I have recently used the same procedure with !RedHat 4.2, but with  
-inconsistent results on apparently identical systems. I have not yet  
-determined what the problem is, so can make no guarantees at this stage  
-as to whether or not it will work on your system.  
-  
-  
-  
-  
- This document is distributed under the terms of the GNU Free Documentation License.  
-You should have received a copy along with it. If not, it is available from  
-http://www.fsf.org/licenses/fdl.html.  
-  
-  
-----  
-!!!2. Pre-requisites  
-  
-  
-  
-  
-*  
-  
- Before the steps in this document can be applied, the reader must  
-have a working Linux installation in which one can get to the Linux prompt  
-as user ''root'' since the majority of the steps involved  
-can only be undertaken by the said user.  
-  
-  
-  
-*  
-*  
-  
- The existing kernel may be compiled either to use modules or not  
-to use modules, and can even display error messages during the boot-up  
-procedure as a result of modules being configured which aren't available  
-at the moment, providing the above condition is met.  
-  
-  
-  
-*  
-*  
-  
- The source tree for the current kernel is assumed to be found  
-rooted at /usr/src/linux and that is also  
-assumed to be the current directory throughout this document  
-at the start of any sequence of commands to be issued.  
-  
-  
-  
-*----  
-!!!3. Compiler Speed-up  
-  
- If your machine has 16 or more Megabytes of RAM, there is a useful  
-speed-up that can be done, which is to permit the kernel to compile two or  
-modules in parallel. This will increase the load on the machine whilst the  
-kernel is being recompiled, but will reduce the time during which the  
-compilation will be taking place.  
-  
-  
-  
-  
- Before you can use this method, you need to check the amount of RAM  
-present in your machine, as if you set this too high, the compilation will  
-actually slow down. Experience has shown that the optimum value depends on  
-the amount of RAM in your system according to the following formula, at  
-least for systems with up to 32 Megabytes of RAM, although it may be a  
-little conservative for systems with larger amounts of RAM:  
-  
-  
-  
-  
- N = [[RAM in Megabytes ] / 8 + 1  
-  
-  
-  
-  
- For the benefit of those with a dislike of math, the values for the  
-common amounts of RAM are as follows:  
-  
-  
-  
-  
-  
-  
-  
-__Table 1. Sample Table__  
-  
-  
-RAM !SizeValue to Use16 Megs324 Megs432 Megs540 Megs648 Megs756 Megs864 Megs980 Megs1196 Megs13112 Megs15128 Megs17  
-  
-  
-  
-  
- When you have decided on the correct number, edit the file  
-/usr/src/linux/Makefile and find the line that currently reads:  
-  
-  
-  
-MAKE=make  
-  
-  
- Replace it with one reading:  
-  
-  
-  
-MAKE=make -j N  
-  
-  
- where N is the number determined above.  
-  
-  
-----  
-!!!4. Recompiling the Kernel for Modules  
-  
- The kernel can be reconfigured to use modules for everything other than  
-the file system mounted as root (in most cases, this is the ext2 file  
-system).  
-  
-  
-  
-  
- However, there are certain items that appear to be difficult to set up  
-properly as modules, so I would recommend the following be compiled into  
-the kernel:  
-  
-  
-  
-  
-  
-  
-  
-*  
-  
- Ethernet hardware drivers.  
-  
-  
-  
-*  
-*  
-  
- SCSI CD-ROM drivers.  
-  
-  
-  
-*  
-  
- On the other hand, there are certain driver combinations that  
-''ONLY'' work as modules, especially combinations  
-of two or more of the following group:  
-  
-  
-  
-  
-  
-  
-  
-*  
-  
- A Parallel Printer,  
-  
-  
-  
-*  
-*  
-  
- A Parallel Port drive, such as the ''IOMEGA'' !ZipDrive or  
-!JazzDrive, or the ''!BackPack'' CD-ROM drive, and  
-  
-  
-  
-*  
-*  
-  
- The ''PLIP'' Daemon.  
-  
-  
-  
-*  
-  
- You will need to decide what you are compiling into the kernel, and  
-what as modules, but should take the above points into consideration. The  
-actual choices are made during the compilation, by the second of the  
-following sequence of instructions:  
-  
-  
-  
-cd /usr/src/linux  
-make menuconfig  
-make dep clean modules modules_install zImage  
-  
-  
- Having done that, the module dependencies need to be mapped out. This  
-is done with the following command:  
-  
-  
-  
-depmod -a  
-  
-  
- The new kernel now needs to be inserted in the boot chain. I am  
-assuming the reader is using LILO for this purpose, since this is the only  
-loader I have any experience with.  
-  
-  
-  
-  
- I recommend that one does NOT automatically insert the newly compiled  
-kernel as the default Linux kernel since if it should fail, it is then  
-extremely difficult to recover one's Linux setup without doing a complete  
-reinstallation, which is not to be recommended. For this reason, I have  
-the following entry in my /etc/lilo.conf file:  
-  
-  
-  
-image=/usr/src/linux/arch/i386/boot/zImage  
-label=new  
-alias=n  
-read-only  
-vga=ask  
-optional  
-  
-  
- This entry says that there is an OPTIONAL boot option (which will be  
-ignored if the image in question does not exist) which boots the file  
-/boot/newlinux if selected, and allows one to select  
-the video mode it is to be booted in.  
-  
-  
-  
-  
- Assuming the existence of the above entry in /etc/lilo.conf  
-the revised kernel is already correctly located at the end of compilation, and  
-it can be installed via the following command:  
-  
-  
-  
-lilo  
-  
-  
- Having done that, the reader needs to follow the further steps relevant  
-to their selected distribution, as follows:  
-  
-  
-----  
-!!5.1. Configuring Debian or !RedHat for Modules  
-  
- Prior to carrying out the steps listed here, the steps listed in  
-"''Recompiling the Kernel for Modules''"  
-are assumed to have been carried out.  
-  
-  
-  
-  
- The Debian and !RedHat distributions have identical boot procedures, so  
-also have identical procedures for configuring modules into them.  
-  
-  
-  
-  
-  
-  
-  
-#  
-  
- Having logged in as root, use your favourite text editor to create  
-a new file called /etc/rc.d/init.d/modules.init  
-with the following contents therein:  
-  
-  
-  
-# Modules initialisation.  
-#  
-# Start up the module auto-loading daemon.  
-/sbin/kerneld  
-# Mount all currently unmounted auto-mounted partitions.  
-/sbin/mount -a  
-  
-#  
-#  
-  
- Having created the above file, perform the following steps whilst  
-logged on as root:  
-  
-  
-  
-cd /etc/rc.d  
-chmod 755 init.d/*  
-cd rc3.d  
-ln -s ../init.d/modules.init 05modules.init  
-  
-#  
-  
- The system can now be rebooted, and on doing so, it will be found that  
-modules are fully implemented  
-  
-  
-----  
-!!5.2. Configuring Slackware for Modules  
-  
- Prior to carrying out the steps listed here, the steps listed in  
-"''Recompiling the Kernel for Modules''"  
-are assumed to have been carried out.  
-  
-  
-  
-  
- The file /etc/rc.d/rc.M needs to be edited as follows:  
-  
-  
-  
-  
-  
-  
-  
-#  
-  
- Around line 18, there is a section reading as follows:  
-  
-  
-  
-# Screen blanks after 15 minutes idle time.  
-/bin/setterm -blank 15  
-  
-  
- Immediately after this, insert the following paragraph, with the usual  
-blank lines either side of it:  
-  
-  
-  
-# Load the kernel module auto-loader.  
-/sbin/kerneld  
-  
-#  
-#  
-  
- About 12 lines further down is the following:  
-  
-  
-  
-# if there is no /etc/HOSTNAME, fall back on this default:  
-  
-  
- Immediately prior to this, insert the following paragraph, again with the  
-usual blank lines either side of it:  
-  
-  
-  
-# Mount remaining unmounted auto-mount drives.  
-/sbin/mount -a  
-  
-#  
-  
- When those changes have been made, save the file.  
-  
-  
-  
-  
- No further modifications are required for Slackware.  
-  
-  
-----  
-!!5.3. Configuring Other Distributions for Modules  
-  
- Prior to carrying out the steps listed here, the steps listed in  
-"''Recompiling the Kernel for Modules''"  
-are assumed to have been carried out.  
-  
-  
-  
-  
- The precise procedure for other distributions has not been ascertained,  
-but is probably one of the above. To determine which one, display a  
-directory of the contents of the /etc/rc.d directory,  
-as follows:  
-  
-  
-  
-cd /etc/rc.d  
-ls -l *.d rc.*  
-  
-  
- From this resulting display, you can select one of the following three  
-options:  
-  
-  
-  
-  
-  
-  
-  
-#  
-  
- If this list includes a directory named init.d and some  
-directories with names matching rc?.d where the  
-question mark is replaced by single digits, and does ''NOT''  
-include a file with the name rc.M, that distribution can  
-be configured for modules by following the procedure listed under the title  
-"''Configuring Debian or !RedHat for Modules''".  
-  
-  
-  
-#  
-#  
-  
- If this list does not include a directory named init.d but  
-includes a file named rc.M then that distribution can  
-be configured for modules by following the procedure listed under the title  
-"''Configuring Slackware for Modules''".  
-  
-  
-  
-#  
-#  
-  
- If this list matches neither of the above criteria, then the  
-distribution has a boot script not covered by this !HowTo. In that case,  
-you are invited to contact the author of this document for advice .  
-  
-  
-  
-#  
+Describe [HowToModules ] here.