The image is pretty much flash-and-go if you read and follow the directions, but can be customized a bit.

Background:
This image was built using buildroot-2012.08 and Ubuntu/Debian, and bits of Jeff's V2 fs-skeleton are there. The package selection is very different, though. I wanted to build something that would mesh well with Macs/Linux mainly, be robust enough to __always__ withstand power outages and the like, and be simple. For me, robust=plug-n-go-even-after-power-outages.

A major change in Buildroot with uClibc 0.31.2 brought NPTL support, which allowed BerkeleyDB to play nicely with Netatalk. This took a while to get configured correctly, but the results have been positive.

It was also a bit of a challenge to get Samba 3.6.6 to fit nicely in a UBI image that wouldn't fill up 32MB entirely.

What I didn't want was a boxlet with a bloated webserver, perl, python, compilers or any development stuff - just a small rootfs that would fit inside 32MB of flash and let a little Kirkwood box do what it does best - low power consumption, small footprint, good server-performance-per-wattage, etc.

Installation:
0. Understand the disclaimer : Flash at your own risk - there is always some level of risk in when flashing a chip; I've flashed some of my devices dozens of times and they are fine. For me, MacPlug/SMBPlug both work wonderfully, but YMMV. There is no warranty, neither implied nor expressed. Proceed at your own risk.

0. Make a decision: Do you want AFPD (Apple's Filesharing Protocol, successor to AppleTalk/AppleShare), or do you want Samba (More Windows-centric, though it is also used with Linux and Mac)

1. Format the USB flash drive to ext2 and copy the desired tarball to it:

4. Plug in the USB harddrive and prepare it by formatting the first partition as ext4 (all other partitions can be anything, even swap)

5. STOP and READ: this step will erase whatever kernel and rootfs that is currently residing in mtd1 and mtd2, respectively. If this is not acceptable to you, or if you are unsure of what you are doing, you should stop here and go no further.

If this is what you want to do, then proceed with flashing these files to your NAND partitions mtd1 and mtd2.
Use the following sequence of commands two erase and write to mtd1 and mtd2:

9. Adjust the printer spec and name, and choose new passwords. Note that if you are using SMBPlug, the smbpasswd binary is not included, but rather the pdbedit binary is included instead, and provides the same functionality for our uses.

Also make the needed changes to enable the following servers/daemons/services/features from the following list:

Samba - the default setup is for a 192.168.x.x network, so if you are using something else, you'll need to modify /etc/smb.conf

inadyn - DYNDNS updater client

NFSD - network file system daemon, great for Linux/Mac OS X [ only in MacPlug ]

cron jobs - using crond and the crontab, set up whatever scripts you'd like to run on a scheduled basis

swap - you can use a swap partition on the hard drive and use it in conjunction w/ the NAND/UBIFS rootfs

customize your hostname

customize the printer type/model in the <txt-record>product=( your-printer-brand-and-model-according-to-cups )</txt-record> in the /etc/avahi/services/p910nd.services file; this will allow your printer client on most computers to automagically configure itself

10. Browse your LAN with a Avahi/Bonjour scanner and check for function

11. From your Mac, Windows or Linux box, open a Finder window and select the Shared/Network icon. You should be able to see MacPlug on a Mac, while on Windows, add a network place - just as you would for any Samba share. Select it, and wait 15-30 seconds while it generates a database file. When asks for authentication, enter username "timemachine", and password "timemachine" (unless you have changed your password(s)).

12. Enjoy.

Wanted/thought about, but didn't include:
- AirPrint included ... CUPSLite, where are you? We'd also need foomatic and *ostScript of some sort. Too big for now, but this may be a possibility in the future... Printerd, a new print spooler...
- Media Servers ... currently not that well supported in Buildroot...
- LibInklevel : would be great to query ink level in printers... unfortunately, a required libieee component compiles but does not function...

Another question/suggestion: have you looked into auto port forwarding? I've been searching and only found one Code Project implementing uPnP that potentially could provide a way to do auto port forwarding.

@Bodhi, you're welcome. If you try it w/ a hard drive, please let me know what the transfer speeds look like for you. From what I can see, it is a bit faster than Debian (which is to be expected - it is a barebones system w/ no extra daemons running).

BTW, I'm in the midst of culling back, pruning and trying to make the AFPD plug (MacPlug) more RAM and resource efficient... when I created the SMBPlug suite, it took a __lot__ of pruning to get it down to size... then I realized that so many packages were being used, and that Busybox was a better choice for the vast majority of needs - this reduced the total size by maybe 4MB. Only a small number of non-Busybox binaries are included now - pretty much only ones that had no such functionality in BB, or ones that didn't seem to work very well.

The end result was something that was not really Debianesque, but instead, very focused, very single-purposed, very efficient, much smaller, with no "dead wood". It also provided better performance than the Debian system was giving. That approach was so successful that I decided to go back and do the same for the AFPD plug image.

i have no idee how to check the size of cryptsetup and luks. the bins are round about 100k but dont ask me for dependencies! i have a running dockstar with standard debian installation and the mentioned packages. if you tell me how to check, then i will post the result.

but to fulfill your all in one / out of the box approach - it would be nice to have:

- a small script which send mails (example would be sufficient)
- how to put the disk into sleep?

I had to register to post so that I can thank Davy for this wonderful work! I installed SMBPlug on my GoflexHome and Dockstar and it works beautifully. In preliminary speed test, I can get 20-23 MBps transfer speed between my 3TB (7200 rpm) hard drive and my Windows 7 desktop. I could not change the timezone and the system displays UTC time. (I tried to chance the TZ file in /etc/ directory but it does not seem to work!).

I also installed MACPlug on another Dockstar and notice the followings:
1. Date is not set. It looks like ntpd did not rung at boot up.
2. nsfd is not running.

I think I may need to do some configuration for MACPlug and will try to dig a bit more later.

I installed MACPlug because I wanted to use NFS capability on my home network. For my purposes I would like to use both CIFS and NFS. So Davy, is it possible to include NFS in SambaPlug? Also how difficult it is to roll my own NAND images for this?

Someone has also asked about installing new applications and you answered that this is static installation and I agree, since the file system is in NAND. Perhaps if we can have some package management included in the image so that we can install packages on an attached hard drive we can customize the system to our need. Just a thought!

Many thanks for your response, Davy! I will play around with MacPlug to change the initialization to include nfs.

I understand the limit of the image to be written to NAND partition 2, which has only 32MB, if we do not want to re-partition the device. I am wondering if we could include minimal package management capability in the image? If we could then we can install add-on packages on the remaining NAND partition, which has more than 200MB on our Dockstar. (Just a thought.)

Please, enter the code that you see below in the input field.
This is for blocking bots that try to post this form automatically. If the code is hard to read, then just try to guess it right.
If you enter the wrong code, a new image is created and you get
another chance to enter it right.