<HTML ><HEAD ><TITLE >Advice for BIOS authors</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" TITLE="Remote Serial Console HOWTO" HREF="index.html"><LINK REL="UP" TITLE="Gratuitous advice for developers" HREF="advice.html"><LINK REL="PREVIOUS" TITLE="Advice for boot loader authors" HREF="advice-bootloader.html"><LINK REL="NEXT" TITLE="About this HOWTO" HREF="about.html"></HEAD ><BODY CLASS="SECTION" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >Remote Serial Console HOWTO</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="advice-bootloader.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" >Appendix F. Gratuitous advice for developers</TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="about.html" ACCESSKEY="N" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="SECTION" ><H1 CLASS="SECTION" ><A NAME="ADVICE-BIOS" ></A >F.2. Advice for <SPAN CLASS="ACRONYM" >BIOS</SPAN > authors</H1 ><P >Thank you for adding support for remote operations to your <SPAN CLASS="ACRONYM" >BIOS</SPAN >. A few points will maximize the benefits of that support, most of them are listed in <A HREF="advice-bootloader.html" >Section F.1</A >.</P ><P ></P ><UL ><LI ><P >Keep the user interface simple. There is no need for fancy cursor-addressed terminal support. Fancy features simply limit the number of client terminal emulators that can be used. A surprising number of these have very buggy <SPAN CLASS="ACRONYM" >DEC</SPAN > <SPAN CLASS="PRODUCTNAME" >VT100</SPAN > implementations.</P ><P >In addition to supporting lower speeds, also test your user interface at low data rates.</P ></LI ><LI ><P >Don't do too much. In <SPAN CLASS="SYSTEMITEM" >Linux</SPAN > the boot loader and operating system both have explicit support for a serial console. So all the <SPAN CLASS="ACRONYM" >BIOS</SPAN > need do is to support the a serial interface for itself. <SPAN CLASS="SYSTEMITEM" >Linux</SPAN > has no need for a generic serial redirection facility. If you do provide such a facility for other operating systems, please allow it to be disabled after system boot.</P ></LI ><LI ><P >Don't allow line noise to prevent the computer from booting. Don't require just one key to enter the <SPAN CLASS="ACRONYM" >BIOS</SPAN > configuration, make your users and your marketing people happy by using a phrase like <TT CLASS="LITERAL" >dell</TT >, <TT CLASS="LITERAL" >hp</TT > or <TT CLASS="LITERAL" >ibm</TT >. Copy the <TT CLASS="LITERAL" >lifetime</TT > idea from <A HREF="advice-bootloader.html" >Section F.1</A >.</P ></LI ><LI ><P >Present a consistent prompt. Imagine a user with a supercomputer array of five hundred <SPAN CLASS="ACRONYM" >PC</SPAN >s. You want to change a <SPAN CLASS="ACRONYM" >BIOS</SPAN > parameter. Make it easy for <SPAN CLASS="APPLICATION" ><A HREF="http://expect.nist.gov/" TARGET="_top" >Expect</A ></SPAN > to set those parameters.</P ></LI ><LI ><P >Make sure the <SPAN CLASS="SYSTEMITEM" >Linux</SPAN > utilities work. Check that the <SPAN CLASS="SYSTEMITEM" >Linux</SPAN > <TT CLASS="FUNCTION" >nvram</TT > device driver returns the full contents of <SPAN CLASS="ACRONYM" >CMOS</SPAN >. This makes it simple to set the same <SPAN CLASS="ACRONYM" >CMOS</SPAN > settings on a large number of machines. The commands in <A HREF="advice-bios.html#ADVICE-BIOS-NVRAMGET" >Figure F-2</A > and <A HREF="advice-bios.html#ADVICE-BIOS-NVRAMSET" >Figure F-3</A > should work to copy the <SPAN CLASS="ACRONYM" >BIOS</SPAN > settings from one machine to another, where the make, model and <SPAN CLASS="ACRONYM" >BIOS</SPAN > versions of the machines are the same.</P ><DIV CLASS="FIGURE" ><A NAME="ADVICE-BIOS-NVRAMCONFIG" ></A ><P ><B >Figure F-1. Configuring /dev/nvram to access the <SPAN CLASS="ACRONYM" >CMOS</SPAN > configuration</B ></P ><TABLE BORDER="1" BGCOLOR="#E0E0E0" WIDTH="90%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="SCREEN" ><TT CLASS="PROMPT" >bash#</TT > <B CLASS="COMMAND" >/dev/MAKEDEV nvram</B > <TT CLASS="PROMPT" >bash#</TT > <B CLASS="COMMAND" >vi /etc/modules.conf</B ></PRE ></FONT ></TD ></TR ></TABLE ><TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="90%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="PROGRAMLISTING" >alias char-major-10-144 nvram</PRE ></FONT ></TD ></TR ></TABLE ><TABLE BORDER="1" BGCOLOR="#E0E0E0" WIDTH="90%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="SCREEN" ><TT CLASS="PROMPT" >bash#</TT > <B CLASS="COMMAND" >depmod -a</B ></PRE ></FONT ></TD ></TR ></TABLE ></DIV ><DIV CLASS="FIGURE" ><A NAME="ADVICE-BIOS-NVRAMGET" ></A ><P ><B >Figure F-2. Getting the <SPAN CLASS="ACRONYM" >CMOS</SPAN > configuration</B ></P ><TABLE BORDER="1" BGCOLOR="#E0E0E0" WIDTH="90%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="SCREEN" ><TT CLASS="PROMPT" >bash#</TT > <B CLASS="COMMAND" >cat /dev/nvram > /etc/nvram.bin</B ></PRE ></FONT ></TD ></TR ></TABLE ></DIV ><DIV CLASS="FIGURE" ><A NAME="ADVICE-BIOS-NVRAMSET" ></A ><P ><B >Figure F-3. Setting the <SPAN CLASS="ACRONYM" >CMOS</SPAN > configuration</B ></P ><TABLE BORDER="1" BGCOLOR="#E0E0E0" WIDTH="90%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="SCREEN" ><TT CLASS="PROMPT" >bash#</TT > <B CLASS="COMMAND" >cat /etc/nvram.bin > /dev/nvram</B ></PRE ></FONT ></TD ></TR ></TABLE ></DIV ></LI ><LI ><P >Have a flash <SPAN CLASS="ACRONYM" >BIOS</SPAN > upgrade program that works from <SPAN CLASS="SYSTEMITEM" >Linux</SPAN >. Make the source code to this available. Or publish the specifications so that one can be written.</P ><P >Many flash <SPAN CLASS="ACRONYM" >BIOS</SPAN > update programs run from a Microsoft <SPAN CLASS="PRODUCTNAME" ><SPAN CLASS="ACRONYM" >MS-DOS</SPAN ></SPAN > boot diskette. Please check that the program also works with the similar <SPAN CLASS="PRODUCTNAME" >Free<SPAN CLASS="ACRONYM" >DOS</SPAN ></SPAN > operating system. Many Linux computers do not have licenses for Microsoft operating system software, so legally creating a <SPAN CLASS="PRODUCTNAME" ><SPAN CLASS="ACRONYM" >MS-DOS</SPAN ></SPAN > boot diskette may not be possible.</P ></LI ><LI ><P >Be clear in the documentation about what serial servies the BIOS provides. Some <SPAN CLASS="ACRONYM" >BIOS</SPAN >s with a <SPAN CLASS="QUOTE" >"serial redirection"</SPAN > feature don't allow the <SPAN CLASS="ACRONYM" >BIOS</SPAN > to be redirected to a plain text terminal, but instead use a proprietary protocol. This isn't of much use to <SPAN CLASS="SYSTEMITEM" >Linux</SPAN > serial console users.</P ></LI ></UL ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="advice-bootloader.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="about.html" ACCESSKEY="N" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Advice for boot loader authors</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="advice.html" ACCESSKEY="U" >Up</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >About this HOWTO</TD ></TR ></TABLE ></DIV ></BODY ></HTML >