By Jim Connors on Feb 07, 2007
As Sun continues to avail more of its intellectual property to the community, the advantages Sun employees have regarding access to internal resources almost disappear. In fact now when attempting to post questions to internal Sun mail aliases, I am often times redirected to the community. The ramifications of this change hit me square in the gut this summer.
Having stumbled upon an internal project investigating how Solaris might be minimized for embedded use, I thought an interesting offshoot of this effort might be to create a ZFS appliance. This device would boot from flash entirely into RAM, and all state would be maintained by the ZFS volumes. Turns out this may be a little more tricky than anticipated, and future ZFS enhancements to Solaris (ZFS boot) may make this idea moot.
Based on an OpenSolaris ZFS discussion I initiated, observers went off and wrote about this topic elsewhere, some predicting that Sun would be releasing embedded ZFS appliances. Whoa, hold on there, not so fast. We have no plans (at least that I know of) to do any such thing. This was nothing more than a pet project of mine. Serves me right for announcing that I was a Sun employee.
But there was some good that came out of this dialog. In addition to learning
the valuable lesson of being careful what you write, interest in the notion of using Solaris as
an "embedded" OS was quite apparent. As a consequence, I thought it might make sense to
publish the basic framework used to create a custom Solaris
miniroot. Included below is the introduction section of the README file:
With the advent of Solaris 10 Update 1 and its migration to the grub(5) bootloader, it becomes quite feasible and straightforward to consider creating small footprint "embedded" versions of Solaris which boot directly into RAM. This project is based upon work done by Shudong Zhou to create a minimized Solaris for embedded use. The doc/ directory contains some of the original documentation and scripts used to build such an environment.
It is expected that entities may want to provide further functionality and customizations to this environment. In order to assist in this endeavor, the original work has been enhanced to utilize the Java-based ant(1) build tool. For a further description on how a miniroot image is created, see the section on "Understanding the ant(1) build process".
You can download the framework here
- This framework assumes availability of a standard Solaris distribution. Although not confirmed, I suspect it may not be real hard to augment for OpenSolaris.
- The current framework produces a RAM resident version of Solaris that is about 60MB in size. Note: there is no windowing included.
- These configs are system specific. The reference implementation for the included framework is an iGoLogic i84810 motherboard. Some key specs are:
- 1 GHz Celeron Processor
- 512 MB RAM on board
- Compact Flash slot on bottom of motherboard
- 146mm x 104mm
- Runs Solaris 10 U3 out of the box
- For more info contact iGoLogic an http://www.igologic.com
- Once an image is created, you'll need to set up grub(5) on your media. Here's a pointer to a URL explaining Grub on a stick. A copy of this URL is also included in the framework under the doc/ directory.
- Here's a picture of the motherboard with ruler included to give you a feel for its size.