News Introduction Developer Tools Project Status Installation Bugs!

Site Map

One processor per person is not enough. One operating system per computer is not enough.

Linux for BeBox logo

Project Status
Linux for BeBox is currently under development. Please do not hesitate to get in touch if you can help out; the only real requirement is that you own a working BeBox (with more than 8Mb of RAM) and have spare time on your hands.

There is also a news page, and my personal pages.

Update: 8th March 1999
Here is a transcript of an email I sent today. Very exciting news, I think you'll agree!


From: "William R Sowerbutts" <wrs23@cam.ac.uk>
To: <be-linux@hco.kol.ou.dk>
Cc: <jhaas@linuxppc.org>
Subject: [BL] Linux 2.2.1 now booting LinuxPPC R4 on BeBox Dual603 (uniprocessor)
Date: Mon, 8 Mar 1999 01:54:24 -0000

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi there,

Thought everyone might like to hear that I now have Linux 2.2.1 booting
LinuxPPC R4 on my BeBox Dual603. This is still a development version; for
example, there's no support yet for PCI devices which require the use of DRAM
on the PCI bus - thus the onboard SCSI doesn't work yet. However, it is making
very promising progress!

There are also a few buglets in the interrupt code. IDE drives seem to be
working well, however, as are ISA NE2000 network cards. Indeed, my development
system mounts it's root filesystem over NFS from one of my Intel boxes
(although I've also had it mount an ext2 filesystem from an IDE drive in the
machine. I used Macintosh style disk partitioning, although Intel style
partitions should work as well). Only one CPU is currently in action; Zach
suspects that adding SMP is probably quite a lot of work, since most of the SMP
code is Mac-specific. However, I plan to use both processors eventually.

Currently the only supported method of booting is TFTP booting over the network
(since I seem to have accidentally broken the part of the bootstrap that lets
it read in floppy disks). This will be fixed soon, as I realise not everyone
has spare machines to TFTP boot from ;-)

Once the PCI DRAM problem has been sorted out it should be possible to use
framebuffer devices for video display; thus you should be able to buy a Matrox
Millenium or ATI Mach64 based card and plug them into the PCI bus on your BeBox
and enjoy high quality text and graphics.

I should point out that this is only a progress report; Linux 2.2.1 on the
BeBox is far from being ready for mainstream deployment.

Incidentally, Linux 2.2.1 seems a lot snappier (even with an NFS filesystem!)
compared to 2.0.30, which I'm sure you'll agree is good news. For the curious,
here's a log of telnetting to my BeBox Dual603/133 and playing with things a
bit:

btg@aleph:~/bebox/linux$ telnet hive
Trying 192.168.111.34...
Connected to hive.intra.
Escape character is '^]'.

Linux 2.2.1 (hive.intra) (ttyp0)

login: root
Password:
Last login: Fri Apr 17 05:31:36 on tty1

Welcome to Linux on the PowerPC!

root@hive:~# cd /
root@hive:/# ls
X11R6/         doc/           info/          mnt/           root/          var/
bin/           etc/           lib/           opt/           sbin/
boot/          home/          mach_servers/  proc/          tmp/
dev/           include/       man/           pub/           usr/
root@hive:/# cat /proc/cpuinfo
processor       : 0
cpu             : 603e
revision        : 4.0
bogomips        : 88.06
zero pages      : total 0 (0Kb) current: 0 (0Kb) hits: 0/189 (0%)
machine         : BeBox Dual603
motherboard     : Revision 8 (Joe)
io card         : Revision 5
root@hive:/# cat /proc/meminfo
        total:    used:    free:  shared: buffers:  cached:
Mem:  56848384 35442688 21405696 19906560 12222464 13135872
Swap: 66990080        0 66990080
MemTotal:     55516 kB
MemFree:      20904 kB
MemShared:    19440 kB
Buffers:      11936 kB
Cached:       12828 kB
SwapTotal:    65420 kB
SwapFree:     65420 kB
root@hive:/# cat /proc/interrupts
           CPU0
  1:        455     82c59     keyboard
  2:          0     82c59     cascade
  8:          0     82c59     rtc
 10:      28052     82c59     NE2000
 14:      23862     82c59     ide0
 28:          0  BeBox IC     8259s on BeBox IC
BAD:          0               spurious or short
root@hive:/# dmesg
Total memory = 56MB; using 0kB for hash table (at 00000000)
Linux version 2.2.1 (btg@aleph.intra) (gcc version egcs-2.91.60 19981201
(egcs-1.1.1 release)) #62 Mon Mar 8 01:06:39 GMT 1999
Boot arguments: root=/dev/nfs ether=10,0x300,eth0
Detected BeBox: Revision 8 motherboard (Joe), revision 5 IO card.
bebox_irq_init()
time_init: decrementer frequency = 496398000/60 (7MHz)
Console: colour VGA+ 80x25
Calibrating delay loop... 88.06 BogoMIPS
Memory: 55516k available (816k kernel code, 948k data, 64k init)
[c0000000,c3800000]
POSIX conformance testing by UNIFIX
PCI: Probing PCI hardware
Relocating PCI address 0x11020000 -> 0x01020000
Fixing BeBox PCI device 0x60 interrupt to IRQ20 (Be interrupt 10)
PCI device 0x68 has ROM at 0x11000000
Fixing BeBox PCI device 0x68 interrupt to IRQ21 (Be interrupt 11)
Linux NET4.0 for Linux 2.2
Based upon Swansea University Computer Society NET3.039
NET4: Unix domain sockets 1.0 for Linux NET4.0.
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP
Starting kswapd v 1.5
Serial driver version 4.27 with no serial options enabled
ttyS00 at 0x03f8 (irq = 4) is a 16550A
ttyS01 at 0x02f8 (irq = 3) is a 16550A
ttyS02 at 0x0380 (irq = 16) is a 16550A
ttyS03 at 0x0388 (irq = 17) is a 16550A
ttyS04 at 0x03a0 (irq = 18) is a 16550A
ttyS05 at 0x03a8 (irq = 19) is a 16550A
Real Time Clock Driver v1.09
hda: WDC AC31000H, ATA DISK drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
hda: WDC AC31000H, 1033MB w/128kB Cache, CHS=2100/16/63
ne.c:v1.10 9/23/94 Donald Becker (becker@cesdis.gsfc.nasa.gov)
NE*000 ethercard probe at 0x300: 00 00 e8 cf 2e 39
eth0: NE2000 found at 0x300, using IRQ 10.
Sending BOOTP requests.... OK
IP-Config: Got BOOTP answer from 192.168.111.1, my address is 192.168.111.34
Partition check:
 hda: hda1 hda2 hda3 hda4 hda5
Looking up port of RPC 100003/2 on 192.168.111.1
Looking up port of RPC 100005/1 on 192.168.111.1
VFS: Mounted root (NFS filesystem) readonly.
[paranoia - keep yer hands off my memory!]Freeing unused kernel memory: 0k init
Aliens generating interrupts!
Aliens generating interrupts!
Aliens generating interrupts!
Adding Swap: 65420k swap-space (priority -1)
EXT2-fs warning: mounting unchecked fs, running e2fsck is recommended
Aliens generating interrupts!
root@hive:/# time -v dd if=/dev/zero of=/dev/null bs=1024 count=1048576
1048576+0 records in
1048576+0 records out
        Command being timed: "dd if=/dev/zero of=/dev/null bs=1024 count=1048576"
        User time (seconds): 2.61
        System time (seconds): 12.52
        Percent of CPU this job got: 99%
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:15.18

Why six serial ports? Well the first four are serial1 through serial4 on the
back of the BeBox. The other two are the MIDI ports, which are also controlled
by 16550s (but at a different clock rate).

Anyway, I'll update the BeLinux web site sometime tomorrow. Hopefully we'll
iron out the bugs and have a fully SMP kernel blazing away on the BeBox quite
soon ;-)

Oh, we also need a little userspace program to monitor "/proc/stat" and feed
values to "/dev/leds", a little device driver I'll write to drive the front
panel LED columns. Of course, one could always kill that process and replace it
with a program that monitors the audio input and drives the columns as a VU
meter ;-)

http://www.sowerbutts.com/belinux/

_________________________________________________________________________
William R Sowerbutts (BtG)                                wrs23@cam.ac.uk
Coder / Guru / Nrrrd                         http://www.guru.dircon.co.uk
       main(){char*s=">#=0> ^#X@#@^7=";int c=0,m;for(;c<15;c++)for
         (m=-1;m<7;putchar(m++/6&c%3/2?10:s[c]-31&1<<m?42:32));}

-----BEGIN PGP SIGNATURE-----
Version: PGP 6.0.2

iQA/AwUBNuMt0LmJ6+8Ag3+5EQJt0gCg1bfwA9PSJ1Yb3smUzre7UiQZMB8AnAxD
picHEBlBhQV+Diu5DtKYQ+wN
=laxK
-----END PGP SIGNATURE-----

Update: 16th December 1998
Here is a transcript of an email I sent yesterday:


From: William R Sowerbutts [mailto:btg@guru.dircon.co.uk] 
Sent: 16 December 1998 00:58
To: [list suppressed]
Cc: be-linux@hco.kol.ou.dk
Subject: Linux for BeBox


Hello everyone, sorry to have taken so long to get back to you all. Let me
explain what's been going on and what I plan to happen over the next few weeks.

I've been away at Cambridge University for the past 9 weeks or so. During that
time, about 12 people (you are one of them if you're receiving this email) have
emailed me asking about various things to do with the Linux port to the BeBox.

Basically the situation is as follows: There has been (as far as I know) no
work done to the kernel recently. The support is exactly the same as before: A
uniprocessor (no SMP yet) and slow 2.0.30 kernel that supports the onboard SCSI
and IDE but not PCI. Video card support is still limited to the single card
that the bootloader can coax into text mode. X11 support is theoretically
possible if you can find an X server that supports that particular card.

With regard to LinuxPPC, the situation is that their standard installer doesn't
work with the BeBox, *BUT* since the BeBox is a PowerPC system, it can run the
same binaries as one would use on a PowerMac or MicroUX system. So, as long as
you can get the OS installed, you can use their RPMs.

Booting the BeBox remains a big pain. My advice is: Flash your BeBox's ROMs
with the image from BeOS Preview Release 2 (I can supply this image if you need
it). Do NOT use the R3 image; it's buggy. The R4 image doesn't appear to let
you use the floppy drive to boot, although I've not spent a long time verifying
this. Intel-style hard drive partitioning in R4 of the BeOS also appears to be
generally a bit broken; BeOS refuses to let me partition my IDE drive. I think
that they've fixed the byte ordering problems in the partition table at some
point, and now everything's a bit mashed since some tools expect it to be
broken still. Not sure on this; anyone know someone at Be whom we can ask about
what's going on? I've been working on the bootstrap; it now supports booting
over the Ethernet (this should speed development) using BOOTP (boot protocol)
and TFTP (trivial file transfer protocol). Fairly obviously, it requires a
second machine on the LAN to achieve this. Linux servers can easily run both
daemons from inetd.

The way my BeBox currently boots is as follows: I'm using the PR2 ROM image.
I've created a small (4Mb or so) partition and formatted it as a BeFS drive.
I've put the new bootstrap in there (as "/system/kernel_joe" and marked the
partition as the default boot partition (using the "Boot" preferences tool
under BeOS). I have an ISA NE2000 card in my system. When I reboot, the boot
ROM loads my bootstrap from the hard drive. The new bootstrap then broadcasts a
BOOTP packet to learn what IP address it should be using, and to find out where
it can get a copy of the kernel off the LAN (or even the Internet, it can use a
gateway) from. My Linux server here responds, giving it the correct IP to use
and a filename to fetch from a TFTP server. The BeBox then uses TFTP to fetch
that file, and then boots it. Booting is fast, and the BeBox doesn't wait for
any keypresses or require even a single floppy disk any more. Hurrah and
huzzah!

Since rebooting is now faster and more convenient, the time taken to test out a
new kernel should be greatly accelerated.

Big projects that need to be undertaken are:

 - Rewriting the bootstrap (I'm currently working on this)
 - Adding support for more graphics cards to the bootstrap
 - Improving the speed of the kernel
 - Persuading the kernel to use the BeBox's PCI bus (fix interrupt code)
 - Getting the second processor working (SMP)
 - Sharing interrupts between the processors reliably (would be nice)
 - Getting the BeBox supported in the mainstream LinuxPPC distribution
 - Getting BeBox support in the mainstream kernel updated
 - Updating the BeLinux pages (I guess this is my job really!)

I suppose that most of this work will probably be done on Linux 2.3 kernels,
since those appear to be imminent. However, we should start now.

I also suggest that we use the mailing list more. It should be a valuable tool.

Thanks everyone,

_________________________________________________________________________
William R Sowerbutts (BtG)                          btg@guru.dircon.co.uk
Coder / Guru / Nrrrd                         http://www.guru.dircon.co.uk
       main(){char*s="&>#=0&> ^#X@#@^7=";int c=0,m;for(;c&<15;c++)for
         (m=-1;m&<7;putchar(m++/6&c%3/2?10:s[c]-31&1&<&<m?42:32));}

-=       Linux for BeBox:  http://www.guru.dircon.co.uk/belinux/       =-

Sources of Information
There isn't much information on the web about Linux for the BeBox. The LinuxPPC FAQ-o-matic has a BeBox page, and there's some information about installing it on the LinuxPPC site here.

The Linux Kernel
The most recent "stable" kernel, Linux 2.0, has been ported to the BeBox and works in uniprocessor mode, albeit quite slowly (there is a lot of debugging code and we make very poor use of the MMU). Our 2.0 kernel is derived from the LinuxPPC distribution, not the mainstream sources. Our 2.1 kernel will come directly from the mainstream kernel source. There is a port of the 2.1 kernel to the BeBox hardware now underway. A PowerPC cross-compiler hosted on x86 has recently been developed, as well as one hosted on a Sun Sparc.

Booting
Unless you have an NE2000 and a BOOTP/TFTP server, at present Linux is booted from a pair of floppy disks; the first contains a bootstrap, the second contains the kernel itself. At some point we hope to combine these into a single floppy disk. The ultimate goal, of course, is to have Linux for BeBox boot directly from a hard disk.

The kernel can be booted on BeBoxes with Boot ROMs from BeOS PR2 and R3; older boot ROMs, possibly back to DR8, are probably supported. It's a good idea to upgrade to the PR2 boot ROM if you can. I've had a lot of strife from the R3 boot ROM, so I'm avoiding it until Be DTS get back to me and address my problems. ROMs before PR2 may work; I don't know. The R4 ROM doesn't appear to work for floppy-driven boots; it seems to not check the floppy drive at all. Your best bet is to use the PR2 ROM image, as I do.

The very newest bootstraps will try to boot from the network if they detect an ISA NE2000 network card. You'll need a BOOTP server to assign the BeBox an IP address and to tell it the address of your TFTP server, as well as the file it should fetch. This bootstrap can be stored on a small BeFS partition on your hard drive for floppy-free booting.

Who is doing what
If you are working on Linux for BeBox, please get in touch with me so that I can update this list with your information! Keeping this list updated allows people to see what development is taking place, and avoids people repeating each other's work.

Developer

Project

Zach Brown

Uniprocessor Linux 2.1 Kernel
Zach is currently working on the first steps of a port of the 2.1 kernel. The 2.1 kernel incorporates Cort Dougan's symmetric multiprocessing work on the PPC processors to provide SMP on the BeBox. Getting SMP running on a 2.0 BeBox would require back-por ting Cort's changes: more work than its worth. The 2.1 kernel should also more reflect the true performance of the BeBox, as it is more streamlined than the 2.0 kernels. There have been a number of PPC performance tweaks, and driver updates will fix some of the other BeBox performance problems. /TD>

Andy Lo A Foe

PowerPC cross compiler
As the current version of Linux for the BeBox is very slow, natively compiling the kernel is an impractical proposition for development purposes. Andy is currently finishing a cross compiler which runs on the Linux/x86 and (given a fast enough PC) can compile a kernel in a matter of minutes, rather than days. He is currently working with the Linux 2.0 kernel.

William Sowerbutts

Bootstrap, Kernel and Web Site
I'm currently writing and maintaining this web site. I'm also doing some work on the bootstrap (the first stage in loading Linux on the BeBox) and working with Andy on the cross compiler. I'm investigating the various ways to extend the currently feeble support for video cards that the bootstrap has. More recently, I've persuaded the new Linux 2.2 kernels to boot on the BeBox Dual603/133. PCI support is still broken, but every journey starts with a single step.

Sean Murphy

Linux 2.1 Kernel and video cards
Sean is currently looking at adding support to the bootstrap for his particular Cirrus Logic video card, followed by the Tulip ethernet driver. He's also interested on working with Zach on the port of the 2.1 kernel.

Built on a BeBox Dual603-133

© 2002 William R Sowerbutts <will@sowerbutts.com>
Page last modified: Sun Dec 12 15:21:28 1999

Be is a registered trademark, and BeOS, BeBox, BeWare, GeekPort, the Be logo and the BeOS logo are trademarks of Be, Inc. All other trademarks mentioned are the property of their respective owners. Yadda yadda yadda.