mirror_smartmontools-debian/INSTALL
2018-08-09 09:01:20 +01:00

670 lines
24 KiB
Plaintext

Smartmontools installation instructions
=======================================
$Id: INSTALL 4574 2017-10-29 15:41:13Z chrfranke $
Please also see the smartmontools home page:
http://www.smartmontools.org/
Table of contents:
[1] System requirements
[2] Installing from SVN
[3] Installing from source tarball
[4] Guidelines for different Linux distributions
[5] Guidelines for FreeBSD
[6] Guidelines for Darwin
[7] Guidelines for NetBSD
[8] Guidelines for Solaris
[9] Guidelines for Cygwin
[10] Guidelines for Windows
[11] Guidelines for OS/2, eComStation
[12] Guidelines for OpenBSD
[13] Comments
[14] Detailed description of ./configure options
[1] System requirements
=======================
A) Linux
Any Linux distribution will support smartmontools if it has a
kernel version greater than or equal to 2.2.14. So any recent
Linux distribution should support smartmontools.
B) FreeBSD
For FreeBSD support, a 5-current kernel that includes ATAng is
required in order to support ATA drives. Even current versions of
ATAng will not support 100% operation, as the SMART status can not
be reliably retrieved. There is patch pending approval of the
ATAng driver maintainer that will address this issue.
C) Solaris
The SCSI code has been tested on a variety of Solaris 8 and 9
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.
E) Cygwin
The code was tested on Cygwin 2.9.0-3 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.
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
removed after smartmontools 5.43.
ATA or SATA devices are supported if the device driver implements
the SMART IOCTLs or IOCTL_IDE_PASS_THROUGH or IOCTL_ATA_PASS_THROUGH.
Only the latter provides full pass-through support which is needed
for all smartmontools features.
SATA devices behind a Intel RST driver are accessed through CSMI.
SCSI and USB devices are accessed through SPTI. Special driver support
is not required.
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.
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
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.
It's also not possible at present to control when the offline
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.
The OS X SAT SMART Driver provides access to SMART data for SAT capable
USB and Firewire devices:
https://github.com/kasbert/OS-X-SAT-SMART-Driver
https://github.com/RJVB/OS-X-SAT-SMART-Driver
This does not require any smartctl -d TYPE option and should work also
with older smartmontools releases.
H) OS/2, eComStation
The code was tested on eComStation 1.1, but it should work on all versions
of OS/2.
Innotek LibC 0.5 runtime is required.
Only ATA disks are supported.
[2] Installing from SVN
=======================
Get the sources from the SVN repository:
svn co http://svn.code.sf.net/p/smartmontools/code/trunk/smartmontools smartmontools
Then type:
./autogen.sh
and continue with step [3] below, skipping the "unpack the tarball" step.
The autogen.sh command is ONLY required when installing from
SVN. You need GNU Autoconf (version 2.60 or greater), GNU Automake
(version 1.10 or greater) and their dependencies installed in order
to run it.
[3] Installing from the source tarball
======================================
If you are NOT installing from SVN, then unpack the tarball:
tar zxvf smartmontools-5.VERSION.tar.gz
Then:
./configure
make
make install (you may need to be root to do this)
As shown (with no options to ./configure) this defaults to the
following set of installation directories and other settings:
--prefix=/usr/local
--exec-prefix='${prefix}'
--sbindir='${exec_prefix}/sbin'
--sysconfdir='${prefix}/etc'
--localstatedir='${prefix}/var'
--datarootdir='${prefix}/share'
--datadir='${datarootdir}'
--mandir='${datarootdir}/man'
--docdir='${datarootdir}/doc/smartmontools'
--disable-sample
--with-systemdsystemunitdir=auto
--with-systemdenvfile=auto
--with-initscriptdir=auto
--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'
--without-savestates
--without-attributelog
--with-os-deps='os_linux.o dev_areca.o' (platform specific)
--without-selinux
--with-libcap-ng=auto
--without-nvme-devicescan
--without-solaris-sparc-ata (Solaris SPARC only)
--with-working-snprintf (Windows: guessed)
--with-mingw-aslr=auto (Windows only)
--with-cxx11-option=auto
These will usually not overwrite existing "distribution" installations on
Linux Systems since the FHS reserves this area for use by the system
administrator.
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,
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)"'
[4] Guidelines for different Linux distributions
================================================
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 \
--mandir=/usr/share/man \
--docdir=/usr/share/doc/smartmontools \
--with-initscriptdir=/etc/rc.d/init.d
Slackware:
If you don't want to overwrite any "distribution" package, use:
./configure
Otherwise use:
./configure --sbindir=/usr/sbin \
--sysconfdir=/etc \
--mandir=/usr/share/man \
--docdir=/usr/share/doc/smartmontools \
--with-initscriptdir=/etc/rc.d
And
removepkg smartmontools smartsuite (only root can do this)
before make install
The init script works on Slackware. You just have to add an entry like
the following in /etc/rc.d/rc.M or /etc/rc.d/rc.local:
if [ -x /etc/rc.d/smartd ]; then
. /etc/rc.d/smartd start
fi
To disable it:
chmod 644 /etc/rc.d/smartd
For a list of options:
/etc/rc.d/smartd
SuSE:
./configure --sbindir=/usr/sbin \
--sysconfdir=/etc \
--mandir=/usr/share/man \
--docdir=/usr/share/doc/packages/smartmontools-VERSION \
--with-initscriptdir=/etc/init.d \
[5] Guidelines for FreeBSD
==========================
To match the way it will installed when it becomes available as a PORT, use
the following:
./configure --prefix=/usr/local \
--docdir=/usr/local/share/doc/smartmontools-VERSION \
--with-initscriptdir=/usr/local/etc/rc.d/ \
--enable-sample
NOTE: --enable-sample will cause the smartd.conf and smartd RC files to
be installed with the string '.sample' append to the name, so you will end
up with the following:
/usr/local/etc/smartd.conf.sample
/usr/local/etc/rc.d/smartd.sample
[6] Guidelines for Darwin
=========================
./configure --with-initscriptdir=/Library/StartupItems
If you'd like to build the i386 version on a powerpc machine, you can
use
CXX='g++ -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386' \
./configure --host=i386-apple-darwin \
--with-initscriptdir=/Library/StartupItems
[7] Guidelines for NetBSD
=========================
./configure --prefix=/usr/pkg \
--docdir=/usr/pkg/share/doc/smartmontools
[8] Guidelines for Solaris
==========================
smartmontools has been partially but not completely ported to
Solaris. It includes complete SCSI support but no ATA or 3ware
support. It can be compiled with either CC (Sun's C++ compiler)
or GNU g++.
To compile with g++:
./configure [args]
make
To compile with Sun CC:
env CC=cc CXX=CC ./configure [args]
make
The correct arguments [args] to configure are:
--sbindir=/usr/sbin \
--sysconfdir=/etc \
--mandir=/usr/share/man \
--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
===========================
To compile statically linked Windows release with MinGW gcc on MSYS, use:
./configure
make
Instead of using "make install", copy the .exe files into
some directory in the PATH.
Cross-compile statically linked 32-bit and 64-bit versions with MinGW-w64:
./configure --build=$(./config.guess) \
--host=i686-w64-mingw32
./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
./smartmontools-VERSION.win32/
and packs it into
./smartmontools-VERSION.win32.zip
To create a Windows installer, use:
make installer-win32
This builds the distribution directory and packs it into the
self-extracting install program
./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".
To create a combined 32-/64-bit installer, use this in 32-bit build
directory if 64-build directory is at ../build64:
make builddir_win64=../build64 installer_win32
To both create and run the (interactive) installer, use:
make install-win32
Additional make targets are distdir-win32 to build the directory
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 prepare os_win32/vc14 directory for MS Visual Studio C++ 2015 builds,
use the following on MSYS or Cygwin:
mkdir vctmp && cd vctmp
../configure [... any MinGW option set from above ...]
make config-vc14
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
avoid inclusion of the original config.h.
[11] Guidelines for OS/2, eComStation
=====================================
To compile the OS/2 code, please run
./configure
make
make install
[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
be installed with the string '.sample' append to the name, so you will end
up with the following:
/etc/smartd.conf.sample
[13] Comments
============
To compile from another directory, you can replace the step
./configure [options]
by the following:
mkdir objdir
cd objdir
../configure [options]
Man pages contents is platform-specific by default. Info specific to other
platforms may be not visible. To generate man pages with full contents use:
make os_man_filter=
To install to another destination (used mainly by package maintainers,
or to examine the package contents without risk of modifying any
system files) you can replace the step:
make install
with:
make DESTDIR=/home/myself/smartmontools-package install
Use a full path. Paths like ./smartmontools-package may not work.
After installing smartmontools, you can read the man pages, and try
out the commands:
man smartd.conf
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.
Source and binary packages for Windows are available at
http://sourceforge.net/projects/smartmontools/files/
Refer to http://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/smartctl [Executable command-line utility]
/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/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/man/man8/update-smart-drivedb.8 [Manual page]
/usr/local/share/doc/smartmontools/AUTHORS [Information about the authors and developers]
/usr/local/share/doc/smartmontools/ChangeLog [A log of changes. Also see SVN]
/usr/local/share/doc/smartmontools/COPYING [GNU General Public License Version 2]
/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/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:
/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
/usr/local/etc/smartd.conf.sample instead.
The commands:
make htmlman
make pdfman
make txtman
may be used to build .html, .pdf and .txt preformatted man pages.
These are used by the dist-win32 make target to build the Windows
distribution.
The commands also work on other operating system configurations
if suitable versions of man, man2html and groff are installed.
On systems without man2html, the following command should work
if groff is available:
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
===========================================================
When you type:
./configure --help
a description of available configure options is printed
[with defaults in square brackets]. See also section [3] above.
The following old configure options are no longer supported:
Old option Replacement
--with-docdir=DIR --docdir=DIR (autoconf >= 2.60)
--enable-drivedb [no option needed]
--disable-drivedb --without-drivedbdir
--enable-savestates --with-savestates[=yes]
--disable-savestates [no option needed]
--enable-attrbutelog --with-attributelog[=yes]
--disable-savestates [no option needed]
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:
--sbindir /home/joe/sbin
--docdir /home/joe/share/doc/smartmontools
--mandir /home/joe/share/man
--sysconfdir /home/joe/etc
--with-exampledir /home/joe/share/doc/smartmontools/examplescripts
--with-drivedbdir /home/joe/share/smartmontools
--with-initscriptdir [see below]
--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