Peerix

From Organic Design wiki
Revision as of 20:10, 30 October 2006 by Bender (talk | contribs) (Caretaker: Format cat links)

What's in a name?

As a person who has seen my fair share of branding in years as a graphic artist, I feel that the new technology brand will be invisible. Academics call this "ubiquitous computing" - where the technology does not have an identity separate from it's function.

A toaster cooks toast, we do not refer to it in terms of it's microcontroller, it's clock speed or it's user interface. It's toasts, that is all that matters. Modern computer systems will be the same.

The reason for the use of the name Peerix is born of the necessity to simply describe our operating system in conversational terms. We could say that "it's a linux 2.6 kernel running a uclibc c library with GNU c sources, built by the buildroot cross development enviroment", but that realy has no meaning outside a small group of specialists. The general IT communities convention is that names ending in ix refer to things based on the Unix or Linux operating systems, so the word Peerix describes a Peer-to-peer linux-based operating system. See Naming for details concerning the general concept of naming and its surrounding issues.

Overview

Peerix is still in the early stages of development on the Organic Design wiki. It is a UNIX-like operating system designed specifically for the Nodal Reduction environment. It uses the set of GNU UNIX-like components for low-level hardware integration operations such as memory-management. The nodal environment is used for high-level network and resource allocation layers, and to provide the user interface.

Source based

The source-based methodology used by the GNU linux community means that the operating system can work on a wide range of computer hardware available now and in the future. The PC (x86) and Mac (PPC) platforms are the most common, but many others are supported. It should be possible to have the Peerix operating system work in a similar way on Mac, PC, Palm, even iPod and PSP.

The Future

To allow the nodal environment to integrate more tightly with the hardware, some of the core UNIX-like components could also be modified. One of these modifications would be to the filesystem making it a part of the nodal network which unifies the filespace with the runtime object space and the global nodal space.

The ultimate goal for Peerix would be for it to use a kernel based on nodal reduction, but replacing the Linux kernel would be a very tall order since it's extremely complex and is composed of over 6 million lines of code!

Monolithic vs Microkernel

The GNU component set was not actually designed for Linux in the first place, they were designed from the very beginning to run on top of a microkernel called GNU Hurd which is still not complete enough for use (the Debian GNU/Hurd project is probably closest but is still quite a way off). It's was these difficulties with the GNU/Hurd development that allowed the Linux monolithic kernel to take off since the GNU project had a complete Unix-like OS with only the kernel missing.

In a microkernel environment, the kernel only handles the lowest level operations such as memory management, threading and process communications. All higher level functions are handled by specific daemons, which makes it much easier to replace certain specific functionality while re-using others.

Embedded Linux

Continuing research leads to the use of embedded linux as the base of our operating system. This is comprised of:

We like GeeXboX

It's worth looking at the GeeXbox media operating system as this distro has very nice approaches to many of the problems we will need to solve.

Of note are the auto-configuration scripts that provide a more user friendly experience with a range of hardware. However GeeXbox does not abstract the control flow, and relies on shell scripting to perform many of the operations that would be nodally executed.

How we are doing this

  • buildroot can be hooked into almost any kind of existing source repository, so there is no need to fork existing projects
  • source trees can eventually be handled by nodal logic and the concept of make is a simple one to implement in a nodal way.

x86 and PPC

Current research has identified a preliminary structure for the OS.

EXTLINUX / ISOLINUX / YABOOT boot loader supplies:

  • Hardware specific binary code residing in the boot sector of a device (CD, HD, USB stick, Flash card)
  • Bootstrap application to mount and execute the linux kernel (ext2 filesystem) and mount the main filesystem (ISO9660 in the case of ISOLINUX, ext2 in the case of EXTLINUX)
  • CD to boot both Mac and PC
  • Take care of aesthetic considerations such as hiding/logging boot messages and displaying an initial startup image on framebuffer.
  • Unified Boot - the ability to provide a universal binary to boot a linux operating system on a range of hardware

Linux Kernel supplies:

  • Built in support for HotPlug devices, Hardware autodetection, network
  • A custom made kernel will be compiled - 2.6 version

iPod

It's good to see that the smaller and more embedded the system gets, the simpler the OS required to drive it. As this software is usually written in C, we can take useful bits from different projects and combine them into the most suitable form.

iPod linux is built on ucLinux which does not have a dynamic loader by default. The iPod linux project has provided a dynamic loader for the enviorment. Example here.

PSP

Scripts

Some scripts that relate to the OS build process and other things. Resources required by the scripts can be downloaded from my uni home page.

Resources