Smartmontools installation instructions
=======================================
$Id: INSTALL 3555 2012-06-01 21:07:33Z chrfranke $
Please also see the smartmontools home page:
http://smartmontools.sourceforge.net/
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.
There are two parts of smartmontools that may require a patched or
nonstandard kernel:
(1) To get the ATA RETURN SMART STATUS command, the kernel needs
to support the HDIO_DRIVE_TASK ioctl().
(2) To run Selective Self-tests, the kernel needs to support the
HDIO_DRIVE_TASKFILE ioctl().
If your kernel does not support one or both of these ioctls, then
smartmontools will "mostly" work. The things that don't work will
give you harmless warning messages.
For item (1) above, any 2.4 or 2.6 series kernel will provide
HDIO_DRIVE_TASK support. Some 2.2.20 and later kernels also
provide this support IF they're properly patched and
configured. [Andre Hedrick's IDE patches may be found at
http://www.nic.funet.fi/pub/linux/kernel/people/hedrick/ide-2.2.20/
or are available from your local kernel.org mirror. They are not
updated for 2.2.21 or later, and may contain a few bugs.].
If the configuration option CONFIG_IDE_TASK_IOCTL
exists in your 2.2.X kernel source code tree, then your 2.2.X
kernel will probably support this ioctl. [Note that this kernel
configuration option does NOT need to be enabled. Its presence
merely indicates that the required HDIO_DRIVE_TASK ioctl() is
supported.]
For item (2) above, your kernel must be configured with the kernel
configuration option CONFIG_IDE_TASKFILE_IO enabled. This
configuration option is present in all 2.4 and 2.6 series
kernels. Some 2.2.20 and later kernels also provide this support
IF they're properly patched and configured as described above.
Please see FAQ section of the URL above for additional details.
If you are using 3ware controllers, for full functionality you
must either use version 1.02.00.037 or greater of the 3w-xxxx
driver, or patch earlier 3ware 3w-xxxx drivers. See
http://smartmontools.sourceforge.net/3w-xxxx.txt
for the patch. The version 1.02.00.037 3w-xxxx.c driver was
incorporated into kernel 2.4.23-bk2 on 3 December 2003 and into
kernel 2.6.0-test5-bk11 on 23 September 2003.
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 1.7.7-1. 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 98SE, ME, NT4(SP5,SP6), 2000(SP4),
XP(up to SP3), 2003, Vista and Windows 7.
-- Windows 9x/ME
On 9x/ME, only standard (legacy) IDE/ATA devices 0-3 are supported.
The driver SMARTVSD.VXD must be present in WINDOWS\SYSTEM\IOSUBSYS
to get loaded at Windows startup. The default location in a new
installation of some versions of Windows is the WINDOWS\SYSTEM folder.
In this case, move SMARTVSD.VXD to WINDOWS\SYSTEM\IOSUBSYS and reboot
(http://support.microsoft.com/kb/265854/en-us).
SMARTVSD.VXD relies on the standard IDE port driver ESDI_506.PDR.
If the system uses a vendor specific driver, access of SMART data
is not possible.
Some ATA controllers (e.g. Promise) provided a custom SMARTVSD.VXD
for their Win9x/ME driver. To access SMART data from both the legacy
(/dev/h[a-d]) and this additional (/dev/hd[e-h]) controller, rename
this file to SMARTVSE.VXD. Open the file with a hex editor and replace
all occurrences of the string "SMARTVSD" with "SMARTVSE". Then reinstall
the original Windows SMARTVSD.VXD.
To access SCSI and USB devices, an installed ASPI interface (WNASPI32.DLL)
is required. The code was tested with Adaptec Windows ASPI drivers 4.71.2.
(http://www.adaptec.com/en-US/support/_eol/scsi_sw/ASPI-4.70/)
Links to other ASPI drivers can be found at http://www.nu2.nu/aspi/.
-- Windows NT4/2000/XP/2003/Vista/Win7
ATA or SATA devices are supported if the device driver implements
the SMART IOCTLs or IOCTL_IDE_PASS_THROUGH or IOCTL_ATA_PASS_THROUGH.
The ATA SMART READ LOG command (smartctl -l, --log, -a, --all) is not
supported if only the SMART IOCTLs are implemented.
SCSI and USB devices are accessed through SPTI. Special driver support
is not required.
3ware 9000 RAID controllers are supported using features available
in the Windows driver release 9.4.0 (3wareDrv.sys 3.0.2.70) or later.
Older drivers provide SMART access to the first physical drive (port)
of each logical drive (unit). If driver support is not available
(7000/8000 series, 9000 on XP 64), smartctl can be used to parse SMART
data output from CLI or 3DM.
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.
Currently only ATA disks are supported, SCSI support will be added.
[2] Installing from SVN
=======================
Get the sources from the SVN repository:
svn co https://smartmontools.svn.sourceforge.net/svnroot/smartmontools/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.50 or greater), GNU Automake
(version 1.7 or greater) and their dependencies installed in order
to run it. You can get these here:
http://directory.fsf.org/project/autoconf/
http://directory.fsf.org/project/automake/
[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:
--prefix=/usr/local
--sbindir=/usr/local/sbin
--sysconfdir=/usr/local/etc
--mandir=/usr/local/share/man
--docdir=/usr/local/share/doc/smartmontools
--with-exampledir=/usr/local/share/doc/smartmontools/examplescripts
--with-drivedbdir=/usr/local/share/smartmontools
--with-initscriptdir=auto
--with-systemdsystemunitdir=auto
--enable-drivedb
--disable-attributelog
--disable-sample
--disable-savestates
--with-libcap-ng=auto
--without-selinux
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, set an
environment variable CXXFLAGS='your options' before doing
./configure, or else do:
make CXXFLAGS='your options'
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@lists.sourceforge.net
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