Installation
------------

EnhanceIO requires Linux running kernel 3.7 or higher along with the procfs virtual filesystem
and udev utilities. The eio_cli utility requires Python2 version 2.6.6 or higher.

Older versions of the Linux kernel or Python may work, but will not be suppoerted.


Prerequisit
-----------

Building kernel modules from source requires that you have kernel development headers installed.

See your distribution's documentation for what packages you need installed for kernel 
development.


Install-EIO
-----------

For convienience and simplicity, EnhanceIO can now be build and installed using the new
Install-EIO script. It contains many useful options and saves a lot of time, especialy when
building for multiple kernels. 

Install Now:

   To build and install EnhanceIO and it's utilities immediately on the current kernel, 
   simply run:
   
   # ./Install-EIO
   
   This will build, install, and load the modules required by EnhanceIO, as well as installing
   eio_cli and it's manual, and even clean up the files leftover by make. No further steps are
   required.

Install For Another Kernel:
   
   To build/install for another kernel run:
   
   # ./Install-EIO -k <KERNEL_VERSION>
   
   This will assume that eio_cli has already been installed and will skip its installation.
   Installing eio_cli separately is covered below.
   
   It also assumes that you will not be building for the running kernel and will not load
   modules for the running kernel.
   Manualy loading modules is covered below.
   
Installing For Multiple Kernels:
   
   Install-EIO does not explicitly support building for multiple kernels. However it is
   theoretically possible to do so using a shell loop.
   
   For example:
   
   # for i in $(ls /lib/modules); do ./Install-EIO -k $i; done
   
   This assumes that the required kernel headers are installed for all present kernels.
   
Installing eio_cli Separately:
   
   Installing eio_cli with Install-EIO is as easy as running:
   
   # ./Install-EIO install-cli
   
   This will only install eio_cli and it's manual.
   
Manual Cleanup:
   
   Install-EIO allows you to skip the build cleanup and run it later. To do this just run:
   
   # ./Install-EIO cleanup
   
   This will only reomve the files created by make after the build process.
   
Other Install-EIO Options:
   
   For other options suppoted by Install-EIO run:
   
   # ./Install-EIO --help


Manual Installation
-------------------

If you feel the need to install EnhanceIO manualy, this is still an option.

Make and Make Install:
   
   To build and install the EnhanceIO modules run:
   
   # cd ./Driver/enhanceio
   # make && make install

Installing eio_cli:
   
   The best way to install the EnhanceIO utility is to use:
   
   # install -o root -g root -m 700 ./CLI/eio_cli /sbin/eio_cli
   
   The manual can be installed using:
   
   # install -o root -g root -m 644 ./CLI/eio_cli.8 /usr/share/man/man8/eio_cli.8
   
   This ensures the files are placed correctly with the correct owner, group, and permissions.
   
Loading Modules:
   
   Once the modules have been installed on the running kernel they can be loaded using:
   
   # modprode enhanceio
   # modprode enhanceio_rand
   # modprode enhanceio_fifo
   # modprode enhanceio_lru
   
   Once the modules have been loaded you will be able to use eio_cli to create/modify caches.
   
   
Notes
-----

Caches created with eio_cli will be persistent by default. See ./Ducuments/Persistence.txt.
