Date: Thu, 27 Jun 2002 15:00:48 +0100
From: Padraig Brady (padraig@antefacto.com)
To: Carlos Luna (carlos.luna@steorn.com)
CC: ilug@linux.ie
Subject: Re: [ILUG] Embedded vs PC version

Carlos Luna wrote:

> I've been thrown onto a project at work which involves a mini PC
> (Intel chip on a miniturized motherboard, RAM, USB port, etc) and have
> been given the task of finding a suitable OS for it. They want to go
> with Linux, and I see no problem with that, since Linux is a very
> stable environment, according to all the Linux-heads I've ever spoken
> to. The requirements for this device is that it has to be tolerant to
> being TURNED ON AND OFF from the power switch.

Sounds familiar :-)

> Question 1: Is a normal distribution of Linux able to handle the
> possibility of being turned on and off frequently without ruining the
> OS?

Yes. You need the filesystem mounted read-only, then you can flick the switch when you like. There are various ways of doing this, but you'll need some sort of RAMdisk for a working filesystem while the system is running.

> Question 2: Is the embedded version of Linux designed for a PC? Or
> does the device have to be some weird, proprietary type?

There is no specific embedded type. Usually for embedded stuff, you need full control, and so need to make your own version of linux kernel + other support software. Linux (embedded or not) can run on various platforms, including the "PC". You may be able to get ideas from or use some of the small/source distros listed at:

http://www.distrowatch.com/source.php
http://www.linuxhq.com/dist.html

> Question 3: Is there a way to boot Linux QUICKLY and load the software
> necessary immediately?

Two issues: the BIOS speed and the OS boot speed. Standard PC BIOSes take about 15 second to boot, which may be prohibitive. If so, then you need to look at:

http://www.gensw.com/pages/news/quikboot.htm Note it has embedded DOS rather than embedded Linux, but who cares, it's a BIOS. Full source code is provided. Support for control of BIOS over serial port. You can also download the binaries for free! The main advantage is it boots in 0.8s.

Other alternative BIOSes are
LinuxBIOS (3s) http://freebios.sourceforge.net/
MrBIOS http://www.mrbios.com/

The second issue is the boot speed of linux itself. With a modern CPU, the kernel will boot in about 1.5s on average, but then you get to the initscripts, which can and usually take much longer. People working on helping with this (parallelising init scripts, basically) are:

Transmeta (midori)
Rusty Russell (Explicit initcall dependencies)

Have a look at www.linuxdevices.com, which should have useful info and possibly more appropriate mailing lists ;-)

Padraig.