Hi all,
I'm trying to build up a PVR (Personal Video Recorder) using LinuxBIOS because of it's fast startup time and because I'm interested in playing around with this on-the-edge matter.
I spent hours on the net trying to find a suitable motherboard. To be serious: I found not even one that seems to be supported by LinuxBIOS, supports everything I need and is still in the shops of the retailers or eBay. The Status page on linuxbios.org seems to contain mainly very small boards with only 2 or 3 PCI slots that are aimed towards cluster nodes.
Those questions may all sound like newbee questions to you, but please reply at least yes or no, I would then commit a HOWTO if I get the whole stuff working:
1. I found out that LinuxBIOS supports VGA only for very few chipsets like the SiS630. If I would use a VGA card that comes with it's own BIOS (let's say some ATI radeon) and not using any on-board-VGA-device, would it work if the mainboard has a LinuxBIOS-supported chipset? My feelings say "yes", don't they?
2. I'm going to use the Hauppauge PVR 350 card that has a TV-out which - according to the net - is available to Linux as a frame buffer device, so X and the TV Applications should be able to use this. Does this mean I would be able to boot LinuxBIOS with serial console only and then start up XFree86 using this PVR 350 Framebuffer device?
3. Just to verify that I understood everything right: The Kernel that is burned into the DoC will be the kernel that runs the machine after bootup and it is possible to mount the root fs via NFS just like LTSP does? Or will the kernel on the DoC just to be used to initialize the hardware and then load another kernel via the net or from disk? Or do I have both possibilities?
4. Is it correct that kernel 2.4.19 is the latest one supported by LinuxBIOS? Should the patches be good for 2.4.26 also? What about 2.6?
Maybe you can recommend some motherboards out of the box that are still available in the shops? They should support CPUs with about 1200 MHz, have at least 2 PCI slots for TV cards, another PCI slot for an AC97 soundcard with optical SP/DIF output (only if there is no such linux-supported connector on-board) and another PCI slot for a 3com network card with BootROM (not needed if the LinuxBIOS on the DoC is running the whole machine and can mount root via NFS or if the board can net-boot via the on-board NIC).
Thanks in advance for your help which will be highly appreciated!
Best regards Jochen
On Mon, 26 Apr 2004, Jochen Roemling wrote:
I spent hours on the net trying to find a suitable motherboard. To be serious: I found not even one that seems to be supported by LinuxBIOS, supports everything I need and is still in the shops of the retailers or eBay. The Status page on linuxbios.org seems to contain mainly very small boards with only 2 or 3 PCI slots that are aimed towards cluster nodes.
The EPIA-M seems to be a popular choice for personal video apps.
reply at least yes or no, I would then commit a HOWTO if I get the whole stuff working:
Awesome.
- I found out that LinuxBIOS supports VGA only for very few chipsets
like the SiS630. If I would use a VGA card that comes with it's own BIOS (let's say some ATI radeon) and not using any on-board-VGA-device, would it work if the mainboard has a LinuxBIOS-supported chipset? My feelings say "yes", don't they?
Vendors haven't exactly been the most cooperative with sharing VGABIOS info. But we do have video working at least on the EPIA, SiS630, and now the Rage XL chips that come on server boards like the S2885 and HDAMA.
However, you probably want something more powerful than those. We don't have nVidia or ATi Radeon support coming up from the get-go just yet, but so far we've been able to start a GeForce FX vgabios with 8x AGP support on a Tyan S2885. This is done with an x86 emulator that runs the vgabios after LinuxBIOS has already started.
- Just to verify that I understood everything right: The Kernel that is
burned into the DoC will be the kernel that runs the machine after bootup and it is possible to mount the root fs via NFS just like LTSP does? Or will the kernel on the DoC just to be used to initialize the hardware and then load another kernel via the net or from disk? Or do I have both possibilities?
You can boot your kernel from pretty much anywhere. If your flash part is big enough, you can put a kernel on it. Otherwise, you can boot off an ide hard disk, compact flash, or over the network.
- Is it correct that kernel 2.4.19 is the latest one supported by
LinuxBIOS? Should the patches be good for 2.4.26 also? What about 2.6?
You can run any kernel. We're currently running 2.6.5 on our Opteron systems.
Maybe you can recommend some motherboards out of the box that are still available in the shops? They should support CPUs with about 1200 MHz,
HOw much did you want to spend on the thing? If you want fast, you might want to try a Tyan S2880, as YhLu has that working with VGA (Rage XL). It also has plenty of PCI slots, and will take dual Opterons.
- I found out that LinuxBIOS supports VGA only for very few chipsets
like the SiS630. If I would use a VGA card that comes with it's own BIOS (let's say some ATI radeon) and not using any on-board-VGA-device, would it work if the mainboard has a LinuxBIOS-supported chipset? My feelings say "yes", don't they?
You will need some video device supported by linuxbios. If the video chipset is supported in linuxbios, then it should work, but its worth mentioning that VGA is not yet supported on many/most motherboards... Framebuffer support may be a better option. You could use something like an ATI RageXL or other supported framebuffer device.
- I'm going to use the Hauppauge PVR 350 card that has a TV-out which -
according to the net - is available to Linux as a frame buffer device, so X and the TV Applications should be able to use this. Does this mean I would be able to boot LinuxBIOS with serial console only and then start up XFree86 using this PVR 350 Framebuffer device?
You will probably need to initialize this device somehow. If you had a kernel module or some XFree86 patch that does the all of the video init (i.e. biosless init), this will work. Otherwise you will have to create a linuxbios driver for this device so the init can be done in linuxbios.
- Just to verify that I understood everything right: The Kernel that is
burned into the DoC will be the kernel that runs the machine after bootup and it is possible to mount the root fs via NFS just like LTSP does? Or will the kernel on the DoC just to be used to initialize the hardware and then load another kernel via the net or from disk? Or do I have both possibilities?
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.
- Is it correct that kernel 2.4.19 is the latest one supported by
LinuxBIOS? Should the patches be good for 2.4.26 also? What about 2.6?
Linuxbios should boot most kernels. almost all 2.4.X and 2.6.X have worked fine for me.
Maybe you can recommend some motherboards out of the box that are still available in the shops? They should support CPUs with about 1200 MHz, have at least 2 PCI slots for TV cards, another PCI slot for an AC97 soundcard with optical SP/DIF output (only if there is no such linux-supported connector on-board) and another PCI slot for a 3com network card with BootROM (not needed if the LinuxBIOS on the DoC is running the whole machine and can mount root via NFS or if the board can net-boot via the on-board NIC).
Some Opteron MB's have some decent support (even framebuffer).. i.e. 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.
Brian Maly wrote:
- I found out that LinuxBIOS supports VGA only for very few chipsets
like the SiS630. If I would use a VGA card that comes with it's own BIOS (let's say some ATI radeon) and not using any on-board-VGA-device, would it work if the mainboard has a LinuxBIOS-supported chipset? My feelings say "yes", don't they?
You will need some video device supported by linuxbios. If the video chipset is supported in linuxbios, then it should work, but its worth mentioning that VGA is not yet supported on many/most motherboards... Framebuffer support may be a better option. You could use something like an ATI RageXL or other supported framebuffer device.
Okay, so the Mainboard BIOS initializes all other BIOSes (VGA, SCSI...). I always thought they pop up by themselves (silly, yeah) and only the on-board components that are normally initialized by the Mainboard BIOS need to be activated... maybe this thought was formed because the VGA BIOS is always first and then ... forget it.
But ATI Rage XL sounds good. It's just the category I was looking for: Fast, cheap, passive cooling, available in eBay. Very good.
- I'm going to use the Hauppauge PVR 350 card that has a TV-out which -
according to the net - is available to Linux as a frame buffer device, so X and the TV Applications should be able to use this. Does this mean I would be able to boot LinuxBIOS with serial console only and then start up XFree86 using this PVR 350 Framebuffer device?
You will probably need to initialize this device somehow. If you had a kernel module or some XFree86 patch that does the all of the video init (i.e. biosless init), this will work. Otherwise you will have to create a linuxbios driver for this device so the init can be done in linuxbios.
We will see. The PVR 350 project page sounds promissing. The card has no own BIOS, the TV out is just a frame buffer device and they have their own kernel module for it.
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: In order to be able to initialize the mainboard the mainline kernel has to be patched with some kind of boot-loader-from-DoC-thing. But where are the patches for 2.6? They are not in CVS. 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. This seems to be a good solution because you never have to update your DoC again once it does it's job. With the kernel in the DoC you may want to upgrade from time to time if new kernels arrive.
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...
Thanks for your quick reply btw.
Jochen
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
On Tue, 27 Apr 2004, Peter Stuge wrote:
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. :)
that's the right way to go -- it's how we do our EPIAs here.
linuxbios + file (in FLASH) + Linux kernel (in IDE-FLASH)
ron
Peter Stuge wrote:
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. :)
Things are becoming clearer now. I remembered the site http://www.rom-o-matic.net from the days I fiddled around with LTSP (Linux Terminal Server Project).
Am I right with those assumtions: 1. I decided to use a Gigabit GA-6BXC board. They cost no more than 5,- Euro + 50,- Euro for a Pentium III 1GHz Slot 1 + few Euro for cheap SD-RAM. Thats perfect and has enough PCI slots. If the PVR-350 framebuffer makes trouble I have the Option to buy another 5,- Euro ATI Rage XL AGP card and use this. 2. I follow the documentation in freebios/Documentation/configmanual.ps and create a build dir 3. do the config and run "make" 4. Create an ELF-image on rom-o-matic.net fitting my NIC 5. Combining the ELF-image with the LinuxBIOS bootloader 6. Create an EEPROM image somehow 7. Buying an EEPROM fitting the mainboard BIOS socket and find someone who can burn the image to a chip 8. Inserting the chip into the BIOS socket. Boot. Done. 9. The Etherboot will contact my LTSP-server via DHCP/tftp. That's the part I'm familiar with.
Is this correct? I don't have any clue how steps 5 and 6 will work. Can you please point me to any document or give me some keyword?
By the way: I've already tried to compile the GA-6BXC bootloader, but make ended with:
gcc -nostdlib -r -o linuxbios_c.o c_start.o linuxbios.a /usr/lib/gcc-lib/i486-linux/3.3.3/libgcc.a gcc -nostdlib -nostartfiles -static -o linuxbios_c -T /home/jochen/linuxbios/freebios/src/config/linuxbios_c.ld linuxbios_c.o linuxbios_c.o(.text+0x61f): In function `mainboard_fixup': : undefined reference to `pci_zero_irq_settings' collect2: ld returned 1 exit status make: *** [linuxbios_c] Error 1
The string "pci_zero_irq_settings" does not appear in the Linux Kernel headers nor in any file of the freebios tree except the function call that the linker complains about. It is in src/mainboard/gigabit/ga-6bxc/mainboard.c, so board-specific. Any idea?
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..)
Yeah, it did. We are not done, but my understanding for this whole matter grows. Unfortunately my website is in German, but as soon as I bought the hardware and start fiddling I will compile some kind of HOWTO or report. The problem is just that all documentation available is aimed to BIOS hackers. I know C a bit, can read it quite well and I am able to compile OSS-software or the kernel, but when it comes to unresolved symbols, Makefiles or assembly language, I'm out.
Thanks so far, best regards Jochen
On Tue, Apr 27, 2004 at 12:02:23AM +0200, Jochen Roemling wrote:
Okay, this is still not quite understood: In order to be able to initialize the mainboard the mainline kernel has to be patched with some kind of boot-loader-from-DoC-thing. But where are the patches for 2.6?
All recent Linux kernels can handle the DoC via the MTD driver. However, I don't think many linuxbios developers are using the DoC anymore. New developments have enabled linuxbios to get the kernel from ide disks (eg compactflash) and from an ethernet network. If I were you I wouldn't go the DoC route.
And this EPIA pops up everywhere on PVR pages, but it has only 2 PCI slots... very dificult to decide...
You should also be aware that the EPIA processors are not the fastest. If you use the PVR-350 and use its hardware MPEG2 compression and decompression you should be ok. But, if you try to use the epia's cpu to compress and/or decompress you could hit the cpu limits.
-Kevin
I am also building a PVR solution and am hoping LinuxBIOS will help the startup time (and be a neat project).
And this EPIA pops up everywhere on PVR pages, but it has only 2 PCI slots... very dificult to decide...
You should also be aware that the EPIA processors are not the fastest. If you use the PVR-350 and use its hardware MPEG2 compression and decompression you should be ok. But, if you try to use the epia's cpu to compress and/or decompress you could hit the cpu limits.
I'm currently using EPIA-M's with MythTV (http://mythtv.org) and am quite happy with them. My project is described at http://linpvr.org.
I would be happy to talk to you about my experience. It's off-topic for this list but you can email me or use the forum on my website.
I currently have LinuxBIOS loading etherboot as the payload and that loads a kernel over the net. I don't have VGA working yet but I understand that has been done by others so I'm hopeful this will work out.
Larry