]> git.proxmox.com Git - mirror_smartmontools-debian.git/blob - INSTALL
fcffe649b81983d3980fc9430fefd39699c787e4
[mirror_smartmontools-debian.git] / INSTALL
1 Smartmontools installation instructions
2 =======================================
3
4 $Id: INSTALL 4574 2017-10-29 15:41:13Z chrfranke $
5
6 Please also see the smartmontools home page:
7 http://www.smartmontools.org/
8
9 Table of contents:
10
11 [1] System requirements
12 [2] Installing from SVN
13 [3] Installing from source tarball
14 [4] Guidelines for different Linux distributions
15 [5] Guidelines for FreeBSD
16 [6] Guidelines for Darwin
17 [7] Guidelines for NetBSD
18 [8] Guidelines for Solaris
19 [9] Guidelines for Cygwin
20 [10] Guidelines for Windows
21 [11] Guidelines for OS/2, eComStation
22 [12] Guidelines for OpenBSD
23 [13] Comments
24 [14] Detailed description of ./configure options
25
26 [1] System requirements
27 =======================
28
29 A) Linux
30
31 Any Linux distribution will support smartmontools if it has a
32 kernel version greater than or equal to 2.2.14. So any recent
33 Linux distribution should support smartmontools.
34
35 B) FreeBSD
36
37 For FreeBSD support, a 5-current kernel that includes ATAng is
38 required in order to support ATA drives. Even current versions of
39 ATAng will not support 100% operation, as the SMART status can not
40 be reliably retrieved. There is patch pending approval of the
41 ATAng driver maintainer that will address this issue.
42
43 C) Solaris
44
45 The SCSI code has been tested on a variety of Solaris 8 and 9
46 systems. ATA/IDE code only works on SPARC platform. All tested
47 kernels worked correctly.
48
49 D) NetBSD/OpenBSD
50
51 The code was tested on a 1.6ZG (i.e., 1.6-current) system. It should
52 also function under 1.6.1 and later releases (unverified). Currently
53 it doesn't support ATA devices on 3ware RAID controllers.
54
55 E) Cygwin
56
57 The code was tested on Cygwin 2.9.0-3 x86 and x86_64. It should also
58 work on other recent releases.
59
60 Both Cygwin and Windows versions of smartmontools share the same code
61 to access the IDE/ATA or SCSI devices. The information in the "Windows"
62 section below also applies to the Cygwin version.
63
64 F) Windows
65
66 The code was tested on Windows XP SP3, 2003, Vista, Windows 7, 8, 8.1
67 and Windows 10 up to 1709. Support von Windows 9x/ME and NT4 was
68 removed after smartmontools 5.43.
69
70 ATA or SATA devices are supported if the device driver implements
71 the SMART IOCTLs or IOCTL_IDE_PASS_THROUGH or IOCTL_ATA_PASS_THROUGH.
72 Only the latter provides full pass-through support which is needed
73 for all smartmontools features.
74
75 SATA devices behind a Intel RST driver are accessed through CSMI.
76
77 SCSI and USB devices are accessed through SPTI. Special driver support
78 is not required.
79
80 G) MacOS/Darwin
81
82 The code was tested on MacOS 10.3.4. It should work from 10.3
83 forwards. It doesn't support 10.2.
84
85 It's important to know that on 10.3.x, some things don't work
86 (see WARNINGS): due to bugs in the libraries used, you cannot run
87 a short test or switch SMART support off on a drive; if you try,
88 you will just run an extended test or switch SMART support on. So
89 don't panic when your "short" test seems to be taking hours.
90
91 It's also not possible at present to control when the offline
92 routine runs. If your drive doesn't have it running automatically by
93 default, you can't run it at all.
94
95 SCSI devices are not currently supported. Detecting the power
96 status of a drive is also not currently supported.
97
98 To summarize this, from another point of view, the things that
99 are not supported fall into two categories:
100
101 * Can't be implemented easily without more kernel-level support,
102 so far as I know:
103 - running immediate offline, conveyance, or selective tests
104 - running any test in captive mode
105 - aborting tests
106 - switching automatic offline testing on or off
107 - support for SCSI
108 - checking the power mode [-n Directive of smartd] (this is not
109 completely impossible, but not by using a documented API)
110
111 * Work on 10.4 and later, but not on 10.3:
112 - switching off SMART (switching *on* works fine)
113 - switching off auto-save (but why would you want to?)
114 - running the short test (that leaves you with only the extended test)
115
116 However, some things do work well. For ATA devices, all the
117 informational output is available, unless you want something that only
118 an offline test updates. On many newer Mac OS systems, the
119 hard drive comes with the offline test switched on by default, so
120 even that works.
121
122 The OS X SAT SMART Driver provides access to SMART data for SAT capable
123 USB and Firewire devices:
124 https://github.com/kasbert/OS-X-SAT-SMART-Driver
125 https://github.com/RJVB/OS-X-SAT-SMART-Driver
126 This does not require any smartctl -d TYPE option and should work also
127 with older smartmontools releases.
128
129 H) OS/2, eComStation
130
131 The code was tested on eComStation 1.1, but it should work on all versions
132 of OS/2.
133 Innotek LibC 0.5 runtime is required.
134 Only ATA disks are supported.
135
136 [2] Installing from SVN
137 =======================
138
139 Get the sources from the SVN repository:
140 svn co http://svn.code.sf.net/p/smartmontools/code/trunk/smartmontools smartmontools
141
142 Then type:
143 ./autogen.sh
144 and continue with step [3] below, skipping the "unpack the tarball" step.
145
146 The autogen.sh command is ONLY required when installing from
147 SVN. You need GNU Autoconf (version 2.60 or greater), GNU Automake
148 (version 1.10 or greater) and their dependencies installed in order
149 to run it.
150
151 [3] Installing from the source tarball
152 ======================================
153
154 If you are NOT installing from SVN, then unpack the tarball:
155 tar zxvf smartmontools-5.VERSION.tar.gz
156
157 Then:
158 ./configure
159 make
160 make install (you may need to be root to do this)
161
162 As shown (with no options to ./configure) this defaults to the
163 following set of installation directories and other settings:
164
165 --prefix=/usr/local
166 --exec-prefix='${prefix}'
167 --sbindir='${exec_prefix}/sbin'
168 --sysconfdir='${prefix}/etc'
169 --localstatedir='${prefix}/var'
170 --datarootdir='${prefix}/share'
171 --datadir='${datarootdir}'
172 --mandir='${datarootdir}/man'
173 --docdir='${datarootdir}/doc/smartmontools'
174 --disable-sample
175 --with-systemdsystemunitdir=auto
176 --with-systemdenvfile=auto
177 --with-initscriptdir=auto
178 --with-exampledir='${docdir}/examplescripts'
179 --with-drivedbdir='${datadir}/smartmontools'
180 --with-update-smart-drivedb
181 --with-gnupg
182 --with-smartdscriptdir='${sysconfdir}'
183 --with-smartdplugindir='${smartdscriptdir}/smartd_warning.d'
184 --with-scriptpath='/bin:/usr/bin'
185 --without-savestates
186 --without-attributelog
187 --with-os-deps='os_linux.o dev_areca.o' (platform specific)
188 --without-selinux
189 --with-libcap-ng=auto
190 --without-nvme-devicescan
191 --without-solaris-sparc-ata (Solaris SPARC only)
192 --with-working-snprintf (Windows: guessed)
193 --with-mingw-aslr=auto (Windows only)
194 --with-cxx11-option=auto
195
196 These will usually not overwrite existing "distribution" installations on
197 Linux Systems since the FHS reserves this area for use by the system
198 administrator.
199
200 For different installation locations or distributions, simply add
201 arguments to ./configure as shown in [4] below.
202
203 If you wish to alter the default C++ compiler flags, add
204 CXXFLAGS='your options' to ./configure command.
205
206 The first output line of smartctl and smartd provides information
207 about release number, last SVN checkin date and revison, platform,
208 and package. The latter defaults to "(local build)" and can be
209 changed by the variable BUILD_INFO, for example:
210 make BUILD_INFO='"(Debian 5.39-2)"'
211
212 [4] Guidelines for different Linux distributions
213 ================================================
214
215 Note: Please send corrections/additions to:
216 smartmontools-support@listi.jpberlin.de
217
218 Debian:
219 If you don't want to overwrite any distribution package, use:
220 ./configure
221
222 Filesystem Hierarchy Standard (FHS, http://www.pathname.com/fhs/):
223 ./configure --sbindir=/usr/local/sbin \
224 --sysconfdir=/usr/local/etc \
225 --mandir=/usr/local/man \
226 --docdir=/usr/local/share/doc/smartmontools \
227 --with-initscriptdir=/usr/local/etc/init.d
228
229 Red Hat:
230 ./configure --sbindir=/usr/sbin \
231 --sysconfdir=/etc \
232 --mandir=/usr/share/man \
233 --docdir=/usr/share/doc/smartmontools \
234 --with-initscriptdir=/etc/rc.d/init.d
235
236 Slackware:
237 If you don't want to overwrite any "distribution" package, use:
238 ./configure
239
240 Otherwise use:
241 ./configure --sbindir=/usr/sbin \
242 --sysconfdir=/etc \
243 --mandir=/usr/share/man \
244 --docdir=/usr/share/doc/smartmontools \
245 --with-initscriptdir=/etc/rc.d
246
247 And
248 removepkg smartmontools smartsuite (only root can do this)
249 before make install
250
251 The init script works on Slackware. You just have to add an entry like
252 the following in /etc/rc.d/rc.M or /etc/rc.d/rc.local:
253
254 if [ -x /etc/rc.d/smartd ]; then
255 . /etc/rc.d/smartd start
256 fi
257
258 To disable it:
259 chmod 644 /etc/rc.d/smartd
260
261 For a list of options:
262 /etc/rc.d/smartd
263
264 SuSE:
265 ./configure --sbindir=/usr/sbin \
266 --sysconfdir=/etc \
267 --mandir=/usr/share/man \
268 --docdir=/usr/share/doc/packages/smartmontools-VERSION \
269 --with-initscriptdir=/etc/init.d \
270
271 [5] Guidelines for FreeBSD
272 ==========================
273 To match the way it will installed when it becomes available as a PORT, use
274 the following:
275
276 ./configure --prefix=/usr/local \
277 --docdir=/usr/local/share/doc/smartmontools-VERSION \
278 --with-initscriptdir=/usr/local/etc/rc.d/ \
279 --enable-sample
280
281 NOTE: --enable-sample will cause the smartd.conf and smartd RC files to
282 be installed with the string '.sample' append to the name, so you will end
283 up with the following:
284 /usr/local/etc/smartd.conf.sample
285 /usr/local/etc/rc.d/smartd.sample
286
287
288 [6] Guidelines for Darwin
289 =========================
290 ./configure --with-initscriptdir=/Library/StartupItems
291
292 If you'd like to build the i386 version on a powerpc machine, you can
293 use
294
295 CXX='g++ -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386' \
296 ./configure --host=i386-apple-darwin \
297 --with-initscriptdir=/Library/StartupItems
298
299 [7] Guidelines for NetBSD
300 =========================
301 ./configure --prefix=/usr/pkg \
302 --docdir=/usr/pkg/share/doc/smartmontools
303
304 [8] Guidelines for Solaris
305 ==========================
306
307 smartmontools has been partially but not completely ported to
308 Solaris. It includes complete SCSI support but no ATA or 3ware
309 support. It can be compiled with either CC (Sun's C++ compiler)
310 or GNU g++.
311
312 To compile with g++:
313
314 ./configure [args]
315 make
316
317 To compile with Sun CC:
318
319 env CC=cc CXX=CC ./configure [args]
320 make
321
322 The correct arguments [args] to configure are:
323 --sbindir=/usr/sbin \
324 --sysconfdir=/etc \
325 --mandir=/usr/share/man \
326 --docdir=/usr/share/doc/smartmontools-VERSION \
327 --with-initscriptdir=/etc/init.d
328
329 To start the script automatically on bootup, create hardlinks that
330 indicate when to start/stop in:
331 /etc/rc[S0123].d/
332 pointing to /etc/init.d/smartd. Create:
333 K<knum>smartd in rcS.d, rc0.d, rc1.d, rc2.d
334 S<snum>smartd in rc3.d
335 where <knum> is related to <snum> such that the higher snum is the
336 lower knum must be.
337
338 On usual configuration, '95' would be suitable for <snum> and '05'
339 for <knum> respectively. If you choose these value, you can
340 create hardlinks by:
341
342 cd /etc
343 sh -c 'for n in S 0 1 2; do ln init.d/smartd rc$n.d/K05smartd; done'
344 sh -c 'for n in 3 ; do ln init.d/smartd rc$n.d/S95smartd; done'
345
346 [9] Guidelines for Cygwin
347 =========================
348
349 Same as Red Hat:
350 ./configure --prefix=/usr \
351 --sysconfdir=/etc \
352 --mandir='${prefix}/share/man'
353
354 OR EQUIVALENTLY
355 ./configure --sbindir=/usr/sbin \
356 --sysconfdir=/etc \
357 --mandir=/usr/share/man \
358 --docdir=/usr/share/doc/smartmontools \
359 --with-initscriptdir=/etc/rc.d/init.d
360
361 Using DOS text file type as default for the working directories ("textmode"
362 mount option) is not recommended. Building the binaries and man pages using
363 "make" is possible, but "make dist" and related targets work only with UNIX
364 file type ("binmode" mount option) set. The "autogen.sh" script prints a
365 warning if DOS type is selected.
366
367 Files may also be checked out with a non-Cygwin SVN client which uses CR/LF
368 for svn:eol-style=native. The "autogen.sh" script has svn:eol-style=LF.
369 Bash option "-o igncr" is not required.
370
371 [10] Guidelines for Windows
372 ===========================
373
374 To compile statically linked Windows release with MinGW gcc on MSYS, use:
375
376 ./configure
377 make
378
379 Instead of using "make install", copy the .exe files into
380 some directory in the PATH.
381
382 Cross-compile statically linked 32-bit and 64-bit versions with MinGW-w64:
383
384 ./configure --build=$(./config.guess) \
385 --host=i686-w64-mingw32
386
387 ./configure --build=$(./config.guess) \
388 --host=x86_64-w64-mingw32
389
390 Tested on Cygwin, Debian and Fedora.
391
392
393 To build the Windows binary distribution, use:
394
395 make dist-win32
396
397 This builds the distribution in directory
398
399 ./smartmontools-VERSION.win32/
400
401 and packs it into
402
403 ./smartmontools-VERSION.win32.zip
404
405 To create a Windows installer, use:
406
407 make installer-win32
408
409 This builds the distribution directory and packs it into the
410 self-extracting install program
411
412 ./smartmontools-VERSION.win32-setup.exe
413
414 The installer is build using the command "makensis" from the NSIS
415 package. See http://nsis.sourceforge.net/ for documentation and
416 download location.
417
418 It is also possible to (cross-)build the installer on Linux.
419 This was successfully tested on Debian and Fedora with package
420 "nsis".
421
422 To create a combined 32-/64-bit installer, use this in 32-bit build
423 directory if 64-build directory is at ../build64:
424
425 make builddir_win64=../build64 installer_win32
426
427 To both create and run the (interactive) installer, use:
428
429 make install-win32
430
431 Additional make targets are distdir-win32 to build the directory
432 only and cleandist-win32 for cleanup.
433
434 The binary distribution includes all documentation files converted
435 to DOS text file format and *.html and *.txt preformatted man pages.
436
437 To prepare os_win32/vc14 directory for MS Visual Studio C++ 2015 builds,
438 use the following on MSYS or Cygwin:
439
440 mkdir vctmp && cd vctmp
441 ../configure [... any MinGW option set from above ...]
442 make config-vc14
443
444 The MSVC project files (os_win32/vc14/*) are included in SVN (but not
445 in source tarball). The target config-vc14 from a Makefile configured
446 for MinGW creates os_win32/vc14/{config.h,smart*.rc,svnversion.h}.
447 The configure skript must be run outside of the source directory to
448 avoid inclusion of the original config.h.
449
450
451 [11] Guidelines for OS/2, eComStation
452 =====================================
453
454 To compile the OS/2 code, please run
455
456 ./configure
457 make
458 make install
459
460 [12] Guidelines for OpenBSD
461 ===========================
462 To match the way it will installed when it becomes available as a PORT, use
463 the following:
464
465 ./configure --prefix=/usr/local \
466 --sysconfdir=/etc \
467 --docdir=/usr/local/share/doc/smartmontools-VERSION \
468 --without-initscriptdir \
469 --enable-sample
470
471 NOTE: --enable-sample will cause the smartd.conf and smartd RC files to
472 be installed with the string '.sample' append to the name, so you will end
473 up with the following:
474 /etc/smartd.conf.sample
475
476 [13] Comments
477 ============
478
479 To compile from another directory, you can replace the step
480 ./configure [options]
481 by the following:
482 mkdir objdir
483 cd objdir
484 ../configure [options]
485
486 Man pages contents is platform-specific by default. Info specific to other
487 platforms may be not visible. To generate man pages with full contents use:
488
489 make os_man_filter=
490
491 To install to another destination (used mainly by package maintainers,
492 or to examine the package contents without risk of modifying any
493 system files) you can replace the step:
494 make install
495 with:
496 make DESTDIR=/home/myself/smartmontools-package install
497
498 Use a full path. Paths like ./smartmontools-package may not work.
499
500 After installing smartmontools, you can read the man pages, and try
501 out the commands:
502
503 man smartd.conf
504 man smartctl
505 man smartd
506
507 /usr/sbin/smartctl -s on -o on -S on /dev/sda (only root can do this)
508 /usr/sbin/smartctl -a /dev/sda (only root can do this)
509
510 Note that the default location for the manual pages are
511 /usr/share/man/man5 and /usr/share/man/man8. If "man" doesn't find
512 them, you may need to add /usr/share/man to your MANPATH environment
513 variable.
514
515 Source and binary packages for Windows are available at
516 http://sourceforge.net/projects/smartmontools/files/
517
518 Refer to http://www.smartmontools.org/wiki/Download for any additional
519 download and installation instructions.
520
521 The following files are installed if ./configure has no options:
522
523 /usr/local/sbin/smartctl [Executable command-line utility]
524 /usr/local/sbin/smartd [Executable daemon]
525 /usr/local/sbin/update-smart-drivedb [Drive database update script]
526 /usr/local/etc/smartd.conf [Configuration file for smartd daemon]
527 /usr/local/etc/smartd_warning.sh [Warning skript for smartd daemon]
528 /usr/local/share/man/man5/smartd.conf.5 [Manual page]
529 /usr/local/share/man/man8/smartctl.8 [Manual page]
530 /usr/local/share/man/man8/smartd.8 [Manual page]
531 /usr/local/share/man/man8/update-smart-drivedb.8 [Manual page]
532 /usr/local/share/doc/smartmontools/AUTHORS [Information about the authors and developers]
533 /usr/local/share/doc/smartmontools/ChangeLog [A log of changes. Also see SVN]
534 /usr/local/share/doc/smartmontools/COPYING [GNU General Public License Version 2]
535 /usr/local/share/doc/smartmontools/INSTALL [Installation instructions: what you're reading!]
536 /usr/local/share/doc/smartmontools/NEWS [Significant enhancements and fixes]
537 /usr/local/share/doc/smartmontools/README [Overview]
538 /usr/local/share/doc/smartmontools/TODO [Things that need to be done/fixed]
539 /usr/local/share/doc/smartmontools/smartd.conf [Example configuration file for smartd]
540 /usr/local/share/doc/smartmontools/examplescripts/ [Executable scripts for -M exec of smartd.conf (4 files)]
541 /usr/local/share/smartmontools/drivedb.h [Drive database]
542
543 Due to checks done by '--with-systemdsystemunitdir=auto' and '--with-initscriptdir=auto',
544 one of the following files may also be installed:
545
546 /usr/local/lib/systemd/system/smartd.service [Systemd service file for smartd]
547 /usr/local/etc/rc.d/init.d/smartd [Init/Startup script for smartd]
548 /usr/local/etc/init.d/smartd [Init/Startup script for smartd]
549 /usr/local/etc/rc.d/smartd [Init/Startup script for smartd]
550
551 If /usr/local/etc/smartd.conf exists and differs from the
552 default then the default configuration file is installed as
553 /usr/local/etc/smartd.conf.sample instead.
554
555 The commands:
556
557 make htmlman
558 make pdfman
559 make txtman
560
561 may be used to build .html, .pdf and .txt preformatted man pages.
562 These are used by the dist-win32 make target to build the Windows
563 distribution.
564 The commands also work on other operating system configurations
565 if suitable versions of man, man2html and groff are installed.
566 On systems without man2html, the following command should work
567 if groff is available:
568
569 make MAN2HTML='groff -man -Thtml' htmlman
570
571
572 Some of the source files are prepared for the documentation
573 generator Doxygen (http://www.doxygen.org/). If Doxygen is installed,
574 the command:
575
576 doxygen
577
578 creates HTML documentation in doc/html and LaTeX documentation
579 in doc/latex. If TeX is installed, the following command creates
580 a documentation file doc/latex/refman.pdf:
581
582 ( cd doc/latex && make pdf )
583
584
585 [14] Detailed description of arguments to configure command
586 ===========================================================
587
588 When you type:
589 ./configure --help
590 a description of available configure options is printed
591 [with defaults in square brackets]. See also section [3] above.
592
593
594 The following old configure options are no longer supported:
595
596 Old option Replacement
597 --with-docdir=DIR --docdir=DIR (autoconf >= 2.60)
598 --enable-drivedb [no option needed]
599 --disable-drivedb --without-drivedbdir
600 --enable-savestates --with-savestates[=yes]
601 --disable-savestates [no option needed]
602 --enable-attrbutelog --with-attributelog[=yes]
603 --disable-savestates [no option needed]
604
605
606 The defaults for --with-initscriptdir and --with-systemdsystemunitdir are
607 guessed such that the following rules apply:
608 - If --prefix=/usr --sysconfdir=/etc is specified, the guessed directories
609 should be the defaults used by the current OS or distribution.
610 - If --sysconfdir=/etc is NOT specified, the guessed directories should
611 always be below ${prefix} or below ${sysconfdir}.
612
613 Here's an example:
614 If you set --prefix=/home/joe and none of the other four
615 variables then the different directories that are used would be:
616 --sbindir /home/joe/sbin
617 --docdir /home/joe/share/doc/smartmontools
618 --mandir /home/joe/share/man
619 --sysconfdir /home/joe/etc
620 --with-exampledir /home/joe/share/doc/smartmontools/examplescripts
621 --with-drivedbdir /home/joe/share/smartmontools
622 --with-initscriptdir [see below]
623 --with-systemdsystemunitdir [see below]
624
625 If systemd is present (and pkg-config reports /lib/systemd/system
626 as the systemdsystemunitdir):
627
628 --with-initscriptdir [disabled]
629 --with-systemdsystemunitdir /home/joe/lib/systemd/system
630
631 else if /etc/rc.d/init.d exists:
632
633 --with-initscriptdir /home/joe/etc/rc.d/init.d
634 --with-systemdsystemunitdir [disabled]
635
636 else if /etc/init.d exists:
637
638 --with-initscriptdir /home/joe/etc/init.d
639 --with-systemdsystemunitdir [disabled]
640
641 else if /etc/rc.d exists:
642
643 --with-initscriptdir /home/joe/etc/rc.d
644 --with-systemdsystemunitdir [disabled]
645
646 else
647
648 --with-initscriptdir [disabled]
649 --with-systemdsystemunitdir [disabled]
650
651
652 Here are the differences with and without --enable-sample, assuming
653 that initscript location is set and no other options specified
654 (see above for details)
655
656 Case 1:
657 --enable-sample provided
658 ==> Files installed are:
659 /usr/local/etc/smartd.conf.sample
660 /usr/local/etc/rc.d/init.d/smartd.sample
661
662 Case 2:
663 --disable-sample provided or parameter left out
664 ==> Files installed are:
665 /usr/local/etc/smartd.conf
666 /usr/local/etc/rc.d/init.d/smartd
667
668 Additional information about using configure can be found here:
669 https://www.gnu.org/software/autoconf/manual/autoconf.html#Running-configure-Scripts