root/lm-sensors/tags/V2-5-1/INSTALL

Revision 795, 14.5 kB (checked in by frodo, 9 years ago)

Warnings to have i2c-algo-bit available.

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