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

Revision 900, 14.4 kB (checked in by mds, 8 years ago)

(mds) Emphasize that mkpatch only patches in a subset of the package.

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