* Checkout the Makefile.am from ZoL.
  + Remove all ZoL related crud.
  + Add a test, test_verify, cleanup and target to compile stuff we need.
  + Create three 10GB files which we can use to create pools on, instead of
    using raw disks/devices.
  + Link Makefile.am to Makefile - we'll fix that later with autoconf rules.
* Add basic makefiles for linux to compile the binaries required by test..
  + Make the binaries we need compile and run on Linux.
* Ignore the binary commands, *.o and *~ files.
Test case run file for Linux which is a copy of openindiana.run.
+ Since ZFS On Linux doesn't have the 'aclmode' property (yet), skip that when testing.
+ On Linux, the cli_user/zpool_{iostat,list} tests needs to run as root.
+ Disable the ACL test case. Doesn't work in Linux because we don't have ACLs.
+ Disable functional/inheritance - Linux don't have aclmode.
+ Disable cli_root/zpool_{add,create,remove} - "This directory cannot be run on raw files".
+ Disable functional/grow_{pool,replicas} - This directory cannot be run on raw files.
+ Disable functional/{interop,mdb} - Doesn't make sense in Linux (no metadb/metainit command).
+ Note that there's something wrong with the 'largest_file' command - fails but succeeds (!!)
* Add a linux commands config file, rename the old and create a wrapper
  that loads either of these depending on system.
  + Export the env variable LINUX=1 if it's a Linux system.
* Move TEST_BASE_DIR to /var/tmp to not clutter the root directory.
* Special considerations for linux/bsd (tar options, /dev/zvol location etc).
* Set MNTTAB=/etc/mtab on Linux and /etc/mnttab on BSD
* Use getent instead of groupmod (which don't exist in Linux) in libtest.shlib:add_group().
* For missing commands in Linux, run 'scripts/missing_cmd'
  + include the command name missing
  + exit with errorcode to make sure test fails.
  + write to STDERR.
* A script using truncate or dd that will emulate 'mkfile' for the tests.
  + Support creating sparse files (add -s as valid option to script)
* Script to generate logs for the FAIL only on stdout.
* Replace hardcoded /dev/zvol/{dsk,rdsk} with ZVOL_[R]DEVDIR.
* Some commands behave differently (tar, cpio, cp, ls, pax etc) on Linux.
* Don't put stuff in /. Use TESTDIR as base.
* NEWFS (defined to be ext2fs on Linux) creates a ext2 filesystem by default.
  So use $NEWFS_DEFAULT_FS instead of hardcoded 'ufs'
* Use /dev/urandom (which is faster) instead of /dev/random.
In ismounted(), support finding ext2 mounts
In ismounted(), try to find zvols mounted.
* Replace hardcoded path to /etc/mnttab to MNTTAB from commands.cfg.
* Fix is_physical_device() to recognize devs on Linux.
* In add_group(), groupadd return 9 if group already exists - re-set it to 4
  to avoid to much clutter in the case.
* Use getent instead of groupmod to find if a group exists or not.
* Use LINUX instead of 'uname -a | grep' - faster.
* Add support for Linux
  + by using 'parted' in set_partition() and get_endslice().
  + by using 'exportfs' in setup_nfs_server().
  + by renaming find_disks() to find_disks_bsd() and write find_disks_linux(),
    using a 'wrapper function' to call one of the two.
* Since we're using exportfs to get shares, the share point is $1, not $2 as with the cmd 'share'.
* Translate 'psrinfo -p' to Linux 'grep ^processor /proc/cpuinfo | wc -l' in is_mp().
Don't use hardcoded paths and command, use the variables defined in commands.cfg.
* Remove exact path to kill, true and sudo.
* Add .{ksh,sh} to the command to allow to run without installing.
  + Ditto for verifying file name.
* Include default.cfg at the top instead of the bottom (to get command variable defines etc).
* Remove Don't use hardcoded paths and command, use the variables defined in commands.cfg.
* Some stuff isn't relevant on Linux.
* Don't force set STF_{SUITE,TOOLS}. Use value from env if availible.
* Rename find_disks() to find_disks_zfstest() to not clash with one from lib.
* Since we moved the basic test dir (from / to /var/tmp), make sure they exist.
Unpack the 'upgrade pool' images in /var/tmp/test_results instead of the
previously created pool. If that is using loop files, a kernel crash
will happen on Linux.
On Linux, we must use 'kpartx' after partitioning the raw disk file
to create a loop device with partitions (partitioning a raw disk file
does not create the parition files/devices).
+ In Linux, the 'disk part' is called a 'partition' and is labeled
  with a '<device>p<nr>' instead of '<device>s<nr>' (slice).
+ Overwrite some variables defined in the config file.
+  Cleanup (reorder/'prettify') the definition of the META_* variables.
+ In Linux we create a ext2 filesystem by default, not ufs.
Some tests works on Linux but fail on BSD. Use log_{must,mustnot} appropriately.
Since Linux don't have 'coreadm', we use the procedure used on Linux instead.
+ This means using the /proc filesystem and ulimit.
* In setup_snap_env(), support 'newfs' on Linux (really mke2fs) which behave a little different
* In cleanup_env(), look for any mounted zvols - !!!NEEDS BSD VERIFICATION!!!
The Linux equivalence of 'mount -F zfs' is 'mount -t zfs'.
+ The 'dev' ('devices') option never show up in a mount list
  Test this by trying to create a 'zero' device.
unshare doesn't exist on Linux, instead exportfs is used. But it have
quite different usage. And can't run as normal user...
Remove leading slash to disk images in TESTDIR (ended up with double
which made the test fail).
The expected return value from 'mmap_exec' on Linux is 22, not 13.
Change hardcoded '/dev/{dsk,rdsk' to variable 'DEV_{DSK,RDSK}DIR'.
Linux does not separate them and puts everything in '/dev'.
In Linux, we need to add the '-d $TEST_BASE_DIR' to 'zpool import' for it to find the raw disk files.