root/lm-sensors/tags/V2-10-3/INSTALL

Revision 4174, 14.1 KB (checked in by ruik, 6 years ago)

Add some 2.6 quickstart instructions

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1=============================================================================
2
3DETAILED INSTALLATION INSTRUCTIONS
4See QUICKSTART for the simple version.
5
6The driver modules in this package are ONLY for 2.4 kernels 2.4.10 or later!
7
8This package REQUIRES i2c-2.9.0 or later! The i2c subsystem found in the
9Linux 2.4 kernel trees, even the latest ones, is outdated and won't work.
10
11FOR 2.5/2.6 KERNELS, do not attempt to compile the modules in this package.
12    Use the drivers already in the 2.5/2.6 kernel tree.
13    If you are running a 2.5/2.6 kernel, the ONLY thing you need to
14    do is 'make user' and 'make user_install'. Do NOT follow the rest
15    of these instructions. Please check the QUICKSTART instead.
16
17
18=============================================================================
19These are the installation instruction for the lm_sensors package.
20
21There are two ways in which you can compile and install this package.
22Option 1 is much easier and is recommended.
23
24 1. Complete separate from kernel compilation
25    (only for 2.4 kernels 2.4.10 or later)
26    This will generate a set of modules which can be inserted and removed
27    as needed; nothing will be written into the kernel tree;
28
29 2. Patching of the kernel
30    (only for 2.4 kernels 2.4.13 or later)
31    This will patch your kernel source tree. You must recompile your kernel
32    to take advantage of this. But it makes it possible to compile drivers
33    into the kernel itself, instead of having to add them as modules.
34    ** AFTER YOU COMPILED AND INSTALLED YOUR KERNEL, YOU WILL STILL HAVE TO
35    ** COMPILE THIS PACKAGE TO GET THE USERLAND UTILITIES!
36    ** NOT ALL MODULES ARE PATCHED INTO THE KERNEL. SEE BELOW.
37
38
39
40Each of these ways will be described below in detail.
41
42NOTE: MAKE SURE YOU HAVE THE I2C-ALGO-BIT DRIVER (PART OF THE I2C PACKAGE)
43      COMPILED INTO YOUR KERNEL OR AVAILABLE AS A MODULE; SOME I2C/SMBUS
44      MASTER DRIVERS DEPEND ON IT!
45
46NOTE: IN EACH CASE, YOU WILL HAVE TO GET AND INSTALL THE I2C PACKAGE FIRST!
47      SET COMPILE_KERNEL TO 0 IN THE MAIN MAKEFILE FOR OPTION 2, UNLESS
48      YOU NEED ALPHA OR BETA DRIVERS (SEE BELOW)
49
50NOTE: PLEASE READ THE DOCUMENTATION IN THE DOC SUBDIRECTORY IF YOU GET STUCK!
51
52
53Installing the i2c package
54==========================
55
56This lm_sensors release REQUIRES i2c-2.9.0 or later, which is not in
57any 2.4 kernel (and will never be).
58Therefore, you must download and install the i2c package with
59the same version number or higher as this lm_sensors package.
60
61All i2c components are distributed in
62a separate package. There are install instructions in that package. If
63you want to use compilation option 2 (patching the kernel) for lm_sensors,
64you will have to use compilation option 3 (patching the kernel) for i2c
65too. If you want to use compilation option 1 (compiling as modules) for
66lm_sensors, you may use either compilation option 1 or 2 (compiling as
67modules) or compilation option 3 (patching the kernel for i2c). See the
68table below.
69
70                                          LM_SENSORS
71I2C                      | option 1 (modules)      option 2 (patch kernel)
72-------------------------+------------------------------------------------
73option 1 (modules)       |      YES                      NO
74option 2 (modules)       |      YES                      YES
75option 3 (patch kernel)  |      YES                      YES
76
77
78If you use compilation option 1 (compiling as modules) for lm_sensors, you
79will have to make very sure the correct i2c header files are found. If you
80get weird compilation errors, this is almost certainly going wrong. The
81i2c header files are in a i2c subdirectory of either /usr/local/include
82(i2c compilation option 1) or /usr/src/linux*/include (i2c compilation
83options 2 and 3). Especially if you have in the past placed the header
84files in /usr/local/include, this will probably go wrong. See below on
85how to fix this.
86
87NOTE: option 3 only works with 2.4 kernels 2.4.13 or later;
88      options 1 and 2 only work with 2.4 kernels 2.4.10 or later.
89
90
91Mixing old and new, and using beta drivers (compilation option 1)
92=================================================================
93
94It is possible that you are running a previously patched kernel, or
95a very new kernel which already has limited or full i2c or lm_sensors
96support, but you want to use newer versions of the drivers. This is
97possible, but there are some pitfalls.
98
99If you had compiled all i2c and lm_sensors drivers as modules, you are
100in luck. You can simply compile the newest versions of i2c and
101lm_sensors and install them. Just make sure the right modules are
102loaded (best bet: remove the old ones first).
103
104If you have a certain driver compiled into your kernel, you may
105encounter bad problems. We do not guarantee to keep internal kernel
106interfaces unchanged. In plain language, this means that an older driver
107may not work together with a newer driver, and your kernel may crash.
108On the other hand, if you know what you are doing, compilation will
109be smart. Drivers that are compiled right into your kernel will not
110be compiled as a module again.  You could do nothing with them anyway.
111
112Sometimes, you want to patch your kernel, but find that certain alpha
113or beta drivers are not included in the patch. This is on purpose: we
114do not want to polute the kernel tree with things of which we are not
115confident they work. In this case, patch the kernel, compile it, and
116then compile lm_sensors with COMPILE_KERNEL set to 1.
117
118
119Having a proper kernel tree (compilation option 1)
120==================================================
121
122Usually, if you compile a user-space application, you can get away with
123having a different version of the kernel running than the version of the
124kernel header files against which you compiled it. But a perfect match
125is needed for the first two compilation options above.
126
127Let's say you want to use the lm_sensors modules with the kernel 2.4.32 you
128are running now. What you need, is the original tree in which you
129compiled that 2.4.32 kernel. A freshly unpacked 2.4.32 kernel will not
130cut it, because `make *config dep' creates some files that are needed.
131And even then, you will run into trouble, because you may not have
132selected the exact same configuration variables. Plain advise: if you
133do not have your original kernel tree anymore, recompile your kernel
134first.
135
136Note that there is no need for a perfect match at compilation time, just
137at run-time. This means you can cross-compile against a different kernel
138version, and the Makefile does not check for this.
139
140Usually problems if the match is imperfect, is that either this package
141won't compile at all (because it was a freshly unpacked tree without
142some files generated by `make *config dep'), or that you can't insert
143modules because of either a `kernel-module version mismatch' or because
144of `unresolved kernel symbols'. If you get either of these messages,
145check your kernel tree!
146
147To keep problems to a minimum, please use a 'vanilla' kernel tree,
148as distributed on ftp://ftp.kernel/org/pub/linux/kernel, and not one
149patched by your distribution.
150
151
152Separate from kernel compilation (compilation option 1)
153=======================================================
154
155This will compile and install the complete lm_sensors package. Though
156nothing is written to your kernel tree, a proper tree is still needed
157for this. See earlier for what a proper kernel tree is.
158
159At the top of the Makefile are a couple of configuration variables that
160you may want to change. As far as possible, the Makefile tries to figure
161out by itself their settings, but it is possible to overrule them. A list
162is found below. Most important are the variables that determine where
163your kernel is located (LINUX=/lib/modules/KERNELVERSION/build, usually
164links to /usr/src/linux or something similar), where the i2c header files
165are (I2C_HEADERS=/usr/local/include) and where you want to install
166your modules (MODDIR=/lib/modules/KERNELVERSION) and header files
167(LINUX_INCLUDE_DIR=/usr/local/include/linux). You can see that the
168installation locations are choosen in such a way that they are separate
169from the true kernel.
170
171Compilation is done by `make all'; `make install' installs the package.
172You will get a lot of warnings about files which are not found, all
173ending on `.*d'. You can safely ignore this; they contain dependency
174information, which is regenerated on the spot.
175
176Please continue reading this file before you start compiling.
177
178
179Makefile configuration variables (compilation option 1)
180==============================================================
181
182SHELL (default: /bin/sh)
183  You may have to specify the full path to Bash here, if /bin/sh is some
184  other shell. There have been conflicting reports on whether this is
185  needed.
186KERNELVERSION
187  The version of the currently running kernel.
188LINUX (default: /lib/modules/$(KERNELVERSION)/build)
189  The location of your kernel tree.
190COMPILE_KERNEL
191  Determine whether you want to consider the kernel modules for compilation
192  at all. By default, compilation option 1 will only compile and install
193  those modules which are not built into the kernel.
194  If some modules are built into your kernel, and this package is much
195  newer, you may find you can not insert the newly compiled modules.
196  Sorry.
197  You may want to set this to 0 if you have just patched and compiled
198  your kernel using the same version of this package, and just want to
199  compile the user-space tools.
200I2C_HEADERS (default: /usr/local/include)
201  This lists where the i2c headers are found. If you used compilation
202  option 1 for the i2c package, the default will be right. If you used
203  compilation options 2 or 3, it will not, and may actually cause
204  problems if you have the left-overs of a previous installation.
205  If you have weird compilation problems, try to change this to
206  $(LINUX_HEADERS).
207SMP
208  This must be set to 1 for a SMP kernel. The magic invocation should
209  determine this automatically, so you should not have to bother with
210  this.
211MODVER
212  This must be set to 1 if CONFIG_MODVERSIONS is defined. The magic
213  invocation should determine this automatically, so you should not
214  have to bother with this.
215WARN (default: 0)
216  Generate additional compilation warnings; mainly interesting for
217  developers.
218DEBUG (default: 0)
219  Some drivers will issue more debug information if you set this to
220  1. Don't do it, unless you are a developer or are instructed to do
221  so by the lm_sensors team.
222PREFIX (default: /usr/local)
223  Prefix for almost all installation directories.
224MODPREF (default: /lib/modules/$(KERNELVERSION))
225  The location where the kernel modules will be installed.
226ETCDIR (default: /etc)
227  Installation location of the sensors.conf configuration file.
228LIBDIR (default: $(PREFIX)/lib)
229  Installation location of all static and shared libraries.
230BINDIR (default: $(PREFIX)/bin)
231  Installation directory of programs useful for users.
232SBINDIR (default: $(PREFIX)/sbin)
233  Installation directory of system administrator-only programs.
234INCLUDEDIR (default: $(PREFIX)/include)
235  Base installation directory for include files (see next two vars).
236SYSINCLUDEDIR (default: $(INCLUDEDIR)/linux)
237  Installation directory for system include files.
238LIBINCLUDEDIR (default: $(INCLUDEDIR)/sensors)
239  Installation directory for libsensors include files.
240MANDIR (default: $(PREFIX)/man)
241  Base installation directory for manual pages.
242MANOWN (default: root)
243  Owner of manual pages.
244MANGRP (default: root)
245  Group of manual pages.
246
247
248Patching the kernel (compilation option 2)
249==========================================
250
251There is a special script which should be able to generate diffs against
252any 2.4 kernel (2.4.10 or later).  Please report any problems to our
253mailing list.  It *is* safe to run it if your kernel already has the
254lm_sensors drivers.  It will only work if you applied the i2c patches first.
255
256** Only a subset of the modules in lm_sensors are patched into the        **
257** kernel by the script. See the file mkpatch/FILES to see if the         **
258** modules you need are included. If a module you need is NOT listed      **
259** in mkpatch/FILES, it will not be patched, and you MUST use option 1.   **
260** If you are not sure what modules you need, run `sensors-detect' first. **
261
262The kernel diffs are generated by the program `mkpatch.pl' in the mkpatch
263subdirectory. It needs two arguments: the first one is the root of the
264lm_sensors package, the second one is the root of the kernel tree against
265which the diffs will be generated. For example:
266  cd /tmp/lm_sensors-2.10.0
267  mkpatch/mkpatch.pl . /usr/src/linux > /tmp/sensors-2.10.0.patch
268You can apply the diffs as usual:
269  cd /usr/src/linux
270  patch -p1 -E < /tmp/sensors-2.10.0.patch
271Generation and application can easily be done in one step:
272  mkpatch/mkpatch.pl . /usr/src/linux | patch -p1 -E -d /usr/src/linux
273The generated diffs are of course only valid for the kernel version
274against which mkpatch.pl was run.
275
276Once you have applied the patches, you can configure and compile your
277kernel as usual. You will see the sensors configuration screen under the
278`Character Devices' menu in menuconfig, but it will only be available
279if you selected base I2C support.
280
281
282Using the sensors package
283=========================
284
285You can now load the modules by using `modprobe'. For example,
286`modprobe i2c-piix4' will load the i2c-piix4 module, and all i2c modules
287on which it depends.
288
289You can not use demand-loading; you will have to issue explicit modprobe
290instructions.
291
292If you have an older installation, you will probably have to create the
293i2c device files in the /dev directory. They are called /dev/i2c-%d,
294and are character devices with major device number 89 and minor device
295number %d. The script prog/mkdev/mkdev.sh will create the files for you.
296
297There is a scanning program installed called sensors-detect. It
298will scan all available I2C and SMBus adapters for all known devices,
299and will also look for ISA, PCI and Super-I/O chips with sensors,
300and give you a list of what modules you need to insert.
301
302You can use the installed sensors program to get a report of all detected
303sensor devices. There is also a manual page for this program. Calling
304`sensors -s' will set the limits and other configuration settings
305specified in /etc/sensors.conf. Again, read the manual pages for more
306information.
307
308There are many auxiliary programs not installed. You can find them under
309the prog subdirectory. A list can be found in doc/progs.
Note: See TracBrowser for help on using the browser.