<?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>osscc &#187; Diskless Technology</title>
	<atom:link href="http://www.osscc.org/category/documentation/diskless-technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.osscc.org</link>
	<description>free open source software for cyber cafe</description>
	<lastBuildDate>Wed, 03 Aug 2011 18:06:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>What are the differences between DRBL and LTSP ?</title>
		<link>http://www.osscc.org/2010/06/what-are-the-differences-between-drbl-and-ltsp/</link>
		<comments>http://www.osscc.org/2010/06/what-are-the-differences-between-drbl-and-ltsp/#comments</comments>
		<pubDate>Mon, 28 Jun 2010 12:46:30 +0000</pubDate>
		<dc:creator>cubiczero</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Business Ideas]]></category>
		<category><![CDATA[Diskless Technology]]></category>
		<category><![CDATA[DRBL]]></category>
		<category><![CDATA[LTSP]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Recovery System]]></category>
		<category><![CDATA[differences]]></category>
		<category><![CDATA[diskless client]]></category>

		<guid isPermaLink="false">http://www.osscc.org/?p=251</guid>
		<description><![CDATA[Graphics-intensive applications such as games will not perform well, as all the display information will have to be pushed over the network by the server. This is hundreds of times slower than driving a local graphics card. Playing action games, however, is not a goal of the Edubuntu lab project.]]></description>
			<content:encoded><![CDATA[<p id="Linux Terminal Server Project"><a href="http://www.osscc.org/2010/06/what-are-the-differences-between-drbl-and-ltsp/" target="_self"><img class="aligncenter size-full wp-image-253" title="drbl-vs-ltsp" src="http://www.osscc.org/wp-content/uploads/2010/06/drbl-vs-ltsp.jpg" alt="DRBL vs LTSP" width="640" height="266" /></a><span id="more-251"></span></p>
<p><strong>Linux Terminal Server Project </strong><strong>[1]</strong></p>
<p>The Linux Terminal Server Project ( LTSP) is a configuration of Linux  that allows you to connect lots of low-powered thin client terminals to  a Linux server. The LTSP provides a simple way to utilise low cost  workstations as either graphical or character-based terminals on a  GNU/Linux server.<strong> </strong></p>
<p>K12LTSP is based on <a href="/community/RedHat">RedHat</a> Fedora Linux and the LTSP terminal server packages (see Section 7.1.1 for more detail). It&#8217;s easy to install and configure. It&#8217;s distributed under the GNU General Public License. That means it&#8217;s free and it&#8217;s based on Open Source software.</p>
<p>Once installed, K12LTSP lets you boot diskless workstations from an application server.</p>
<p><strong>What is Thin Client Computing?</strong><br />
Thin client and fat client (also called &#8220;thick&#8221; or &#8220;rich&#8221; client) are mostly marketing terms for different configurations of computer. A thin client asks a central server to do most of its processing, and keeps as little hardware and software as possible on the workstation side. Ideally, the user of a thin client should have only a screen, keyboard, mouse and enough computing power to handle display and network communications &#8212; you don&#8217;t even need (or want) a hard drive. The less you have, the less there can go wrong.</p>
<p>A fat client does as much processing as possible itself and only passes data required for communications and storage on to the server. A standalone PC is the typical fat client with which everyone is familiar.</p>
<p>A thin client may be a software program executing on a generic PC, or it may be a hardware device, called a terminal, designed to provide only user input and display functions. Because old PCs (whether retired, written off, obsolete or just out of fashion) are easier to find than specialised thin client hardware, Edubuntu labs uses them as thin clients, with the appropriate software. Because they don&#8217;t do much work themselves, the hardware requirements for these &#8220;old&#8221; PCs are very basic. Since every client in a thin client network asks a central server to do its work, all the individual workstations look the same: they all share the same server, and they all behave exactly like the server would if you were using it directly.</p>
<p>In addition, although everyone who uses the lab can have their own computing environment stored on the server, with their own files, desktop, and so on, the individual workstations can&#8217;t get viruses or be misconfigured by curious learners &#8212; there simply isn&#8217;t anything to configure! The thin client doesn&#8217;t have enough brains to get confused.</p>
<p>This means that the lab computers are trivial to keep up and maintenance is restricted to the server in the back room.</p>
<p>Thin clients are cheaper and require less administration than fat clients. On the other hand, they tend to require far greater network bandwidth, as display data will probably need to be passed to the thin clients. They can&#8217;t do a single thing on their own &#8212; for each and every action, they need to talk to the server. This means that a server for a room full of thin clients must be much more capable than a server used by fat clients.</p>
<p>One of the advantages that this configuration entails, is that all the software resides on the server, and so you only have to upgrade it once. In a fat client configuration, every workstation has its own copies of the software, and so any upgrade needs to be rolled out to every workstation.</p>
<p><strong>Drawbacks</strong><br />
Graphics-intensive applications such as games will not perform well, as all the display information will have to be pushed over the network by the server. This is hundreds of times slower than driving a local graphics card. Playing action games, however, is not a goal of the Edubuntu lab project.</p>
<p><strong>Hardware</strong><br />
Minimum specifications for LTSP Client and Server</p>
<p><strong>Server</strong></p>
<ul>
<li>Memory The server should have <span style="text-decoration: underline;"><span style="color: #ff0000;"><strong>2GB RAM</strong></span></span> or more (512MB for the base system, and 50MB for each additional client). As long as you&#8217;re using it all up, more RAM means more speed (it doesn&#8217;t help to have RAM that you don&#8217;t use). Too little RAM will bring your server to a crawl as it starts swapping memory to the hard drive. If you run out of memory, performance will be unacceptable.</li>
<li>Hard drive SCSI is faster than IDE: We&#8217;ve seen LTSP servers slow to a crawl when more than 10 clients are running from IDE drives. SCSI drives are better equipped to handle the multiple read/write requests.</li>
<li> Network Your server will have at least one Ethernet card to create a private network ( 192.168.0.x). This card connects to a switch for terminals. If there is a school network to which you need to connect, or if the school has a internet connection via the server, it will have a second Ethernet card, which will get an IP address on the second network.</li>
</ul>
<p><strong>Clients</strong></p>
<ul>
<li>Memory Client workstations should have at least <span style="text-decoration: underline;"><strong><span style="color: #0000ff;">32MB of RAM</span></strong></span>. Clients aren&#8217;t that dependent on swap space for extra memory capacity, since memory usage on them is reasonably constant because they don&#8217;t execute applications: they only display them.</li>
<li>Hard drive Client workstations should not have hard drives.<br />
Network Each client workstation should have one network card with a boot ROM to enable booting from the network.</li>
</ul>
<p style="text-align: left;"><strong>DRBL (Diskless Remote Boot in Linux) [2]<br />
</strong></p>
<p style="text-align: left;">DRBL (Diskless Remote Boot in Linux) is a free software, open source solution to managing the deployment of the GNU/Linux operating system across many clients. Imagine the time required to install GNU/Linux on 40, 30, or even 10 client machines individually! DRBL allows for the configuration all of your client computers by installing just one server machine.</p>
<p>DRBL provides a diskless or systemless environment for client machines. It works on Debian, Ubuntu, Mandriva, Red Hat, Fedora, CentOS and SuSE. DRBL uses distributed hardware resources and makes it possible for clients to fully access local hardware. It also includes <a href="http://clonezilla.org/" target="_blank">Clonezilla</a>, a partitioning and disk cloning utility similar to Symantec Ghost®.</p>
<p><strong>Peacefully coexists with other OS</strong><br />
DRBL uses PXE or etherboot, which is similar to <a href="http://ltsp.sf.net/">Linux Terminal Server Project (LTSP)</a>, to boot the client machine. While LTSP is a centralized server, all the client machine users&#8217; access the LTSP server to run their applications on it. The client&#8217;s keyboard and mouse are used to input whereas the client&#8217;s monitor is used to display the results. This is great when useing a thin client.<strong>[1]</strong></p>
<p>The server requirements must be increased when more than 20 or 30 clients are being used. On the other hand, DRBL uses NFS and NIS to provide boot services to the client machines. In essence, the DRBL server is just a NFS and NIS server. All users from all client machines just access the DRBL server to request files or authentication.</p>
<p>Packages are loaded to the client machines and they use their own CPU and RAM for processing. A regular PC can be used as the DRBL server since it is only serving files and authenticating. The client machines, however, should be powerful enough to run the applications they need. Typical installations using DRBL to deploy the Linux classroom have around 30 to 40 clients.</p>
<p>///NOTE/// From LTSP 5.0, there is a fat client (diskless workstation, LowFat client) mode, it&#8217;s basically quite similar to DRBL</p>
<p><strong>Save on hardware, budget, and maintenance fees</strong></p>
<p>Hard drives are optional for a DRBL client. Actually, the hard drive is just another moving part that creates more noise and is susceptible to failure. If a hard drive is present, the client can be configured to use it as swap space while GNU/Linux is installed and configured on the centralized boot server.</p>
<p>A lot of time can be saved by configuring the client settings at the boot server when using the DRBL centralized boot environment. This gives the system administrator more control over what software configurations are running on each client.</p>
<p>Besides the diskless (fat/powerful) client mode provided by DRBL, DRBL provides other functions, such as:</p>
<p>(a) <a href="http://clonezilla.org/" target="_blank">Clonezilla</a>, the opensource clone system. It&#8217;s a server version of imaging tool, similar to Ghost server edition, True image or Rembo.By using Clonezilla, you can clone a 5.6 GBytes system image to 40 computers within 10 minutes via multicasting.</p>
<p>(b) Small Linux diskless soltion. DRBL provides Damn Small Linux (DSL), PuppyLinux&#8230; for clients. You can import those small Linux distributions and let client boot from PXE without hardisk, CD or USB flash drive.</p>
<p>(c) Diskless FreeDOS for clients.</p>
<p>(d) Diskless memtest for clients.</p>
<p>(e) Install GNU/Linux (Debian, Ubuntu, Fedora, CentOS, Mandriva, SuSE&#8230;) for clients from network.<br />
LTSP and DRBL each have their own benefits. Choose the one that is best suited to your needs.</p>
<p><strong>What kind of server and client should I buy if I want to use DRBL ?</strong></p>
<p><span style="font-family: Arial;">This depends on what kind of application and GNU/Linux distribution you want to run.<br />
For the education environment, we recommend the following, but faster and newer equipment will always be better, especially if you want to run &#8220;moden&#8221; GNU/Linux distribution, such as Fedora 7 or Ubuntu 7.04 with OpenOffice 2.x or Firefox 2.x&#8230;:<br />
</span></p>
<ul>
<li>Server:
<ul>
<li>
<ul>
<li>x86 CPU at least 450 MHz</li>
<li><span style="text-decoration: underline;"><strong><span style="color: #0000ff;">Memory at least 256 MB </span></strong></span></li>
<li>Two or more fast ethernet network interface cards (NICs)</li>
<li>At least 10 GB HD space</li>
</ul>
</li>
</ul>
</li>
<li>Client:
<ul>
<li>
<ul>
<li>x86 CPU at least 200 MHz</li>
</ul>
<ul>
<li><span style="color: #ff0000;"><span style="text-decoration: underline;"><strong>Memory at least 128 MB</strong></span></span></li>
<li>One fast ethernet network interface cards</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li>Fast ethernet switch
<ul>
<li>
<ul>
<li>An ethernet hub is NOT acceptable. It&#8217;s too slow for network booting and NFS. A fast ethernet switch will reduce the collision domain and give you much smoother deployment. The fast ethernet switch should have enough ports for your clients and your server. You can find low cost 12 and 16-port fast ethernet switches just about anywhere. The 40+ port switches are nice but they typically cost more.</li>
</ul>
</li>
</ul>
</li>
</ul>
<p><span style="font-family: Arial;">Since DRBL will work with any Pentium class hardware, you can start your PC cluster with just about any machine you have laying around. You can expand your cluster as your budget allows. </span></p>
<p><strong>Where can I download the source codes ?</strong></p>
<p>You can find all the source codes about DRBL/Clonezilla in <a href="http://free.nchc.org.tw/drbl-core/src/" target="_blank">http://free.nchc.org.tw/drbl-core/src/</a></p>
<p><strong>Who is the developer of DRBL/Clonezilla?</strong></p>
<p>DRBL and Clonezilla was developed by NCHC <a href="http://www.nchc.org.tw/" target="_blank">http://www.nchc.org.tw</a></p>
<p><strong>What is NCHC ?</strong></p>
<p>The National Center for High-Performance Computing is located in Hsinchu, Taiwan. For more details, please visit the NCHC website at <a href="http://www.nchc.org.tw/" target="_blank">http://www.nchc.org.tw</a></p>
<p><strong>What is CloneZilla?</strong></p>
<p>Clonezilla, based on DRBL, Partition Image, ntfsclone, and udpcast, allows you to do bare metal backup and recovery. Two types of Clonezilla are available, Clonezilla live and Clonezilla server edition. Clonezilla live is suitable for single machine backup and restore. While Clonezilla server edition is for massive deployment, it can clone many (40 plus!) computers simultaneously. Clonezilla saves and restores only used blocks in the harddisk. This increases the clone efficiency. At the NCHC&#8217;s Classroom C, Clonezilla server edition was used to clone 41 computers simultaneously. It took only about 10 minutes to clone a 5.6 GBytes system image to all 41 computers via multicasting!</p>
<p><strong>Features of Clonezilla</strong>[3]</p>
<ul>
<li> Free (GPL) Software.</li>
<li> Filesystem supported: ext2, ext3, reiserfs, xfs, jfs of GNU/Linux, and FAT, NTFS of MS Windows. Therefore you can clone GNU/Linux or MS windows. For these file systems, only used blocks in partition are saved and restored. For unsupported file system, sector-to-sector copy is done by dd in Clonezilla.</li>
<li> LVM2 (LVM version 1 is not) under GNU/Linux is supported.</li>
<li> Multicast is supported in Clonezilla server edition, which is suitable for massively clone. You can also remotely use it to save or restore a bunch of computers if PXE and Wake-on-LAN are supported in your clients.</li>
<li> Based on Partimage, ntfsclone and dd to clone partition. However, clonezilla, containing some other programs, can save and restore not only partitions, but also a whole disk.</li>
<li> By using another free software drbl-winroll, which is also developed by us, the hostname, group, and SID of cloned MS windows machine can be automatically changed.</li>
</ul>
<p><strong>Editions</strong><br />
Clonezilla Live: Allows you to use CD/DVD or USB flash drive to boot and run clonezilla (Unicast only)<br />
Clonezilla server edition: A DRBL server must first be set up in order to use Clonezilla to do massively clone (Both unicast and multicast are supported)</p>
<p><strong>Which one is suitable for diskless gaming platform?</strong></p>
<p>So Which one are the perfect candidate for Diskless Linux Gaming Server and Client? My answer is DRBL, why? Because DRBL client is a fat client that doesn&#8217;t rely too much hardware dependencies on Server like LTSP Client.</p>
<p><strong>References :</strong></p>
<p>[1] : <a href="https://help.ubuntu.com/community/EdubuntuDocumentation/EdubuntuCookbook/ThinClient" target="_blank">https://help.ubuntu.com/community/EdubuntuDocumentation/EdubuntuCookbook/ThinClient</a></p>
<p>[2] : <a href="http://drbl.sourceforge.net/about/" target="_blank">http://drbl.sourceforge.net/about/</a></p>
<p>[3] : <a href="https://help.ubuntu.com/community/Clonezilla_Server_Edition">https://help.ubuntu.com/community/Clonezilla_Server_Edition</a></p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 2088px; width: 1px; height: 1px;">
<p><span style="border-collapse: separate; color: #000000; font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;"><span style="font-family: 'Helvetica Neue','Lucida Grande',Helvetica,Arial,Verdana,sans-serif; font-size: 21px;"> </span></span></p>
<h1 id="Features of Clonezilla" style="margin: 0px; padding: 2px 0px; font-weight: normal; color: #5a3320; line-height: 1.2em; font-size: 1.6em; border-bottom: 1px solid #6d4c07;">Features of Clonezilla</h1>
<p><span id="line-10" class="anchor"> </span></p>
<ul>
<li>Free (GPL) Software.</li>
<li>Filesystem supported: ext2, ext3, reiserfs, xfs, jfs of GNU/Linux, and FAT, NTFS of MS Windows. Therefore you can clone GNU/Linux or MS windows. For these file systems, only used blocks in partition are saved and restored. For unsupported file system, sector-to-sector copy is done by dd in Clonezilla.</li>
<li>LVM2 (LVM version 1 is not) under GNU/Linux is supported.</li>
<li>Multicast is supported in Clonezilla server edition, which is suitable for massively clone. You can also remotely use it to save or restore a bunch of computers if PXE and Wake-on-LAN are supported in your clients.</li>
<li>Based on Partimage, ntfsclone and dd to clone partition. However, clonezilla, containing some other programs, can save and restore not only partitions, but also a whole disk.</li>
<li>By using another free software drbl-winroll, which is also developed by us, the hostname, group, and SID of cloned MS windows machine can be automatically changed.</li>
</ul>
<p class="line867">
<h1 id="Editions" style="margin: 0px; padding: 2px 0px; font-weight: normal; color: #5a3320; line-height: 1.2em; font-size: 1.6em; border-bottom: 1px solid #6d4c07;">Editions</h1>
<ul>
<li>Clonezilla Live: Allows you to use CD/DVD or USB flash drive to boot and run clonezilla (Unicast only)</li>
<li class="gap" style="margin-top: 0.5em;">Clonezilla server edition: A DRBL server must first be set up in order to use Clonezilla to do massively clone (Both unicast and multicast are supported)</li>
</ul>
</div>
<p><map name='google_ad_map_251_3db9945d9ae1c815'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/251?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_251_3db9945d9ae1c815' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=251&amp;url= http%3A%2F%2Fwww.osscc.org%2F2010%2F06%2Fwhat-are-the-differences-between-drbl-and-ltsp%2F' /></p>]]></content:encoded>
			<wfw:commentRss>http://www.osscc.org/2010/06/what-are-the-differences-between-drbl-and-ltsp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Old Days With NT 4.0 / 2k Windows Terminal Server</title>
		<link>http://www.osscc.org/2010/06/my-old-days-with-nt-4-0-2k-windows-terminal-server/</link>
		<comments>http://www.osscc.org/2010/06/my-old-days-with-nt-4-0-2k-windows-terminal-server/#comments</comments>
		<pubDate>Fri, 18 Jun 2010 08:41:38 +0000</pubDate>
		<dc:creator>osscc</dc:creator>
				<category><![CDATA[Cyber Cafe]]></category>
		<category><![CDATA[Diskless Technology]]></category>
		<category><![CDATA[LTSP]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Operating System]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://osscc.org/?p=43</guid>
		<description><![CDATA[Although this site is dedicated to the Open Source Softwares technologies for cyber cafe, but the document still got a relation to the FOSS technology. Perhaps this old instruction could give as some motivation to search and to develop new kind of methods to full utilizes open source softwares for cyber cafe purpose.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.osscc.org/wp-content/uploads/2010/06/Terminal_server.gif"><img class="alignleft size-medium wp-image-63" title="Terminal_server" src="http://www.osscc.org/wp-content/uploads/2010/06/Terminal_server-300x220.gif" alt="" width="300" height="220" /></a>I am cleaning my drive today, since I&#8217;ve work hard for www.pheewit.com that is currently still under construction. I need to rest my mind for a while. While I am selecting old junkie files, suddenly I found one of my old collection about &#8220;Creating Linux Diskless Client for Windows 2k / 2003 Terminal Service by Avinoam Levkovich&#8221; from my backup server.<span id="more-43"></span></p>
<p>Although this site was dedicated to the Open Source Softwares technologies for cyber cafe, but the document still got a relation to the FOSS technology. Perhaps this old instruction could give us some motivation to search and to develop new kind of methods to full utilizes open source softwares for cyber cafe purpose.</p>
<p>This old document just made me to remember my old days dealing with NT 4.0 / 2k Terminal Server running with Citrix Metaframe before I met Linux and LTSP, but right now I was falling in LOVE with DRBL.</p>
<p>So guys, I hope you all could give some suggestion or some ideas for us to share at <a title="OSSCC Community Board" href="http://www.pheewit.com/groups/open-source-cyber-cafe/" target="_blank">OSSCC Community</a>, and please have a look to the document below.</p>
<p><big><big><strong><span style="color: maroon;">Creating Linux Diskless  Client For Windows 2k/2003 Terminal Service</span></strong></big></big><br />
<strong>By  <a href="http://linuxgazette.net/authors/levkovich.html">Avinoam  Levkovich</a></strong></p>
<p>version 1.0</p>
<p>The company I work for has many old computers that are no longer suitable for the common application today ( try Running Office XP/2k on a P-I 100MHZ with 32MB Ram, and you will find out that this is not a pleasant experience ). We start looking for a solution that will save the money of buying new computers or Brand thin-clients. The goal was to use our old computer and still get good performance . We find the Linux solution just great for my goals.</p>
<p>we still use our old computer and the only investment we will have to make is buying the Windows 2K/2003 licenses and hardware .</p>
<p>The solution is actually an integration of the following Sub systems :  LTSP, rdesktop and wilisystem , fortunately those systems are integrating quite naturally as you will see .</p>
<p><strong>LTSP   : (  <a title="Linux Terminal Server Project" href="http://www.ltsp.org" target="_blank">http://www.ltsp.org</a> )<br />
</strong></p>
<p>Is the backbone of all the system which provide the Linux terminal services for the diskless client. after installing LTSP it create the /opt/ltsp/i386  Directory.</p>
<p>this Directory will be the root system of our diskless clients.  when booting the client it will get its kernel by tftp from LTSP and then it will mount /opt/ltsp/i386 as its root directory.</p>
<p>So after your client finish its boot process you will be logged to your LTSP Server and your file system will be the /opt/ltsp/i386 Directory. and then the Wilisystem start Working.</p>
<p><strong>Rdesktop :   <a title="rdesktop site" href="http://www.rdesktop.org" target="_blank">(http://www.rdesktop.org</a> )<br />
</strong></p>
<p>Microsoft has developed a protocol called RDP which is used for the Terminal Server communication with the client.</p>
<p>The rdesktop package is an application that opens  RDP Session with a Windows Server and by doing it , the Linux station become a Windows Terminal Client.</p>
<p><strong>Wilisystem : ( <a href="http://www.wllisystem.com" target="_blank">http://www.wilisystem.com/</a> ) </strong></p>
<p>The Wilisystem is actually a patch for the LTSP server. what is does is make the connection to the Windows Terminal Server as easy as it can get.</p>
<p>The Wilisystem uses the rdesktop package and finish the Diskless client boot process with the Windows login screen. by doing this it make the LTSP Session invisible to the user who feel as if he is plugged directly to the Windows Server .</p>
<p>I must thank the wilisystem developers for a great job !</p>
<p><strong>Rom-O-Matic : (  <a href="http://www.rom-o-matic.net" target="_blank">www.rom-o-matic.net</a> )</strong></p>
<p>This is where you get you boot image for you selected boot Device ( I used a floppy ). after specifying your Ethernet card model you can download your boot image.</p>
<p><strong>Great implementation for a great idea.</strong></p>
<p>please read the documentation from the Above web site&#8217;s.  when you read the documentation you will discover all the options and benefits that you can get from this system and how to tune it to your needs.</p>
<p><strong>what you need :</strong></p>
<blockquote><p>1.	Linux Server , I used P-III 800 with 256MB RAM , With Red Hat 9.0  .</p>
<p>2. 	Diskless Client, I used a P-I 133MHZ , 32MB RAM, Ati &#8211; Rage XL (mach64 Family) Display Adaptor, with the intel 100/pro Ethernet .</p>
<p>3.	Windows 2K/2003 Server With Terminal Services installed, configured and Running .<br />
I used a P-4 1.7MHZ with 256MB RAM.</p></blockquote>
<p><strong>Create your diskless Client Environment:</strong></p>
<p>The Diskless Client will be called ws009.</p>
<p><strong>The Linux Server Side :</strong></p>
<p>1.	Find your Client ( ws009 ) Display card Model  and his Ethernet mac address and write them down, you will need them later.</p>
<p>2.	Download and install the Following packages from http://www.ltsp.org :</p>
<blockquote><p>ltsp_core-X.X-X.rpm<br />
ltsp_kerne-X.X-X.rpm<br />
ltsp_x_core-X.X-X.rpm<br />
ltsp_x_fonts-X.X-X.rpm</p></blockquote>
<p>3. 	Install the rdesktop package from your RedHat CD or Download it form http://www.rdesktop.org/ .</p>
<p>4.	Download the wilisystem patch from www.wilisystem.com , and install it .</p>
<p>5.	Make sure that the packages for the Dhcp,Nfs,Tftp servers are installed.</p>
<p>6.	Edit the file /opt/ltsp/install_scripts/CONFIG and change the settings  to match your network Setting.</p>
<p>7.	Run  /opt/ltsp/templates/ltsp_initialize</p>
<blockquote><p># cd /opt/ltsp/templates/ltsp_initialize</p>
<p>#  ./ltsp_initialize</p></blockquote>
<p>8. Copy /etc/dhcpd.conf.example to /etc/dhcpd.conf and check that all the network numbers match your network Configuration.<br />
Check the Mac address of your client and update the client configuration section ( host ws009 ) in the dhcpd.conf file.</p>
<p>Here is my /etc/dhcpd.conf :</p>
<blockquote><p>ddns-update-style none;</p>
<p>default-lease-time 21600;<br />
max-lease-time 21600;</p>
<p>option subnet-mask 255.255.255.0;<br />
option broadcast-address 192.168.1.255;<br />
option routers 192.168.1.100;<br />
option domain-name-servers 192.168.1.100;<br />
option domain-name &#8220;my-domain.com&#8221;;<br />
option root-path &#8220;192.168.1.100:/opt/ltsp/i386&#8243;;</p>
<p>option option-128 code 128 = string;<br />
option option-129 code 129 = text;</p>
<p>shared-network WORKSTATIONS {<br />
subnet 192.168.1.0 netmask 255.255.255.0 {<br />
}<br />
}</p>
<p>group {<br />
use-host-decl-names on;<br />
option log-servers 192.168.1.100;</p>
<p>host ws009 {<br />
hardware ethernet 00:02:B3:2D:B0:D2;<br />
fixed-address 192.168.1.113;<br />
filename &#8220;/lts/vmlinuz-2.4.21-ltsp-1&#8243;;<br />
}</p>
<p>}</p></blockquote>
<p>9.	Check /etc/exports. check that the IP numbers match your network Configuration.  if everything is fine run :</p>
<blockquote><p># exportfs -r<br />
# exportfs -a</p></blockquote>
<p>10.	Check that your client is properly listed in /etc/hosts. if your client name is w009 and your domain is my-domain.com you should add a line to your /etc/hosts file  like :</p>
<p>192.168.1.112       ws009.my-domain.com         ws009 this name (ws009) should be the same as the client name ( host ws009) that you configured in your dhcp.conf</p>
<p>12.	Check /opt/ltsp/i386/etc/lts.conf at the end of the file you should see the wilisystem configuration</p>
<p>Here is my Wilisystem Config , I added my remarks for the configuration part:</p>
<blockquote><p># Config part for the http://www.wilisystem.com<br />
# example ws009 accessing the W2K/NT4 TSE<br />
[ws009]<br />
RDPSERVER = 192.168.1.3                  # The ip of your W2K/NT4 Terminal Server<br />
RUNLEVEL = 7                                     # runlevel 7 for wilisystem<br />
SERVER = 192.168.1.100                      # The IP of your LTSP server<br />
XSERVER = auto                                  # auto Discovery of your Display-card</p>
<p># if your display card fail in the auto mod, you should download the proper ltsp_x336-XXX from www.ltsp.org and specify it like    XSERVER      = XF86_Mach64</p>
<p>X_MODE_0 = 1024&#215;768        # The Resolution that you want, ( 1024&#215;768 , 800&#215;600 &#8230;)</p>
<p>X_COLOR_DEPTH = 15      # The color Depth .. i think win2k server only support 8 bit (256) color.</p>
<p># the folowing line configure your mouse , check the Documentation page for more mouse type configuration : http://www.ltsp.org/documentation/</p>
<p>X_MOUSE_PROTOCOL = &#8220;PS/2&#8243;<br />
X_MOUSE_DEVICE = &#8220;/dev/psaux&#8221;<br />
X_MOUSE_RESOLUTION = 400<br />
X_MOUSE_BUTTONS = 3</p></blockquote>
<p>13.	Make sure that the tftp service is enabled in the xinetd directory. run :</p>
<blockquote><p>#  service dhcpd restart<br />
#  service xinetd restart</p>
<p>#  service nfs restart</p></blockquote>
<p>The verify that the tftp server is running. run :<strong> netstat -anp | grep &#8220;:69 &#8220;</strong></p>
<p>you should get something like :<strong> udp 0 0 0.0.0.0:69 0.0.0.0:* 799/xinetd</strong></p>
<p>verify dhcp server by :   <strong>netstat -anp | grep &#8220;:67 &#8220;</strong><br />
you should get something like : <strong>udp 0 0 0.0.0.0:67 0.0.0.0:* 2086/dhcpd</strong></p>
<p>If dhcp is not working try restarting it .<br />
If tftp is not working then you have to enable tftp in /etc/xinetd.d/tftp  and restart it.</p>
<p>14.	The default runlevel is specified in  /opt/ltsp/i386/etc/lts.conf  is runlevel 5 BUT in the wilisystem section it override the default with its own Runlevel 7 ( if you take a look at /opt/ltsp/i386/etc/inittab you will see wilisystem Configuration for this runlevel.). if you exerience problems you should change it. try to load your client with one of the other clients configuration that you have in /opt/ltsp/i386/etc/lts.conf , ws001 is a good start . remember to change your dhcp configuration and your hosts file to match your new host name. and choose the runlevel 3 . this will only load the ltsp system without trying to connect to the Windows Terminal Server.</p>
<p>then you will be able to debug the system.</p>
<p><strong>The Diskless Client Side</strong></p>
<blockquote><p>1.	Get your initial client boot kernel from : http://rom-o-matic.net/<br />
To creat  a boot floppy from the image you downloaded run :<br />
# cat eb-5.0.10-yournic.lzdsk &gt; /dev/fd0<br />
where &#8220;eb-5.0.10-yournic.lzdsk&#8221; is where you stored your downloaded ROM image.</p>
<p>2.	Reboot the client with the boot floppy that you created from the boot image.</p>
<p>After The boot process finished ,you should get the Windows logon screen  <img src='http://www.osscc.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p></blockquote>
<p><strong>Problems</strong><br />
=====================</p>
<p>i experienced screen flickers when the  X Server was trying to load and failes with message &#8220;no screens found &#8221; , it was because the system didnt recognized my display adaptor ,  which is &#8220;mach64&#8243; family , it was solved after I downloaded the proper Xfree 3.3 Drivers from the ltsp site. and I used the &#8221; XSERVER = XF86_Mach64 &#8221; in the lts.conf file.</p>
<p><map name='google_ad_map_43_3db9945d9ae1c815'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/43?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_43_3db9945d9ae1c815' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=43&amp;url= http%3A%2F%2Fwww.osscc.org%2F2010%2F06%2Fmy-old-days-with-nt-4-0-2k-windows-terminal-server%2F' /></p>]]></content:encoded>
			<wfw:commentRss>http://www.osscc.org/2010/06/my-old-days-with-nt-4-0-2k-windows-terminal-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Clonezilla HOWTO: Quick and Dirty Setup</title>
		<link>http://www.osscc.org/2010/01/clonezilla-howto-quick-and-dirty-setup/</link>
		<comments>http://www.osscc.org/2010/01/clonezilla-howto-quick-and-dirty-setup/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 22:07:00 +0000</pubDate>
		<dc:creator>osscc</dc:creator>
				<category><![CDATA[Cyber Cafe]]></category>
		<category><![CDATA[Diskless Gaming Client]]></category>
		<category><![CDATA[Diskless Gaming Server]]></category>
		<category><![CDATA[Diskless Technology]]></category>
		<category><![CDATA[Documentation]]></category>
		<category><![CDATA[DRBL]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Operating System]]></category>
		<category><![CDATA[Recovery System]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.osscc.org/2010/01/clonezilla-howto-quick-and-dirty-setup/</guid>
		<description><![CDATA[Although I am quite familiar with DRBL, since I was running an experiment about Linux Diskess Gaming Server and Client last year at local exhibition (you can read about it here : Diskless Linux Gaming Client ), but this tutorial down here is quite easy and simple to follow it. So enjoy your reading]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.osscc.org/wp-content/uploads/2010/01/400px-DRBL_33.png"><img class="alignleft size-medium wp-image-177" title="400px-DRBL_33" src="http://www.osscc.org/wp-content/uploads/2010/01/400px-DRBL_33-300x224.png" alt="" width="300" height="224" /></a>Although I am quite familiar with DRBL, since I was running an experiment about Linux Diskess Gaming Server and Client last year at local exhibition (you can read about it here : <a href="http://www.osscc.org/2009/12/diskless-linux-gaming-terminal-using-drbl/">Diskless Linux Gaming Client</a> ), but this tutorial down here is quite easy and simple to follow it. So enjoy your reading.</p>
<p>If you have any question, do not hasitate to post it on our comment form.</p>
<hr />Since I wrote the post ‘<a href="http://lightcubesolutions.com/blog/?p=6">Clonezilla</a>‘ in January, our blog has been getting a lot of hits, apparently from people looking for advice on how to set up Clonezilla. This is understandable, since DRBL (of which Clonezilla is just a piece) is a complex piece of work, with loads of possibilities. So I decided to write up a small HOWTO, a quick and dirty method of getting Clonezilla up and running.</p>
<p>Before I go on, a bit of a disclaimer: Following the instructions below may not provide you with results that fit your particular needs. If you have specific and detailed requirements, see the <a href="http://drbl.sourceforge.net/">DRBL documentation</a>. If you would like to hire LightCube Solutions to provide assistance in setting up a Clonezilla solution for your organization, send an email to <a href="mailto:info@lightcubesolutions.com">info@lightcubesolutions.com</a>.</p>
<h2>The Steps</h2>
<h4>1. Install Linux</h4>
<p>You’ll need a Linux machine to run your Clonezilla services. These instructions were successfully tested on Ubuntu 9.04 and 9.10 and Debian 5. DRBL will also run on Fedora.</p>
<h4>2. Install DRBL</h4>
<p>First off, open up a Terminal. In Ubuntu and Debian, this is located in ‘Applications -&gt; Accessories -&gt; Terminal’. If you have sudo configured, you can change to super-user access by typing:<span style="font-family: monospace; line-height: 18px; font-size: 12px; white-space: pre;"> </span></p>
<blockquote>
<pre><code><strong>sudo -i</strong></code></pre>
</blockquote>
<p>Otherwise, use the root password with the following:</p>
<blockquote>
<pre><code><strong>su -</strong></code></pre>
</blockquote>
<p>Next, add DRBL’s GPG key to your system:</p>
<blockquote>
<pre><code><strong>wget http://drbl.sourceforge.net/GPG-KEY-DRBL </strong></code></pre>
<pre><code><strong>apt-key add GPG-KEY-DRBL</strong></code></pre>
</blockquote>
<p>Update your apt configuration so that you can install software from the DRBL guys:</p>
<blockquote>
<pre><code><strong>cp /etc/apt/sources.list{,.bak}echo "deb http://drbl.sourceforge.net/drbl-core drbl stable" \  &gt;&gt; /etc/apt/sources.list</strong></code></pre>
</blockquote>
<p>Finally, install DRBL:</p>
<blockquote>
<pre><code><strong>apt-get update </strong></code></pre>
<pre><code><strong>apt-get install drbl</strong></code></pre>
</blockquote>
<h4>3. Configure a Network Alias</h4>
<p>DRBL requires that you have two network interfaces. We can get around this by adding a virtual interface:</p>
<blockquote>
<pre><code><strong>cat &gt;&gt; /etc/network/interfaces &lt;&lt; "EOF"auto eth0:1iface eth0:1 inet static   address 192.168.222.1   netmask 255.255.255.0EOFifup eth0:1</strong></code></pre>
</blockquote>
<p>To verify that you have set up the alias properly, type:</p>
<blockquote>
<pre><code><strong>ip addr show eth0 | grep eth0:1</strong></code></pre>
</blockquote>
<p>You should see something like this:</p>
<blockquote><p><code class="stdout"><strong>inet 192.168.222.1/24 brd 192.168.222.255 scope global eth0:1</strong></code></p></blockquote>
<h4>4. Configure Your New DRBL Server</h4>
<p>Run the following two interactive commands (note that this will require an internet connection and may take some time):</p>
<blockquote>
<pre><code><strong>/opt/drbl/sbin/drblsrv -i/opt/drbl/sbin/drblpush -i</strong></code></pre>
</blockquote>
<p>Congratulations! That’s it, you have a DRBL/Clonezilla server ready to create and deploy custom images. All you need to do to start cloning is run:</p>
<blockquote>
<pre><code><strong>/opt/drbl/sbin/dcs</strong></code></pre>
</blockquote>
<p>Then, boot up your client machines using PXE. See, that wasn’t too painful…</p>
<hr />Source : <a href="http://www.lightcubesolutions.com/blog/?p=33">http://www.lightcubesolutions.com/blog/?p=33</a></p>
<p><map name='google_ad_map_170_3db9945d9ae1c815'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/170?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_170_3db9945d9ae1c815' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=170&amp;url= http%3A%2F%2Fwww.osscc.org%2F2010%2F01%2Fclonezilla-howto-quick-and-dirty-setup%2F' /></p>]]></content:encoded>
			<wfw:commentRss>http://www.osscc.org/2010/01/clonezilla-howto-quick-and-dirty-setup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Diskless Linux Gaming Terminal Using DRBL</title>
		<link>http://www.osscc.org/2009/12/diskless-linux-gaming-terminal-using-drbl/</link>
		<comments>http://www.osscc.org/2009/12/diskless-linux-gaming-terminal-using-drbl/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 23:58:00 +0000</pubDate>
		<dc:creator>osscc</dc:creator>
				<category><![CDATA[Cyber Cafe]]></category>
		<category><![CDATA[Diskless Technology]]></category>
		<category><![CDATA[DRBL]]></category>
		<category><![CDATA[Games]]></category>

		<guid isPermaLink="false">http://osscc.org/?p=11</guid>
		<description><![CDATA[What a success, actually this is quite late for me to post this, but I just wanna share this with others that’s diskless linux gaming terminal is possible to do. From 5th to 7th June our exhibition our open source software technology at Rompin Fest 2009 was a big success. Our DRBL Server Specification : [...]]]></description>
			<content:encoded><![CDATA[<div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/_IZd4Rp4XipA/SvNio-2KklI/AAAAAAAAAd0/j7shkQadOPA/s1600-h/DSC00848.JPG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="150" src="http://3.bp.blogspot.com/_IZd4Rp4XipA/SvNio-2KklI/AAAAAAAAAd0/j7shkQadOPA/s200/DSC00848.JPG" width="200" /></a></div>
<p>What a success, actually this is quite late for me to post this, but I just wanna share this with others that’s diskless linux gaming terminal is possible to do. From 5th to 7th June our exhibition our open source software technology at Rompin Fest 2009 was a big success.</p>
<p><b>Our DRBL Server Specification :</b>
<ul>
<li>P4 2.4 Ghz</li>
<li>40GB Hard Disk</li>
<li>2 x 10/100Mbps NIC</li>
<li>with Ubuntu 8.04</li>
<li>Games Installed: Warzone2100/Warsow/Glest/Alien Arena/Tremulous/Savage2</li>
</ul>
<p><b>Our DRBL Client :<br /></b>
<ul>
<li>p4 1.6Ghz &#8211; 1.8Ghz</li>
<li>512MB &#8211; 768MB DDR1 Memory</li>
<li>256MB NVidia FX 5500 AGP</li>
<li>1 x 10/100Mbps NIC
</li>
</ul>
<div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/_IZd4Rp4XipA/SvNjCKBglsI/AAAAAAAAAd8/k4cdzcFM76w/s1600-h/DSC00840.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/_IZd4Rp4XipA/SvNjCKBglsI/AAAAAAAAAd8/k4cdzcFM76w/s320/DSC00840.JPG" /></a></div>
<div class="separator" style="clear: both; text-align: center;">Kids playing FPS game</div>
<div class="separator" style="clear: both; text-align: center;"></div>
<div class="separator" style="clear: both; text-align: center;">&nbsp;<a href="http://1.bp.blogspot.com/_IZd4Rp4XipA/SvNjeo_1SdI/AAAAAAAAAeE/zuwtebx6Bmc/s1600-h/DSC00847.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/_IZd4Rp4XipA/SvNjeo_1SdI/AAAAAAAAAeE/zuwtebx6Bmc/s320/DSC00847.JPG" /></a></div>
<div class="separator" style="clear: both; text-align: center;">Our booth at rompin fest 2009</div>
<div class="blogger-post-footer">OSSCC © 2006</div>
<p><map name='google_ad_map_11_3db9945d9ae1c815'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/11?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_11_3db9945d9ae1c815' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=11&amp;url= http%3A%2F%2Fwww.osscc.org%2F2009%2F12%2Fdiskless-linux-gaming-terminal-using-drbl%2F' /></p>]]></content:encoded>
			<wfw:commentRss>http://www.osscc.org/2009/12/diskless-linux-gaming-terminal-using-drbl/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Tutorial: A simple embedded Linux system</title>
		<link>http://www.osscc.org/2009/11/tutorial-a-simple-embedded-linux-system/</link>
		<comments>http://www.osscc.org/2009/11/tutorial-a-simple-embedded-linux-system/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 04:46:00 +0000</pubDate>
		<dc:creator>osscc</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Diskless Technology]]></category>
		<category><![CDATA[Embedded Linux]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Operating System]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[embedded]]></category>

		<guid isPermaLink="false">http://www.osscc.org/2009/11/tutorial-a-simple-embedded-linux-system/</guid>
		<description><![CDATA[This first article covers the construction of the most basic system possible, which will provide a command shell on the console. Along with the rest of the series, it assumes a basic understanding of a Linux-based operating system. While discussing concepts and general approaches, these concepts are demonstrated with extensive practical examples. All the practical examples are based upon a Debian- or Ubuntu-based distribution]]></description>
			<content:encoded><![CDATA[<div>
<p><span class="Article_Date"> <span class="content_rating"> </span></span><strong><a href="http://www.osscc.org/wp-content/uploads/2009/11/embedded-linux-box.jpg"><img class="size-full wp-image-231 alignleft" title="embedded-linux-box" src="http://www.osscc.org/wp-content/uploads/2009/11/embedded-linux-box.jpg" alt="Embedded Linux" width="281" height="210" /></a>Foreword</strong> &#8212; This article begins a series of tutorials on embedded Linux system development contributed by noted ARM Linux kernel hackers Vincent Sanders and Daniel Silverstone. In the initial installment, the Simtec engineers describe how embedded devices differ from other computers, and how to build &#8220;the most basic system possible.&#8221;<span class="txt"> </span></p>
<div id="intelliTxt">
<p>Papers in the series have been contributed to <cite>LinuxDevices</cite> by <a rel="nofollow" href="http://www.simtec.co.uk/" target="new"><span style="text-decoration: underline;">Simtec Electronics</span></a>, a 20-year-old U.K.-based company specializing in embedded hardware and software services, with special expertise in ARM Linux.</p>
<p>Other papers in the series (will) include:</p>
<ul>
<li>Building a simple embedded system (this paper)</li>
<li>Building an embedded Linux system with a web server</li>
<li>Building an embedded Linux web kiosk</li>
<li>Building an ARM-based embedded Linux web kiosk</li>
<li>Improving an embedded Linux system</li>
<li>Deploying embedded Linux systems</li>
</ul>
<p>Enjoy . . . !</p>
<hr /><strong>Simple Embedded Linux System</strong><br />
by Vincent Sanders and Daniel Silverstone</p>
<p><strong>Introduction</strong></p>
<p>Constructing an embedded system with Linux is often seen as a complex undertaking. This article is the first in a series which will show the fundamental aspects of constructing such systems and enable the reader to apply this knowledge to their specific situation.</p>
<p>This first article covers the construction of the most basic system possible, which will provide a command shell on the console. Along with the rest of the series, it assumes a basic understanding of a Linux-based operating system. While discussing concepts and general approaches, these concepts are demonstrated with extensive practical examples. All the practical examples are based upon a Debian- or Ubuntu-based distribution.</p>
<p><strong>What is an embedded system?</strong></p>
<p>The term &#8220;Embedded System&#8221; has been applied to such a large number of systems that its meaning has become somewhat ill-defined. The term has been applied to everything from 4-bit microcontroller systems to huge industrial control systems.</p>
<p>The context in which we are using the term here is to refer to systems where the user is limited to a specific range of interaction with a limited number of applications (typically one). Thus, from the whole spectrum of applications which a general purpose computer can run, a very narrow selection is made by the creator of the embedded system software.</p>
<p>It should be realized that the limits of interaction with a system may involve hardware as well as software. For example, if a system is limited to a keypad with only the digits 0 to 9, user interaction will be more constrained than if the user had access to a full 102-key keyboard.</p>
<p>In addition to the limiting of user interaction, there may also be limits on the system resources available. Such limits are typically imposed by a system&#8217;s cost, size, or environment. However, wherever possible, these limits should be arrived at with as much knowledge of the system requirements as possible. Many projects fail unnecessarily because an arbitrary limit has been set which makes a workable solution unachievable. An example of this would be the selection of a system&#8217;s main memory size before the application&#8217;s memory requirements have been determined.</p>
<p><strong>What do you want to achieve?</strong></p>
<p>A project must have a clearly defined goal.</p>
<p>This may be viewed as a statement of the obvious, but it bears repeating as for some unfortunately inexplicable reason, embedded systems seem to suffer from poorly-defined goals.</p>
<p>An &#8220;embedded&#8221; project, like any other, should have a clear statement of what must be achieved to be declared a success. The project brief must contain all the requirements, as well as a list of &#8220;desirable properties.&#8221; It is essential that the two should not be confused; e.g., if the product must fit inside a 100mm by 80mm enclosure, that is a requirement. However, a statement that the lowest cost should be achieved is a desirable item, whereas a fixed upper cost would be a requirement.</p>
<p>If information necessary to formulate a requirement is not known, then it should be kept as a &#8220;desirable item&#8221; couched in terms of that unknown information. It may be possible that once that information is determined, a requirement can be added.</p>
<p>It is, again, self-evident that any project plan must be flexible enough to cope with changes to requirements, but it must be appreciated that such changes may have a huge impact on the whole project and, indeed, may invalidate central decisions which have already been made.</p>
<p>General IT project management is outside the scope of this article. Fortunately there exist many good references on this topic.</p>
<p>Requirements which might be added to a project brief based on the assumptions of this article are:</p>
<ul>
<li>The system software will be based upon a Linux kernel.</li>
<li>The system software will use standard Unix-like tools and layout.</li>
</ul>
<p>The implications of these statements mean the chosen hardware should have a Linux kernel port available, and must have sufficient resources to run the chosen programs.</p>
<p>Another important consideration is what kind of OS the project warrants. For example, if you have a project requirement of in-field updates, then you may want to use a full OS with package management, such as Debian GNU/Linux or Fedora. Such a requirement would, however, imply a need for a non-flash-based storage medium such as a hard disc for storing the OS, as these kinds of systems are typically very large (even in minimal installations), and not designed with the constraints of flash-based storage in mind. However, given that additional wrinkle, using an extant operating system can reduce software development costs significantly.</p>
<p><strong>Anatomy of a Linux-based system</strong></p>
<p>Much has been written on how Linux-based systems are put together; however a brief review is in order, to ensure that basic concepts are understood.</p>
<p>To be strictly correct the term &#8220;Linux&#8221; refers only to the kernel. Various arguments have been made as to whether the kernel constitutes an operating system (OS) in its entirety, or whether the term should refer to the whole assemblage of software that makes up the system. We use the latter interpretation here.</p>
<p>The general steps when any modern computer is turned on or reset is:</p>
<ul>
<li>The CPU (or designated boot CPU on multi-core/processor systems) initializes its internal hardware state, loads microcode etc.</li>
<li>The CPU commences execution of the initial boot code, e.g., the BIOS on x86 or the boot-loader on ARM.</li>
<li> The boot code loads and executes the kernel. However, it is worth noting that x86 systems generally use the BIOS to load an intermediate loader such as GRUB or syslinux, which then fetches and starts the kernel.</li>
<li>The kernel configures the hardware and executes the init process.</li>
<li>The init process executes other processes to get all the required software running.</li>
</ul>
<p>The kernel&#8217;s role in the system is to provide a generic interface to programs, and arbitrate access to resources. Each program running on the system is called a process. Each operates as if it were the only process running. The kernel completely insulates a program from the implementation details of physical memory layout, peripheral access, networking, etc.</p>
<p>The first process executed is special in that it is not expected to exit, and is expected to perform some basic housekeeping tasks to keep a system running. Except in very specific circumstances, this process is provided by a program named /sbin/init. The init process typically starts a shell script at boot to execute additional programs.</p>
<p>Some projects have chosen to run their primary application as the init process. While this is possible, it is not recommended, as such a program is exceptionally difficult to debug and control. A programming bug in the application halts the system, and there is no way to debug the issue.</p>
<p>One feature of almost all Unix-like systems is the shell, an interactive command parser. Most common shells have the Bourne shell syntax.</p>
<p><strong>A simple beginning</strong></p>
<p>We shall now consider creating a minimal system. The approach taken here requires no additional hardware beyond the host PC, and the absolute minimum of additional software.</p>
<p>As already mentioned, these examples assume a Debian or Ubuntu host system. To use the QEMU emulator for testing, the host system must be supported by QEMU as a target. An example where this might not be the case is where the target system is x86-64, which QEMU does not support.</p>
<p>To ease construction of the examples, we will use the kernel&#8217;s <em>initramfs</em> support. An initramfs is a gzip-compressed cpio archive of a file system. It is unpacked into a RAM disk at kernel initialization. A slight difference to normal system start-up is that while the first process executed must still be called init, it must be in the root of the file system. We will use the /init script to create some symbolic links and device nodes before executing the more-typical /sbin/init program.</p>
<p>This example system will use a program called <em>Busybox</em>, which provides a large number of utilities in a single executable, including a shell and an init process. Busybox is used extensively to build embedded systems of many types.</p>
<p>The <em>busybox-static</em> package is required to obtain pre-built copy of the Busybox binary and the <em>qemu</em> package is required to test the constructed images. These may be obtained by executing:</p>
<blockquote>
<pre>$ sudo apt-get install busybox-static qemu</pre>
</blockquote>
<p>As mentioned, our initramfs-based approach requires a small /init script. This configures some basic device nodes and directories, mounts the special /sys and /proc file systems, and starts the processing of hotplug events using mdev.</p>
<blockquote>
<pre>#!/bin/sh

# Create all the busybox symbolic links/bin/busybox --install -s

# Create base directories[ -d /dev ] || mkdir -m 0755 /dev[ -d /root ] || mkdir --mode=0700 /root[ -d /sys ] || mkdir /sys[ -d /proc ] || mkdir /proc[ -d /tmp ] || mkdir /tmpmkdir -p /var/lock

# Mount essential filesystemsmount -t sysfs none /sys -onodev,noexec,nosuidmount -t proc none /proc -onodev,noexec,nosuid

# Create essential filesystem nodesmknod /dev/zero c 1 5mknod /dev/null c 1 3
mknod /dev/tty c 5 0mknod /dev/console c 5 1mknod /dev/ptmx c 5 2
mknod /dev/tty0 c 4 0mknod /dev/tty1 c 4 1
echo "/sbin/mdev" &gt; /proc/sys/kernel/hotplug
echo "Creating devices"/sbin/mdev -s
exec /sbin/init</pre>
</blockquote>
<p>To construct the cpio archive, the following commands should be executed in a shell. Note, however, that INITSCRIPT should be replaced with the location of the above script.</p>
<blockquote>
<pre>$ mkdir simple$ cd simple$ mkdir -p bin sbin usr/bin usr/sbin$ cp /bin/busybox bin/busybox$ ln -s busybox bin/sh$ cp INITSCRIPT init$ chmod a+x init$ find . | cpio --quiet -o -H newc | gzip &gt;../simple.gz$ cd ..</pre>
</blockquote>
<p>To test the constructed image use a command like:</p>
<blockquote>
<pre>$ qemu -kernel /boot/vmlinuz-2.6.26-1-686 -initrd simple.gz \             -append "root=/dev/ram" /dev/zero</pre>
</blockquote>
<p>This should present a QEMU window where the OS you just constructed boots and displays the message &#8220;Please press Enter to activate this console.&#8221; Press enter and you should be presented with an interactive shell from which you can experiment with the commands Busybox provides. This environment is executing entirely from a RAM disc and is completely volatile. As such, any changes you make will not persist when the emulator is stopped.</p>
<p><strong>Booting a real system</strong></p>
<p>Starting the image under emulation proves the image ought to work on a real system, but there is no substitute for testing on real hardware. The <em>syslinux</em> package allows us to construct bootable systems for standard PCs on DOS-formatted storage.</p>
<p>A suitable medium should be chosen to boot from, e.g., a DOS-formatted floppy disk or a DOS-formatted USB stick. The DOS partition of the USB stick must be marked bootable. Some USB sticks might need repartitioning and reformatting with the Linux tools in order to work correctly.</p>
<p>The <em>syslinux</em> program should be run on the device /dev/fd0 for a floppy disk, or something similar to <em>/dev/sdx1</em> for a USB stick. Care must be taken, as selecting the wrong device name might overwrite your host system&#8217;s hard drive.</p>
<p>The target device should then be mounted and the kernel and the <em>simple.gz</em> file copied on.</p>
<p>The syslinux loader can be configured using a file called syslinux.cfg which would look something like:</p>
<blockquote>
<pre>default simpletimeout 100prompt 1

label simple  kernel vmlinuz  append initrd=simple root=/dev/ram</pre>
</blockquote>
<p>The complete command sequence to perform these actions, substituting file locations as appropriate, is:</p>
<blockquote>
<pre>$ sudo syslinux -s /dev/sdd1$ sudo mount -t vfat -o shortname=mixed  /dev/sdd1 /mnt/$ cd /mnt$ sudo cp /boot/vmlinuz-2.6.26-1-686 VMLINUZ$ sudo cp simple.gz SIMPLE$ sudo cp syslinux.cfg SYSLINUX.CFG$ cd /mnt$ sudo umount /mnt</pre>
</blockquote>
<p>The device may now be removed and booted on an appropriate PC. The PC should boot the image and present a prompt exactly the same way the emulator did.</p>
<p><strong>What&#8217;s next?</strong></p>
<p>This first step, while simple, provides a complete OS, and demonstrates that constructing an embedded system can be a straightforward process.</p>
<p>The next step is to expand this simple example to encompass a specific application, which will be covered in the next article.</p>
<p><em>This article is copyrighted 2009, <a rel="nofollow" href="http://www.simtec.co.uk/" target="new"><span style="text-decoration: underline;">Simtec Electronics</span></a>, and reproduced here with permission.</em></p>
<hr />
<p><img src="http://www.linuxfordevices.com/files/misc/vincent_sanders-thm.jpg" alt="" hspace="10" vspace="5" align="left" /><strong>Vincent Sanders</strong> is the senior software engineer at <a rel="nofollow" href="http://www.simtec.co.uk/" target="new"><span style="text-decoration: underline;">Simtec Electronics</span></a>. He has extensive experience in the computer industry, having worked on projects from large fault-tolerant systems through accounting software to programmable logic systems. He is an active developer for numerous open source projects, including the Linux kernel, and is also a Debian developer.</p>
<p><img src="http://www.linuxfordevices.com/files/misc/daniel_silverstone-thm.jpg" alt="" hspace="10" vspace="5" align="left" /><strong>Daniel Silverstone</strong> is a software engineer at <a rel="nofollow" href="http://www.simtec.co.uk/" target="new"><span style="text-decoration: underline;">Simtec Electronics</span></a>, and has experience in architecting robust systems. He develops software for a large number of open source projects, contributes to the Linux kernel, and is both an Ubuntu and Debian developer.</p>
<blockquote>
<hr /></blockquote>
<p><strong>About the authors</strong> By <a rel="nofollow" href="http://www.linuxfordevices.com/cp/bio/Jonathan-Angel/">Jonathan Angel</a> 2009-03-23</p>
</div>
</div>
<div id="at20mc" style="z-index: 1000000;">
<p>Source : <a href="http://www.linuxfordevices.com/c/a/Linux-For-Devices-Articles/Tutorial-A-simple-embedded-Linux-system/">http://www.linuxfordevices.com/c/a/Linux-For-Devices-Articles/Tutorial-A-simple-embedded-Linux-system/</a></p>
<div id="at16pcc">
<div id="at16p" style="display: none;">
<p><a name="atpro"></a><a name="atclb"></a><a name="atopp"></a><a name="atcle"></a><a name="atcef"></a></p>
<div id="at16pib">
<div id="at16pi">
<div id="at16pm">
<div id="at16pt">
<h4><span id="at16ptc">Bookmark &amp; Share</span></h4>
<p><span id="at16_brand">DevSource</span><a id="at16ptx" onclick="return _atw.clb()" href="http://www.linuxfordevices.com/index2.php?option=content&amp;task=view&amp;id=48525&amp;pop=1&amp;hide_ads=1&amp;page=0&amp;hide_js=1#">X</a></p>
</div>
<div id="at16pc">
<div id="at_feed" style="display: none;">
<p><span style="display: block;">Select from these web-based feed readers:</span></p>
<div onclick="return addthis_sendto('aol');"><a class="fbtn at_baa aol">AOL</a></div>
<div class="at_litem" onclick="return addthis_sendto('bloglines');"><a class="fbtn at_baa bloglines">Bloglines</a></div>
<div onclick="return addthis_sendto('google');"><a class="fbtn at_baa google">Google Reader</a></div>
<div class="at_litem" onclick="return addthis_sendto('mymsn');"><a class="fbtn at_baa mymsn">My MSN</a></div>
<div onclick="return addthis_sendto('netvibes');"><a class="fbtn at_baa netvibes">Netvibes</a></div>
<div class="at_litem" onclick="return addthis_sendto('newsisfree');"><a class="fbtn at_baa newsisfree">Newsisfree</a></div>
<div onclick="return addthis_sendto('pageflakes');"><a class="fbtn at_baa pageflakes">Pageflakes</a></div>
<div class="at_litem" onclick="return addthis_sendto('technorati');"><a class="fbtn at_baa technorati">Technorati</a></div>
<div onclick="return addthis_sendto('yahoo');"><a class="fbtn at_baa yahoo">Yahoo</a></div>
</div>
<div id="at_share" style="display: none;">
<div id="at16psf" style="display: none; visibility: hidden;">
<input id="at16filt" class="atfxmode2" onkeyup="_atw.filt(this.value,_atw.list)" maxlength="50" name="at16filt" size="30" type="text" tabindex="1" /></div>
<div id="at16ps">
<div id="at16nms" style="display: none;">No matching services.</div>
<div id="ati_100zakladok" class="at_item" onclick="return addthis_sendto('100zakladok');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_100zakladok">100zakladok</span></div>
<div id="ati_a1webmarks" class="at_item" onclick="return addthis_sendto('a1webmarks');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_a1webmarks">A1?Webmarks</span></div>
<div id="ati_aim" class="at_item" onclick="return addthis_sendto('aim');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_aim">AIM Share</span></div>
<div id="ati_amazonwishlist" class="at_item" onclick="return addthis_sendto('amazonwishlist');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_amazonwishlist">Amazon</span></div>
<div id="ati_amenme" class="at_item" onclick="return addthis_sendto('amenme');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_amenme">Amen Me!</span></div>
<div id="ati_aolmail" class="at_item" onclick="return addthis_sendto('aolmail');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_aolmail">AOL Mail</span></div>
<div id="ati_arto" class="at_item" onclick="return addthis_sendto('arto');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_arto">Arto</span></div>
<div id="ati_ask" class="at_item" onclick="return addthis_sendto('ask');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_ask">Ask</span></div>
<div id="ati_aviary" class="at_item" onclick="return addthis_sendto('aviary');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_aviary">Aviary Capture</span></div>
<div id="ati_backflip" class="at_item" onclick="return addthis_sendto('backflip');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_backflip">Backflip</span></div>
<div id="ati_baidu" class="at_item" onclick="return addthis_sendto('baidu');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_baidu">Baidu</span></div>
<div id="ati_ballhype" class="at_item" onclick="return addthis_sendto('ballhype');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_ballhype">BallHype</span></div>
<div id="ati_bebo" class="at_item" onclick="return addthis_sendto('bebo');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_bebo">Bebo</span></div>
<div id="ati_bitly" class="at_item" onclick="return addthis_sendto('bitly');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_bitly">Bit.ly</span></div>
<div id="ati_bizsugar" class="at_item" onclick="return addthis_sendto('bizsugar');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_bizsugar">BizSugar</span></div>
<div id="ati_bleetbox" class="at_item" onclick="return addthis_sendto('bleetbox');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_bleetbox">Bleetbox</span></div>
<div id="ati_blinklist" class="at_item" onclick="return addthis_sendto('blinklist');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_blinklist">Blinklist</span></div>
<div id="ati_blip" class="at_item" onclick="return addthis_sendto('blip');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_blip">Blip</span></div>
<div id="ati_blogger" class="at_item" onclick="return addthis_sendto('blogger');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_blogger">Blogger</span></div>
<div id="ati_bloggy" class="at_item" onclick="return addthis_sendto('bloggy');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_bloggy">Bloggy</span></div>
<div id="ati_blogmarks" class="at_item" onclick="return addthis_sendto('blogmarks');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_blogmarks">Blogmarks</span></div>
<div id="ati_bobrdobr" class="at_item" onclick="return addthis_sendto('bobrdobr');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_bobrdobr">Bobrdobr</span></div>
<div id="ati_bonzobox" class="at_item" onclick="return addthis_sendto('bonzobox');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_bonzobox">BonzoBox</span></div>
<div id="ati_bordom" class="at_item" onclick="return addthis_sendto('bordom');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_bordom">Bordom</span></div>
<div id="ati_brainify" class="at_item" onclick="return addthis_sendto('brainify');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_brainify">Brainify</span></div>
<div id="ati_bryderi" class="at_item" onclick="return addthis_sendto('bryderi');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_bryderi">Bryderi.se</span></div>
<div id="ati_buddymarks" class="at_item" onclick="return addthis_sendto('buddymarks');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_buddymarks">BuddyMarks</span></div>
<div id="ati_buzz" class="at_item" onclick="return addthis_sendto('buzz');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_buzz">Buzz</span></div>
<div id="ati_care2" class="at_item" onclick="return addthis_sendto('care2');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_care2">Care2</span></div>
<div id="ati_citeulike" class="at_item" onclick="return addthis_sendto('citeulike');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_citeulike">CiteULike</span></div>
<div id="ati_colivia" class="at_item" onclick="return addthis_sendto('colivia');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_colivia">Colivia.de</span></div>
<div id="ati_connotea" class="at_item" onclick="return addthis_sendto('connotea');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_connotea">Connotea</span></div>
<div id="ati_delicious" class="at_item" onclick="return addthis_sendto('delicious');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_delicious">Delicious</span></div>
<div id="ati_designbump" class="at_item" onclick="return addthis_sendto('designbump');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_designbump">DesignBump</span></div>
<div id="ati_designmoo" class="at_item" onclick="return addthis_sendto('designmoo');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_designmoo">Designmoo</span></div>
<div id="ati_digg" class="at_item" onclick="return addthis_sendto('digg');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_digg">Digg</span></div>
<div id="ati_diggita" class="at_item" onclick="return addthis_sendto('diggita');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_diggita">Diggita</span></div>
<div id="ati_diglog" class="at_item" onclick="return addthis_sendto('diglog');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_diglog">Diglog</span></div>
<div id="ati_diigo" class="at_item" onclick="return addthis_sendto('diigo');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_diigo">Diigo</span></div>
<div id="ati_domelhor" class="at_item" onclick="return addthis_sendto('domelhor');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_domelhor">DoMelhor</span></div>
<div id="ati_doower" class="at_item" onclick="return addthis_sendto('doower');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_doower">Doower</span></div>
<div id="ati_dosti" class="at_item" onclick="return addthis_sendto('dosti');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_dosti">Dosti</span></div>
<div id="ati_dotnetkicks" class="at_item" onclick="return addthis_sendto('dotnetkicks');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_dotnetkicks">DotNetKicks</span></div>
<div id="ati_dropjack" class="at_item" onclick="return addthis_sendto('dropjack');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_dropjack">Dropjack</span></div>
<div id="ati_dzone" class="at_item" onclick="return addthis_sendto('dzone');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_dzone">Dzone</span></div>
<div id="ati_edelight" class="at_item" onclick="return addthis_sendto('edelight');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_edelight">Edelight</span></div>
<div id="ati_ekudos" class="at_item" onclick="return addthis_sendto('ekudos');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_ekudos">eKudos</span></div>
<div id="ati_email" class="at_item" onclick="return addthis_sendto('email');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_email">Email</span></div>
<div id="ati_embarkons" class="at_item" onclick="return addthis_sendto('embarkons');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_embarkons">Embarkons</span></div>
<div id="ati_eucliquei" class="at_item" onclick="return addthis_sendto('eucliquei');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_eucliquei">euCliquei</span></div>
<div id="ati_evernote" class="at_item" onclick="return addthis_sendto('evernote');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_evernote">Evernote</span></div>
<div id="ati_fabulously40" class="at_item" onclick="return addthis_sendto('fabulously40');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_fabulously40">Fabulously40</span></div>
<div id="ati_facebook" class="at_item" onclick="return addthis_sendto('facebook');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_facebook">Facebook</span></div>
<div id="ati_fark" class="at_item" onclick="return addthis_sendto('fark');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_fark">Fark</span></div>
<div id="ati_faves" class="at_item" onclick="return addthis_sendto('faves');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_faves">Faves</span></div>
<div id="ati_favorites" class="at_item" onclick="return addthis_sendto('favorites');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_favorites">Favorites</span></div>
<div id="ati_favoritus" class="at_item" onclick="return addthis_sendto('favoritus');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_favoritus">Favoritus</span></div>
<div id="ati_flosspro" class="at_item" onclick="return addthis_sendto('flosspro');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_flosspro">Floss.pro</span></div>
<div id="ati_fnews" class="at_item" onclick="return addthis_sendto('fnews');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_fnews">Fnews</span></div>
<div id="ati_folkd" class="at_item" onclick="return addthis_sendto('folkd');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_folkd">Folkd</span></div>
<div id="ati_fresqui" class="at_item" onclick="return addthis_sendto('fresqui');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_fresqui">Fresqui</span></div>
<div id="ati_friendfeed" class="at_item" onclick="return addthis_sendto('friendfeed');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_friendfeed">FriendFeed</span></div>
<div id="ati_funp" class="at_item" onclick="return addthis_sendto('funp');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_funp">funP</span></div>
<div id="ati_fwisp" class="at_item" onclick="return addthis_sendto('fwisp');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_fwisp">fwisp</span></div>
<div id="ati_gabbr" class="at_item" onclick="return addthis_sendto('gabbr');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_gabbr">Gabbr</span></div>
<div id="ati_gacetilla" class="at_item" onclick="return addthis_sendto('gacetilla');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_gacetilla">Gacetilla</span></div>
<div id="ati_globalgrind" class="at_item" onclick="return addthis_sendto('globalgrind');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_globalgrind">GlobalGrind</span></div>
<div id="ati_gluvsnap" class="at_item" onclick="return addthis_sendto('gluvsnap');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_gluvsnap">GluvSnap</span></div>
<div id="ati_gmail" class="at_item" onclick="return addthis_sendto('gmail');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_gmail">Gmail</span></div>
<div id="ati_google" class="at_item" onclick="return addthis_sendto('google');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_google">Google</span></div>
<div id="ati_googlereader" class="at_item" onclick="return addthis_sendto('googlereader');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_googlereader">Google Reader</span></div>
<div id="ati_gravee" class="at_item" onclick="return addthis_sendto('gravee');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_gravee">Gravee</span></div>
<div id="ati_grumper" class="at_item" onclick="return addthis_sendto('grumper');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_grumper">Grumper</span></div>
<div id="ati_habergentr" class="at_item" onclick="return addthis_sendto('habergentr');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_habergentr">Haber.gen.tr</span></div>
<div id="ati_hackernews" class="at_item" onclick="return addthis_sendto('hackernews');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_hackernews">Hacker News</span></div>
<div id="ati_hadashhot" class="at_item" onclick="return addthis_sendto('hadashhot');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_hadashhot">Hadash Hot</span></div>
<div id="ati_hatena" class="at_item" onclick="return addthis_sendto('hatena');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_hatena">Hatena</span></div>
<div id="ati_hazarkor" class="at_item" onclick="return addthis_sendto('hazarkor');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_hazarkor">Hazarkor</span></div>
<div id="ati_hellotxt" class="at_item" onclick="return addthis_sendto('hellotxt');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_hellotxt">HelloTxt</span></div>
<div id="ati_hemidemi" class="at_item" onclick="return addthis_sendto('hemidemi');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_hemidemi">HEMiDEMi</span></div>
<div id="ati_hipstr" class="at_item" onclick="return addthis_sendto('hipstr');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_hipstr">Hipstr</span></div>
<div id="ati_hitmarks" class="at_item" onclick="return addthis_sendto('hitmarks');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_hitmarks">Hitmarks</span></div>
<div id="ati_hotklix" class="at_item" onclick="return addthis_sendto('hotklix');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_hotklix">Hotklix</span></div>
<div id="ati_hotmail" class="at_item" onclick="return addthis_sendto('hotmail');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_hotmail">Hotmail</span></div>
<div id="ati_w3validator" class="at_item" onclick="return addthis_sendto('w3validator');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_w3validator">HTML Validator</span></div>
<div id="ati_hyves" class="at_item" onclick="return addthis_sendto('hyves');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_hyves">Hyves</span></div>
<div id="ati_identica" class="at_item" onclick="return addthis_sendto('identica');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_identica">Identi.ca</span></div>
<div id="ati_investorlinks" class="at_item" onclick="return addthis_sendto('investorlinks');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_investorlinks">InvestorLinks</span></div>
<div id="ati_jamespot" class="at_item" onclick="return addthis_sendto('jamespot');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_jamespot">Jamespot</span></div>
<div id="ati_jumptags" class="at_item" onclick="return addthis_sendto('jumptags');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_jumptags">Jumptags</span></div>
<div id="ati_kaboodle" class="at_item" onclick="return addthis_sendto('kaboodle');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_kaboodle">Kaboodle</span></div>
<div id="ati_kaevur" class="at_item" onclick="return addthis_sendto('kaevur');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_kaevur">Kaevur</span></div>
<div id="ati_kirtsy" class="at_item" onclick="return addthis_sendto('kirtsy');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_kirtsy">KiRTSY</span></div>
<div id="ati_kledy" class="at_item" onclick="return addthis_sendto('kledy');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_kledy">Kledy</span></div>
<div id="ati_koornk" class="at_item" onclick="return addthis_sendto('koornk');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_koornk">koornk</span></div>
<div id="ati_kudos" class="at_item" onclick="return addthis_sendto('kudos');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_kudos">Kudos</span></div>
<div id="ati_laaikit" class="at_item" onclick="return addthis_sendto('laaikit');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_laaikit">Laaikit</span></div>
<div id="ati_librerio" class="at_item" onclick="return addthis_sendto('librerio');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_librerio">Librerio</span></div>
<div id="ati_linkninja" class="at_item" onclick="return addthis_sendto('linkninja');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_linkninja">Link Ninja</span></div>
<div id="ati_linkagogo" class="at_item" onclick="return addthis_sendto('linkagogo');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_linkagogo">Link-a-Gogo</span></div>
<div id="ati_linkedin" class="at_item" onclick="return addthis_sendto('linkedin');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_linkedin">LinkedIn</span></div>
<div id="ati_linkuj" class="at_item" onclick="return addthis_sendto('linkuj');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_linkuj">Linkuj.cz</span></div>
<div id="ati_live" class="at_item" onclick="return addthis_sendto('live');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_live">Live</span></div>
<div id="ati_livejournal" class="at_item" onclick="return addthis_sendto('livejournal');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_livejournal">LiveJournal</span></div>
<div id="ati_lunch" class="at_item" onclick="return addthis_sendto('lunch');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_lunch">Lunch.com</span></div>
<div id="ati_lynki" class="at_item" onclick="return addthis_sendto('lynki');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_lynki">Lynki</span></div>
<div id="ati_meccho" class="at_item" onclick="return addthis_sendto('meccho');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_meccho">Meccho</span></div>
<div id="ati_meinvz" class="at_item" onclick="return addthis_sendto('meinvz');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_meinvz">meinVZ</span></div>
<div id="ati_memori" class="at_item" onclick="return addthis_sendto('memori');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_memori">Memori.ru</span></div>
<div id="ati_meneame" class="at_item" onclick="return addthis_sendto('meneame');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_meneame">Menéame</span></div>
<div id="ati_mindbodygreen" class="at_item" onclick="return addthis_sendto('mindbodygreen');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_mindbodygreen">Mindbodygreen</span></div>
<div id="ati_misterwong" class="at_item" onclick="return addthis_sendto('misterwong');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_misterwong">Mister Wong</span></div>
<div id="ati_mixx" class="at_item" onclick="return addthis_sendto('mixx');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_mixx">Mixx</span></div>
<div id="ati_multiply" class="at_item" onclick="return addthis_sendto('multiply');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_multiply">Multiply</span></div>
<div id="ati_myaol" class="at_item" onclick="return addthis_sendto('myaol');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_myaol">myAOL</span></div>
<div id="ati_mylinkvault" class="at_item" onclick="return addthis_sendto('mylinkvault');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_mylinkvault">Mylinkvault</span></div>
<div id="ati_myspace" class="at_item" onclick="return addthis_sendto('myspace');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_myspace">MySpace</span></div>
<div id="ati_n4g" class="at_item" onclick="return addthis_sendto('n4g');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_n4g">N4G</span></div>
<div id="ati_netlog" class="at_item" onclick="return addthis_sendto('netlog');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_netlog">NetLog</span></div>
<div id="ati_netvibes" class="at_item" onclick="return addthis_sendto('netvibes');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_netvibes">Netvibes</span></div>
<div id="ati_netvouz" class="at_item" onclick="return addthis_sendto('netvouz');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_netvouz">Netvouz</span></div>
<div id="ati_newstrust" class="at_item" onclick="return addthis_sendto('newstrust');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_newstrust">NewsTrust</span></div>
<div id="ati_newsvine" class="at_item" onclick="return addthis_sendto('newsvine');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_newsvine">Newsvine</span></div>
<div id="ati_nujij" class="at_item" onclick="return addthis_sendto('nujij');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_nujij">Nujij</span></div>
<div id="ati_oknotizie" class="at_item" onclick="return addthis_sendto('oknotizie');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_oknotizie">OKNOtizie</span></div>
<div id="ati_oneview" class="at_item" onclick="return addthis_sendto('oneview');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_oneview">Oneview</span></div>
<div id="ati_orkut" class="at_item" onclick="return addthis_sendto('orkut');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_orkut">Orkut</span></div>
<div id="ati_osmosus" class="at_item" onclick="return addthis_sendto('osmosus');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_osmosus">Osmosus</span></div>
<div id="ati_oyyla" class="at_item" onclick="return addthis_sendto('oyyla');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_oyyla">Oyyla</span></div>
<div id="ati_pdfonline" class="at_item" onclick="return addthis_sendto('pdfonline');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_pdfonline">PDF Online</span></div>
<div id="ati_phonefavs" class="at_item" onclick="return addthis_sendto('phonefavs');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_phonefavs">PhoneFavs</span></div>
<div id="ati_pimpthisblog" class="at_item" onclick="return addthis_sendto('pimpthisblog');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_pimpthisblog">PimpThisBlog</span></div>
<div id="ati_pingfm" class="at_item" onclick="return addthis_sendto('pingfm');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_pingfm">Ping.fm</span></div>
<div id="ati_planypus" class="at_item" onclick="return addthis_sendto('planypus');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_planypus">Planypus</span></div>
<div id="ati_plaxo" class="at_item" onclick="return addthis_sendto('plaxo');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_plaxo">Plaxo</span></div>
<div id="ati_plurk" class="at_item" onclick="return addthis_sendto('plurk');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_plurk">Plurk</span></div>
<div id="ati_polladium" class="at_item" onclick="return addthis_sendto('polladium');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_polladium">Polladium</span></div>
<div id="ati_posterous" class="at_item" onclick="return addthis_sendto('posterous');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_posterous">Posterous</span></div>
<div id="ati_print" class="at_item" onclick="return addthis_sendto('print');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_print">Print</span></div>
<div id="ati_printfriendly" class="at_item" onclick="return addthis_sendto('printfriendly');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_printfriendly">PrintFriendly</span></div>
<div id="ati_propeller" class="at_item" onclick="return addthis_sendto('propeller');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_propeller">Propeller</span></div>
<div id="ati_pusha" class="at_item" onclick="return addthis_sendto('pusha');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_pusha">Pusha</span></div>
<div id="ati_quantcast" class="at_item" onclick="return addthis_sendto('quantcast');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_quantcast">Quantcast</span></div>
<div id="ati_readitlater" class="at_item" onclick="return addthis_sendto('readitlater');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_readitlater">Read It Later</span></div>
<div id="ati_reddit" class="at_item" onclick="return addthis_sendto('reddit');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_reddit">Reddit</span></div>
<div id="ati_scoopat" class="at_item" onclick="return addthis_sendto('scoopat');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_scoopat">Scoop.at</span></div>
<div id="ati_segnalo" class="at_item" onclick="return addthis_sendto('segnalo');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_segnalo">Segnalo</span></div>
<div id="ati_shaveh" class="at_item" onclick="return addthis_sendto('shaveh');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_shaveh">Shaveh</span></div>
<div id="ati_shetoldme" class="at_item" onclick="return addthis_sendto('shetoldme');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_shetoldme">She Told Me</span></div>
<div id="ati_simpy" class="at_item" onclick="return addthis_sendto('simpy');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_simpy">Simpy</span></div>
<div id="ati_slashdot" class="at_item" onclick="return addthis_sendto('slashdot');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_slashdot">Slashdot</span></div>
<div id="ati_smaknews" class="at_item" onclick="return addthis_sendto('smaknews');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_smaknews">Smak News</span></div>
<div id="ati_sodahead" class="at_item" onclick="return addthis_sendto('sodahead');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_sodahead">SodaHead</span></div>
<div id="ati_sonico" class="at_item" onclick="return addthis_sendto('sonico');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_sonico">Sonico</span></div>
<div id="ati_speedtile" class="at_item" onclick="return addthis_sendto('speedtile');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_speedtile">Speedtile</span></div>
<div id="ati_sphinn" class="at_item" onclick="return addthis_sendto('sphinn');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_sphinn">Sphinn</span></div>
<div id="ati_springpad" class="at_item" onclick="return addthis_sendto('springpad');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_springpad">springpad</span></div>
<div id="ati_squidoo" class="at_item" onclick="return addthis_sendto('squidoo');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_squidoo">Squidoo</span></div>
<div id="ati_startaid" class="at_item" onclick="return addthis_sendto('startaid');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_startaid">Startaid</span></div>
<div id="ati_startlap" class="at_item" onclick="return addthis_sendto('startlap');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_startlap">Startlap</span></div>
<div id="ati_strands" class="at_item" onclick="return addthis_sendto('strands');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_strands">Strands</span></div>
<div id="ati_studivz" class="at_item" onclick="return addthis_sendto('studivz');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_studivz">studiVZ</span></div>
<div id="ati_stuffpit" class="at_item" onclick="return addthis_sendto('stuffpit');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_stuffpit">Stuffpit</span></div>
<div id="ati_stumbleupon" class="at_item" onclick="return addthis_sendto('stumbleupon');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_stumbleupon">StumbleUpon</span></div>
<div id="ati_stumpedia" class="at_item" onclick="return addthis_sendto('stumpedia');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_stumpedia">Stumpedia</span></div>
<div id="ati_stylehive" class="at_item" onclick="return addthis_sendto('stylehive');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_stylehive">Stylehive</span></div>
<div id="ati_svejo" class="at_item" onclick="return addthis_sendto('svejo');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_svejo">Svejo</span></div>
<div id="ati_symbaloo" class="at_item" onclick="return addthis_sendto('symbaloo');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_symbaloo">Symbaloo</span></div>
<div id="ati_tagza" class="at_item" onclick="return addthis_sendto('tagza');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_tagza">Tagza</span></div>
<div id="ati_technorati" class="at_item" onclick="return addthis_sendto('technorati');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_technorati">Technorati</span></div>
<div id="ati_tellmypolitician" class="at_item" onclick="return addthis_sendto('tellmypolitician');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_tellmypolitician">TellMyPolitician</span></div>
<div id="ati_thisnext" class="at_item" onclick="return addthis_sendto('thisnext');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_thisnext">ThisNext</span></div>
<div id="ati_tipd" class="at_item" onclick="return addthis_sendto('tipd');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_tipd">Tip&#8217;d</span></div>
<div id="ati_transferr" class="at_item" onclick="return addthis_sendto('transferr');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_transferr">Transferr</span></div>
<div id="ati_googletranslate" class="at_item" onclick="return addthis_sendto('googletranslate');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_googletranslate">Translate</span></div>
<div id="ati_tulinq" class="at_item" onclick="return addthis_sendto('tulinq');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_tulinq">Tulinq</span></div>
<div id="ati_tumblr" class="at_item" onclick="return addthis_sendto('tumblr');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_tumblr">Tumblr</span></div>
<div id="ati_tusul" class="at_item" onclick="return addthis_sendto('tusul');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_tusul">Tusul</span></div>
<div id="ati_tweetmeme" class="at_item" onclick="return addthis_sendto('tweetmeme');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_tweetmeme">TweetMeme</span></div>
<div id="ati_twitter" class="at_item" onclick="return addthis_sendto('twitter');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_twitter">Twitter</span></div>
<div id="ati_typepad" class="at_item" onclick="return addthis_sendto('typepad');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_typepad">Typepad</span></div>
<div id="ati_viadeo" class="at_item" onclick="return addthis_sendto('viadeo');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_viadeo">Viadeo</span></div>
<div id="ati_virb" class="at_item" onclick="return addthis_sendto('virb');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_virb">Virb</span></div>
<div id="ati_vyoom" class="at_item" onclick="return addthis_sendto('vyoom');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_vyoom">Vyoom</span></div>
<div id="ati_webnews" class="at_item" onclick="return addthis_sendto('webnews');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_webnews">Webnews</span></div>
<div id="ati_domaintoolswhois" class="at_item" onclick="return addthis_sendto('domaintoolswhois');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_domaintoolswhois">Whois Lookup</span></div>
<div id="ati_windycitizen" class="at_item" onclick="return addthis_sendto('windycitizen');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_windycitizen">Windy Citizen</span></div>
<div id="ati_wordpress" class="at_item" onclick="return addthis_sendto('wordpress');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_wordpress">WordPress</span></div>
<div id="ati_worio" class="at_item" onclick="return addthis_sendto('worio');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_worio">Worio</span></div>
<div id="ati_wovre" class="at_item" onclick="return addthis_sendto('wovre');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_wovre">Wovre</span></div>
<div id="ati_wykop" class="at_item" onclick="return addthis_sendto('wykop');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_wykop">Wykop</span></div>
<div id="ati_yahoobkm" class="at_item" onclick="return addthis_sendto('yahoobkm');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_yahoobkm">Y! Bookmarks</span></div>
<div id="ati_yahoomail" class="at_item" onclick="return addthis_sendto('yahoomail');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_yahoomail">Y! Mail</span></div>
<div id="ati_yammer" class="at_item" onclick="return addthis_sendto('yammer');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_yammer">Yammer</span></div>
<div id="ati_yardbarker" class="at_item" onclick="return addthis_sendto('yardbarker');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_yardbarker">Yardbarker</span></div>
<div id="ati_yigg" class="at_item" onclick="return addthis_sendto('yigg');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_yigg">Yigg</span></div>
<div id="ati_yoolink" class="at_item" onclick="return addthis_sendto('yoolink');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_yoolink">Yoolink</span></div>
<div id="ati_yorumcuyum" class="at_item" onclick="return addthis_sendto('yorumcuyum');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_yorumcuyum">Yorumcuyum</span></div>
<div id="ati_youmob" class="at_item" onclick="return addthis_sendto('youmob');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_youmob">YouMob</span></div>
<div id="at16sas"><a href="http://www.addthis.com/services/submit" target="_blank">Suggest a service »</a></div>
</div>
</div>
<div id="at_complete" style="display: none;"><button onclick="_atw.clb()">Done</button></div>
<div id="at_success" style="display: none;">Message sent! <a onclick="_atw.get('at16filt').value='';_atw.filt('',_atw.list);return _atw.sag()" href="http://www.linuxfordevices.com/index2.php?option=content&amp;task=view&amp;id=48525&amp;pop=1&amp;hide_ads=1&amp;page=0&amp;hide_js=1#">Share again.</a></div>
<div id="at_promo">
<div class="at-promo-btm-ffx at-promo-content">
<h4>AddThis for Firefox</h4>
<p><span>Bookmark, email or share any page, anytime.</span></p>
<div class="at-promo-btn"><a href="http://www.addthis.com/landing/?to=ffext&amp;utm_source=el&amp;utm_medium=link&amp;utm_content=ATTool_orig&amp;utm_campaign=AT_tooldl" target="_blank">Install</a></div>
</div>
</div>
<div id="at_email" style="display: none;">
<form><label for="at_to">To:  <span>(email address)</span></label><textarea id="at_to" class="atfxmode2" onkeypress="if (window._atab) _atab.htkd(this, event)" onkeyup="_atw.filt(this.value.replace(/[;\n]/g,',').replace(/ /g,'').split(',').pop(), _atw.data.contacts.all, 'at16eatdr', '_ataddr', null, 'a')" cols="30" rows="4"></textarea><label for="at_from">From:  <span>(email address)</span></label></p>
<input id="at_from" class="atfxmode2" name="at_from" size="30" type="text" tabindex="3" /><label for="at_msg">Note:  <span>(optional)</span></label><textarea id="at_msg" class="atfxmode2" onkeyup="return _atw.lml(this,250);" cols="30" rows="4"></textarea></p>
<div id="ateml"><small>255 character limit</small></div>
<div id="addthis-pop-email-btns">
<input class="atbtn" onclick="return addthis_send();" type="submit" value="Send" tabindex="5" />
<input class="atbtn" style="color: #666666; font-weight: normal;" onclick="return _atw.cef()" type="reset" value="Cancel" tabindex="6" /></div>
</form>
</div>
</div>
<div id="at16pf"><a id="at16pfpro" class="at-whatsthis" onclick="_ate.cev('ctk', 'ft:fx:pg');return true" href="http://www.addthis.com/landing/?to=ffext&amp;utm_source=hm&amp;utm_medium=link&amp;utm_content=ATFFToolDL_orig&amp;utm_campaign=ATCMFF_DL" target="_blank">Get AddThis for Firefox</a><a id="at-privacy" style="display: none; visibility: hidden;" href="http://www.addthis.com/privacy" target="_blank">Privacy</a><a id="at-logo" class="at_baa" title="AddThis" href="http://www.addthis.com/?utm_source=mm&amp;utm_medium=img&amp;utm_content=ATLogo_orig&amp;utm_campaign=AT_main" target="_blank">AddThis</a></div>
</div>
</div>
</div>
</div>
</div>
<div id="at15s" style="display: none; left: 266px; position: absolute; top: 145px; visibility: visible; z-index: 1000000;" onmouseover="_atw.xwa()" onmouseout="if (this.className.indexOf('border')==-1) addthis_close()">
<div id="at15s_head"><span id="at15ptc">Bookmark &amp; Share</span><span id="at15s_brand">DevSource</span></div>
<div id="at_email15" style="display: none; visibility: hidden;">
<div class="at15e_row">
<p><label>To:</label></p>
<input id="at_to15" class="at15ti" maxlength="80" size="20" type="text" value=" email address" />
</div>
<div class="at15e_row">
<p><label>From:</label></p>
<input id="at_from15" class="at15ti" maxlength="80" size="20" type="text" value=" email address" />
</div>
<div class="at15e_row" style="height: 60px;"><label for="at_msg15">Note:</label><textarea id="at_msg15" style="width: 150px;" cols="30" rows="3"></textarea></div>
<div class="at15e_row">
<p><label> </label></p>
<input id="at_send" onclick="return addthis_send()" type="button" value="Send" />
</div>
</div>
<div id="at_hover" style="display: block;">
<div class="at_item at_col0" onclick="return addthis_sendto('favorites');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_favorites">Favorites</span></div>
<div class="at_item at_col1" onclick="return addthis_sendto('email');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_email">Email</span></div>
<div class="at_item at_col0" onclick="return addthis_sendto('digg');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_digg">Digg</span></div>
<div class="at_item at_col1" onclick="return addthis_sendto('delicious');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_delicious">Delicious</span></div>
<div class="at_item at_col0" onclick="return addthis_sendto('myspace');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_myspace">MySpace</span></div>
<div class="at_item at_col1" onclick="return addthis_sendto('facebook');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_facebook">Facebook</span></div>
<div class="at_item at_col0" onclick="return addthis_sendto('google');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_google">Google</span></div>
<div class="at_item at_col1" onclick="return addthis_sendto('live');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_live">Live</span></div>
<div class="at_item at_colNaN" onclick="return addthis_sendto('more');" onmouseover="_atw.hov(this)" onmouseout="_atw.hov(this)"><span class="at15t at15t_more">More&#8230; (199)</span></div>
</div>
<div id="at16pf"><a id="at15pfpro" class="at-whatsthis" onclick="_ate.cev('ctk', 'ft:fx:pg');return true" href="http://www.addthis.com/landing/?to=ffext&amp;utm_source=hm&amp;utm_medium=link&amp;utm_content=ATFFToolDL_orig&amp;utm_campaign=ATCMFF_DL" target="_blank">Get AddThis for Firefox</a><a id="at-logo" class="at_baa" title="AddThis" href="http://www.addthis.com/?utm_source=hm&amp;utm_medium=img&amp;utm_content=ATLogo_orig&amp;utm_campaign=AT_main" target="_blank">AddThis</a></div>
</div>
</div>
<p><map name='google_ad_map_166_3db9945d9ae1c815'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/166?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_166_3db9945d9ae1c815' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=166&amp;url= http%3A%2F%2Fwww.osscc.org%2F2009%2F11%2Ftutorial-a-simple-embedded-linux-system%2F' /></p>]]></content:encoded>
			<wfw:commentRss>http://www.osscc.org/2009/11/tutorial-a-simple-embedded-linux-system/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSS Cyber Cafe POS Software</title>
		<link>http://www.osscc.org/2007/05/oss-cyber-cafe-pos-software/</link>
		<comments>http://www.osscc.org/2007/05/oss-cyber-cafe-pos-software/#comments</comments>
		<pubDate>Sun, 06 May 2007 16:57:00 +0000</pubDate>
		<dc:creator>osscc</dc:creator>
				<category><![CDATA[Cyber Cafe]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[LTSP]]></category>
		<category><![CDATA[Point Of Sales]]></category>

		<guid isPermaLink="false">http://osscc.org/?p=7</guid>
		<description><![CDATA[There are plenty of OSS Free Cyber Cafe Management System or Point Of Sales software for your Linux/Unix Bases Internet Cyber Cafe. I&#8217;d use it before and I already implement it on several cyber cafe&#8217;s that i had setup, and several of it I just discovered. Cybera &#8211; Cyber cafe administrationCybera is an Internet cafe [...]]]></description>
			<content:encoded><![CDATA[<p>There are plenty of OSS Free Cyber Cafe Management System or Point Of Sales software for your Linux/Unix Bases Internet Cyber Cafe. I&#8217;d use it before and I already implement it on several cyber cafe&#8217;s that i had setup, and several of it I just discovered.</p>
<p><span style="font-weight: bold;">Cybera &#8211; Cyber cafe administration</span><br />Cybera is an Internet cafe administration system. It works with prepaid cards or client accounts or in a post paid Self Service mode. Features include workstation control, user rights lockdown, accounting, stats and screen replication for CAI.<br /><a href="http://cybera.sourceforge.net/">Visit Website</a> | <a href="http://sourceforge.net/project/showfiles.php?group_id=121074">Download</a></p>
<p><span style="font-weight: bold;">Kfemate &#8211;    The Open Source Cyber Coffee System</span><br />kfemate is pronunced in spanish (kfe=Coffee- mate= of &#8220;Checkmate in Chess&#8221;). With Kfemate you can admin your own Cyber-Cafe or Cyber, this Software is great, Easy of use, Secure, Fast,   use MySQL, unlimited Pc&#8217;s,   Portable, and Open Source. (Currently only Spanish)<br /><a href="http://kfemate.sourceforge.net/">Visit Website</a> | <a href="http://sourceforge.net/project/showfiles.php?group_id=171287">Download<br /></a><br /><span style="font-weight: bold;">Anahaw Internet Cafe Timer</span><br />Anahaw Internet Cafe Timer is an internet cafe administration program. Basic function include client shutdown,logoff, restart and monitoring. It can handle up to 16 workstation. The server can be used also as stand alone (client need not be connected).<br /><a href="http://anatimer.sourceforge.net/">Visit Website </a>| <a href="http://sourceforge.net/project/platformdownload.php?group_id=164160">Download</a></p>
<p><span style="font-weight: bold;">Dharma Internet Cafe Management</span><br />A cross platform (Linux, Win32, Mac OsX) client-server internet cafe system written in RealBasic. Features include timing/billing, client management, membership, point of sale and reports. This project aim to ease administration of an internet cafe.<br /><a href="http://dharma-netcafe.sourceforge.net/">Visit Website</a> | <a href="http://sourceforge.net/project/platformdownload.php?group_id=142082">Download</a></p>
<p><span style="font-weight: bold;">CCL &#8211; Cafe Con Leche</span><br />Cafe Con Leche (CCL) are a crossplataform library (libccl) to make programs to manage internet cafes and program that does just that using libccl. This one I&#8217;ve use it greatly with <a href="http://www.ltsp.org/">LTSP</a>, all you need is to configure your <a href="http://www.ltsp.org/">LTSP</a> Client to be able running LOCAL APPS.<br /><a href="http://ccl.sourceforge.net/">Visit Website</a> | <a href="http://sourceforge.net/project/platformdownload.php?group_id=112779">Download</a></p>
<p><span style="font-weight: bold;">PlayBilling &#8211; Web Based</span><br />PlayBilling is a webbased billing system for internet cafe and wireless hotspot provider mostly written in Java featured with: tariff management, prepaid, postpaid and discounts, user management and extensive reporting system<br /><a href="http://playbilling.sourceforge.net/">Visit Website</a> | <a href="http://sourceforge.net/project/platformdownload.php?group_id=141226">Download</a></p>
<p><span style="font-weight: bold;">BNC &#8211; Blue NetCafe Timer</span><br />BNCTimer is a client/server software,It&#8217;s a simple timer that you can control via a panel. It used in a cybercafe/internet cafe .<br /><a href="http://bnctimer.sourceforge.net/">Visit Website</a> | <a href="http://sourceforge.net/project/platformdownload.php?group_id=150226">Download</a></p>
<p><span style="font-weight: bold;">  ZybaCafe</span><br />ZybaCafe (formerly DireqCafe) is a full featured and complete Internet cafe management suite with support for multiple-platform clients. Thin-client Linux, fat-client Linux, and Windows are officially maintained. Extension is easily done through plugins.<br /><a href="http://freshmeat.net/redir/zybacafe/35036/url_homepage/zybacafe.silentcoder.co.za">Visit Website</a> | <a href="http://freshmeat.net/redir/zybacafe/35036/url_bz2/zybacafe-linux-4.0.3.run">Download</a></p>
<p><span style="font-weight: bold;">OutKafe</span><br />OutKafe is a next-generation Internet cafe management suite. It was forked from ZybaCafe with the aim of ultimately replacing all proprietary parts with completely free components. It includes a server-side administration suite as well as clients for managing time control on machines. A powerful plugin architecture allows for easy extensibility and integration with other tools such as accounting packages and CRM systems.<br /><a href="http://freshmeat.net/redir/outkafe/68905/url_homepage/outkafe.outkastsolutions.co.za">Visit Website</a> | <a href="http://freshmeat.net/redir/outkafe/68905/url_bz2/index.php">Download</a></p>
<p><span style="font-weight: bold;">Zeiberbude</span><br />Zeiberbude is a point of sales program for cyber-cafes. Its features include an independent timer for each computer in the cafe, user accounts for easier identification, drag &#8216;n&#8217; drop of user information from one computer to another (if the user switch machines), and support for entering and billing for supplemental cost items (drinks, snacks, etc.). It also includes a configuration wizard to set cafe rates, including standard rates (per hour, half-hour and quater-hour), Happy Hour rates (start time, end time and cost allocations with the standard rate), club member rates, etc.<br /><a href="http://freshmeat.net/redir/zeiberbude/30639/url_homepage/zeiberbude.sourceforge.net">Visit Website</a> | <a href="http://sourceforge.net/project/showfiles.php?group_id=44353">Download</a></p>
<p><span style="font-weight: bold;">CybOrg &#8211; Cyber Cafe Organizer</span><br />The Cybercafe Organizer (CybOrg) is a point of sales and administration system for Internet cafes (cyber cafes). It has a Web-based interface and is written in Perl using Template Toolkit and a RDBMS. It uses a client to block workstations, and is intended to be used on a (possibly Linux) server with Win32/Linux clients.It also provides a script to be used as the Active Desktop on Windows clients to display station&#8217;s status.<br /><a href="http://freshmeat.net/redir/cyborgproject/45336/url_homepage/cyborg.sourceforge.net">Visit Website</a> | <a href="http://freshmeat.net/redir/cyborgproject/45336/url_tgz/cyborg-0.1.18.tgz">Download</a></p>
<p><span style="font-weight: bold;">OpenKiosk </span><br />OpenKiosk is a multi-platform kiosk management system for public terminals and kiosks. X11 and Windows clients are currently supported. Whether you are an Internet Cafe operator or a librarian, Openkiosk can make your life easier.<br /><a href="http://freshmeat.net/redir/openkiosk/50046/url_homepage/openkiosk.sourceforge.net">Visit Website</a> | <a href="http://freshmeat.net/redir/openkiosk/50046/url_tgz/opkdekiosk-2.0.6.tar.gz">Download</a>
<div class="blogger-post-footer">OSSCC © 2006</div>
<p><map name='google_ad_map_7_3db9945d9ae1c815'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/7?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_7_3db9945d9ae1c815' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=7&amp;url= http%3A%2F%2Fwww.osscc.org%2F2007%2F05%2Foss-cyber-cafe-pos-software%2F' /></p>]]></content:encoded>
			<wfw:commentRss>http://www.osscc.org/2007/05/oss-cyber-cafe-pos-software/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>My Kubuntu LTSP+CCLFOX Screen Shot</title>
		<link>http://www.osscc.org/2007/04/my-kubuntu-ltspcclfox-screen-shot/</link>
		<comments>http://www.osscc.org/2007/04/my-kubuntu-ltspcclfox-screen-shot/#comments</comments>
		<pubDate>Sun, 15 Apr 2007 17:54:00 +0000</pubDate>
		<dc:creator>osscc</dc:creator>
				<category><![CDATA[Billing System]]></category>
		<category><![CDATA[Cyber Cafe]]></category>
		<category><![CDATA[LTSP]]></category>
		<category><![CDATA[Point Of Sales]]></category>

		<guid isPermaLink="false">http://osscc.org/?p=5</guid>
		<description><![CDATA[After a week I&#8217;ve test LTSP 5 on my Kubuntu 6.10 IBM server, I decide to upload the screen shot here, and I hope that someone who ever done this before could share her/his experiences on doing the same thing as I did. And I&#8217;ve use Student Control Panel to start the cclcfox client, I [...]]]></description>
			<content:encoded><![CDATA[<p>After a week I&#8217;ve test LTSP 5 on my Kubuntu 6.10 IBM server, I decide to upload the screen shot here, and I hope that someone who ever done this before could share her/his experiences on doing the same thing as I did.</p>
<p>And I&#8217;ve use Student Control Panel to start the cclcfox client, I know that i should be able to start the cclcfox client automatically but this for test purpose and I still have a week to delivery it to my client <a href="http://www.ric.com.my/">Residence Inn Cherating</a> and I still looking for a better POS or cyber cafe management system.</p>
<div style="margin-left: 1em; margin-right: 1em;"><img alt="Kubuntu 6.10 : LTSP Server With CCLFOX" height="256" src="http://lh5.google.co.uk/image/nexusbox/RiI4a2w_XgI/AAAAAAAAAIw/o5_Pf_MuY9g/s400/ltsp-cclfox-scp.jpg" style="max-width: 800px;" width="320" /></div>
<p>
<div style="margin-left: 1em; margin-right: 1em;"><img alt="LTSP Client with CCLFOX Screen Lock" src="http://lh4.google.co.uk/image/nexusbox/RiJx3mw_XhI/AAAAAAAAAI4/6a6m04LlQd8/s400/ltsp-client-cclcfox.jpg" style="max-width: 800px;" /></div>
<div class="blogger-post-footer">OSSCC © 2006</div>
<p><map name='google_ad_map_5_3db9945d9ae1c815'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/5?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_5_3db9945d9ae1c815' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=5&amp;url= http%3A%2F%2Fwww.osscc.org%2F2007%2F04%2Fmy-kubuntu-ltspcclfox-screen-shot%2F' /></p>]]></content:encoded>
			<wfw:commentRss>http://www.osscc.org/2007/04/my-kubuntu-ltspcclfox-screen-shot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What for Open Source and Cyber Cafe?</title>
		<link>http://www.osscc.org/2007/04/osscc-and-ltsp-what-for/</link>
		<comments>http://www.osscc.org/2007/04/osscc-and-ltsp-what-for/#comments</comments>
		<pubDate>Sat, 14 Apr 2007 03:29:00 +0000</pubDate>
		<dc:creator>osscc</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Business Ideas]]></category>
		<category><![CDATA[Cyber Cafe]]></category>
		<category><![CDATA[Diskless Technology]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[LTSP]]></category>
		<category><![CDATA[Operating System]]></category>
		<category><![CDATA[Point Of Sales]]></category>

		<guid isPermaLink="false">http://osscc.org/?p=3</guid>
		<description><![CDATA[And I wait for a month for the updates of LTSP 4.1/4.2 and then all my problem solve. But I still not satisfy for the point of sales system, I am looking for a better POS system, I'd try Outkafe  but I couldn't find what I want from the system, and for now the only cyber cafe management system that could suit with my need is CCLFOX this one was great, and I hope I could study more about cclfox and ltsp manager]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.osscc.org/wp-content/uploads/2010/06/osscc-logo.jpg"><img class="alignleft size-full wp-image-67" title="osscc-logo" src="http://www.osscc.org/wp-content/uploads/2010/06/osscc-logo.jpg" alt="" width="86" height="60" /></a>The main purpose I create this blog, because I hope one day I could share my experiences about building linux cyber cafe business, currently I got several complete projects  in  setup a  <a href="http://www.ltsp.org/">Linux Terminal Server</a> for a cyber cafe purpose in my country.</p>
<p>In 2003 I&#8217;ve setup one <a href="http://www.ltsp.org/">LTSP</a> server for to be used by eight lts client and using <a href="http://zeiberbude.sourceforge.net/">Zeiberbude</a> as the Point Of Sales System for <a href="http://www.ric.com.my/">Resident Inn Cherating</a> in Pahang. After several years, <a href="http://www.ric.com.my/">RIC</a> asked me to redesign and restructure again their LTSP and their Business Center, and for this time I was replacing the Point Of Sales System by using <a href="http://ccl.sourceforge.net/">CCLFOX</a> instead of Zeiberbude with LOCALDEV enable, but before that successful of localdev, I had a pain of configuring it (localdev), and i don&#8217;t know why it&#8217;s when wrong and why it wont detect the local media of the client.</p>
<p>And I wait for a month for the updates of LTSP 4.1/4.2 and then all my problem solve. But I still not satisfy for the point of sales system, I am looking for a better POS system, I&#8217;d try <a href="http://outkastsolutions.co.za/outkast/index.php?option=com_content&amp;task=view&amp;id=32&amp;Itemid=2">Outkafe</a> but I couldn&#8217;t find what I want from the system, and for now the only cyber cafe management system that could suit with my need is <a href="http://ccl.sourceforge.net/">CCLFOX</a> this one was great, and I hope I could study more about cclfox and ltsp manager, because I&#8217;ve found that both of these software is very useful to be as the perfect cybercafe management system. And guys.. If any of you out there got an experiences about cyber cafe with linux&#8230; Please Let Me Know And We Share With All Who&#8217;s Really Need For IT..</p>
<div class="blogger-post-footer">OSSCC © 2006</div>
<p><map name='google_ad_map_3_3db9945d9ae1c815'>
<area shape='rect' href='http://imageads.googleadservices.com/pagead/imgclick/3?pos=0' coords='1,2,367,28' />
<area shape='rect' href='http://services.google.com/feedback/abg' coords='384,10,453,23'/></map>
<img usemap='#google_ad_map_3_3db9945d9ae1c815' border='0' src='http://imageads.googleadservices.com/pagead/ads?format=468x30_aff_img&amp;client=&amp;channel=&amp;output=png&amp;cuid=3&amp;url= http%3A%2F%2Fwww.osscc.org%2F2007%2F04%2Fosscc-and-ltsp-what-for%2F' /></p>]]></content:encoded>
			<wfw:commentRss>http://www.osscc.org/2007/04/osscc-and-ltsp-what-for/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

