| 1 | ============================================================================= |
|---|
| 2 | |
|---|
| 3 | DETAILED INSTALLATION INSTRUCTIONS |
|---|
| 4 | See QUICKSTART for the simple version. |
|---|
| 5 | |
|---|
| 6 | The driver modules in this package are ONLY for 2.4 kernels 2.4.10 or later! |
|---|
| 7 | |
|---|
| 8 | This package REQUIRES i2c-2.9.0 or later! The i2c subsystem found in the |
|---|
| 9 | Linux 2.4 kernel trees, even the latest ones, is outdated and won't work. |
|---|
| 10 | |
|---|
| 11 | FOR 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 | ============================================================================= |
|---|
| 19 | These are the installation instruction for the lm_sensors package. |
|---|
| 20 | |
|---|
| 21 | NOTE: MAKE SURE YOU HAVE THE I2C-ALGO-BIT DRIVER (PART OF THE I2C PACKAGE) |
|---|
| 22 | COMPILED INTO YOUR KERNEL OR AVAILABLE AS A MODULE; SOME I2C/SMBUS |
|---|
| 23 | MASTER DRIVERS DEPEND ON IT! |
|---|
| 24 | |
|---|
| 25 | NOTE: YOU WILL HAVE TO GET AND INSTALL THE I2C PACKAGE FIRST! |
|---|
| 26 | |
|---|
| 27 | NOTE: PLEASE READ THE DOCUMENTATION IN THE DOC SUBDIRECTORY IF YOU GET STUCK! |
|---|
| 28 | |
|---|
| 29 | |
|---|
| 30 | Installing the i2c package |
|---|
| 31 | ========================== |
|---|
| 32 | |
|---|
| 33 | This lm_sensors release REQUIRES i2c-2.9.0 or later, which is not in |
|---|
| 34 | any 2.4 kernel (and will never be). |
|---|
| 35 | Therefore, you must download and install the i2c package with |
|---|
| 36 | the same version number or higher as this lm_sensors package. |
|---|
| 37 | |
|---|
| 38 | You |
|---|
| 39 | will have to make very sure the correct i2c header files are found. If you |
|---|
| 40 | get weird compilation errors, this is almost certainly going wrong. The |
|---|
| 41 | i2c header files are in a i2c subdirectory of either /usr/local/include |
|---|
| 42 | (i2c compilation option 1) or /usr/src/linux*/include (i2c compilation |
|---|
| 43 | options 2 and 3). Especially if you have in the past placed the header |
|---|
| 44 | files in /usr/local/include, this will probably go wrong. See below on |
|---|
| 45 | how to fix this. |
|---|
| 46 | |
|---|
| 47 | |
|---|
| 48 | Mixing old and new, and using beta drivers |
|---|
| 49 | ========================================== |
|---|
| 50 | |
|---|
| 51 | It is possible that you are running a previously patched kernel, or |
|---|
| 52 | a very new kernel which already has limited or full i2c or lm_sensors |
|---|
| 53 | support, but you want to use newer versions of the drivers. This is |
|---|
| 54 | possible, but there are some pitfalls. |
|---|
| 55 | |
|---|
| 56 | If you had compiled all i2c and lm_sensors drivers as modules, you are |
|---|
| 57 | in luck. You can simply compile the newest versions of i2c and |
|---|
| 58 | lm_sensors and install them. Just make sure the right modules are |
|---|
| 59 | loaded (best bet: remove the old ones first). |
|---|
| 60 | |
|---|
| 61 | If you have a certain driver compiled into your kernel, you may |
|---|
| 62 | encounter bad problems. We do not guarantee to keep internal kernel |
|---|
| 63 | interfaces unchanged. In plain language, this means that an older driver |
|---|
| 64 | may not work together with a newer driver, and your kernel may crash. |
|---|
| 65 | On the other hand, if you know what you are doing, compilation will |
|---|
| 66 | be smart. Drivers that are compiled right into your kernel will not |
|---|
| 67 | be compiled as a module again. You could do nothing with them anyway. |
|---|
| 68 | |
|---|
| 69 | |
|---|
| 70 | Having a proper kernel tree |
|---|
| 71 | =========================== |
|---|
| 72 | |
|---|
| 73 | Usually, if you compile a user-space application, you can get away with |
|---|
| 74 | having a different version of the kernel running than the version of the |
|---|
| 75 | kernel header files against which you compiled it. But a perfect match |
|---|
| 76 | is needed here. |
|---|
| 77 | |
|---|
| 78 | Let's say you want to use the lm_sensors modules with the kernel 2.4.32 you |
|---|
| 79 | are running now. What you need, is the original tree in which you |
|---|
| 80 | compiled that 2.4.32 kernel. A freshly unpacked 2.4.32 kernel will not |
|---|
| 81 | cut it, because `make *config dep' creates some files that are needed. |
|---|
| 82 | And even then, you will run into trouble, because you may not have |
|---|
| 83 | selected the exact same configuration variables. Plain advise: if you |
|---|
| 84 | do not have your original kernel tree anymore, recompile your kernel |
|---|
| 85 | first. |
|---|
| 86 | |
|---|
| 87 | Note that there is no need for a perfect match at compilation time, just |
|---|
| 88 | at run-time. This means you can cross-compile against a different kernel |
|---|
| 89 | version, and the Makefile does not check for this. |
|---|
| 90 | |
|---|
| 91 | Usually problems if the match is imperfect, is that either this package |
|---|
| 92 | won't compile at all (because it was a freshly unpacked tree without |
|---|
| 93 | some files generated by `make *config dep'), or that you can't insert |
|---|
| 94 | modules because of either a `kernel-module version mismatch' or because |
|---|
| 95 | of `unresolved kernel symbols'. If you get either of these messages, |
|---|
| 96 | check your kernel tree! |
|---|
| 97 | |
|---|
| 98 | To keep problems to a minimum, please use a 'vanilla' kernel tree, |
|---|
| 99 | as distributed on ftp://ftp.kernel/org/pub/linux/kernel, and not one |
|---|
| 100 | patched by your distribution. |
|---|
| 101 | |
|---|
| 102 | |
|---|
| 103 | Compilation |
|---|
| 104 | =========== |
|---|
| 105 | |
|---|
| 106 | This will compile and install the complete lm_sensors package. Though |
|---|
| 107 | nothing is written to your kernel tree, a proper tree is still needed |
|---|
| 108 | for this. See earlier for what a proper kernel tree is. |
|---|
| 109 | |
|---|
| 110 | At the top of the Makefile are a couple of configuration variables that |
|---|
| 111 | you may want to change. As far as possible, the Makefile tries to figure |
|---|
| 112 | out by itself their settings, but it is possible to overrule them. A list |
|---|
| 113 | is found below. Most important are the variables that determine where |
|---|
| 114 | your kernel is located (LINUX=/lib/modules/KERNELVERSION/build, usually |
|---|
| 115 | links to /usr/src/linux or something similar), where the i2c header files |
|---|
| 116 | are (I2C_HEADERS=/usr/local/include) and where you want to install |
|---|
| 117 | your modules (MODDIR=/lib/modules/KERNELVERSION) and header files |
|---|
| 118 | (LINUX_INCLUDE_DIR=/usr/local/include/linux). You can see that the |
|---|
| 119 | installation locations are choosen in such a way that they are separate |
|---|
| 120 | from the true kernel. |
|---|
| 121 | |
|---|
| 122 | Compilation is done by `make all'; `make install' installs the package. |
|---|
| 123 | You will get a lot of warnings about files which are not found, all |
|---|
| 124 | ending on `.*d'. You can safely ignore this; they contain dependency |
|---|
| 125 | information, which is regenerated on the spot. |
|---|
| 126 | |
|---|
| 127 | Please continue reading this file before you start compiling. |
|---|
| 128 | |
|---|
| 129 | |
|---|
| 130 | Makefile configuration variables |
|---|
| 131 | ================================ |
|---|
| 132 | |
|---|
| 133 | SHELL (default: /bin/sh) |
|---|
| 134 | You may have to specify the full path to Bash here, if /bin/sh is some |
|---|
| 135 | other shell. There have been conflicting reports on whether this is |
|---|
| 136 | needed. |
|---|
| 137 | KERNELVERSION |
|---|
| 138 | The version of the currently running kernel. |
|---|
| 139 | LINUX (default: /lib/modules/$(KERNELVERSION)/build) |
|---|
| 140 | The location of your kernel tree. |
|---|
| 141 | I2C_HEADERS (default: /usr/local/include) |
|---|
| 142 | This lists where the i2c headers are found. If you used compilation |
|---|
| 143 | option 1 for the i2c package, the default will be right. If you used |
|---|
| 144 | compilation options 2 or 3, it will not, and may actually cause |
|---|
| 145 | problems if you have the left-overs of a previous installation. |
|---|
| 146 | If you have weird compilation problems, try to change this to |
|---|
| 147 | $(LINUX_HEADERS). |
|---|
| 148 | SMP |
|---|
| 149 | This must be set to 1 for a SMP kernel. The magic invocation should |
|---|
| 150 | determine this automatically, so you should not have to bother with |
|---|
| 151 | this. |
|---|
| 152 | MODVER |
|---|
| 153 | This must be set to 1 if CONFIG_MODVERSIONS is defined. The magic |
|---|
| 154 | invocation should determine this automatically, so you should not |
|---|
| 155 | have to bother with this. |
|---|
| 156 | WARN (default: 0) |
|---|
| 157 | Generate additional compilation warnings; mainly interesting for |
|---|
| 158 | developers. |
|---|
| 159 | DEBUG (default: 0) |
|---|
| 160 | Some drivers will issue more debug information if you set this to |
|---|
| 161 | 1. Don't do it, unless you are a developer or are instructed to do |
|---|
| 162 | so by the lm_sensors team. |
|---|
| 163 | PREFIX (default: /usr/local) |
|---|
| 164 | Prefix for almost all installation directories. |
|---|
| 165 | MODPREF (default: /lib/modules/$(KERNELVERSION)) |
|---|
| 166 | The location where the kernel modules will be installed. |
|---|
| 167 | ETCDIR (default: /etc) |
|---|
| 168 | Installation location of the sensors.conf configuration file. |
|---|
| 169 | LIBDIR (default: $(PREFIX)/lib) |
|---|
| 170 | Installation location of all static and shared libraries. |
|---|
| 171 | BINDIR (default: $(PREFIX)/bin) |
|---|
| 172 | Installation directory of programs useful for users. |
|---|
| 173 | SBINDIR (default: $(PREFIX)/sbin) |
|---|
| 174 | Installation directory of system administrator-only programs. |
|---|
| 175 | INCLUDEDIR (default: $(PREFIX)/include) |
|---|
| 176 | Base installation directory for include files (see next two vars). |
|---|
| 177 | SYSINCLUDEDIR (default: $(INCLUDEDIR)/linux) |
|---|
| 178 | Installation directory for system include files. |
|---|
| 179 | LIBINCLUDEDIR (default: $(INCLUDEDIR)/sensors) |
|---|
| 180 | Installation directory for libsensors include files. |
|---|
| 181 | MANDIR (default: $(PREFIX)/man) |
|---|
| 182 | Base installation directory for manual pages. |
|---|
| 183 | MANOWN (default: root) |
|---|
| 184 | Owner of manual pages. |
|---|
| 185 | MANGRP (default: root) |
|---|
| 186 | Group of manual pages. |
|---|
| 187 | |
|---|
| 188 | |
|---|
| 189 | Using the sensors package |
|---|
| 190 | ========================= |
|---|
| 191 | |
|---|
| 192 | You can now load the modules by using `modprobe'. For example, |
|---|
| 193 | `modprobe i2c-piix4' will load the i2c-piix4 module, and all i2c modules |
|---|
| 194 | on which it depends. |
|---|
| 195 | |
|---|
| 196 | You can not use demand-loading; you will have to issue explicit modprobe |
|---|
| 197 | instructions. |
|---|
| 198 | |
|---|
| 199 | If you have an older installation, you will probably have to create the |
|---|
| 200 | i2c device files in the /dev directory. They are called /dev/i2c-%d, |
|---|
| 201 | and are character devices with major device number 89 and minor device |
|---|
| 202 | number %d. The script prog/mkdev/mkdev.sh will create the files for you. |
|---|
| 203 | |
|---|
| 204 | There is a scanning program installed called sensors-detect. It |
|---|
| 205 | will scan all available I2C and SMBus adapters for all known devices, |
|---|
| 206 | and will also look for ISA, PCI and Super-I/O chips with sensors, |
|---|
| 207 | and give you a list of what modules you need to insert. |
|---|
| 208 | |
|---|
| 209 | You can use the installed sensors program to get a report of all detected |
|---|
| 210 | sensor devices. There is also a manual page for this program. Calling |
|---|
| 211 | `sensors -s' will set the limits and other configuration settings |
|---|
| 212 | specified in /etc/sensors.conf. Again, read the manual pages for more |
|---|
| 213 | information. |
|---|
| 214 | |
|---|
| 215 | There are many auxiliary programs not installed. You can find them under |
|---|
| 216 | the prog subdirectory. A list can be found in doc/progs. |
|---|