Linux on Appliances

WLUG May, 2005

Jason Schonberg

The Long Life of Hardware

Commodore 64

Built in 1982

End Production 1993

1 Mhz 6510 cpu

64K RAM 20K ROM

No user serviceable parts

Original List Price $595

Want to run C64 software?

Commodore 64 system on Ebay today costs around $10.50

Run a software emulator on Linux

Vice -- http://www.viceteam.org/

Video Games

Elevator Action

Released by Tatio in 1983

Elevator Action today?

Buy the game on Ebay (if you find it)

Use an emulator

Multiple Arcade Machine Emulator (MAME)

http://www.mame.net/

Old Operating Systems

VMS – “Virtual Memory System” was the operating system that ran on the VAX 11/780

System introduced in 1977

VAX – the “Virtual Address eXtension” of the PDP-11's 16-bit architecture to a 32 bit architecture

VMS Today

VMS has been ported to both the DEC Alpha and the Intel Itanium.

OpenVMS – http://www.openvms.org

FreeVMS – http://freshmeat.net/project/freevms

Points to Remember

Hardware lasts forever

Software lasts a little longer

Compiler Flow

1) Parse human provided code

2) Translate to RTL

3) Optimize

4) Link to resolve references to external library calls

5) Generate machine code

Compilers

Native

Runs on Machine A, builds code that runs on Machine A

Cross Compiler

Runs on Machine A, builds code that runs on Machine B

Why use a cross compiler?

The target machine is so new that a native compiler does not exist yet.

The target machine has too little memory to run a native compiler.

The target machine is too slow to do useful development.

The target system uses a different architecture than the development system

Linux on multiple architectures

ARM - http://www.arm.linux.org.uk

Sun Sparc - http://auroralinux.org

Mips Linux - http://www.linux-mips.org

PowerPC - http://www.penguinppc.org

Motorola 68000 - http://www.mac.linux-m68k.org

Microcontrollers - http://www.uclinux.org

What's needed to build a compiler?

The source code of GCC

And an older version to build the new version with.

The source code of Glibc

Building C requires the C library.

Binutils

This is the assembler, the linker, BFD, objdump, nm and others.

Linux kernel source (for system headers)

What does the Cobalt Qube2 offer?

Apache

NFS

Apple Talk

Samba

DNS

DHCP

SNMP

Why is this an appliance?

No keyboard (use the arrow keys to set the IP address)

No mouse

No monitor

No removable media

It is for the most part, a sealed system.

Security patches or OS upgrades?

With no removable media, the options are

limited.

Software updates through a web page using CGI and Java.

Network boot followed by NFS mounted root from another machine.

TFTP (Trivial File Transfer Protocol)

Other examples of Linux based appliances

Phone systems (cell phones and PBXs)

Robots

Routers

PDAs

Digital music players

2004-08-28T05:25:50