Smartmontools installation instructions
=======================================
-$Id: INSTALL 4574 2017-10-29 15:41:13Z chrfranke $
+$Id: INSTALL 4880 2018-12-29 20:27:01Z chrfranke $
Please also see the smartmontools home page:
-http://www.smartmontools.org/
+https://www.smartmontools.org/
Table of contents:
[1] System requirements
=======================
+ Note: Some of this info is outdated as it refers to very old OS
+ versions.
+
A) Linux
Any Linux distribution will support smartmontools if it has a
C) Solaris
- The SCSI code has been tested on a variety of Solaris 8 and 9
+ The SCSI code has been tested on a variety of Solaris 8 or later
systems. ATA/IDE code only works on SPARC platform. All tested
kernels worked correctly.
D) NetBSD/OpenBSD
The code was tested on a 1.6ZG (i.e., 1.6-current) system. It should
- also function under 1.6.1 and later releases (unverified). Currently
- it doesn't support ATA devices on 3ware RAID controllers.
+ also function under 1.6.1 and later releases.
E) Cygwin
- The code was tested on Cygwin 2.9.0-3 x86 and x86_64. It should also
+ The code was tested on Cygwin 2.11.* x86 and x86_64. It should also
work on other recent releases.
Both Cygwin and Windows versions of smartmontools share the same code
- to access the IDE/ATA or SCSI devices. The information in the "Windows"
- section below also applies to the Cygwin version.
+ to access the raw devices. The information in the "Windows" section
+ below also applies to the Cygwin version.
F) Windows
The code was tested on Windows XP SP3, 2003, Vista, Windows 7, 8, 8.1
- and Windows 10 up to 1709. Support von Windows 9x/ME and NT4 was
+ and Windows 10 up to 1809. Support von Windows 9x/ME and NT4 was
removed after smartmontools 5.43.
ATA or SATA devices are supported if the device driver implements
SCSI and USB devices are accessed through SPTI. Special driver support
is not required.
+ NVMe devices are supported with the Windows 10 NVMe driver or with
+ vendor specific drivers supporting NVME_PASS_THROUGH.
+
G) MacOS/Darwin
The code was tested on MacOS 10.3.4. It should work from 10.3
forwards. It doesn't support 10.2.
+ Only basic SMART commands are supported for ATA devices.
+
It's important to know that on 10.3.x, some things don't work
- (see WARNINGS): due to bugs in the libraries used, you cannot run
+ due to bugs in the libraries used, you cannot run
a short test or switch SMART support off on a drive; if you try,
you will just run an extended test or switch SMART support on. So
don't panic when your "short" test seems to be taking hours.
routine runs. If your drive doesn't have it running automatically by
default, you can't run it at all.
- SCSI devices are not currently supported. Detecting the power
- status of a drive is also not currently supported.
-
- To summarize this, from another point of view, the things that
- are not supported fall into two categories:
-
- * Can't be implemented easily without more kernel-level support,
- so far as I know:
- - running immediate offline, conveyance, or selective tests
- - running any test in captive mode
- - aborting tests
- - switching automatic offline testing on or off
- - support for SCSI
- - checking the power mode [-n Directive of smartd] (this is not
- completely impossible, but not by using a documented API)
-
- * Work on 10.4 and later, but not on 10.3:
- - switching off SMART (switching *on* works fine)
- - switching off auto-save (but why would you want to?)
- - running the short test (that leaves you with only the extended test)
-
- However, some things do work well. For ATA devices, all the
- informational output is available, unless you want something that only
- an offline test updates. On many newer Mac OS systems, the
- hard drive comes with the offline test switched on by default, so
- even that works.
+ SCSI devices are not currently supported.
The OS X SAT SMART Driver provides access to SMART data for SAT capable
USB and Firewire devices:
=======================
Get the sources from the SVN repository:
- svn co http://svn.code.sf.net/p/smartmontools/code/trunk/smartmontools smartmontools
+ svn co https://svn.code.sf.net/p/smartmontools/code/trunk/smartmontools smartmontools
Then type:
+ cd smartmontools
./autogen.sh
and continue with step [3] below, skipping the "unpack the tarball" step.
======================================
If you are NOT installing from SVN, then unpack the tarball:
- tar zxvf smartmontools-5.VERSION.tar.gz
+ tar xvf smartmontools-VERSION.tar.gz
Then:
./configure
--mandir='${datarootdir}/man'
--docdir='${datarootdir}/doc/smartmontools'
--disable-sample
- --with-systemdsystemunitdir=auto
- --with-systemdenvfile=auto
- --with-initscriptdir=auto
+ --disable-scsi-cdb-check
+ --enable-fast-lebe
+ --without-initscriptdir
--with-exampledir='${docdir}/examplescripts'
--with-drivedbdir='${datadir}/smartmontools'
--with-update-smart-drivedb
--with-gnupg
--with-smartdscriptdir='${sysconfdir}'
--with-smartdplugindir='${smartdscriptdir}/smartd_warning.d'
- --with-scriptpath='/bin:/usr/bin'
+ --with-scriptpath='/usr/local/bin:/bin:/usr/bin'
--without-savestates
--without-attributelog
--with-os-deps='os_linux.o dev_areca.o' (platform specific)
--without-selinux
--with-libcap-ng=auto
- --without-nvme-devicescan
+ --with-libsystemd=auto
+ --with-systemdsystemunitdir=auto
+ --with-systemdenvfile=auto
+ --with-nvme-devicescan (Linux, Windows: yes; Others: no)
--without-solaris-sparc-ata (Solaris SPARC only)
- --with-working-snprintf (Windows: guessed)
+ --with-signal-func=sigaction
+ --with-working-snprintf
--with-mingw-aslr=auto (Windows only)
--with-cxx11-option=auto
+ --without-cxx11-regex
These will usually not overwrite existing "distribution" installations on
Linux Systems since the FHS reserves this area for use by the system
For different installation locations or distributions, simply add
arguments to ./configure as shown in [4] below.
- If you wish to alter the default C++ compiler flags, add
- CXXFLAGS='your options' to ./configure command.
-
The first output line of smartctl and smartd provides information
- about release number, last SVN checkin date and revison, platform,
+ about release number, last SVN checkin date and revision, platform,
and package. The latter defaults to "(local build)" and can be
changed by the variable BUILD_INFO, for example:
make BUILD_INFO='"(Debian 5.39-2)"'
Note: Please send corrections/additions to:
smartmontools-support@listi.jpberlin.de
-Debian:
- If you don't want to overwrite any distribution package, use:
- ./configure
-
-Filesystem Hierarchy Standard (FHS, http://www.pathname.com/fhs/):
- ./configure --sbindir=/usr/local/sbin \
- --sysconfdir=/usr/local/etc \
- --mandir=/usr/local/man \
- --docdir=/usr/local/share/doc/smartmontools \
- --with-initscriptdir=/usr/local/etc/init.d
-
Red Hat:
./configure --sbindir=/usr/sbin \
--sysconfdir=/etc \
[6] Guidelines for Darwin
=========================
+
./configure --with-initscriptdir=/Library/StartupItems
If you'd like to build the i386 version on a powerpc machine, you can
[7] Guidelines for NetBSD
=========================
+
./configure --prefix=/usr/pkg \
--docdir=/usr/pkg/share/doc/smartmontools
==========================
smartmontools has been partially but not completely ported to
- Solaris. It includes complete SCSI support but no ATA or 3ware
+ Solaris. It includes complete SCSI support but no ATA or NVMe
support. It can be compiled with either CC (Sun's C++ compiler)
or GNU g++.
--docdir=/usr/share/doc/smartmontools-VERSION \
--with-initscriptdir=/etc/init.d
- To start the script automatically on bootup, create hardlinks that
- indicate when to start/stop in:
- /etc/rc[S0123].d/
- pointing to /etc/init.d/smartd. Create:
- K<knum>smartd in rcS.d, rc0.d, rc1.d, rc2.d
- S<snum>smartd in rc3.d
- where <knum> is related to <snum> such that the higher snum is the
- lower knum must be.
-
- On usual configuration, '95' would be suitable for <snum> and '05'
- for <knum> respectively. If you choose these value, you can
- create hardlinks by:
-
- cd /etc
- sh -c 'for n in S 0 1 2; do ln init.d/smartd rc$n.d/K05smartd; done'
- sh -c 'for n in 3 ; do ln init.d/smartd rc$n.d/S95smartd; done'
-
[9] Guidelines for Cygwin
=========================
-Same as Red Hat:
./configure --prefix=/usr \
--sysconfdir=/etc \
- --mandir='${prefix}/share/man'
-
- OR EQUIVALENTLY
- ./configure --sbindir=/usr/sbin \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --docdir=/usr/share/doc/smartmontools \
--with-initscriptdir=/etc/rc.d/init.d
- Using DOS text file type as default for the working directories ("textmode"
- mount option) is not recommended. Building the binaries and man pages using
- "make" is possible, but "make dist" and related targets work only with UNIX
- file type ("binmode" mount option) set. The "autogen.sh" script prints a
- warning if DOS type is selected.
-
- Files may also be checked out with a non-Cygwin SVN client which uses CR/LF
- for svn:eol-style=native. The "autogen.sh" script has svn:eol-style=LF.
- Bash option "-o igncr" is not required.
-
[10] Guidelines for Windows
===========================
./configure --build=$(./config.guess) \
--host=x86_64-w64-mingw32
- Tested on Cygwin, Debian and Fedora.
-
-
-To build the Windows binary distribution, use:
-
- make dist-win32
-
- This builds the distribution in directory
+ Tested on Cygwin, Debian, Fedora and Ubuntu.
- ./smartmontools-VERSION.win32/
- and packs it into
-
- ./smartmontools-VERSION.win32.zip
-
-To create a Windows installer, use:
+To create the Windows installer, use:
make installer-win32
./smartmontools-VERSION.win32-setup.exe
The installer is build using the command "makensis" from the NSIS
- package. See http://nsis.sourceforge.net/ for documentation and
- download location.
-
- It is also possible to (cross-)build the installer on Linux.
- This was successfully tested on Debian and Fedora with package
- "nsis".
+ package (https://nsis.sourceforge.net/).
To create a combined 32-/64-bit installer, use this in 32-bit build
directory if 64-build directory is at ../build64:
only and cleandist-win32 for cleanup.
The binary distribution includes all documentation files converted
- to DOS text file format and *.html and *.txt preformatted man pages.
+ to DOS text file format and *.html and *.pdf preformatted man pages.
To prepare os_win32/vc14 directory for MS Visual Studio C++ 2015 builds,
use the following on MSYS or Cygwin:
The MSVC project files (os_win32/vc14/*) are included in SVN (but not
in source tarball). The target config-vc14 from a Makefile configured
for MinGW creates os_win32/vc14/{config.h,smart*.rc,svnversion.h}.
- The configure skript must be run outside of the source directory to
+ The configure script must be run outside of the source directory to
avoid inclusion of the original config.h.
+ Additional MSVC related make targets are clean-vc14, distclean-vc14
+ and maintainer-clean-vc14.
[11] Guidelines for OS/2, eComStation
[12] Guidelines for OpenBSD
===========================
+
To match the way it will installed when it becomes available as a PORT, use
the following:
./configure --prefix=/usr/local \
--sysconfdir=/etc \
--docdir=/usr/local/share/doc/smartmontools-VERSION \
- --without-initscriptdir \
--enable-sample
NOTE: --enable-sample will cause the smartd.conf and smartd RC files to
man smartctl
man smartd
-/usr/sbin/smartctl -s on -o on -S on /dev/sda (only root can do this)
-/usr/sbin/smartctl -a /dev/sda (only root can do this)
-
-Note that the default location for the manual pages are
-/usr/share/man/man5 and /usr/share/man/man8. If "man" doesn't find
-them, you may need to add /usr/share/man to your MANPATH environment
-variable.
+sudo /usr/sbin/smartctl -x /dev/sda
Source and binary packages for Windows are available at
-http://sourceforge.net/projects/smartmontools/files/
+https://sourceforge.net/projects/smartmontools/files/
-Refer to http://www.smartmontools.org/wiki/Download for any additional
+Refer to https://www.smartmontools.org/wiki/Download for any additional
download and installation instructions.
The following files are installed if ./configure has no options:
/usr/local/sbin/smartd [Executable daemon]
/usr/local/sbin/update-smart-drivedb [Drive database update script]
/usr/local/etc/smartd.conf [Configuration file for smartd daemon]
-/usr/local/etc/smartd_warning.sh [Warning skript for smartd daemon]
+/usr/local/etc/smartd_warning.sh [Warning script for smartd daemon]
/usr/local/share/man/man5/smartd.conf.5 [Manual page]
/usr/local/share/man/man8/smartctl.8 [Manual page]
/usr/local/share/man/man8/smartd.8 [Manual page]
/usr/local/share/doc/smartmontools/INSTALL [Installation instructions: what you're reading!]
/usr/local/share/doc/smartmontools/NEWS [Significant enhancements and fixes]
/usr/local/share/doc/smartmontools/README [Overview]
-/usr/local/share/doc/smartmontools/TODO [Things that need to be done/fixed]
+/usr/local/share/doc/smartmontools/TODO [No longer maintained]
/usr/local/share/doc/smartmontools/smartd.conf [Example configuration file for smartd]
/usr/local/share/doc/smartmontools/examplescripts/ [Executable scripts for -M exec of smartd.conf (4 files)]
/usr/local/share/smartmontools/drivedb.h [Drive database]
-Due to checks done by '--with-systemdsystemunitdir=auto' and '--with-initscriptdir=auto',
-one of the following files may also be installed:
+Due to checks done by '--with-systemdsystemunitdir=auto', the following file may also be installed:
/usr/local/lib/systemd/system/smartd.service [Systemd service file for smartd]
-/usr/local/etc/rc.d/init.d/smartd [Init/Startup script for smartd]
-/usr/local/etc/init.d/smartd [Init/Startup script for smartd]
-/usr/local/etc/rc.d/smartd [Init/Startup script for smartd]
If /usr/local/etc/smartd.conf exists and differs from the
default then the default configuration file is installed as
make MAN2HTML='groff -man -Thtml' htmlman
-Some of the source files are prepared for the documentation
-generator Doxygen (http://www.doxygen.org/). If Doxygen is installed,
-the command:
-
-doxygen
-
-creates HTML documentation in doc/html and LaTeX documentation
-in doc/latex. If TeX is installed, the following command creates
-a documentation file doc/latex/refman.pdf:
-
-( cd doc/latex && make pdf )
-
-
[14] Detailed description of arguments to configure command
===========================================================
--disable-savestates [no option needed]
--enable-attrbutelog --with-attributelog[=yes]
--disable-savestates [no option needed]
+--with-initscriptdir[=yes] --with-initscriptdir=DIR
+--with-initscriptdir=auto --with-initscriptdir=DIR
-The defaults for --with-initscriptdir and --with-systemdsystemunitdir are
-guessed such that the following rules apply:
-- If --prefix=/usr --sysconfdir=/etc is specified, the guessed directories
- should be the defaults used by the current OS or distribution.
-- If --sysconfdir=/etc is NOT specified, the guessed directories should
- always be below ${prefix} or below ${sysconfdir}.
-
Here's an example:
If you set --prefix=/home/joe and none of the other four
variables then the different directories that are used would be:
--sysconfdir /home/joe/etc
--with-exampledir /home/joe/share/doc/smartmontools/examplescripts
--with-drivedbdir /home/joe/share/smartmontools
---with-initscriptdir [see below]
+--with-initscriptdir [disabled]
--with-systemdsystemunitdir [see below]
If systemd is present (and pkg-config reports /lib/systemd/system
as the systemdsystemunitdir):
---with-initscriptdir [disabled]
--with-systemdsystemunitdir /home/joe/lib/systemd/system
-else if /etc/rc.d/init.d exists:
-
---with-initscriptdir /home/joe/etc/rc.d/init.d
---with-systemdsystemunitdir [disabled]
-
-else if /etc/init.d exists:
-
---with-initscriptdir /home/joe/etc/init.d
---with-systemdsystemunitdir [disabled]
-
-else if /etc/rc.d exists:
-
---with-initscriptdir /home/joe/etc/rc.d
---with-systemdsystemunitdir [disabled]
-
else
---with-initscriptdir [disabled]
--with-systemdsystemunitdir [disabled]
-Here are the differences with and without --enable-sample, assuming
-that initscript location is set and no other options specified
-(see above for details)
-
-Case 1:
---enable-sample provided
-==> Files installed are:
- /usr/local/etc/smartd.conf.sample
- /usr/local/etc/rc.d/init.d/smartd.sample
-
-Case 2:
---disable-sample provided or parameter left out
-==> Files installed are:
- /usr/local/etc/smartd.conf
- /usr/local/etc/rc.d/init.d/smartd
-
Additional information about using configure can be found here:
https://www.gnu.org/software/autoconf/manual/autoconf.html#Running-configure-Scripts