1 Smartmontools installation instructions
2 =======================================
4 $Id: INSTALL 4120 2015-08-27 16:12:21Z samm2 $
6 Please also see the smartmontools home page:
7 http://www.smartmontools.org/
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
24 [14] Detailed description of ./configure options
26 [1] System requirements
27 =======================
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.
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.
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.
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.
57 The code was tested on Cygwin 1.7.15-1. It should also work on other
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.
66 The code was tested on Windows XP SP3, 2003, Vista, Windows 7, 8, 8.1
67 and Windows 10 Release Preview. Support von Windows 9x/ME and NT4 was
68 removed after smartmontools 5.43.
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.
75 SCSI and USB devices are accessed through SPTI. Special driver support
78 3ware 9000 RAID controllers are supported using features available
79 in the Windows driver release 9.4.0 (3wareDrv.sys 3.0.2.70) or later.
80 Older drivers provide SMART access to the first physical drive (port)
81 of each logical drive (unit). If driver support is not available
82 (7000/8000 series, 9000 on XP 64), smartctl can be used to parse SMART
83 data output from CLI or 3DM.
87 The code was tested on MacOS 10.3.4. It should work from 10.3
88 forwards. It doesn't support 10.2.
90 It's important to know that on 10.3.x, some things don't work
91 (see WARNINGS): due to bugs in the libraries used, you cannot run
92 a short test or switch SMART support off on a drive; if you try,
93 you will just run an extended test or switch SMART support on. So
94 don't panic when your "short" test seems to be taking hours.
96 It's also not possible at present to control when the offline
97 routine runs. If your drive doesn't have it running automatically by
98 default, you can't run it at all.
100 SCSI devices are not currently supported. Detecting the power
101 status of a drive is also not currently supported.
103 To summarize this, from another point of view, the things that
104 are not supported fall into two categories:
106 * Can't be implemented easily without more kernel-level support,
108 - running immediate offline, conveyance, or selective tests
109 - running any test in captive mode
111 - switching automatic offline testing on or off
113 - checking the power mode [-n Directive of smartd] (this is not
114 completely impossible, but not by using a documented API)
116 * Work on 10.4 and later, but not on 10.3:
117 - switching off SMART (switching *on* works fine)
118 - switching off auto-save (but why would you want to?)
119 - running the short test (that leaves you with only the extended test)
121 However, some things do work well. For ATA devices, all the
122 informational output is available, unless you want something that only
123 an offline test updates. On many newer Mac OS systems, the
124 hard drive comes with the offline test switched on by default, so
127 The OS X SAT SMART Driver provides access to SMART data for SAT capable
128 USB and Firewire devices:
129 https://github.com/kasbert/OS-X-SAT-SMART-Driver
130 https://github.com/RJVB/OS-X-SAT-SMART-Driver
131 This does not require any smartctl -d TYPE option and should work also
132 with older smartmontools releases.
136 The code was tested on eComStation 1.1, but it should work on all versions
138 Innotek LibC 0.5 runtime is required.
139 Only ATA disks are supported.
141 [2] Installing from SVN
142 =======================
144 Get the sources from the SVN repository:
145 svn co http://svn.code.sf.net/p/smartmontools/code/trunk/smartmontools smartmontools
149 and continue with step [3] below, skipping the "unpack the tarball" step.
151 The autogen.sh command is ONLY required when installing from
152 SVN. You need GNU Autoconf (version 2.50 or greater), GNU Automake
153 (version 1.7 or greater) and their dependencies installed in order
154 to run it. You can get these here:
155 http://directory.fsf.org/project/autoconf/
156 http://directory.fsf.org/project/automake/
158 [3] Installing from the source tarball
159 ======================================
161 If you are NOT installing from SVN, then unpack the tarball:
162 tar zxvf smartmontools-5.VERSION.tar.gz
167 make install (you may need to be root to do this)
169 As shown (with no options to ./configure) this defaults to the
170 following set of installation directories and other settings:
173 --exec-prefix='${prefix}'
174 --sbindir='${exec_prefix}/sbin'
175 --sysconfdir='${prefix}/etc'
176 --localstatedir='${prefix}/var'
177 --datarootdir='${prefix}/share'
178 --datadir='${datarootdir}'
179 --mandir='${datarootdir}/man'
180 --docdir='${datarootdir}/doc/smartmontools'
182 --with-systemdsystemunitdir=auto
183 --with-systemdenvfile=auto
184 --with-initscriptdir=auto
185 --with-exampledir='${docdir}/examplescripts'
186 --with-drivedbdir='${datadir}/smartmontools'
187 --with-smartdscriptdir='${sysconfdir}'
188 --with-smartdplugindir='${smartdscriptdir}/smartd_warning.d'
190 --without-attributelog
191 --with-os-deps='os_linux.o dev_areca.o' (platform specific)
193 --with-libcap-ng=auto
194 --with-working-snprintf
196 These will usually not overwrite existing "distribution" installations on
197 Linux Systems since the FHS reserves this area for use by the system
200 For different installation locations or distributions, simply add
201 arguments to ./configure as shown in [4] below.
203 If you wish to alter the default C++ compiler flags, set an
204 environment variable CXXFLAGS='your options' before doing
205 ./configure, or else do:
206 make CXXFLAGS='your options'
208 The first output line of smartctl and smartd provides information
209 about release number, last SVN checkin date and revison, platform,
210 and package. The latter defaults to "(local build)" and can be
211 changed by the variable BUILD_INFO, for example:
212 make BUILD_INFO='"(Debian 5.39-2)"'
214 [4] Guidelines for different Linux distributions
215 ================================================
217 Note: Please send corrections/additions to:
218 smartmontools-support@lists.sourceforge.net
221 If you don't want to overwrite any distribution package, use:
224 Filesystem Hierarchy Standard (FHS, http://www.pathname.com/fhs/):
225 ./configure --sbindir=/usr/local/sbin \
226 --sysconfdir=/usr/local/etc \
227 --mandir=/usr/local/man \
228 --docdir=/usr/local/share/doc/smartmontools \
229 --with-initscriptdir=/usr/local/etc/init.d
232 ./configure --sbindir=/usr/sbin \
234 --mandir=/usr/share/man \
235 --docdir=/usr/share/doc/smartmontools \
236 --with-initscriptdir=/etc/rc.d/init.d
239 If you don't want to overwrite any "distribution" package, use:
243 ./configure --sbindir=/usr/sbin \
245 --mandir=/usr/share/man \
246 --docdir=/usr/share/doc/smartmontools \
247 --with-initscriptdir=/etc/rc.d
250 removepkg smartmontools smartsuite (only root can do this)
253 The init script works on Slackware. You just have to add an entry like
254 the following in /etc/rc.d/rc.M or /etc/rc.d/rc.local:
256 if [ -x /etc/rc.d/smartd ]; then
257 . /etc/rc.d/smartd start
261 chmod 644 /etc/rc.d/smartd
263 For a list of options:
267 ./configure --sbindir=/usr/sbin \
269 --mandir=/usr/share/man \
270 --docdir=/usr/share/doc/packages/smartmontools-VERSION \
271 --with-initscriptdir=/etc/init.d \
273 [5] Guidelines for FreeBSD
274 ==========================
275 To match the way it will installed when it becomes available as a PORT, use
278 ./configure --prefix=/usr/local \
279 --docdir=/usr/local/share/doc/smartmontools-VERSION \
280 --with-initscriptdir=/usr/local/etc/rc.d/ \
283 NOTE: --enable-sample will cause the smartd.conf and smartd RC files to
284 be installed with the string '.sample' append to the name, so you will end
285 up with the following:
286 /usr/local/etc/smartd.conf.sample
287 /usr/local/etc/rc.d/smartd.sample
290 [6] Guidelines for Darwin
291 =========================
292 ./configure --with-initscriptdir=/Library/StartupItems
294 If you'd like to build the i386 version on a powerpc machine, you can
297 CXX='g++ -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386' \
298 ./configure --host=i386-apple-darwin \
299 --with-initscriptdir=/Library/StartupItems
301 [7] Guidelines for NetBSD
302 =========================
303 ./configure --prefix=/usr/pkg \
304 --docdir=/usr/pkg/share/doc/smartmontools
306 [8] Guidelines for Solaris
307 ==========================
309 smartmontools has been partially but not completely ported to
310 Solaris. It includes complete SCSI support but no ATA or 3ware
311 support. It can be compiled with either CC (Sun's C++ compiler)
319 To compile with Sun CC:
321 env CC=cc CXX=CC ./configure [args]
324 The correct arguments [args] to configure are:
325 --sbindir=/usr/sbin \
327 --mandir=/usr/share/man \
328 --docdir=/usr/share/doc/smartmontools-VERSION \
329 --with-initscriptdir=/etc/init.d
331 To start the script automatically on bootup, create hardlinks that
332 indicate when to start/stop in:
334 pointing to /etc/init.d/smartd. Create:
335 K<knum>smartd in rcS.d, rc0.d, rc1.d, rc2.d
336 S<snum>smartd in rc3.d
337 where <knum> is related to <snum> such that the higher snum is the
340 On usual configuration, '95' would be suitable for <snum> and '05'
341 for <knum> respectively. If you choose these value, you can
345 sh -c 'for n in S 0 1 2; do ln init.d/smartd rc$n.d/K05smartd; done'
346 sh -c 'for n in 3 ; do ln init.d/smartd rc$n.d/S95smartd; done'
348 [9] Guidelines for Cygwin
349 =========================
352 ./configure --prefix=/usr \
354 --mandir='${prefix}/share/man'
357 ./configure --sbindir=/usr/sbin \
359 --mandir=/usr/share/man \
360 --docdir=/usr/share/doc/smartmontools \
361 --with-initscriptdir=/etc/rc.d/init.d
363 Using DOS text file type as default for the working directories ("textmode"
364 mount option) is not recommended. Building the binaries and man pages using
365 "make" is possible, but "make dist" and related targets work only with UNIX
366 file type ("binmode" mount option) set. The "autogen.sh" script prints a
367 warning if DOS type is selected.
369 Files may also be checked out with a non-Cygwin SVN client which uses CR/LF
370 for svn:eol-style=native. The "autogen.sh" script has svn:eol-style=LF.
371 Bash option "-o igncr" is not required.
373 [10] Guidelines for Windows
374 ===========================
376 To compile the Windows release with MinGW gcc on MSYS, use:
381 Instead of using "make install", copy the .exe files into
382 some directory in the PATH.
384 Cross-compile statically linked 32-bit and 64-bit versions with MinGW-w64:
386 ./configure --build=$(./config.guess) \
387 --host=i686-w64-mingw32 \
390 ./configure --build=$(./config.guess) \
391 --host=x86_64-w64-mingw32 \
394 Tested on Cygwin, Debian and Fedora.
397 To build the Windows binary distribution, use:
401 This builds the distribution in directory
403 ./smartmontools-VERSION.win32/
407 ./smartmontools-VERSION.win32.zip
409 To create a Windows installer, use:
413 This builds the distribution directory and packs it into the
414 self-extracting install program
416 ./smartmontools-VERSION.win32-setup.exe
418 The installer is build using the command "makensis" from the NSIS
419 package. See http://nsis.sourceforge.net/ for documentation and
422 It is also possible to (cross-)build the installer on Linux.
423 This was successfully tested on Debian and Fedora with package
426 To create a combined 32-/64-bit installer, use this in 32-bit build
427 directory if 64-build directory is at ../build64:
429 make builddir_win64=../build64 installer_win32
431 To both create and run the (interactive) installer, use:
435 Additional make targets are distdir-win32 to build the directory
436 only and cleandist-win32 for cleanup.
438 The binary distribution includes all documentation files converted
439 to DOS text file format and *.html and *.txt preformatted man pages.
441 To prepare os_win32 directory for MS Visual Studio C++ 2010 [Express],
442 use the following on MSYS or Cygwin:
444 mkdir vctmp && cd vctmp
445 ../configure [... any MinGW option set from above ...]
448 The MSVC project files (os_win32/vc10/*) are included in SVN (but not
449 in source tarball). The target config-vc10 from a Makefile configured
450 for MinGW creates os_win32/vc10/{config.h,smart*.rc,svnversion.h}.
451 The configure skript must be run outside of the source directory to
452 avoid inclusion of the original config.h.
455 [11] Guidelines for OS/2, eComStation
456 =====================================
458 To compile the OS/2 code, please run
460 ./os_os2/configure.os2
464 [12] Guidelines for OpenBSD
465 ===========================
466 To match the way it will installed when it becomes available as a PORT, use
469 ./configure --prefix=/usr/local \
471 --docdir=/usr/local/share/doc/smartmontools-VERSION \
472 --without-initscriptdir \
475 NOTE: --enable-sample will cause the smartd.conf and smartd RC files to
476 be installed with the string '.sample' append to the name, so you will end
477 up with the following:
478 /etc/smartd.conf.sample
483 To compile from another directory, you can replace the step
484 ./configure [options]
488 ../configure [options]
490 Man pages contents is platform-specific by default. Info specific to other
491 platforms may be not visible. To generate man pages with full contents use:
495 To install to another destination (used mainly by package maintainers,
496 or to examine the package contents without risk of modifying any
497 system files) you can replace the step:
500 make DESTDIR=/home/myself/smartmontools-package install
502 Use a full path. Paths like ./smartmontools-package may not work.
504 After installing smartmontools, you can read the man pages, and try
511 /usr/sbin/smartctl -s on -o on -S on /dev/sda (only root can do this)
512 /usr/sbin/smartctl -a /dev/sda (only root can do this)
514 Note that the default location for the manual pages are
515 /usr/share/man/man5 and /usr/share/man/man8. If "man" doesn't find
516 them, you may need to add /usr/share/man to your MANPATH environment
519 Source and binary packages for Windows are available at
520 http://sourceforge.net/projects/smartmontools/files/
522 Refer to http://www.smartmontools.org/wiki/Download for any additional
523 download and installation instructions.
525 The following files are installed if ./configure has no options:
527 /usr/local/sbin/smartctl [Executable command-line utility]
528 /usr/local/sbin/smartd [Executable daemon]
529 /usr/local/sbin/update-smart-drivedb [Drive database update script]
530 /usr/local/etc/smartd.conf [Configuration file for smartd daemon]
531 /usr/local/etc/smartd_warning.sh [Warning skript for smartd daemon]
532 /usr/local/share/man/man5/smartd.conf.5 [Manual page]
533 /usr/local/share/man/man8/smartctl.8 [Manual page]
534 /usr/local/share/man/man8/smartd.8 [Manual page]
535 /usr/local/share/man/man8/update-smart-drivedb.8 [Manual page]
536 /usr/local/share/doc/smartmontools/AUTHORS [Information about the authors and developers]
537 /usr/local/share/doc/smartmontools/ChangeLog [A log of changes. Also see SVN]
538 /usr/local/share/doc/smartmontools/COPYING [GNU General Public License Version 2]
539 /usr/local/share/doc/smartmontools/INSTALL [Installation instructions: what you're reading!]
540 /usr/local/share/doc/smartmontools/NEWS [Significant enhancements and fixes]
541 /usr/local/share/doc/smartmontools/README [Overview]
542 /usr/local/share/doc/smartmontools/TODO [Things that need to be done/fixed]
543 /usr/local/share/doc/smartmontools/smartd.conf [Example configuration file for smartd]
544 /usr/local/share/doc/smartmontools/examplescripts/ [Executable scripts for -M exec of smartd.conf (4 files)]
545 /usr/local/share/smartmontools/drivedb.h [Drive database]
547 Due to checks done by '--with-systemdsystemunitdir=auto' and '--with-initscriptdir=auto',
548 one of the following files may also be installed:
550 /usr/local/lib/systemd/system/smartd.service [Systemd service file for smartd]
551 /usr/local/etc/rc.d/init.d/smartd [Init/Startup script for smartd]
552 /usr/local/etc/init.d/smartd [Init/Startup script for smartd]
553 /usr/local/etc/rc.d/smartd [Init/Startup script for smartd]
555 If /usr/local/etc/smartd.conf exists and differs from the
556 default then the default configuration file is installed as
557 /usr/local/etc/smartd.conf.sample instead.
564 may be used to build .html and .txt preformatted man pages.
565 These are used by the dist-win32 make target to build the Windows
567 The commands also work on other operating system configurations
568 if suitable versions of man2html, groff and grotty are installed.
569 On systems without man2html, the following command should work
570 if groff is available:
572 make MAN2HTML='groff -man -Thtml' htmlman
575 Some of the source files are prepared for the documentation
576 generator Doxygen (http://www.doxygen.org/). If Doxygen is installed,
581 creates HTML documentation in doc/html and LaTeX documentation
582 in doc/latex. If TeX is installed, the following command creates
583 a documentation file doc/latex/refman.pdf:
585 ( cd doc/latex && make pdf )
588 [14] Detailed description of arguments to configure command
589 ===========================================================
593 a description of available configure options is printed
594 [with defaults in square brackets]. See also section [3] above.
597 The following old configure options are deprecated and will be removed
598 in a future release of smartmontools:
600 Old option Replacement
601 --with-docdir=DIR --docdir=DIR (autoconf >= 2.60)
602 --enable-drivedb [no option needed]
603 --disable-drivedb --without-drivedbdir
604 --enable-savestates --with-savestates[=yes]
605 --disable-savestates [no option needed]
606 --enable-attrbutelog --with-attributelog[=yes]
607 --disable-savestates [no option needed]
610 The defaults for --with-initscriptdir and --with-systemdsystemunitdir are
611 guessed such that the following rules apply:
612 - If --prefix=/usr --sysconfdir=/etc is specified, the guessed directories
613 should be the defaults used by the current OS or distribution.
614 - If --sysconfdir=/etc is NOT specified, the guessed directories should
615 always be below ${prefix} or below ${sysconfdir}.
618 If you set --prefix=/home/joe and none of the other four
619 variables then the different directories that are used would be:
620 --sbindir /home/joe/sbin
621 --docdir /home/joe/share/doc/smartmontools
622 --mandir /home/joe/share/man
623 --sysconfdir /home/joe/etc
624 --with-exampledir /home/joe/share/doc/smartmontools/examplescripts
625 --with-drivedbdir /home/joe/share/smartmontools
626 --with-initscriptdir [see below]
627 --with-systemdsystemunitdir [see below]
629 If systemd is present (and pkg-config reports /lib/systemd/system
630 as the systemdsystemunitdir):
632 --with-initscriptdir [disabled]
633 --with-systemdsystemunitdir /home/joe/lib/systemd/system
635 else if /etc/rc.d/init.d exists:
637 --with-initscriptdir /home/joe/etc/rc.d/init.d
638 --with-systemdsystemunitdir [disabled]
640 else if /etc/init.d exists:
642 --with-initscriptdir /home/joe/etc/init.d
643 --with-systemdsystemunitdir [disabled]
645 else if /etc/rc.d exists:
647 --with-initscriptdir /home/joe/etc/rc.d
648 --with-systemdsystemunitdir [disabled]
652 --with-initscriptdir [disabled]
653 --with-systemdsystemunitdir [disabled]
656 Here are the differences with and without --enable-sample, assuming
657 that initscript location is set and no other options specified
658 (see above for details)
661 --enable-sample provided
662 ==> Files installed are:
663 /usr/local/etc/smartd.conf.sample
664 /usr/local/etc/rc.d/init.d/smartd.sample
667 --disable-sample provided or parameter left out
668 ==> Files installed are:
669 /usr/local/etc/smartd.conf
670 /usr/local/etc/rc.d/init.d/smartd
672 Additional information about using configure can be found here:
673 http://www.gnu.org/software/autoconf/manual/autoconf.html#Running-configure-Scripts