1 Smartmontools installation instructions
2 =======================================
4 $Id: INSTALL 4574 2017-10-29 15:41:13Z chrfranke $
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 2.9.0-3 x86 and x86_64. It should also
58 work on other recent releases.
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 up to 1709. 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 SATA devices behind a Intel RST driver are accessed through CSMI.
77 SCSI and USB devices are accessed through SPTI. Special driver support
82 The code was tested on MacOS 10.3.4. It should work from 10.3
83 forwards. It doesn't support 10.2.
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.
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.
95 SCSI devices are not currently supported. Detecting the power
96 status of a drive is also not currently supported.
98 To summarize this, from another point of view, the things that
99 are not supported fall into two categories:
101 * Can't be implemented easily without more kernel-level support,
103 - running immediate offline, conveyance, or selective tests
104 - running any test in captive mode
106 - switching automatic offline testing on or off
108 - checking the power mode [-n Directive of smartd] (this is not
109 completely impossible, but not by using a documented API)
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)
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
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.
131 The code was tested on eComStation 1.1, but it should work on all versions
133 Innotek LibC 0.5 runtime is required.
134 Only ATA disks are supported.
136 [2] Installing from SVN
137 =======================
139 Get the sources from the SVN repository:
140 svn co http://svn.code.sf.net/p/smartmontools/code/trunk/smartmontools smartmontools
144 and continue with step [3] below, skipping the "unpack the tarball" step.
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
151 [3] Installing from the source tarball
152 ======================================
154 If you are NOT installing from SVN, then unpack the tarball:
155 tar zxvf smartmontools-5.VERSION.tar.gz
160 make install (you may need to be root to do this)
162 As shown (with no options to ./configure) this defaults to the
163 following set of installation directories and other settings:
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'
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
182 --with-smartdscriptdir='${sysconfdir}'
183 --with-smartdplugindir='${smartdscriptdir}/smartd_warning.d'
184 --with-scriptpath='/bin:/usr/bin'
186 --without-attributelog
187 --with-os-deps='os_linux.o dev_areca.o' (platform specific)
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
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, add
204 CXXFLAGS='your options' to ./configure command.
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)"'
212 [4] Guidelines for different Linux distributions
213 ================================================
215 Note: Please send corrections/additions to:
216 smartmontools-support@listi.jpberlin.de
219 If you don't want to overwrite any distribution package, use:
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
230 ./configure --sbindir=/usr/sbin \
232 --mandir=/usr/share/man \
233 --docdir=/usr/share/doc/smartmontools \
234 --with-initscriptdir=/etc/rc.d/init.d
237 If you don't want to overwrite any "distribution" package, use:
241 ./configure --sbindir=/usr/sbin \
243 --mandir=/usr/share/man \
244 --docdir=/usr/share/doc/smartmontools \
245 --with-initscriptdir=/etc/rc.d
248 removepkg smartmontools smartsuite (only root can do this)
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:
254 if [ -x /etc/rc.d/smartd ]; then
255 . /etc/rc.d/smartd start
259 chmod 644 /etc/rc.d/smartd
261 For a list of options:
265 ./configure --sbindir=/usr/sbin \
267 --mandir=/usr/share/man \
268 --docdir=/usr/share/doc/packages/smartmontools-VERSION \
269 --with-initscriptdir=/etc/init.d \
271 [5] Guidelines for FreeBSD
272 ==========================
273 To match the way it will installed when it becomes available as a PORT, use
276 ./configure --prefix=/usr/local \
277 --docdir=/usr/local/share/doc/smartmontools-VERSION \
278 --with-initscriptdir=/usr/local/etc/rc.d/ \
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
288 [6] Guidelines for Darwin
289 =========================
290 ./configure --with-initscriptdir=/Library/StartupItems
292 If you'd like to build the i386 version on a powerpc machine, you can
295 CXX='g++ -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386' \
296 ./configure --host=i386-apple-darwin \
297 --with-initscriptdir=/Library/StartupItems
299 [7] Guidelines for NetBSD
300 =========================
301 ./configure --prefix=/usr/pkg \
302 --docdir=/usr/pkg/share/doc/smartmontools
304 [8] Guidelines for Solaris
305 ==========================
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)
317 To compile with Sun CC:
319 env CC=cc CXX=CC ./configure [args]
322 The correct arguments [args] to configure are:
323 --sbindir=/usr/sbin \
325 --mandir=/usr/share/man \
326 --docdir=/usr/share/doc/smartmontools-VERSION \
327 --with-initscriptdir=/etc/init.d
329 To start the script automatically on bootup, create hardlinks that
330 indicate when to start/stop in:
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
338 On usual configuration, '95' would be suitable for <snum> and '05'
339 for <knum> respectively. If you choose these value, you can
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'
346 [9] Guidelines for Cygwin
347 =========================
350 ./configure --prefix=/usr \
352 --mandir='${prefix}/share/man'
355 ./configure --sbindir=/usr/sbin \
357 --mandir=/usr/share/man \
358 --docdir=/usr/share/doc/smartmontools \
359 --with-initscriptdir=/etc/rc.d/init.d
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.
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.
371 [10] Guidelines for Windows
372 ===========================
374 To compile statically linked Windows release with MinGW gcc on MSYS, use:
379 Instead of using "make install", copy the .exe files into
380 some directory in the PATH.
382 Cross-compile statically linked 32-bit and 64-bit versions with MinGW-w64:
384 ./configure --build=$(./config.guess) \
385 --host=i686-w64-mingw32
387 ./configure --build=$(./config.guess) \
388 --host=x86_64-w64-mingw32
390 Tested on Cygwin, Debian and Fedora.
393 To build the Windows binary distribution, use:
397 This builds the distribution in directory
399 ./smartmontools-VERSION.win32/
403 ./smartmontools-VERSION.win32.zip
405 To create a Windows installer, use:
409 This builds the distribution directory and packs it into the
410 self-extracting install program
412 ./smartmontools-VERSION.win32-setup.exe
414 The installer is build using the command "makensis" from the NSIS
415 package. See http://nsis.sourceforge.net/ for documentation and
418 It is also possible to (cross-)build the installer on Linux.
419 This was successfully tested on Debian and Fedora with package
422 To create a combined 32-/64-bit installer, use this in 32-bit build
423 directory if 64-build directory is at ../build64:
425 make builddir_win64=../build64 installer_win32
427 To both create and run the (interactive) installer, use:
431 Additional make targets are distdir-win32 to build the directory
432 only and cleandist-win32 for cleanup.
434 The binary distribution includes all documentation files converted
435 to DOS text file format and *.html and *.txt preformatted man pages.
437 To prepare os_win32/vc14 directory for MS Visual Studio C++ 2015 builds,
438 use the following on MSYS or Cygwin:
440 mkdir vctmp && cd vctmp
441 ../configure [... any MinGW option set from above ...]
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.
451 [11] Guidelines for OS/2, eComStation
452 =====================================
454 To compile the OS/2 code, please run
460 [12] Guidelines for OpenBSD
461 ===========================
462 To match the way it will installed when it becomes available as a PORT, use
465 ./configure --prefix=/usr/local \
467 --docdir=/usr/local/share/doc/smartmontools-VERSION \
468 --without-initscriptdir \
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
479 To compile from another directory, you can replace the step
480 ./configure [options]
484 ../configure [options]
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:
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:
496 make DESTDIR=/home/myself/smartmontools-package install
498 Use a full path. Paths like ./smartmontools-package may not work.
500 After installing smartmontools, you can read the man pages, and try
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)
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
515 Source and binary packages for Windows are available at
516 http://sourceforge.net/projects/smartmontools/files/
518 Refer to http://www.smartmontools.org/wiki/Download for any additional
519 download and installation instructions.
521 The following files are installed if ./configure has no options:
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]
543 Due to checks done by '--with-systemdsystemunitdir=auto' and '--with-initscriptdir=auto',
544 one of the following files may also be installed:
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]
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.
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
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:
569 make MAN2HTML='groff -man -Thtml' htmlman
572 Some of the source files are prepared for the documentation
573 generator Doxygen (http://www.doxygen.org/). If Doxygen is installed,
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:
582 ( cd doc/latex && make pdf )
585 [14] Detailed description of arguments to configure command
586 ===========================================================
590 a description of available configure options is printed
591 [with defaults in square brackets]. See also section [3] above.
594 The following old configure options are no longer supported:
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]
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}.
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]
625 If systemd is present (and pkg-config reports /lib/systemd/system
626 as the systemdsystemunitdir):
628 --with-initscriptdir [disabled]
629 --with-systemdsystemunitdir /home/joe/lib/systemd/system
631 else if /etc/rc.d/init.d exists:
633 --with-initscriptdir /home/joe/etc/rc.d/init.d
634 --with-systemdsystemunitdir [disabled]
636 else if /etc/init.d exists:
638 --with-initscriptdir /home/joe/etc/init.d
639 --with-systemdsystemunitdir [disabled]
641 else if /etc/rc.d exists:
643 --with-initscriptdir /home/joe/etc/rc.d
644 --with-systemdsystemunitdir [disabled]
648 --with-initscriptdir [disabled]
649 --with-systemdsystemunitdir [disabled]
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)
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
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
668 Additional information about using configure can be found here:
669 https://www.gnu.org/software/autoconf/manual/autoconf.html#Running-configure-Scripts