old-www/HOWTO/Remote-Serial-Console-HOWTO/advice-bios.html

497 lines
7.6 KiB
HTML

<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 &#62; /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 &#62; /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
>