Checkout the Makefile.am from ZoL.
+ Remove all ZoL related crud and only keep the test part.
+ 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.
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 cli_root/zpool_add - "This directory cannot be run on raw files".
* 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.
* Add basic makefiles for linux to compile the binaries required by test..
* Make the binaries we need compile on Linux.
* Ignore the binary command, *.o and *~ files.
+ Shell to exec is /bin/sh on _LINUX (chg_usr_exec.c).
* 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'.
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.
* If linux, we need to create the loop partition files with kpartx.
* In Linux we create a ext2 filesystem by default, not ufs.
* If linux, we need to create the loop partition files with kpartx.
* Partition identifier on a device in Linux is 'p[nr]', on BSD it's 's[nr]'.
* In Linux we create a ext2 filesystem by default, not ufs.
* If linux, we need to create the loop partition files with kpartx.
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...