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

Revision 1439, 15.2 kB (checked in by mds, 6 years ago)

updates

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