https://www.coreboot.org/api.php?action=feedcontributions&user=Jdarby&feedformat=atomcoreboot - User contributions [en]2024-03-28T09:41:06ZUser contributionsMediaWiki 1.40.0https://www.coreboot.org/index.php?title=User:Jdarby&diff=2068User:Jdarby2005-09-07T03:29:58Z<p>Jdarby: </p>
<hr />
<div>All of the information you would ever actually care to know about me is available at my personal website: [http://windex.org here.]<br />
<br />
If you need to contact me, you can do so at one of the following e-mail addresses:<br />
<br />
[mailto:jdarby@fdconsultingservices.com justin@fdconsultingservices.com]<br />
<br />
[mailto:windex@windex.org windex@windex.org]<br />
<br />
Both are checked frequently throughout the day.</div>Jdarbyhttps://www.coreboot.org/index.php?title=Talk:Supported_Motherboards/old&diff=2079Talk:Supported Motherboards/old2005-09-07T03:26:26Z<p>Jdarby: </p>
<hr />
<div>I'm filling in blanks for Tyan mainboards as an example, mostly because I know how to navigate the website. --[[User:Jdarby|jdarby]] 23:31, 1 Mar 2005 (CET)<br />
<br />
I'll work on this more tomorrow, I've got to get home. :) --[[User:Jdarby|jdarby]] 00:04, 2 Mar 2005 (CET)<br />
<br />
<br />
then the page will be too long. YH<br />
<br />
I am happy with the idea of providing too much information over too little. I threw in some extra pieces that if populated might help people make shopping decisions, which in my position (as someone who requests a lot of hardware per year), would be very useful. Be back tomorrow. --[[User:Jdarby|jdarby]] 00:10, 2 Mar 2005 (CET)<br />
<br />
I just wanted to note: I have a lot of downtime at the office right now, which is why I'm working on this. :) --[[User:Jdarby|jdarby]] 00:13, 2 Mar 2005 (CET)<br />
<br />
This is going really great so far. Thanks everyone for helping fill in the blanks. :) --[[User:Jdarby|jdarby]] 13:06, 2 Mar 2005 (CET)<br />
<br />
If it is too long, we can still clear out the non interesting lines (a lot of them with (???) in them that are there as an example now) and we can split the whole page up into one page per architecture, or one per vendor, or whatever.. --[[User:Stepan|Stepan]] 13:10, 2 Mar 2005 (CET)<br />
<br />
<br />
If you add a board, it would be great to also add production status. I'm going to fill in the blanks on the rest of the Tyan motherboards right now, then start working on other makes I can find specs for, but if you add a board you know is no longer being sold or marketed, adding "(Out of Production)" to the title would be helpful to people looking to buy equipment. --[[User:Jdarby|jdarby]] 15:56, 2 Mar 2005 (CET)<br />
<br />
<br />
I am out, likely for the rest of the day, doing my actual day job. I'm planning on getting back to this tonight or tomorrow. --[[User:Jdarby|jdarby]] 20:26, 2 Mar 2005 (CET)<br />
<br />
<br />
I have been under one heck of a rough time the last few months. Sorry for the lack of updates. Someone hunted me down through my personal website and reminded me I had an obligation here. If anyone needs to employ a telecommuting linux hacker, let me know! --[[User:Jdarby|jdarby]] 05:26, 7 Sep 2005 (CEST)</div>Jdarbyhttps://www.coreboot.org/index.php?title=Talk:Supported_Motherboards/old&diff=1121Talk:Supported Motherboards/old2005-03-02T19:26:34Z<p>Jdarby: </p>
<hr />
<div>I'm filling in blanks for Tyan mainboards as an example, mostly because I know how to navigate the website. --[[User:Jdarby|jdarby]] 23:31, 1 Mar 2005 (CET)<br />
<br />
I'll work on this more tomorrow, I've got to get home. :) --[[User:Jdarby|jdarby]] 00:04, 2 Mar 2005 (CET)<br />
<br />
<br />
then the page will be too long. YH<br />
<br />
I am happy with the idea of providing too much information over too little. I threw in some extra pieces that if populated might help people make shopping decisions, which in my position (as someone who requests a lot of hardware per year), would be very useful. Be back tomorrow. --[[User:Jdarby|jdarby]] 00:10, 2 Mar 2005 (CET)<br />
<br />
I just wanted to note: I have a lot of downtime at the office right now, which is why I'm working on this. :) --[[User:Jdarby|jdarby]] 00:13, 2 Mar 2005 (CET)<br />
<br />
This is going really great so far. Thanks everyone for helping fill in the blanks. :) --[[User:Jdarby|jdarby]] 13:06, 2 Mar 2005 (CET)<br />
<br />
If it is too long, we can still clear out the non interesting lines (a lot of them with (???) in them that are there as an example now) and we can split the whole page up into one page per architecture, or one per vendor, or whatever.. --[[User:Stepan|Stepan]] 13:10, 2 Mar 2005 (CET)<br />
<br />
<br />
If you add a board, it would be great to also add production status. I'm going to fill in the blanks on the rest of the Tyan motherboards right now, then start working on other makes I can find specs for, but if you add a board you know is no longer being sold or marketed, adding "(Out of Production)" to the title would be helpful to people looking to buy equipment. --[[User:Jdarby|jdarby]] 15:56, 2 Mar 2005 (CET)<br />
<br />
<br />
I am out, likely for the rest of the day, doing my actual day job. I'm planning on getting back to this tonight or tomorrow. --[[User:Jdarby|jdarby]] 20:26, 2 Mar 2005 (CET)</div>Jdarbyhttps://www.coreboot.org/index.php?title=Welcome_to_coreboot&diff=170Welcome to coreboot2005-03-02T15:48:48Z<p>Jdarby: </p>
<hr />
<div>Welcome to the LinuxBIOS Wiki.<br />
<br />
LinuxBIOS is an Open Source project aimed at replacing the normal BIOS with a little bit of hardware initialization and a compressed Linux kernel that can be booted from a cold start. The project was started as part of clustering research work in the Cluster Reseach Lab at the Advanced Computing Laboratory at Los Alamos National Laboratory. The primary motivation behind the project was the desire to have the operating system gain control of a cluster node from power on. Other beneficial consequences of using LinuxBIOS include needing only two working motors to boot (cpu fan and power supply), fast boot times (current fastest is 3 seconds), and freedom from proprietary (buggy) BIOS code, to name a few. These secondary benefits are numerous and have helped gain support from many vendors in both the high performance computing as well as embedded computing markets.<br />
<br />
[[MB supported in freebios v2]] (Unfinished re-organization: [[Supported Motherboards]])<br />
<br />
[[Download freebios v2]]<br />
<br />
[[Payloads]]<br />
<br />
[[FAQ]]<br />
<br />
[[Configuration Options]] (Unfinished work in progress)<br />
<br />
[[Port Guides]]<br />
<br />
[[News]]<br />
<br />
[[Mailinglist]]<br />
<br />
[[Contributors]]<br />
<br />
[[Products]]</div>Jdarbyhttps://www.coreboot.org/index.php?title=Talk:Supported_Motherboards/old&diff=189Talk:Supported Motherboards/old2005-03-02T14:56:27Z<p>Jdarby: </p>
<hr />
<div>I'm filling in blanks for Tyan mainboards as an example, mostly because I know how to navigate the website. --[[User:Jdarby|jdarby]] 23:31, 1 Mar 2005 (CET)<br />
<br />
I'll work on this more tomorrow, I've got to get home. :) --[[User:Jdarby|jdarby]] 00:04, 2 Mar 2005 (CET)<br />
<br />
<br />
then the page will be too long. YH<br />
<br />
I am happy with the idea of providing too much information over too little. I threw in some extra pieces that if populated might help people make shopping decisions, which in my position (as someone who requests a lot of hardware per year), would be very useful. Be back tomorrow. --[[User:Jdarby|jdarby]] 00:10, 2 Mar 2005 (CET)<br />
<br />
I just wanted to note: I have a lot of downtime at the office right now, which is why I'm working on this. :) --[[User:Jdarby|jdarby]] 00:13, 2 Mar 2005 (CET)<br />
<br />
This is going really great so far. Thanks everyone for helping fill in the blanks. :) --[[User:Jdarby|jdarby]] 13:06, 2 Mar 2005 (CET)<br />
<br />
If it is too long, we can still clear out the non interesting lines (a lot of them with (???) in them that are there as an example now) and we can split the whole page up into one page per architecture, or one per vendor, or whatever.. --[[User:Stepan|Stepan]] 13:10, 2 Mar 2005 (CET)<br />
<br />
<br />
If you add a board, it would be great to also add production status. I'm going to fill in the blanks on the rest of the Tyan motherboards right now, then start working on other makes I can find specs for, but if you add a board you know is no longer being sold or marketed, adding "(Out of Production)" to the title would be helpful to people looking to buy equipment. --[[User:Jdarby|jdarby]] 15:56, 2 Mar 2005 (CET)</div>Jdarbyhttps://www.coreboot.org/index.php?title=Talk:Supported_Motherboards/old&diff=139Talk:Supported Motherboards/old2005-03-02T12:06:35Z<p>Jdarby: </p>
<hr />
<div>I'm filling in blanks for Tyan mainboards as an example, mostly because I know how to navigate the website. --[[User:Jdarby|jdarby]] 23:31, 1 Mar 2005 (CET)<br />
<br />
I'll work on this more tomorrow, I've got to get home. :) --[[User:Jdarby|jdarby]] 00:04, 2 Mar 2005 (CET)<br />
<br />
<br />
then the page will be too long. YH<br />
<br />
I am happy with the idea of providing too much information over too little. I threw in some extra pieces that if populated might help people make shopping decisions, which in my position (as someone who requests a lot of hardware per year), would be very useful. Be back tomorrow. --[[User:Jdarby|jdarby]] 00:10, 2 Mar 2005 (CET)<br />
<br />
I just wanted to note: I have a lot of downtime at the office right now, which is why I'm working on this. :) --[[User:Jdarby|jdarby]] 00:13, 2 Mar 2005 (CET)<br />
<br />
This is going really great so far. Thanks everyone for helping fill in the blanks. :) --[[User:Jdarby|jdarby]] 13:06, 2 Mar 2005 (CET)</div>Jdarbyhttps://www.coreboot.org/index.php?title=User:Jdarby&diff=1122User:Jdarby2005-03-02T03:42:27Z<p>Jdarby: </p>
<hr />
<div>All of the information you would ever actually care to know about me is available at my personal website: [http://windex.org here.]<br />
<br />
If you need to contact me, you can do so at one of the following e-mail addresses:<br />
<br />
[mailto:jdarby@powercom.net jdarby@powercom.net]<br />
<br />
[mailto:windex@windex.org windex@windex.org]<br />
<br />
Both are checked frequently throughout the day.</div>Jdarbyhttps://www.coreboot.org/index.php?title=User:Jdarby&diff=121User:Jdarby2005-03-02T03:41:30Z<p>Jdarby: </p>
<hr />
<div>All of the information you would ever actually care to know about me is available at my personal website: [http://windex.org here.]<br />
<br />
If you need to contact me, you can do so at one of the following e-mail addresses:<br />
<br />
mailto:jdarby@powercom.net<br />
mailto:windex@windex.org<br />
<br />
Both are checked frequently throughout the day.</div>Jdarbyhttps://www.coreboot.org/index.php?title=Talk:Supported_Motherboards/old&diff=137Talk:Supported Motherboards/old2005-03-01T23:13:58Z<p>Jdarby: </p>
<hr />
<div>I'm filling in blanks for Tyan mainboards as an example, mostly because I know how to navigate the website. --[[User:Jdarby|jdarby]] 23:31, 1 Mar 2005 (CET)<br />
<br />
I'll work on this more tomorrow, I've got to get home. :) --[[User:Jdarby|jdarby]] 00:04, 2 Mar 2005 (CET)<br />
<br />
<br />
then the page will be too long. YH<br />
<br />
I am happy with the idea of providing too much information over too little. I threw in some extra pieces that if populated might help people make shopping decisions, which in my position (as someone who requests a lot of hardware per year), would be very useful. Be back tomorrow. --[[User:Jdarby|jdarby]] 00:10, 2 Mar 2005 (CET)<br />
<br />
I just wanted to note: I have a lot of downtime at the office right now, which is why I'm working on this. :) --[[User:Jdarby|jdarby]] 00:13, 2 Mar 2005 (CET)</div>Jdarbyhttps://www.coreboot.org/index.php?title=Talk:Supported_Motherboards/old&diff=108Talk:Supported Motherboards/old2005-03-01T23:10:57Z<p>Jdarby: </p>
<hr />
<div>I'm filling in blanks for Tyan mainboards as an example, mostly because I know how to navigate the website. --[[User:Jdarby|jdarby]] 23:31, 1 Mar 2005 (CET)<br />
<br />
I'll work on this more tomorrow, I've got to get home. :) --[[User:Jdarby|jdarby]] 00:04, 2 Mar 2005 (CET)<br />
<br />
<br />
then the page will be too long. YH<br />
<br />
I am happy with the idea of providing too much information over too little. I threw in some extra pieces that if populated might help people make shopping decisions, which in my position (as someone who requests a lot of hardware per year), would be very useful. Be back tomorrow. --[[User:Jdarby|jdarby]] 00:10, 2 Mar 2005 (CET)</div>Jdarbyhttps://www.coreboot.org/index.php?title=Talk:Supported_Motherboards/old&diff=102Talk:Supported Motherboards/old2005-03-01T23:04:59Z<p>Jdarby: </p>
<hr />
<div>I'm filling in blanks for Tyan mainboards as an example, mostly because I know how to navigate the website. --[[User:Jdarby|jdarby]] 23:31, 1 Mar 2005 (CET)<br />
<br />
I'll work on this more tomorrow, I've got to get home. :) --[[User:Jdarby|jdarby]] 00:04, 2 Mar 2005 (CET)</div>Jdarbyhttps://www.coreboot.org/index.php?title=Talk:Supported_Motherboards/old&diff=100Talk:Supported Motherboards/old2005-03-01T22:31:17Z<p>Jdarby: </p>
<hr />
<div>I'm filling in blanks for Tyan mainboards as an example, mostly because I know how to navigate the website. --[[User:Jdarby|jdarby]] 23:31, 1 Mar 2005 (CET)</div>Jdarbyhttps://www.coreboot.org/index.php?title=Welcome_to_coreboot&diff=142Welcome to coreboot2005-03-01T22:10:47Z<p>Jdarby: </p>
<hr />
<div>Welcome to the LinuxBIOS Wiki.<br />
<br />
LinuxBIOS is an Open Source project aimed at replacing the normal BIOS with a little bit of hardware initialization and a compressed Linux kernel that can be booted from a cold start. The project was started as part of clustering research work in the Cluster Reseach Lab at the Advanced Computing Laboratory at Los Alamos National Laboratory. The primary motivation behind the project was the desire to have the operating system gain control of a cluster node from power on. Other beneficial consequences of using LinuxBIOS include needing only two working motors to boot (cpu fan and power supply), fast boot times (current fastest is 3 seconds), and freedom from proprietary (buggy) BIOS code, to name a few. These secondary benefits are numerous and have helped gain support from many vendors in both the high performance computing as well as embedded computing markets.<br />
<br />
[[MB supported in freebios v2]] (Unfinished re-organization: [[Supported Motherboards]])<br />
<br />
[[Download freebios v2]]<br />
<br />
[[Payloads]]<br />
<br />
[[FAQ]]<br />
<br />
[[Port Guides]]<br />
<br />
[[News]]</div>Jdarbyhttps://www.coreboot.org/index.php?title=Talk:MB_supported_in_freebios_v2&diff=85Talk:MB supported in freebios v22005-03-01T22:06:30Z<p>Jdarby: </p>
<hr />
<div>Is it okay to modify this page to reflect the following hiarchy:<br />
<br />
*Chipset Vendor<br />
**Chipset<br />
***Status<br />
***Known Working Motherboards<br />
<br />
?<br />
<br />
Or does this not make sense to do this way?<br />
<br />
Thanks,<br />
<br />
--[[User:Jdarby|jdarby]] 21:59, 1 Mar 2005 (CET)<br />
<br />
then it should be changed to Chipset suppported. that is another matrix.<br />
YH<br />
<br />
Okay, so how about doing one page for supported motherboards, like this:<br />
<br />
*Motherboard Vendor<br />
**Motherboard<br />
***Chipset<br />
***Location in source tree<br />
***Status<br />
****Working perpherials<br />
****Known broken perpherials<br />
****Diffrences between revisions<br />
*****Working/known broken perpherials (per revision)<br />
***Sample configuration(s)<br />
***Motherboard specific configuration items<br />
***Build tutorial<br />
<br />
And another one for chipsets as described above?<br />
<br />
Does that make more sense?<br />
<br />
--[[User:Jdarby|jdarby]] 23:06, 1 Mar 2005 (CET)</div>Jdarbyhttps://www.coreboot.org/index.php?title=Talk:Payloads&diff=2076Talk:Payloads2005-03-01T21:02:26Z<p>Jdarby: </p>
<hr />
<div>This page should likely have detailed information on how to install payloads into the image, too. I barely know enough to get it working on my own equipment, let alone to help out here. --[[User:Jdarby|jdarby]] 22:02, 1 Mar 2005 (CET)</div>Jdarbyhttps://www.coreboot.org/index.php?title=Talk:MB_supported_in_freebios_v2&diff=79Talk:MB supported in freebios v22005-03-01T21:00:22Z<p>Jdarby: </p>
<hr />
<div>Is it okay to modify this page to reflect the following hiarchy:<br />
<br />
*Chipset Vendor<br />
**Chipset<br />
***Status<br />
***Known Working Motherboards<br />
<br />
?<br />
<br />
Or does this not make sense to do this way?<br />
<br />
Thanks,<br />
<br />
--[[User:Jdarby|jdarby]] 21:59, 1 Mar 2005 (CET)</div>Jdarbyhttps://www.coreboot.org/index.php?title=Talk:MB_supported_in_freebios_v2&diff=77Talk:MB supported in freebios v22005-03-01T20:59:56Z<p>Jdarby: </p>
<hr />
<div>Is it okay to modify this page to reflect the following hiarchy:<br />
<br />
Chipset Vendor<br />
Chipset<br />
Status<br />
Known Working Motherboards<br />
<br />
?<br />
<br />
Or does this not make sense to do this way?<br />
<br />
Thanks,<br />
<br />
--[[User:Jdarby|jdarby]] 21:59, 1 Mar 2005 (CET)</div>Jdarbyhttps://www.coreboot.org/index.php?title=Download_coreboot&diff=961Download coreboot2005-03-01T20:56:09Z<p>Jdarby: </p>
<hr />
<div>The CVS repository is maintained at SourceForge.net (project name "FreeBIOS"). A daily snapshot of the entire source tree is created nightly. <br />
<br />
* [http://cvs.sourceforge.net/cvstarballs/freebios-cvsroot.tar.bz2 Download latest daily snapshot from CVS]<br />
<br />
<br />
Or, to use CVS directly: <br />
<br />
<code>% cvs -d:pserver:anonymous@cvs.freebios.sourceforge.net:/cvsroot/freebios login</code><br />
<br />
Hit return when it asks you for a password (no password needed). Then checkout (or update) the freebios2 source tree: <br />
<br />
<code>% cvs -z3 -d:pserver:anonymous@cvs.freebios.sourceforge.net:/cvsroot/freebios co freebios2</code><br />
<br />
<br />
There is an archive of daily snapshots available at snapshots.linuxbios.org. There is a .bz2 tar file that gets updated when the CVS changes. Older snapshots are maintained as well. <br />
<br />
* [http://snapshots.linuxbios.org/ Download snapshots]<br />
<br />
<br />
You can also browse the CVS source tree directly using the link below.<br />
<br />
* [http://cvs.sourceforge.net/viewcvs.py/freebios/ Browse CVS source code tree]</div>Jdarbyhttps://www.coreboot.org/index.php?title=Download_coreboot&diff=76Download coreboot2005-03-01T20:54:42Z<p>Jdarby: Simple formatting changes, some textual changes to prevent repeating information?</p>
<hr />
<div>The CVS repository is maintained at SourceForge.net (project name "FreeBIOS"). A daily snapshot of the entire source tree is created nightly. <br />
<br />
* [http://cvs.sourceforge.net/cvstarballs/freebios-cvsroot.tar.bz2 Download latest daily snapshot from CVS]<br />
<br />
Or, to use CVS directly: <br />
<br />
<code>% cvs -d:pserver:anonymous@cvs.freebios.sourceforge.net:/cvsroot/freebios login</code><br />
<br />
Hit return when it asks you for a password (no password needed). Then checkout (or update) the freebios2 source tree: <br />
<br />
<code>% cvs -z3 -d:pserver:anonymous@cvs.freebios.sourceforge.net:/cvsroot/freebios co freebios2</code><br />
<br />
There is an archive of daily snapshots available at snapshots.linuxbios.org. There is a .bz2 tar file that gets updated when the CVS changes. Older snapshots are maintained as well. <br />
<br />
* [http://snapshots.linuxbios.org/ Download snapshots]<br />
<br />
* [http://cvs.sourceforge.net/viewcvs.py/freebios/ Browse CVS source code tree]</div>Jdarbyhttps://www.coreboot.org/index.php?title=Talk:FAQ&diff=2069Talk:FAQ2005-03-01T20:45:00Z<p>Jdarby: </p>
<hr />
<div>Ok, as of now, the original page has been wikiized and looks sane inside the wiki. I'm going to move on, but I left some notes that start with '(jdarby:' in a few places where information is lacking or links should be present -- I am sure I did not find all the spots, just a few. I changed the formatting of a few areas slightly, but hopefully its now more readable. --[[User:Jdarby|jdarby]] 21:25, 1 Mar 2005 (CET)<br />
<br />
Note for the future: This page should be re-organized and the motherboard/chipset specific information should be seperated from the rest into smaller subsections. The information in the e-mails should also be cited and reformed into a more general purpose document instead of quoted text (like the testbios faq), but I don't know enough about what the contents are describing to do so. --[[User:Jdarby|jdarby]] 21:45, 1 Mar 2005 (CET)</div>Jdarbyhttps://www.coreboot.org/index.php?title=FAQ&diff=90FAQ2005-03-01T20:42:31Z<p>Jdarby: fixed the last of the formatting problems in the testbios faq (to the best of my ability inside a wiki. oi!)</p>
<hr />
<div>== General ==<br />
<br />
=== What is LinuxBIOS? ===<br />
<br />
LinuxBIOS aims to replace the normal BIOS found on PCs, Alphas, and other machines with a Linux kernel that can boot Linux from a cold start. LinuxBIOS is primarily Linux - about 10 lines of patches to the current Linux kernel. Additionally, the startup code - about 500 lines of assembly and 5000 lines of C - executes 16 instructions to get into 32-bit mode and then performs DRAM and other hardware initialization required before Linux can take over. <br />
<br />
Our primary motivation for the project was maintenance of large clusters, but not surprisingly interest and contributions have come from people with varying backgrounds. <br />
<br />
=== Why do we need LinuxBIOS? ===<br />
<br />
Current PCs used as cluster nodes depend on a vendor-supplied BIOS for booting. The BIOS in turn relies on inherently unreliable devices such as floppy disks and hard drives to boot the operating system. In addition, current BIOS software is unable to accommodate non-standard hardware making it difficult to support experimental work. The BIOS is slow and often erroneous and redundant and, most importantly, maintenance is a nightmare. Imagine walking around with a keyboard and monitor to every one of the 128 nodes in a cluster to change one BIOS setting. <br />
<br />
The LinuxBIOS gunzip's the Linux kernel straight out of NVRAM and essentially requires no moving parts other than the fan. It does a minimal amount of hardware initialization before jumping to the kernel start and lets Linux do the rest. As a result, it is much faster (current record 3 seconds), which has sparked interest in the consumer electronics community as well. Moreover, updates can be performed over the network. <br />
<br />
Using a real operating system to boot another operating system provides much greater flexibility than using a simple netboot program or the BIOS. Because Linux is the boot mechanism, it can boot over standard Ethernet or over other interconnects such as Myrinet, Quadrics, or SCI. It can use SSH connections to load the kernel, or it can use the InterMezzo caching file system or traditional NFS. Cluster nodes can be as simple as they need to be - perhaps as simple as a CPU and memory, no disk, no floppy, and no file system. The nodes will be much less autonomous thus making them easier to maintain. <br />
<br />
=== Who is working on LinuxBIOS? ===<br />
<br />
The LinuxBIOS project was started in the winter of 1999 in the Advanced Computing Laboratory at Los Alamos National Laboratory by Ron Minnich. Two undergraduate students, James Hendricks and Dale Webster spent their winter vacation putting together the proof of concept implementation. <br />
<br />
Since then, a long list of people have contributed both in discussions and actual code. See our contributors page for details. Please don't be shy and let us know if you are missing from the list. It's not a purposeful omission, just an unfortunate mistake. <br />
<br />
=== Who is funding LinuxBIOS? ===<br />
<br />
The LinuxBIOS project is funded by the Los Alamos Computer Science Institute and the Department of Energy's Office of Science. <br />
<br />
=== Will LinuxBIOS work on my machine? ===<br />
<br />
See the status page for which mainboards are supported. Also, see the products page for a list of vendors selling products running LinuxBIOS. <br />
<br />
=== What commercial products use LinuxBIOS? ===<br />
<br />
See the products page. <br />
<br />
=== How can I help with LinuxBIOS? ===<br />
<br />
Contact [[User:Rminnich|Ron Minnich]] for projects related to LinuxBIOS. <br />
<br />
== Developer ==<br />
<br />
=== Where is the mailing list archived? ===<br />
<br />
The best archive out there is at the University of Maryland. (jdarby: can someone hunt out this url? I don't know it offhand.)<br />
<br />
In addition, we've pieced together an archive that dates back to about the beginning of 2000 (including messages that were going to the freebios and openbios mailing lists). <br />
<br />
=== Where do I get the code? ===<br />
<br />
See the [[Download_freebios_v2|download page]].<br />
<br />
=== How do I build? ===<br />
<br />
See the documentation. For help generating a config file, see Generate a config file. (jdarby: this needs to be wikiized)<br />
<br />
=== Why is the code so complicated and what can I do to make it easier? ===<br />
<br />
The reason is the complexity of the problem. We support a lot of hardware, and a given chip on a given board will most likely not be configured quite the same as the same chip on some other board. <br />
<br />
To help make code navigation easier, pick a target and build that target. Then, in the build directory, type make tags or make etags to get your favorite tags file. <br />
<br />
=== What chipsets are supported? ===<br />
<br />
See status for the most up-to-date info.. (jdarby: this needs to be wikiized)<br />
<br />
=== What is this POST card thing? ===<br />
<br />
A POST card will save your life. The term POST means Power On Self Test and comes from the original IBM specifications for the BIOS. Port 80 is a pre-defined port to which programs can output a byte. The POST card displays the byte in hex on its 2 digit display. We use a lot of POST codes in LinuxBIOS, so if you can tell us the POST code you see, we will have some idea of what happened. <br />
<br />
If your LinuxBIOS machine is working properly, you will see it count up from 0xd0 to 0xd9 (while it is gunzipping the kernel) and then display 0x98 (Linux idle loop). <br />
<br />
=== How do I contribute my changes? ===<br />
<br />
Any one without commit privileges (which is most of you) need to get changes approved by Ron Minnich. <br />
<br />
=== How do I re-flash the BIOS? ===<br />
<br />
Download the appropriate flash update utility. Build the romimage as explained above and use the flash update utility to update the BIOS. Be warned that not all update utilities allow you to load your own BIOS image. For example, Intel decided to disallow it for the MS440GX mainboard (probably after hearing about us!) Here are some mainboard specific directions. <br />
<br />
SiS 630/950 M/Bs<br />
Ollie Lho provided us with flash utilities for these boards under freebios/util/sis. <br />
flash_on turns on the flash write enable. This needs to be run before loading the DoC drivers. <br />
flash_rom allows you to use your SiS 630/950 M/Bs as a flash programmer. It currently supports JEDEC flash parts, AMD am29f040b models, MXIC MX29F002 models, and SST28SF040C models. <br />
Intel L440GX<br />
Get the System Update Package directly from Intel. mcopy the ten files created from running make phlash onto the Intel flash burner disk and use the update utility to burn the BIOS. To restore the original BIOS, set the recovery boot jumper on the motherboard, put the floppy in, and it will load and reflash the original BIOS. <br />
How do I actually burn a flash ROM? <br />
<br />
Buy your favorite flash burner (we use a Needham Electronics EMP 30). Use make floppy to create the romimage and copy it to a floppy. Then use the provided software to burn the flash. <br />
<br />
=== How do I burn a DoC? ===<br />
<br />
Currently, only the DoC Millennium is supported. See the documentation. <br />
<br />
=== Can I do any serious damage mucking around with this stuff? ===<br />
<br />
Any time you stick your hand into an open machine while the power is on, you're risking life and limb. That said, there are also some other not-so-nice things that can happen if you mess up (not that we would know). <br />
<br />
* Incorrect inserstion of the flash (1 casualty) <br />
* Incorrect jumper settings (1 casualty) <br />
* Aggressive and/or inappropriate use of metal objects such as screwdrivers (2 casualties) <br />
* Miscellaneous miswirings and mishandlings (3+ casualties) <br />
<br />
=== A note on electrostatic discharge (ESD) and ESD protection (thanks to Bari Ari) ===<br />
<br />
ESD can damage disk drives, boards, DoC's and other parts. The majority of the time, ESD events cause the component to degrade, but not fail testing procedures, resulting in failure at a later date. Because components do not fail immediately, technicians often underestimate the cost of not using ESD prevention measures. Provide at minimum some ESD protection by wearing an antistatic wrist strap attached to the chassis ground on your system when handling parts. <br />
<br />
Always handle boards carefully. They can be extremely sensitive to ESD. Hold boards only by their edges. After removing a board from its protective wrapper or from the system, place it component side up on a grounded, static free surface. Use a conductive foam pad if available. Do not slide the board over any surface. <br />
<br />
To further reduce the chances of ESD, you should create an ESD safe workstation that includes at minimum: <br />
<br />
* Conductive rubber mat, with a lead wire that can be connected to a metal surface to create a ground. <br />
<br />
* ESD wrist strap, which has a resistor inside the strap and a lead wire that can be connected to a metal surface as a ground. The grounding wire on the wrist strap should have between 1 and 10 Megaohms of resistance. The resistor should protect you in case you come in contact with a voltage source. If the resistor is bad or not included, the wrist strap is useless. An accidental shock could be serious and even deadly! <br />
<br />
* Table or workspace that is clean, clear of dust, and away from electrical machinery or other equipment that generates electrical currents. <br />
<br />
The idea is to ensure that all components you are going to interact with have the same charge. By connecting everything to the computer case, you ensure that the components of the case, the chair, and your body all have the same charge. If every object has the same charge, the electrons will not jump from one object to another minimizing the risk of ESD damage. <br />
<br />
=== How do I put a filesystem on DoC? ===<br />
OK, here is a little HOWTO on how to set up MTD with a file system. <br />
<br />
This is a m810lmr, booting out of DoC. I am going to reserve the first 2M for kernel. So the layout will be the first 2M for linuxbios and kernel, and 6M for a file system. Kernel is 2.4.17, with linux-2.4.17-sis.patch from linuxbios source tree, and config-2.4.17-sis from the linuxbios source tree. Mainboard is the pcchips m810lmr. <br />
<br />
So I: <br />
modprobe doc2001 <br />
modprobe docprobe <br />
dmesg <br />
<br />
which shows: <br />
<br />
DiskOnChip Millennium found at address 0xFFFC8000 <br />
Flash chip found: Manufacturer ID: 98, Chip ID: E6 (Toshiba TC58V64AFT/DC) <br />
1 flash chips found. Total DiskOnChip size: 8 MiB <br />
mtd: Giving out device 0 to DiskOnChip Millennium <br />
Ignoring DiskOnChip Millennium at 0xFFFCA000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFCC000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFCE000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD0000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD2000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD4000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD6000 - already configured <br />
(etc..) <br />
Now I need MTD utilities. <br />
So I: <br />
cvs -d :pserver:anoncvs@cvs.infradead.org:/home/cvs login <br />
CVS password: <br />
<br />
(password is anoncvs) <br />
Then: <br />
cvs -d :pserver:anoncvs@cvs.infradead.org:/home/cvs co mtd <br />
<br />
Forget the drivers and such, you don't need them. What you need is the tools. <br />
cd mtd/tools <br />
make <br />
<br />
Go ahead and copy the executables somewhere handy, you'll need them. <br />
<br />
Now we need to make the last 6M into a "disk". We need to format it. The tool is nftl_format, so:<br />
<br />
[root@carly util]# ./nftl_format <br />
$Id: nftl_format.c,v 1.17 2001/08/29 14:28:48 dwmw2 Exp $ <br />
Usage: ./nftl_format [ []] <br />
[root@carly util]# expr 2048 \* 1024 <br />
2097152 <br />
[root@carly util]# expr 6 \* 1024 \* 1024 <br />
6291456 <br />
[root@carly util]# ./nftl_format /dev/mtd0 2097152 6291456 <br />
$Id: nftl_format.c,v 1.17 2001/08/29 14:28:48 dwmw2 Exp $ <br />
Phase 1. Checking and erasing Erase Zones from 0x00200000 to 0x00800000 <br />
Phase 2.a Writing NFTL Media Header and Bad Unit Table <br />
Phase 2.b Writing Spare NFTL Media Header and Spare Bad Unit Table <br />
Phase 3. Writing Unit Control Information to each Erase Unit <br />
<br />
<br />
we now have a formatted disk in there. We can now partition it. <br />
<br />
[root@carly util]# modprobe nftl <br />
<br />
dmesg shows LOTS of errors, since this was never partitioned ... <br />
<br />
Also, if you don't have /dev/nftla, <br />
<br />
[root@carly util]# mknod /dev/nftla b 93 0 <br />
<br />
<br />
Don't use the script just yet, it makes /dev/nftla as b 93 16, which is the wrong unit #. <br />
<br />
now fdisk /dev/nftla <br />
<br />
[root@carly util]# fdisk /dev/nftlA <br />
Command (m for help): n <br />
Command action <br />
e extended <br />
p primary partition (1-4) <br />
p <br />
Partition number (1-4): 1 <br />
First cylinder (1-1, default 1): <br />
Using default value 1 <br />
Command (m for help): p <br />
Disk /dev/nftlA: 1 heads, 12224 sectors, 1 cylinders <br />
Units = cylinders of 12224 * 512 bytes <br />
Device Boot Start End Blocks Id System <br />
/dev/nftlA1 1 1 6111+ 83 Linux <br />
Partition 1 has different physical/logical endings: <br />
phys=(768, 0, 0) logical=(0, 0, 12224) <br />
Partition 1 does not end on cylinder boundary: <br />
phys=(768, 0, 0) should be (768, 0, 12224) <br />
Command (m for help): w <br />
The partition table has been altered! <br />
Calling ioctl() to re-read partition table. <br />
WARNING: If you have created or modified any DOS 6.x partitions, please see the fdisk manual page for additional information. <br />
Syncing disks. <br />
[root@carly util]# mknod /dev/nftlA1 b 93 1 <br />
[root@carly util]# mke2fs /dev/nftlA1 <br />
mke2fs 1.23, 15-Aug-2001 for EXT2 FS 0.5b, 95/08/09 <br />
Filesystem label= <br />
OS type: Linux <br />
Block size=1024 (log=0) <br />
Fragment size=1024 (log=0) <br />
1528 inodes, 6111 blocks <br />
305 blocks (4.99%) reserved for the super user <br />
First data block=1 <br />
1 block group <br />
8192 blocks per group, 8192 fragments per group <br />
1528 inodes per group <br />
Writing inode tables: done <br />
Writing superblocks and filesystem accounting information: done <br />
<br />
This filesystem will be automatically checked every 37 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. <br />
<br />
[root@carly util]# mount /dev/nftlA1 /mnt <br />
[root@carly util]# cd /mnt <br />
[root@carly mnt]# df . <br />
Filesystem 1k-blocks Used Available Use% Mounted on <br />
/dev/nftlA1 5915 13 5597 1% /mnt <br />
[root@carly mnt]# <br />
<br />
and so you now have an ext2 file system on the DoC. <br />
<br />
(Above is from [[User:Rminnich|Ron Minnich]])<br />
<br />
=== How do I turn off embedded sis630 devices? ===<br />
<br />
From aip@cwlinux.com Mon Mar 25 08:54:07 2002 <br />
Date: Mon, 25 Mar 2002 22:07:54 +0800 <br />
From: Andrew Ip <br />
To: Kei Furuuchi <br />
Cc: linuxbios@lanl.gov <br />
Subject: Re: How to turn off unused pci device. <br />
Hi, <br />
> I have pcchips m758lmr which has audio chip besides sis630. <br />
> those functions in sis630 are not used in the motherboard. <br />
> But, the functions keep coming up. How do I turn off those? <br />
The following is from Nikolai Valdych previous message. Hope this help. <br />
-Andrew <br />
-- <br />
Andrew Ip <br />
Email: aip@cwlinux.com <br />
Actualy, it was pretty simple 0x7c00 - All devices enabled, You play with first 4 bits only. Cos there are 4 devices, so you have any combination of 4 bits. <br />
Set bit to 1 to turn off the device, bit 0 to enable it. <br />
This is the device list: <br />
Multimedia Audio controler <br />
Modem controler <br />
Ethernet sis930 controler <br />
USB controler. <br />
For example, to turn off Ethernet + USB it would be: <br />
0x7c0c -> 1100 in binary (first 4 bits) <br />
To turn off Multimedia audio : <br />
0x7c01 -> 0001 <br />
in binary and so on... maybe there are more detail, but this is enogh for me, Ollie, again thanks! <br />
nikolai <br />
p.s. though my modem is not yet working..... damn driver...... <br />
<br />
=== What is a PIRQ table? ===<br />
<br />
From Adam Sulmicki: <br />
<br />
I found beautfiul descrition of the BIOS implementation of the PIRQ in the red PCI book.<br />
<br />
I found the description of the $PIR data structure in the<br />
http://www.microsoft.com/hwdev/archive/BUSBIOS/pciirq.asp<br />
<br />
looking over linuxbios sources I see that it saves the $PIR data structure<br />
somewhere between 0xf0000 & 0x100000.<br />
<br />
so it seems I'll have to search for $PIR and then save it before copying<br />
over our bios. sigh. hoped for some fixed address in mem.<br />
<br />
-- <br />
Adam<br />
http://www.eax.com The Supreme Headquarters of the 32 bit registers<br />
<br />
=== How do I set up etherboot with LinuxBIOS? ===<br />
<br />
Note from Ron: I have edited this somewhat to remove Geode-specific items. <br />
<br />
Christer Weinigel writes: <br />
To: rminnich@lanl.gov<br />
Cc: linuxbios@lanl.gov<br />
Subject: Re: LinuxBIOS + Etherboot HOWTO?<br />
<br />
<br />
I had some trouble using LinuxBIOS + etherboot... <br />
<br />
<br />
My bad, I messed up and used mkelfImage-1.6 that I got from ftp.lnxi.com, when I realized that I ought to use the one from freebios/util everything started working. <br />
<br />
<br />
Here's what I did to get LinuxBIOS + Etherboot loading and booting a Linux kernel using TFTP. <br />
<br />
<br />
/Christer <br />
<br />
<br />
Get etherboot-5.0 from the CVS tree on etherboot.sourceforge.net. <br />
<br />
<br />
Modify etherboot-5.0/src/Config, comment out: <br />
<br />
# BIOS select don't change unless you know what you are doing<br />
#CFLAGS32+= -DPCBIOS<br />
<br />
<br />
<br />
and uncomment the following: <br />
<br />
# Options to make a version of Etherboot that will work under linuxBIOS.<br />
CFLAGS32+= -DLINUXBIOS -DCONFIG_TSC_CURRTICKS -DCONSOLE_SERIAL \<br />
-DCOMCONSOLE=0x3f8 -DCOMPRESERVE -DCONFIG_PCI_DIRECT -DELF_IMAGE <br />
<br />
<br />
<br />
Compile Etherboot to make an elf file for your ethernet card: <br />
<br />
make bin32/natsemi.elf<br />
<br />
<br />
<br />
Compile and install mkelfImage from freebios/util/mkelfImage. <br />
<br />
<br />
Create a bootimage to put on your TFTP server: <br />
<br />
mkelfImage --command-line="root=/dev/hda2 console=ttyS0,38400" \<br />
--kernel vmlinux -o /tftpboot/kernel<br />
<br />
<br />
<br />
Finally, make sure that your BOOT/DCHP server is answering and that the TFTP server is active. <br />
<br />
<br />
Tell LinuxBIOS to boot an elf Image, and tell LinuxBIOS where it is: <br />
<br />
option USE_ELF_BOOT=1<br />
<br />
<br />
<br />
I have placed natsemi.elf in the first 64k of my BIOS flash chip, and LinuxBIOS in the second 64k. <br />
<br />
insmod bios.o<br />
dd if=natsemi.elf of=/dev/bios bs=64k<br />
dd if=linuxbios.rom of=/dev/bios bs=64k seek=1<br />
<br />
<br />
<br />
Finally boot LinuxBIOS. <br />
<br />
=== How do I set GEODE video? ===<br />
<br />
From christer@weinigel.se Wed Nov 27 07:47:17 2002<br />
Date: 27 Nov 2002 10:55:01 +0100<br />
From: Christer Weinigel <br />
To: Adam Bezanson <br />
Cc: linuxbios@clustermatic.org<br />
Subject: Re: Geode Kernel Config <br />
<br />
"Adam Bezanson" writes:<br />
<br />
> I've got an Eval card from National Semi that contains<br />
> the SC1200. I'd like to try LinuxBios on it.<br />
> I've downloaded both the 2.4.18 and 2.4.19 kernels to start with.<br />
> What patches do I need to apply to the kernel?<br />
> Is there a config file I can use to configure the kernel, or<br />
> should I do it manually? <br />
<br />
A normal 2.4 Linux kernel will work fine as long as you compile for a<br />
586 CPU (CONFIG_M586), not Pentium or higher (CONFIG_M586TSC and up)<br />
since the TSC behaves a bit differently. <br />
<br />
If you want support for the watchdog or the GPIO pins in a 2.4 kernel,<br />
you can find an old patch from me at:<br />
<br />
http://groups.google.com/groups?selm=20020226015215.20118F5B%40acolyte.hack.org&oe=UTF-8&output=gplain<br />
<br />
An updated version of this patch has been included in Linux 2.5. Alan<br />
Cox' 2.5 kernel also has support for doing DMA on the SC1200 IDE<br />
controller; I don't know if there is a corresponding patch for 2.4. <br />
<br />
Other than that, take a look at the freebios/src/mainboard/nano/nano<br />
directory and make a copy of it. All you should have to do is to<br />
modify the Pin Multiplexing Register (PMR) and Miscellaneous Config<br />
Register (MCR) in the Config file and to modify the irq assignments.<br />
<br />
Depending on what you want to do, there are a few limitations with<br />
the current LinuxBIOS on the SC1200: <br />
<br />
There is no video support in LinuxBIOS itself, so you won't get<br />
any video until you have loaded the NatSemi Geode Linux<br />
framebuffer driver (can be found at www.linux4.tv under the<br />
heading SP1SC10 Platform Image).<br />
<br />
There is no SMM/VSA support at all, this means that anything<br />
relying on it won't work. What this means is that Audio won't<br />
work.<br />
<br />
Other than that everything works fine, IDE in PIO mode, the PCI bus,<br />
watchdog, GPIOs, everything.<br />
<br />
/Christer<br />
<br />
-- <br />
"Just how much can I get away with and still go to heaven?"<br />
<br />
Freelance consultant specializing in device driver programming for Linux <br />
Christer Weinigel http://www.weinigel.se<br />
_______________________________________________<br />
Linuxbios mailing list<br />
Linuxbios@clustermatic.org<br />
http://www.clustermatic.org/mailman/listinfo/linuxbios<br />
<br />
<br />
=== How do I set up testbios? ===<br />
<br />
From daubin@actuality-systems.com Wed Oct 6 10:23:10 2004<br />
Date: Tue, 5 Oct 2004 15:19:24 -0400<br />
From: Dave Aubin <br />
To: linuxbios@clustermatic.org<br />
Subject: RE: Testbios help with nvidia 6800Gt and simple how to<br />
<br />
I've taken the time to put together a simple testbios faq.<br />
I hope it is helpful. Feedback and additions are welcome. <br />
<br />
Thanks,<br />
Dave<br />
<br />
==== Testbios (vgabios) Faq ====<br />
<br />
Date: 10/5/2004<br />
Author(s): David Aubin daubin@actuality-systems.com<br />
<br />
Purpose: Testbios is an i386 emulator that sits on top of userspace linux. It's primary purpose is to provide program video rom's in to the cached memory area.<br />
<br />
===== Where to obtain testbios =====<br />
<br />
Testbios(vgabios) can be retrieved from the linuxbios/freebios source tree: [http://www.linuxbios.org/developer/download/index.html]<br />
<br />
===== Prerequisites =====<br />
<br />
You must have installed pci-utils<br />
* Get http://atrey.karlin.mff.cuni.cz/~mj/pciutils.shtml<br />
<br />
===== How to build testbios =====<br />
* cd freebios/util/vgabios<br />
* Edit ./Makefile and fill in the correct values for your environment (I build on a 64 AMD so my makefile looks like this)<br />
<br />
Begin ./Makefile for x64:<br />
CC = gcc<br />
ARCH := $(shell uname -m | sed -e s,i[3456789]86,i386,)<br />
INCLUDE = -I ../pciutils-2.1.11<br />
CFLAGS = -Wall -Ix86emu/include -O2 -g $(INCLUDE)<br />
<br />
INTOBJS = int10.o int15.o int16.o int1a.o inte6.o<br />
OBJECTS = testbios.o helper_exec.o helper_mem.o $(INTOBJS)<br />
LDFLAGS = -static-libgcc -static<br />
<br />
LIBS = x86emu/src/x86emu/libx86emu.a ../pciutils-2.1.11/lib/libpci.a<br />
<br />
# user space pci is the only option right now.<br />
OBJECTS += pci-userspace.o<br />
<br />
ifeq ($(shell if test "$(ARCH)" == "x86_64" ; then echo 1; fi), 1)<br />
CFLAGS +=-m32 -march=i386<br />
endif<br />
<br />
all: testbios<br />
<br />
testbios: $(OBJECTS) $(LIBS)<br />
$(CC) $(CFLAGS) -o testbios $(OBJECTS) $(LDFLAGS)<br />
$(LIBS)<br />
<br />
helper_exec.o: helper_exec.c test.h<br />
<br />
x86emu/src/x86emu/libx86emu.a:<br />
$(MAKE) -C x86emu/src/x86emu/ -f makefile.linux<br />
<br />
clean:<br />
$(MAKE) -C x86emu/src/x86emu/ -f makefile.linux clean<br />
rm -f *.o *~ testbios <br />
<br />
distclean: clean<br />
$(MAKE) -C x86emu/src/x86emu/ -f makefile.linux clean<br />
<br />
<br />
End ./Makefile<br />
<br />
* Edit ~vgabios/x86emu/src/x86emu/makefile.linux and fill in the correct values for your environment (I build on a 64 AMD so my makefile looks like this)<br />
<br />
Begin ~vgabios/x86emu/src/x86emu/makefile.linux:<br />
#############################################################################<br />
#<br />
# Realmode X86 Emulator Library<br />
#<br />
# Copyright (C) 1996-1999 SciTech Software, Inc.<br />
#<br />
#<br />
<nowiki>========================================================================</nowiki><br />
#<br />
# Permission to use, copy, modify, distribute, and sell this software and<br />
# its documentation for any purpose is hereby granted without fee,<br />
# provided that the above copyright notice appear in all copies and that<br />
# both that copyright notice and this permission notice appear in<br />
# supporting documentation, and that the name of the authors not be used<br />
# in advertising or publicity pertaining to distribution of the software<br />
# without specific, written prior permission. The authors makes no<br />
# representations about the suitability of this software for any purpose.<br />
# It is provided "as is" without express or implied warranty.<br />
#<br />
# THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,<br />
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO<br />
# EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR<br />
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF<br />
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR<br />
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR<br />
# PERFORMANCE OF THIS SOFTWARE.<br />
#<br />
#<br />
<nowiki>========================================================================</nowiki><br />
#<br />
# Descripton: Linux specific makefile for the x86emu library.<br />
#<br />
#############################################################################<br />
<br />
TARGETLIB = libx86emu.a<br />
<br />
<br />
OBJS=\<br />
debug.o \<br />
decode.o \<br />
fpu.o \<br />
ops.o \<br />
ops2.o \<br />
prim_ops.o \<br />
sys.o<br />
<br />
$(TARGETLIB): $(OBJS)<br />
ar rv $(TARGETLIB) $(OBJS)<br />
<br />
INCS = -I. -Ix86emu -I../../include<br />
CFLAGS += -D__DRIVER__ -DFORCE_POST -D_CEXPORT= -DNO_LONG_LONG -DDEBUG<br />
ARCH := $(shell uname -m | sed -e s,i[3456789]86,i386,)<br />
ifeq ($(shell if test "$(ARCH)" == "x86_64" ; then echo 1; fi), 1)<br />
CFLAGS +=-m32 -march=i386<br />
endif<br />
<br />
<br />
.c.o:<br />
# gcc -m32 -march=i386 -g -O -Wall -c $(CFLAGS) $(INCS) $*.c<br />
gcc -g -O -Wall -c $(CFLAGS) $(INCS) $*.c<br />
<br />
.cpp.o:<br />
# gcc -m32 -march=i386 -c $(CFLAGS) $(INCS) $*.cpp<br />
gcc -c $(CFLAGS) $(INCS) $*.cpp <br />
<br />
clean:<br />
rm -f *.a *.o<br />
<br />
validate: validate.o libx86emu.a<br />
gcc -o validate validate.o -lx86emu -L.<br />
<br />
End ~vgabios/x86emu/src/x86emu/makefile.linux<br />
<br />
* Once built you could have a 32bit testbios executable made. Depending on your embedded environment you might want to have it built shared as the above example makes it static. Just remove -static-libgcc -static from the LDFLAGS on ./Makefile if you wish to have it built shared.<br />
<br />
===== How to retrieve a good video bios =====<br />
There are sites that have video bios roms on their website. (I know of this one for nvidia cards: [http://whitebunny.demon.nl/hardware/chipset_nvidia.html])<br />
<br />
However you should be able to retrieve your own video bios as well with linux.<br />
* Boot up a machine with a commercial bios (not linux bios) with the video card you wish to work under linux bios.<br />
** From the command line enter:<br /><code>dd if=/dev/mem of=vgabios.bin skip=1536 count=128 or <br />dd if=/dev/mem of=vgabios.bin bs=1k count=64 skip=786432<br />This assumes you card's bios is cached in 0xc0000. You<br />can see where and how much your card's bios is using by<br />doing a cat iomem | grep "Video ROM"<br /></code><br />
*** dd Explained (man dd to learn more):<br />
**** if is the location to retrieve from.<br />
**** of is the output file (your rom image)<br />
**** skip jumps n blocks where the default n is 512 bytes<br />
**** count is how many blocks you wish to read<br />
**** bs is the block size<br />
** You now have a video bios image<br />
<br />
===== How to use testbios =====<br />
* Currently testbios only works from user space linux (10/4/04)<br />
* Example from a linux command line or script enter the following to get your video bios programmed:<br /><code>./testbios -s 65536 --abseg /dev/mem ./vgabios.bin</code><br />
** Testbios explained<br />
*** -s how much of the video bios is there<br />
*** --abseg where would you like to write this (/dev/mem default)<br />
*** filename of video bios<br />
*** -d diag mode <br />
**** How to get pci busdevfn<br />
**** lspci<br />
**** look for your video card<br />
***** Example:<br /><code>2:00:00<br />2 (00 << 3) | 00 = 0x200</code><br />
***** Example:<br /><code>00:12.0:<br />0 (12 << 3) | 0 = 0x90</code><br />
*** -t dump <br />
*** -c codesegment Where do you want to start, default is 0xc0000<br />
*** -b base Where do you want base to be default is 0xc000<br />
*** -i instruction pointer usually left off as the default<br />
<br />
==== Followup to Testbios FAQ ====<br />
-----Original Message-----<br />
From: linuxbios-admin@clustermatic.org<br />
[mailto:linuxbios-admin@clustermatic.org] On Behalf Of Dave Aubin<br />
Sent: Tuesday, October 05, 2004 2:22 PM<br />
To: Richard Smith<br />
Cc: linuxbios@clustermatic.org<br />
Subject: RE: Testbios help with nvidia 6800Gt and simple how to<br />
<br />
Hi,<br />
<br />
Thank you:) Yes, it was at 0xc0000-0xc7fff, which is only 32k.<br />
But the image I got from the windows tool was 64k (double 8000).<br />
Weird. I would like to stay away from window tools.<br />
The info you provided is nice. I wish there was a way for us To make<br />
a faq and we could add this to the testbios faq. There Is a lot of good<br />
info on the clustermatic list, but it is all Dispersed. <br />
Ron if I write a simple faq can you provide some mechanism to Allow<br />
updates to it?<br />
<br />
Thanks,<br />
Dave <br />
<br />
-----Original Message-----<br />
From: Richard Smith [mailto:rsmith@bitworks.com]<br />
Sent: Tuesday, October 05, 2004 2:16 PM<br />
To: Dave Aubin<br />
Cc: linuxbios@clustermatic.org<br />
Subject: Re: Testbios help with nvidia 6800Gt and simple how to<br />
<br />
Dave Aubin wrote:<br />
<br />
> It seems my dd returned an unusable binary. I found a good binary for<br />
<br />
> The nvidia card from here:<br />
> http://whitebunny.demon.nl/hardware/chipset_nvidia.html<br />
> <br />
<br />
I was wondering about your dd command that but I had not had a chance to<br />
respond yet.<br />
<br />
This is what I use:<br />
<br />
dd if=/dev/mem of=vbios.bin bs=1k count=64 skip=786432<br />
<br />
That will rip the bios from 0x0c0000. You can verify that you actually<br />
have bios there with<br />
<br />
'hd -s 0x0c0000 -n 256 /dev/mem'<br />
<br />
in some cases it may be located at 0x0e0000 rather than 0x0c0000.<br />
<br />
It should start with the 0x55aa (Little endian) or 0xaa55 (big endian)<br />
and futher on you should see some text identifying the bios.<br />
<br />
<br />
--<br />
Richard A. Smith<br />
<br />
<br />
_______________________________________________<br />
Linuxbios mailing list<br />
Linuxbios@clustermatic.org<br />
http://www.clustermatic.org/mailman/listinfo/linuxbios</div>Jdarbyhttps://www.coreboot.org/index.php?title=FAQ&diff=73FAQ2005-03-01T20:28:56Z<p>Jdarby: fixed formatting bugs in testbios faq section.</p>
<hr />
<div>== General ==<br />
<br />
=== What is LinuxBIOS? ===<br />
<br />
LinuxBIOS aims to replace the normal BIOS found on PCs, Alphas, and other machines with a Linux kernel that can boot Linux from a cold start. LinuxBIOS is primarily Linux - about 10 lines of patches to the current Linux kernel. Additionally, the startup code - about 500 lines of assembly and 5000 lines of C - executes 16 instructions to get into 32-bit mode and then performs DRAM and other hardware initialization required before Linux can take over. <br />
<br />
Our primary motivation for the project was maintenance of large clusters, but not surprisingly interest and contributions have come from people with varying backgrounds. <br />
<br />
=== Why do we need LinuxBIOS? ===<br />
<br />
Current PCs used as cluster nodes depend on a vendor-supplied BIOS for booting. The BIOS in turn relies on inherently unreliable devices such as floppy disks and hard drives to boot the operating system. In addition, current BIOS software is unable to accommodate non-standard hardware making it difficult to support experimental work. The BIOS is slow and often erroneous and redundant and, most importantly, maintenance is a nightmare. Imagine walking around with a keyboard and monitor to every one of the 128 nodes in a cluster to change one BIOS setting. <br />
<br />
The LinuxBIOS gunzip's the Linux kernel straight out of NVRAM and essentially requires no moving parts other than the fan. It does a minimal amount of hardware initialization before jumping to the kernel start and lets Linux do the rest. As a result, it is much faster (current record 3 seconds), which has sparked interest in the consumer electronics community as well. Moreover, updates can be performed over the network. <br />
<br />
Using a real operating system to boot another operating system provides much greater flexibility than using a simple netboot program or the BIOS. Because Linux is the boot mechanism, it can boot over standard Ethernet or over other interconnects such as Myrinet, Quadrics, or SCI. It can use SSH connections to load the kernel, or it can use the InterMezzo caching file system or traditional NFS. Cluster nodes can be as simple as they need to be - perhaps as simple as a CPU and memory, no disk, no floppy, and no file system. The nodes will be much less autonomous thus making them easier to maintain. <br />
<br />
=== Who is working on LinuxBIOS? ===<br />
<br />
The LinuxBIOS project was started in the winter of 1999 in the Advanced Computing Laboratory at Los Alamos National Laboratory by Ron Minnich. Two undergraduate students, James Hendricks and Dale Webster spent their winter vacation putting together the proof of concept implementation. <br />
<br />
Since then, a long list of people have contributed both in discussions and actual code. See our contributors page for details. Please don't be shy and let us know if you are missing from the list. It's not a purposeful omission, just an unfortunate mistake. <br />
<br />
=== Who is funding LinuxBIOS? ===<br />
<br />
The LinuxBIOS project is funded by the Los Alamos Computer Science Institute and the Department of Energy's Office of Science. <br />
<br />
=== Will LinuxBIOS work on my machine? ===<br />
<br />
See the status page for which mainboards are supported. Also, see the products page for a list of vendors selling products running LinuxBIOS. <br />
<br />
=== What commercial products use LinuxBIOS? ===<br />
<br />
See the products page. <br />
<br />
=== How can I help with LinuxBIOS? ===<br />
<br />
Contact [[User:Rminnich|Ron Minnich]] for projects related to LinuxBIOS. <br />
<br />
== Developer ==<br />
<br />
=== Where is the mailing list archived? ===<br />
<br />
The best archive out there is at the University of Maryland. (jdarby: can someone hunt out this url? I don't know it offhand.)<br />
<br />
In addition, we've pieced together an archive that dates back to about the beginning of 2000 (including messages that were going to the freebios and openbios mailing lists). <br />
<br />
=== Where do I get the code? ===<br />
<br />
See the [[Download_freebios_v2|download page]].<br />
<br />
=== How do I build? ===<br />
<br />
See the documentation. For help generating a config file, see Generate a config file. (jdarby: this needs to be wikiized)<br />
<br />
=== Why is the code so complicated and what can I do to make it easier? ===<br />
<br />
The reason is the complexity of the problem. We support a lot of hardware, and a given chip on a given board will most likely not be configured quite the same as the same chip on some other board. <br />
<br />
To help make code navigation easier, pick a target and build that target. Then, in the build directory, type make tags or make etags to get your favorite tags file. <br />
<br />
=== What chipsets are supported? ===<br />
<br />
See status for the most up-to-date info.. (jdarby: this needs to be wikiized)<br />
<br />
=== What is this POST card thing? ===<br />
<br />
A POST card will save your life. The term POST means Power On Self Test and comes from the original IBM specifications for the BIOS. Port 80 is a pre-defined port to which programs can output a byte. The POST card displays the byte in hex on its 2 digit display. We use a lot of POST codes in LinuxBIOS, so if you can tell us the POST code you see, we will have some idea of what happened. <br />
<br />
If your LinuxBIOS machine is working properly, you will see it count up from 0xd0 to 0xd9 (while it is gunzipping the kernel) and then display 0x98 (Linux idle loop). <br />
<br />
=== How do I contribute my changes? ===<br />
<br />
Any one without commit privileges (which is most of you) need to get changes approved by Ron Minnich. <br />
<br />
=== How do I re-flash the BIOS? ===<br />
<br />
Download the appropriate flash update utility. Build the romimage as explained above and use the flash update utility to update the BIOS. Be warned that not all update utilities allow you to load your own BIOS image. For example, Intel decided to disallow it for the MS440GX mainboard (probably after hearing about us!) Here are some mainboard specific directions. <br />
<br />
SiS 630/950 M/Bs<br />
Ollie Lho provided us with flash utilities for these boards under freebios/util/sis. <br />
flash_on turns on the flash write enable. This needs to be run before loading the DoC drivers. <br />
flash_rom allows you to use your SiS 630/950 M/Bs as a flash programmer. It currently supports JEDEC flash parts, AMD am29f040b models, MXIC MX29F002 models, and SST28SF040C models. <br />
Intel L440GX<br />
Get the System Update Package directly from Intel. mcopy the ten files created from running make phlash onto the Intel flash burner disk and use the update utility to burn the BIOS. To restore the original BIOS, set the recovery boot jumper on the motherboard, put the floppy in, and it will load and reflash the original BIOS. <br />
How do I actually burn a flash ROM? <br />
<br />
Buy your favorite flash burner (we use a Needham Electronics EMP 30). Use make floppy to create the romimage and copy it to a floppy. Then use the provided software to burn the flash. <br />
<br />
=== How do I burn a DoC? ===<br />
<br />
Currently, only the DoC Millennium is supported. See the documentation. <br />
<br />
=== Can I do any serious damage mucking around with this stuff? ===<br />
<br />
Any time you stick your hand into an open machine while the power is on, you're risking life and limb. That said, there are also some other not-so-nice things that can happen if you mess up (not that we would know). <br />
<br />
* Incorrect inserstion of the flash (1 casualty) <br />
* Incorrect jumper settings (1 casualty) <br />
* Aggressive and/or inappropriate use of metal objects such as screwdrivers (2 casualties) <br />
* Miscellaneous miswirings and mishandlings (3+ casualties) <br />
<br />
=== A note on electrostatic discharge (ESD) and ESD protection (thanks to Bari Ari) ===<br />
<br />
ESD can damage disk drives, boards, DoC's and other parts. The majority of the time, ESD events cause the component to degrade, but not fail testing procedures, resulting in failure at a later date. Because components do not fail immediately, technicians often underestimate the cost of not using ESD prevention measures. Provide at minimum some ESD protection by wearing an antistatic wrist strap attached to the chassis ground on your system when handling parts. <br />
<br />
Always handle boards carefully. They can be extremely sensitive to ESD. Hold boards only by their edges. After removing a board from its protective wrapper or from the system, place it component side up on a grounded, static free surface. Use a conductive foam pad if available. Do not slide the board over any surface. <br />
<br />
To further reduce the chances of ESD, you should create an ESD safe workstation that includes at minimum: <br />
<br />
* Conductive rubber mat, with a lead wire that can be connected to a metal surface to create a ground. <br />
<br />
* ESD wrist strap, which has a resistor inside the strap and a lead wire that can be connected to a metal surface as a ground. The grounding wire on the wrist strap should have between 1 and 10 Megaohms of resistance. The resistor should protect you in case you come in contact with a voltage source. If the resistor is bad or not included, the wrist strap is useless. An accidental shock could be serious and even deadly! <br />
<br />
* Table or workspace that is clean, clear of dust, and away from electrical machinery or other equipment that generates electrical currents. <br />
<br />
The idea is to ensure that all components you are going to interact with have the same charge. By connecting everything to the computer case, you ensure that the components of the case, the chair, and your body all have the same charge. If every object has the same charge, the electrons will not jump from one object to another minimizing the risk of ESD damage. <br />
<br />
=== How do I put a filesystem on DoC? ===<br />
OK, here is a little HOWTO on how to set up MTD with a file system. <br />
<br />
This is a m810lmr, booting out of DoC. I am going to reserve the first 2M for kernel. So the layout will be the first 2M for linuxbios and kernel, and 6M for a file system. Kernel is 2.4.17, with linux-2.4.17-sis.patch from linuxbios source tree, and config-2.4.17-sis from the linuxbios source tree. Mainboard is the pcchips m810lmr. <br />
<br />
So I: <br />
modprobe doc2001 <br />
modprobe docprobe <br />
dmesg <br />
<br />
which shows: <br />
<br />
DiskOnChip Millennium found at address 0xFFFC8000 <br />
Flash chip found: Manufacturer ID: 98, Chip ID: E6 (Toshiba TC58V64AFT/DC) <br />
1 flash chips found. Total DiskOnChip size: 8 MiB <br />
mtd: Giving out device 0 to DiskOnChip Millennium <br />
Ignoring DiskOnChip Millennium at 0xFFFCA000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFCC000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFCE000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD0000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD2000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD4000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD6000 - already configured <br />
(etc..) <br />
Now I need MTD utilities. <br />
So I: <br />
cvs -d :pserver:anoncvs@cvs.infradead.org:/home/cvs login <br />
CVS password: <br />
<br />
(password is anoncvs) <br />
Then: <br />
cvs -d :pserver:anoncvs@cvs.infradead.org:/home/cvs co mtd <br />
<br />
Forget the drivers and such, you don't need them. What you need is the tools. <br />
cd mtd/tools <br />
make <br />
<br />
Go ahead and copy the executables somewhere handy, you'll need them. <br />
<br />
Now we need to make the last 6M into a "disk". We need to format it. The tool is nftl_format, so:<br />
<br />
[root@carly util]# ./nftl_format <br />
$Id: nftl_format.c,v 1.17 2001/08/29 14:28:48 dwmw2 Exp $ <br />
Usage: ./nftl_format [ []] <br />
[root@carly util]# expr 2048 \* 1024 <br />
2097152 <br />
[root@carly util]# expr 6 \* 1024 \* 1024 <br />
6291456 <br />
[root@carly util]# ./nftl_format /dev/mtd0 2097152 6291456 <br />
$Id: nftl_format.c,v 1.17 2001/08/29 14:28:48 dwmw2 Exp $ <br />
Phase 1. Checking and erasing Erase Zones from 0x00200000 to 0x00800000 <br />
Phase 2.a Writing NFTL Media Header and Bad Unit Table <br />
Phase 2.b Writing Spare NFTL Media Header and Spare Bad Unit Table <br />
Phase 3. Writing Unit Control Information to each Erase Unit <br />
<br />
<br />
we now have a formatted disk in there. We can now partition it. <br />
<br />
[root@carly util]# modprobe nftl <br />
<br />
dmesg shows LOTS of errors, since this was never partitioned ... <br />
<br />
Also, if you don't have /dev/nftla, <br />
<br />
[root@carly util]# mknod /dev/nftla b 93 0 <br />
<br />
<br />
Don't use the script just yet, it makes /dev/nftla as b 93 16, which is the wrong unit #. <br />
<br />
now fdisk /dev/nftla <br />
<br />
[root@carly util]# fdisk /dev/nftlA <br />
Command (m for help): n <br />
Command action <br />
e extended <br />
p primary partition (1-4) <br />
p <br />
Partition number (1-4): 1 <br />
First cylinder (1-1, default 1): <br />
Using default value 1 <br />
Command (m for help): p <br />
Disk /dev/nftlA: 1 heads, 12224 sectors, 1 cylinders <br />
Units = cylinders of 12224 * 512 bytes <br />
Device Boot Start End Blocks Id System <br />
/dev/nftlA1 1 1 6111+ 83 Linux <br />
Partition 1 has different physical/logical endings: <br />
phys=(768, 0, 0) logical=(0, 0, 12224) <br />
Partition 1 does not end on cylinder boundary: <br />
phys=(768, 0, 0) should be (768, 0, 12224) <br />
Command (m for help): w <br />
The partition table has been altered! <br />
Calling ioctl() to re-read partition table. <br />
WARNING: If you have created or modified any DOS 6.x partitions, please see the fdisk manual page for additional information. <br />
Syncing disks. <br />
[root@carly util]# mknod /dev/nftlA1 b 93 1 <br />
[root@carly util]# mke2fs /dev/nftlA1 <br />
mke2fs 1.23, 15-Aug-2001 for EXT2 FS 0.5b, 95/08/09 <br />
Filesystem label= <br />
OS type: Linux <br />
Block size=1024 (log=0) <br />
Fragment size=1024 (log=0) <br />
1528 inodes, 6111 blocks <br />
305 blocks (4.99%) reserved for the super user <br />
First data block=1 <br />
1 block group <br />
8192 blocks per group, 8192 fragments per group <br />
1528 inodes per group <br />
Writing inode tables: done <br />
Writing superblocks and filesystem accounting information: done <br />
<br />
This filesystem will be automatically checked every 37 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. <br />
<br />
[root@carly util]# mount /dev/nftlA1 /mnt <br />
[root@carly util]# cd /mnt <br />
[root@carly mnt]# df . <br />
Filesystem 1k-blocks Used Available Use% Mounted on <br />
/dev/nftlA1 5915 13 5597 1% /mnt <br />
[root@carly mnt]# <br />
<br />
and so you now have an ext2 file system on the DoC. <br />
<br />
(Above is from [[User:Rminnich|Ron Minnich]])<br />
<br />
=== How do I turn off embedded sis630 devices? ===<br />
<br />
From aip@cwlinux.com Mon Mar 25 08:54:07 2002 <br />
Date: Mon, 25 Mar 2002 22:07:54 +0800 <br />
From: Andrew Ip <br />
To: Kei Furuuchi <br />
Cc: linuxbios@lanl.gov <br />
Subject: Re: How to turn off unused pci device. <br />
Hi, <br />
> I have pcchips m758lmr which has audio chip besides sis630. <br />
> those functions in sis630 are not used in the motherboard. <br />
> But, the functions keep coming up. How do I turn off those? <br />
The following is from Nikolai Valdych previous message. Hope this help. <br />
-Andrew <br />
-- <br />
Andrew Ip <br />
Email: aip@cwlinux.com <br />
Actualy, it was pretty simple 0x7c00 - All devices enabled, You play with first 4 bits only. Cos there are 4 devices, so you have any combination of 4 bits. <br />
Set bit to 1 to turn off the device, bit 0 to enable it. <br />
This is the device list: <br />
Multimedia Audio controler <br />
Modem controler <br />
Ethernet sis930 controler <br />
USB controler. <br />
For example, to turn off Ethernet + USB it would be: <br />
0x7c0c -> 1100 in binary (first 4 bits) <br />
To turn off Multimedia audio : <br />
0x7c01 -> 0001 <br />
in binary and so on... maybe there are more detail, but this is enogh for me, Ollie, again thanks! <br />
nikolai <br />
p.s. though my modem is not yet working..... damn driver...... <br />
<br />
=== What is a PIRQ table? ===<br />
<br />
From Adam Sulmicki: <br />
<br />
I found beautfiul descrition of the BIOS implementation of the PIRQ in the red PCI book.<br />
<br />
I found the description of the $PIR data structure in the<br />
http://www.microsoft.com/hwdev/archive/BUSBIOS/pciirq.asp<br />
<br />
looking over linuxbios sources I see that it saves the $PIR data structure<br />
somewhere between 0xf0000 & 0x100000.<br />
<br />
so it seems I'll have to search for $PIR and then save it before copying<br />
over our bios. sigh. hoped for some fixed address in mem.<br />
<br />
-- <br />
Adam<br />
http://www.eax.com The Supreme Headquarters of the 32 bit registers<br />
<br />
=== How do I set up etherboot with LinuxBIOS? ===<br />
<br />
Note from Ron: I have edited this somewhat to remove Geode-specific items. <br />
<br />
Christer Weinigel writes: <br />
To: rminnich@lanl.gov<br />
Cc: linuxbios@lanl.gov<br />
Subject: Re: LinuxBIOS + Etherboot HOWTO?<br />
<br />
<br />
I had some trouble using LinuxBIOS + etherboot... <br />
<br />
<br />
My bad, I messed up and used mkelfImage-1.6 that I got from ftp.lnxi.com, when I realized that I ought to use the one from freebios/util everything started working. <br />
<br />
<br />
Here's what I did to get LinuxBIOS + Etherboot loading and booting a Linux kernel using TFTP. <br />
<br />
<br />
/Christer <br />
<br />
<br />
Get etherboot-5.0 from the CVS tree on etherboot.sourceforge.net. <br />
<br />
<br />
Modify etherboot-5.0/src/Config, comment out: <br />
<br />
# BIOS select don't change unless you know what you are doing<br />
#CFLAGS32+= -DPCBIOS<br />
<br />
<br />
<br />
and uncomment the following: <br />
<br />
# Options to make a version of Etherboot that will work under linuxBIOS.<br />
CFLAGS32+= -DLINUXBIOS -DCONFIG_TSC_CURRTICKS -DCONSOLE_SERIAL \<br />
-DCOMCONSOLE=0x3f8 -DCOMPRESERVE -DCONFIG_PCI_DIRECT -DELF_IMAGE <br />
<br />
<br />
<br />
Compile Etherboot to make an elf file for your ethernet card: <br />
<br />
make bin32/natsemi.elf<br />
<br />
<br />
<br />
Compile and install mkelfImage from freebios/util/mkelfImage. <br />
<br />
<br />
Create a bootimage to put on your TFTP server: <br />
<br />
mkelfImage --command-line="root=/dev/hda2 console=ttyS0,38400" \<br />
--kernel vmlinux -o /tftpboot/kernel<br />
<br />
<br />
<br />
Finally, make sure that your BOOT/DCHP server is answering and that the TFTP server is active. <br />
<br />
<br />
Tell LinuxBIOS to boot an elf Image, and tell LinuxBIOS where it is: <br />
<br />
option USE_ELF_BOOT=1<br />
<br />
<br />
<br />
I have placed natsemi.elf in the first 64k of my BIOS flash chip, and LinuxBIOS in the second 64k. <br />
<br />
insmod bios.o<br />
dd if=natsemi.elf of=/dev/bios bs=64k<br />
dd if=linuxbios.rom of=/dev/bios bs=64k seek=1<br />
<br />
<br />
<br />
Finally boot LinuxBIOS. <br />
<br />
=== How do I set GEODE video? ===<br />
<br />
From christer@weinigel.se Wed Nov 27 07:47:17 2002<br />
Date: 27 Nov 2002 10:55:01 +0100<br />
From: Christer Weinigel <br />
To: Adam Bezanson <br />
Cc: linuxbios@clustermatic.org<br />
Subject: Re: Geode Kernel Config <br />
<br />
"Adam Bezanson" writes:<br />
<br />
> I've got an Eval card from National Semi that contains<br />
> the SC1200. I'd like to try LinuxBios on it.<br />
> I've downloaded both the 2.4.18 and 2.4.19 kernels to start with.<br />
> What patches do I need to apply to the kernel?<br />
> Is there a config file I can use to configure the kernel, or<br />
> should I do it manually? <br />
<br />
A normal 2.4 Linux kernel will work fine as long as you compile for a<br />
586 CPU (CONFIG_M586), not Pentium or higher (CONFIG_M586TSC and up)<br />
since the TSC behaves a bit differently. <br />
<br />
If you want support for the watchdog or the GPIO pins in a 2.4 kernel,<br />
you can find an old patch from me at:<br />
<br />
http://groups.google.com/groups?selm=20020226015215.20118F5B%40acolyte.hack.org&oe=UTF-8&output=gplain<br />
<br />
An updated version of this patch has been included in Linux 2.5. Alan<br />
Cox' 2.5 kernel also has support for doing DMA on the SC1200 IDE<br />
controller; I don't know if there is a corresponding patch for 2.4. <br />
<br />
Other than that, take a look at the freebios/src/mainboard/nano/nano<br />
directory and make a copy of it. All you should have to do is to<br />
modify the Pin Multiplexing Register (PMR) and Miscellaneous Config<br />
Register (MCR) in the Config file and to modify the irq assignments.<br />
<br />
Depending on what you want to do, there are a few limitations with<br />
the current LinuxBIOS on the SC1200: <br />
<br />
There is no video support in LinuxBIOS itself, so you won't get<br />
any video until you have loaded the NatSemi Geode Linux<br />
framebuffer driver (can be found at www.linux4.tv under the<br />
heading SP1SC10 Platform Image).<br />
<br />
There is no SMM/VSA support at all, this means that anything<br />
relying on it won't work. What this means is that Audio won't<br />
work.<br />
<br />
Other than that everything works fine, IDE in PIO mode, the PCI bus,<br />
watchdog, GPIOs, everything.<br />
<br />
/Christer<br />
<br />
-- <br />
"Just how much can I get away with and still go to heaven?"<br />
<br />
Freelance consultant specializing in device driver programming for Linux <br />
Christer Weinigel http://www.weinigel.se<br />
_______________________________________________<br />
Linuxbios mailing list<br />
Linuxbios@clustermatic.org<br />
http://www.clustermatic.org/mailman/listinfo/linuxbios<br />
<br />
<br />
=== How do I set up testbios? ===<br />
<br />
From daubin@actuality-systems.com Wed Oct 6 10:23:10 2004<br />
Date: Tue, 5 Oct 2004 15:19:24 -0400<br />
From: Dave Aubin <br />
To: linuxbios@clustermatic.org<br />
Subject: RE: Testbios help with nvidia 6800Gt and simple how to<br />
<br />
I've taken the time to put together a simple testbios faq.<br />
I hope it is helpful. Feedback and additions are welcome. <br />
<br />
Thanks,<br />
Dave<br />
<br />
==== Testbios (vgabios) Faq ====<br />
<br />
Date: 10/5/2004<br />
Author(s): David Aubin daubin@actuality-systems.com<br />
<br />
Purpose: Testbios is an i386 emulator that sits on top of userspace linux. It's primary purpose is to provide program video rom's in to the cached memory area.<br />
<br />
===== Where to obtain testbios =====<br />
<br />
Testbios(vgabios) can be retrieved from the linuxbios/freebios source tree: [http://www.linuxbios.org/developer/download/index.html]<br />
<br />
===== Prerequisites =====<br />
<br />
You must have installed pci-utils<br />
* Get http://atrey.karlin.mff.cuni.cz/~mj/pciutils.shtml<br />
<br />
===== How to build testbios =====<br />
* cd freebios/util/vgabios<br />
* Edit ./Makefile and fill in the correct values for your environment (I build on a 64 AMD so my makefile looks like this)<br />
<br />
Begin ./Makefile for x64:<br />
CC = gcc<br />
ARCH := $(shell uname -m | sed -e s,i[3456789]86,i386,)<br />
INCLUDE = -I ../pciutils-2.1.11<br />
CFLAGS = -Wall -Ix86emu/include -O2 -g $(INCLUDE)<br />
<br />
INTOBJS = int10.o int15.o int16.o int1a.o inte6.o<br />
OBJECTS = testbios.o helper_exec.o helper_mem.o $(INTOBJS)<br />
LDFLAGS = -static-libgcc -static<br />
<br />
LIBS = x86emu/src/x86emu/libx86emu.a ../pciutils-2.1.11/lib/libpci.a<br />
<br />
# user space pci is the only option right now.<br />
OBJECTS += pci-userspace.o<br />
<br />
ifeq ($(shell if test "$(ARCH)" == "x86_64" ; then echo 1; fi), 1)<br />
CFLAGS +=-m32 -march=i386<br />
endif<br />
<br />
all: testbios<br />
<br />
testbios: $(OBJECTS) $(LIBS)<br />
$(CC) $(CFLAGS) -o testbios $(OBJECTS) $(LDFLAGS)<br />
$(LIBS)<br />
<br />
helper_exec.o: helper_exec.c test.h<br />
<br />
x86emu/src/x86emu/libx86emu.a:<br />
$(MAKE) -C x86emu/src/x86emu/ -f makefile.linux<br />
<br />
clean:<br />
$(MAKE) -C x86emu/src/x86emu/ -f makefile.linux clean<br />
rm -f *.o *~ testbios <br />
<br />
distclean: clean<br />
$(MAKE) -C x86emu/src/x86emu/ -f makefile.linux clean<br />
<br />
<br />
End ./Makefile<br />
<br />
* Edit ~vgabios/x86emu/src/x86emu/makefile.linux and fill in the correct values for your environment (I build on a 64 AMD so my makefile looks like this)<br />
<br />
Begin ~vgabios/x86emu/src/x86emu/makefile.linux:<br />
#############################################################################<br />
#<br />
# Realmode X86 Emulator Library<br />
#<br />
# Copyright (C) 1996-1999 SciTech Software, Inc.<br />
#<br />
#<br />
<nowiki>========================================================================</nowiki><br />
#<br />
# Permission to use, copy, modify, distribute, and sell this software and<br />
# its documentation for any purpose is hereby granted without fee,<br />
# provided that the above copyright notice appear in all copies and that<br />
# both that copyright notice and this permission notice appear in<br />
# supporting documentation, and that the name of the authors not be used<br />
# in advertising or publicity pertaining to distribution of the software<br />
# without specific, written prior permission. The authors makes no<br />
# representations about the suitability of this software for any purpose.<br />
# It is provided "as is" without express or implied warranty.<br />
#<br />
# THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,<br />
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO<br />
# EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR<br />
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF<br />
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR<br />
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR<br />
# PERFORMANCE OF THIS SOFTWARE.<br />
#<br />
#<br />
<nowiki>========================================================================</nowiki><br />
#<br />
# Descripton: Linux specific makefile for the x86emu library.<br />
#<br />
#############################################################################<br />
<br />
TARGETLIB = libx86emu.a<br />
<br />
<br />
OBJS=\<br />
debug.o \<br />
decode.o \<br />
fpu.o \<br />
ops.o \<br />
ops2.o \<br />
prim_ops.o \<br />
sys.o<br />
<br />
$(TARGETLIB): $(OBJS)<br />
ar rv $(TARGETLIB) $(OBJS)<br />
<br />
INCS = -I. -Ix86emu -I../../include<br />
CFLAGS += -D__DRIVER__ -DFORCE_POST -D_CEXPORT= -DNO_LONG_LONG -DDEBUG<br />
ARCH := $(shell uname -m | sed -e s,i[3456789]86,i386,)<br />
ifeq ($(shell if test "$(ARCH)" == "x86_64" ; then echo 1; fi), 1)<br />
CFLAGS +=-m32 -march=i386<br />
endif<br />
<br />
<br />
.c.o:<br />
# gcc -m32 -march=i386 -g -O -Wall -c $(CFLAGS) $(INCS) $*.c<br />
gcc -g -O -Wall -c $(CFLAGS) $(INCS) $*.c<br />
<br />
.cpp.o:<br />
# gcc -m32 -march=i386 -c $(CFLAGS) $(INCS) $*.cpp<br />
gcc -c $(CFLAGS) $(INCS) $*.cpp <br />
<br />
clean:<br />
rm -f *.a *.o<br />
<br />
validate: validate.o libx86emu.a<br />
gcc -o validate validate.o -lx86emu -L.<br />
<br />
End ~vgabios/x86emu/src/x86emu/makefile.linux<br />
<br />
* Once built you could have a 32bit testbios executable made. Depending on your embedded environment you might want to have it built shared as the above example makes it static. Just remove -static-libgcc -static from the LDFLAGS on ./Makefile if you wish to have it built shared.<br />
<br />
===== How to retrieve a good video bios =====<br />
There are sites that have video bios roms on their website. (I know of this one for nvidia cards: [http://whitebunny.demon.nl/hardware/chipset_nvidia.html])<br />
<br />
However you should be able to retrieve your own video bios as well with linux.<br />
* Boot up a machine with a commercial bios (not linux bios) with the video card you wish to work under linux bios.<br />
** From the command line enter:<br />
dd if=/dev/mem of=vgabios.bin skip=1536 count=128 or <br />
dd if=/dev/mem of=vgabios.bin bs=1k count=64 skip=786432<br />
<br />
This assumes you card's bios is cached in 0xc0000. You<br />
can see where and how much your card's bios is using by<br />
doing a cat iomem | grep "Video ROM"<br />
<br />
*** dd Explained (man dd to learn more):<br />
**** if is the location to retrieve from.<br />
**** of is the output file (your rom image)<br />
**** skip jumps n blocks where the default n is 512 bytes<br />
**** count is how many blocks you wish to read<br />
**** bs is the block size<br />
** You now have a video bios image<br />
<br />
===== How to use testbios =====<br />
* Currently testbios only works from user space linux (10/4/04)<br />
* Example from a linux command line or script enter the following to get your video bios programmed:<br />
./testbios -s 65536 --abseg /dev/mem ./vgabios.bin<br />
** Testbios explained<br />
*** -s how much of the video bios is there<br />
*** --abseg where would you like to write this (/dev/mem default)<br />
*** filename of video bios<br />
*** -d diag mode <br />
**** How to get pci busdevfn<br />
**** lspci<br />
**** look for your video card<br />
***** Example:<br />
2:00:00<br />
2 (00 << 3) | 00 = 0x200<br />
***** Example:<br />
00:12.0:<br />
0 (12 << 3) | 0 = 0x90<br />
*** -t dump <br />
*** -c codesegment Where do you want to start, default is 0xc0000<br />
*** -b base Where do you want base to be default is 0xc000<br />
*** -i instruction pointer usually left off as the default<br />
<br />
==== Followup to Testbios FAQ ====<br />
-----Original Message-----<br />
From: linuxbios-admin@clustermatic.org<br />
[mailto:linuxbios-admin@clustermatic.org] On Behalf Of Dave Aubin<br />
Sent: Tuesday, October 05, 2004 2:22 PM<br />
To: Richard Smith<br />
Cc: linuxbios@clustermatic.org<br />
Subject: RE: Testbios help with nvidia 6800Gt and simple how to<br />
<br />
Hi,<br />
<br />
Thank you:) Yes, it was at 0xc0000-0xc7fff, which is only 32k.<br />
But the image I got from the windows tool was 64k (double 8000).<br />
Weird. I would like to stay away from window tools.<br />
The info you provided is nice. I wish there was a way for us To make<br />
a faq and we could add this to the testbios faq. There Is a lot of good<br />
info on the clustermatic list, but it is all Dispersed. <br />
Ron if I write a simple faq can you provide some mechanism to Allow<br />
updates to it?<br />
<br />
Thanks,<br />
Dave <br />
<br />
-----Original Message-----<br />
From: Richard Smith [mailto:rsmith@bitworks.com]<br />
Sent: Tuesday, October 05, 2004 2:16 PM<br />
To: Dave Aubin<br />
Cc: linuxbios@clustermatic.org<br />
Subject: Re: Testbios help with nvidia 6800Gt and simple how to<br />
<br />
Dave Aubin wrote:<br />
<br />
> It seems my dd returned an unusable binary. I found a good binary for<br />
<br />
> The nvidia card from here:<br />
> http://whitebunny.demon.nl/hardware/chipset_nvidia.html<br />
> <br />
<br />
I was wondering about your dd command that but I had not had a chance to<br />
respond yet.<br />
<br />
This is what I use:<br />
<br />
dd if=/dev/mem of=vbios.bin bs=1k count=64 skip=786432<br />
<br />
That will rip the bios from 0x0c0000. You can verify that you actually<br />
have bios there with<br />
<br />
'hd -s 0x0c0000 -n 256 /dev/mem'<br />
<br />
in some cases it may be located at 0x0e0000 rather than 0x0c0000.<br />
<br />
It should start with the 0x55aa (Little endian) or 0xaa55 (big endian)<br />
and futher on you should see some text identifying the bios.<br />
<br />
<br />
--<br />
Richard A. Smith<br />
<br />
<br />
_______________________________________________<br />
Linuxbios mailing list<br />
Linuxbios@clustermatic.org<br />
http://www.clustermatic.org/mailman/listinfo/linuxbios</div>Jdarbyhttps://www.coreboot.org/index.php?title=Talk:FAQ&diff=74Talk:FAQ2005-03-01T20:25:14Z<p>Jdarby: </p>
<hr />
<div>Ok, as of now, the original page has been wikiized and looks sane inside the wiki. I'm going to move on, but I left some notes that start with '(jdarby:' in a few places where information is lacking or links should be present -- I am sure I did not find all the spots, just a few. I changed the formatting of a few areas slightly, but hopefully its now more readable. --[[User:Jdarby|jdarby]] 21:25, 1 Mar 2005 (CET)</div>Jdarbyhttps://www.coreboot.org/index.php?title=FAQ&diff=72FAQ2005-03-01T20:22:39Z<p>Jdarby: wiki-ized original page. it's mostly good, look for notes that start with '(jdarby:' to fill in some information i noticed is lacking. i changed the format of a few things around where it was cloudy.</p>
<hr />
<div>== General ==<br />
<br />
=== What is LinuxBIOS? ===<br />
<br />
LinuxBIOS aims to replace the normal BIOS found on PCs, Alphas, and other machines with a Linux kernel that can boot Linux from a cold start. LinuxBIOS is primarily Linux - about 10 lines of patches to the current Linux kernel. Additionally, the startup code - about 500 lines of assembly and 5000 lines of C - executes 16 instructions to get into 32-bit mode and then performs DRAM and other hardware initialization required before Linux can take over. <br />
<br />
Our primary motivation for the project was maintenance of large clusters, but not surprisingly interest and contributions have come from people with varying backgrounds. <br />
<br />
=== Why do we need LinuxBIOS? ===<br />
<br />
Current PCs used as cluster nodes depend on a vendor-supplied BIOS for booting. The BIOS in turn relies on inherently unreliable devices such as floppy disks and hard drives to boot the operating system. In addition, current BIOS software is unable to accommodate non-standard hardware making it difficult to support experimental work. The BIOS is slow and often erroneous and redundant and, most importantly, maintenance is a nightmare. Imagine walking around with a keyboard and monitor to every one of the 128 nodes in a cluster to change one BIOS setting. <br />
<br />
The LinuxBIOS gunzip's the Linux kernel straight out of NVRAM and essentially requires no moving parts other than the fan. It does a minimal amount of hardware initialization before jumping to the kernel start and lets Linux do the rest. As a result, it is much faster (current record 3 seconds), which has sparked interest in the consumer electronics community as well. Moreover, updates can be performed over the network. <br />
<br />
Using a real operating system to boot another operating system provides much greater flexibility than using a simple netboot program or the BIOS. Because Linux is the boot mechanism, it can boot over standard Ethernet or over other interconnects such as Myrinet, Quadrics, or SCI. It can use SSH connections to load the kernel, or it can use the InterMezzo caching file system or traditional NFS. Cluster nodes can be as simple as they need to be - perhaps as simple as a CPU and memory, no disk, no floppy, and no file system. The nodes will be much less autonomous thus making them easier to maintain. <br />
<br />
=== Who is working on LinuxBIOS? ===<br />
<br />
The LinuxBIOS project was started in the winter of 1999 in the Advanced Computing Laboratory at Los Alamos National Laboratory by Ron Minnich. Two undergraduate students, James Hendricks and Dale Webster spent their winter vacation putting together the proof of concept implementation. <br />
<br />
Since then, a long list of people have contributed both in discussions and actual code. See our contributors page for details. Please don't be shy and let us know if you are missing from the list. It's not a purposeful omission, just an unfortunate mistake. <br />
<br />
=== Who is funding LinuxBIOS? ===<br />
<br />
The LinuxBIOS project is funded by the Los Alamos Computer Science Institute and the Department of Energy's Office of Science. <br />
<br />
=== Will LinuxBIOS work on my machine? ===<br />
<br />
See the status page for which mainboards are supported. Also, see the products page for a list of vendors selling products running LinuxBIOS. <br />
<br />
=== What commercial products use LinuxBIOS? ===<br />
<br />
See the products page. <br />
<br />
=== How can I help with LinuxBIOS? ===<br />
<br />
Contact [[User:Rminnich|Ron Minnich]] for projects related to LinuxBIOS. <br />
<br />
== Developer ==<br />
<br />
=== Where is the mailing list archived? ===<br />
<br />
The best archive out there is at the University of Maryland. (jdarby: can someone hunt out this url? I don't know it offhand.)<br />
<br />
In addition, we've pieced together an archive that dates back to about the beginning of 2000 (including messages that were going to the freebios and openbios mailing lists). <br />
<br />
=== Where do I get the code? ===<br />
<br />
See the [[Download_freebios_v2|download page]].<br />
<br />
=== How do I build? ===<br />
<br />
See the documentation. For help generating a config file, see Generate a config file. (jdarby: this needs to be wikiized)<br />
<br />
=== Why is the code so complicated and what can I do to make it easier? ===<br />
<br />
The reason is the complexity of the problem. We support a lot of hardware, and a given chip on a given board will most likely not be configured quite the same as the same chip on some other board. <br />
<br />
To help make code navigation easier, pick a target and build that target. Then, in the build directory, type make tags or make etags to get your favorite tags file. <br />
<br />
=== What chipsets are supported? ===<br />
<br />
See status for the most up-to-date info.. (jdarby: this needs to be wikiized)<br />
<br />
=== What is this POST card thing? ===<br />
<br />
A POST card will save your life. The term POST means Power On Self Test and comes from the original IBM specifications for the BIOS. Port 80 is a pre-defined port to which programs can output a byte. The POST card displays the byte in hex on its 2 digit display. We use a lot of POST codes in LinuxBIOS, so if you can tell us the POST code you see, we will have some idea of what happened. <br />
<br />
If your LinuxBIOS machine is working properly, you will see it count up from 0xd0 to 0xd9 (while it is gunzipping the kernel) and then display 0x98 (Linux idle loop). <br />
<br />
=== How do I contribute my changes? ===<br />
<br />
Any one without commit privileges (which is most of you) need to get changes approved by Ron Minnich. <br />
<br />
=== How do I re-flash the BIOS? ===<br />
<br />
Download the appropriate flash update utility. Build the romimage as explained above and use the flash update utility to update the BIOS. Be warned that not all update utilities allow you to load your own BIOS image. For example, Intel decided to disallow it for the MS440GX mainboard (probably after hearing about us!) Here are some mainboard specific directions. <br />
<br />
SiS 630/950 M/Bs<br />
Ollie Lho provided us with flash utilities for these boards under freebios/util/sis. <br />
flash_on turns on the flash write enable. This needs to be run before loading the DoC drivers. <br />
flash_rom allows you to use your SiS 630/950 M/Bs as a flash programmer. It currently supports JEDEC flash parts, AMD am29f040b models, MXIC MX29F002 models, and SST28SF040C models. <br />
Intel L440GX<br />
Get the System Update Package directly from Intel. mcopy the ten files created from running make phlash onto the Intel flash burner disk and use the update utility to burn the BIOS. To restore the original BIOS, set the recovery boot jumper on the motherboard, put the floppy in, and it will load and reflash the original BIOS. <br />
How do I actually burn a flash ROM? <br />
<br />
Buy your favorite flash burner (we use a Needham Electronics EMP 30). Use make floppy to create the romimage and copy it to a floppy. Then use the provided software to burn the flash. <br />
<br />
=== How do I burn a DoC? ===<br />
<br />
Currently, only the DoC Millennium is supported. See the documentation. <br />
<br />
=== Can I do any serious damage mucking around with this stuff? ===<br />
<br />
Any time you stick your hand into an open machine while the power is on, you're risking life and limb. That said, there are also some other not-so-nice things that can happen if you mess up (not that we would know). <br />
<br />
* Incorrect inserstion of the flash (1 casualty) <br />
* Incorrect jumper settings (1 casualty) <br />
* Aggressive and/or inappropriate use of metal objects such as screwdrivers (2 casualties) <br />
* Miscellaneous miswirings and mishandlings (3+ casualties) <br />
<br />
=== A note on electrostatic discharge (ESD) and ESD protection (thanks to Bari Ari) ===<br />
<br />
ESD can damage disk drives, boards, DoC's and other parts. The majority of the time, ESD events cause the component to degrade, but not fail testing procedures, resulting in failure at a later date. Because components do not fail immediately, technicians often underestimate the cost of not using ESD prevention measures. Provide at minimum some ESD protection by wearing an antistatic wrist strap attached to the chassis ground on your system when handling parts. <br />
<br />
Always handle boards carefully. They can be extremely sensitive to ESD. Hold boards only by their edges. After removing a board from its protective wrapper or from the system, place it component side up on a grounded, static free surface. Use a conductive foam pad if available. Do not slide the board over any surface. <br />
<br />
To further reduce the chances of ESD, you should create an ESD safe workstation that includes at minimum: <br />
<br />
* Conductive rubber mat, with a lead wire that can be connected to a metal surface to create a ground. <br />
<br />
* ESD wrist strap, which has a resistor inside the strap and a lead wire that can be connected to a metal surface as a ground. The grounding wire on the wrist strap should have between 1 and 10 Megaohms of resistance. The resistor should protect you in case you come in contact with a voltage source. If the resistor is bad or not included, the wrist strap is useless. An accidental shock could be serious and even deadly! <br />
<br />
* Table or workspace that is clean, clear of dust, and away from electrical machinery or other equipment that generates electrical currents. <br />
<br />
The idea is to ensure that all components you are going to interact with have the same charge. By connecting everything to the computer case, you ensure that the components of the case, the chair, and your body all have the same charge. If every object has the same charge, the electrons will not jump from one object to another minimizing the risk of ESD damage. <br />
<br />
=== How do I put a filesystem on DoC? ===<br />
OK, here is a little HOWTO on how to set up MTD with a file system. <br />
<br />
This is a m810lmr, booting out of DoC. I am going to reserve the first 2M for kernel. So the layout will be the first 2M for linuxbios and kernel, and 6M for a file system. Kernel is 2.4.17, with linux-2.4.17-sis.patch from linuxbios source tree, and config-2.4.17-sis from the linuxbios source tree. Mainboard is the pcchips m810lmr. <br />
<br />
So I: <br />
modprobe doc2001 <br />
modprobe docprobe <br />
dmesg <br />
<br />
which shows: <br />
<br />
DiskOnChip Millennium found at address 0xFFFC8000 <br />
Flash chip found: Manufacturer ID: 98, Chip ID: E6 (Toshiba TC58V64AFT/DC) <br />
1 flash chips found. Total DiskOnChip size: 8 MiB <br />
mtd: Giving out device 0 to DiskOnChip Millennium <br />
Ignoring DiskOnChip Millennium at 0xFFFCA000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFCC000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFCE000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD0000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD2000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD4000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD6000 - already configured <br />
(etc..) <br />
Now I need MTD utilities. <br />
So I: <br />
cvs -d :pserver:anoncvs@cvs.infradead.org:/home/cvs login <br />
CVS password: <br />
<br />
(password is anoncvs) <br />
Then: <br />
cvs -d :pserver:anoncvs@cvs.infradead.org:/home/cvs co mtd <br />
<br />
Forget the drivers and such, you don't need them. What you need is the tools. <br />
cd mtd/tools <br />
make <br />
<br />
Go ahead and copy the executables somewhere handy, you'll need them. <br />
<br />
Now we need to make the last 6M into a "disk". We need to format it. The tool is nftl_format, so:<br />
<br />
[root@carly util]# ./nftl_format <br />
$Id: nftl_format.c,v 1.17 2001/08/29 14:28:48 dwmw2 Exp $ <br />
Usage: ./nftl_format [ []] <br />
[root@carly util]# expr 2048 \* 1024 <br />
2097152 <br />
[root@carly util]# expr 6 \* 1024 \* 1024 <br />
6291456 <br />
[root@carly util]# ./nftl_format /dev/mtd0 2097152 6291456 <br />
$Id: nftl_format.c,v 1.17 2001/08/29 14:28:48 dwmw2 Exp $ <br />
Phase 1. Checking and erasing Erase Zones from 0x00200000 to 0x00800000 <br />
Phase 2.a Writing NFTL Media Header and Bad Unit Table <br />
Phase 2.b Writing Spare NFTL Media Header and Spare Bad Unit Table <br />
Phase 3. Writing Unit Control Information to each Erase Unit <br />
<br />
<br />
we now have a formatted disk in there. We can now partition it. <br />
<br />
[root@carly util]# modprobe nftl <br />
<br />
dmesg shows LOTS of errors, since this was never partitioned ... <br />
<br />
Also, if you don't have /dev/nftla, <br />
<br />
[root@carly util]# mknod /dev/nftla b 93 0 <br />
<br />
<br />
Don't use the script just yet, it makes /dev/nftla as b 93 16, which is the wrong unit #. <br />
<br />
now fdisk /dev/nftla <br />
<br />
[root@carly util]# fdisk /dev/nftlA <br />
Command (m for help): n <br />
Command action <br />
e extended <br />
p primary partition (1-4) <br />
p <br />
Partition number (1-4): 1 <br />
First cylinder (1-1, default 1): <br />
Using default value 1 <br />
Command (m for help): p <br />
Disk /dev/nftlA: 1 heads, 12224 sectors, 1 cylinders <br />
Units = cylinders of 12224 * 512 bytes <br />
Device Boot Start End Blocks Id System <br />
/dev/nftlA1 1 1 6111+ 83 Linux <br />
Partition 1 has different physical/logical endings: <br />
phys=(768, 0, 0) logical=(0, 0, 12224) <br />
Partition 1 does not end on cylinder boundary: <br />
phys=(768, 0, 0) should be (768, 0, 12224) <br />
Command (m for help): w <br />
The partition table has been altered! <br />
Calling ioctl() to re-read partition table. <br />
WARNING: If you have created or modified any DOS 6.x partitions, please see the fdisk manual page for additional information. <br />
Syncing disks. <br />
[root@carly util]# mknod /dev/nftlA1 b 93 1 <br />
[root@carly util]# mke2fs /dev/nftlA1 <br />
mke2fs 1.23, 15-Aug-2001 for EXT2 FS 0.5b, 95/08/09 <br />
Filesystem label= <br />
OS type: Linux <br />
Block size=1024 (log=0) <br />
Fragment size=1024 (log=0) <br />
1528 inodes, 6111 blocks <br />
305 blocks (4.99%) reserved for the super user <br />
First data block=1 <br />
1 block group <br />
8192 blocks per group, 8192 fragments per group <br />
1528 inodes per group <br />
Writing inode tables: done <br />
Writing superblocks and filesystem accounting information: done <br />
<br />
This filesystem will be automatically checked every 37 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. <br />
<br />
[root@carly util]# mount /dev/nftlA1 /mnt <br />
[root@carly util]# cd /mnt <br />
[root@carly mnt]# df . <br />
Filesystem 1k-blocks Used Available Use% Mounted on <br />
/dev/nftlA1 5915 13 5597 1% /mnt <br />
[root@carly mnt]# <br />
<br />
and so you now have an ext2 file system on the DoC. <br />
<br />
(Above is from [[User:Rminnich|Ron Minnich]])<br />
<br />
=== How do I turn off embedded sis630 devices? ===<br />
<br />
From aip@cwlinux.com Mon Mar 25 08:54:07 2002 <br />
Date: Mon, 25 Mar 2002 22:07:54 +0800 <br />
From: Andrew Ip <br />
To: Kei Furuuchi <br />
Cc: linuxbios@lanl.gov <br />
Subject: Re: How to turn off unused pci device. <br />
Hi, <br />
> I have pcchips m758lmr which has audio chip besides sis630. <br />
> those functions in sis630 are not used in the motherboard. <br />
> But, the functions keep coming up. How do I turn off those? <br />
The following is from Nikolai Valdych previous message. Hope this help. <br />
-Andrew <br />
-- <br />
Andrew Ip <br />
Email: aip@cwlinux.com <br />
Actualy, it was pretty simple 0x7c00 - All devices enabled, You play with first 4 bits only. Cos there are 4 devices, so you have any combination of 4 bits. <br />
Set bit to 1 to turn off the device, bit 0 to enable it. <br />
This is the device list: <br />
Multimedia Audio controler <br />
Modem controler <br />
Ethernet sis930 controler <br />
USB controler. <br />
For example, to turn off Ethernet + USB it would be: <br />
0x7c0c -> 1100 in binary (first 4 bits) <br />
To turn off Multimedia audio : <br />
0x7c01 -> 0001 <br />
in binary and so on... maybe there are more detail, but this is enogh for me, Ollie, again thanks! <br />
nikolai <br />
p.s. though my modem is not yet working..... damn driver...... <br />
<br />
=== What is a PIRQ table? ===<br />
<br />
From Adam Sulmicki: <br />
<br />
I found beautfiul descrition of the BIOS implementation of the PIRQ in the red PCI book.<br />
<br />
I found the description of the $PIR data structure in the<br />
http://www.microsoft.com/hwdev/archive/BUSBIOS/pciirq.asp<br />
<br />
looking over linuxbios sources I see that it saves the $PIR data structure<br />
somewhere between 0xf0000 & 0x100000.<br />
<br />
so it seems I'll have to search for $PIR and then save it before copying<br />
over our bios. sigh. hoped for some fixed address in mem.<br />
<br />
-- <br />
Adam<br />
http://www.eax.com The Supreme Headquarters of the 32 bit registers<br />
<br />
=== How do I set up etherboot with LinuxBIOS? ===<br />
<br />
Note from Ron: I have edited this somewhat to remove Geode-specific items. <br />
<br />
Christer Weinigel writes: <br />
To: rminnich@lanl.gov<br />
Cc: linuxbios@lanl.gov<br />
Subject: Re: LinuxBIOS + Etherboot HOWTO?<br />
<br />
<br />
I had some trouble using LinuxBIOS + etherboot... <br />
<br />
<br />
My bad, I messed up and used mkelfImage-1.6 that I got from ftp.lnxi.com, when I realized that I ought to use the one from freebios/util everything started working. <br />
<br />
<br />
Here's what I did to get LinuxBIOS + Etherboot loading and booting a Linux kernel using TFTP. <br />
<br />
<br />
/Christer <br />
<br />
<br />
Get etherboot-5.0 from the CVS tree on etherboot.sourceforge.net. <br />
<br />
<br />
Modify etherboot-5.0/src/Config, comment out: <br />
<br />
# BIOS select don't change unless you know what you are doing<br />
#CFLAGS32+= -DPCBIOS<br />
<br />
<br />
<br />
and uncomment the following: <br />
<br />
# Options to make a version of Etherboot that will work under linuxBIOS.<br />
CFLAGS32+= -DLINUXBIOS -DCONFIG_TSC_CURRTICKS -DCONSOLE_SERIAL \<br />
-DCOMCONSOLE=0x3f8 -DCOMPRESERVE -DCONFIG_PCI_DIRECT -DELF_IMAGE <br />
<br />
<br />
<br />
Compile Etherboot to make an elf file for your ethernet card: <br />
<br />
make bin32/natsemi.elf<br />
<br />
<br />
<br />
Compile and install mkelfImage from freebios/util/mkelfImage. <br />
<br />
<br />
Create a bootimage to put on your TFTP server: <br />
<br />
mkelfImage --command-line="root=/dev/hda2 console=ttyS0,38400" \<br />
--kernel vmlinux -o /tftpboot/kernel<br />
<br />
<br />
<br />
Finally, make sure that your BOOT/DCHP server is answering and that the TFTP server is active. <br />
<br />
<br />
Tell LinuxBIOS to boot an elf Image, and tell LinuxBIOS where it is: <br />
<br />
option USE_ELF_BOOT=1<br />
<br />
<br />
<br />
I have placed natsemi.elf in the first 64k of my BIOS flash chip, and LinuxBIOS in the second 64k. <br />
<br />
insmod bios.o<br />
dd if=natsemi.elf of=/dev/bios bs=64k<br />
dd if=linuxbios.rom of=/dev/bios bs=64k seek=1<br />
<br />
<br />
<br />
Finally boot LinuxBIOS. <br />
<br />
=== How do I set GEODE video? ===<br />
<br />
From christer@weinigel.se Wed Nov 27 07:47:17 2002<br />
Date: 27 Nov 2002 10:55:01 +0100<br />
From: Christer Weinigel <br />
To: Adam Bezanson <br />
Cc: linuxbios@clustermatic.org<br />
Subject: Re: Geode Kernel Config <br />
<br />
"Adam Bezanson" writes:<br />
<br />
> I've got an Eval card from National Semi that contains<br />
> the SC1200. I'd like to try LinuxBios on it.<br />
> I've downloaded both the 2.4.18 and 2.4.19 kernels to start with.<br />
> What patches do I need to apply to the kernel?<br />
> Is there a config file I can use to configure the kernel, or<br />
> should I do it manually? <br />
<br />
A normal 2.4 Linux kernel will work fine as long as you compile for a<br />
586 CPU (CONFIG_M586), not Pentium or higher (CONFIG_M586TSC and up)<br />
since the TSC behaves a bit differently. <br />
<br />
If you want support for the watchdog or the GPIO pins in a 2.4 kernel,<br />
you can find an old patch from me at:<br />
<br />
http://groups.google.com/groups?selm=20020226015215.20118F5B%40acolyte.hack.org&oe=UTF-8&output=gplain<br />
<br />
An updated version of this patch has been included in Linux 2.5. Alan<br />
Cox' 2.5 kernel also has support for doing DMA on the SC1200 IDE<br />
controller; I don't know if there is a corresponding patch for 2.4. <br />
<br />
Other than that, take a look at the freebios/src/mainboard/nano/nano<br />
directory and make a copy of it. All you should have to do is to<br />
modify the Pin Multiplexing Register (PMR) and Miscellaneous Config<br />
Register (MCR) in the Config file and to modify the irq assignments.<br />
<br />
Depending on what you want to do, there are a few limitations with<br />
the current LinuxBIOS on the SC1200: <br />
<br />
There is no video support in LinuxBIOS itself, so you won't get<br />
any video until you have loaded the NatSemi Geode Linux<br />
framebuffer driver (can be found at www.linux4.tv under the<br />
heading SP1SC10 Platform Image).<br />
<br />
There is no SMM/VSA support at all, this means that anything<br />
relying on it won't work. What this means is that Audio won't<br />
work.<br />
<br />
Other than that everything works fine, IDE in PIO mode, the PCI bus,<br />
watchdog, GPIOs, everything.<br />
<br />
/Christer<br />
<br />
-- <br />
"Just how much can I get away with and still go to heaven?"<br />
<br />
Freelance consultant specializing in device driver programming for Linux <br />
Christer Weinigel http://www.weinigel.se<br />
_______________________________________________<br />
Linuxbios mailing list<br />
Linuxbios@clustermatic.org<br />
http://www.clustermatic.org/mailman/listinfo/linuxbios<br />
<br />
<br />
=== How do I set up testbios? ===<br />
<br />
From daubin@actuality-systems.com Wed Oct 6 10:23:10 2004<br />
Date: Tue, 5 Oct 2004 15:19:24 -0400<br />
From: Dave Aubin <br />
To: linuxbios@clustermatic.org<br />
Subject: RE: Testbios help with nvidia 6800Gt and simple how to<br />
<br />
I've taken the time to put together a simple testbios faq.<br />
I hope it is helpful. Feedback and additions are welcome. <br />
<br />
Thanks,<br />
Dave<br />
<br />
==== Testbios (vgabios) Faq ====<br />
<br />
Date: 10/5/2004<br />
Author(s): David Aubin daubin@actuality-systems.com<br />
<br />
Purpose: Testbios is an i386 emulator that sits on top of userspace linux. It's primary purpose is to provide program video rom's in to the cached memory area.<br />
<br />
===== Where to obtain testbios =====<br />
<br />
Testbios(vgabios) can be retrieved from the linuxbios/freebios source tree: [http://www.linuxbios.org/developer/download/index.html]<br />
<br />
===== Prerequisites =====<br />
<br />
You must have installed pci-utils<br />
* Get http://atrey.karlin.mff.cuni.cz/~mj/pciutils.shtml<br />
<br />
===== How to build testbios =====<br />
* cd freebios/util/vgabios<br />
* Edit ./Makefile and fill in the correct values for your environment (I build on a 64 AMD so my makefile looks like this)<br />
<br />
Begin ./Makefile for x64:<br />
CC = gcc<br />
ARCH := $(shell uname -m | sed -e s,i[3456789]86,i386,)<br />
INCLUDE = -I ../pciutils-2.1.11<br />
CFLAGS = -Wall -Ix86emu/include -O2 -g $(INCLUDE)<br />
<br />
INTOBJS = int10.o int15.o int16.o int1a.o inte6.o<br />
OBJECTS = testbios.o helper_exec.o helper_mem.o $(INTOBJS)<br />
LDFLAGS = -static-libgcc -static<br />
<br />
LIBS = x86emu/src/x86emu/libx86emu.a ../pciutils-2.1.11/lib/libpci.a<br />
<br />
# user space pci is the only option right now.<br />
OBJECTS += pci-userspace.o<br />
<br />
ifeq ($(shell if test "$(ARCH)" == "x86_64" ; then echo 1; fi), 1)<br />
CFLAGS +=-m32 -march=i386<br />
endif<br />
<br />
all: testbios<br />
<br />
testbios: $(OBJECTS) $(LIBS)<br />
$(CC) $(CFLAGS) -o testbios $(OBJECTS) $(LDFLAGS)<br />
$(LIBS)<br />
<br />
helper_exec.o: helper_exec.c test.h<br />
<br />
x86emu/src/x86emu/libx86emu.a:<br />
$(MAKE) -C x86emu/src/x86emu/ -f makefile.linux<br />
<br />
clean:<br />
$(MAKE) -C x86emu/src/x86emu/ -f makefile.linux clean<br />
rm -f *.o *~ testbios <br />
<br />
distclean: clean<br />
$(MAKE) -C x86emu/src/x86emu/ -f makefile.linux clean<br />
<br />
<br />
End ./Makefile<br />
<br />
* Edit ~vgabios/x86emu/src/x86emu/makefile.linux and fill in the correct values for your environment (I build on a 64 AMD so my makefile looks like this)<br />
<br />
Begin ~vgabios/x86emu/src/x86emu/makefile.linux:<br />
#############################################################################<br />
#<br />
# Realmode X86 Emulator Library<br />
#<br />
# Copyright (C) 1996-1999 SciTech Software, Inc.<br />
#<br />
#<br />
<nowiki>========================================================================</nowiki><br />
#<br />
# Permission to use, copy, modify, distribute, and sell this software and<br />
# its documentation for any purpose is hereby granted without fee,<br />
# provided that the above copyright notice appear in all copies and that<br />
# both that copyright notice and this permission notice appear in<br />
# supporting documentation, and that the name of the authors not be used<br />
# in advertising or publicity pertaining to distribution of the software<br />
# without specific, written prior permission. The authors makes no<br />
# representations about the suitability of this software for any purpose.<br />
# It is provided "as is" without express or implied warranty.<br />
#<br />
# THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,<br />
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO<br />
# EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR<br />
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF<br />
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR<br />
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR<br />
# PERFORMANCE OF THIS SOFTWARE.<br />
#<br />
#<br />
<nowiki>========================================================================</nowiki><br />
#<br />
# Descripton: Linux specific makefile for the x86emu library.<br />
#<br />
#############################################################################<br />
<br />
TARGETLIB = libx86emu.a<br />
<br />
<br />
OBJS=\<br />
debug.o \<br />
decode.o \<br />
fpu.o \<br />
ops.o \<br />
ops2.o \<br />
prim_ops.o \<br />
sys.o<br />
<br />
$(TARGETLIB): $(OBJS)<br />
ar rv $(TARGETLIB) $(OBJS)<br />
<br />
INCS = -I. -Ix86emu -I../../include<br />
CFLAGS += -D__DRIVER__ -DFORCE_POST -D_CEXPORT= -DNO_LONG_LONG -DDEBUG<br />
ARCH := $(shell uname -m | sed -e s,i[3456789]86,i386,)<br />
ifeq ($(shell if test "$(ARCH)" == "x86_64" ; then echo 1; fi), 1)<br />
CFLAGS +=-m32 -march=i386<br />
endif<br />
<br />
<br />
.c.o:<br />
# gcc -m32 -march=i386 -g -O -Wall -c $(CFLAGS) $(INCS) $*.c<br />
gcc -g -O -Wall -c $(CFLAGS) $(INCS) $*.c<br />
<br />
.cpp.o:<br />
# gcc -m32 -march=i386 -c $(CFLAGS) $(INCS) $*.cpp<br />
gcc -c $(CFLAGS) $(INCS) $*.cpp <br />
<br />
clean:<br />
rm -f *.a *.o<br />
<br />
validate: validate.o libx86emu.a<br />
gcc -o validate validate.o -lx86emu -L.<br />
<br />
End ~vgabios/x86emu/src/x86emu/makefile.linux<br />
<br />
* Once built you could have a 32bit testbios executable made. Depending on your embedded environment you might want to have it built shared as the above example makes it static. Just remove -static-libgcc -static from the LDFLAGS on ./Makefile if you wish to have it built shared.<br />
<br />
===== How to retrieve a good video bios =====<br />
There are sites that have video bios roms on their website. (I know of this one for nvidia cards: [http://whitebunny.demon.nl/hardware/chipset_nvidia.html])<br />
<br />
However you should be able to retrieve your own video bios as well with linux.<br />
* Boot up a machine with a commercial bios (not linux bios) with the video card you wish to work under linux bios.<br />
** From the command line enter:<br />
dd if=/dev/mem of=vgabios.bin skip=1536 count=128 or <br />
dd if=/dev/mem of=vgabios.bin bs=1k count=64 skip=786432<br />
<br />
This assumes you card's bios is cached in 0xc0000. You<br />
can see where and how much your card's bios is using by<br />
doing a cat iomem | grep "Video ROM"<br />
<br />
*** dd Explained (man dd to learn more):<br />
**** if is the location to retrieve from.<br />
**** of is the output file (your rom image)<br />
**** skip jumps n blocks where the default n is 512 bytes<br />
**** count is how many blocks you wish to read<br />
**** bs is the block size<br />
* You now have a video bios image<br />
<br />
===== How to use testbios =====<br />
* Currently testbios only works from user space linux (10/4/04)<br />
* Example from a linux command line or script enter the following to get your video bios programmed:<br />
./testbios -s 65536 --abseg /dev/mem ./vgabios.bin<br />
** Testbios explained<br />
*** -s how much of the video bios is there<br />
*** --abseg where would you like to write this (/dev/mem default)<br />
*** filename of video bios<br />
*** -d diag mode <br />
**** How to get pci busdevfn<br />
**** lspci<br />
**** look for your video card<br />
Example:<br />
2:00:00<br />
2 (00 << 3) | 00 = 0x200<br />
Example:<br />
00:12.0:<br />
0 (12 << 3) | 0 = 0x90<br />
*** -t dump <br />
*** -c codesegment Where do you want to start, default is 0xc0000<br />
*** -b base Where do you want base to be default is 0xc000<br />
*** -i instruction pointer usually left off as the default<br />
<br />
==== Followup to Testbios FAQ ====<br />
-----Original Message-----<br />
From: linuxbios-admin@clustermatic.org<br />
[mailto:linuxbios-admin@clustermatic.org] On Behalf Of Dave Aubin<br />
Sent: Tuesday, October 05, 2004 2:22 PM<br />
To: Richard Smith<br />
Cc: linuxbios@clustermatic.org<br />
Subject: RE: Testbios help with nvidia 6800Gt and simple how to<br />
<br />
Hi,<br />
<br />
Thank you:) Yes, it was at 0xc0000-0xc7fff, which is only 32k.<br />
But the image I got from the windows tool was 64k (double 8000).<br />
Weird. I would like to stay away from window tools.<br />
The info you provided is nice. I wish there was a way for us To make<br />
a faq and we could add this to the testbios faq. There Is a lot of good<br />
info on the clustermatic list, but it is all Dispersed. <br />
Ron if I write a simple faq can you provide some mechanism to Allow<br />
updates to it?<br />
<br />
Thanks,<br />
Dave <br />
<br />
-----Original Message-----<br />
From: Richard Smith [mailto:rsmith@bitworks.com]<br />
Sent: Tuesday, October 05, 2004 2:16 PM<br />
To: Dave Aubin<br />
Cc: linuxbios@clustermatic.org<br />
Subject: Re: Testbios help with nvidia 6800Gt and simple how to<br />
<br />
Dave Aubin wrote:<br />
<br />
> It seems my dd returned an unusable binary. I found a good binary for<br />
<br />
> The nvidia card from here:<br />
> http://whitebunny.demon.nl/hardware/chipset_nvidia.html<br />
> <br />
<br />
I was wondering about your dd command that but I had not had a chance to<br />
respond yet.<br />
<br />
This is what I use:<br />
<br />
dd if=/dev/mem of=vbios.bin bs=1k count=64 skip=786432<br />
<br />
That will rip the bios from 0x0c0000. You can verify that you actually<br />
have bios there with<br />
<br />
'hd -s 0x0c0000 -n 256 /dev/mem'<br />
<br />
in some cases it may be located at 0x0e0000 rather than 0x0c0000.<br />
<br />
It should start with the 0x55aa (Little endian) or 0xaa55 (big endian)<br />
and futher on you should see some text identifying the bios.<br />
<br />
<br />
--<br />
Richard A. Smith<br />
<br />
<br />
_______________________________________________<br />
Linuxbios mailing list<br />
Linuxbios@clustermatic.org<br />
http://www.clustermatic.org/mailman/listinfo/linuxbios</div>Jdarbyhttps://www.coreboot.org/index.php?title=FAQ&diff=70FAQ2005-03-01T20:20:19Z<p>Jdarby: </p>
<hr />
<div>== General ==<br />
<br />
=== What is LinuxBIOS? ===<br />
<br />
LinuxBIOS aims to replace the normal BIOS found on PCs, Alphas, and other machines with a Linux kernel that can boot Linux from a cold start. LinuxBIOS is primarily Linux - about 10 lines of patches to the current Linux kernel. Additionally, the startup code - about 500 lines of assembly and 5000 lines of C - executes 16 instructions to get into 32-bit mode and then performs DRAM and other hardware initialization required before Linux can take over. <br />
<br />
Our primary motivation for the project was maintenance of large clusters, but not surprisingly interest and contributions have come from people with varying backgrounds. <br />
<br />
=== Why do we need LinuxBIOS? ===<br />
<br />
Current PCs used as cluster nodes depend on a vendor-supplied BIOS for booting. The BIOS in turn relies on inherently unreliable devices such as floppy disks and hard drives to boot the operating system. In addition, current BIOS software is unable to accommodate non-standard hardware making it difficult to support experimental work. The BIOS is slow and often erroneous and redundant and, most importantly, maintenance is a nightmare. Imagine walking around with a keyboard and monitor to every one of the 128 nodes in a cluster to change one BIOS setting. <br />
<br />
The LinuxBIOS gunzip's the Linux kernel straight out of NVRAM and essentially requires no moving parts other than the fan. It does a minimal amount of hardware initialization before jumping to the kernel start and lets Linux do the rest. As a result, it is much faster (current record 3 seconds), which has sparked interest in the consumer electronics community as well. Moreover, updates can be performed over the network. <br />
<br />
Using a real operating system to boot another operating system provides much greater flexibility than using a simple netboot program or the BIOS. Because Linux is the boot mechanism, it can boot over standard Ethernet or over other interconnects such as Myrinet, Quadrics, or SCI. It can use SSH connections to load the kernel, or it can use the InterMezzo caching file system or traditional NFS. Cluster nodes can be as simple as they need to be - perhaps as simple as a CPU and memory, no disk, no floppy, and no file system. The nodes will be much less autonomous thus making them easier to maintain. <br />
<br />
=== Who is working on LinuxBIOS? ===<br />
<br />
The LinuxBIOS project was started in the winter of 1999 in the Advanced Computing Laboratory at Los Alamos National Laboratory by Ron Minnich. Two undergraduate students, James Hendricks and Dale Webster spent their winter vacation putting together the proof of concept implementation. <br />
<br />
Since then, a long list of people have contributed both in discussions and actual code. See our contributors page for details. Please don't be shy and let us know if you are missing from the list. It's not a purposeful omission, just an unfortunate mistake. <br />
<br />
=== Who is funding LinuxBIOS? ===<br />
<br />
The LinuxBIOS project is funded by the Los Alamos Computer Science Institute and the Department of Energy's Office of Science. <br />
<br />
=== Will LinuxBIOS work on my machine? ===<br />
<br />
See the status page for which mainboards are supported. Also, see the products page for a list of vendors selling products running LinuxBIOS. <br />
<br />
=== What commercial products use LinuxBIOS? ===<br />
<br />
See the products page. <br />
<br />
=== How can I help with LinuxBIOS? ===<br />
<br />
Contact [[User:Rminnich|Ron Minnich]] for projects related to LinuxBIOS. <br />
<br />
== Developer ==<br />
<br />
=== Where is the mailing list archived? ===<br />
<br />
The best archive out there is at the University of Maryland. (jdarby: can someone hunt out this url? I don't know it offhand.)<br />
<br />
In addition, we've pieced together an archive that dates back to about the beginning of 2000 (including messages that were going to the freebios and openbios mailing lists). <br />
<br />
=== Where do I get the code? ===<br />
<br />
See the [[Download_freebios_v2|download page]].<br />
<br />
=== How do I build? ===<br />
<br />
See the documentation. For help generating a config file, see Generate a config file. (jdarby: this needs to be wikiized)<br />
<br />
=== Why is the code so complicated and what can I do to make it easier? ===<br />
<br />
The reason is the complexity of the problem. We support a lot of hardware, and a given chip on a given board will most likely not be configured quite the same as the same chip on some other board. <br />
<br />
To help make code navigation easier, pick a target and build that target. Then, in the build directory, type make tags or make etags to get your favorite tags file. <br />
<br />
=== What chipsets are supported? ===<br />
<br />
See status for the most up-to-date info.. (jdarby: this needs to be wikiized)<br />
<br />
=== What is this POST card thing? ===<br />
<br />
A POST card will save your life. The term POST means Power On Self Test and comes from the original IBM specifications for the BIOS. Port 80 is a pre-defined port to which programs can output a byte. The POST card displays the byte in hex on its 2 digit display. We use a lot of POST codes in LinuxBIOS, so if you can tell us the POST code you see, we will have some idea of what happened. <br />
<br />
If your LinuxBIOS machine is working properly, you will see it count up from 0xd0 to 0xd9 (while it is gunzipping the kernel) and then display 0x98 (Linux idle loop). <br />
<br />
=== How do I contribute my changes? ===<br />
<br />
Any one without commit privileges (which is most of you) need to get changes approved by Ron Minnich. <br />
<br />
=== How do I re-flash the BIOS? ===<br />
<br />
Download the appropriate flash update utility. Build the romimage as explained above and use the flash update utility to update the BIOS. Be warned that not all update utilities allow you to load your own BIOS image. For example, Intel decided to disallow it for the MS440GX mainboard (probably after hearing about us!) Here are some mainboard specific directions. <br />
<br />
SiS 630/950 M/Bs<br />
Ollie Lho provided us with flash utilities for these boards under freebios/util/sis. <br />
flash_on turns on the flash write enable. This needs to be run before loading the DoC drivers. <br />
flash_rom allows you to use your SiS 630/950 M/Bs as a flash programmer. It currently supports JEDEC flash parts, AMD am29f040b models, MXIC MX29F002 models, and SST28SF040C models. <br />
Intel L440GX<br />
Get the System Update Package directly from Intel. mcopy the ten files created from running make phlash onto the Intel flash burner disk and use the update utility to burn the BIOS. To restore the original BIOS, set the recovery boot jumper on the motherboard, put the floppy in, and it will load and reflash the original BIOS. <br />
How do I actually burn a flash ROM? <br />
<br />
Buy your favorite flash burner (we use a Needham Electronics EMP 30). Use make floppy to create the romimage and copy it to a floppy. Then use the provided software to burn the flash. <br />
<br />
=== How do I burn a DoC? ===<br />
<br />
Currently, only the DoC Millennium is supported. See the documentation. <br />
<br />
=== Can I do any serious damage mucking around with this stuff? ===<br />
<br />
Any time you stick your hand into an open machine while the power is on, you're risking life and limb. That said, there are also some other not-so-nice things that can happen if you mess up (not that we would know). <br />
<br />
* Incorrect inserstion of the flash (1 casualty) <br />
* Incorrect jumper settings (1 casualty) <br />
* Aggressive and/or inappropriate use of metal objects such as screwdrivers (2 casualties) <br />
* Miscellaneous miswirings and mishandlings (3+ casualties) <br />
<br />
=== A note on electrostatic discharge (ESD) and ESD protection (thanks to Bari Ari) ===<br />
<br />
ESD can damage disk drives, boards, DoC's and other parts. The majority of the time, ESD events cause the component to degrade, but not fail testing procedures, resulting in failure at a later date. Because components do not fail immediately, technicians often underestimate the cost of not using ESD prevention measures. Provide at minimum some ESD protection by wearing an antistatic wrist strap attached to the chassis ground on your system when handling parts. <br />
<br />
Always handle boards carefully. They can be extremely sensitive to ESD. Hold boards only by their edges. After removing a board from its protective wrapper or from the system, place it component side up on a grounded, static free surface. Use a conductive foam pad if available. Do not slide the board over any surface. <br />
<br />
To further reduce the chances of ESD, you should create an ESD safe workstation that includes at minimum: <br />
<br />
* Conductive rubber mat, with a lead wire that can be connected to a metal surface to create a ground. <br />
<br />
* ESD wrist strap, which has a resistor inside the strap and a lead wire that can be connected to a metal surface as a ground. The grounding wire on the wrist strap should have between 1 and 10 Megaohms of resistance. The resistor should protect you in case you come in contact with a voltage source. If the resistor is bad or not included, the wrist strap is useless. An accidental shock could be serious and even deadly! <br />
<br />
* Table or workspace that is clean, clear of dust, and away from electrical machinery or other equipment that generates electrical currents. <br />
<br />
The idea is to ensure that all components you are going to interact with have the same charge. By connecting everything to the computer case, you ensure that the components of the case, the chair, and your body all have the same charge. If every object has the same charge, the electrons will not jump from one object to another minimizing the risk of ESD damage. <br />
<br />
=== How do I put a filesystem on DoC? ===<br />
OK, here is a little HOWTO on how to set up MTD with a file system. <br />
<br />
This is a m810lmr, booting out of DoC. I am going to reserve the first 2M for kernel. So the layout will be the first 2M for linuxbios and kernel, and 6M for a file system. Kernel is 2.4.17, with linux-2.4.17-sis.patch from linuxbios source tree, and config-2.4.17-sis from the linuxbios source tree. Mainboard is the pcchips m810lmr. <br />
<br />
So I: <br />
modprobe doc2001 <br />
modprobe docprobe <br />
dmesg <br />
<br />
which shows: <br />
<br />
DiskOnChip Millennium found at address 0xFFFC8000 <br />
Flash chip found: Manufacturer ID: 98, Chip ID: E6 (Toshiba TC58V64AFT/DC) <br />
1 flash chips found. Total DiskOnChip size: 8 MiB <br />
mtd: Giving out device 0 to DiskOnChip Millennium <br />
Ignoring DiskOnChip Millennium at 0xFFFCA000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFCC000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFCE000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD0000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD2000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD4000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD6000 - already configured <br />
(etc..) <br />
Now I need MTD utilities. <br />
So I: <br />
cvs -d :pserver:anoncvs@cvs.infradead.org:/home/cvs login <br />
CVS password: <br />
<br />
(password is anoncvs) <br />
Then: <br />
cvs -d :pserver:anoncvs@cvs.infradead.org:/home/cvs co mtd <br />
<br />
Forget the drivers and such, you don't need them. What you need is the tools. <br />
cd mtd/tools <br />
make <br />
<br />
Go ahead and copy the executables somewhere handy, you'll need them. <br />
<br />
Now we need to make the last 6M into a "disk". We need to format it. The tool is nftl_format, so:<br />
<br />
[root@carly util]# ./nftl_format <br />
$Id: nftl_format.c,v 1.17 2001/08/29 14:28:48 dwmw2 Exp $ <br />
Usage: ./nftl_format [ []] <br />
[root@carly util]# expr 2048 \* 1024 <br />
2097152 <br />
[root@carly util]# expr 6 \* 1024 \* 1024 <br />
6291456 <br />
[root@carly util]# ./nftl_format /dev/mtd0 2097152 6291456 <br />
$Id: nftl_format.c,v 1.17 2001/08/29 14:28:48 dwmw2 Exp $ <br />
Phase 1. Checking and erasing Erase Zones from 0x00200000 to 0x00800000 <br />
Phase 2.a Writing NFTL Media Header and Bad Unit Table <br />
Phase 2.b Writing Spare NFTL Media Header and Spare Bad Unit Table <br />
Phase 3. Writing Unit Control Information to each Erase Unit <br />
<br />
<br />
we now have a formatted disk in there. We can now partition it. <br />
<br />
[root@carly util]# modprobe nftl <br />
<br />
dmesg shows LOTS of errors, since this was never partitioned ... <br />
<br />
Also, if you don't have /dev/nftla, <br />
<br />
[root@carly util]# mknod /dev/nftla b 93 0 <br />
<br />
<br />
Don't use the script just yet, it makes /dev/nftla as b 93 16, which is the wrong unit #. <br />
<br />
now fdisk /dev/nftla <br />
<br />
[root@carly util]# fdisk /dev/nftlA <br />
Command (m for help): n <br />
Command action <br />
e extended <br />
p primary partition (1-4) <br />
p <br />
Partition number (1-4): 1 <br />
First cylinder (1-1, default 1): <br />
Using default value 1 <br />
Command (m for help): p <br />
Disk /dev/nftlA: 1 heads, 12224 sectors, 1 cylinders <br />
Units = cylinders of 12224 * 512 bytes <br />
Device Boot Start End Blocks Id System <br />
/dev/nftlA1 1 1 6111+ 83 Linux <br />
Partition 1 has different physical/logical endings: <br />
phys=(768, 0, 0) logical=(0, 0, 12224) <br />
Partition 1 does not end on cylinder boundary: <br />
phys=(768, 0, 0) should be (768, 0, 12224) <br />
Command (m for help): w <br />
The partition table has been altered! <br />
Calling ioctl() to re-read partition table. <br />
WARNING: If you have created or modified any DOS 6.x partitions, please see the fdisk manual page for additional information. <br />
Syncing disks. <br />
[root@carly util]# mknod /dev/nftlA1 b 93 1 <br />
[root@carly util]# mke2fs /dev/nftlA1 <br />
mke2fs 1.23, 15-Aug-2001 for EXT2 FS 0.5b, 95/08/09 <br />
Filesystem label= <br />
OS type: Linux <br />
Block size=1024 (log=0) <br />
Fragment size=1024 (log=0) <br />
1528 inodes, 6111 blocks <br />
305 blocks (4.99%) reserved for the super user <br />
First data block=1 <br />
1 block group <br />
8192 blocks per group, 8192 fragments per group <br />
1528 inodes per group <br />
Writing inode tables: done <br />
Writing superblocks and filesystem accounting information: done <br />
<br />
This filesystem will be automatically checked every 37 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. <br />
<br />
[root@carly util]# mount /dev/nftlA1 /mnt <br />
[root@carly util]# cd /mnt <br />
[root@carly mnt]# df . <br />
Filesystem 1k-blocks Used Available Use% Mounted on <br />
/dev/nftlA1 5915 13 5597 1% /mnt <br />
[root@carly mnt]# <br />
<br />
and so you now have an ext2 file system on the DoC. <br />
<br />
(Above is from [[User:Rminnich|Ron Minnich]])<br />
<br />
=== How do I turn off embedded sis630 devices? ===<br />
<br />
From aip@cwlinux.com Mon Mar 25 08:54:07 2002 <br />
Date: Mon, 25 Mar 2002 22:07:54 +0800 <br />
From: Andrew Ip <br />
To: Kei Furuuchi <br />
Cc: linuxbios@lanl.gov <br />
Subject: Re: How to turn off unused pci device. <br />
Hi, <br />
> I have pcchips m758lmr which has audio chip besides sis630. <br />
> those functions in sis630 are not used in the motherboard. <br />
> But, the functions keep coming up. How do I turn off those? <br />
The following is from Nikolai Valdych previous message. Hope this help. <br />
-Andrew <br />
-- <br />
Andrew Ip <br />
Email: aip@cwlinux.com <br />
Actualy, it was pretty simple 0x7c00 - All devices enabled, You play with first 4 bits only. Cos there are 4 devices, so you have any combination of 4 bits. Set bit to 1 to turn off the device, bit 0 to enable it. This is the device list: <br />
Multimedia Audio controler <br />
Modem controler <br />
Ethernet sis930 controler <br />
USB controler. <br />
For example, to turn off Ethernet + USB it would be: <br />
0x7c0c -> 1100 in binary (first 4 bits) <br />
To turn off Multimedia audio : <br />
0x7c01 -> 0001 <br />
in binary and so on... maybe there are more detail, but this is enogh for me, Ollie, again thanks! <br />
nikolai <br />
p.s. though my modem is not yet working..... damn driver...... <br />
<br />
=== What is a PIRQ table? ===<br />
<br />
From Adam Sulmicki: <br />
<br />
I found beautfiul descrition of the BIOS implementation of the PIRQ in the red PCI book.<br />
<br />
I found the description of the $PIR data structure in the<br />
http://www.microsoft.com/hwdev/archive/BUSBIOS/pciirq.asp<br />
<br />
looking over linuxbios sources I see that it saves the $PIR data structure<br />
somewhere between 0xf0000 & 0x100000.<br />
<br />
so it seems I'll have to search for $PIR and then save it before copying<br />
over our bios. sigh. hoped for some fixed address in mem.<br />
<br />
-- <br />
Adam<br />
http://www.eax.com The Supreme Headquarters of the 32 bit registers<br />
<br />
=== How do I set up etherboot with LinuxBIOS? ===<br />
<br />
Note from Ron: I have edited this somewhat to remove Geode-specific items. <br />
<br />
Christer Weinigel writes: <br />
To: rminnich@lanl.gov<br />
Cc: linuxbios@lanl.gov<br />
Subject: Re: LinuxBIOS + Etherboot HOWTO?<br />
<br />
<br />
I had some trouble using LinuxBIOS + etherboot... <br />
<br />
<br />
My bad, I messed up and used mkelfImage-1.6 that I got from ftp.lnxi.com, when I realized that I ought to use the one from freebios/util everything started working. <br />
<br />
<br />
Here's what I did to get LinuxBIOS + Etherboot loading and booting a Linux kernel using TFTP. <br />
<br />
<br />
/Christer <br />
<br />
<br />
Get etherboot-5.0 from the CVS tree on etherboot.sourceforge.net. <br />
<br />
<br />
Modify etherboot-5.0/src/Config, comment out: <br />
<br />
# BIOS select don't change unless you know what you are doing<br />
#CFLAGS32+= -DPCBIOS<br />
<br />
<br />
<br />
and uncomment the following: <br />
<br />
# Options to make a version of Etherboot that will work under linuxBIOS.<br />
CFLAGS32+= -DLINUXBIOS -DCONFIG_TSC_CURRTICKS -DCONSOLE_SERIAL \<br />
-DCOMCONSOLE=0x3f8 -DCOMPRESERVE -DCONFIG_PCI_DIRECT -DELF_IMAGE <br />
<br />
<br />
<br />
Compile Etherboot to make an elf file for your ethernet card: <br />
<br />
make bin32/natsemi.elf<br />
<br />
<br />
<br />
Compile and install mkelfImage from freebios/util/mkelfImage. <br />
<br />
<br />
Create a bootimage to put on your TFTP server: <br />
<br />
mkelfImage --command-line="root=/dev/hda2 console=ttyS0,38400" \<br />
--kernel vmlinux -o /tftpboot/kernel<br />
<br />
<br />
<br />
Finally, make sure that your BOOT/DCHP server is answering and that the TFTP server is active. <br />
<br />
<br />
Tell LinuxBIOS to boot an elf Image, and tell LinuxBIOS where it is: <br />
<br />
option USE_ELF_BOOT=1<br />
<br />
<br />
<br />
I have placed natsemi.elf in the first 64k of my BIOS flash chip, and LinuxBIOS in the second 64k. <br />
<br />
insmod bios.o<br />
dd if=natsemi.elf of=/dev/bios bs=64k<br />
dd if=linuxbios.rom of=/dev/bios bs=64k seek=1<br />
<br />
<br />
<br />
Finally boot LinuxBIOS. <br />
<br />
=== How do I set GEODE video? ===<br />
<br />
From christer@weinigel.se Wed Nov 27 07:47:17 2002<br />
Date: 27 Nov 2002 10:55:01 +0100<br />
From: Christer Weinigel <br />
To: Adam Bezanson <br />
Cc: linuxbios@clustermatic.org<br />
Subject: Re: Geode Kernel Config <br />
<br />
"Adam Bezanson" writes:<br />
<br />
> I've got an Eval card from National Semi that contains<br />
> the SC1200. I'd like to try LinuxBios on it.<br />
> I've downloaded both the 2.4.18 and 2.4.19 kernels to start with.<br />
> What patches do I need to apply to the kernel?<br />
> Is there a config file I can use to configure the kernel, or<br />
> should I do it manually? <br />
<br />
A normal 2.4 Linux kernel will work fine as long as you compile for a<br />
586 CPU (CONFIG_M586), not Pentium or higher (CONFIG_M586TSC and up)<br />
since the TSC behaves a bit differently. <br />
<br />
If you want support for the watchdog or the GPIO pins in a 2.4 kernel,<br />
you can find an old patch from me at:<br />
<br />
http://groups.google.com/groups?selm=20020226015215.20118F5B%40acolyte.hack.org&oe=UTF-8&output=gplain<br />
<br />
An updated version of this patch has been included in Linux 2.5. Alan<br />
Cox' 2.5 kernel also has support for doing DMA on the SC1200 IDE<br />
controller; I don't know if there is a corresponding patch for 2.4. <br />
<br />
Other than that, take a look at the freebios/src/mainboard/nano/nano<br />
directory and make a copy of it. All you should have to do is to<br />
modify the Pin Multiplexing Register (PMR) and Miscellaneous Config<br />
Register (MCR) in the Config file and to modify the irq assignments.<br />
<br />
Depending on what you want to do, there are a few limitations with<br />
the current LinuxBIOS on the SC1200: <br />
<br />
There is no video support in LinuxBIOS itself, so you won't get<br />
any video until you have loaded the NatSemi Geode Linux<br />
framebuffer driver (can be found at www.linux4.tv under the<br />
heading SP1SC10 Platform Image).<br />
<br />
There is no SMM/VSA support at all, this means that anything<br />
relying on it won't work. What this means is that Audio won't<br />
work.<br />
<br />
Other than that everything works fine, IDE in PIO mode, the PCI bus,<br />
watchdog, GPIOs, everything.<br />
<br />
/Christer<br />
<br />
-- <br />
"Just how much can I get away with and still go to heaven?"<br />
<br />
Freelance consultant specializing in device driver programming for Linux <br />
Christer Weinigel http://www.weinigel.se<br />
_______________________________________________<br />
Linuxbios mailing list<br />
Linuxbios@clustermatic.org<br />
http://www.clustermatic.org/mailman/listinfo/linuxbios<br />
<br />
<br />
=== How do I set up testbios? ===<br />
<br />
From daubin@actuality-systems.com Wed Oct 6 10:23:10 2004<br />
Date: Tue, 5 Oct 2004 15:19:24 -0400<br />
From: Dave Aubin <br />
To: linuxbios@clustermatic.org<br />
Subject: RE: Testbios help with nvidia 6800Gt and simple how to<br />
<br />
I've taken the time to put together a simple testbios faq.<br />
I hope it is helpful. Feedback and additions are welcome. <br />
<br />
Thanks,<br />
Dave<br />
<br />
==== Testbios (vgabios) Faq ====<br />
<br />
Date: 10/5/2004<br />
Author(s): David Aubin daubin@actuality-systems.com<br />
<br />
Purpose: Testbios is an i386 emulator that sits on top of userspace linux. It's primary purpose is to provide program video rom's in to the cached memory area.<br />
<br />
===== Where to obtain testbios =====<br />
<br />
Testbios(vgabios) can be retrieved from the linuxbios/freebios source tree: [http://www.linuxbios.org/developer/download/index.html]<br />
<br />
===== Prerequisites =====<br />
<br />
You must have installed pci-utils<br />
* Get http://atrey.karlin.mff.cuni.cz/~mj/pciutils.shtml<br />
<br />
===== How to build testbios =====<br />
* cd freebios/util/vgabios<br />
* Edit ./Makefile and fill in the correct values for your environment (I build on a 64 AMD so my makefile looks like this)<br />
<br />
Begin ./Makefile for x64:<br />
CC = gcc<br />
ARCH := $(shell uname -m | sed -e s,i[3456789]86,i386,)<br />
INCLUDE = -I ../pciutils-2.1.11<br />
CFLAGS = -Wall -Ix86emu/include -O2 -g $(INCLUDE)<br />
<br />
INTOBJS = int10.o int15.o int16.o int1a.o inte6.o<br />
OBJECTS = testbios.o helper_exec.o helper_mem.o $(INTOBJS)<br />
LDFLAGS = -static-libgcc -static<br />
<br />
LIBS = x86emu/src/x86emu/libx86emu.a ../pciutils-2.1.11/lib/libpci.a<br />
<br />
# user space pci is the only option right now.<br />
OBJECTS += pci-userspace.o<br />
<br />
ifeq ($(shell if test "$(ARCH)" == "x86_64" ; then echo 1; fi), 1)<br />
CFLAGS +=-m32 -march=i386<br />
endif<br />
<br />
all: testbios<br />
<br />
testbios: $(OBJECTS) $(LIBS)<br />
$(CC) $(CFLAGS) -o testbios $(OBJECTS) $(LDFLAGS)<br />
$(LIBS)<br />
<br />
helper_exec.o: helper_exec.c test.h<br />
<br />
x86emu/src/x86emu/libx86emu.a:<br />
$(MAKE) -C x86emu/src/x86emu/ -f makefile.linux<br />
<br />
clean:<br />
$(MAKE) -C x86emu/src/x86emu/ -f makefile.linux clean<br />
rm -f *.o *~ testbios <br />
<br />
distclean: clean<br />
$(MAKE) -C x86emu/src/x86emu/ -f makefile.linux clean<br />
<br />
<br />
End ./Makefile<br />
<br />
* Edit ~vgabios/x86emu/src/x86emu/makefile.linux and fill in the correct values for your environment (I build on a 64 AMD so my makefile looks like this)<br />
<br />
Begin ~vgabios/x86emu/src/x86emu/makefile.linux:<br />
#############################################################################<br />
#<br />
# Realmode X86 Emulator Library<br />
#<br />
# Copyright (C) 1996-1999 SciTech Software, Inc.<br />
#<br />
#<br />
<nowiki>========================================================================</nowiki><br />
#<br />
# Permission to use, copy, modify, distribute, and sell this software and<br />
# its documentation for any purpose is hereby granted without fee,<br />
# provided that the above copyright notice appear in all copies and that<br />
# both that copyright notice and this permission notice appear in<br />
# supporting documentation, and that the name of the authors not be used<br />
# in advertising or publicity pertaining to distribution of the software<br />
# without specific, written prior permission. The authors makes no<br />
# representations about the suitability of this software for any purpose.<br />
# It is provided "as is" without express or implied warranty.<br />
#<br />
# THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,<br />
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO<br />
# EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR<br />
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF<br />
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR<br />
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR<br />
# PERFORMANCE OF THIS SOFTWARE.<br />
#<br />
#<br />
<nowiki>========================================================================</nowiki><br />
#<br />
# Descripton: Linux specific makefile for the x86emu library.<br />
#<br />
#############################################################################<br />
<br />
TARGETLIB = libx86emu.a<br />
<br />
<br />
OBJS=\<br />
debug.o \<br />
decode.o \<br />
fpu.o \<br />
ops.o \<br />
ops2.o \<br />
prim_ops.o \<br />
sys.o<br />
<br />
$(TARGETLIB): $(OBJS)<br />
ar rv $(TARGETLIB) $(OBJS)<br />
<br />
INCS = -I. -Ix86emu -I../../include<br />
CFLAGS += -D__DRIVER__ -DFORCE_POST -D_CEXPORT= -DNO_LONG_LONG -DDEBUG<br />
ARCH := $(shell uname -m | sed -e s,i[3456789]86,i386,)<br />
ifeq ($(shell if test "$(ARCH)" == "x86_64" ; then echo 1; fi), 1)<br />
CFLAGS +=-m32 -march=i386<br />
endif<br />
<br />
<br />
.c.o:<br />
# gcc -m32 -march=i386 -g -O -Wall -c $(CFLAGS) $(INCS) $*.c<br />
gcc -g -O -Wall -c $(CFLAGS) $(INCS) $*.c<br />
<br />
.cpp.o:<br />
# gcc -m32 -march=i386 -c $(CFLAGS) $(INCS) $*.cpp<br />
gcc -c $(CFLAGS) $(INCS) $*.cpp <br />
<br />
clean:<br />
rm -f *.a *.o<br />
<br />
validate: validate.o libx86emu.a<br />
gcc -o validate validate.o -lx86emu -L.<br />
<br />
End ~vgabios/x86emu/src/x86emu/makefile.linux<br />
<br />
* Once built you could have a 32bit testbios executable made. Depending on your embedded environment you might want to have it built shared as the above example makes it static. Just remove -static-libgcc -static from the LDFLAGS on ./Makefile if you wish to have it built shared.<br />
<br />
===== How to retrieve a good video bios =====<br />
There are sites that have video bios roms on their website. (I know of this one for nvidia cards: [http://whitebunny.demon.nl/hardware/chipset_nvidia.html])<br />
<br />
However you should be able to retrieve your own video bios as well with linux.<br />
* Boot up a machine with a commercial bios (not linux bios) with the video card you wish to work under linux bios.<br />
** From the command line enter:<br />
dd if=/dev/mem of=vgabios.bin skip=1536 count=128 or <br />
dd if=/dev/mem of=vgabios.bin bs=1k count=64 skip=786432<br />
<br />
This assumes you card's bios is cached in 0xc0000. You<br />
can see where and how much your card's bios is using by<br />
doing a cat iomem | grep "Video ROM"<br />
<br />
*** dd Explained (man dd to learn more):<br />
**** if is the location to retrieve from.<br />
**** of is the output file (your rom image)<br />
**** skip jumps n blocks where the default n is 512 bytes<br />
**** count is how many blocks you wish to read<br />
**** bs is the block size<br />
* You now have a video bios image<br />
<br />
===== How to use testbios =====<br />
* Currently testbios only works from user space linux (10/4/04)<br />
* Example from a linux command line or script enter the following to get your video bios programmed:<br />
./testbios -s 65536 --abseg /dev/mem ./vgabios.bin<br />
** Testbios explained<br />
*** -s how much of the video bios is there<br />
*** --abseg where would you like to write this (/dev/mem default)<br />
*** filename of video bios<br />
*** -d diag mode <br />
**** How to get pci busdevfn<br />
**** lspci<br />
**** look for your video card<br />
Example:<br />
2:00:00<br />
2 (00 << 3) | 00 = 0x200<br />
Example:<br />
00:12.0:<br />
0 (12 << 3) | 0 = 0x90<br />
*** -t dump <br />
*** -c codesegment Where do you want to start, default is 0xc0000<br />
*** -b base Where do you want base to be default is 0xc000<br />
*** -i instruction pointer usually left off as the default<br />
<br />
==== Followup to Testbios FAQ ====<br />
-----Original Message-----<br />
From: linuxbios-admin@clustermatic.org<br />
[mailto:linuxbios-admin@clustermatic.org] On Behalf Of Dave Aubin<br />
Sent: Tuesday, October 05, 2004 2:22 PM<br />
To: Richard Smith<br />
Cc: linuxbios@clustermatic.org<br />
Subject: RE: Testbios help with nvidia 6800Gt and simple how to<br />
<br />
Hi,<br />
<br />
Thank you:) Yes, it was at 0xc0000-0xc7fff, which is only 32k.<br />
But the image I got from the windows tool was 64k (double 8000).<br />
Weird. I would like to stay away from window tools.<br />
The info you provided is nice. I wish there was a way for us To make<br />
a faq and we could add this to the testbios faq. There Is a lot of good<br />
info on the clustermatic list, but it is all Dispersed. <br />
Ron if I write a simple faq can you provide some mechanism to Allow<br />
updates to it?<br />
<br />
Thanks,<br />
Dave <br />
<br />
-----Original Message-----<br />
From: Richard Smith [mailto:rsmith@bitworks.com]<br />
Sent: Tuesday, October 05, 2004 2:16 PM<br />
To: Dave Aubin<br />
Cc: linuxbios@clustermatic.org<br />
Subject: Re: Testbios help with nvidia 6800Gt and simple how to<br />
<br />
Dave Aubin wrote:<br />
<br />
> It seems my dd returned an unusable binary. I found a good binary for<br />
<br />
> The nvidia card from here:<br />
> http://whitebunny.demon.nl/hardware/chipset_nvidia.html<br />
> <br />
<br />
I was wondering about your dd command that but I had not had a chance to<br />
respond yet.<br />
<br />
This is what I use:<br />
<br />
dd if=/dev/mem of=vbios.bin bs=1k count=64 skip=786432<br />
<br />
That will rip the bios from 0x0c0000. You can verify that you actually<br />
have bios there with<br />
<br />
'hd -s 0x0c0000 -n 256 /dev/mem'<br />
<br />
in some cases it may be located at 0x0e0000 rather than 0x0c0000.<br />
<br />
It should start with the 0x55aa (Little endian) or 0xaa55 (big endian)<br />
and futher on you should see some text identifying the bios.<br />
<br />
<br />
--<br />
Richard A. Smith<br />
<br />
<br />
_______________________________________________<br />
Linuxbios mailing list<br />
Linuxbios@clustermatic.org<br />
http://www.clustermatic.org/mailman/listinfo/linuxbios</div>Jdarbyhttps://www.coreboot.org/index.php?title=FAQ&diff=69FAQ2005-03-01T20:19:01Z<p>Jdarby: </p>
<hr />
<div>== General ==<br />
<br />
=== What is LinuxBIOS? ===<br />
<br />
LinuxBIOS aims to replace the normal BIOS found on PCs, Alphas, and other machines with a Linux kernel that can boot Linux from a cold start. LinuxBIOS is primarily Linux - about 10 lines of patches to the current Linux kernel. Additionally, the startup code - about 500 lines of assembly and 5000 lines of C - executes 16 instructions to get into 32-bit mode and then performs DRAM and other hardware initialization required before Linux can take over. <br />
<br />
Our primary motivation for the project was maintenance of large clusters, but not surprisingly interest and contributions have come from people with varying backgrounds. <br />
<br />
=== Why do we need LinuxBIOS? ===<br />
<br />
Current PCs used as cluster nodes depend on a vendor-supplied BIOS for booting. The BIOS in turn relies on inherently unreliable devices such as floppy disks and hard drives to boot the operating system. In addition, current BIOS software is unable to accommodate non-standard hardware making it difficult to support experimental work. The BIOS is slow and often erroneous and redundant and, most importantly, maintenance is a nightmare. Imagine walking around with a keyboard and monitor to every one of the 128 nodes in a cluster to change one BIOS setting. <br />
<br />
The LinuxBIOS gunzip's the Linux kernel straight out of NVRAM and essentially requires no moving parts other than the fan. It does a minimal amount of hardware initialization before jumping to the kernel start and lets Linux do the rest. As a result, it is much faster (current record 3 seconds), which has sparked interest in the consumer electronics community as well. Moreover, updates can be performed over the network. <br />
<br />
Using a real operating system to boot another operating system provides much greater flexibility than using a simple netboot program or the BIOS. Because Linux is the boot mechanism, it can boot over standard Ethernet or over other interconnects such as Myrinet, Quadrics, or SCI. It can use SSH connections to load the kernel, or it can use the InterMezzo caching file system or traditional NFS. Cluster nodes can be as simple as they need to be - perhaps as simple as a CPU and memory, no disk, no floppy, and no file system. The nodes will be much less autonomous thus making them easier to maintain. <br />
<br />
=== Who is working on LinuxBIOS? ===<br />
<br />
The LinuxBIOS project was started in the winter of 1999 in the Advanced Computing Laboratory at Los Alamos National Laboratory by Ron Minnich. Two undergraduate students, James Hendricks and Dale Webster spent their winter vacation putting together the proof of concept implementation. <br />
<br />
Since then, a long list of people have contributed both in discussions and actual code. See our contributors page for details. Please don't be shy and let us know if you are missing from the list. It's not a purposeful omission, just an unfortunate mistake. <br />
<br />
=== Who is funding LinuxBIOS? ===<br />
<br />
The LinuxBIOS project is funded by the Los Alamos Computer Science Institute and the Department of Energy's Office of Science. <br />
<br />
=== Will LinuxBIOS work on my machine? ===<br />
<br />
See the status page for which mainboards are supported. Also, see the products page for a list of vendors selling products running LinuxBIOS. <br />
<br />
=== What commercial products use LinuxBIOS? ===<br />
<br />
See the products page. <br />
<br />
=== How can I help with LinuxBIOS? ===<br />
<br />
Contact [[User:Rminnich|Ron Minnich]] for projects related to LinuxBIOS. <br />
<br />
== Developer ==<br />
<br />
=== Where is the mailing list archived? ===<br />
<br />
The best archive out there is at the University of Maryland. (jdarby: can someone hunt out this url? I don't know it offhand.)<br />
<br />
In addition, we've pieced together an archive that dates back to about the beginning of 2000 (including messages that were going to the freebios and openbios mailing lists). <br />
<br />
=== Where do I get the code? ===<br />
<br />
See the [[Download_freebios_v2|download page]].<br />
<br />
=== How do I build? ===<br />
<br />
See the documentation. For help generating a config file, see Generate a config file. (jdarby: this needs to be wikiized)<br />
<br />
=== Why is the code so complicated and what can I do to make it easier? ===<br />
<br />
The reason is the complexity of the problem. We support a lot of hardware, and a given chip on a given board will most likely not be configured quite the same as the same chip on some other board. <br />
<br />
To help make code navigation easier, pick a target and build that target. Then, in the build directory, type make tags or make etags to get your favorite tags file. <br />
<br />
=== What chipsets are supported? ===<br />
<br />
See status for the most up-to-date info.. (jdarby: this needs to be wikiized)<br />
<br />
=== What is this POST card thing? ===<br />
<br />
A POST card will save your life. The term POST means Power On Self Test and comes from the original IBM specifications for the BIOS. Port 80 is a pre-defined port to which programs can output a byte. The POST card displays the byte in hex on its 2 digit display. We use a lot of POST codes in LinuxBIOS, so if you can tell us the POST code you see, we will have some idea of what happened. <br />
<br />
If your LinuxBIOS machine is working properly, you will see it count up from 0xd0 to 0xd9 (while it is gunzipping the kernel) and then display 0x98 (Linux idle loop). <br />
<br />
=== How do I contribute my changes? ===<br />
<br />
Any one without commit privileges (which is most of you) need to get changes approved by Ron Minnich. <br />
<br />
=== How do I re-flash the BIOS? ===<br />
<br />
Download the appropriate flash update utility. Build the romimage as explained above and use the flash update utility to update the BIOS. Be warned that not all update utilities allow you to load your own BIOS image. For example, Intel decided to disallow it for the MS440GX mainboard (probably after hearing about us!) Here are some mainboard specific directions. <br />
<br />
SiS 630/950 M/Bs<br />
Ollie Lho provided us with flash utilities for these boards under freebios/util/sis. <br />
flash_on turns on the flash write enable. This needs to be run before loading the DoC drivers. <br />
flash_rom allows you to use your SiS 630/950 M/Bs as a flash programmer. It currently supports JEDEC flash parts, AMD am29f040b models, MXIC MX29F002 models, and SST28SF040C models. <br />
Intel L440GX<br />
Get the System Update Package directly from Intel. mcopy the ten files created from running make phlash onto the Intel flash burner disk and use the update utility to burn the BIOS. To restore the original BIOS, set the recovery boot jumper on the motherboard, put the floppy in, and it will load and reflash the original BIOS. <br />
How do I actually burn a flash ROM? <br />
<br />
Buy your favorite flash burner (we use a Needham Electronics EMP 30). Use make floppy to create the romimage and copy it to a floppy. Then use the provided software to burn the flash. <br />
<br />
=== How do I burn a DoC? ===<br />
<br />
Currently, only the DoC Millennium is supported. See the documentation. <br />
<br />
=== Can I do any serious damage mucking around with this stuff? ===<br />
<br />
Any time you stick your hand into an open machine while the power is on, you're risking life and limb. That said, there are also some other not-so-nice things that can happen if you mess up (not that we would know). <br />
<br />
* Incorrect inserstion of the flash (1 casualty) <br />
* Incorrect jumper settings (1 casualty) <br />
* Aggressive and/or inappropriate use of metal objects such as screwdrivers (2 casualties) <br />
* Miscellaneous miswirings and mishandlings (3+ casualties) <br />
<br />
=== A note on electrostatic discharge (ESD) and ESD protection (thanks to Bari Ari) ===<br />
<br />
ESD can damage disk drives, boards, DoC's and other parts. The majority of the time, ESD events cause the component to degrade, but not fail testing procedures, resulting in failure at a later date. Because components do not fail immediately, technicians often underestimate the cost of not using ESD prevention measures. Provide at minimum some ESD protection by wearing an antistatic wrist strap attached to the chassis ground on your system when handling parts. <br />
<br />
Always handle boards carefully. They can be extremely sensitive to ESD. Hold boards only by their edges. After removing a board from its protective wrapper or from the system, place it component side up on a grounded, static free surface. Use a conductive foam pad if available. Do not slide the board over any surface. <br />
<br />
To further reduce the chances of ESD, you should create an ESD safe workstation that includes at minimum: <br />
<br />
* Conductive rubber mat, with a lead wire that can be connected to a metal surface to create a ground. <br />
<br />
* ESD wrist strap, which has a resistor inside the strap and a lead wire that can be connected to a metal surface as a ground. The grounding wire on the wrist strap should have between 1 and 10 Megaohms of resistance. The resistor should protect you in case you come in contact with a voltage source. If the resistor is bad or not included, the wrist strap is useless. An accidental shock could be serious and even deadly! <br />
<br />
* Table or workspace that is clean, clear of dust, and away from electrical machinery or other equipment that generates electrical currents. <br />
<br />
The idea is to ensure that all components you are going to interact with have the same charge. By connecting everything to the computer case, you ensure that the components of the case, the chair, and your body all have the same charge. If every object has the same charge, the electrons will not jump from one object to another minimizing the risk of ESD damage. <br />
<br />
=== How do I put a filesystem on DoC? ===<br />
OK, here is a little HOWTO on how to set up MTD with a file system. <br />
<br />
This is a m810lmr, booting out of DoC. I am going to reserve the first 2M for kernel. So the layout will be the first 2M for linuxbios and kernel, and 6M for a file system. Kernel is 2.4.17, with linux-2.4.17-sis.patch from linuxbios source tree, and config-2.4.17-sis from the linuxbios source tree. Mainboard is the pcchips m810lmr. <br />
<br />
So I: <br />
modprobe doc2001 <br />
modprobe docprobe <br />
dmesg <br />
<br />
which shows: <br />
<br />
DiskOnChip Millennium found at address 0xFFFC8000 <br />
Flash chip found: Manufacturer ID: 98, Chip ID: E6 (Toshiba TC58V64AFT/DC) <br />
1 flash chips found. Total DiskOnChip size: 8 MiB <br />
mtd: Giving out device 0 to DiskOnChip Millennium <br />
Ignoring DiskOnChip Millennium at 0xFFFCA000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFCC000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFCE000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD0000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD2000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD4000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD6000 - already configured <br />
(etc..) <br />
Now I need MTD utilities. <br />
So I: <br />
cvs -d :pserver:anoncvs@cvs.infradead.org:/home/cvs login <br />
CVS password: <br />
<br />
(password is anoncvs) <br />
Then: <br />
cvs -d :pserver:anoncvs@cvs.infradead.org:/home/cvs co mtd <br />
<br />
Forget the drivers and such, you don't need them. What you need is the tools. <br />
cd mtd/tools <br />
make <br />
<br />
Go ahead and copy the executables somewhere handy, you'll need them. <br />
<br />
Now we need to make the last 6M into a "disk". We need to format it. The tool is nftl_format, so:<br />
<br />
[root@carly util]# ./nftl_format <br />
$Id: nftl_format.c,v 1.17 2001/08/29 14:28:48 dwmw2 Exp $ <br />
Usage: ./nftl_format [ []] <br />
[root@carly util]# expr 2048 \* 1024 <br />
2097152 <br />
[root@carly util]# expr 6 \* 1024 \* 1024 <br />
6291456 <br />
[root@carly util]# ./nftl_format /dev/mtd0 2097152 6291456 <br />
$Id: nftl_format.c,v 1.17 2001/08/29 14:28:48 dwmw2 Exp $ <br />
Phase 1. Checking and erasing Erase Zones from 0x00200000 to 0x00800000 <br />
Phase 2.a Writing NFTL Media Header and Bad Unit Table <br />
Phase 2.b Writing Spare NFTL Media Header and Spare Bad Unit Table <br />
Phase 3. Writing Unit Control Information to each Erase Unit <br />
<br />
<br />
we now have a formatted disk in there. We can now partition it. <br />
<br />
[root@carly util]# modprobe nftl <br />
<br />
dmesg shows LOTS of errors, since this was never partitioned ... <br />
<br />
Also, if you don't have /dev/nftla, <br />
<br />
[root@carly util]# mknod /dev/nftla b 93 0 <br />
<br />
<br />
Don't use the script just yet, it makes /dev/nftla as b 93 16, which is the wrong unit #. <br />
<br />
now fdisk /dev/nftla <br />
<br />
[root@carly util]# fdisk /dev/nftlA <br />
Command (m for help): n <br />
Command action <br />
e extended <br />
p primary partition (1-4) <br />
p <br />
Partition number (1-4): 1 <br />
First cylinder (1-1, default 1): <br />
Using default value 1 <br />
Command (m for help): p <br />
Disk /dev/nftlA: 1 heads, 12224 sectors, 1 cylinders <br />
Units = cylinders of 12224 * 512 bytes <br />
Device Boot Start End Blocks Id System <br />
/dev/nftlA1 1 1 6111+ 83 Linux <br />
Partition 1 has different physical/logical endings: <br />
phys=(768, 0, 0) logical=(0, 0, 12224) <br />
Partition 1 does not end on cylinder boundary: <br />
phys=(768, 0, 0) should be (768, 0, 12224) <br />
Command (m for help): w <br />
The partition table has been altered! <br />
Calling ioctl() to re-read partition table. <br />
WARNING: If you have created or modified any DOS 6.x partitions, please see the fdisk manual page for additional information. <br />
Syncing disks. <br />
[root@carly util]# mknod /dev/nftlA1 b 93 1 <br />
[root@carly util]# mke2fs /dev/nftlA1 <br />
mke2fs 1.23, 15-Aug-2001 for EXT2 FS 0.5b, 95/08/09 <br />
Filesystem label= <br />
OS type: Linux <br />
Block size=1024 (log=0) <br />
Fragment size=1024 (log=0) <br />
1528 inodes, 6111 blocks <br />
305 blocks (4.99%) reserved for the super user <br />
First data block=1 <br />
1 block group <br />
8192 blocks per group, 8192 fragments per group <br />
1528 inodes per group <br />
Writing inode tables: done <br />
Writing superblocks and filesystem accounting information: done <br />
<br />
This filesystem will be automatically checked every 37 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. <br />
<br />
[root@carly util]# mount /dev/nftlA1 /mnt <br />
[root@carly util]# cd /mnt <br />
[root@carly mnt]# df . <br />
Filesystem 1k-blocks Used Available Use% Mounted on <br />
/dev/nftlA1 5915 13 5597 1% /mnt <br />
[root@carly mnt]# <br />
<br />
and so you now have an ext2 file system on the DoC. <br />
<br />
(Above is from [[User:Rminnich|Ron Minnich]])<br />
<br />
=== How do I turn off embedded sis630 devices? ===<br />
<br />
From aip@cwlinux.com Mon Mar 25 08:54:07 2002 <br />
Date: Mon, 25 Mar 2002 22:07:54 +0800 <br />
From: Andrew Ip <br />
To: Kei Furuuchi <br />
Cc: linuxbios@lanl.gov <br />
Subject: Re: How to turn off unused pci device. <br />
Hi, <br />
> I have pcchips m758lmr which has audio chip besides sis630. <br />
> those functions in sis630 are not used in the motherboard. <br />
> But, the functions keep coming up. How do I turn off those? <br />
The following is from Nikolai Valdych previous message. Hope this help. <br />
-Andrew <br />
-- <br />
Andrew Ip <br />
Email: aip@cwlinux.com <br />
Actualy, it was pretty simple 0x7c00 - All devices enabled, You play with first 4 bits only. Cos there are 4 devices, so you have any combination of 4 bits. Set bit to 1 to turn off the device, bit 0 to enable it. This is the device list: <br />
Multimedia Audio controler <br />
Modem controler <br />
Ethernet sis930 controler <br />
USB controler. <br />
For example, to turn off Ethernet + USB it would be: <br />
0x7c0c -> 1100 in binary (first 4 bits) <br />
To turn off Multimedia audio : <br />
0x7c01 -> 0001 <br />
in binary and so on... maybe there are more detail, but this is enogh for me, Ollie, again thanks! <br />
nikolai <br />
p.s. though my modem is not yet working..... damn driver...... <br />
<br />
=== What is a PIRQ table? ===<br />
<br />
From Adam Sulmicki: <br />
<br />
I found beautfiul descrition of the BIOS implementation of the PIRQ in the red PCI book.<br />
<br />
I found the description of the $PIR data structure in the<br />
http://www.microsoft.com/hwdev/archive/BUSBIOS/pciirq.asp<br />
<br />
looking over linuxbios sources I see that it saves the $PIR data structure<br />
somewhere between 0xf0000 & 0x100000.<br />
<br />
so it seems I'll have to search for $PIR and then save it before copying<br />
over our bios. sigh. hoped for some fixed address in mem.<br />
<br />
-- <br />
Adam<br />
http://www.eax.com The Supreme Headquarters of the 32 bit registers<br />
<br />
=== How do I set up etherboot with LinuxBIOS? ===<br />
<br />
Note from Ron: I have edited this somewhat to remove Geode-specific items. <br />
<br />
Christer Weinigel writes: <br />
To: rminnich@lanl.gov<br />
Cc: linuxbios@lanl.gov<br />
Subject: Re: LinuxBIOS + Etherboot HOWTO?<br />
<br />
<br />
I had some trouble using LinuxBIOS + etherboot... <br />
<br />
<br />
My bad, I messed up and used mkelfImage-1.6 that I got from ftp.lnxi.com, when I realized that I ought to use the one from freebios/util everything started working. <br />
<br />
<br />
Here's what I did to get LinuxBIOS + Etherboot loading and booting a Linux kernel using TFTP. <br />
<br />
<br />
/Christer <br />
<br />
<br />
Get etherboot-5.0 from the CVS tree on etherboot.sourceforge.net. <br />
<br />
<br />
Modify etherboot-5.0/src/Config, comment out: <br />
<br />
# BIOS select don't change unless you know what you are doing<br />
#CFLAGS32+= -DPCBIOS<br />
<br />
<br />
<br />
and uncomment the following: <br />
<br />
# Options to make a version of Etherboot that will work under linuxBIOS.<br />
CFLAGS32+= -DLINUXBIOS -DCONFIG_TSC_CURRTICKS -DCONSOLE_SERIAL \<br />
-DCOMCONSOLE=0x3f8 -DCOMPRESERVE -DCONFIG_PCI_DIRECT -DELF_IMAGE <br />
<br />
<br />
<br />
Compile Etherboot to make an elf file for your ethernet card: <br />
<br />
make bin32/natsemi.elf<br />
<br />
<br />
<br />
Compile and install mkelfImage from freebios/util/mkelfImage. <br />
<br />
<br />
Create a bootimage to put on your TFTP server: <br />
<br />
mkelfImage --command-line="root=/dev/hda2 console=ttyS0,38400" \<br />
--kernel vmlinux -o /tftpboot/kernel<br />
<br />
<br />
<br />
Finally, make sure that your BOOT/DCHP server is answering and that the TFTP server is active. <br />
<br />
<br />
Tell LinuxBIOS to boot an elf Image, and tell LinuxBIOS where it is: <br />
<br />
option USE_ELF_BOOT=1<br />
<br />
<br />
<br />
I have placed natsemi.elf in the first 64k of my BIOS flash chip, and LinuxBIOS in the second 64k. <br />
<br />
insmod bios.o<br />
dd if=natsemi.elf of=/dev/bios bs=64k<br />
dd if=linuxbios.rom of=/dev/bios bs=64k seek=1<br />
<br />
<br />
<br />
Finally boot LinuxBIOS. <br />
<br />
=== How do I set GEODE video? ===<br />
<br />
From christer@weinigel.se Wed Nov 27 07:47:17 2002<br />
Date: 27 Nov 2002 10:55:01 +0100<br />
From: Christer Weinigel <br />
To: Adam Bezanson <br />
Cc: linuxbios@clustermatic.org<br />
Subject: Re: Geode Kernel Config <br />
<br />
"Adam Bezanson" writes:<br />
<br />
> I've got an Eval card from National Semi that contains<br />
> the SC1200. I'd like to try LinuxBios on it.<br />
> I've downloaded both the 2.4.18 and 2.4.19 kernels to start with.<br />
> What patches do I need to apply to the kernel?<br />
> Is there a config file I can use to configure the kernel, or<br />
> should I do it manually? <br />
<br />
A normal 2.4 Linux kernel will work fine as long as you compile for a<br />
586 CPU (CONFIG_M586), not Pentium or higher (CONFIG_M586TSC and up)<br />
since the TSC behaves a bit differently. <br />
<br />
If you want support for the watchdog or the GPIO pins in a 2.4 kernel,<br />
you can find an old patch from me at:<br />
<br />
http://groups.google.com/groups?selm=20020226015215.20118F5B%40acolyte.hack.org&oe=UTF-8&output=gplain<br />
<br />
An updated version of this patch has been included in Linux 2.5. Alan<br />
Cox' 2.5 kernel also has support for doing DMA on the SC1200 IDE<br />
controller; I don't know if there is a corresponding patch for 2.4. <br />
<br />
Other than that, take a look at the freebios/src/mainboard/nano/nano<br />
directory and make a copy of it. All you should have to do is to<br />
modify the Pin Multiplexing Register (PMR) and Miscellaneous Config<br />
Register (MCR) in the Config file and to modify the irq assignments.<br />
<br />
Depending on what you want to do, there are a few limitations with<br />
the current LinuxBIOS on the SC1200: <br />
<br />
There is no video support in LinuxBIOS itself, so you won't get<br />
any video until you have loaded the NatSemi Geode Linux<br />
framebuffer driver (can be found at www.linux4.tv under the<br />
heading SP1SC10 Platform Image).<br />
<br />
There is no SMM/VSA support at all, this means that anything<br />
relying on it won't work. What this means is that Audio won't<br />
work.<br />
<br />
Other than that everything works fine, IDE in PIO mode, the PCI bus,<br />
watchdog, GPIOs, everything.<br />
<br />
/Christer<br />
<br />
-- <br />
"Just how much can I get away with and still go to heaven?"<br />
<br />
Freelance consultant specializing in device driver programming for Linux <br />
Christer Weinigel http://www.weinigel.se<br />
_______________________________________________<br />
Linuxbios mailing list<br />
Linuxbios@clustermatic.org<br />
http://www.clustermatic.org/mailman/listinfo/linuxbios<br />
<br />
<br />
=== How do I set up testbios? ===<br />
<br />
From daubin@actuality-systems.com Wed Oct 6 10:23:10 2004<br />
Date: Tue, 5 Oct 2004 15:19:24 -0400<br />
From: Dave Aubin <br />
To: linuxbios@clustermatic.org<br />
Subject: RE: Testbios help with nvidia 6800Gt and simple how to<br />
<br />
I've taken the time to put together a simple testbios faq.<br />
I hope it is helpful. Feedback and additions are welcome. <br />
<br />
Thanks,<br />
Dave<br />
<br />
==== Testbios (vgabios) Faq ====<br />
<br />
Date: 10/5/2004<br />
Author(s): David Aubin daubin@actuality-systems.com<br />
<br />
Purpose: Testbios is an i386 emulator that sits on top of userspace linux. It's primary purpose is to provide program video rom's in to the cached memory area.<br />
<br />
===== Where to obtain testbios =====<br />
<br />
Testbios(vgabios) can be retrieved from the linuxbios/freebios source tree: [http://www.linuxbios.org/developer/download/index.html]<br />
<br />
===== Prerequisites =====<br />
<br />
You must have installed pci-utils<br />
* Get http://atrey.karlin.mff.cuni.cz/~mj/pciutils.shtml<br />
<br />
===== How to build testbios =====<br />
* cd freebios/util/vgabios<br />
* Edit ./Makefile and fill in the correct values for your environment (I build on a 64 AMD so my makefile looks like this)<br />
<br />
Begin ./Makefile for x64:<br />
CC = gcc<br />
ARCH := $(shell uname -m | sed -e s,i[3456789]86,i386,)<br />
INCLUDE = -I ../pciutils-2.1.11<br />
CFLAGS = -Wall -Ix86emu/include -O2 -g $(INCLUDE)<br />
<br />
INTOBJS = int10.o int15.o int16.o int1a.o inte6.o<br />
OBJECTS = testbios.o helper_exec.o helper_mem.o $(INTOBJS)<br />
LDFLAGS = -static-libgcc -static<br />
<br />
LIBS = x86emu/src/x86emu/libx86emu.a ../pciutils-2.1.11/lib/libpci.a<br />
<br />
# user space pci is the only option right now.<br />
OBJECTS += pci-userspace.o<br />
<br />
ifeq ($(shell if test "$(ARCH)" == "x86_64" ; then echo 1; fi), 1)<br />
CFLAGS +=-m32 -march=i386<br />
endif<br />
<br />
all: testbios<br />
<br />
testbios: $(OBJECTS) $(LIBS)<br />
$(CC) $(CFLAGS) -o testbios $(OBJECTS) $(LDFLAGS)<br />
$(LIBS)<br />
<br />
helper_exec.o: helper_exec.c test.h<br />
<br />
x86emu/src/x86emu/libx86emu.a:<br />
$(MAKE) -C x86emu/src/x86emu/ -f makefile.linux<br />
<br />
clean:<br />
$(MAKE) -C x86emu/src/x86emu/ -f makefile.linux clean<br />
rm -f *.o *~ testbios <br />
<br />
distclean: clean<br />
$(MAKE) -C x86emu/src/x86emu/ -f makefile.linux clean<br />
<br />
<br />
End ./Makefile<br />
<br />
* Edit ~vgabios/x86emu/src/x86emu/makefile.linux and fill in the correct values for your environment (I build on a 64 AMD so my makefile looks like this)<br />
<br />
Begin ~vgabios/x86emu/src/x86emu/makefile.linux:<br />
########################################################################<br />
#####<br />
#<br />
# Realmode X86 Emulator Library<br />
#<br />
# Copyright (C) 1996-1999 SciTech Software, Inc.<br />
#<br />
#<br />
<nowiki>========================================================================</nowiki><br />
#<br />
# Permission to use, copy, modify, distribute, and sell this software and<br />
# its documentation for any purpose is hereby granted without fee,<br />
# provided that the above copyright notice appear in all copies and that<br />
# both that copyright notice and this permission notice appear in<br />
# supporting documentation, and that the name of the authors not be used<br />
# in advertising or publicity pertaining to distribution of the software<br />
# without specific, written prior permission. The authors makes no<br />
# representations about the suitability of this software for any purpose.<br />
# It is provided "as is" without express or implied warranty.<br />
#<br />
# THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,<br />
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO<br />
# EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR<br />
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF<br />
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR<br />
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR<br />
# PERFORMANCE OF THIS SOFTWARE.<br />
#<br />
#<br />
<nowiki>========================================================================</nowiki><br />
#<br />
# Descripton: Linux specific makefile for the x86emu library.<br />
#<br />
########################################################################<br />
#####<br />
<br />
TARGETLIB = libx86emu.a<br />
<br />
<br />
OBJS=\<br />
debug.o \<br />
decode.o \<br />
fpu.o \<br />
ops.o \<br />
ops2.o \<br />
prim_ops.o \<br />
sys.o<br />
<br />
$(TARGETLIB): $(OBJS)<br />
ar rv $(TARGETLIB) $(OBJS)<br />
<br />
INCS = -I. -Ix86emu -I../../include<br />
CFLAGS += -D__DRIVER__ -DFORCE_POST -D_CEXPORT= -DNO_LONG_LONG -DDEBUG<br />
ARCH := $(shell uname -m | sed -e s,i[3456789]86,i386,)<br />
ifeq ($(shell if test "$(ARCH)" == "x86_64" ; then echo 1; fi), 1)<br />
CFLAGS +=-m32 -march=i386<br />
endif<br />
<br />
<br />
.c.o:<br />
# gcc -m32 -march=i386 -g -O -Wall -c $(CFLAGS) $(INCS) $*.c<br />
gcc -g -O -Wall -c $(CFLAGS) $(INCS) $*.c<br />
<br />
.cpp.o:<br />
# gcc -m32 -march=i386 -c $(CFLAGS) $(INCS) $*.cpp<br />
gcc -c $(CFLAGS) $(INCS) $*.cpp <br />
<br />
clean:<br />
rm -f *.a *.o<br />
<br />
validate: validate.o libx86emu.a<br />
gcc -o validate validate.o -lx86emu -L.<br />
<br />
End ~vgabios/x86emu/src/x86emu/makefile.linux<br />
<br />
* Once built you could have a 32bit testbios executable made. Depending on your embedded environment you might want to have it built shared as the above example makes it static. Just remove -static-libgcc -static from the LDFLAGS on ./Makefile if you wish to have it built shared.<br />
<br />
===== How to retrieve a good video bios =====<br />
There are sites that have video bios roms on their website. (I know of this one for nvidia cards: [http://whitebunny.demon.nl/hardware/chipset_nvidia.html])<br />
<br />
However you should be able to retrieve your own video bios as well with linux.<br />
* Boot up a machine with a commercial bios (not linux bios) with the video card you wish to work under linux bios.<br />
** From the command line enter:<br />
dd if=/dev/mem of=vgabios.bin skip=1536 count=128 or <br />
dd if=/dev/mem of=vgabios.bin bs=1k count=64 skip=786432<br />
<br />
This assumes you card's bios is cached in 0xc0000. You<br />
can see where and how much your card's bios is using by<br />
doing a cat iomem | grep "Video ROM"<br />
<br />
*** dd Explained (man dd to learn more):<br />
**** if is the location to retrieve from.<br />
**** of is the output file (your rom image)<br />
**** skip jumps n blocks where the default n is 512 bytes<br />
**** count is how many blocks you wish to read<br />
**** bs is the block size<br />
* You now have a video bios image<br />
<br />
===== How to use testbios =====<br />
* Currently testbios only works from user space linux (10/4/04)<br />
* Example from a linux command line or script enter the following to get your video bios programmed:<br />
./testbios -s 65536 --abseg /dev/mem ./vgabios.bin<br />
** Testbios explained<br />
*** -s how much of the video bios is there<br />
*** --abseg where would you like to write this (/dev/mem default)<br />
*** filename of video bios<br />
*** -d diag mode <br />
**** How to get pci busdevfn<br />
**** lspci<br />
**** look for your video card<br />
Example:<br />
2:00:00<br />
2 (00 << 3) | 00 = 0x200<br />
Example:<br />
00:12.0:<br />
0 (12 << 3) | 0 = 0x90<br />
*** -t dump <br />
*** -c codesegment Where do you want to start, default is 0xc0000<br />
*** -b base Where do you want base to be default is 0xc000<br />
*** -i instruction pointer usually left off as the default<br />
<br />
==== Followup to Testbios FAQ ====<br />
-----Original Message-----<br />
From: linuxbios-admin@clustermatic.org<br />
[mailto:linuxbios-admin@clustermatic.org] On Behalf Of Dave Aubin<br />
Sent: Tuesday, October 05, 2004 2:22 PM<br />
To: Richard Smith<br />
Cc: linuxbios@clustermatic.org<br />
Subject: RE: Testbios help with nvidia 6800Gt and simple how to<br />
<br />
Hi,<br />
<br />
Thank you:) Yes, it was at 0xc0000-0xc7fff, which is only 32k.<br />
But the image I got from the windows tool was 64k (double 8000).<br />
Weird. I would like to stay away from window tools.<br />
The info you provided is nice. I wish there was a way for us To make<br />
a faq and we could add this to the testbios faq. There Is a lot of good<br />
info on the clustermatic list, but it is all Dispersed. <br />
Ron if I write a simple faq can you provide some mechanism to Allow<br />
updates to it?<br />
<br />
Thanks,<br />
Dave <br />
<br />
-----Original Message-----<br />
From: Richard Smith [mailto:rsmith@bitworks.com]<br />
Sent: Tuesday, October 05, 2004 2:16 PM<br />
To: Dave Aubin<br />
Cc: linuxbios@clustermatic.org<br />
Subject: Re: Testbios help with nvidia 6800Gt and simple how to<br />
<br />
Dave Aubin wrote:<br />
<br />
> It seems my dd returned an unusable binary. I found a good binary for<br />
<br />
> The nvidia card from here:<br />
> http://whitebunny.demon.nl/hardware/chipset_nvidia.html<br />
> <br />
<br />
I was wondering about your dd command that but I had not had a chance to<br />
respond yet.<br />
<br />
This is what I use:<br />
<br />
dd if=/dev/mem of=vbios.bin bs=1k count=64 skip=786432<br />
<br />
That will rip the bios from 0x0c0000. You can verify that you actually<br />
have bios there with<br />
<br />
'hd -s 0x0c0000 -n 256 /dev/mem'<br />
<br />
in some cases it may be located at 0x0e0000 rather than 0x0c0000.<br />
<br />
It should start with the 0x55aa (Little endian) or 0xaa55 (big endian)<br />
and futher on you should see some text identifying the bios.<br />
<br />
<br />
--<br />
Richard A. Smith<br />
<br />
<br />
_______________________________________________<br />
Linuxbios mailing list<br />
Linuxbios@clustermatic.org<br />
http://www.clustermatic.org/mailman/listinfo/linuxbios</div>Jdarbyhttps://www.coreboot.org/index.php?title=FAQ&diff=68FAQ2005-03-01T20:05:01Z<p>Jdarby: </p>
<hr />
<div>== General ==<br />
<br />
=== What is LinuxBIOS? ===<br />
<br />
LinuxBIOS aims to replace the normal BIOS found on PCs, Alphas, and other machines with a Linux kernel that can boot Linux from a cold start. LinuxBIOS is primarily Linux - about 10 lines of patches to the current Linux kernel. Additionally, the startup code - about 500 lines of assembly and 5000 lines of C - executes 16 instructions to get into 32-bit mode and then performs DRAM and other hardware initialization required before Linux can take over. <br />
<br />
<br />
Our primary motivation for the project was maintenance of large clusters, but not surprisingly interest and contributions have come from people with varying backgrounds. <br />
<br />
=== Why do we need LinuxBIOS? ===<br />
<br />
Current PCs used as cluster nodes depend on a vendor-supplied BIOS for booting. The BIOS in turn relies on inherently unreliable devices such as floppy disks and hard drives to boot the operating system. In addition, current BIOS software is unable to accommodate non-standard hardware making it difficult to support experimental work. The BIOS is slow and often erroneous and redundant and, most importantly, maintenance is a nightmare. Imagine walking around with a keyboard and monitor to every one of the 128 nodes in a cluster to change one BIOS setting. <br />
<br />
<br />
The LinuxBIOS gunzip's the Linux kernel straight out of NVRAM and essentially requires no moving parts other than the fan. It does a minimal amount of hardware initialization before jumping to the kernel start and lets Linux do the rest. As a result, it is much faster (current record 3 seconds), which has sparked interest in the consumer electronics community as well. Moreover, updates can be performed over the network. <br />
<br />
<br />
Using a real operating system to boot another operating system provides much greater flexibility than using a simple netboot program or the BIOS. Because Linux is the boot mechanism, it can boot over standard Ethernet or over other interconnects such as Myrinet, Quadrics, or SCI. It can use SSH connections to load the kernel, or it can use the InterMezzo caching file system or traditional NFS. Cluster nodes can be as simple as they need to be - perhaps as simple as a CPU and memory, no disk, no floppy, and no file system. The nodes will be much less autonomous thus making them easier to maintain. <br />
<br />
=== Who is working on LinuxBIOS? ===<br />
<br />
The LinuxBIOS project was started in the winter of 1999 in the Advanced Computing Laboratory at Los Alamos National Laboratory by Ron Minnich. Two undergraduate students, James Hendricks and Dale Webster spent their winter vacation putting together the proof of concept implementation. <br />
<br />
<br />
Since then, a long list of people have contributed both in discussions and actual code. See our contributors page for details. Please don't be shy and let us know if you are missing from the list. It's not a purposeful omission, just an unfortunate mistake. <br />
<br />
=== Who is funding LinuxBIOS? ===<br />
<br />
The LinuxBIOS project is funded by the Los Alamos Computer Science Institute and the Department of Energy's Office of Science. <br />
<br />
=== Will LinuxBIOS work on my machine? ===<br />
<br />
See the status page for which mainboards are supported. Also, see the products page for a list of vendors selling products running LinuxBIOS. <br />
<br />
=== What commercial products use LinuxBIOS? ===<br />
<br />
See the products page. <br />
<br />
=== How can I help with LinuxBIOS? ===<br />
<br />
Contact [[User:Rminnich|Ron Minnich]] for projects related to LinuxBIOS. <br />
<br />
<br />
<br />
== Developer ==<br />
<br />
=== Where is the mailing list archived? ===<br />
<br />
The best archive out there is at the University of Maryland. (jdarby: can someone hunt out this url? I don't know it offhand.)<br />
<br />
In addition, we've pieced together an archive that dates back to about the beginning of 2000 (including messages that were going to the freebios and openbios mailing lists). <br />
<br />
=== Where do I get the code? ===<br />
<br />
See the [[Download_freebios_v2|download page]].<br />
<br />
=== How do I build? ===<br />
<br />
See the documentation. For help generating a config file, see Generate a config file. (jdarby: this needs to be wikiized)<br />
<br />
=== Why is the code so complicated and what can I do to make it easier? ===<br />
<br />
The reason is the complexity of the problem. We support a lot of hardware, and a given chip on a given board will most likely not be configured quite the same as the same chip on some other board. <br />
<br />
To help make code navigation easier, pick a target and build that target. Then, in the build directory, type make tags or make etags to get your favorite tags file. <br />
<br />
=== What chipsets are supported? ===<br />
<br />
See status for the most up-to-date info.. (jdarby: this needs to be wikiized)<br />
<br />
=== What is this POST card thing? ===<br />
<br />
A POST card will save your life. The term POST means Power On Self Test and comes from the original IBM specifications for the BIOS. Port 80 is a pre-defined port to which programs can output a byte. The POST card displays the byte in hex on its 2 digit display. We use a lot of POST codes in LinuxBIOS, so if you can tell us the POST code you see, we will have some idea of what happened. <br />
<br />
If your LinuxBIOS machine is working properly, you will see it count up from 0xd0 to 0xd9 (while it is gunzipping the kernel) and then display 0x98 (Linux idle loop). <br />
<br />
=== How do I contribute my changes? ===<br />
<br />
Any one without commit privileges (which is most of you) need to get changes approved by Ron Minnich. <br />
<br />
=== How do I re-flash the BIOS? ===<br />
<br />
Download the appropriate flash update utility. Build the romimage as explained above and use the flash update utility to update the BIOS. Be warned that not all update utilities allow you to load your own BIOS image. For example, Intel decided to disallow it for the MS440GX mainboard (probably after hearing about us!) Here are some mainboard specific directions. <br />
<br />
SiS 630/950 M/Bs<br />
Ollie Lho provided us with flash utilities for these boards under freebios/util/sis. <br />
flash_on turns on the flash write enable. This needs to be run before loading the DoC drivers. <br />
flash_rom allows you to use your SiS 630/950 M/Bs as a flash programmer. It currently supports JEDEC flash parts, AMD am29f040b models, MXIC MX29F002 models, and SST28SF040C models. <br />
Intel L440GX<br />
Get the System Update Package directly from Intel. mcopy the ten files created from running make phlash onto the Intel flash burner disk and use the update utility to burn the BIOS. To restore the original BIOS, set the recovery boot jumper on the motherboard, put the floppy in, and it will load and reflash the original BIOS. <br />
How do I actually burn a flash ROM? <br />
<br />
Buy your favorite flash burner (we use a Needham Electronics EMP 30). Use make floppy to create the romimage and copy it to a floppy. Then use the provided software to burn the flash. <br />
<br />
=== How do I burn a DoC? ===<br />
<br />
Currently, only the DoC Millennium is supported. See the documentation. <br />
<br />
=== Can I do any serious damage mucking around with this stuff? ===<br />
<br />
Any time you stick your hand into an open machine while the power is on, you're risking life and limb. That said, there are also some other not-so-nice things that can happen if you mess up (not that we would know). <br />
<br />
* Incorrect inserstion of the flash (1 casualty) <br />
* Incorrect jumper settings (1 casualty) <br />
* Aggressive and/or inappropriate use of metal objects such as screwdrivers (2 casualties) <br />
* Miscellaneous miswirings and mishandlings (3+ casualties) <br />
<br />
=== A note on electrostatic discharge (ESD) and ESD protection (thanks to Bari Ari) ===<br />
<br />
ESD can damage disk drives, boards, DoC's and other parts. The majority of the time, ESD events cause the component to degrade, but not fail testing procedures, resulting in failure at a later date. Because components do not fail immediately, technicians often underestimate the cost of not using ESD prevention measures. Provide at minimum some ESD protection by wearing an antistatic wrist strap attached to the chassis ground on your system when handling parts. <br />
<br />
Always handle boards carefully. They can be extremely sensitive to ESD. Hold boards only by their edges. After removing a board from its protective wrapper or from the system, place it component side up on a grounded, static free surface. Use a conductive foam pad if available. Do not slide the board over any surface. <br />
<br />
To further reduce the chances of ESD, you should create an ESD safe workstation that includes at minimum: <br />
<br />
* Conductive rubber mat, with a lead wire that can be connected to a metal surface to create a ground. <br />
<br />
* ESD wrist strap, which has a resistor inside the strap and a lead wire that can be connected to a metal surface as a ground. The grounding wire on the wrist strap should have between 1 and 10 Megaohms of resistance. The resistor should protect you in case you come in contact with a voltage source. If the resistor is bad or not included, the wrist strap is useless. An accidental shock could be serious and even deadly! <br />
<br />
* Table or workspace that is clean, clear of dust, and away from electrical machinery or other equipment that generates electrical currents. <br />
<br />
The idea is to ensure that all components you are going to interact with have the same charge. By connecting everything to the computer case, you ensure that the components of the case, the chair, and your body all have the same charge. If every object has the same charge, the electrons will not jump from one object to another minimizing the risk of ESD damage. <br />
<br />
=== How do I put a filesystem on DoC? ===<br />
OK, here is a little HOWTO on how to set up MTD with a file system. <br />
<br />
This is a m810lmr, booting out of DoC. I am going to reserve the first 2M for kernel. So the layout will be the first 2M for linuxbios and kernel, and 6M for a file system. Kernel is 2.4.17, with linux-2.4.17-sis.patch from linuxbios source tree, and config-2.4.17-sis from the linuxbios source tree. Mainboard is the pcchips m810lmr. <br />
<br />
So I: <br />
modprobe doc2001 <br />
modprobe docprobe <br />
dmesg <br />
<br />
which shows: <br />
<br />
DiskOnChip Millennium found at address 0xFFFC8000 <br />
Flash chip found: Manufacturer ID: 98, Chip ID: E6 (Toshiba TC58V64AFT/DC) <br />
1 flash chips found. Total DiskOnChip size: 8 MiB <br />
mtd: Giving out device 0 to DiskOnChip Millennium <br />
Ignoring DiskOnChip Millennium at 0xFFFCA000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFCC000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFCE000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD0000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD2000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD4000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD6000 - already configured <br />
(etc..) <br />
Now I need MTD utilities. <br />
So I: <br />
cvs -d :pserver:anoncvs@cvs.infradead.org:/home/cvs login <br />
CVS password: <br />
<br />
(password is anoncvs) <br />
Then: <br />
cvs -d :pserver:anoncvs@cvs.infradead.org:/home/cvs co mtd <br />
<br />
Forget the drivers and such, you don't need them. What you need is the tools. <br />
cd mtd/tools <br />
make <br />
<br />
Go ahead and copy the executables somewhere handy, you'll need them. <br />
<br />
Now we need to make the last 6M into a "disk". We need to format it. The tool is nftl_format, so:<br />
<br />
[root@carly util]# ./nftl_format <br />
$Id: nftl_format.c,v 1.17 2001/08/29 14:28:48 dwmw2 Exp $ <br />
Usage: ./nftl_format [ []] <br />
[root@carly util]# expr 2048 \* 1024 <br />
2097152 <br />
[root@carly util]# expr 6 \* 1024 \* 1024 <br />
6291456 <br />
[root@carly util]# ./nftl_format /dev/mtd0 2097152 6291456 <br />
$Id: nftl_format.c,v 1.17 2001/08/29 14:28:48 dwmw2 Exp $ <br />
Phase 1. Checking and erasing Erase Zones from 0x00200000 to 0x00800000 <br />
Phase 2.a Writing NFTL Media Header and Bad Unit Table <br />
Phase 2.b Writing Spare NFTL Media Header and Spare Bad Unit Table <br />
Phase 3. Writing Unit Control Information to each Erase Unit <br />
<br />
<br />
we now have a formatted disk in there. We can now partition it. <br />
<br />
[root@carly util]# modprobe nftl <br />
<br />
dmesg shows LOTS of errors, since this was never partitioned ... <br />
<br />
Also, if you don't have /dev/nftla, <br />
<br />
[root@carly util]# mknod /dev/nftla b 93 0 <br />
<br />
<br />
Don't use the script just yet, it makes /dev/nftla as b 93 16, which is the wrong unit #. <br />
<br />
now fdisk /dev/nftla <br />
<br />
[root@carly util]# fdisk /dev/nftlA <br />
Command (m for help): n <br />
Command action <br />
e extended <br />
p primary partition (1-4) <br />
p <br />
Partition number (1-4): 1 <br />
First cylinder (1-1, default 1): <br />
Using default value 1 <br />
Command (m for help): p <br />
Disk /dev/nftlA: 1 heads, 12224 sectors, 1 cylinders <br />
Units = cylinders of 12224 * 512 bytes <br />
Device Boot Start End Blocks Id System <br />
/dev/nftlA1 1 1 6111+ 83 Linux <br />
Partition 1 has different physical/logical endings: <br />
phys=(768, 0, 0) logical=(0, 0, 12224) <br />
Partition 1 does not end on cylinder boundary: <br />
phys=(768, 0, 0) should be (768, 0, 12224) <br />
Command (m for help): w <br />
The partition table has been altered! <br />
Calling ioctl() to re-read partition table. <br />
WARNING: If you have created or modified any DOS 6.x partitions, please see the fdisk manual page for additional information. <br />
Syncing disks. <br />
[root@carly util]# mknod /dev/nftlA1 b 93 1 <br />
[root@carly util]# mke2fs /dev/nftlA1 <br />
mke2fs 1.23, 15-Aug-2001 for EXT2 FS 0.5b, 95/08/09 <br />
Filesystem label= <br />
OS type: Linux <br />
Block size=1024 (log=0) <br />
Fragment size=1024 (log=0) <br />
1528 inodes, 6111 blocks <br />
305 blocks (4.99%) reserved for the super user <br />
First data block=1 <br />
1 block group <br />
8192 blocks per group, 8192 fragments per group <br />
1528 inodes per group <br />
Writing inode tables: done <br />
Writing superblocks and filesystem accounting information: done <br />
<br />
This filesystem will be automatically checked every 37 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. <br />
<br />
[root@carly util]# mount /dev/nftlA1 /mnt <br />
[root@carly util]# cd /mnt <br />
[root@carly mnt]# df . <br />
Filesystem 1k-blocks Used Available Use% Mounted on <br />
/dev/nftlA1 5915 13 5597 1% /mnt <br />
[root@carly mnt]# <br />
<br />
and so you now have an ext2 file system on the DoC. <br />
<br />
(Above is from [[User:Rminnich|Ron Minnich]])<br />
<br />
=== How do I turn off embedded sis630 devices? ===<br />
<br />
From aip@cwlinux.com Mon Mar 25 08:54:07 2002 <br />
Date: Mon, 25 Mar 2002 22:07:54 +0800 <br />
From: Andrew Ip <br />
To: Kei Furuuchi <br />
Cc: linuxbios@lanl.gov <br />
Subject: Re: How to turn off unused pci device. <br />
Hi, <br />
> I have pcchips m758lmr which has audio chip besides sis630. <br />
> those functions in sis630 are not used in the motherboard. <br />
> But, the functions keep coming up. How do I turn off those? <br />
The following is from Nikolai Valdych previous message. Hope this help. <br />
-Andrew <br />
-- <br />
Andrew Ip <br />
Email: aip@cwlinux.com <br />
Actualy, it was pretty simple 0x7c00 - All devices enabled, You play with first 4 bits only. Cos there are 4 devices, so you have any combination of 4 bits. Set bit to 1 to turn off the device, bit 0 to enable it. This is the device list: <br />
Multimedia Audio controler <br />
Modem controler <br />
Ethernet sis930 controler <br />
USB controler. <br />
For example, to turn off Ethernet + USB it would be: <br />
0x7c0c -> 1100 in binary (first 4 bits) <br />
To turn off Multimedia audio : <br />
0x7c01 -> 0001 <br />
in binary and so on... maybe there are more detail, but this is enogh for me, Ollie, again thanks! <br />
nikolai <br />
p.s. though my modem is not yet working..... damn driver...... <br />
<br />
=== What is a PIRQ table? ===<br />
<br />
From Adam Sulmicki: <br />
<br />
I found beautfiul descrition of the BIOS implementation of the PIRQ in the red PCI book.<br />
<br />
I found the description of the $PIR data structure in the<br />
http://www.microsoft.com/hwdev/archive/BUSBIOS/pciirq.asp<br />
<br />
looking over linuxbios sources I see that it saves the $PIR data structure<br />
somewhere between 0xf0000 & 0x100000.<br />
<br />
so it seems I'll have to search for $PIR and then save it before copying<br />
over our bios. sigh. hoped for some fixed address in mem.<br />
<br />
-- <br />
Adam<br />
http://www.eax.com The Supreme Headquarters of the 32 bit registers<br />
<br />
=== How do I set up etherboot with LinuxBIOS? ===<br />
<br />
Note from Ron: I have edited this somewhat to remove Geode-specific items. <br />
<br />
Christer Weinigel writes: <br />
To: rminnich@lanl.gov<br />
Cc: linuxbios@lanl.gov<br />
Subject: Re: LinuxBIOS + Etherboot HOWTO?<br />
<br />
<br />
I had some trouble using LinuxBIOS + etherboot... <br />
<br />
<br />
My bad, I messed up and used mkelfImage-1.6 that I got from ftp.lnxi.com, when I realized that I ought to use the one from freebios/util everything started working. <br />
<br />
<br />
Here's what I did to get LinuxBIOS + Etherboot loading and booting a Linux kernel using TFTP. <br />
<br />
<br />
/Christer <br />
<br />
<br />
Get etherboot-5.0 from the CVS tree on etherboot.sourceforge.net. <br />
<br />
<br />
Modify etherboot-5.0/src/Config, comment out: <br />
<br />
# BIOS select don't change unless you know what you are doing<br />
#CFLAGS32+= -DPCBIOS<br />
<br />
<br />
<br />
and uncomment the following: <br />
<br />
# Options to make a version of Etherboot that will work under linuxBIOS.<br />
CFLAGS32+= -DLINUXBIOS -DCONFIG_TSC_CURRTICKS -DCONSOLE_SERIAL \<br />
-DCOMCONSOLE=0x3f8 -DCOMPRESERVE -DCONFIG_PCI_DIRECT -DELF_IMAGE <br />
<br />
<br />
<br />
Compile Etherboot to make an elf file for your ethernet card: <br />
<br />
make bin32/natsemi.elf<br />
<br />
<br />
<br />
Compile and install mkelfImage from freebios/util/mkelfImage. <br />
<br />
<br />
Create a bootimage to put on your TFTP server: <br />
<br />
mkelfImage --command-line="root=/dev/hda2 console=ttyS0,38400" \<br />
--kernel vmlinux -o /tftpboot/kernel<br />
<br />
<br />
<br />
Finally, make sure that your BOOT/DCHP server is answering and that the TFTP server is active. <br />
<br />
<br />
Tell LinuxBIOS to boot an elf Image, and tell LinuxBIOS where it is: <br />
<br />
option USE_ELF_BOOT=1<br />
<br />
<br />
<br />
I have placed natsemi.elf in the first 64k of my BIOS flash chip, and LinuxBIOS in the second 64k. <br />
<br />
insmod bios.o<br />
dd if=natsemi.elf of=/dev/bios bs=64k<br />
dd if=linuxbios.rom of=/dev/bios bs=64k seek=1<br />
<br />
<br />
<br />
Finally boot LinuxBIOS. <br />
<br />
=== How do I set GEODE video? ===<br />
<br />
From christer@weinigel.se Wed Nov 27 07:47:17 2002<br />
Date: 27 Nov 2002 10:55:01 +0100<br />
From: Christer Weinigel <br />
To: Adam Bezanson <br />
Cc: linuxbios@clustermatic.org<br />
Subject: Re: Geode Kernel Config <br />
<br />
"Adam Bezanson" writes:<br />
<br />
> I've got an Eval card from National Semi that contains<br />
> the SC1200. I'd like to try LinuxBios on it.<br />
> I've downloaded both the 2.4.18 and 2.4.19 kernels to start with.<br />
> What patches do I need to apply to the kernel?<br />
> Is there a config file I can use to configure the kernel, or<br />
> should I do it manually? <br />
<br />
A normal 2.4 Linux kernel will work fine as long as you compile for a<br />
586 CPU (CONFIG_M586), not Pentium or higher (CONFIG_M586TSC and up)<br />
since the TSC behaves a bit differently. <br />
<br />
If you want support for the watchdog or the GPIO pins in a 2.4 kernel,<br />
you can find an old patch from me at:<br />
<br />
http://groups.google.com/groups?selm=20020226015215.20118F5B%40acolyte.hack.org&oe=UTF-8&output=gplain<br />
<br />
An updated version of this patch has been included in Linux 2.5. Alan<br />
Cox' 2.5 kernel also has support for doing DMA on the SC1200 IDE<br />
controller; I don't know if there is a corresponding patch for 2.4. <br />
<br />
Other than that, take a look at the freebios/src/mainboard/nano/nano<br />
directory and make a copy of it. All you should have to do is to<br />
modify the Pin Multiplexing Register (PMR) and Miscellaneous Config<br />
Register (MCR) in the Config file and to modify the irq assignments.<br />
<br />
Depending on what you want to do, there are a few limitations with<br />
the current LinuxBIOS on the SC1200: <br />
<br />
There is no video support in LinuxBIOS itself, so you won't get<br />
any video until you have loaded the NatSemi Geode Linux<br />
framebuffer driver (can be found at www.linux4.tv under the<br />
heading SP1SC10 Platform Image).<br />
<br />
There is no SMM/VSA support at all, this means that anything<br />
relying on it won't work. What this means is that Audio won't<br />
work.<br />
<br />
Other than that everything works fine, IDE in PIO mode, the PCI bus,<br />
watchdog, GPIOs, everything.<br />
<br />
/Christer<br />
<br />
-- <br />
"Just how much can I get away with and still go to heaven?"<br />
<br />
Freelance consultant specializing in device driver programming for Linux <br />
Christer Weinigel http://www.weinigel.se<br />
_______________________________________________<br />
Linuxbios mailing list<br />
Linuxbios@clustermatic.org<br />
http://www.clustermatic.org/mailman/listinfo/linuxbios<br />
<br />
<br />
=== How do I set up testbios? ===<br />
<br />
From daubin@actuality-systems.com Wed Oct 6 10:23:10 2004<br />
Date: Tue, 5 Oct 2004 15:19:24 -0400<br />
From: Dave Aubin <br />
To: linuxbios@clustermatic.org<br />
Subject: RE: Testbios help with nvidia 6800Gt and simple how to<br />
<br />
I've taken the time to put together a simple testbios faq.<br />
I hope it is helpful. Feedback and additions are welcome. <br />
<br />
Thanks,<br />
Dave<br />
<br />
==== Testbios (vgabios) Faq ====<br />
<br />
Date: 10/5/2004<br />
Author(s): David Aubin daubin@actuality-systems.com<br />
<br />
Purpose: Testbios is an i386 emulator that sits on top of userspace linux. It's primary purpose is to provide program video rom's in to the cached memory area.<br />
<br />
===== Where to obtain testbios =====<br />
<br />
Testbios(vgabios) can be retrieved from the linuxbios/freebios source tree: [http://www.linuxbios.org/developer/download/index.html]<br />
<br />
===== Prerequisites =====<br />
<br />
You must have installed pci-utils<br />
* Get http://atrey.karlin.mff.cuni.cz/~mj/pciutils.shtml<br />
<br />
===== How to build testbios =====<br />
* cd freebios/util/vgabios<br />
* Edit ./Makefile and fill in the correct values for your environment (I build on a 64 AMD so my makefile looks like this)<br />
<br />
Begin ./Makefile for x64:<br />
CC = gcc<br />
ARCH := $(shell uname -m | sed -e s,i[3456789]86,i386,)<br />
INCLUDE = -I ../pciutils-2.1.11<br />
CFLAGS = -Wall -Ix86emu/include -O2 -g $(INCLUDE)<br />
<br />
INTOBJS = int10.o int15.o int16.o int1a.o inte6.o<br />
OBJECTS = testbios.o helper_exec.o helper_mem.o $(INTOBJS)<br />
LDFLAGS = -static-libgcc -static<br />
<br />
LIBS = x86emu/src/x86emu/libx86emu.a ../pciutils-2.1.11/lib/libpci.a<br />
<br />
# user space pci is the only option right now.<br />
OBJECTS += pci-userspace.o<br />
<br />
ifeq ($(shell if test "$(ARCH)" == "x86_64" ; then echo 1; fi), 1)<br />
CFLAGS +=-m32 -march=i386<br />
endif<br />
<br />
all: testbios<br />
<br />
testbios: $(OBJECTS) $(LIBS)<br />
$(CC) $(CFLAGS) -o testbios $(OBJECTS) $(LDFLAGS)<br />
$(LIBS)<br />
<br />
helper_exec.o: helper_exec.c test.h<br />
<br />
x86emu/src/x86emu/libx86emu.a:<br />
$(MAKE) -C x86emu/src/x86emu/ -f makefile.linux<br />
<br />
clean:<br />
$(MAKE) -C x86emu/src/x86emu/ -f makefile.linux clean<br />
rm -f *.o *~ testbios <br />
<br />
distclean: clean<br />
$(MAKE) -C x86emu/src/x86emu/ -f makefile.linux clean<br />
<br />
<br />
End ./Makefile<br />
<br />
* Edit ~vgabios/x86emu/src/x86emu/makefile.linux and fill in the correct values for your environment (I build on a 64 AMD so my makefile looks like this)<br />
<br />
Begin ~vgabios/x86emu/src/x86emu/makefile.linux:<br />
########################################################################<br />
#####<br />
#<br />
# Realmode X86 Emulator Library<br />
#<br />
# Copyright (C) 1996-1999 SciTech Software, Inc.<br />
#<br />
#<br />
<nowiki>========================================================================</nowiki><br />
#<br />
# Permission to use, copy, modify, distribute, and sell this software and<br />
# its documentation for any purpose is hereby granted without fee,<br />
# provided that the above copyright notice appear in all copies and that<br />
# both that copyright notice and this permission notice appear in<br />
# supporting documentation, and that the name of the authors not be used<br />
# in advertising or publicity pertaining to distribution of the software<br />
# without specific, written prior permission. The authors makes no<br />
# representations about the suitability of this software for any purpose.<br />
# It is provided "as is" without express or implied warranty.<br />
#<br />
# THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,<br />
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO<br />
# EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR<br />
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF<br />
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR<br />
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR<br />
# PERFORMANCE OF THIS SOFTWARE.<br />
#<br />
#<br />
<nowiki>========================================================================</nowiki><br />
#<br />
# Descripton: Linux specific makefile for the x86emu library.<br />
#<br />
########################################################################<br />
#####<br />
<br />
TARGETLIB = libx86emu.a<br />
<br />
<br />
OBJS=\<br />
debug.o \<br />
decode.o \<br />
fpu.o \<br />
ops.o \<br />
ops2.o \<br />
prim_ops.o \<br />
sys.o<br />
<br />
$(TARGETLIB): $(OBJS)<br />
ar rv $(TARGETLIB) $(OBJS)<br />
<br />
INCS = -I. -Ix86emu -I../../include<br />
CFLAGS += -D__DRIVER__ -DFORCE_POST -D_CEXPORT= -DNO_LONG_LONG<br />
-DDEBUG<br />
ARCH := $(shell uname -m | sed -e s,i[3456789]86,i386,)<br />
ifeq ($(shell if test "$(ARCH)" == "x86_64" ; then echo 1; fi),<br />
1)<br />
CFLAGS +=-m32 -march=i386<br />
endif<br />
<br />
<br />
.c.o:<br />
# gcc -m32 -march=i386 -g -O -Wall -c $(CFLAGS) $(INCS) $*.c<br />
gcc -g -O -Wall -c $(CFLAGS) $(INCS) $*.c<br />
<br />
.cpp.o:<br />
# gcc -m32 -march=i386 -c $(CFLAGS) $(INCS) $*.cpp<br />
gcc -c $(CFLAGS) $(INCS) $*.cpp<br />
<br />
clean:<br />
rm -f *.a *.o<br />
<br />
validate: validate.o libx86emu.a<br />
gcc -o validate validate.o -lx86emu -L.<br />
<br />
--End ~vgabios/x86emu/src/x86emu/makefile.linux--<br />
<br />
D. Once built you could have a 32bit testbios executable made.<br />
Depending on your embedded environment you might want to have it built<br />
shared as the above example makes it static. Just remove -static-libgcc<br />
-static from the LDFLAGS on ./Makefile if you wish to have it built<br />
shared.<br />
<br />
4. How to retrieve a good video bios<br />
A. There are sites that have video bios roms on their website.<br />
I know of this one for nvidia cards:<br />
http://whitebunny.demon.nl/hardware/chipset_nvidia.html<br />
B. However you should be able to retrieve your own video bios<br />
as well<br />
with linux.<br />
i. Boot up a machine with a commercial bios (not linux<br />
bios) with<br />
the video card you wish to work under linux bios.<br />
ii. From the command line enter:<br />
dd if=/dev/mem of=vgabios.bin skip=1536 count=128 or <br />
dd if=/dev/mem of=vgabios.bin bs=1k count=64 skip=786432<br />
<br />
This assumes you card's bios is cached in 0xc0000. You<br />
can see where and how much your card's bios is using by<br />
doing a cat iomem | grep "Video ROM"<br />
<br />
a. dd Explained (man dd to learn more):<br />
1. if is the location to retrieve from.<br />
2. of is the output file (your rom image)<br />
3. skip jumps n blocks where the default n is<br />
512 bytes<br />
4. count is how many blocks you wish to read<br />
5. bs is the block size<br />
C. You now have a video bios image<br />
<br />
5. How to use testbios<br />
A. Currently testbios only works from user space linux<br />
(10/4/04)<br />
B. Example from a linux command line or script enter the<br />
following to<br />
get your video bios programmed:<br />
./testbios -s 65536 --abseg /dev/mem ./vgabios.bin<br />
i. Testbios explained<br />
a. -s how much of the video bios is there<br />
b. --abseg where would you like to write this (/dev/mem<br />
default)<br />
c. filename of video bios<br />
d. -d diag mode <br />
1. How to get pci busdevfn<br />
A. lspci<br />
B. look for your video card<br />
Example:<br />
2:00:00<br />
2 (00 << 3) | 00 = 0x200<br />
Example:<br />
00:12.0:<br />
0 (12 << 3) | 0 = 0x90<br />
e. -t dump <br />
f. -c codesegment Where do you want to start, default is<br />
0xc0000<br />
g. -b base Where do you want base to be default is<br />
0xc000<br />
h. -i instruction pointer usually left off as the<br />
default<br />
<br />
<br />
<br />
-----Original Message-----<br />
From: linuxbios-admin@clustermatic.org<br />
[mailto:linuxbios-admin@clustermatic.org] On Behalf Of Dave Aubin<br />
Sent: Tuesday, October 05, 2004 2:22 PM<br />
To: Richard Smith<br />
Cc: linuxbios@clustermatic.org<br />
Subject: RE: Testbios help with nvidia 6800Gt and simple how to<br />
<br />
Hi,<br />
<br />
Thank you:) Yes, it was at 0xc0000-0xc7fff, which is only 32k.<br />
But the image I got from the windows tool was 64k (double 8000).<br />
Weird. I would like to stay away from window tools.<br />
The info you provided is nice. I wish there was a way for us To make<br />
a faq and we could add this to the testbios faq. There Is a lot of good<br />
info on the clustermatic list, but it is all Dispersed. <br />
Ron if I write a simple faq can you provide some mechanism to Allow<br />
updates to it?<br />
<br />
Thanks,<br />
Dave <br />
<br />
-----Original Message-----<br />
From: Richard Smith [mailto:rsmith@bitworks.com]<br />
Sent: Tuesday, October 05, 2004 2:16 PM<br />
To: Dave Aubin<br />
Cc: linuxbios@clustermatic.org<br />
Subject: Re: Testbios help with nvidia 6800Gt and simple how to<br />
<br />
Dave Aubin wrote:<br />
<br />
> It seems my dd returned an unusable binary. I found a good binary for<br />
<br />
> The nvidia card from here:<br />
> http://whitebunny.demon.nl/hardware/chipset_nvidia.html<br />
> <br />
<br />
I was wondering about your dd command that but I had not had a chance to<br />
respond yet.<br />
<br />
This is what I use:<br />
<br />
dd if=/dev/mem of=vbios.bin bs=1k count=64 skip=786432<br />
<br />
That will rip the bios from 0x0c0000. You can verify that you actually<br />
have bios there with<br />
<br />
'hd -s 0x0c0000 -n 256 /dev/mem'<br />
<br />
in some cases it may be located at 0x0e0000 rather than 0x0c0000.<br />
<br />
It should start with the 0x55aa (Little endian) or 0xaa55 (big endian)<br />
and futher on you should see some text identifying the bios.<br />
<br />
<br />
--<br />
Richard A. Smith<br />
<br />
<br />
_______________________________________________<br />
Linuxbios mailing list<br />
Linuxbios@clustermatic.org<br />
http://www.clustermatic.org/mailman/listinfo/linuxbios</div>Jdarbyhttps://www.coreboot.org/index.php?title=Talk:FAQ&diff=71Talk:FAQ2005-03-01T19:45:18Z<p>Jdarby: </p>
<hr />
<div></div>Jdarbyhttps://www.coreboot.org/index.php?title=Talk:FAQ&diff=62Talk:FAQ2005-03-01T18:07:29Z<p>Jdarby: </p>
<hr />
<div>I am going to head out for lunch and then work on reformating the rest of this page for the wiki. Be back in an hour! --[[User:Jdarby|jdarby]] 19:07, 1 Mar 2005 (CET)</div>Jdarbyhttps://www.coreboot.org/index.php?title=FAQ&diff=67FAQ2005-03-01T18:06:52Z<p>Jdarby: </p>
<hr />
<div>== General ==<br />
<br />
=== What is LinuxBIOS? ===<br />
<br />
LinuxBIOS aims to replace the normal BIOS found on PCs, Alphas, and other machines with a Linux kernel that can boot Linux from a cold start. LinuxBIOS is primarily Linux - about 10 lines of patches to the current Linux kernel. Additionally, the startup code - about 500 lines of assembly and 5000 lines of C - executes 16 instructions to get into 32-bit mode and then performs DRAM and other hardware initialization required before Linux can take over. <br />
<br />
<br />
Our primary motivation for the project was maintenance of large clusters, but not surprisingly interest and contributions have come from people with varying backgrounds. <br />
<br />
=== Why do we need LinuxBIOS? ===<br />
<br />
Current PCs used as cluster nodes depend on a vendor-supplied BIOS for booting. The BIOS in turn relies on inherently unreliable devices such as floppy disks and hard drives to boot the operating system. In addition, current BIOS software is unable to accommodate non-standard hardware making it difficult to support experimental work. The BIOS is slow and often erroneous and redundant and, most importantly, maintenance is a nightmare. Imagine walking around with a keyboard and monitor to every one of the 128 nodes in a cluster to change one BIOS setting. <br />
<br />
<br />
The LinuxBIOS gunzip's the Linux kernel straight out of NVRAM and essentially requires no moving parts other than the fan. It does a minimal amount of hardware initialization before jumping to the kernel start and lets Linux do the rest. As a result, it is much faster (current record 3 seconds), which has sparked interest in the consumer electronics community as well. Moreover, updates can be performed over the network. <br />
<br />
<br />
Using a real operating system to boot another operating system provides much greater flexibility than using a simple netboot program or the BIOS. Because Linux is the boot mechanism, it can boot over standard Ethernet or over other interconnects such as Myrinet, Quadrics, or SCI. It can use SSH connections to load the kernel, or it can use the InterMezzo caching file system or traditional NFS. Cluster nodes can be as simple as they need to be - perhaps as simple as a CPU and memory, no disk, no floppy, and no file system. The nodes will be much less autonomous thus making them easier to maintain. <br />
<br />
=== Who is working on LinuxBIOS? ===<br />
<br />
The LinuxBIOS project was started in the winter of 1999 in the Advanced Computing Laboratory at Los Alamos National Laboratory by Ron Minnich. Two undergraduate students, James Hendricks and Dale Webster spent their winter vacation putting together the proof of concept implementation. <br />
<br />
<br />
Since then, a long list of people have contributed both in discussions and actual code. See our contributors page for details. Please don't be shy and let us know if you are missing from the list. It's not a purposeful omission, just an unfortunate mistake. <br />
<br />
=== Who is funding LinuxBIOS? ===<br />
<br />
The LinuxBIOS project is funded by the Los Alamos Computer Science Institute and the Department of Energy's Office of Science. <br />
<br />
=== Will LinuxBIOS work on my machine? ===<br />
<br />
See the status page for which mainboards are supported. Also, see the products page for a list of vendors selling products running LinuxBIOS. <br />
<br />
=== What commercial products use LinuxBIOS? ===<br />
<br />
See the products page. <br />
<br />
=== How can I help with LinuxBIOS? ===<br />
<br />
Contact [[User:Rminnich|Ron Minnich]] for projects related to LinuxBIOS. <br />
<br />
<br />
<br />
== Developer ==<br />
<br />
=== Where is the mailing list archived? ===<br />
<br />
The best archive out there is at the University of Maryland. (jdarby: can someone hunt out this url? I don't know it offhand.)<br />
<br />
In addition, we've pieced together an archive that dates back to about the beginning of 2000 (including messages that were going to the freebios and openbios mailing lists). <br />
<br />
=== Where do I get the code? ===<br />
<br />
See the [[Download_freebios_v2|download page]].<br />
<br />
=== How do I build? ===<br />
<br />
See the documentation. For help generating a config file, see Generate a config file. (jdarby: this needs to be wikiized)<br />
<br />
=== Why is the code so complicated and what can I do to make it easier? ===<br />
<br />
The reason is the complexity of the problem. We support a lot of hardware, and a given chip on a given board will most likely not be configured quite the same as the same chip on some other board. <br />
<br />
To help make code navigation easier, pick a target and build that target. Then, in the build directory, type make tags or make etags to get your favorite tags file. <br />
<br />
=== What chipsets are supported? ===<br />
<br />
See status for the most up-to-date info.. (jdarby: this needs to be wikiized)<br />
<br />
=== What is this POST card thing? ===<br />
<br />
A POST card will save your life. The term POST means Power On Self Test and comes from the original IBM specifications for the BIOS. Port 80 is a pre-defined port to which programs can output a byte. The POST card displays the byte in hex on its 2 digit display. We use a lot of POST codes in LinuxBIOS, so if you can tell us the POST code you see, we will have some idea of what happened. <br />
<br />
If your LinuxBIOS machine is working properly, you will see it count up from 0xd0 to 0xd9 (while it is gunzipping the kernel) and then display 0x98 (Linux idle loop). <br />
<br />
=== How do I contribute my changes? ===<br />
<br />
Any one without commit privileges (which is most of you) need to get changes approved by Ron Minnich. <br />
<br />
=== How do I re-flash the BIOS? ===<br />
<br />
Download the appropriate flash update utility. Build the romimage as explained above and use the flash update utility to update the BIOS. Be warned that not all update utilities allow you to load your own BIOS image. For example, Intel decided to disallow it for the MS440GX mainboard (probably after hearing about us!) Here are some mainboard specific directions. <br />
<br />
SiS 630/950 M/Bs<br />
Ollie Lho provided us with flash utilities for these boards under freebios/util/sis. <br />
flash_on turns on the flash write enable. This needs to be run before loading the DoC drivers. <br />
flash_rom allows you to use your SiS 630/950 M/Bs as a flash programmer. It currently supports JEDEC flash parts, AMD am29f040b models, MXIC MX29F002 models, and SST28SF040C models. <br />
Intel L440GX<br />
Get the System Update Package directly from Intel. mcopy the ten files created from running make phlash onto the Intel flash burner disk and use the update utility to burn the BIOS. To restore the original BIOS, set the recovery boot jumper on the motherboard, put the floppy in, and it will load and reflash the original BIOS. <br />
How do I actually burn a flash ROM? <br />
<br />
Buy your favorite flash burner (we use a Needham Electronics EMP 30). Use make floppy to create the romimage and copy it to a floppy. Then use the provided software to burn the flash. <br />
<br />
=== How do I burn a DoC? ===<br />
<br />
Currently, only the DoC Millennium is supported. See the documentation. <br />
<br />
=== Can I do any serious damage mucking around with this stuff? ===<br />
<br />
Any time you stick your hand into an open machine while the power is on, you're risking life and limb. That said, there are also some other not-so-nice things that can happen if you mess up (not that we would know). <br />
<br />
Incorrect inserstion of the flash (1 casualty) <br />
Incorrect jumper settings (1 casualty) <br />
Aggressive and/or inappropriate use of metal objects such as screwdrivers (2 casualties) <br />
Miscellaneous miswirings and mishandlings (3+ casualties) <br />
<br />
And finally a note on electrostatic discharge (ESD) and ESD protection thanks to Bari Ari. <br />
<br />
<br />
ESD can damage disk drives, boards, DoC's and other parts. The majority of the time, ESD events cause the component to degrade, but not fail testing procedures, resulting in failure at a later date. Because components do not fail immediately, technicians often underestimate the cost of not using ESD prevention measures. Provide at minimum some ESD protection by wearing an antistatic wrist strap attached to the chassis ground on your system when handling parts. <br />
<br />
<br />
Always handle boards carefully. They can be extremely sensitive to ESD. Hold boards only by their edges. After removing a board from its protective wrapper or from the system, place it component side up on a grounded, static free surface. Use a conductive foam pad if available. Do not slide the board over any surface. <br />
<br />
<br />
To further reduce the chances of ESD, you should create an ESD safe workstation that includes at minimum: <br />
<br />
Conductive rubber mat, with a lead wire that can be connected to a metal surface to create a ground. <br />
ESD wrist strap, which has a resistor inside the strap and a lead wire that can be connected to a metal surface as a ground. The grounding wire on the wrist strap should have between 1 and 10 Megaohms of resistance. The resistor should protect you in case you come in contact with a voltage source. If the resistor is bad or not included, the wrist strap is useless. An accidental shock could be serious and even deadly! <br />
Table or workspace that is clean, clear of dust, and away from electrical machinery or other equipment that generates electrical currents. <br />
The idea is to ensure that all components you are going to interact with have the same charge. By connecting everything to the computer case, you ensure that the components of the case, the chair, and your body all have the same charge. If every object has the same charge, the electrons will not jump from one object to another minimizing the risk of ESD damage. <br />
How do I put a filesystem on DoC? <br />
OK, here is a little HOWTO on how to set up MTD with a file system. <br />
<br />
This is a m810lmr, booting out of DoC. I am going to reserve the first 2M for kernel. So the layout will be the first 2M for linuxbios and kernel, and 6M for a file system. Kernel is 2.4.17, with linux-2.4.17-sis.patch from linuxbios source tree, and config-2.4.17-sis from the linuxbios source tree. Mainboard is the pcchips m810lmr. <br />
<br />
<br />
So I: <br />
modprobe doc2001 <br />
modprobe docprobe <br />
dmesg <br />
<br />
<br />
<br />
which shows: <br />
<br />
<br />
DiskOnChip Millennium found at address 0xFFFC8000 <br />
Flash chip found: Manufacturer ID: 98, Chip ID: E6 (Toshiba TC58V64AFT/DC) <br />
1 flash chips found. Total DiskOnChip size: 8 MiB <br />
mtd: Giving out device 0 to DiskOnChip Millennium <br />
Ignoring DiskOnChip Millennium at 0xFFFCA000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFCC000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFCE000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD0000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD2000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD4000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD6000 - already configured <br />
(etc..) <br />
Now I need MTD utilities. <br />
So I: <br />
cvs -d :pserver:anoncvs@cvs.infradead.org:/home/cvs login <br />
CVS password: <br />
<br />
(password is anoncvs) <br />
Then: <br />
cvs -d :pserver:anoncvs@cvs.infradead.org:/home/cvs co mtd <br />
<br />
<br />
Forget the drivers and such, you don't need them. What you need is the tools. <br />
cd mtd/tools <br />
make <br />
<br />
<br />
Go ahead and copy the executables somewhere handy, you'll need them. <br />
<br />
<br />
Now we need to make the last 6M into a "disk". We need to format it. The tool is nftl_format, so: <br />
[root@carly util]# ./nftl_format <br />
$Id: nftl_format.c,v 1.17 2001/08/29 14:28:48 dwmw2 Exp $ <br />
Usage: ./nftl_format [ []] <br />
[root@carly util]# expr 2048 \* 1024 <br />
2097152 <br />
[root@carly util]# expr 6 \* 1024 \* 1024 <br />
6291456 <br />
[root@carly util]# ./nftl_format /dev/mtd0 2097152 6291456 <br />
$Id: nftl_format.c,v 1.17 2001/08/29 14:28:48 dwmw2 Exp $ <br />
Phase 1. Checking and erasing Erase Zones from 0x00200000 to 0x00800000 <br />
Phase 2.a Writing NFTL Media Header and Bad Unit Table <br />
Phase 2.b Writing Spare NFTL Media Header and Spare Bad Unit Table <br />
Phase 3. Writing Unit Control Information to each Erase Unit <br />
<br />
<br />
we now have a formatted disk in there. We can now partition it. <br />
<br />
<br />
[root@carly util]# modprobe nftl <br />
dmesg shows LOTS of errors, since this was never partitioned ... <br />
<br />
<br />
Also, if you don't have /dev/nftla, <br />
[root@carly util]# mknod /dev/nftla b 93 0 <br />
<br />
<br />
Don't use the script just yet, it makes /dev/nftla as b 93 16, which is the wrong unit #. <br />
<br />
<br />
now fdisk /dev/nftla <br />
<br />
<br />
[root@carly util]# fdisk /dev/nftlA <br />
Command (m for help): n <br />
Command action <br />
e extended <br />
p primary partition (1-4) <br />
p <br />
Partition number (1-4): 1 <br />
First cylinder (1-1, default 1): <br />
Using default value 1 <br />
Command (m for help): p <br />
Disk /dev/nftlA: 1 heads, 12224 sectors, 1 cylinders <br />
Units = cylinders of 12224 * 512 bytes <br />
Device Boot Start End Blocks Id System <br />
/dev/nftlA1 1 1 6111+ 83 Linux <br />
Partition 1 has different physical/logical endings: <br />
phys=(768, 0, 0) logical=(0, 0, 12224) <br />
Partition 1 does not end on cylinder boundary: <br />
phys=(768, 0, 0) should be (768, 0, 12224) <br />
Command (m for help): w <br />
The partition table has been altered! <br />
Calling ioctl() to re-read partition table. <br />
WARNING: If you have created or modified any DOS 6.x partitions, please see the fdisk manual page for additional information. <br />
Syncing disks. <br />
[root@carly util]# mknod /dev/nftlA1 b 93 1 <br />
[root@carly util]# mke2fs /dev/nftlA1 <br />
mke2fs 1.23, 15-Aug-2001 for EXT2 FS 0.5b, 95/08/09 <br />
Filesystem label= <br />
OS type: Linux <br />
Block size=1024 (log=0) <br />
Fragment size=1024 (log=0) <br />
1528 inodes, 6111 blocks <br />
305 blocks (4.99%) reserved for the super user <br />
First data block=1 <br />
1 block group <br />
8192 blocks per group, 8192 fragments per group <br />
1528 inodes per group <br />
Writing inode tables: done <br />
Writing superblocks and filesystem accounting information: done <br />
<br />
<br />
This filesystem will be automatically checked every 37 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. <br />
<br />
<br />
[root@carly util]# mount /dev/nftlA1 /mnt <br />
[root@carly util]# cd /mnt <br />
[root@carly mnt]# df . <br />
Filesystem 1k-blocks Used Available Use% Mounted on <br />
/dev/nftlA1 5915 13 5597 1% /mnt <br />
[root@carly mnt]# <br />
<br />
<br />
and so you now have an ext2 file system on the DoC. <br />
<br />
<br />
ron <br />
<br />
=== How do I turn off embedded sis630 devices? ===<br />
<br />
From aip@cwlinux.com Mon Mar 25 08:54:07 2002 <br />
Date: Mon, 25 Mar 2002 22:07:54 +0800 <br />
From: Andrew Ip <br />
To: Kei Furuuchi <br />
Cc: linuxbios@lanl.gov <br />
Subject: Re: How to turn off unused pci device. <br />
Hi, <br />
> I have pcchips m758lmr which has audio chip besides sis630. <br />
> those functions in sis630 are not used in the motherboard. <br />
> But, the functions keep coming up. How do I turn off those? <br />
The following is from Nikolai Valdych previous message. Hope this help. <br />
-Andrew <br />
-- <br />
Andrew Ip <br />
Email: aip@cwlinux.com <br />
Actualy, it was pretty simple 0x7c00 - All devices enabled, You play with first 4 bits only. Cos there are 4 devices, so you have any combination of 4 bits. Set bit to 1 to turn off the device, bit 0 to enable it. This is the device list: <br />
Multimedia Audio controler <br />
Modem controler <br />
Ethernet sis930 controler <br />
USB controler. <br />
For example, to turn off Ethernet + USB it would be: <br />
0x7c0c -> 1100 in binary (first 4 bits) <br />
To turn off Multimedia audio : <br />
0x7c01 -> 0001 <br />
in binary and so on... maybe there are more detail, but this is enogh for me, Ollie, again thanks! <br />
nikolai <br />
p.s. though my modem is not yet working..... damn driver...... <br />
What is a PIRQ table? <br />
<br />
From Adam Sulmicki: <br />
<br />
<br />
I found beautfiul descrition of the BIOS implementation of the PIRQ in<br />
the red PCI book.<br />
<br />
I found the description of the $PIR data structure in the<br />
http://www.microsoft.com/hwdev/archive/BUSBIOS/pciirq.asp<br />
<br />
looking over linuxbios sources I see that it saves the $PIR data structure<br />
somewhere between 0xf0000 & 0x100000.<br />
<br />
so it seems I'll have to search for $PIR and then save it before copying<br />
over our bios. sigh. hoped for some fixed address in mem.<br />
<br />
-- <br />
Adam<br />
http://www.eax.com The Supreme Headquarters of the 32 bit registers<br />
<br />
=== How do I set up etherboot with LinuxBIOS? ===<br />
<br />
Note from Ron: I have edited this somewhat to remove Geode-specific items. <br />
<br />
Christer Weinigel writes: <br />
To: rminnich@lanl.gov<br />
Cc: linuxbios@lanl.gov<br />
Subject: Re: LinuxBIOS + Etherboot HOWTO?<br />
<br />
<br />
I had some trouble using LinuxBIOS + etherboot... <br />
<br />
<br />
My bad, I messed up and used mkelfImage-1.6 that I got from ftp.lnxi.com, when I realized that I ought to use the one from freebios/util everything started working. <br />
<br />
<br />
Here's what I did to get LinuxBIOS + Etherboot loading and booting a Linux kernel using TFTP. <br />
<br />
<br />
/Christer <br />
<br />
<br />
Get etherboot-5.0 from the CVS tree on etherboot.sourceforge.net. <br />
<br />
<br />
Modify etherboot-5.0/src/Config, comment out: <br />
<br />
# BIOS select don't change unless you know what you are doing<br />
#CFLAGS32+= -DPCBIOS<br />
<br />
<br />
<br />
and uncomment the following: <br />
<br />
# Options to make a version of Etherboot that will work under linuxBIOS.<br />
CFLAGS32+= -DLINUXBIOS -DCONFIG_TSC_CURRTICKS -DCONSOLE_SERIAL \<br />
-DCOMCONSOLE=0x3f8 -DCOMPRESERVE -DCONFIG_PCI_DIRECT -DELF_IMAGE <br />
<br />
<br />
<br />
Compile Etherboot to make an elf file for your ethernet card: <br />
<br />
make bin32/natsemi.elf<br />
<br />
<br />
<br />
Compile and install mkelfImage from freebios/util/mkelfImage. <br />
<br />
<br />
Create a bootimage to put on your TFTP server: <br />
<br />
mkelfImage --command-line="root=/dev/hda2 console=ttyS0,38400" \<br />
--kernel vmlinux -o /tftpboot/kernel<br />
<br />
<br />
<br />
Finally, make sure that your BOOT/DCHP server is answering and that the TFTP server is active. <br />
<br />
<br />
Tell LinuxBIOS to boot an elf Image, and tell LinuxBIOS where it is: <br />
<br />
option USE_ELF_BOOT=1<br />
<br />
<br />
<br />
I have placed natsemi.elf in the first 64k of my BIOS flash chip, and LinuxBIOS in the second 64k. <br />
<br />
insmod bios.o<br />
dd if=natsemi.elf of=/dev/bios bs=64k<br />
dd if=linuxbios.rom of=/dev/bios bs=64k seek=1<br />
<br />
<br />
<br />
Finally boot LinuxBIOS. <br />
<br />
=== How do I set GEODE video? ===<br />
<br />
From christer@weinigel.se Wed Nov 27 07:47:17 2002<br />
Date: 27 Nov 2002 10:55:01 +0100<br />
From: Christer Weinigel <br />
To: Adam Bezanson <br />
Cc: linuxbios@clustermatic.org<br />
Subject: Re: Geode Kernel Config<br />
<br />
"Adam Bezanson" writes:<br />
<br />
> I've got an Eval card from National Semi that contains<br />
> the SC1200. I'd like to try LinuxBios on it.<br />
> I've downloaded both the 2.4.18 and 2.4.19 kernels to start with.<br />
> What patches do I need to apply to the kernel?<br />
> Is there a config file I can use to configure the kernel, or<br />
> should I do it manually?<br />
<br />
A normal 2.4 Linux kernel will work fine as long as you compile for a<br />
586 CPU (CONFIG_M586), not Pentium or higher (CONFIG_M586TSC and up)<br />
since the TSC behaves a bit differently.<br />
<br />
If you want support for the watchdog or the GPIO pins in a 2.4 kernel,<br />
you can find an old patch from me at:<br />
<br />
http://groups.google.com/groups?selm=20020226015215.20118F5B%40acolyte.hack.org&oe=UTF-8&output=gplain<br />
<br />
An updated version of this patch has been included in Linux 2.5. Alan<br />
Cox' 2.5 kernel also has support for doing DMA on the SC1200 IDE<br />
controller; I don't know if there is a corresponding patch for 2.4.<br />
<br />
Other than that, take a look at the freebios/src/mainboard/nano/nano<br />
directory and make a copy of it. All you should have to do is to<br />
modify the Pin Multiplexing Register (PMR) and Miscellaneous Config<br />
Register (MCR) in the Config file and to modify the irq assignments.<br />
<br />
Depending on what you want to do, there are a few limitations with<br />
the current LinuxBIOS on the SC1200: <br />
<br />
There is no video support in LinuxBIOS itself, so you won't get<br />
any video until you have loaded the NatSemi Geode Linux<br />
framebuffer driver (can be found at www.linux4.tv under the<br />
heading SP1SC10 Platform Image).<br />
<br />
There is no SMM/VSA support at all, this means that anything<br />
relying on it won't work. What this means is that Audio won't<br />
work.<br />
<br />
Other than that everything works fine, IDE in PIO mode, the PCI bus,<br />
watchdog, GPIOs, everything.<br />
<br />
/Christer<br />
<br />
-- <br />
"Just how much can I get away with and still go to heaven?"<br />
<br />
Freelance consultant specializing in device driver programming for Linux <br />
Christer Weinigel http://www.weinigel.se<br />
_______________________________________________<br />
Linuxbios mailing list<br />
Linuxbios@clustermatic.org<br />
http://www.clustermatic.org/mailman/listinfo/linuxbios<br />
<br />
<br />
=== How do I set up testbios? ===<br />
From daubin@actuality-systems.com Wed Oct 6 10:23:10 2004<br />
Date: Tue, 5 Oct 2004 15:19:24 -0400<br />
From: Dave Aubin <br />
To: linuxbios@clustermatic.org<br />
Subject: RE: Testbios help with nvidia 6800Gt and simple how to<br />
<br />
I've taken the time to put together a simple testbios faq.<br />
I hope it is helpful. Feedback and additions are welcome.<br />
<br />
Thanks,<br />
Dave<br />
<br />
Testbios (vgabios) Faq<br />
<br />
Date: 10/5/2004<br />
Author(s): David Aubin daubin@actuality-systems.com<br />
<br />
Purpose: Testbios is an i386 emulator that sits on top of user<br />
space linux. It's primary purpose is to provide program video rom's in<br />
to<br />
the cached memory area.<br />
<br />
Faq Contents:<br />
1. Where to obtain testbios<br />
2. Prerequisites<br />
3. How to build testbios<br />
4. How to retrieve a good video bios<br />
5. How to use testbios<br />
<br />
1. Where to obtain testbios<br />
A. Testbios(vgabios) can be retrieved from the<br />
linuxbios/freebios source tree:<br />
http://www.linuxbios.org/developer/download/index.html<br />
<br />
2. Prerequisites<br />
A. You must have installed pci-utils<br />
i. Get<br />
http://atrey.karlin.mff.cuni.cz/~mj/pciutils.shtml<br />
<br />
3. How to build testbios:<br />
A. cd freebios/util/vgabios<br />
B. Edit ./Makefile and fill in the correct values for your<br />
environment<br />
I build on a 64 AMD so my makefile looks like this<br />
<br />
--Being ./Makefile for x64--<br />
CC = gcc<br />
ARCH := $(shell uname -m | sed -e s,i[3456789]86,i386,)<br />
INCLUDE = -I ../pciutils-2.1.11<br />
CFLAGS = -Wall -Ix86emu/include -O2 -g $(INCLUDE)<br />
<br />
INTOBJS = int10.o int15.o int16.o int1a.o inte6.o<br />
OBJECTS = testbios.o helper_exec.o helper_mem.o $(INTOBJS)<br />
LDFLAGS = -static-libgcc -static<br />
<br />
LIBS = x86emu/src/x86emu/libx86emu.a<br />
../pciutils-2.1.11/lib/libpci.a<br />
<br />
# user space pci is the only option right now.<br />
OBJECTS += pci-userspace.o<br />
<br />
ifeq ($(shell if test "$(ARCH)" == "x86_64" ; then echo 1; fi), 1)<br />
CFLAGS +=-m32 -march=i386<br />
endif<br />
<br />
all: testbios<br />
<br />
testbios: $(OBJECTS) $(LIBS)<br />
$(CC) $(CFLAGS) -o testbios $(OBJECTS) $(LDFLAGS)<br />
$(LIBS)<br />
<br />
helper_exec.o: helper_exec.c test.h<br />
<br />
x86emu/src/x86emu/libx86emu.a:<br />
$(MAKE) -C x86emu/src/x86emu/ -f makefile.linux<br />
<br />
clean:<br />
$(MAKE) -C x86emu/src/x86emu/ -f makefile.linux clean<br />
rm -f *.o *~ testbios<br />
<br />
distclean: clean<br />
$(MAKE) -C x86emu/src/x86emu/ -f makefile.linux clean<br />
<br />
--End ./Makefile--<br />
<br />
C. Edit ~vgabios/x86emu/src/x86emu/makefile.linux and fill in<br />
the correct values for your environment<br />
I build on a 64 AMD so my makefile looks like this<br />
<br />
--Begin ~vgabios/x86emu/src/x86emu/makefile.linux--<br />
########################################################################<br />
#####<br />
#<br />
# Realmode X86 Emulator<br />
Library<br />
#<br />
# Copyright (C) 1996-1999 SciTech Software, Inc.<br />
#<br />
#<br />
========================================================================<br />
#<br />
# Permission to use, copy, modify, distribute, and sell this software<br />
and<br />
# its documentation for any purpose is hereby granted without fee,<br />
# provided that the above copyright notice appear in all copies and<br />
that<br />
# both that copyright notice and this permission notice appear in<br />
# supporting documentation, and that the name of the authors not be<br />
used<br />
# in advertising or publicity pertaining to distribution of the<br />
software<br />
# without specific, written prior permission. The authors makes no<br />
# representations about the suitability of this software for any<br />
purpose.<br />
# It is provided "as is" without express or implied warranty.<br />
#<br />
# THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,<br />
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN<br />
NO<br />
# EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR<br />
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS<br />
OF<br />
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR<br />
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE<br />
OR<br />
# PERFORMANCE OF THIS SOFTWARE.<br />
#<br />
#<br />
========================================================================<br />
#<br />
# Descripton: Linux specific makefile for the x86emu library.<br />
#<br />
########################################################################<br />
#####<br />
<br />
TARGETLIB = libx86emu.a<br />
<br />
<br />
OBJS=\<br />
debug.o \<br />
decode.o \<br />
fpu.o \<br />
ops.o \<br />
ops2.o \<br />
prim_ops.o \<br />
sys.o<br />
<br />
$(TARGETLIB): $(OBJS)<br />
ar rv $(TARGETLIB) $(OBJS)<br />
<br />
INCS = -I. -Ix86emu -I../../include<br />
CFLAGS += -D__DRIVER__ -DFORCE_POST -D_CEXPORT= -DNO_LONG_LONG<br />
-DDEBUG<br />
ARCH := $(shell uname -m | sed -e s,i[3456789]86,i386,)<br />
ifeq ($(shell if test "$(ARCH)" == "x86_64" ; then echo 1; fi),<br />
1)<br />
CFLAGS +=-m32 -march=i386<br />
endif<br />
<br />
<br />
.c.o:<br />
# gcc -m32 -march=i386 -g -O -Wall -c $(CFLAGS) $(INCS) $*.c<br />
gcc -g -O -Wall -c $(CFLAGS) $(INCS) $*.c<br />
<br />
.cpp.o:<br />
# gcc -m32 -march=i386 -c $(CFLAGS) $(INCS) $*.cpp<br />
gcc -c $(CFLAGS) $(INCS) $*.cpp<br />
<br />
clean:<br />
rm -f *.a *.o<br />
<br />
validate: validate.o libx86emu.a<br />
gcc -o validate validate.o -lx86emu -L.<br />
<br />
--End ~vgabios/x86emu/src/x86emu/makefile.linux--<br />
<br />
D. Once built you could have a 32bit testbios executable made.<br />
Depending on your embedded environment you might want to have it built<br />
shared as the above example makes it static. Just remove -static-libgcc<br />
-static from the LDFLAGS on ./Makefile if you wish to have it built<br />
shared.<br />
<br />
4. How to retrieve a good video bios<br />
A. There are sites that have video bios roms on their website.<br />
I know of this one for nvidia cards:<br />
http://whitebunny.demon.nl/hardware/chipset_nvidia.html<br />
B. However you should be able to retrieve your own video bios<br />
as well<br />
with linux.<br />
i. Boot up a machine with a commercial bios (not linux<br />
bios) with<br />
the video card you wish to work under linux bios.<br />
ii. From the command line enter:<br />
dd if=/dev/mem of=vgabios.bin skip=1536 count=128 or <br />
dd if=/dev/mem of=vgabios.bin bs=1k count=64 skip=786432<br />
<br />
This assumes you card's bios is cached in 0xc0000. You<br />
can see where and how much your card's bios is using by<br />
doing a cat iomem | grep "Video ROM"<br />
<br />
a. dd Explained (man dd to learn more):<br />
1. if is the location to retrieve from.<br />
2. of is the output file (your rom image)<br />
3. skip jumps n blocks where the default n is<br />
512 bytes<br />
4. count is how many blocks you wish to read<br />
5. bs is the block size<br />
C. You now have a video bios image<br />
<br />
5. How to use testbios<br />
A. Currently testbios only works from user space linux<br />
(10/4/04)<br />
B. Example from a linux command line or script enter the<br />
following to<br />
get your video bios programmed:<br />
./testbios -s 65536 --abseg /dev/mem ./vgabios.bin<br />
i. Testbios explained<br />
a. -s how much of the video bios is there<br />
b. --abseg where would you like to write this (/dev/mem<br />
default)<br />
c. filename of video bios<br />
d. -d diag mode <br />
1. How to get pci busdevfn<br />
A. lspci<br />
B. look for your video card<br />
Example:<br />
2:00:00<br />
2 (00 << 3) | 00 = 0x200<br />
Example:<br />
00:12.0:<br />
0 (12 << 3) | 0 = 0x90<br />
e. -t dump <br />
f. -c codesegment Where do you want to start, default is<br />
0xc0000<br />
g. -b base Where do you want base to be default is<br />
0xc000<br />
h. -i instruction pointer usually left off as the<br />
default<br />
<br />
<br />
<br />
-----Original Message-----<br />
From: linuxbios-admin@clustermatic.org<br />
[mailto:linuxbios-admin@clustermatic.org] On Behalf Of Dave Aubin<br />
Sent: Tuesday, October 05, 2004 2:22 PM<br />
To: Richard Smith<br />
Cc: linuxbios@clustermatic.org<br />
Subject: RE: Testbios help with nvidia 6800Gt and simple how to<br />
<br />
Hi,<br />
<br />
Thank you:) Yes, it was at 0xc0000-0xc7fff, which is only 32k.<br />
But the image I got from the windows tool was 64k (double 8000).<br />
Weird. I would like to stay away from window tools.<br />
The info you provided is nice. I wish there was a way for us To make<br />
a faq and we could add this to the testbios faq. There Is a lot of good<br />
info on the clustermatic list, but it is all Dispersed. <br />
Ron if I write a simple faq can you provide some mechanism to Allow<br />
updates to it?<br />
<br />
Thanks,<br />
Dave <br />
<br />
-----Original Message-----<br />
From: Richard Smith [mailto:rsmith@bitworks.com]<br />
Sent: Tuesday, October 05, 2004 2:16 PM<br />
To: Dave Aubin<br />
Cc: linuxbios@clustermatic.org<br />
Subject: Re: Testbios help with nvidia 6800Gt and simple how to<br />
<br />
Dave Aubin wrote:<br />
<br />
> It seems my dd returned an unusable binary. I found a good binary for<br />
<br />
> The nvidia card from here:<br />
> http://whitebunny.demon.nl/hardware/chipset_nvidia.html<br />
> <br />
<br />
I was wondering about your dd command that but I had not had a chance to<br />
respond yet.<br />
<br />
This is what I use:<br />
<br />
dd if=/dev/mem of=vbios.bin bs=1k count=64 skip=786432<br />
<br />
That will rip the bios from 0x0c0000. You can verify that you actually<br />
have bios there with<br />
<br />
'hd -s 0x0c0000 -n 256 /dev/mem'<br />
<br />
in some cases it may be located at 0x0e0000 rather than 0x0c0000.<br />
<br />
It should start with the 0x55aa (Little endian) or 0xaa55 (big endian)<br />
and futher on you should see some text identifying the bios.<br />
<br />
<br />
--<br />
Richard A. Smith<br />
<br />
<br />
_______________________________________________<br />
Linuxbios mailing list<br />
Linuxbios@clustermatic.org<br />
http://www.clustermatic.org/mailman/listinfo/linuxbios</div>Jdarbyhttps://www.coreboot.org/index.php?title=FAQ&diff=34FAQ2005-03-01T18:05:41Z<p>Jdarby: </p>
<hr />
<div>Developer<br />
<br />
<br />
Where is the mailing list archived? <br />
Where do I get the code? <br />
<br />
How do I build? <br />
<br />
Why is the code so complicated and what can I do to make it easier? <br />
<br />
What chipsets are supported? <br />
<br />
What is this POST card thing? <br />
<br />
How do I contribute my changes? <br />
<br />
How do I re-flash the BIOS? <br />
<br />
How do I actually burn a flash ROM? <br />
<br />
How do I burn a DoC? <br />
<br />
Can I do any serious damage mucking around with this stuff? <br />
<br />
How do I put a filesystem on DoC? <br />
<br />
How do I turn off embedded sis630 devices? <br />
<br />
What is a PIRQ table? <br />
<br />
How do I set up etherboot with LinuxBIOS? <br />
<br />
How do I set GEODE video? <br />
<br />
How do I set up testbios? <br />
<br />
<br />
<br />
== General ==<br />
<br />
=== What is LinuxBIOS? ===<br />
<br />
LinuxBIOS aims to replace the normal BIOS found on PCs, Alphas, and other machines with a Linux kernel that can boot Linux from a cold start. LinuxBIOS is primarily Linux - about 10 lines of patches to the current Linux kernel. Additionally, the startup code - about 500 lines of assembly and 5000 lines of C - executes 16 instructions to get into 32-bit mode and then performs DRAM and other hardware initialization required before Linux can take over. <br />
<br />
<br />
Our primary motivation for the project was maintenance of large clusters, but not surprisingly interest and contributions have come from people with varying backgrounds. <br />
<br />
=== Why do we need LinuxBIOS? ===<br />
<br />
Current PCs used as cluster nodes depend on a vendor-supplied BIOS for booting. The BIOS in turn relies on inherently unreliable devices such as floppy disks and hard drives to boot the operating system. In addition, current BIOS software is unable to accommodate non-standard hardware making it difficult to support experimental work. The BIOS is slow and often erroneous and redundant and, most importantly, maintenance is a nightmare. Imagine walking around with a keyboard and monitor to every one of the 128 nodes in a cluster to change one BIOS setting. <br />
<br />
<br />
The LinuxBIOS gunzip's the Linux kernel straight out of NVRAM and essentially requires no moving parts other than the fan. It does a minimal amount of hardware initialization before jumping to the kernel start and lets Linux do the rest. As a result, it is much faster (current record 3 seconds), which has sparked interest in the consumer electronics community as well. Moreover, updates can be performed over the network. <br />
<br />
<br />
Using a real operating system to boot another operating system provides much greater flexibility than using a simple netboot program or the BIOS. Because Linux is the boot mechanism, it can boot over standard Ethernet or over other interconnects such as Myrinet, Quadrics, or SCI. It can use SSH connections to load the kernel, or it can use the InterMezzo caching file system or traditional NFS. Cluster nodes can be as simple as they need to be - perhaps as simple as a CPU and memory, no disk, no floppy, and no file system. The nodes will be much less autonomous thus making them easier to maintain. <br />
<br />
=== Who is working on LinuxBIOS? ===<br />
<br />
The LinuxBIOS project was started in the winter of 1999 in the Advanced Computing Laboratory at Los Alamos National Laboratory by Ron Minnich. Two undergraduate students, James Hendricks and Dale Webster spent their winter vacation putting together the proof of concept implementation. <br />
<br />
<br />
Since then, a long list of people have contributed both in discussions and actual code. See our contributors page for details. Please don't be shy and let us know if you are missing from the list. It's not a purposeful omission, just an unfortunate mistake. <br />
<br />
=== Who is funding LinuxBIOS? ===<br />
<br />
The LinuxBIOS project is funded by the Los Alamos Computer Science Institute and the Department of Energy's Office of Science. <br />
<br />
=== Will LinuxBIOS work on my machine? ===<br />
<br />
See the status page for which mainboards are supported. Also, see the products page for a list of vendors selling products running LinuxBIOS. <br />
<br />
=== What commercial products use LinuxBIOS? ===<br />
<br />
See the products page. <br />
<br />
=== How can I help with LinuxBIOS? ===<br />
<br />
Contact [[User:Rminnich|Ron Minnich]] for projects related to LinuxBIOS. <br />
<br />
<br />
<br />
== Developer ==<br />
<br />
=== Where is the mailing list archived? ===<br />
<br />
The best archive out there is at the University of Maryland. (jdarby: can someone hunt out this url? I don't know it offhand.)<br />
<br />
In addition, we've pieced together an archive that dates back to about the beginning of 2000 (including messages that were going to the freebios and openbios mailing lists). <br />
<br />
=== Where do I get the code? ===<br />
<br />
See the [[Download_freebios_v2|download page]].<br />
<br />
=== How do I build? ===<br />
<br />
See the documentation. For help generating a config file, see Generate a config file. (jdarby: this needs to be wikiized)<br />
<br />
=== Why is the code so complicated and what can I do to make it easier? ===<br />
<br />
The reason is the complexity of the problem. We support a lot of hardware, and a given chip on a given board will most likely not be configured quite the same as the same chip on some other board. <br />
<br />
To help make code navigation easier, pick a target and build that target. Then, in the build directory, type make tags or make etags to get your favorite tags file. <br />
<br />
=== What chipsets are supported? ===<br />
<br />
See status for the most up-to-date info.. (jdarby: this needs to be wikiized)<br />
<br />
=== What is this POST card thing? ===<br />
<br />
A POST card will save your life. The term POST means Power On Self Test and comes from the original IBM specifications for the BIOS. Port 80 is a pre-defined port to which programs can output a byte. The POST card displays the byte in hex on its 2 digit display. We use a lot of POST codes in LinuxBIOS, so if you can tell us the POST code you see, we will have some idea of what happened. <br />
<br />
If your LinuxBIOS machine is working properly, you will see it count up from 0xd0 to 0xd9 (while it is gunzipping the kernel) and then display 0x98 (Linux idle loop). <br />
<br />
=== How do I contribute my changes? ===<br />
<br />
Any one without commit privileges (which is most of you) need to get changes approved by Ron Minnich. <br />
<br />
=== How do I re-flash the BIOS? ===<br />
<br />
Download the appropriate flash update utility. Build the romimage as explained above and use the flash update utility to update the BIOS. Be warned that not all update utilities allow you to load your own BIOS image. For example, Intel decided to disallow it for the MS440GX mainboard (probably after hearing about us!) Here are some mainboard specific directions. <br />
<br />
SiS 630/950 M/Bs<br />
Ollie Lho provided us with flash utilities for these boards under freebios/util/sis. <br />
flash_on turns on the flash write enable. This needs to be run before loading the DoC drivers. <br />
flash_rom allows you to use your SiS 630/950 M/Bs as a flash programmer. It currently supports JEDEC flash parts, AMD am29f040b models, MXIC MX29F002 models, and SST28SF040C models. <br />
Intel L440GX<br />
Get the System Update Package directly from Intel. mcopy the ten files created from running make phlash onto the Intel flash burner disk and use the update utility to burn the BIOS. To restore the original BIOS, set the recovery boot jumper on the motherboard, put the floppy in, and it will load and reflash the original BIOS. <br />
How do I actually burn a flash ROM? <br />
<br />
Buy your favorite flash burner (we use a Needham Electronics EMP 30). Use make floppy to create the romimage and copy it to a floppy. Then use the provided software to burn the flash. <br />
<br />
=== How do I burn a DoC? ===<br />
<br />
Currently, only the DoC Millennium is supported. See the documentation. <br />
<br />
=== Can I do any serious damage mucking around with this stuff? ===<br />
<br />
Any time you stick your hand into an open machine while the power is on, you're risking life and limb. That said, there are also some other not-so-nice things that can happen if you mess up (not that we would know). <br />
<br />
Incorrect inserstion of the flash (1 casualty) <br />
Incorrect jumper settings (1 casualty) <br />
Aggressive and/or inappropriate use of metal objects such as screwdrivers (2 casualties) <br />
Miscellaneous miswirings and mishandlings (3+ casualties) <br />
<br />
And finally a note on electrostatic discharge (ESD) and ESD protection thanks to Bari Ari. <br />
<br />
<br />
ESD can damage disk drives, boards, DoC's and other parts. The majority of the time, ESD events cause the component to degrade, but not fail testing procedures, resulting in failure at a later date. Because components do not fail immediately, technicians often underestimate the cost of not using ESD prevention measures. Provide at minimum some ESD protection by wearing an antistatic wrist strap attached to the chassis ground on your system when handling parts. <br />
<br />
<br />
Always handle boards carefully. They can be extremely sensitive to ESD. Hold boards only by their edges. After removing a board from its protective wrapper or from the system, place it component side up on a grounded, static free surface. Use a conductive foam pad if available. Do not slide the board over any surface. <br />
<br />
<br />
To further reduce the chances of ESD, you should create an ESD safe workstation that includes at minimum: <br />
<br />
Conductive rubber mat, with a lead wire that can be connected to a metal surface to create a ground. <br />
ESD wrist strap, which has a resistor inside the strap and a lead wire that can be connected to a metal surface as a ground. The grounding wire on the wrist strap should have between 1 and 10 Megaohms of resistance. The resistor should protect you in case you come in contact with a voltage source. If the resistor is bad or not included, the wrist strap is useless. An accidental shock could be serious and even deadly! <br />
Table or workspace that is clean, clear of dust, and away from electrical machinery or other equipment that generates electrical currents. <br />
The idea is to ensure that all components you are going to interact with have the same charge. By connecting everything to the computer case, you ensure that the components of the case, the chair, and your body all have the same charge. If every object has the same charge, the electrons will not jump from one object to another minimizing the risk of ESD damage. <br />
How do I put a filesystem on DoC? <br />
OK, here is a little HOWTO on how to set up MTD with a file system. <br />
<br />
This is a m810lmr, booting out of DoC. I am going to reserve the first 2M for kernel. So the layout will be the first 2M for linuxbios and kernel, and 6M for a file system. Kernel is 2.4.17, with linux-2.4.17-sis.patch from linuxbios source tree, and config-2.4.17-sis from the linuxbios source tree. Mainboard is the pcchips m810lmr. <br />
<br />
<br />
So I: <br />
modprobe doc2001 <br />
modprobe docprobe <br />
dmesg <br />
<br />
<br />
<br />
which shows: <br />
<br />
<br />
DiskOnChip Millennium found at address 0xFFFC8000 <br />
Flash chip found: Manufacturer ID: 98, Chip ID: E6 (Toshiba TC58V64AFT/DC) <br />
1 flash chips found. Total DiskOnChip size: 8 MiB <br />
mtd: Giving out device 0 to DiskOnChip Millennium <br />
Ignoring DiskOnChip Millennium at 0xFFFCA000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFCC000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFCE000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD0000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD2000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD4000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD6000 - already configured <br />
(etc..) <br />
Now I need MTD utilities. <br />
So I: <br />
cvs -d :pserver:anoncvs@cvs.infradead.org:/home/cvs login <br />
CVS password: <br />
<br />
(password is anoncvs) <br />
Then: <br />
cvs -d :pserver:anoncvs@cvs.infradead.org:/home/cvs co mtd <br />
<br />
<br />
Forget the drivers and such, you don't need them. What you need is the tools. <br />
cd mtd/tools <br />
make <br />
<br />
<br />
Go ahead and copy the executables somewhere handy, you'll need them. <br />
<br />
<br />
Now we need to make the last 6M into a "disk". We need to format it. The tool is nftl_format, so: <br />
[root@carly util]# ./nftl_format <br />
$Id: nftl_format.c,v 1.17 2001/08/29 14:28:48 dwmw2 Exp $ <br />
Usage: ./nftl_format [ []] <br />
[root@carly util]# expr 2048 \* 1024 <br />
2097152 <br />
[root@carly util]# expr 6 \* 1024 \* 1024 <br />
6291456 <br />
[root@carly util]# ./nftl_format /dev/mtd0 2097152 6291456 <br />
$Id: nftl_format.c,v 1.17 2001/08/29 14:28:48 dwmw2 Exp $ <br />
Phase 1. Checking and erasing Erase Zones from 0x00200000 to 0x00800000 <br />
Phase 2.a Writing NFTL Media Header and Bad Unit Table <br />
Phase 2.b Writing Spare NFTL Media Header and Spare Bad Unit Table <br />
Phase 3. Writing Unit Control Information to each Erase Unit <br />
<br />
<br />
we now have a formatted disk in there. We can now partition it. <br />
<br />
<br />
[root@carly util]# modprobe nftl <br />
dmesg shows LOTS of errors, since this was never partitioned ... <br />
<br />
<br />
Also, if you don't have /dev/nftla, <br />
[root@carly util]# mknod /dev/nftla b 93 0 <br />
<br />
<br />
Don't use the script just yet, it makes /dev/nftla as b 93 16, which is the wrong unit #. <br />
<br />
<br />
now fdisk /dev/nftla <br />
<br />
<br />
[root@carly util]# fdisk /dev/nftlA <br />
Command (m for help): n <br />
Command action <br />
e extended <br />
p primary partition (1-4) <br />
p <br />
Partition number (1-4): 1 <br />
First cylinder (1-1, default 1): <br />
Using default value 1 <br />
Command (m for help): p <br />
Disk /dev/nftlA: 1 heads, 12224 sectors, 1 cylinders <br />
Units = cylinders of 12224 * 512 bytes <br />
Device Boot Start End Blocks Id System <br />
/dev/nftlA1 1 1 6111+ 83 Linux <br />
Partition 1 has different physical/logical endings: <br />
phys=(768, 0, 0) logical=(0, 0, 12224) <br />
Partition 1 does not end on cylinder boundary: <br />
phys=(768, 0, 0) should be (768, 0, 12224) <br />
Command (m for help): w <br />
The partition table has been altered! <br />
Calling ioctl() to re-read partition table. <br />
WARNING: If you have created or modified any DOS 6.x partitions, please see the fdisk manual page for additional information. <br />
Syncing disks. <br />
[root@carly util]# mknod /dev/nftlA1 b 93 1 <br />
[root@carly util]# mke2fs /dev/nftlA1 <br />
mke2fs 1.23, 15-Aug-2001 for EXT2 FS 0.5b, 95/08/09 <br />
Filesystem label= <br />
OS type: Linux <br />
Block size=1024 (log=0) <br />
Fragment size=1024 (log=0) <br />
1528 inodes, 6111 blocks <br />
305 blocks (4.99%) reserved for the super user <br />
First data block=1 <br />
1 block group <br />
8192 blocks per group, 8192 fragments per group <br />
1528 inodes per group <br />
Writing inode tables: done <br />
Writing superblocks and filesystem accounting information: done <br />
<br />
<br />
This filesystem will be automatically checked every 37 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. <br />
<br />
<br />
[root@carly util]# mount /dev/nftlA1 /mnt <br />
[root@carly util]# cd /mnt <br />
[root@carly mnt]# df . <br />
Filesystem 1k-blocks Used Available Use% Mounted on <br />
/dev/nftlA1 5915 13 5597 1% /mnt <br />
[root@carly mnt]# <br />
<br />
<br />
and so you now have an ext2 file system on the DoC. <br />
<br />
<br />
ron <br />
<br />
=== How do I turn off embedded sis630 devices? ===<br />
<br />
From aip@cwlinux.com Mon Mar 25 08:54:07 2002 <br />
Date: Mon, 25 Mar 2002 22:07:54 +0800 <br />
From: Andrew Ip <br />
To: Kei Furuuchi <br />
Cc: linuxbios@lanl.gov <br />
Subject: Re: How to turn off unused pci device. <br />
Hi, <br />
> I have pcchips m758lmr which has audio chip besides sis630. <br />
> those functions in sis630 are not used in the motherboard. <br />
> But, the functions keep coming up. How do I turn off those? <br />
The following is from Nikolai Valdych previous message. Hope this help. <br />
-Andrew <br />
-- <br />
Andrew Ip <br />
Email: aip@cwlinux.com <br />
Actualy, it was pretty simple 0x7c00 - All devices enabled, You play with first 4 bits only. Cos there are 4 devices, so you have any combination of 4 bits. Set bit to 1 to turn off the device, bit 0 to enable it. This is the device list: <br />
Multimedia Audio controler <br />
Modem controler <br />
Ethernet sis930 controler <br />
USB controler. <br />
For example, to turn off Ethernet + USB it would be: <br />
0x7c0c -> 1100 in binary (first 4 bits) <br />
To turn off Multimedia audio : <br />
0x7c01 -> 0001 <br />
in binary and so on... maybe there are more detail, but this is enogh for me, Ollie, again thanks! <br />
nikolai <br />
p.s. though my modem is not yet working..... damn driver...... <br />
What is a PIRQ table? <br />
<br />
From Adam Sulmicki: <br />
<br />
<br />
I found beautfiul descrition of the BIOS implementation of the PIRQ in<br />
the red PCI book.<br />
<br />
I found the description of the $PIR data structure in the<br />
http://www.microsoft.com/hwdev/archive/BUSBIOS/pciirq.asp<br />
<br />
looking over linuxbios sources I see that it saves the $PIR data structure<br />
somewhere between 0xf0000 & 0x100000.<br />
<br />
so it seems I'll have to search for $PIR and then save it before copying<br />
over our bios. sigh. hoped for some fixed address in mem.<br />
<br />
-- <br />
Adam<br />
http://www.eax.com The Supreme Headquarters of the 32 bit registers<br />
<br />
=== How do I set up etherboot with LinuxBIOS? ===<br />
<br />
Note from Ron: I have edited this somewhat to remove Geode-specific items. <br />
<br />
Christer Weinigel writes: <br />
To: rminnich@lanl.gov<br />
Cc: linuxbios@lanl.gov<br />
Subject: Re: LinuxBIOS + Etherboot HOWTO?<br />
<br />
<br />
I had some trouble using LinuxBIOS + etherboot... <br />
<br />
<br />
My bad, I messed up and used mkelfImage-1.6 that I got from ftp.lnxi.com, when I realized that I ought to use the one from freebios/util everything started working. <br />
<br />
<br />
Here's what I did to get LinuxBIOS + Etherboot loading and booting a Linux kernel using TFTP. <br />
<br />
<br />
/Christer <br />
<br />
<br />
Get etherboot-5.0 from the CVS tree on etherboot.sourceforge.net. <br />
<br />
<br />
Modify etherboot-5.0/src/Config, comment out: <br />
<br />
# BIOS select don't change unless you know what you are doing<br />
#CFLAGS32+= -DPCBIOS<br />
<br />
<br />
<br />
and uncomment the following: <br />
<br />
# Options to make a version of Etherboot that will work under linuxBIOS.<br />
CFLAGS32+= -DLINUXBIOS -DCONFIG_TSC_CURRTICKS -DCONSOLE_SERIAL \<br />
-DCOMCONSOLE=0x3f8 -DCOMPRESERVE -DCONFIG_PCI_DIRECT -DELF_IMAGE <br />
<br />
<br />
<br />
Compile Etherboot to make an elf file for your ethernet card: <br />
<br />
make bin32/natsemi.elf<br />
<br />
<br />
<br />
Compile and install mkelfImage from freebios/util/mkelfImage. <br />
<br />
<br />
Create a bootimage to put on your TFTP server: <br />
<br />
mkelfImage --command-line="root=/dev/hda2 console=ttyS0,38400" \<br />
--kernel vmlinux -o /tftpboot/kernel<br />
<br />
<br />
<br />
Finally, make sure that your BOOT/DCHP server is answering and that the TFTP server is active. <br />
<br />
<br />
Tell LinuxBIOS to boot an elf Image, and tell LinuxBIOS where it is: <br />
<br />
option USE_ELF_BOOT=1<br />
<br />
<br />
<br />
I have placed natsemi.elf in the first 64k of my BIOS flash chip, and LinuxBIOS in the second 64k. <br />
<br />
insmod bios.o<br />
dd if=natsemi.elf of=/dev/bios bs=64k<br />
dd if=linuxbios.rom of=/dev/bios bs=64k seek=1<br />
<br />
<br />
<br />
Finally boot LinuxBIOS. <br />
<br />
=== How do I set GEODE video? ===<br />
<br />
From christer@weinigel.se Wed Nov 27 07:47:17 2002<br />
Date: 27 Nov 2002 10:55:01 +0100<br />
From: Christer Weinigel <br />
To: Adam Bezanson <br />
Cc: linuxbios@clustermatic.org<br />
Subject: Re: Geode Kernel Config<br />
<br />
"Adam Bezanson" writes:<br />
<br />
> I've got an Eval card from National Semi that contains<br />
> the SC1200. I'd like to try LinuxBios on it.<br />
> I've downloaded both the 2.4.18 and 2.4.19 kernels to start with.<br />
> What patches do I need to apply to the kernel?<br />
> Is there a config file I can use to configure the kernel, or<br />
> should I do it manually?<br />
<br />
A normal 2.4 Linux kernel will work fine as long as you compile for a<br />
586 CPU (CONFIG_M586), not Pentium or higher (CONFIG_M586TSC and up)<br />
since the TSC behaves a bit differently.<br />
<br />
If you want support for the watchdog or the GPIO pins in a 2.4 kernel,<br />
you can find an old patch from me at:<br />
<br />
http://groups.google.com/groups?selm=20020226015215.20118F5B%40acolyte.hack.org&oe=UTF-8&output=gplain<br />
<br />
An updated version of this patch has been included in Linux 2.5. Alan<br />
Cox' 2.5 kernel also has support for doing DMA on the SC1200 IDE<br />
controller; I don't know if there is a corresponding patch for 2.4.<br />
<br />
Other than that, take a look at the freebios/src/mainboard/nano/nano<br />
directory and make a copy of it. All you should have to do is to<br />
modify the Pin Multiplexing Register (PMR) and Miscellaneous Config<br />
Register (MCR) in the Config file and to modify the irq assignments.<br />
<br />
Depending on what you want to do, there are a few limitations with<br />
the current LinuxBIOS on the SC1200: <br />
<br />
There is no video support in LinuxBIOS itself, so you won't get<br />
any video until you have loaded the NatSemi Geode Linux<br />
framebuffer driver (can be found at www.linux4.tv under the<br />
heading SP1SC10 Platform Image).<br />
<br />
There is no SMM/VSA support at all, this means that anything<br />
relying on it won't work. What this means is that Audio won't<br />
work.<br />
<br />
Other than that everything works fine, IDE in PIO mode, the PCI bus,<br />
watchdog, GPIOs, everything.<br />
<br />
/Christer<br />
<br />
-- <br />
"Just how much can I get away with and still go to heaven?"<br />
<br />
Freelance consultant specializing in device driver programming for Linux <br />
Christer Weinigel http://www.weinigel.se<br />
_______________________________________________<br />
Linuxbios mailing list<br />
Linuxbios@clustermatic.org<br />
http://www.clustermatic.org/mailman/listinfo/linuxbios<br />
<br />
<br />
=== How do I set up testbios? ===<br />
From daubin@actuality-systems.com Wed Oct 6 10:23:10 2004<br />
Date: Tue, 5 Oct 2004 15:19:24 -0400<br />
From: Dave Aubin <br />
To: linuxbios@clustermatic.org<br />
Subject: RE: Testbios help with nvidia 6800Gt and simple how to<br />
<br />
I've taken the time to put together a simple testbios faq.<br />
I hope it is helpful. Feedback and additions are welcome.<br />
<br />
Thanks,<br />
Dave<br />
<br />
Testbios (vgabios) Faq<br />
<br />
Date: 10/5/2004<br />
Author(s): David Aubin daubin@actuality-systems.com<br />
<br />
Purpose: Testbios is an i386 emulator that sits on top of user<br />
space linux. It's primary purpose is to provide program video rom's in<br />
to<br />
the cached memory area.<br />
<br />
Faq Contents:<br />
1. Where to obtain testbios<br />
2. Prerequisites<br />
3. How to build testbios<br />
4. How to retrieve a good video bios<br />
5. How to use testbios<br />
<br />
1. Where to obtain testbios<br />
A. Testbios(vgabios) can be retrieved from the<br />
linuxbios/freebios source tree:<br />
http://www.linuxbios.org/developer/download/index.html<br />
<br />
2. Prerequisites<br />
A. You must have installed pci-utils<br />
i. Get<br />
http://atrey.karlin.mff.cuni.cz/~mj/pciutils.shtml<br />
<br />
3. How to build testbios:<br />
A. cd freebios/util/vgabios<br />
B. Edit ./Makefile and fill in the correct values for your<br />
environment<br />
I build on a 64 AMD so my makefile looks like this<br />
<br />
--Being ./Makefile for x64--<br />
CC = gcc<br />
ARCH := $(shell uname -m | sed -e s,i[3456789]86,i386,)<br />
INCLUDE = -I ../pciutils-2.1.11<br />
CFLAGS = -Wall -Ix86emu/include -O2 -g $(INCLUDE)<br />
<br />
INTOBJS = int10.o int15.o int16.o int1a.o inte6.o<br />
OBJECTS = testbios.o helper_exec.o helper_mem.o $(INTOBJS)<br />
LDFLAGS = -static-libgcc -static<br />
<br />
LIBS = x86emu/src/x86emu/libx86emu.a<br />
../pciutils-2.1.11/lib/libpci.a<br />
<br />
# user space pci is the only option right now.<br />
OBJECTS += pci-userspace.o<br />
<br />
ifeq ($(shell if test "$(ARCH)" == "x86_64" ; then echo 1; fi), 1)<br />
CFLAGS +=-m32 -march=i386<br />
endif<br />
<br />
all: testbios<br />
<br />
testbios: $(OBJECTS) $(LIBS)<br />
$(CC) $(CFLAGS) -o testbios $(OBJECTS) $(LDFLAGS)<br />
$(LIBS)<br />
<br />
helper_exec.o: helper_exec.c test.h<br />
<br />
x86emu/src/x86emu/libx86emu.a:<br />
$(MAKE) -C x86emu/src/x86emu/ -f makefile.linux<br />
<br />
clean:<br />
$(MAKE) -C x86emu/src/x86emu/ -f makefile.linux clean<br />
rm -f *.o *~ testbios<br />
<br />
distclean: clean<br />
$(MAKE) -C x86emu/src/x86emu/ -f makefile.linux clean<br />
<br />
--End ./Makefile--<br />
<br />
C. Edit ~vgabios/x86emu/src/x86emu/makefile.linux and fill in<br />
the correct values for your environment<br />
I build on a 64 AMD so my makefile looks like this<br />
<br />
--Begin ~vgabios/x86emu/src/x86emu/makefile.linux--<br />
########################################################################<br />
#####<br />
#<br />
# Realmode X86 Emulator<br />
Library<br />
#<br />
# Copyright (C) 1996-1999 SciTech Software, Inc.<br />
#<br />
#<br />
========================================================================<br />
#<br />
# Permission to use, copy, modify, distribute, and sell this software<br />
and<br />
# its documentation for any purpose is hereby granted without fee,<br />
# provided that the above copyright notice appear in all copies and<br />
that<br />
# both that copyright notice and this permission notice appear in<br />
# supporting documentation, and that the name of the authors not be<br />
used<br />
# in advertising or publicity pertaining to distribution of the<br />
software<br />
# without specific, written prior permission. The authors makes no<br />
# representations about the suitability of this software for any<br />
purpose.<br />
# It is provided "as is" without express or implied warranty.<br />
#<br />
# THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,<br />
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN<br />
NO<br />
# EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR<br />
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS<br />
OF<br />
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR<br />
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE<br />
OR<br />
# PERFORMANCE OF THIS SOFTWARE.<br />
#<br />
#<br />
========================================================================<br />
#<br />
# Descripton: Linux specific makefile for the x86emu library.<br />
#<br />
########################################################################<br />
#####<br />
<br />
TARGETLIB = libx86emu.a<br />
<br />
<br />
OBJS=\<br />
debug.o \<br />
decode.o \<br />
fpu.o \<br />
ops.o \<br />
ops2.o \<br />
prim_ops.o \<br />
sys.o<br />
<br />
$(TARGETLIB): $(OBJS)<br />
ar rv $(TARGETLIB) $(OBJS)<br />
<br />
INCS = -I. -Ix86emu -I../../include<br />
CFLAGS += -D__DRIVER__ -DFORCE_POST -D_CEXPORT= -DNO_LONG_LONG<br />
-DDEBUG<br />
ARCH := $(shell uname -m | sed -e s,i[3456789]86,i386,)<br />
ifeq ($(shell if test "$(ARCH)" == "x86_64" ; then echo 1; fi),<br />
1)<br />
CFLAGS +=-m32 -march=i386<br />
endif<br />
<br />
<br />
.c.o:<br />
# gcc -m32 -march=i386 -g -O -Wall -c $(CFLAGS) $(INCS) $*.c<br />
gcc -g -O -Wall -c $(CFLAGS) $(INCS) $*.c<br />
<br />
.cpp.o:<br />
# gcc -m32 -march=i386 -c $(CFLAGS) $(INCS) $*.cpp<br />
gcc -c $(CFLAGS) $(INCS) $*.cpp<br />
<br />
clean:<br />
rm -f *.a *.o<br />
<br />
validate: validate.o libx86emu.a<br />
gcc -o validate validate.o -lx86emu -L.<br />
<br />
--End ~vgabios/x86emu/src/x86emu/makefile.linux--<br />
<br />
D. Once built you could have a 32bit testbios executable made.<br />
Depending on your embedded environment you might want to have it built<br />
shared as the above example makes it static. Just remove -static-libgcc<br />
-static from the LDFLAGS on ./Makefile if you wish to have it built<br />
shared.<br />
<br />
4. How to retrieve a good video bios<br />
A. There are sites that have video bios roms on their website.<br />
I know of this one for nvidia cards:<br />
http://whitebunny.demon.nl/hardware/chipset_nvidia.html<br />
B. However you should be able to retrieve your own video bios<br />
as well<br />
with linux.<br />
i. Boot up a machine with a commercial bios (not linux<br />
bios) with<br />
the video card you wish to work under linux bios.<br />
ii. From the command line enter:<br />
dd if=/dev/mem of=vgabios.bin skip=1536 count=128 or <br />
dd if=/dev/mem of=vgabios.bin bs=1k count=64 skip=786432<br />
<br />
This assumes you card's bios is cached in 0xc0000. You<br />
can see where and how much your card's bios is using by<br />
doing a cat iomem | grep "Video ROM"<br />
<br />
a. dd Explained (man dd to learn more):<br />
1. if is the location to retrieve from.<br />
2. of is the output file (your rom image)<br />
3. skip jumps n blocks where the default n is<br />
512 bytes<br />
4. count is how many blocks you wish to read<br />
5. bs is the block size<br />
C. You now have a video bios image<br />
<br />
5. How to use testbios<br />
A. Currently testbios only works from user space linux<br />
(10/4/04)<br />
B. Example from a linux command line or script enter the<br />
following to<br />
get your video bios programmed:<br />
./testbios -s 65536 --abseg /dev/mem ./vgabios.bin<br />
i. Testbios explained<br />
a. -s how much of the video bios is there<br />
b. --abseg where would you like to write this (/dev/mem<br />
default)<br />
c. filename of video bios<br />
d. -d diag mode <br />
1. How to get pci busdevfn<br />
A. lspci<br />
B. look for your video card<br />
Example:<br />
2:00:00<br />
2 (00 << 3) | 00 = 0x200<br />
Example:<br />
00:12.0:<br />
0 (12 << 3) | 0 = 0x90<br />
e. -t dump <br />
f. -c codesegment Where do you want to start, default is<br />
0xc0000<br />
g. -b base Where do you want base to be default is<br />
0xc000<br />
h. -i instruction pointer usually left off as the<br />
default<br />
<br />
<br />
<br />
-----Original Message-----<br />
From: linuxbios-admin@clustermatic.org<br />
[mailto:linuxbios-admin@clustermatic.org] On Behalf Of Dave Aubin<br />
Sent: Tuesday, October 05, 2004 2:22 PM<br />
To: Richard Smith<br />
Cc: linuxbios@clustermatic.org<br />
Subject: RE: Testbios help with nvidia 6800Gt and simple how to<br />
<br />
Hi,<br />
<br />
Thank you:) Yes, it was at 0xc0000-0xc7fff, which is only 32k.<br />
But the image I got from the windows tool was 64k (double 8000).<br />
Weird. I would like to stay away from window tools.<br />
The info you provided is nice. I wish there was a way for us To make<br />
a faq and we could add this to the testbios faq. There Is a lot of good<br />
info on the clustermatic list, but it is all Dispersed. <br />
Ron if I write a simple faq can you provide some mechanism to Allow<br />
updates to it?<br />
<br />
Thanks,<br />
Dave <br />
<br />
-----Original Message-----<br />
From: Richard Smith [mailto:rsmith@bitworks.com]<br />
Sent: Tuesday, October 05, 2004 2:16 PM<br />
To: Dave Aubin<br />
Cc: linuxbios@clustermatic.org<br />
Subject: Re: Testbios help with nvidia 6800Gt and simple how to<br />
<br />
Dave Aubin wrote:<br />
<br />
> It seems my dd returned an unusable binary. I found a good binary for<br />
<br />
> The nvidia card from here:<br />
> http://whitebunny.demon.nl/hardware/chipset_nvidia.html<br />
> <br />
<br />
I was wondering about your dd command that but I had not had a chance to<br />
respond yet.<br />
<br />
This is what I use:<br />
<br />
dd if=/dev/mem of=vbios.bin bs=1k count=64 skip=786432<br />
<br />
That will rip the bios from 0x0c0000. You can verify that you actually<br />
have bios there with<br />
<br />
'hd -s 0x0c0000 -n 256 /dev/mem'<br />
<br />
in some cases it may be located at 0x0e0000 rather than 0x0c0000.<br />
<br />
It should start with the 0x55aa (Little endian) or 0xaa55 (big endian)<br />
and futher on you should see some text identifying the bios.<br />
<br />
<br />
--<br />
Richard A. Smith<br />
<br />
<br />
_______________________________________________<br />
Linuxbios mailing list<br />
Linuxbios@clustermatic.org<br />
http://www.clustermatic.org/mailman/listinfo/linuxbios</div>Jdarbyhttps://www.coreboot.org/index.php?title=FAQ&diff=33FAQ2005-03-01T17:58:03Z<p>Jdarby: </p>
<hr />
<div>Developer<br />
<br />
<br />
Where is the mailing list archived? <br />
Where do I get the code? <br />
<br />
How do I build? <br />
<br />
Why is the code so complicated and what can I do to make it easier? <br />
<br />
What chipsets are supported? <br />
<br />
What is this POST card thing? <br />
<br />
How do I contribute my changes? <br />
<br />
How do I re-flash the BIOS? <br />
<br />
How do I actually burn a flash ROM? <br />
<br />
How do I burn a DoC? <br />
<br />
Can I do any serious damage mucking around with this stuff? <br />
<br />
How do I put a filesystem on DoC? <br />
<br />
How do I turn off embedded sis630 devices? <br />
<br />
What is a PIRQ table? <br />
<br />
How do I set up etherboot with LinuxBIOS? <br />
<br />
How do I set GEODE video? <br />
<br />
How do I set up testbios? <br />
<br />
<br />
<br />
== General ==<br />
<br />
=== What is LinuxBIOS? ===<br />
<br />
LinuxBIOS aims to replace the normal BIOS found on PCs, Alphas, and other machines with a Linux kernel that can boot Linux from a cold start. LinuxBIOS is primarily Linux - about 10 lines of patches to the current Linux kernel. Additionally, the startup code - about 500 lines of assembly and 5000 lines of C - executes 16 instructions to get into 32-bit mode and then performs DRAM and other hardware initialization required before Linux can take over. <br />
<br />
<br />
Our primary motivation for the project was maintenance of large clusters, but not surprisingly interest and contributions have come from people with varying backgrounds. <br />
<br />
=== Why do we need LinuxBIOS? ===<br />
<br />
Current PCs used as cluster nodes depend on a vendor-supplied BIOS for booting. The BIOS in turn relies on inherently unreliable devices such as floppy disks and hard drives to boot the operating system. In addition, current BIOS software is unable to accommodate non-standard hardware making it difficult to support experimental work. The BIOS is slow and often erroneous and redundant and, most importantly, maintenance is a nightmare. Imagine walking around with a keyboard and monitor to every one of the 128 nodes in a cluster to change one BIOS setting. <br />
<br />
<br />
The LinuxBIOS gunzip's the Linux kernel straight out of NVRAM and essentially requires no moving parts other than the fan. It does a minimal amount of hardware initialization before jumping to the kernel start and lets Linux do the rest. As a result, it is much faster (current record 3 seconds), which has sparked interest in the consumer electronics community as well. Moreover, updates can be performed over the network. <br />
<br />
<br />
Using a real operating system to boot another operating system provides much greater flexibility than using a simple netboot program or the BIOS. Because Linux is the boot mechanism, it can boot over standard Ethernet or over other interconnects such as Myrinet, Quadrics, or SCI. It can use SSH connections to load the kernel, or it can use the InterMezzo caching file system or traditional NFS. Cluster nodes can be as simple as they need to be - perhaps as simple as a CPU and memory, no disk, no floppy, and no file system. The nodes will be much less autonomous thus making them easier to maintain. <br />
<br />
=== Who is working on LinuxBIOS? ===<br />
<br />
The LinuxBIOS project was started in the winter of 1999 in the Advanced Computing Laboratory at Los Alamos National Laboratory by Ron Minnich. Two undergraduate students, James Hendricks and Dale Webster spent their winter vacation putting together the proof of concept implementation. <br />
<br />
<br />
Since then, a long list of people have contributed both in discussions and actual code. See our contributors page for details. Please don't be shy and let us know if you are missing from the list. It's not a purposeful omission, just an unfortunate mistake. <br />
<br />
=== Who is funding LinuxBIOS? ===<br />
<br />
The LinuxBIOS project is funded by the Los Alamos Computer Science Institute and the Department of Energy's Office of Science. <br />
<br />
=== Will LinuxBIOS work on my machine? ===<br />
<br />
See the status page for which mainboards are supported. Also, see the products page for a list of vendors selling products running LinuxBIOS. <br />
<br />
=== What commercial products use LinuxBIOS? ===<br />
<br />
See the products page. <br />
<br />
=== How can I help with LinuxBIOS? ===<br />
<br />
Contact [[User:Rminnich|Ron Minnich]] for projects related to LinuxBIOS. <br />
<br />
<br />
<br />
Developer<br />
<br />
Where is the mailing list archived? <br />
<br />
The best archive out there is at the University of Maryland. <br />
<br />
<br />
In addition, we've pieced together an archive that dates back to about the beginning of 2000 (including messages that were going to the freebios and openbios mailing lists). <br />
<br />
Where do I get the code? <br />
<br />
See download. <br />
<br />
How do I build? <br />
<br />
See the documentation. For help generating a config file, see Generate a config file. <br />
<br />
Why is the code so complicated and what can I do to make it easier? <br />
<br />
The reason is the complexity of the problem. We support a lot of hardware, and a given chip on a given board will most likely not be configured quite the same as the same chip on some other board. <br />
<br />
<br />
To help make code navigation easier, pick a target and build that target. Then, in the build directory, type make tags or make etags to get your favorite tags file. <br />
<br />
What chipsets are supported? <br />
<br />
See status for the most up-to-date info.. <br />
<br />
What is this POST card thing? <br />
<br />
A POST card will save your life. The term POST means Power On Self Test and comes from the original IBM specifications for the BIOS. Port 80 is a pre-defined port to which programs can output a byte. The POST card displays the byte in hex on its 2 digit display. We use a lot of POST codes in LinuxBIOS, so if you can tell us the POST code you see, we will have some idea of what happened. <br />
<br />
<br />
If your LinuxBIOS machine is working properly, you will see it count up from 0xd0 to 0xd9 (while it is gunzipping the kernel) and then display 0x98 (Linux idle loop). <br />
<br />
How do I contribute my changes? <br />
<br />
Any one without commit privileges (which is most of you) need to get changes approved by Ron Minnich. <br />
<br />
How do I re-flash the BIOS? <br />
<br />
Download the appropriate flash update utility. Build the romimage as explained above and use the flash update utility to update the BIOS. Be warned that not all update utilities allow you to load your own BIOS image. For example, Intel decided to disallow it for the MS440GX mainboard (probably after hearing about us!) Here are some mainboard specific directions. <br />
<br />
SiS 630/950 M/Bs<br />
Ollie Lho provided us with flash utilities for these boards under freebios/util/sis. <br />
flash_on turns on the flash write enable. This needs to be run before loading the DoC drivers. <br />
flash_rom allows you to use your SiS 630/950 M/Bs as a flash programmer. It currently supports JEDEC flash parts, AMD am29f040b models, MXIC MX29F002 models, and SST28SF040C models. <br />
Intel L440GX<br />
Get the System Update Package directly from Intel. mcopy the ten files created from running make phlash onto the Intel flash burner disk and use the update utility to burn the BIOS. To restore the original BIOS, set the recovery boot jumper on the motherboard, put the floppy in, and it will load and reflash the original BIOS. <br />
How do I actually burn a flash ROM? <br />
<br />
Buy your favorite flash burner (we use a Needham Electronics EMP 30). Use make floppy to create the romimage and copy it to a floppy. Then use the provided software to burn the flash. <br />
<br />
How do I burn a DoC? <br />
<br />
Currently, only the DoC Millennium is supported. See the documentation. <br />
<br />
Can I do any serious damage mucking around with this stuff? <br />
<br />
Any time you stick your hand into an open machine while the power is on, you're risking life and limb. That said, there are also some other not-so-nice things that can happen if you mess up (not that we would know). <br />
<br />
Incorrect inserstion of the flash (1 casualty) <br />
Incorrect jumper settings (1 casualty) <br />
Aggressive and/or inappropriate use of metal objects such as screwdrivers (2 casualties) <br />
Miscellaneous miswirings and mishandlings (3+ casualties) <br />
<br />
And finally a note on electrostatic discharge (ESD) and ESD protection thanks to Bari Ari. <br />
<br />
<br />
ESD can damage disk drives, boards, DoC's and other parts. The majority of the time, ESD events cause the component to degrade, but not fail testing procedures, resulting in failure at a later date. Because components do not fail immediately, technicians often underestimate the cost of not using ESD prevention measures. Provide at minimum some ESD protection by wearing an antistatic wrist strap attached to the chassis ground on your system when handling parts. <br />
<br />
<br />
Always handle boards carefully. They can be extremely sensitive to ESD. Hold boards only by their edges. After removing a board from its protective wrapper or from the system, place it component side up on a grounded, static free surface. Use a conductive foam pad if available. Do not slide the board over any surface. <br />
<br />
<br />
To further reduce the chances of ESD, you should create an ESD safe workstation that includes at minimum: <br />
<br />
Conductive rubber mat, with a lead wire that can be connected to a metal surface to create a ground. <br />
ESD wrist strap, which has a resistor inside the strap and a lead wire that can be connected to a metal surface as a ground. The grounding wire on the wrist strap should have between 1 and 10 Megaohms of resistance. The resistor should protect you in case you come in contact with a voltage source. If the resistor is bad or not included, the wrist strap is useless. An accidental shock could be serious and even deadly! <br />
Table or workspace that is clean, clear of dust, and away from electrical machinery or other equipment that generates electrical currents. <br />
The idea is to ensure that all components you are going to interact with have the same charge. By connecting everything to the computer case, you ensure that the components of the case, the chair, and your body all have the same charge. If every object has the same charge, the electrons will not jump from one object to another minimizing the risk of ESD damage. <br />
How do I put a filesystem on DoC? <br />
OK, here is a little HOWTO on how to set up MTD with a file system. <br />
<br />
This is a m810lmr, booting out of DoC. I am going to reserve the first 2M for kernel. So the layout will be the first 2M for linuxbios and kernel, and 6M for a file system. Kernel is 2.4.17, with linux-2.4.17-sis.patch from linuxbios source tree, and config-2.4.17-sis from the linuxbios source tree. Mainboard is the pcchips m810lmr. <br />
<br />
<br />
So I: <br />
modprobe doc2001 <br />
modprobe docprobe <br />
dmesg <br />
<br />
<br />
<br />
which shows: <br />
<br />
<br />
DiskOnChip Millennium found at address 0xFFFC8000 <br />
Flash chip found: Manufacturer ID: 98, Chip ID: E6 (Toshiba TC58V64AFT/DC) <br />
1 flash chips found. Total DiskOnChip size: 8 MiB <br />
mtd: Giving out device 0 to DiskOnChip Millennium <br />
Ignoring DiskOnChip Millennium at 0xFFFCA000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFCC000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFCE000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD0000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD2000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD4000 - already configured <br />
Ignoring DiskOnChip Millennium at 0xFFFD6000 - already configured <br />
(etc..) <br />
Now I need MTD utilities. <br />
So I: <br />
cvs -d :pserver:anoncvs@cvs.infradead.org:/home/cvs login <br />
CVS password: <br />
<br />
(password is anoncvs) <br />
Then: <br />
cvs -d :pserver:anoncvs@cvs.infradead.org:/home/cvs co mtd <br />
<br />
<br />
Forget the drivers and such, you don't need them. What you need is the tools. <br />
cd mtd/tools <br />
make <br />
<br />
<br />
Go ahead and copy the executables somewhere handy, you'll need them. <br />
<br />
<br />
Now we need to make the last 6M into a "disk". We need to format it. The tool is nftl_format, so: <br />
[root@carly util]# ./nftl_format <br />
$Id: nftl_format.c,v 1.17 2001/08/29 14:28:48 dwmw2 Exp $ <br />
Usage: ./nftl_format [ []] <br />
[root@carly util]# expr 2048 \* 1024 <br />
2097152 <br />
[root@carly util]# expr 6 \* 1024 \* 1024 <br />
6291456 <br />
[root@carly util]# ./nftl_format /dev/mtd0 2097152 6291456 <br />
$Id: nftl_format.c,v 1.17 2001/08/29 14:28:48 dwmw2 Exp $ <br />
Phase 1. Checking and erasing Erase Zones from 0x00200000 to 0x00800000 <br />
Phase 2.a Writing NFTL Media Header and Bad Unit Table <br />
Phase 2.b Writing Spare NFTL Media Header and Spare Bad Unit Table <br />
Phase 3. Writing Unit Control Information to each Erase Unit <br />
<br />
<br />
we now have a formatted disk in there. We can now partition it. <br />
<br />
<br />
[root@carly util]# modprobe nftl <br />
dmesg shows LOTS of errors, since this was never partitioned ... <br />
<br />
<br />
Also, if you don't have /dev/nftla, <br />
[root@carly util]# mknod /dev/nftla b 93 0 <br />
<br />
<br />
Don't use the script just yet, it makes /dev/nftla as b 93 16, which is the wrong unit #. <br />
<br />
<br />
now fdisk /dev/nftla <br />
<br />
<br />
[root@carly util]# fdisk /dev/nftlA <br />
Command (m for help): n <br />
Command action <br />
e extended <br />
p primary partition (1-4) <br />
p <br />
Partition number (1-4): 1 <br />
First cylinder (1-1, default 1): <br />
Using default value 1 <br />
Command (m for help): p <br />
Disk /dev/nftlA: 1 heads, 12224 sectors, 1 cylinders <br />
Units = cylinders of 12224 * 512 bytes <br />
Device Boot Start End Blocks Id System <br />
/dev/nftlA1 1 1 6111+ 83 Linux <br />
Partition 1 has different physical/logical endings: <br />
phys=(768, 0, 0) logical=(0, 0, 12224) <br />
Partition 1 does not end on cylinder boundary: <br />
phys=(768, 0, 0) should be (768, 0, 12224) <br />
Command (m for help): w <br />
The partition table has been altered! <br />
Calling ioctl() to re-read partition table. <br />
WARNING: If you have created or modified any DOS 6.x partitions, please see the fdisk manual page for additional information. <br />
Syncing disks. <br />
[root@carly util]# mknod /dev/nftlA1 b 93 1 <br />
[root@carly util]# mke2fs /dev/nftlA1 <br />
mke2fs 1.23, 15-Aug-2001 for EXT2 FS 0.5b, 95/08/09 <br />
Filesystem label= <br />
OS type: Linux <br />
Block size=1024 (log=0) <br />
Fragment size=1024 (log=0) <br />
1528 inodes, 6111 blocks <br />
305 blocks (4.99%) reserved for the super user <br />
First data block=1 <br />
1 block group <br />
8192 blocks per group, 8192 fragments per group <br />
1528 inodes per group <br />
Writing inode tables: done <br />
Writing superblocks and filesystem accounting information: done <br />
<br />
<br />
This filesystem will be automatically checked every 37 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. <br />
<br />
<br />
[root@carly util]# mount /dev/nftlA1 /mnt <br />
[root@carly util]# cd /mnt <br />
[root@carly mnt]# df . <br />
Filesystem 1k-blocks Used Available Use% Mounted on <br />
/dev/nftlA1 5915 13 5597 1% /mnt <br />
[root@carly mnt]# <br />
<br />
<br />
and so you now have an ext2 file system on the DoC. <br />
<br />
<br />
ron <br />
<br />
How do I turn off embedded sis630 devices? <br />
From aip@cwlinux.com Mon Mar 25 08:54:07 2002 <br />
Date: Mon, 25 Mar 2002 22:07:54 +0800 <br />
From: Andrew Ip <br />
To: Kei Furuuchi <br />
Cc: linuxbios@lanl.gov <br />
Subject: Re: How to turn off unused pci device. <br />
Hi, <br />
> I have pcchips m758lmr which has audio chip besides sis630. <br />
> those functions in sis630 are not used in the motherboard. <br />
> But, the functions keep coming up. How do I turn off those? <br />
The following is from Nikolai Valdych previous message. Hope this help. <br />
-Andrew <br />
-- <br />
Andrew Ip <br />
Email: aip@cwlinux.com <br />
Actualy, it was pretty simple 0x7c00 - All devices enabled, You play with first 4 bits only. Cos there are 4 devices, so you have any combination of 4 bits. Set bit to 1 to turn off the device, bit 0 to enable it. This is the device list: <br />
Multimedia Audio controler <br />
Modem controler <br />
Ethernet sis930 controler <br />
USB controler. <br />
For example, to turn off Ethernet + USB it would be: <br />
0x7c0c -> 1100 in binary (first 4 bits) <br />
To turn off Multimedia audio : <br />
0x7c01 -> 0001 <br />
in binary and so on... maybe there are more detail, but this is enogh for me, Ollie, again thanks! <br />
nikolai <br />
p.s. though my modem is not yet working..... damn driver...... <br />
What is a PIRQ table? <br />
<br />
From Adam Sulmicki: <br />
<br />
<br />
I found beautfiul descrition of the BIOS implementation of the PIRQ in<br />
the red PCI book.<br />
<br />
I found the description of the $PIR data structure in the<br />
http://www.microsoft.com/hwdev/archive/BUSBIOS/pciirq.asp<br />
<br />
looking over linuxbios sources I see that it saves the $PIR data structure<br />
somewhere between 0xf0000 & 0x100000.<br />
<br />
so it seems I'll have to search for $PIR and then save it before copying<br />
over our bios. sigh. hoped for some fixed address in mem.<br />
<br />
-- <br />
Adam<br />
http://www.eax.com The Supreme Headquarters of the 32 bit registers<br />
<br />
How do I set up etherboot with LinuxBIOS? <br />
<br />
Note from Ron: I have edited this somewhat to remove Geode-specific items. <br />
<br />
Christer Weinigel writes: <br />
To: rminnich@lanl.gov<br />
Cc: linuxbios@lanl.gov<br />
Subject: Re: LinuxBIOS + Etherboot HOWTO?<br />
<br />
<br />
I had some trouble using LinuxBIOS + etherboot... <br />
<br />
<br />
My bad, I messed up and used mkelfImage-1.6 that I got from ftp.lnxi.com, when I realized that I ought to use the one from freebios/util everything started working. <br />
<br />
<br />
Here's what I did to get LinuxBIOS + Etherboot loading and booting a Linux kernel using TFTP. <br />
<br />
<br />
/Christer <br />
<br />
<br />
Get etherboot-5.0 from the CVS tree on etherboot.sourceforge.net. <br />
<br />
<br />
Modify etherboot-5.0/src/Config, comment out: <br />
<br />
# BIOS select don't change unless you know what you are doing<br />
#CFLAGS32+= -DPCBIOS<br />
<br />
<br />
<br />
and uncomment the following: <br />
<br />
# Options to make a version of Etherboot that will work under linuxBIOS.<br />
CFLAGS32+= -DLINUXBIOS -DCONFIG_TSC_CURRTICKS -DCONSOLE_SERIAL \<br />
-DCOMCONSOLE=0x3f8 -DCOMPRESERVE -DCONFIG_PCI_DIRECT -DELF_IMAGE <br />
<br />
<br />
<br />
Compile Etherboot to make an elf file for your ethernet card: <br />
<br />
make bin32/natsemi.elf<br />
<br />
<br />
<br />
Compile and install mkelfImage from freebios/util/mkelfImage. <br />
<br />
<br />
Create a bootimage to put on your TFTP server: <br />
<br />
mkelfImage --command-line="root=/dev/hda2 console=ttyS0,38400" \<br />
--kernel vmlinux -o /tftpboot/kernel<br />
<br />
<br />
<br />
Finally, make sure that your BOOT/DCHP server is answering and that the TFTP server is active. <br />
<br />
<br />
Tell LinuxBIOS to boot an elf Image, and tell LinuxBIOS where it is: <br />
<br />
option USE_ELF_BOOT=1<br />
<br />
<br />
<br />
I have placed natsemi.elf in the first 64k of my BIOS flash chip, and LinuxBIOS in the second 64k. <br />
<br />
insmod bios.o<br />
dd if=natsemi.elf of=/dev/bios bs=64k<br />
dd if=linuxbios.rom of=/dev/bios bs=64k seek=1<br />
<br />
<br />
<br />
Finally boot LinuxBIOS. <br />
<br />
How do I set GEODE video? <br />
From christer@weinigel.se Wed Nov 27 07:47:17 2002<br />
Date: 27 Nov 2002 10:55:01 +0100<br />
From: Christer Weinigel <br />
To: Adam Bezanson <br />
Cc: linuxbios@clustermatic.org<br />
Subject: Re: Geode Kernel Config<br />
<br />
"Adam Bezanson" writes:<br />
<br />
> I've got an Eval card from National Semi that contains<br />
> the SC1200. I'd like to try LinuxBios on it.<br />
> I've downloaded both the 2.4.18 and 2.4.19 kernels to start with.<br />
> What patches do I need to apply to the kernel?<br />
> Is there a config file I can use to configure the kernel, or<br />
> should I do it manually?<br />
<br />
A normal 2.4 Linux kernel will work fine as long as you compile for a<br />
586 CPU (CONFIG_M586), not Pentium or higher (CONFIG_M586TSC and up)<br />
since the TSC behaves a bit differently.<br />
<br />
If you want support for the watchdog or the GPIO pins in a 2.4 kernel,<br />
you can find an old patch from me at:<br />
<br />
http://groups.google.com/groups?selm=20020226015215.20118F5B%40acolyte.hack.org&oe=UTF-8&output=gplain<br />
<br />
An updated version of this patch has been included in Linux 2.5. Alan<br />
Cox' 2.5 kernel also has support for doing DMA on the SC1200 IDE<br />
controller; I don't know if there is a corresponding patch for 2.4.<br />
<br />
Other than that, take a look at the freebios/src/mainboard/nano/nano<br />
directory and make a copy of it. All you should have to do is to<br />
modify the Pin Multiplexing Register (PMR) and Miscellaneous Config<br />
Register (MCR) in the Config file and to modify the irq assignments.<br />
<br />
Depending on what you want to do, there are a few limitations with<br />
the current LinuxBIOS on the SC1200: <br />
<br />
There is no video support in LinuxBIOS itself, so you won't get<br />
any video until you have loaded the NatSemi Geode Linux<br />
framebuffer driver (can be found at www.linux4.tv under the<br />
heading SP1SC10 Platform Image).<br />
<br />
There is no SMM/VSA support at all, this means that anything<br />
relying on it won't work. What this means is that Audio won't<br />
work.<br />
<br />
Other than that everything works fine, IDE in PIO mode, the PCI bus,<br />
watchdog, GPIOs, everything.<br />
<br />
/Christer<br />
<br />
-- <br />
"Just how much can I get away with and still go to heaven?"<br />
<br />
Freelance consultant specializing in device driver programming for Linux <br />
Christer Weinigel http://www.weinigel.se<br />
_______________________________________________<br />
Linuxbios mailing list<br />
Linuxbios@clustermatic.org<br />
http://www.clustermatic.org/mailman/listinfo/linuxbios<br />
<br />
How do I set up testbios? <br />
From daubin@actuality-systems.com Wed Oct 6 10:23:10 2004<br />
Date: Tue, 5 Oct 2004 15:19:24 -0400<br />
From: Dave Aubin <br />
To: linuxbios@clustermatic.org<br />
Subject: RE: Testbios help with nvidia 6800Gt and simple how to<br />
<br />
I've taken the time to put together a simple testbios faq.<br />
I hope it is helpful. Feedback and additions are welcome.<br />
<br />
Thanks,<br />
Dave<br />
<br />
Testbios (vgabios) Faq<br />
<br />
Date: 10/5/2004<br />
Author(s): David Aubin daubin@actuality-systems.com<br />
<br />
Purpose: Testbios is an i386 emulator that sits on top of user<br />
space linux. It's primary purpose is to provide program video rom's in<br />
to<br />
the cached memory area.<br />
<br />
Faq Contents:<br />
1. Where to obtain testbios<br />
2. Prerequisites<br />
3. How to build testbios<br />
4. How to retrieve a good video bios<br />
5. How to use testbios<br />
<br />
1. Where to obtain testbios<br />
A. Testbios(vgabios) can be retrieved from the<br />
linuxbios/freebios source tree:<br />
http://www.linuxbios.org/developer/download/index.html<br />
<br />
2. Prerequisites<br />
A. You must have installed pci-utils<br />
i. Get<br />
http://atrey.karlin.mff.cuni.cz/~mj/pciutils.shtml<br />
<br />
3. How to build testbios:<br />
A. cd freebios/util/vgabios<br />
B. Edit ./Makefile and fill in the correct values for your<br />
environment<br />
I build on a 64 AMD so my makefile looks like this<br />
<br />
--Being ./Makefile for x64--<br />
CC = gcc<br />
ARCH := $(shell uname -m | sed -e s,i[3456789]86,i386,)<br />
INCLUDE = -I ../pciutils-2.1.11<br />
CFLAGS = -Wall -Ix86emu/include -O2 -g $(INCLUDE)<br />
<br />
INTOBJS = int10.o int15.o int16.o int1a.o inte6.o<br />
OBJECTS = testbios.o helper_exec.o helper_mem.o $(INTOBJS)<br />
LDFLAGS = -static-libgcc -static<br />
<br />
LIBS = x86emu/src/x86emu/libx86emu.a<br />
../pciutils-2.1.11/lib/libpci.a<br />
<br />
# user space pci is the only option right now.<br />
OBJECTS += pci-userspace.o<br />
<br />
ifeq ($(shell if test "$(ARCH)" == "x86_64" ; then echo 1; fi), 1)<br />
CFLAGS +=-m32 -march=i386<br />
endif<br />
<br />
all: testbios<br />
<br />
testbios: $(OBJECTS) $(LIBS)<br />
$(CC) $(CFLAGS) -o testbios $(OBJECTS) $(LDFLAGS)<br />
$(LIBS)<br />
<br />
helper_exec.o: helper_exec.c test.h<br />
<br />
x86emu/src/x86emu/libx86emu.a:<br />
$(MAKE) -C x86emu/src/x86emu/ -f makefile.linux<br />
<br />
clean:<br />
$(MAKE) -C x86emu/src/x86emu/ -f makefile.linux clean<br />
rm -f *.o *~ testbios<br />
<br />
distclean: clean<br />
$(MAKE) -C x86emu/src/x86emu/ -f makefile.linux clean<br />
<br />
--End ./Makefile--<br />
<br />
C. Edit ~vgabios/x86emu/src/x86emu/makefile.linux and fill in<br />
the correct values for your environment<br />
I build on a 64 AMD so my makefile looks like this<br />
<br />
--Begin ~vgabios/x86emu/src/x86emu/makefile.linux--<br />
########################################################################<br />
#####<br />
#<br />
# Realmode X86 Emulator<br />
Library<br />
#<br />
# Copyright (C) 1996-1999 SciTech Software, Inc.<br />
#<br />
#<br />
========================================================================<br />
#<br />
# Permission to use, copy, modify, distribute, and sell this software<br />
and<br />
# its documentation for any purpose is hereby granted without fee,<br />
# provided that the above copyright notice appear in all copies and<br />
that<br />
# both that copyright notice and this permission notice appear in<br />
# supporting documentation, and that the name of the authors not be<br />
used<br />
# in advertising or publicity pertaining to distribution of the<br />
software<br />
# without specific, written prior permission. The authors makes no<br />
# representations about the suitability of this software for any<br />
purpose.<br />
# It is provided "as is" without express or implied warranty.<br />
#<br />
# THE AUTHORS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,<br />
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN<br />
NO<br />
# EVENT SHALL THE AUTHORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR<br />
# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS<br />
OF<br />
# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR<br />
# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE<br />
OR<br />
# PERFORMANCE OF THIS SOFTWARE.<br />
#<br />
#<br />
========================================================================<br />
#<br />
# Descripton: Linux specific makefile for the x86emu library.<br />
#<br />
########################################################################<br />
#####<br />
<br />
TARGETLIB = libx86emu.a<br />
<br />
<br />
OBJS=\<br />
debug.o \<br />
decode.o \<br />
fpu.o \<br />
ops.o \<br />
ops2.o \<br />
prim_ops.o \<br />
sys.o<br />
<br />
$(TARGETLIB): $(OBJS)<br />
ar rv $(TARGETLIB) $(OBJS)<br />
<br />
INCS = -I. -Ix86emu -I../../include<br />
CFLAGS += -D__DRIVER__ -DFORCE_POST -D_CEXPORT= -DNO_LONG_LONG<br />
-DDEBUG<br />
ARCH := $(shell uname -m | sed -e s,i[3456789]86,i386,)<br />
ifeq ($(shell if test "$(ARCH)" == "x86_64" ; then echo 1; fi),<br />
1)<br />
CFLAGS +=-m32 -march=i386<br />
endif<br />
<br />
<br />
.c.o:<br />
# gcc -m32 -march=i386 -g -O -Wall -c $(CFLAGS) $(INCS) $*.c<br />
gcc -g -O -Wall -c $(CFLAGS) $(INCS) $*.c<br />
<br />
.cpp.o:<br />
# gcc -m32 -march=i386 -c $(CFLAGS) $(INCS) $*.cpp<br />
gcc -c $(CFLAGS) $(INCS) $*.cpp<br />
<br />
clean:<br />
rm -f *.a *.o<br />
<br />
validate: validate.o libx86emu.a<br />
gcc -o validate validate.o -lx86emu -L.<br />
<br />
--End ~vgabios/x86emu/src/x86emu/makefile.linux--<br />
<br />
D. Once built you could have a 32bit testbios executable made.<br />
Depending on your embedded environment you might want to have it built<br />
shared as the above example makes it static. Just remove -static-libgcc<br />
-static from the LDFLAGS on ./Makefile if you wish to have it built<br />
shared.<br />
<br />
4. How to retrieve a good video bios<br />
A. There are sites that have video bios roms on their website.<br />
I know of this one for nvidia cards:<br />
http://whitebunny.demon.nl/hardware/chipset_nvidia.html<br />
B. However you should be able to retrieve your own video bios<br />
as well<br />
with linux.<br />
i. Boot up a machine with a commercial bios (not linux<br />
bios) with<br />
the video card you wish to work under linux bios.<br />
ii. From the command line enter:<br />
dd if=/dev/mem of=vgabios.bin skip=1536 count=128 or <br />
dd if=/dev/mem of=vgabios.bin bs=1k count=64 skip=786432<br />
<br />
This assumes you card's bios is cached in 0xc0000. You<br />
can see where and how much your card's bios is using by<br />
doing a cat iomem | grep "Video ROM"<br />
<br />
a. dd Explained (man dd to learn more):<br />
1. if is the location to retrieve from.<br />
2. of is the output file (your rom image)<br />
3. skip jumps n blocks where the default n is<br />
512 bytes<br />
4. count is how many blocks you wish to read<br />
5. bs is the block size<br />
C. You now have a video bios image<br />
<br />
5. How to use testbios<br />
A. Currently testbios only works from user space linux<br />
(10/4/04)<br />
B. Example from a linux command line or script enter the<br />
following to<br />
get your video bios programmed:<br />
./testbios -s 65536 --abseg /dev/mem ./vgabios.bin<br />
i. Testbios explained<br />
a. -s how much of the video bios is there<br />
b. --abseg where would you like to write this (/dev/mem<br />
default)<br />
c. filename of video bios<br />
d. -d diag mode <br />
1. How to get pci busdevfn<br />
A. lspci<br />
B. look for your video card<br />
Example:<br />
2:00:00<br />
2 (00 << 3) | 00 = 0x200<br />
Example:<br />
00:12.0:<br />
0 (12 << 3) | 0 = 0x90<br />
e. -t dump <br />
f. -c codesegment Where do you want to start, default is<br />
0xc0000<br />
g. -b base Where do you want base to be default is<br />
0xc000<br />
h. -i instruction pointer usually left off as the<br />
default<br />
<br />
<br />
<br />
-----Original Message-----<br />
From: linuxbios-admin@clustermatic.org<br />
[mailto:linuxbios-admin@clustermatic.org] On Behalf Of Dave Aubin<br />
Sent: Tuesday, October 05, 2004 2:22 PM<br />
To: Richard Smith<br />
Cc: linuxbios@clustermatic.org<br />
Subject: RE: Testbios help with nvidia 6800Gt and simple how to<br />
<br />
Hi,<br />
<br />
Thank you:) Yes, it was at 0xc0000-0xc7fff, which is only 32k.<br />
But the image I got from the windows tool was 64k (double 8000).<br />
Weird. I would like to stay away from window tools.<br />
The info you provided is nice. I wish there was a way for us To make<br />
a faq and we could add this to the testbios faq. There Is a lot of good<br />
info on the clustermatic list, but it is all Dispersed. <br />
Ron if I write a simple faq can you provide some mechanism to Allow<br />
updates to it?<br />
<br />
Thanks,<br />
Dave <br />
<br />
-----Original Message-----<br />
From: Richard Smith [mailto:rsmith@bitworks.com]<br />
Sent: Tuesday, October 05, 2004 2:16 PM<br />
To: Dave Aubin<br />
Cc: linuxbios@clustermatic.org<br />
Subject: Re: Testbios help with nvidia 6800Gt and simple how to<br />
<br />
Dave Aubin wrote:<br />
<br />
> It seems my dd returned an unusable binary. I found a good binary for<br />
<br />
> The nvidia card from here:<br />
> http://whitebunny.demon.nl/hardware/chipset_nvidia.html<br />
> <br />
<br />
I was wondering about your dd command that but I had not had a chance to<br />
respond yet.<br />
<br />
This is what I use:<br />
<br />
dd if=/dev/mem of=vbios.bin bs=1k count=64 skip=786432<br />
<br />
That will rip the bios from 0x0c0000. You can verify that you actually<br />
have bios there with<br />
<br />
'hd -s 0x0c0000 -n 256 /dev/mem'<br />
<br />
in some cases it may be located at 0x0e0000 rather than 0x0c0000.<br />
<br />
It should start with the 0x55aa (Little endian) or 0xaa55 (big endian)<br />
and futher on you should see some text identifying the bios.<br />
<br />
<br />
--<br />
Richard A. Smith<br />
<br />
<br />
_______________________________________________<br />
Linuxbios mailing list<br />
Linuxbios@clustermatic.org<br />
http://www.clustermatic.org/mailman/listinfo/linuxbios</div>Jdarbyhttps://www.coreboot.org/index.php?title=User:Jdarby&diff=120User:Jdarby2005-03-01T17:42:14Z<p>Jdarby: </p>
<hr />
<div>All of the information you would ever actually care to know about me is available at my personal website: [http://windex.org here.]</div>Jdarby