<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>UnixWars &#187; home server</title>
	<atom:link href="http://unixwars.com/tag/home-server/feed/" rel="self" type="application/rss+xml" />
	<link>http://unixwars.com</link>
	<description>Taher Shihadeh's ragbag</description>
	<lastBuildDate>Mon, 26 Dec 2011 23:38:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Jaunty Server on Compact Flash: running Ubuntu 9.04 on a Thin Client</title>
		<link>http://unixwars.com/2009/03/07/jaunty-server-on-compact-flash-running-ubuntu-904-on-a-thin-client/</link>
		<comments>http://unixwars.com/2009/03/07/jaunty-server-on-compact-flash-running-ubuntu-904-on-a-thin-client/#comments</comments>
		<pubDate>Sat, 07 Mar 2009 19:31:12 +0000</pubDate>
		<dc:creator>Taher Shihadeh</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[home server]]></category>

		<guid isPermaLink="false">http://unixwars.com/?p=360</guid>
		<description><![CDATA[Previously on UnixWars … I said in another post that I would be using a Thin Client as my home server. The machine is fanless, diskless and it makes no noise. The system boots from a low power Compact Flash. After setting things up, some friends decided to buy the exact same machine, so I&#8217;m [...]]]></description>
			<content:encoded><![CDATA[<p>Previously on UnixWars …<br />
I said in another post that I would be using a  <a href="http://unixwars.com/2009/02/19/fattening-up-a-thin-client/">Thin Client</a> as my home server. The machine is fanless, diskless and it makes no noise. The system boots from a low power Compact Flash. After setting things up, some friends decided to buy the exact same machine, so I&#8217;m going to write down the steps I followed to configure the server. Please note that Ubuntu Jaunty is still in Alpha 5 stage, so you might want to rethink which release you are going to install. I&#8217;ve had no problems whatsoever, so for a setup such as mine you should be safe. Alpha 6 is due to be released shortly and the first beta will be out on March 21st. Then, just one month will separate us from the official release day, so by now I&#8217;d say Jaunty has done most of it&#8217;s homework.</p>
<p>The easiest thing to do would be installing the system normally through PXE (look for the link at the end of this post if you&#8217;re interested), but there is a problem. Flash devices have a limited number of write-cycles, and wear levelling is not used on consumer grade cards. There are file systems optimized for flash devices -such as <a href="http://en.wikipedia.org/wiki/JFFS2">JFFS2</a>- but the benefits are not obvious here. As I understand it, these are designed for industrial devices with direct access to the memory cells. Consumer devices have an abstraction layer that make them transparent and enable us to use them as any other normal storage. It should provide everything we need, such as wear levelling. But as I said before, it normally doesn&#8217;t for consumer-type devices.</p>
<h3><span style="color: #000000;">Alternatives</span></h3>
<p>Having discarded the optimal solution for both technological and budget limitations, we are left with three alternatives.</p>
<ol>
<li>Use the CF as an ordinary device, with total disregard for the premature death of the drive. This is the simplest, and provided you have a lifetime warranty for your media it might not be such a bad idea.</li>
<li>Use the CF as if it were a LiveCD, maybe even adding persistence for our changes. This option should prove perfect if we want to use the Thin Client as a desktop system. Temporary changes are written to RAM, permanent changes will be stored on disk and even software updates will remain between reboots. It is a bit more complicated, so I&#8217;ll leave this in my TO DO list for now.</li>
<li>Install everything by hand on a local copy, configure the system to be able to run with as little disk access as possible (ideally, from a read-only root file-system), and dump it to the CF. Since space is not a problem for me (I have both a 1GB and 8GB CF cards), I&#8217;ll prefer this approach. In case everything was set as read-only, we would only  have to remount the file systems as writable during the process. As for SquashFS, though it seems an ideal choice for an embedded system that needs no upgrades, I&#8217;ll discuss this in other posts. It is simpler to deal with a &#8220;standard&#8221; system, not having to recreate binary boot images every time you update the box.</li>
</ol>
<p>My home server is used to share media and printers on my local network, manage downloads, and above all, provide a permanent access to my home network from wherever I might be. This is, by far, the handiest thing ever. At least it is for me. You never know when you are going to need to bypass Internet filters when you are roaming, for example. The wonders of SSH truly never cease to amaze me :)</p>
<p>I&#8217;ve opted for letting some writing be done to the CF, albeit the write-intensive tasks have been dealt with, because it is easier for the system to be updated, and because some of the services I&#8217;ll be using refuse to work on read-only mode. However, my next entry will be about using aufs/unionfs, and replicating this setup on totally read-only and compressed system that will run from the 256MB standard CF that comes with the computer.</p>
<p><span id="more-360"></span></p>
<h3>Things to install</h3>
<ul>
<li>Basic system: since Jaunty is still in Alpha stage, downloading the whole ISO is not worth it. Just grab the <a href="http://archive.ubuntu.com/ubuntu/dists/jaunty/main/installer-i386/alpha-5/images/netboot/mini.iso">NetBoot mini ISO</a> and download the rest as you go. You&#8217;ll have to update frequently until it is released anyhow.</li>
<li><strong>linux-image-server</strong>: A scheduler less suited for multimedia but with some advantages for a server.</li>
<li><strong>ssh</strong>: Access point to/from your server.</li>
<li><strong>cups</strong>: printer support. Note that CUPS alone will add around 100 MB to your installation.</li>
<li><strong>portmap, nfs-kernel-server</strong>: NFS file server.</li>
<li><strong>samba</strong>: sharing files and printers for Windows boxes.</li>
<li><strong>nmap, mc, wget, curl, unrar, p7zip-full, arj, unzip, </strong><strong>unp</strong>, <strong>unace, qemacs-nox</strong>: some handy tools I can&#8217;t live without. Mostly Swiss-army knives, decompressors and a tiny Emacs-like editor. It&#8217;s bigger than <strong>mg</strong>, but it has UTF8 support. I love Emacs but it is huge for a system like this.</li>
<li><strong>usbmount, ntfs-3g</strong>: to automatically mount USB devices. Nice if you plan to plug and unplug your external drives to share them on your LAN.</li>
<li><strong>mldonkey-server</strong>: for our every day download-needs.</li>
</ul>
<p>These were the steps I followed. Keep in mind these are mainly notes to myself. They should work for you, but they might not. At the very least these steps will give you some useful hints. Please note that there might be some rough edges in the tutorial, since I actually wrote this after having everything installed. I tooks some notes during the process, and this setup is working flawlessly for me. I don&#8217;t think any important (read non-trivial) steps were left out, but if that&#8217;s the case and it is giving you any kind of problem, just ask in the comments!</p>
<p>The CF shouldn&#8217;t suffer much IO, so the idea is to install and customize everything on a virtual machine, and then dump the resulting image to the CF after making every needed adjustment.</p>
<p>I originally intended to make the system completely read-only, but then decided that preventing /tmp and /var/log from massacring the CF would be more than enough. You can skip completely some of these steps, since the root-fs will not be totally read-only. For that, check the next post.</p>
<h3>Installing the base system</h3>
<p>I&#8217;ll be using VirtualBox because I find it easier to work with than plain QEMU, particularly since I&#8217;m going to be needing the network from within the virtual machine. Just create a new one with a disk size that can fit in you CF. I&#8217;ll use a 1GB card that I have laying around. Also configure the CDROM drive to use the <a href="http://archive.ubuntu.com/ubuntu/dists/jaunty/main/installer-i386/alpha-5/images/netboot/mini.iso">NetBoot mini ISO</a> that you have downloaded.</p>
<p>Before booting the machine, add <strong>PAE/NX</strong> support to the virtual CPU. The generic kernel doesn&#8217;t need it, but once you try to boot with the <strong>linux-image-server</strong> branch you will need this to proceed. That is done from the virtual machine definition section following the path: Details -&gt; General -&gt; Advanced.</p>
<p>Boot the machine and type &#8216;cli&#8217; if you want to minimize the installations. Then manually partition the hard drive if you want to use the new EXT4 file-system type, and go through the process as you normally would. Of course, <strong>disregard the swap partition</strong>. You can&#8217;t have that on a CF or it will die soon for sure.</p>
<p>I use the French repositories because those are the fastest for me. I always start by modifying the list of repositories on the recently installed system, in case I want to install things not present in <strong>universe</strong>. Edit it manually or just append the needed info.</p>
<pre class="prettyprint">echo "deb http://fr.archive.ubuntu.com/ubuntu jaunty \
main restricted universe multiverse" >> /etc/apt/sources.list</pre>
<p>And install the packages.</p>
<pre class="prettyprint">sudo su -
apt-get clean
apt-get update
apt-get install linux-image-server openssh-server samba cups \
 wget p7zip-full portmap nfs-kernel-server nmap mc \
 qemacs-nox unp arj unrar unzip usbmount mldonkey-server
apt-get clean</pre>
<p>No real need to mention it, but don&#8217;t forget to delete the generic kernel and associated files if you want to save another 100MB or so.</p>
<p>Now to handle issues related to readable-writable paths, as well as config files. Some steps are only useful if you will mount the rootfs as read-only. I&#8217;ll mark them as &#8220;Optional&#8221;:</p>
<ul>
<li>Optional: /etc/mtab: We will link it to a file that can describe the mounted file-systems without requiring write access.</li>
</ul>
<pre class="prettyprint">rm /etc/mtab
ln -s /proc/mounts /etc/mtab</pre>
<ul>
<li>/etc/network/interfaces: static IP for the server. Bare in mind you&#8217;ll need writable<em><strong> /etc/resolv.conf</strong></em> and <em><strong>/var/lib/dhcp3</strong></em> if you intend to use dynamic IPs. You&#8217;ll probably have to edit <em><strong>/sbin/dhclient-script</strong></em> to account for this if you are going for a full-ro filesystem. This is how my <em><strong>/etc/network/interfaces</strong></em> looks like.</li>
</ul>
<pre style="padding-left: 30px;">auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 10.0.0.100
gateway 10.0.0.1
broadcast 10.0.0.255
netmask 255.255.255.0</pre>
<ul>
<li>/etc/etc/fstab: define the mountpoints. Ensure that directories that need to be writable ar mounted as tmpfs rather than letting the system write them to flash. Alternatively you can mount them on external media. You need this to run the rootfs mounted as read-only. Even if you are not going to do so, you *MUST* set the &#8216;noatime&#8217; flag when mounting, or at least &#8216;relatime&#8217;. If you don&#8217;t, every single access to the files will require a read operation to modify the access time, and this is pure overhead for the CF that will significantly shorten its life span. Using journaling is probably another bad idea, since many commits will also affect the CF. Either use EXT2, or use this as a temporary solution and go for the SquashFS-Live system of approach #2.</li>
</ul>
<pre style="padding-left: 30px;">/dev/sda1 / ext4 noatime,errors=remount-ro 0 0
proc /proc proc defaults 0 0
tmpfs /var/log tmpfs defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
tmpfs /var/lib/urandom tmpfs defaults 0 0
# Define the following ones if you use NFS or dynamic IPs.
# Writable paths should be tmpfs or be on external media.
# Both settings are OPTIONAL for our current setup.
tmpfs /var/lib/nfs tmpfs 0 0
tmpfs /var/lib/dhcp3 tmpfs defaults 0 0</pre>
<ul>
<li>Logging: either log to a tmpfs as shown above, to an external media, remotely or remove logging capabilities. This step is not optional at all. If you choose any option other than the first one, you&#8217;ll probably want to take a look at <strong><em>/etc/syslog.conf</em></strong>, <strong>/etc/default/syslogd</strong> and your /etc/rc?.d for links to <em><strong>/etc/init.d/sysklogd</strong></em>. Don&#8217;t forget the <em><strong>syslog.conf </strong></em>man entry. Note that logging to a tmpfs will give you some warnings at boot-time since some files are expected to exist. It&#8217;s probably not such a good idea, since you&#8217;ll loose the logs between reboots, troubleshooting vulnerabilities becomes more difficult, and so on. If you do proceed with the idea, you should keep this in mind: some logfiles are expected to be present at boot-time, so you&#8217;ll get some errors if you boot with an empty /var/log. Mldonkey also doesn&#8217;t boot if it can&#8217;t access the logs, so populate the directory with a  trivial script such as the following. It  must be run at boot-time before <em><strong>/etc/init.d/bootlogs.sh</strong></em> and <strong><em>/etc/init.d/sysklogd</em></strong> are invoked:</li>
</ul>
<pre style="padding-left: 30px">#!/bin/sh
### BEGIN INIT INFO
# Provides:          madoka
# Required-Start:    $local_fs
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      1
# X-Start-Before:    bootlogs sysklogd
# Short-Description: recreate /var/log structure for Madoka
# Description:       recreate /var/log structure for Madoka
### END INIT INFO

do_start () {
 mkdir -p /var/log/mldonkey
 mkdir -p /var/log/news
 cd /var/log

 touch \
 dmesg          \
 mail.warn      \
 user.log       \
 daemon.log     \
 messages       \
 debug          \
 auth.log       \
 mail.err       \
 syslog         \
 mail.log       \
 kern.log       \
 lpr.log        \
 mail.info      \
 news/news.crit \
 news/news.err  \
 news/news.notice

 chgrp adm dmesg
 chown syslog:adm \
 mail.warn       \
 user.log        \
 daemon.log      \
 messages        \
 debug           \
 auth.log        \
 mail.err        \
 syslog          \
 mail.log        \
 kern.log        \
 lpr.log         \
 mail.info

 chown news:news news
 chown root:news news/*
}

case "$1" in
 start)
 do_start
 ;;
 restart|reload|force-reload)
 echo "Error: argument '$1' not supported" &gt;&amp;2
 exit 3
 ;;
 stop)
 # No-op
 ;;
 *)
 echo "Usage: $0 start|stop" &gt;&amp;2
 exit 3
 ;;
esac</pre>
<p style="padding-left: 30px;">I saved it in /etc/init.d/madoka, and added it to my default runlevel to execute before <em><strong>init.d/bootlogs.sh</strong></em> and <strong><em>/etc/init.d/sysklogd</em></strong></p>
<pre style="padding-left: 30px">update-rc.d madoka start 05 2 .</pre>
<h3>Adding some more goodies</h3>
<ul>
<li>mldonkey: I just made symbolic links to an external drive. <em><strong>/var/lib/mldonkey/incoming</strong></em>, <em><strong>/var/lib/mldonkey/temp</strong></em> and <strong>/var/lib/mldonkey/torrents</strong> are the most frequently written directories by far. It also rewrites the configuration files whenever changes are made. Those are also stored under <em><strong>/var/lib/mldonkey/.<br />
</strong></em></li>
</ul>
<ul>
<li>/etc/usbmount/usbmount.conf: this is great if you are going to have lots of external drives. It automatically mounts the devices wherever you choose to (in my case, under my shared samba directory). It just works after rebooting. I only edited the file to specify the mount point and to add more file-systems that I wish automatically mounted:</li>
</ul>
<pre style="padding-left: 30px;">FILESYSTEMS="ntfs vfat ext2 ext3"</pre>
<ul>
<li>/etc/samba/smb.conf: to share files and printers, edit yours to resemble these pointers.</li>
</ul>
<pre style="padding-left: 30px"># add to [global] section, and edit the rest to your heart's contempt
workgroup = WARPCORE
printcap name = cups
printing = cups
security = share
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
# make sure [printers] section looks like this
[printers]
browseable = yes
printable = yes
public = yes
create mode = 0700
guest only = yes
use client driver = yes
path = /tmp</pre>
<pre style="padding-left: 30px">#define at least one share point
[shared]
comment = Shared media
path = /media
guest ok = Yes</pre>
<p style="padding-left: 30px;">To have the printers actually work you&#8217;ll need to configure them with cups. After having everything tuned, remember to mount the root file-system read-only. Adding the printer is trivial thanks to the administration web interface. Just forward the needed port or make <strong><em>cups</em></strong> accept connections from interfaces other than localhost, and launch your web browser.</p>
<pre class="prettyprint" style="padding-left: 30px;">ssh -L 2000:localhost:631 10.0.0.100</pre>
<p style="padding-left: 30px;">Then, access the configuration wizard visiting http://localhost:2000. On Windows systems you can add this by simply add ing a new printer with the wizard and browse your samba shares. You should see the printer there, hanging from your samba server. User your disks with the drivers and it should be a done deal.</p>
<ul>
<li>/etc/exports: remember to set up this if you are using NFS shares. I export the same things as with Samba.</li>
</ul>
<pre style="padding-left: 30px">/media 10.0.0.0/24(rw,sync,no_subtree_check)</pre>
<h3>Copying the image to the CF</h3>
<p>Ok, so now you have a perfectly working system in your virtual machine. That&#8217;s great. Time to copy it to the CF. Convert your VDI file to a raw image as shown below, and dump it to the CF.</p>
<p>If you are using the OSE edition of VirtualBox:</p>
<pre style="padding-left: 30px">vditool DD machine.vdi raw_image.img</pre>
<p>If it is the closed-source release, vditool is not available. You&#8217;ll have to do it like this:</p>
<pre style="padding-left: 30px">VBoxManage internalcommands converttoraw machine.vdi raw_image.img</pre>
<p>Once you have that, simply dump it to your CF with <em><strong>dd</strong></em> and you are good to go! Mine is detected on /dev/sdc</p>
<pre style="padding-left: 30px">dd if=raw_image.img of=/dev/sdc bs=1024</pre>
<h3>Other installation tips</h3>
<p>Going for a completely read-only system, even running something as mldonkey, is not that complicated either. Just trace the paths that need to be written frequently with <strong><em>&#8220;lsof /&#8221;</em></strong> and if you find something that has to modify many files, either replicate the file-structure on tmpfs/ramfs (preferably the former), or better yet, use <a href="http://aufs.sourceforge.net/">aufs</a>/<a href="http://www.unionfs.org/">unionfs</a> on a temporary file system.  Thats the great thing about the live-system approach that I&#8221;ll be using next. I&#8217;m still working on some rough edges, but I&#8217;ll blog about it as soon as the results are perfect :)</p>
<p>Another, simpler approach if you don&#8217;t mind the hassle and some extra wear on your CF, simply make a PXE install and customize afterwards following my steps. Here is a nice and easy tutorial to make an <a href="https://help.ubuntu.com/community/Installation/QuickNetboot">Ubuntu  net installation</a> in case you want to try that.</p>
<p>Anyway I hope you find this useful. It certainly was for me. Let me know if you find a cheap thin client on Ebay and follow this tutorial. A noiseless server does really make a difference!</p>
]]></content:encoded>
			<wfw:commentRss>http://unixwars.com/2009/03/07/jaunty-server-on-compact-flash-running-ubuntu-904-on-a-thin-client/feed/</wfw:commentRss>
		<slash:comments>39</slash:comments>
		</item>
		<item>
		<title>Fattening up a Thin Client: silent cheap home server</title>
		<link>http://unixwars.com/2009/02/19/fattening-up-a-thin-client/</link>
		<comments>http://unixwars.com/2009/02/19/fattening-up-a-thin-client/#comments</comments>
		<pubDate>Thu, 19 Feb 2009 20:45:59 +0000</pubDate>
		<dc:creator>Taher Shihadeh</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[home server]]></category>

		<guid isPermaLink="false">http://unixwars.com/?p=213</guid>
		<description><![CDATA[Do you have a server at home running 24/7? Having permanent access to your home network can be very useful at times, as is sharing media and printers, or managing your downloads. My last server was actually a downgrade from my previous box in computing terms. It was no powerhouse, but being a fanless Epia [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://unixwars.com/wp-content/2009/02/stand.jpg"><img class="size-medium wp-image-244 alignright" title="Futro S400" src="http://unixwars.com/wp-content/2009/02/stand-156x300.jpg" alt="Futro S400" width="156" height="300" /></a>Do you have a server at home running 24/7? Having permanent access to your home network can be very useful at times, as is sharing media and printers, or managing your downloads. My last server was actually a downgrade from my previous box in computing terms. It was no powerhouse, but being a fanless Epia with minimal power consumption and very low noise was a huge upgrade for me. I just connected the printer, some external USB drives, installed Debian and it has been sitting in a corner for ages, working flawlessly.</p>
<p style="text-align: center;"><a href="http://unixwars.com/wp-content/2009/02/back.jpg"><img class="size-medium wp-image-248 aligncenter" title="Back view" src="http://unixwars.com/wp-content/2009/02/back-300x58.jpg" alt="back" width="210" height="41" /></a></p>
<p>A while ago I was looking for a similar noiseless solution for my brother in law and a friend, and the itch started all over again. I decided it was a good moment to upgrade my system. The low power consumption and being fanless were a must, but I also wanted it to have integrated gigabit ethernet. So I though using a Thin Client would be a good solution. These are normally fanless and have very little power needs, and some even have decent processors and Gigabit Ethernet. After looking for a while, I settled for a <a title="Futro S400 specs" href="http://docs.fujitsu-siemens.com/dl.aspx?id=c1cede3a-686e-4243-a815-6683fb45c411">Fujitsu-Siemens Futro S400</a> that I found dirt cheap in Ebay. <span id="more-213"></span></p>
<p style="text-align: center;"><a href="http://unixwars.com/wp-content/2009/02/cd.jpg"><img class="size-medium wp-image-246 aligncenter" title="Size compared to a CD" src="http://unixwars.com/wp-content/2009/02/cd-300x217.jpg" alt="Compared to a CD" width="210" height="152" /></a></p>
<p>It has GbE, and an AMD Geode NX 1500 processor that is actually an embedded Athlon clocked at 1GHz that runs on 6W: not bad, given it was introduced on <a title="Geode NX 1500@6W presentation" href="http://news.zdnet.co.uk/hardware/0,1000000091,39155696,00.htm">2004.</a> The S400  boots from a 256MB CF and even has a spare IDE connector on-board. It lacks an internal power connector though, so I had to resort to using external media. One could get the 5V/12V from the motherboard, especially since the PCI port is not being used at the moment, but the system already gets hot enough as it is. I don&#8217;t want to add another heat source for now. However, unlike last time, I wanted to keep the OS on the compact flash. Sometimes the external media might not be available to boot, and besides&#8230; CF are fast for these things. I just swapped it for an 8GB/x133 I had laying around, and that&#8217;s much more than I need.</p>
<p style="text-align: center;"><a href="http://unixwars.com/wp-content/2009/02/board.jpg"><img class="size-medium wp-image-247 aligncenter" title="Motherboard" src="http://unixwars.com/wp-content/2009/02/board-300x223.jpg" alt="board" width="210" height="156" /></a></p>
<p>Installing on flash memory, however, requires certain considerations to prevent the installed OS from degrading due to a CF failure. These devices usually have  a limited number of write cycles, so the set up must minimize the write-operations as much as possible. Once it is done, you can use most thin clients exactly as any other computer.</p>
<p>Basically:</p>
<ol>
<li>Create a minimal installation on local machine</li>
<li>Customize it to your needs and add any other required packages</li>
<li>Make it possible for the root FS to run being mounted read-only</li>
<li>Dump the installation to the CF and make it bootable</li>
<li>Profit!</li>
</ol>
<p>It&#8217;s not rocket science, but I&#8217;ll be writing something about it  for those who could find it useful. Check out the <a href="http://unixwars.com/tag/home-server/">home server tag</a> if you are interested, and good luck!</p>
<p style="text-align: left;">UPDATE: Here is a photo of the AC adapter, in case you want to <a href="http://www.google.com/search?q=LAD6019AB5">Google it</a><a href="http://unixwars.com/wp-content/2009/02/S400AC.jpg"><img class="aligncenter size-medium wp-image-621" title="S400AC" src="http://unixwars.com/wp-content/2009/02/S400AC-208x300.jpg" alt="" width="125" height="180" /></a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://unixwars.com/2009/02/19/fattening-up-a-thin-client/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
	</channel>
</rss>

