|
Stephanie's ZipIt Web Server |
This Webpage is being Served by a ZipIt!Here you can see my ZipIt webserver, in its permanent home - out of the way, ontop of my water cooler in the kitchen. Great place for a web server! It has been running non-stop since December 2005. That's right - the website you are viewing right now, is stored on, and served from, that little blue gizmo ontop of a watercooler in my kitchen. What's A Zipit?The ZipIt is a small dedicated Instant Messenger device marketed to "teens and pre-teens". It actually runs on embedded linux and is a fairly capable little device. There is a great group of people at a Yahoo! Group doing development on the ZipIt, a Wiki site with lots of information and details, including Technical Specs / Details. There are people working on the Linux kernel, working on the features / applications, and even working on the hardware, all to try and increase the usability and capability of the ZipIt. The way it was made, there are some opportunities for expanding the hardware, and some good methods of expanding its usefulness. Please note, you can click on any ZipIt images you see on this site in order to see them full-size. Why A Web Server?Why not? As soon as I could afford it, I bought a couple ZipIts, started taking them apart, joined the Yahoo group, and generally started learning everything I could about them. Out-of-the-box, the ZipIt is not just small in size, it's also small in memory/filespace. It comes with 16MB of RAM, and only 2MB of Flash ROM. The ROM contains a boot loader, the Linux kernel, a small compressed filesystem. When booting up, a Ramdisk is created and the compressed filesystem on the ROM is expanded into that Ramdisk. This is all you get for your active Linux filesystem, all your applications, and any data files. So there was some challenge to get it up and working, with an actual web server and some web pages to make it worthwhile - either I'd have to have a very small web server, minimal web pages, and strip other stuff out, or I'd have to increase the storage space somehow. Warning!Please Note: The information provided here is for entertainment purposes only. If you attempt to do any of these modifications or if you choose to use any of the software / files provided here, you do so at your own risk. We do not repair ZipIts and accept no responsibility if you use any information here to break your ZipIt. How I Did ItOne of the first things I did was the 5-wire Serial Mod, as described at ZipitPet's website. This mod, along with zflash and zipit_parts / burn3 allow you to get your ZipIt to the point where you can log directly into linux. When I first reformatted my ZipIt, I went with Adam's Firmware layout. I liked the way he had organized the 2MB Flash, such that you had five separate 'partitions'. The first three were 'off limits' (boot loader, kernel, basic file system), the fourth was about 600Kb and was meant to be only writable occasionally, like for loading in programs / applications now and then. The fifth partition, the last 64Kb of Flash, was meant for user space such as data etc. This appealed to me more than OpenZipit, where you had only three 'partitions' (boot loader, kernel, filesystem). With Adam's, you could write and rewrite the 5th section and if you made a mistake, you could still boot to linux and attempt a rescue, as opposed to burning the whole filesystem at once, where if you made a mistake, you were bassicaly SOL. Anyhow, once I had my ZipIt reflashed into Adam's Firmware, I started on customizing things the way I wanted. At first I just messed around with the last section, then when I was more confident, I made changes to the 4th area, and finaly when I really felt like I knew what I was doing, I customized the basic filesystem too. Now, back to the mission - Web Server! After searching around, doing some googling, reading, and testing, I found me a small web server that would run on the ZipIt. mini_httpd by Acme Labs looked like it was The One. mini_httpd is ideal for low to medium traffic sites. It handles GET, POST, and HEAD methods, it works with CGI, common MIME types, logging, and has some basic authentication functions. It can even handle multi-homing, and can be compiled with SSL support! In short, mini_httpd looked great for what I wanted. Perhaps even slightly overkill, for what I wanted. So I downloaded the source, cross-compiled it, and found it ran just fine on the ZipIt! It's total size is only 117 Kb, so it doesn't take up too much space either. With my ZipIt's Flash ROM configured the way I wanted, server software compiled and installed, all I had left to do was whip up a simple web page, some pictures and... hmm. 64Kb does not leave a lot of room for web page and pictures, especially when a few K are already used with configuration files. So, with a very simple page, and some very small pictures, my ZipIt web server went up...I don't remember when. Some time in the autumn of 2005. And for a while, that was all there was to it. MMC Cards - Oodles of StorageObviously 64Kb wasn't cutting it. I wanted graphics, images, pictures, content! Luckily, a big breakthrough came along at exactly the right time. A few generous folk on the Yahoo group had been doing a lot of great work, which they shared with the community. MigraineMan and Cynfab had worked out how to wire an MMC card slot to the ZipIt's hardware, and written a loadable module to give the ZipIt's linux access to the MMC card. After studying their breakthroughs, I was ready to expand my ZipIt. This modification doesn't increase the RAM at all (that's next to impossible) but it removes the limitation of a tiny filesystem. So, no more trying to cram a whole website into 64Kb. Instead, the Flash ROM can be used just to boot and hold the essentials, all the extra applications and data can reside on an MMC card - up to 2GB of storage! Click here for all the details of How I Did the MMC Modification. With my 'user' applications, data, and configuration files moved onto the MMC card, it no longer made much sense to use Adam's Firmware layout, so I came up with my own scheme that is a mix of everything. The Flash ROM now has just 3 sections, the first being the bootloader from OpenZipit, the second being the kernel from burn3, and the third being my own custom filesystem. The configurations are based heavily on Adam's work but instead of using the mtd and cramfs modules to load stuff from the 5th area in Flash, mmc.o is used to load the configs from the MMC card itself. Other PossibilitiesWith lots of open-source stuff out there for linux, oodles of storage space via the MMC modification, the serial-port modification, and its built-in wireless connectivity, the ZipIt has all kinds of potential. It's almost like a solution looking for problems. Remote data-collection seems like a natural. I think they're great as micro-servers. You could have a webserver, ftp server, or with a big MMC card, even a pocket-sized file-server! It's really up to the imagination, what can be done with them. |