We're seeking a consultant with significant development experience configuring/modifying/developing for linux distributions, with a particular emphasis on embedded systems (although this project may use i386 hardware).
We seek someone to consult/advice on both the purchase of hardware used to construct a particular hardware device and to choose, design, implement and package a widely supported distribution of the linux operating system and package management system running on that hardware (probably debian, although we are open to suggestions).
If you're interested/have the right experience/knowledge, shoot me an email.
The hardware requirements and specifications will be formalized during development of the project. Currently the hardware should meet the following requirements:
1) The cost of the core hardware (box and all internal components, including PCI cards and storage) should be as low as possible with a maximum of approximately $400-500 dollars.
2) The system should be designed to limit risk of failure. The system should use solid-state flash storage and possibly a fan-less processor.
3) The system should be as simple and easy to manufacture and construct. Ideally all components should be off the shelf, and the computer itself should be purchased pre-made, with only a few upgrades necessary before use. We may consider making a deal with a large PC manufacturer to build and service the boxes under contract. The more standardized the hardware (i386 etc…) the easier such an arrangement would be to arrange.
4) The hardware should support all the old legacy input and output devices, wireless via an RS232 connection, Ethernet, enough storage to support the OS, Core System Software, and 512MB of data. Drivers and PCI interface cards for said legacy devices will be chosen and completed outside the scope of this project.
5) All hardware components must be linux compatible.
The Operating System / Package management system design should meet the following specifications:
1) The operating system should be built using a highly stable, time-tested, widely supported flavor of linux. Maybe Debian?
2) The operating system must NOT carry a licensing fee/cost.
3) Ideally the OS should be 100% open source (GPL,LGPL etc…).
4) Choices of software/OS should ensure MAXIMUM reliability, stability and security.
5) The OS should include a built in package management system, and should be easy to configure, compile packages for, and contain an extensive collection of stable software pre-built for it.
6) The OS should be boot off an internal flash memory card, and the OS and data storage should run off a ramdisk (unless said flash memory card can support at least 15 years of continuous use).
7) The system must be designed to self-upgrade off of our central package repositories. All software (custom and non-custom), configuration files, and data stores must be upgradeable through this package management system (you will be responsible for setting this up, and ensuring we can maintain it). The system must run automatically, and must not require ANY intervention from a human.
8) The system must ensure that access to our repositories is limited only to our authorized boxes (permission must be revocable on the box level). A compromised box must not compromise other boxes or the system as a whole. This is most likely best handled via disposable certificates.
9) SSH access to the box should be available via certificate access only. A single root password must not be used across multiple boxes.
10) All core software and the OS must be easily installable on the boxes.
11) One install image for the system and custom software must be provided for easy install. It is assumed that all machines will be setup with this initial image, and updates to all non-custom and all custom software will then be made immediately afterwards using the system’s software update system (off our package repositories). A method of inputting box specific stuff (certificates etc..) must also be accounted for.
12) Complete instructions for a simple method of creating packages for all custom software and drivers must be included.
13) The operating system/system software should be stripped down to its most minimal components to minimize security, stability and maintenance issues.
14) All non-individual-box specific settings (repository address, central repository keys, check intervals etc…) may be stored in standard text file configuration locations as long as all those files (individually or as packages) are updateable via the standard software update off the repository.
15) The operating system and core system software must be upgradeable remotely but should have a long life-cycle (either through choice of a particular distribution or through minimization of installed components) of at least 5 years to minimize the frequency of updates to the core system/OS.
The design of the operating system and hardware must ensure extremely high levels of security, reliability and up-time. Between 5000 and 20000 boxes will be installed in geographically disperse areas across the united states. The cost to manually reboot boxes is high. The cost of malfunctioning boxes could be even higher. This box must be designed to run stably and securely.