1) The current verison of FreeNas is based off FreeBSD 7.2, which supports ZFSv6. FreeBSD 7.3 and FreeBSD 8.0 upgraded to ZFSv13. FreeBSD 8.1 upgraded to ZFSv14. The version in Open Solaris is ZFSv24. These version numbers describe the various features that are available. Anyway, ZFSv6 support is considered to be an experimental feature in FreeBSD 7.2. ZFSv13 support is considered to be a stable feature in FreeBSD 8.0. Here is a relatively recent thread regarding its stability on the FreeBSD forums:http://forums.freebsd.org/showthread.php?t=9116
If I were you, I would probably opt for a UFS filesystem on FreeNAS. You should not use a USB key as your OS drive because USB keys are raw flash devices and as far as I know, neither UFS nor ZFS have special facilities for doing wear levelling and FreeBSD has no other options in terms of file systems. I think Microsoft fixed the slow file transfers under Windows Home Server. Lastly, where is the recommendation to use an embedded system? You should be able to use whatever you like, embedded or otherwise.
Your Atom question is more of a generic question than something particular to Linux. The Atom should be overkill for everything but the DVR functionality. The DVR functionality can possibly have much higher CPU requirements; I suggest you read MythTV's documentation on the subject:http://www.mythtv.org/docs/mythtv-HOWTO-3.html
2) Which Linux distribution is the best to use varies based on what your definition of best is. Best can be some a combination of several things, such as most customizable, most secure, least setup time, highest performance, etcetera. It really depends on what you consider to be the best. My personal favorite is Gentoo Linux, which has a package manager that was inspired by FreeBSD's ports system and can be customized to do anything any other system can do.http://www.gentoo.org/
Gentoo Linux is a minimalist rolling distribution that compiles almost everything it installs according to your specifications. It is the only mainstream Linux distribution in that category and it has been remarkably innovative in minimizing the amount of work a user needs to do in order to gain such a high degree of customization. It is the complete opposite of more traditional full-featured static binary distributions, which from a design aspect, share a great deal in common with Microsoft Windows. A more traditional option for this application would likely be CentOS:http://www.centos.org/
CentOS is a clone of RedHat Enterprise Linux. All of the source code for RedHat Enterprise Linux is available from RedHat. The people behind it took the source code, stripped it of RedHat's trademarks for copyright purposes and compiled it, producing CentOS. RedHat Enterprise Linux is the Linux distribution of choice for running servers, but it requires that you have to pay for an expensive service contract, which is why CentOS has become very popular. An alternative to RedHat Enterprise Linux is SUSE Linux by Novell. It is by no means as popular as RedHat Enterprise Linux and as far as I can tell, it is often not considered to be as good. Both RedHat Enterprise Linux and SUSE Linux suffer from often being out of date, even more so than other binary distributions. For instance, the version of the Linux kernel used in RedHat Enterprise Linux is almost 3 years old, although it has been heavily patched by RedHat over that time period, mostly for security fixes. As a consequence, I am not sure if driver support is available to support a TV Tuner.
A good compromise between the two differing types of Linux distributions might be Sabayon Linux, which should work on your system as long as it is Intel-compatible. With other distributions like Gentoo Linux and RedHat Enterprise Linux, you are not limited to Intel-compatible systems. I believe that Gentoo Linux supports more architectures than RedHat Enterprise Linux. If you do not like, how limited Sabayon is in terms of architecture support, some other good options would be Fedora Linux and Debian Linux. Fedora Linux is a distribution where RedHat experiments with features before making a new release of RedHat Enterprise Linux. Debian Linux is a distribution that as far as I can tell, is developed in a manner as similar to FreeBSD as is possible. It also has broad architecture support, roughly analogous to the architecture support provided by Gentoo Linux.
All Linux distributions are modeled after UNIX, which is designed for headless operation. As a consequence, both Linux and FreeBSD rely on the X Window System for graphical support. The X Window System was designed for people running on terminals connected to a big mainframe, which allowed them to use GUI applications that ran on the main frame, but appeared on their local computers. The end result was a somewhat laggy experience. Modern UNIX desktop environments that run locally still suffer from this, although since everything is done locally, the networked communication occurs inside the computer, making the lag difficult to perceive in most cases.
I think that Gentoo Linux would be the most educational way of doing this, although producing a production system with it will also take the most time. Very little of that time will require work from you, because the majority of the time will be spent compiling software. There are ways of making that take less time (e.g. ccache, distcc), but as a beginner, you will not know how to do any of them. Also, while almost any Linux distribution can in theory be installed on a headless systems without ever installing a graphics card with a monitor and a keyboard, such installations typically require expert level skills, so you will likely not be able to do them. As a consequence, you will want a graphics card, a monitor and a keyboard for the installation process with any Linux distribution. Then you could follow the Gentoo Linux handbook:http://www.gentoo.org/doc/en/handbook/
If you must do a headless installation, you have a few options. You will need to ensure that the BIOS is configured in a manner that allows for whichever one you choose (which means that you might not be able to escape doing things 100% headlessly), although I think that typical BIOS defaults should allow you to do any of them without modifying the BIOS settings.
The first option is to install the system in a virtual machine on a virtual disk, making certain that drivers are installed for both your virtual machine and your target hardware (which is something I cannot stress enough). The virtual machine's hard drives should be configured to the exact configuration that you will have on your real system, because since this is a headless system, it is not a simple thing to take it offline and run some maintenance disk on it to modify the partitioning and filesystems to suit your target system. The key points are to make certain that you have the proper storage system drivers compiled into the kernel (not as modules!), that you have the proper networking drivers available (compiled as modules or as part of the kernel; my preference is as modules), that you have set the system passwords to be something you know (which is very important, even if you do not run headless), that you have your system configured to connect to the network using either DHCP to get an IP address or some static configuration to set an IP address at boot and that SSH is configured to run at boot. Then you could just copy an image of the virtual disk to your target system's hard drive, install the hard drive in the target system and start it. In theory, it should work and you should be able to SSH into it. If it does not work, then the likely problem is that your kernel does not have appropriate storage drivers (which means a kernel panic, the equivalent of a BSOD) or your networking (i.e. drivers, networking configuration, sshd) is not configured properly (which means that the system is running, but you cannot talk to it and it will not talk to you.
Your second option can be easier than the first option, but at the same time, it can also be more difficult. This method involves booting from a LiveCD that has a few special properties.
- It will automatically boot a Linux distribution
- It will automatically configure networking
- It will automatically start sshd
- It has all of the tools required to install Gentoo Linux available either by default or by some installation command that can be done while the LiveCD is running.
- It has a known username and password that can be used to obtain access to root via SSH.
The first 4 properties are not difficult to find (e.g. System Rescue CD has them), but the last property is something that I have not seen in the LiveCDs I have used. It might be necessary to make your own LiveCD, which is why this can be much more difficult than imaging a system you installed inside a virtual machine.
Your last option is to do a network installation via a PXE boot. In theory, you can combine this with the second option to produce a system that neither has a graphics card or optical drive at any point during the installation and it is often done with embedded systems. The only guide I could find on this was one that used PXE as a substitute for having an optical drive, which is not a headless installation per se
, but if your LiveCD is a special LiveCD I outlined above, then a network installation via a PXE boot can be done headlessly. You will likely need to at the very least peek at the BIOS settings to know what the defaults are, which could be done either with a graphics card (which is cheating) or by calling your motherboard manufacturer's technical support. Although I do not know for certain, I would expect that level 1 technical support will not be able to answer this question for you, so you would need to escalate it to level 2 or level 3 before you can get the answer. If the default settings do not allow you to do a PXE boot by default (assuming that you purchased a motherboard that does support PXE boots), you will need to use a graphics card, a monitor and a keyboard to allow you to modify them, although any motherboard that supports PXE boots should by default attempt one if it cannot find a boot loader on the usual devices (e.g. optical drive, floppy, usb key, floppy drive). If your motherboard really does support PXE, but is not configured to use it by default, there are ways of changing the BIOS settings without a graphics card, but they likely require doing things that are done in the factory, which is outside of the scope of my ability to describe. Another possibility is just attaching a keyboard and making guesses about the internal state of the system to be able to modify the BIOS settings, but that is masochistic.http://www.howtoforge.com/ubuntu_pxe_install_server
In theory, any Linux distribution can be used as a PXE server, although Ubuntu Linux is the one used in that guide. Also, in theory, any Linux distribution can be installed by these methods and not just Gentoo Linux, but then again, you seem to be starting out with Linux, so you should probably try more simple methods of installation (e.g. the Gentoo Manual's procedure) instead of something like this. Attempting something like this from the start will likely discourage you, because doing it correctly requires knowledge that you likely do not have and I can guarantee that obtaining it in the process of doing this will be an extremely frustrating experience.
I hope you find this helpful. It took me 2 hours to write.
Disclaimer: I over-analyze everything, so try not to be offended if I over-analyze something you wrote.