[lug] Embedded linux distro questions

Michael J. Hammel mjhammel at graphics-muse.org
Mon Oct 15 14:28:46 MDT 2007


On Sun, 2007-10-14 at 21:46 -0600, siegfried wrote:

> Why is it meaningful to specify the CPU chip but not specify the
> motherboard? For the PC, this makes sense because there is the
> standard inspired by IBM. If I wanted to start an embedded project
> using an arm, mips or m68K, how would I go about finding which boards
> debian was designed to work with? Is there some mother board standard
> that the debian ports target that I am not aware of?

Motherboards are irrelevant.  Chipsets are important.  Support for a
specific CPU, north or southbridge (memory, pci, agp interfaces, and so
forth), network controllers, etc. are handled in specific Board Support
Packages (BSPs) in the Linux kernel.  BSPs make up the hardware
architecture support.  Motherboards just adhere to various
architectures.

ARM, MIPS, m68K, x86, PowerPC and others are CPU architectures.  You
compile the kernel for each architecture, which in turn compiles drivers
to run on those CPUs and understands how to address other chipsets (like
the north and southbridges).  And then there is graphics support, which
is partially in the kernel (in many cases now) and partially in the Xorg
drivers.  While I'm sure there are plenty of exceptions, my experience
is that embedded platforms tend to use lower-end, off the shelf graphics
and usually without 3D support as a way to control hardware costs and
conserve power.

FWIW, the reason Dell, HP and others support Windows so well is they
spend a bunch of money making sure the BSPs for Windows correctly
support their specific hardware.  Clone motherboard makers don't do that
for Linux, though many (VIA, for example) are starting to spend the
effort to make sure drivers are available for them.

> 
> Damn small linux mips
> Ubuntu mips
> Fedora mips
> SuSE mips 

MIPs is a strange beast and you'll find few desktop distributions that
support it out of the box.  Support for various MIPs CPUs and chipsets
is provided by the Linux MIPS organization
(http://www.linux-mips.org/wiki/Main_Page).

I built my own distro for an embedded MIPs project I worked on based on
a Broadcom 4-core processor (that I don't think Broadcom makes anymore,
actually).
>  
> It appears to me that debian is the only one that really advertises
> support for other processors (and presumably other boards). 

Probably.  It's not particularly easy to cross-compile an entire
distribution for various architectures.  Cross compiling is usually done
because the distro creators don't always have sufficient hardware for
the other platforms to keep one running as a development machine.
x86-based hardware is relatively cheap and each to build a generic
distro that will support most variations on it.  So you get lots of
distro options for x86, but not for other hardware platforms.

> Can I infer that debian is the only linux OS for PCs that has been
> also ported to mips, sparc mipsel, arm, m68K?

To be specific, it may be the only Linux "Distribution" that has ported
the entire distribution to other platforms.  Linux itself (which is just
the kernel code) has been ported and is available to be built for many
architectures.  Remember that a "Linux Distribution" is actually the
"Linux kernel" under the "GNU Utilities" and a bunch of variously
licensed applications.  So "Linux OS" is kind of a misnomer.

> It seems like there should be a table on a web page somewhere on the
> internet that has columns of “processor”, “mother board”, “distro
> name”, “distro URL”, “motherboard URL” and rows for each processor.

None that I know of.  Most embedded people either roll their own distros
(see Linux From Scratch - http://www.linuxfromscratch.org/) or use one
of the commercial Linux vendors (Montavista Linux is one that I've
worked with in the past - http://www.mvista.com/) that provide full BSPs
(and full distributions) for various platforms.  The problem here is
that the embedded world has lots of one-up boards and making a generic
distribution for a one-up board isn't a minor task.

You might try searching LinuxDevices.com for information on
distributions for a specific BSP.

This article might also help you get started with respect to the kernel
(just learning some terminology, etc.):
http://www.ibm.com/developerworks/linux/library/l-linux-kernel/?S_TACT=105AGX59&S_CMP=GR&ca=dgr-lnxw01LKernalAnatomy

-- 
Michael J. Hammel                                    Senior Software Engineer
mjhammel at graphics-muse.org                           http://graphics-muse.org
------------------------------------------------------------------------------
You're life can be a wonderous journey, if you don't spend all your time
trying to drag someone else through it with you.  -  Michael J. Hammel




More information about the LUG mailing list