On Tue, Apr 27, 2004 at 12:02:23AM +0200, Jochen Roemling wrote:
Brian Maly wrote:
you can do (1) kernel on DoC, use (2) FILO to boot a kernel off the HD, or (3) etherboot to load the kernel from the network.
Okay, this is still not quite understood:
Currently there are a number of options to the DiskOnChip.
LinuxBIOS in itself is quite small, in the tens of KBs.
LinuxBIOS initializes hardware and then hands over to a "payload".
LinuxBIOS and the payload both have to fit in the flash ROM on the mainboard.
The payload needs to be in a specific format.
The payload can contain a kernel or a bootloader such as FILO or Etherboot or even some other software, e.g. the baremetal toolkit even if it hasn't been mentioned for a while.
Both FILO and Etherboot support loading a kernel from various media. FILO is popular for loading a kernel from IDE media, ie. harddisk, CD-ROM, CompactFlash-in-IDE-adapter, etc. Etherboot is the best choice for loading the kernel from the network.
FILO and Etherboot are also quite small, also in the tens of KBs.
A kernel is the opposite - large. In order to use a kernel for payload there has to be room in the flash memory part on the mainboard and unfortunately this usually isn't the case. 2 Megabit parts are very common these days and 2Mbit == 256Kbyte, so no kernel in there. 4 Megabit parts are becoming popular and with 512Kbyte of room a kernel is feasible, but not really a full-blown one. Rather this would require a "two kernel monte" where the first kernel loads a fuller-featured kernel from somewhere. This required Eric Biederman's kexec() patch in earlier 2.4, I'm not sure if kexec() is integrated in later 2.4 and 2.6.
The DOC was initially used as a trick to get more storage space from the flash ROM - as you might have found, the DOC replaces the flash ROM and allows windowed (aka paged) access to all of the DOC memory through a small window. This works well, but the catch is that only 512 bytes are available for the very first code to be executed when the CPU is reset, and these 512 bytes of code have to initialize the system RAM. This has proved to be difficult at best with current systems.
And what about this Etherboot: Can I use some ordinary BootROM? I don't think so. This means, the code on the DoC simulates a BootROM and then does dhcp, tftp and the like? I gues I have to seek out for more documentation.
Etherboot was initially developed as a bootrom project targeted at boot ROMs on networking cards. Etherboot has turned out to be very usable for other purposes as well, such as LinuxBIOS. :)
Arima/hdama or most of the Tyan's. Tyan may give you a better selection because more motherboards are supported. This assumes you want to dish out some $$$ for an opteron.
No, definitely not. I thought about a more consumer-like board with an Athlon or Celeron. SiS630 sounded like a good choise, but the only boards I could find was a Gigabyte GA-6SMZ7, which is nowhere in the stores. Same with the ASUS CUSI. And this EPIA pops up everywhere on PVR pages, but it has only 2 PCI slots... very dificult to decide...
Check out the entire EPIA line, I think there are models that combine passive cooling with TV-out, which is why it's popular for TV-things. There has been success with video initialization of the VGA on EPIA boards too, as I recall. However this was in the old "version 1" branch and all current development efforts are going into the "version 2" branch - each mainboard being moved over in turn. I believe the good people at LANL are working on completing the EPIA support right now.
My humble suggestion would be to try to find a suitable EPIA board and use LinuxBIOS with FILO as the payload, and use a CF+IDE-adapter for kernel and system storage. I haven't done any work to support the suggestion, but still it seems and feels like the shortest path to your goal, especially since Ron+Ollie+Greg at LANL and others are working on finalizing EPIA support in v2. :)
Hope this helps! (Oh, and feel free to edit this short writeup and put it on the web somewhere to serve as some kind of status report..)
//Peter