diff options
Diffstat (limited to 'system/doc/embedded')
-rw-r--r-- | system/doc/embedded/Makefile | 103 | ||||
-rw-r--r-- | system/doc/embedded/book.xml | 43 | ||||
-rw-r--r-- | system/doc/embedded/embedded_nt.xml | 84 | ||||
-rw-r--r-- | system/doc/embedded/embedded_solaris.xml | 734 | ||||
-rw-r--r-- | system/doc/embedded/intro.xml | 95 | ||||
-rw-r--r-- | system/doc/embedded/make.dep | 14 | ||||
-rw-r--r-- | system/doc/embedded/note.gif | bin | 0 -> 1539 bytes | |||
-rw-r--r-- | system/doc/embedded/part.xml | 50 | ||||
-rw-r--r-- | system/doc/embedded/starting.xml | 249 | ||||
-rw-r--r-- | system/doc/embedded/target.xml | 414 | ||||
-rw-r--r-- | system/doc/embedded/vme_problems.xml | 61 | ||||
-rw-r--r-- | system/doc/embedded/vxworks.xml | 193 | ||||
-rw-r--r-- | system/doc/embedded/warning.gif | bin | 0 -> 1498 bytes | |||
-rw-r--r-- | system/doc/embedded/xmlfiles.mk | 22 | ||||
-rw-r--r-- | system/doc/embedded/xntp.xml | 75 |
15 files changed, 2137 insertions, 0 deletions
diff --git a/system/doc/embedded/Makefile b/system/doc/embedded/Makefile new file mode 100644 index 0000000000..5e68917fc2 --- /dev/null +++ b/system/doc/embedded/Makefile @@ -0,0 +1,103 @@ +# +# %CopyrightBegin% +# +# Copyright Ericsson AB 1997-2009. All Rights Reserved. +# +# The contents of this file are subject to the Erlang Public License, +# Version 1.1, (the "License"); you may not use this file except in +# compliance with the License. You should have received a copy of the +# Erlang Public License along with this software. If not, it can be +# retrieved online at http://www.erlang.org/. +# +# Software distributed under the License is distributed on an "AS IS" +# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +# the License for the specific language governing rights and limitations +# under the License. +# +# %CopyrightEnd% +# +# +include $(ERL_TOP)/make/target.mk +include $(ERL_TOP)/make/$(TARGET)/otp.mk + +# ---------------------------------------------------- +# Application version +# ---------------------------------------------------- +include $(ERL_TOP)/erts/vsn.mk +#VSN=$(SYSTEM_VSN) + +APPLICATION=otp-system-documentation +# ---------------------------------------------------- +# Release directory specification +# ---------------------------------------------------- +RELSYSDIR = $(RELEASE_PATH)/doc/embedded + +# ---------------------------------------------------- +# Target Specs +# ---------------------------------------------------- +XML_PART_FILES = part.xml + +include xmlfiles.mk + +XML_CHAPTER_FILES=$(EMBEDDED_CHAPTER_FILES) + +TOPDOCDIR=.. + +BOOK_FILES = book.xml + +GIF_FILES = + +PS_FILES = + +XML_FILES = \ + $(BOOK_FILES) $(XML_CHAPTER_FILES) \ + $(XML_PART_FILES) + +# ---------------------------------------------------- + +HTML_FILES = \ + $(XML_PART_FILES:%.xml=%.html) + +HTMLDIR = ../html/embedded + + +HTML_UG_FILE = $(HTMLDIR)/users_guide.html + + +# ---------------------------------------------------- +# FLAGS +# ---------------------------------------------------- +XML_FLAGS += +DVIPS_FLAGS += + +# ---------------------------------------------------- +# Targets +# ---------------------------------------------------- +docs: html + +local_docs: PDFDIR=../../pdf + +html: $(GIF_FILES) $(HTML_UG_FILE) + +debug opt: + +clean clean_docs: + rm -rf $(HTMLDIR) + rm -f $(TOP_PDF_FILE) $(TOP_PDF_FILE:%.pdf=%.fo) + rm -f errs core *~ + +# ---------------------------------------------------- +# Release Target +# ---------------------------------------------------- +include $(ERL_TOP)/make/otp_release_targets.mk + +release_docs_spec: docs +# $(INSTALL_DIR) $(RELEASE_PATH)/pdf +# $(INSTALL_DATA) $(TOP_PDF_FILE) $(RELEASE_PATH)/pdf + $(INSTALL_DIR) $(RELSYSDIR) + $(INSTALL_DATA) $(GIF_FILES) $(HTMLDIR)/*.html \ + $(RELSYSDIR) + +release_spec: + + diff --git a/system/doc/embedded/book.xml b/system/doc/embedded/book.xml new file mode 100644 index 0000000000..7dc43e36bf --- /dev/null +++ b/system/doc/embedded/book.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="latin1" ?> +<!DOCTYPE book SYSTEM "book.dtd"> + +<book xmlns:xi="http://www.w3.org/2001/XInclude"> + <header titlestyle="normal"> + <copyright> + <year>1997</year><year>2009</year> + <holder>Ericsson AB. All Rights Reserved.</holder> + </copyright> + <legalnotice> + The contents of this file are subject to the Erlang Public License, + Version 1.1, (the "License"); you may not use this file except in + compliance with the License. You should have received a copy of the + Erlang Public License along with this software. If not, it can be + retrieved online at http://www.erlang.org/. + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and limitations + under the License. + + </legalnotice> + + <title>Embedded Systems</title> + <prepared>Kenneth Lundin</prepared> + <docno></docno> + <date></date> + <rev></rev> + <file></file> + </header> + <insidecover> + </insidecover> + <pagetext>Embedded Systems</pagetext> + <preamble> + <contents level="2"></contents> + </preamble> + <parts lift="no"> + <xi:include href="part.xml"/> + </parts> + <listofterms></listofterms> + <index></index> +</book> + diff --git a/system/doc/embedded/embedded_nt.xml b/system/doc/embedded/embedded_nt.xml new file mode 100644 index 0000000000..8e594b1951 --- /dev/null +++ b/system/doc/embedded/embedded_nt.xml @@ -0,0 +1,84 @@ +<?xml version="1.0" encoding="latin1" ?> +<!DOCTYPE chapter SYSTEM "chapter.dtd"> + +<chapter> + <header> + <copyright> + <year>1997</year><year>2009</year> + <holder>Ericsson AB. All Rights Reserved.</holder> + </copyright> + <legalnotice> + The contents of this file are subject to the Erlang Public License, + Version 1.1, (the "License"); you may not use this file except in + compliance with the License. You should have received a copy of the + Erlang Public License along with this software. If not, it can be + retrieved online at http://www.erlang.org/. + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and limitations + under the License. + + </legalnotice> + + <title>Windows NT</title> + <prepared>Kenneth Lundin</prepared> + <responsible>Kenneth Lundin</responsible> + <docno></docno> + <approved></approved> + <checked></checked> + <date>1997-11-25</date> + <rev>PA2</rev> + <file>embedded_nt.xml</file> + </header> + <p>This chapter describes the OS specific parts of OTP which relate + to Windows NT. + </p> + + <section> + <title>Introduction</title> + <p>A normal installation of NT 4.0, with service pack 4 or later, + is required for an embedded Windows NT running OTP.</p> + </section> + + <section> + <title>Memory Usage</title> + <p>RAM memory of 96 MBytes is recommended to run OTP on NT. + A system with less than 64 Mbytes of RAM is not recommended.</p> + </section> + + <section> + <title>Disk Space Usage</title> + <p>A minimum NT installation with networking needs 250 MB, and + an additional 130 MB for the swap file. </p> + </section> + + <section> + <title>Installation</title> + <p>Normal NT installation is performed. No additional application + programs are needed, such as Internet explorer or web server. Networking + with TCP/IP is required. <br></br> + + Service pack 4 or later must be installed.</p> + + <section> + <title>Hardware Watchdog</title> + <p>For Windows NT running on standard PCs with ISA and/or PCI bus + there is a possibility to install an extension card with a hardware + watchdog. + </p> + <p>See also the <c>heart(3)</c> reference manual page in + <em>Kernel</em>. + </p> + </section> + </section> + + <section> + <title>Starting Erlang</title> + <p>On an embedded system, the <c>erlsrv</c> module should be used, + to install the erlang process as a Windows system service. + This service can start + after NT has booted. See documentation for <c>erlsrv</c>.</p> + </section> +</chapter> + diff --git a/system/doc/embedded/embedded_solaris.xml b/system/doc/embedded/embedded_solaris.xml new file mode 100644 index 0000000000..93532da8e6 --- /dev/null +++ b/system/doc/embedded/embedded_solaris.xml @@ -0,0 +1,734 @@ +<?xml version="1.0" encoding="latin1" ?> +<!DOCTYPE chapter SYSTEM "chapter.dtd"> + +<chapter> + <header> + <copyright> + <year>1997</year><year>2009</year> + <holder>Ericsson AB. All Rights Reserved.</holder> + </copyright> + <legalnotice> + The contents of this file are subject to the Erlang Public License, + Version 1.1, (the "License"); you may not use this file except in + compliance with the License. You should have received a copy of the + Erlang Public License along with this software. If not, it can be + retrieved online at http://www.erlang.org/. + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and limitations + under the License. + + </legalnotice> + + <title>Embedded Solaris</title> + <prepared>Fredrik Tillman</prepared> + <responsible></responsible> + <docno>ETX/B/SFP/TILLMAN:96-001</docno> + <approved></approved> + <checked></checked> + <date>2000-10-17</date> + <rev>B</rev> + <file>embedded_solaris.xml</file> + </header> + <p>This chapter describes the OS specific parts of OTP which relate + to Solaris. + </p> + + <section> + <title>Memory Usage</title> + <p>Solaris takes about 17 Mbyte of RAM on a system with 64 Mbyte of + total RAM. This leaves about 47 Mbyte for the applications. If + the system utilizes swapping, these figures cannot be improved + because unnecessary daemon processes are swapped out. However, + if swapping is disabled, or if the swap space is of limited + resource in the system, it becomes necessary to kill off + unnecessary daemon processes. + </p> + </section> + + <section> + <title>Disk Space Usage</title> + <p>The disk space required by Solaris can be minimized by using the + Core User support installation. It requires about 80 Mbyte of + disk space. This installs only the minimum software required to + boot and run Solaris. The disk space can be further reduced by + deleting unnecessary individual files. However, unless disk + space is a critical resource the effort required and the risks + involved may not be justified.</p> + </section> + + <section> + <title>Installation</title> + <p>This section is about installing an embedded system. + The following topics are considered, + </p> + <list type="bulleted"> + <item> + <p>Creation of user and installation directory,</p> + </item> + <item> + <p>Installation of embedded system,</p> + </item> + <item> + <p>Configuration for automatic start at reboot,</p> + </item> + <item> + <p>Making a hardware watchdog available,</p> + </item> + <item> + <p>Changing permission for reboot,</p> + </item> + <item> + <p>Patches,</p> + </item> + <item> + <p>Configuration of the OS_Mon application.</p> + </item> + </list> + <p>Several of the procedures described below require expert + knowledge of the Solaris 2 operating system. For most of them + super user privilege is needed. + </p> + + <section> + <title>Creation of User and Installation Directory</title> + <p>It is recommended that the Embedded Environment is run by an + ordinary user, i.e. a user who does not have super user + privileges. + </p> + <p>Throughout this section we assume that the user name is + <c>otpuser</c>, and that the home directory of that user is, + </p> + <pre> + /export/home/otpuser</pre> + <p>Furthermore, we assume that in the home directory of + <c>otpuser</c>, there is a directory named <c>otp</c>, the + full path of which is, + </p> + <pre> + /export/home/otpuser/otp</pre> + <p>This directory is the <em>installation directory</em> of the + Embedded Environment. + </p> + </section> + + <section> + <title>Installation of an Embedded System</title> + <p>The procedure for installation of an embedded system does + not differ from that of an ordinary system (see the + <em>Installation Guide</em>), + except for the following: + </p> + <list type="bulleted"> + <item> + <p>the (compressed) tape archive file should be + extracted in the installation directory as defined above, + and,</p> + </item> + <item> + <p>there is no need to link the start script to a + standard directory like <c>/usr/local/bin</c>.</p> + </item> + </list> + </section> + + <section> + <title>Configuration for Automatic Start at Boot</title> + <p>A true embedded system has to start when the system + boots. This section accounts for the necessary configurations + needed to achieve that. + </p> + <p>The embedded system and all the applications will start + automatically if the script file shown below is added to the + <c>/etc/rc3.d</c> directory. The file must be owned and + readable by <c>root</c>, and its name cannot be arbitrarily + assigned. The following name is recommended, + </p> + <pre> + S75otp.system</pre> + <p>For further details on initialization (and termination) + scripts, and naming thereof, see the Solaris documentation. + </p> + <pre> +#!/bin/sh +# +# File name: S75otp.system +# Purpose: Automatically starts Erlang and applications when the +# system starts +# Author: [email protected] +# Resides in: /etc/rc3.d +# + +if [ ! -d /usr/bin ] +then # /usr not mounted + exit +fi + +killproc() { # kill the named process(es) + pid=`/usr/bin/ps -e | + /usr/bin/grep -w $1 | + /usr/bin/sed -e 's/^ *//' -e 's/ .*//'` + [ "$pid" != "" ] && kill $pid +} + +# Start/stop processes required for Erlang + +case "$1" in +'start') + # Start the Erlang emulator + # + su - otpuser -c "/export/home/otpuser/otp/bin/start" & + ;; +'stop') + killproc beam + ;; +*) + echo "Usage: $0 { start | stop }" + ;; +esac</pre> + <p>The file <c>/export/home/otpuser/otp/bin/start</c> referred to + in the above script, is precisely the script <c>start</c> + described in the section <em>Starting Erlang</em> below. The + script variable <c>OTP_ROOT</c> in that <c>start</c> script + corresponds to the example path + </p> + <pre> + /export/home/otpuser/otp</pre> + <p>used in this section. The <c>start</c> script should be edited + accordingly. + </p> + <p>Use of the <c>killproc</c> procedure in the above script could + be combined with a call to <c>erl_call</c>, e.g. + </p> + <pre> + $SOME_PATH/erl_call -n Node init stop</pre> + <p>In order to take Erlang down gracefully see the + <c>erl_call(1)</c> reference manual page for further details + on the use of <c>erl_call</c>. That however requires that + Erlang runs as a distributed node which is not always the + case. + </p> + <p>The <c>killproc</c> procedure should not be removed: the + purpose is here to move from run level 3 (multi-user mode with + networking resources) to run level 2 (multi-user mode without + such resources), in which Erlang should not run. + </p> + </section> + + <section> + <title>Hardware Watchdog</title> + <p>For Solaris running on VME boards from Force Computers, + there is a possibility to activate the onboard hardware + watchdog, provided a VME bus driver is added to the operating + system (see also <em>Installation Problems</em> below). + </p> + <p>See also the <c>heart(3)</c> reference manual page in + <em>Kernel</em>. + </p> + </section> + + <section> + <title>Changing Permissions for Reboot</title> + <p>If the <c>HEART_COMMAND</c> environment variable is to be set + in the <c>start</c> script in the section, <em>Starting Erlang</em>, and if the value shall be set to the + path of the Solaris <c>reboot</c> command, i.e. + </p> + <pre> + HEART_COMMAND=/usr/sbin/reboot</pre> + <p>the ownership and file permissions for <c>/usr/sbin/reboot</c> + must be changed as follows, + </p> + <pre> + chown 0 /usr/sbin/reboot + chmod 4755 /usr/sbin/reboot</pre> + <p>See also the <c>heart(3)</c> reference manual page in + <em>Kernel</em>. + </p> + </section> + + <section> + <title>The TERM Environment Variable</title> + <p>When the Erlang runtime system is automatically started from the + <c>S75otp.system</c> script the <c>TERM</c> environment + variable has to be set. The following is a minimal setting, + </p> + <pre> + TERM=sun</pre> + <p>which should be added to the <c>start</c> script described in + the section. + </p> + </section> + + <section> + <title>Patches</title> + <p>For proper functioning of flushing file system data to disk on + Solaris 2.5.1, the version specific patch with number + 103640-02 must be added to the operating system. There may be + other patches needed, see the release README file + <c><![CDATA[<ERL_INSTALL_DIR>/README]]></c>. + </p> + </section> + + <section> + <title>Installation of Module os_sup in Application OS_Mon</title> + <p>The following four installation procedures require super user + privilege. + </p> + + <section> + <title>Installation</title> + <list type="ordered"> + <item> + <p><em>Make a copy the Solaris standard configuration file for syslogd.</em></p> + <list type="bulleted"> + <item> + <p>Make a copy the Solaris standard configuration + file for syslogd. This file is usually named + <c>syslog.conf</c> and found in the <c>/etc</c> + directory.</p> + </item> + <item> + <p>The file name of the copy must be + <c>syslog.conf.ORIG</c> but the directory location + is optional. Usually it is <c>/etc</c>. + </p> + <p>A simple way to do this is to issue the command</p> + <code type="none"> +cp /etc/syslog.conf /etc/syslog.conf.ORIG</code> + </item> + </list> + </item> + <item> + <p><em>Make an Erlang specific configuration file for syslogd.</em></p> + <list type="bulleted"> + <item> + <p>Make an edited copy of the back-up copy previously + made.</p> + </item> + <item> + <p>The file name must be <c>syslog.conf.OTP</c> and the + path must be the same as the back-up copy.</p> + </item> + <item> + <p>The format of the configuration file is found in the + man page for <c>syslog.conf(5)</c>, by issuing the + command <c>man syslog.conf</c>.</p> + </item> + <item> + <p>Usually a line is added which should state:</p> + <list type="bulleted"> + <item> + <p>which types of information that will be + supervised by Erlang,</p> + </item> + <item> + <p>the name of the file (actually a named pipe) + that should receive the information.</p> + </item> + </list> + </item> + <item> + <p>If e.g. only information originating from the + unix-kernel should be supervised, the line should + begin with <c>kern.LEVEL</c> (for the possible + values of <c>LEVEL</c> see <c>syslog.conf(5)</c>).</p> + </item> + <item> + <p>After at least one tab-character, the line added + should contain the full name of the named pipe where + syslogd writes its information. The path must be the + same as for the <c>syslog.conf.ORIG</c> and + <c>syslog.conf.OTP</c> files. The file name must be + <c>syslog.otp</c>.</p> + </item> + <item> + <p>If the directory for the <c>syslog.conf.ORIG</c> and + <c>syslog.conf.OTP</c> files is <c>/etc</c> the line + in <c>syslog.conf.OTP</c> will look like:</p> + <code type="none"> +kern.LEVEL /etc/syslog.otp</code> + </item> + </list> + </item> + <item> + <p><em>Check the file privileges of the configuration files.</em></p> + <list type="bulleted"> + <item> + <p>The configuration files should have <c>rw-r--r--</c> + file privileges and be owned by root.</p> + </item> + <item> + <p>A simple way to do this is to issue the commands</p> + <code type="none"> +chmod 644 /etc/syslog.conf +chmod 644 /etc/syslog.conf.ORIG +chmod 644 /etc/syslog.conf.OTP</code> + </item> + <item> + <p><em>Note:</em> If the <c>syslog.conf.ORIG</c> and + <c>syslog.conf.OTP</c> files are not in the + <c>/etc</c> directory, the file path in the second + and third command must be modified.</p> + </item> + </list> + </item> + <item> + <p><em>Modify file privileges and ownership of the mod_syslog utility.</em></p> + <list type="bulleted"> + <item> + <p>The file privileges and ownership of the + <c>mod_syslog</c> utility must be modified.</p> + </item> + <item> + <p>The full name of the binary executable file is + derived from the position of the <c>os_mon</c> + application if the file system by adding + <c>/priv/bin/mod_syslog</c>. The generic full name + of the binary executable file is thus</p> + <code type="none"><![CDATA[ +<OTP_ROOT>/lib/os_mon-<REV>/priv/bin/mod_syslog]]></code> + <p><em>Example:</em> If the path to the otp-root is + <c>/usr/otp</c>, thus the path to the <c>os_mon</c> + application is <c>/usr/otp/lib/os_mon-1.0</c> + (assuming revision 1.0) and the full name of the + binary executable file is + <c>/usr/otp/lib/os_mon-1.0/priv/bin/mod_syslog</c>.</p> + </item> + <item> + <p>The binary executable file must be owned by root, + have <c>rwsr-xr-x</c> file privileges, in particular + the setuid bit of user must be set. + </p> + </item> + <item> + <p>A simple way to do this is to issue the commands</p> + <code type="none"><![CDATA[ +cd <OTP_ROOT>/lib/os_mon-<REV>/priv/bin/mod_syslog +chmod 4755 mod_syslog +chown root mod_syslog]]></code> + </item> + </list> + </item> + </list> + </section> + + <section> + <title>Testing the Application Configuration File</title> + <p>The following procedure does not require root privilege. + </p> + <list type="bulleted"> + <item> + <p>Ensure that the configuration parameters for the + <c>os_sup</c> module in the <c>os_mon</c> application + are correct.</p> + </item> + <item> + <p>Browse the application configuration file (do + <em>not</em> edit it). The full name of the application + configuration file is derived from the position of the + OS_Mon application if the file system by adding + <c>/ebin/os_mon.app</c>. + </p> + <p>The generic full name of the file is thus</p> + <code type="none"><![CDATA[ +<OTP_ROOT>/lib/os_mon-<REV>/ebin/os_mon.app.]]></code> + <p><em>Example:</em> If the path to the otp-root is + <c>/usr/otp</c>, thus the path to the <c>os_mon</c> + application is <c>/usr/otp/lib/os_mon-1.0 </c> (assuming + revision 1.0) and the full name of the binary executable + file is <c>/usr/otp/lib/os_mon-1.0/ebin/os_mon.app</c>.</p> + </item> + <item> + <p>Ensure that the following configuration parameters are + bound to the correct values.</p> + </item> + </list> + <table> + <row> + <cell align="left" valign="top"><em>Parameter</em></cell> + <cell align="left" valign="top"><em>Function</em></cell> + <cell align="left" valign="top"><em>Standard value</em></cell> + </row> + <row> + <cell align="left" valign="middle">start_os_sup</cell> + <cell align="left" valign="middle">Specifies if os_sup will be started or not.</cell> + <cell align="left" valign="middle"><c>true</c>for the first instance on the hardware; <c>false</c>for the other instances.</cell> + </row> + <row> + <cell align="left" valign="middle">os_sup_own</cell> + <cell align="left" valign="middle">The directory for (1)the back-up copy, (2) the Erlang specific configuration file for syslogd.</cell> + <cell align="left" valign="middle"><c>"/etc"</c></cell> + </row> + <row> + <cell align="left" valign="middle">os_sup_syslogconf</cell> + <cell align="left" valign="middle">The full name for the Solaris standard configuration file for syslogd </cell> + <cell align="left" valign="middle"><c>"/etc/syslog.conf"</c></cell> + </row> + <row> + <cell align="left" valign="middle">error_tag</cell> + <cell align="left" valign="middle">The tag for the messages that are sent to the error logger in the Erlang runtime system.</cell> + <cell align="left" valign="middle"><c>std_error</c></cell> + </row> + <tcaption>Configuration Parameters</tcaption> + </table> + <p>If the values listed in the <c>os_mon.app</c> do not suit + your needs, you should <c>not</c> edit that file. Instead + you should <em>override</em> values in a <em>system configuration file</em>, the full pathname of which is given + on the command line to <c>erl</c>. + </p> + <p><em>Example:</em> The following is an example of the + contents of an application configuration file.</p> + <p></p> + <pre> + [{os_mon, [{start_os_sup, true}, {os_sup_own, "/etc"}, + {os_sup_syslogconf, "/etc/syslog.conf"}, {os_sup_errortag, std_error}]}].</pre> + </section> + + <section> + <title>Related Documents</title> + <p>See also the <c>os_mon(3)</c>, <c>application(3)</c> and + <c>erl(1)</c> reference manual pages.</p> + </section> + </section> + + <section> + <title>Installation Problems</title> + <p>The hardware watchdog timer which is controlled by the + <c>heart</c> port program requires the <c>FORCEvme</c> + package, which contains the VME bus driver, to be + installed. This driver, however, may clash with the Sun + <c>mcp</c> driver and cause the system to completely refuse to + boot. To cure this problem, the following lines should be + added to <c>/etc/system</c>: + </p> + <list type="bulleted"> + <item><c>exclude: drv/mcp</c></item> + <item><c>exclude: drv/mcpzsa</c></item> + <item><c>exclude: drv/mcpp</c></item> + </list> + <warning> + <p>It is recommended that these lines be added to avoid the + clash described, which may make it completely impossible to + boot the system.</p> + </warning> + </section> + </section> + + <section> + <title>Starting Erlang</title> + <p>This section describes how an embedded system is started. There + are four programs involved, and they all normally reside in the + directory <c><![CDATA[<ERL_INSTALL_DIR>/bin]]></c>. The only exception is + the program <c>start</c>, which may be located anywhere, and + also is the only program that must be modified by the user. + </p> + <p>In an embedded system there usually is no interactive shell. + However, it is possible for an operator to attach to the Erlang + system by giving the command <c>to_erl</c>. He is then + connected to the Erlang shell, and may give ordinary Erlang + commands. All interaction with the system through this shell is + logged in a special directory. + </p> + <p>Basically, the procedure is as follows. The program + <c>start</c> is called when the machine is started. It calls + <c>run_erl</c>, which sets things up so the operator can attach + to the system. It calls <c>start_erl</c> which calls the + correct version of <c>erlexec</c> (which is located in + <c><![CDATA[<ERL_INSTALL_DIR>/erts-EVsn/bin]]></c>) with the correct + <c>boot</c> and <c>config</c> files. + </p> + </section> + + <section> + <title>Programs</title> + + <section> + <title>start</title> + <p>This program is called when the machine is started. It may + be modified or re-written to suit a special system. By + default, it must be called <c>start</c> and reside in + <c><![CDATA[<ERL_INSTALL_DIR>/bin]]></c>. Another start program can be + used, by using the configuration parameter <c>start_prg</c> in + the application <c>sasl</c>.</p> + <p>The start program must call <c>run_erl</c> as shown below. + It must also take an optional parameter which defaults to + <c><![CDATA[<ERL_INSTALL_DIR>/releases/start_erl.data]]></c>. + </p> + <p>This program should set static parameters and environment + variables such as <c>-sname Name</c> and <c>HEART_COMMAND</c> + to reboot the machine. + </p> + <p>The <c><![CDATA[<RELDIR>]]></c> directory is where new release packets + are installed, and where the release handler keeps information + about releases. See <c>release_handler(3)</c> in the + application <c>sasl</c> for further information. + </p> + <p>The following script illustrates the default behaviour of the + program. + </p> + <code type="none"><![CDATA[ +#!/bin/sh +# Usage: start [DataFile] +# +ROOTDIR=/usr/local/otp + +if [ -z "$RELDIR" ] +then + RELDIR=$ROOTDIR/releases +fi + +START_ERL_DATA=${1:-$RELDIR/start_erl.data} + +$ROOTDIR/bin/run_erl /tmp/ $ROOTDIR/log "exec $ROOTDIR/bin/start_erl \\ + $ROOTDIR $RELDIR $START_ERL_DATA" > /dev/null 2>&1 &]]></code> + <p>The following script illustrates a modification where the node + is given the name <c>cp1</c>, and the environment variables + <c>HEART_COMMAND</c> and <c>TERM</c> have been added to the + above script. + </p> + <code type="none"><![CDATA[ +#!/bin/sh +# Usage: start [DataFile] +# +HEART_COMMAND=/usr/sbin/reboot +TERM=sun +export HEART_COMMAND TERM + +ROOTDIR=/usr/local/otp + +if [ -z "$RELDIR" ] +then + RELDIR=$ROOTDIR/releases +fi + +START_ERL_DATA=${1:-$RELDIR/start_erl.data} + +$ROOTDIR/bin/run_erl /tmp/ $ROOTDIR/log "exec $ROOTDIR/bin/start_erl \\ + $ROOTDIR $RELDIR $START_ERL_DATA -heart -sname cp1" > /dev/null 2>&1 &]]></code> + <p>If a diskless and/or read-only client node is about to start the + <c>start_erl.data</c> file is located in the client directory at + the master node. Thus, the <c>START_ERL_DATA</c> line should look + like: + </p> + <code type="none"> +CLIENTDIR=$ROOTDIR/clients/clientname +START_ERL_DATA=${1:-$CLIENTDIR/bin/start_erl.data}</code> + </section> + + <section> + <title>run_erl</title> + <p>This program is used to start the emulator, but you will not + be connected to the shell. <c>to_erl</c> is used to connect to + the Erlang shell. + </p> + <code type="none"> +Usage: run_erl pipe_dir/ log_dir "exec command [parameters ...]"</code> + <p>Where <c>pipe_dir/</c> should be <c>/tmp/</c> (<c>to_erl</c> + uses this name by default) and <c>log_dir</c> is where the log + files are written. <c>command [parameters]</c> is executed, + and everything written to stdin and stdout is logged in the + <c>log_dir</c>. + </p> + <p>In the <c>log_dir</c>, log files are written. Each logfile + has a name of the form: <c>erlang.log.N</c> where N is a + generation number, ranging from 1 to 5. Each logfile holds up + to 100kB text. As time goes by the following logfiles will be + found in the logfile directory</p> + <code type="none"> +erlang.log.1 +erlang.log.1, erlang.log.2 +erlang.log.1, erlang.log.2, erlang.log.3 +erlang.log.1, erlang.log.2, erlang.log.3, erlang.log.4 +erlang.log.2, erlang.log.3, erlang.log.4, erlang.log.5 +erlang.log.3, erlang.log.4, erlang.log.5, erlang.log.1 +...</code> + <p>with the most recent logfile being the right most in each row + of the above list. That is, the most recent file is the one + with the highest number, or if there are already four files, + the one before the skip. + </p> + <p>When a logfile is opened (for appending or created) a time + stamp is written to the file. If nothing has been written to + the log files for 15 minutes, a record is inserted that says + that we're still alive. + </p> + </section> + + <section> + <title>to_erl</title> + <p>This program is used to attach to a running Erlang runtime + system, started with <c>run_erl</c>. + </p> + <code type="none"> +Usage: to_erl [pipe_name | pipe_dir]</code> + <p>Where <c>pipe_name</c> defaults to <c>/tmp/erlang.pipe.N</c>. + </p> + <p>To disconnect from the shell without exiting the Erlang + system, type <c>Ctrl-D</c>. + </p> + </section> + + <section> + <title>start_erl</title> + <p>This program starts the Erlang emulator with parameters + <c>-boot</c> and <c>-config</c> set. It reads data about + where these files are located from a file called + <c>start_erl.data</c> which is located in the <c><![CDATA[<RELDIR>]]></c>. + Each new release introduces a new data file. This file is + automatically generated by the release handler in Erlang. + </p> + <p>The following script illustrates the behaviour of the + program. + </p> + <code type="none"> +#!/bin/sh +# +# This program is called by run_erl. It starts +# the Erlang emulator and sets -boot and -config parameters. +# It should only be used at an embedded target system. +# +# Usage: start_erl RootDir RelDir DataFile [ErlFlags ...] +# +ROOTDIR=$1 +shift +RELDIR=$1 +shift +DataFile=$1 +shift + +ERTS_VSN=`awk '{print $1}' $DataFile` +VSN=`awk '{print $2}' $DataFile` + +BINDIR=$ROOTDIR/erts-$ERTS_VSN/bin +EMU=beam +PROGNAME=`echo $0 | sed 's/.*\\///'` +export EMU +export ROOTDIR +export BINDIR +export PROGNAME +export RELDIR + +exec $BINDIR/erlexec -boot $RELDIR/$VSN/start -config $RELDIR/$VSN/sys $*</code> + <p>If a diskless and/or read-only client node with the + <c>sasl</c> configuration parameter <c>static_emulator</c> set + to <c>true</c> is about to start the <c>-boot</c> and + <c>-config</c> flags must be changed. As such a client cannot + read a new <c>start_erl.data</c> file (the file is not + possible to change dynamically) the boot and config files are + always fetched from the same place (but with new contents if + a new release has been installed). The <c>release_handler</c> + copies this files to the <c>bin</c> directory in the client + directory at the master nodes whenever a new release is made + permanent. + </p> + <p>Assuming the same <c>CLIENTDIR</c> as above the last line + should look like: + </p> + <code type="none"> +exec $BINDIR/erlexec -boot $CLIENTDIR/bin/start \\ + -config $CLIENTDIR/bin/sys $*</code> + </section> + </section> +</chapter> + diff --git a/system/doc/embedded/intro.xml b/system/doc/embedded/intro.xml new file mode 100644 index 0000000000..3eafffd6fa --- /dev/null +++ b/system/doc/embedded/intro.xml @@ -0,0 +1,95 @@ +<?xml version="1.0" encoding="latin1" ?> +<!DOCTYPE chapter SYSTEM "chapter.dtd"> + +<chapter> + <header> + <copyright> + <year>1997</year> + <year>2007</year> + <holder>Ericsson AB, All Rights Reserved</holder> + </copyright> + <legalnotice> + The contents of this file are subject to the Erlang Public License, + Version 1.1, (the "License"); you may not use this file except in + compliance with the License. You should have received a copy of the + Erlang Public License along with this software. If not, it can be + retrieved online at http://www.erlang.org/. + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and limitations + under the License. + + The Initial Developer of the Original Code is Ericsson AB. + </legalnotice> + + <title>Erlang on embedded systems</title> + <prepared>Fredrik Tillman</prepared> + <responsible></responsible> + <docno>ETX/B/SFP/TILLMAN:96-001</docno> + <approved></approved> + <checked></checked> + <date>1997-11-12</date> + <rev>PA1</rev> + <file>intro.sgml</file> + </header> + <p>This manual is a complement to the other manuals and describes how + to install, run and maintain Erlang on an embedded system. + </p> + <p>For more informaton about how to install and start Erlang read + XXXXXXXX. + </p> + + <section> + <title>Memory Usage</title> + <p>Solaris takes about 17 Mbyte of RAM on a system with 64 Mbyte of + total RAM. This leaves about 47 Mbyte for the applications. If + the system utilizes swapping, these figures cannot be improved + because unnecessary daemon processes are swapped out. However, + if swapping is disabled, or if the swap space is a precious + resource in the system, it becomes necessary to kill off + unnecessary daemon processes. + </p> + <p>The following start-scripts can be deleted to + prevent unnecessary daemons from starting: + </p> + <list type="bulleted"> + <item><c>/etc/rc2.d/S72autoinstall</c></item> + <item><c>/etc/rc2.d/S74autofs</c></item> + <item><c>/etc/rc2.d/S76nscd</c></item> + <item><c>/etc/rc2.d/S80PRESERVE</c></item> + <item><c>/etc/rc2.d/S80lp</c></item> + <item><c>/etc/rc2.d/S88sendmail</c></item> + <item><c>/etc/rc2.d/S92volmgt</c></item> + <item><c>/etc/rc2.d/S93cacheos.finish</c></item> + <item><c>/etc/rc3.d/S15nfs.server</c></item> + </list> + <p>More information is expected from Sun on how to modify the + kernel in order to reduce the memory consumption. This will be + performed by modifying the <c>/etc/system</c> file.</p> + </section> + + <section> + <title>Disk Space Usage</title> + <p>The disk space required by Solaris can be minimized by using the + Core User support installation. It requires about 80 Mbyte of + disk space. This installs only the minimum software required to + boot and run Solaris. The disk space can be further reduced by + deleting unnecessary individual files. However, unless disk + space is a critical resource the effort required and the risks + involved may not be justified.</p> + </section> + + <section> + <title>Other Issues</title> + <p>Future releases of OTP will include more information on how + Solaris can be configured for use with embedded systems to get + maximum performance. Issues which will be investigated include: + </p> + <list type="bulleted"> + <item>how disabling swapping affects the system</item> + <item>how locking processes in memory may yield performance benefits.</item> + </list> + </section> +</chapter> + diff --git a/system/doc/embedded/make.dep b/system/doc/embedded/make.dep new file mode 100644 index 0000000000..9949a3ac96 --- /dev/null +++ b/system/doc/embedded/make.dep @@ -0,0 +1,14 @@ +# ---------------------------------------------------- +# >>>> Do not edit this file <<<< +# This file was automaticly generated by +# /home/otp/bin/docdepend +# ---------------------------------------------------- + + +# ---------------------------------------------------- +# TeX files that the DVI file depend on +# ---------------------------------------------------- + +book.dvi: book.tex embedded_nt.tex embedded_solaris.tex \ + part.tex vxworks.tex + diff --git a/system/doc/embedded/note.gif b/system/doc/embedded/note.gif Binary files differnew file mode 100644 index 0000000000..6fffe30419 --- /dev/null +++ b/system/doc/embedded/note.gif diff --git a/system/doc/embedded/part.xml b/system/doc/embedded/part.xml new file mode 100644 index 0000000000..abedce46d6 --- /dev/null +++ b/system/doc/embedded/part.xml @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="latin1" ?> +<!DOCTYPE part SYSTEM "part.dtd"> + +<part xmlns:xi="http://www.w3.org/2001/XInclude"> + <header> + <copyright> + <year>1997</year><year>2009</year> + <holder>Ericsson AB. All Rights Reserved.</holder> + </copyright> + <legalnotice> + The contents of this file are subject to the Erlang Public License, + Version 1.1, (the "License"); you may not use this file except in + compliance with the License. You should have received a copy of the + Erlang Public License along with this software. If not, it can be + retrieved online at http://www.erlang.org/. + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and limitations + under the License. + + </legalnotice> + + <title>Embedded Systems User's Guide</title> + <prepared>Kenneth Lundin, Fredrik Tillman</prepared> + <responsible>UAB/F (Kenneth Lundin)</responsible> + <docno></docno> + <approved>UAB/F (Kenneth Lundin)</approved> + <checked></checked> + <date>2000-10-17</date> + <rev>C</rev> + <file></file> + </header> + <description> + <p>This manual describes the issues that are specific + for running Erlang on an embedded system. + It describes the differences in installing and starting + Erlang compared to how it is done for a non-embedded system. + </p> + <p>Note that this is a supplementary document. You still need to + read the Installation Guide. + </p> + <p>There is also target architecture specific information in + the top level README file of the Erlang distribution.</p> + </description> + <xi:include href="embedded_solaris.xml"/> + <xi:include href="embedded_nt.xml"/> + <xi:include href="vxworks.xml"/> +</part> + diff --git a/system/doc/embedded/starting.xml b/system/doc/embedded/starting.xml new file mode 100644 index 0000000000..ddeaeb8bdf --- /dev/null +++ b/system/doc/embedded/starting.xml @@ -0,0 +1,249 @@ +<?xml version="1.0" encoding="latin1" ?> +<!DOCTYPE chapter SYSTEM "chapter.dtd"> + +<chapter> + <header> + <copyright> + <year>1996</year><year>2009</year> + <holder>Ericsson AB. All Rights Reserved.</holder> + </copyright> + <legalnotice> + The contents of this file are subject to the Erlang Public License, + Version 1.1, (the "License"); you may not use this file except in + compliance with the License. You should have received a copy of the + Erlang Public License along with this software. If not, it can be + retrieved online at http://www.erlang.org/. + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and limitations + under the License. + + </legalnotice> + + <title>Starting an Embedded System</title> + <prepared>Martin Björklund</prepared> + <responsible>Bjarne Däcker</responsible> + <docno></docno> + <approved>Bjarne Däcker</approved> + <checked></checked> + <date>1997-10-17</date> + <rev>D</rev> + <file>starting.sgml</file> + </header> + + <section> + <title>Introduction</title> + <p>This chapter describes how an embedded system is started. + There are four programs involved, and they all normally reside + in the directory <c><![CDATA[<ERL_INSTALL_DIR>/bin]]></c>. The only + exception is the program <c>start</c>, which may be located + anywhere, and also is the only program that must be modified by + the user. + </p> + <p>In an embedded system there usually is no interactive shell. + However, it is possible for an operator to attach to the + Erlang runtime system by giving the command <c>to_erl</c>. He is + then connected to the Erlang shell, and may give ordinary Erlang + commands. All interaction with the system through this shell is + logged in a special directory. + </p> + <p>Basically, the procedure is as follows. The program + <c>start</c> is called when the machine is started. It calls + <c>run_erl</c>, which sets things up so the operator can attach + to the system. It calls <c>start_erl</c> which calls the + correct version of <c>erlexec</c> (which is located in + <c><![CDATA[<ERL_INSTALL_DIR>/erts-EVsn/bin]]></c>) with the correct + <c>boot</c> and <c>config</c> files. + </p> + </section> + + <section> + <title>Programs</title> + + <section> + <title>start</title> + <p>This program is called when the machine is started. It may + be modified or re-written to suit a special system. By + default, it must be called <c>start</c> and reside in + <c><![CDATA[<ERL_INSTALL_DIR>/bin]]></c>. Another start program can be + used, by using the configuration parameter <c>start_prg</c> in + the application <c>sasl</c>.</p> + <p>The start program must call <c>run_erl</c> as shown below. + It must also take an optional parameter which defaults to + <c><![CDATA[<ERL_INSTALL_DIR>/bin/start_erl.data]]></c>. + </p> + <p>This program should set static parameters and environment + variables such as <c>-sname Name</c> and <c>HEART_COMMAND</c> + to reboot the machine. + </p> + <p>The <c><![CDATA[<RELDIR>]]></c> directory is where new release packets + are installed, and where the release handler keeps information + about releases. See <c>release_handler(3)</c> in the + application <c>sasl</c> for further information. + </p> + <p>The following script illustrates the default behaviour of the + program. + </p> + <code type="none"><![CDATA[ +#!/bin/sh +# Usage: start [DataFile] +# +ROOTDIR=/usr/local/otp + +if [ -z "$RELDIR" ] +then + RELDIR=$ROOTDIR/releases +fi + +START_ERL_DATA=${1:-$RELDIR/start_erl.data} + +$ROOTDIR/bin/run_erl /tmp/ $ROOTDIR/log "exec $ROOTDIR/bin/start_erl @@@ + $ROOTDIR $RELDIR $START_ERL_DATA" > /dev/null 2>&1 &]]></code> + <p>The following script illustrates a modification where the + node is given the name <c>cp1</c>, and the environment variables + <c>HEART_COMMAND</c> and <c>TERM</c> have been added to the + above script. + </p> + <code type="none"><![CDATA[ +#!/bin/sh +# Usage: start [DataFile] +# +HEART_COMMAND=/usr/sbin/reboot +TERM=sun +export HEART_COMMAND TERM + +ROOTDIR=/usr/local/otp + +if [ -z "$RELDIR" ] +then + RELDIR=$ROOTDIR/releases +fi + +START_ERL_DATA=${1:-$RELDIR/start_erl.data} + +$ROOTDIR/bin/run_erl /tmp/ $ROOTDIR/log "exec $ROOTDIR/bin/start_erl @@@ + $ROOTDIR $RELDIR $START_ERL_DATA -heart -sname cp1" > /dev/null 2>&1 &]]></code> + <p>If a diskless and/or read-only client node is about to start the + <c>start_erl.data</c> file is located in the client directory at + the master node. Thus, the <c>START_ERL_DATA</c> line should look + like: + </p> + <code type="none"> +CLIENTDIR=$ROOTDIR/clients/clientname +START_ERL_DATA=${1:-$CLIENTDIR/bin/start_erl.data}</code> + </section> + + <section> + <title>run_erl</title> + <p>This program is used to start the emulator, but you will not + be connected to the shell. <c>to_erl</c> is used to connect to the + Erlang shell. + </p> + <code type="none"> +Usage: run_erl pipe_dir/ log_dir "exec command [parameters ...]"</code> + <p>Where <c>pipe_dir/</c> should be <c>/tmp/</c> + (<c>to_erl</c> uses this name by default) and <c>log_dir</c> is + where the log files are written. <c>command [parameters]</c> is + executed, and everything written to stdin and stdout is logged in + the <c>log_dir</c>. + </p> + <p>In the <c>log_dir</c>, log files are written. Each logfile + has a name of the form: <c>erlang.log.N</c> where N is a + generation number, ranging from 1 to 5. Each logfile holds up to + 100kB text. As time goes by the following logfiles will be found + in the logfile directory</p> + <code type="none"> +erlang.log.1 +erlang.log.1, erlang.log.2 +erlang.log.1, erlang.log.2, erlang.log.3 +erlang.log.1, erlang.log.2, erlang.log.3, erlang.log.4 +erlang.log.2, erlang.log.3, erlang.log.4, erlang.log.5 +erlang.log.3, erlang.log.4, erlang.log.5, erlang.log.1 +... </code> + <p>with the most recent logfile being the right most in each row + of the above list. That is, the most recent file is the one with + the highest number, or if there are already four files, the one + before the skip. + </p> + <p>When a logfile is opened (for appending or created) a time + stamp is written to the file. If nothing has been written to + the log files for 15 minutes, a record is inserted that says + that we're still alive. + </p> + </section> + + <section> + <title>to_erl</title> + <p>This program is used to attach to a running Erlang runtime system, + started with <c>run_erl</c>. + </p> + <code type="none"> +Usage: to_erl [pipe_name | pipe_dir]</code> + <p>Where <c>pipe_name</c> defaults to <c>/tmp/erlang.pipe.N</c>. + </p> + <p>To disconnect from the shell without exiting the Erlang + runtime system, type <c>Ctrl-D</c>. + </p> + </section> + + <section> + <title>start_erl</title> + <p>This program starts the Erlang emulator with parameters + <c>-boot</c> and <c>-config</c> set. It reads data about where + these files are located from a file called <c>start_erl.data</c> + which is located in the <c><![CDATA[<RELDIR>]]></c>. Each new release + introduces a new data file. This file is automatically + generated by the release handler in Erlang. + </p> + <p>The following script illustrates the behaviour of the + program.</p> + <code type="none"> +#!/bin/sh +# +# This program is called by run_erl. It starts +# the Erlang emulator and sets -boot and -config parameters. +# It should only be used at an embedded target system. +# +# Usage: start_erl RootDir RelDir DataFile [ErlFlags ...] +# +ROOTDIR=$1 +shift +RELDIR=$1 +shift +DataFile=$1 +shift + +ERTS_VSN=`awk '{print $1}' $DataFile` +VSN=`awk '{print $2}' $DataFile` + +BINDIR=$ROOTDIR/erts-$ERTS_VSN/bin +EMU=beam +PROGNAME=`echo $0 | sed 's/.*\\///'` +export EMU +export ROOTDIR +export BINDIR +export PROGNAME +export RELDIR + +exec $BINDIR/erlexec -boot $RELDIR/$VSN/start -config $RELDIR/$VSN/sys $* </code> + <p>If a diskless and/or read-only client node with the <c>sasl</c> + configuration parameter <c>static_emulator</c> set to <c>true</c> + is about to start the <c>-boot</c> and <c>-config</c> flags must be + changed. As such a client can not read a new <c>start_erl.data</c> + file (the file is not possible to change dynamically) the boot and + config files is always fetched from the same place (but with a new + contents if a new release has been installed). The + <c>release_handler</c> copies this files to the <c>bin</c> directory + in the client directory at the master nodes whenever a new release + is made permanent. + </p> + <p>Assuming the same <c>CLIENTDIR</c> as above the last line should + look like:</p> + <code type="none"> +exec $BINDIR/erlexec -boot $CLIENTDIR/bin/start @@@ + -config $CLIENTDIR/bin/sys $* </code> + </section> + </section> +</chapter> + diff --git a/system/doc/embedded/target.xml b/system/doc/embedded/target.xml new file mode 100644 index 0000000000..4408e6ee48 --- /dev/null +++ b/system/doc/embedded/target.xml @@ -0,0 +1,414 @@ +<?xml version="1.0" encoding="latin1" ?> +<!DOCTYPE chapter SYSTEM "chapter.dtd"> + +<chapter> + <header> + <copyright> + <year>1996</year><year>2009</year> + <holder>Ericsson AB. All Rights Reserved.</holder> + </copyright> + <legalnotice> + The contents of this file are subject to the Erlang Public License, + Version 1.1, (the "License"); you may not use this file except in + compliance with the License. You should have received a copy of the + Erlang Public License along with this software. If not, it can be + retrieved online at http://www.erlang.org/. + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and limitations + under the License. + + </legalnotice> + + <title>Installation of Embedded Environment</title> + <prepared>Peter Högfeldt</prepared> + <responsible>Peter Högfeldt</responsible> + <docno></docno> + <approved>(Peter Högfeldt</approved> + <checked></checked> + <date>1997-05-26</date> + <rev>C</rev> + <file>target.sgml</file> + </header> + <p>This chapter is about installing a Embedded Environment. Solaris + 2.5.1 is the only UNIX operating system supported for embedded systems. + The following topics are considered,</p> + <list type="bulleted"> + <item> + <p>Creation of user and installation directory,</p> + </item> + <item> + <p>Installation of Embedded Environment,</p> + </item> + <item> + <p>Configuration for automatic start at reboot,</p> + </item> + <item> + <p>Making a hardware watchdog available,</p> + </item> + <item> + <p>Changing permission for reboot,</p> + </item> + <item> + <p>Patches for Solaris 2.5.1,</p> + </item> + <item> + <p>Configuration of the os_mon application.</p> + </item> + </list> + <p>Several of the procedures described below require expert knowledge of + the Solaris 2 operating system. For most of them super user privilege is + needed.</p> + + <section> + <title>Creation of user and installation directory</title> + <p>It is recommended that the Embedded Environment is run by an ordinary + user, i.e. a user which does not have super user privileges. </p> + <p>Throughout this chapter we assume that the user name is <c>otpuser</c>, + and that the home directory of that user is,</p> + <pre> +/export/home/otpuser </pre> + <p>Furthermore, we assume that in the home directory of <c>otpuser</c>, + there is a directory named <c>otp</c>, the full path of which is,</p> + <pre> +/export/home/otpuser/otp </pre> + <p>This directory is the <em>installation directory</em> of the Embedded + Environment.</p> + </section> + + <section> + <title>Installation of Embedded Environment</title> + <p>The procedure for installation of a Embedded Environment does not differ + from that of a Development Environment (see the chapter <em>Installation of Development Environment</em>), except for the following,</p> + <list type="bulleted"> + <item> + <p>the (compressed) tape archive file should be extracted in + the installation directory as defined above, and,</p> + </item> + <item> + <p>there is no need to link the start script to a standard directory + like <c>/usr/local/bin</c>.</p> + </item> + </list> + <p>The details for extracting the tape archive file is not repeated here.</p> + </section> + + <section> + <title>Configuration for Automatic Start at Boot</title> + <p>A true Embedded Environment has to start when the system boots. This + section accounts for the necessary configurations needed to achieve + that.</p> + <p>The embedded environment and all the applications will start automatically + if the script file shown below is added to the <c>/etc/rc3.d</c> directory. + The file must be owned and readable by <c>root</c>, and its name cannot + be arbitrarily assigned. The following name is recommended,</p> + <pre> +S75otp.system </pre> + <p>For further details on initialization (and termination) scripts, and + naming thereof, see the file <c>/etc/init.d/README</c> on a Solaris + 2.5.1 system.</p> + <pre> +#!/bin/sh +# +# File name: S75otp.system +# Purpose: Automatically starts Erlang and applications when the +# system starts +# Author: [email protected] +# Resides in: /etc/rc3.d +# + +if [ ! -d /usr/bin ] +then # /usr not mounted + exit +fi + +killproc() { # kill the named process(es) + pid=`/usr/bin/ps -e | + /usr/bin/grep -w $1 | + /usr/bin/sed -e 's/^ *//' -e 's/ .*//'` + [ "$pid" != "" ] && kill $pid +} + +# Start/stop processes required for Erlang + +case "$1" in +'start') + # Start the Erlang emulator + # + su - otpuser -c "/export/home/otpuser/otp/bin/start" & + ;; +'stop') + killproc beam + ;; +*) + echo "Usage: $0 { start | stop }" + ;; +esac </pre> + <p>The file <c>/export/home/otpuser/otp/bin/start</c> referred to in the + above script, is precisely the script <c>start</c> described in the next + chapter of this guide, <em>Starting an Embedded System</em>. The script + variable <c>OTP_ROOT</c> in that <c>start</c> script corresponds to + the example path </p> + <pre> +/export/home/otpuser/otp </pre> + <p>used in this section. The <c>start</c> script should be edited + accordingly.</p> + <p>Use of the <c>killproc</c> procedure in the above script could + be combined with a call to <c>erl_call</c>, e.g.</p> + <pre> + $SOME_PATH/erl_call -n Node init stop </pre> + <p>in order to take Erlang down gracefully (see the <c>erl_call(1)</c> + reference manual page for further details on the use of <c>erl_call</c>). + That however requires that Erlang runs as a distributed node which is + not always the case.</p> + <p>The <c>killproc</c> procedure should not be removed: the purpose is + here to move from run level 3 (multi-user mode with networking resources) + to run level 2 (multi-user mode without such resources), in which Erlang + should not run.</p> + </section> + + <section> + <title>Hardware Watchdog</title> + <p>For Solaris 2.5.1 running on VME boards from Force Computers, there + is a possibility to activate the onboard hardware watchdog, provided a + VME bus driver is added to the operating system. For further details + see the <em>Embedded Systems</em> documentation.</p> + <p>See also the <c>heart(3)</c> reference manual page in <em>Kernel</em>.</p> + </section> + + <section> + <title>Changing permissions for reboot</title> + <p>If the <c>HEART_COMMAND</c> environment variable is to be set in + the <c>start</c> script of the next chapter, <em>Starting an Embedded System</em>, and if the value shall be set to the path of the Solaris + <c>reboot</c> command, i.e.</p> + <pre> +HEART_COMMAND=/usr/sbin/reboot </pre> + <p>the ownership and file permissions for <c>/usr/sbin/reboot</c> must + be changed as follows,</p> + <pre> +chown 0 /usr/sbin/reboot +chmod 4755 /usr/sbin/reboot </pre> + <p>See also the <c>heart(3)</c> reference manual page in <em>Kernel</em>.</p> + </section> + + <section> + <title>The TERM environment variable</title> + <p>When the Erlang runtime system is automatically started from the + <c>S75otp.system</c> script the <c>TERM</c> environment variable + has to be set. The following is a minimal setting,</p> + <pre> +TERM=sun </pre> + <p>which should be added to the <c>start</c> script described in the + next chapter.</p> + </section> + + <section> + <title>Patches for Solaris 2.5.1</title> + <p>For proper functioning of flushing file system data to disk, the + Solaris 2.5.1 specific patch with number 103640-02 must be added + to the operating system.</p> + </section> + + <section> + <title>Installation of module os_sup in application os_mon</title> + <p>The following four installation procedures requires superuser privilege.</p> + + <section> + <title>Installation</title> + <list type="ordered"> + <item> + <p><em>Make a copy the Solaris standard configuration file for syslogd.</em></p> + <list type="bulleted"> + <item> + <p>Make a copy the Solaris standard configuration file for syslogd. + This file is usually named <c>syslog.conf</c> and found in the <c>/etc</c> + directory.</p> + </item> + <item> + <p>The file name of the copy must be <c>syslog.conf.ORIG</c> but the + directory location is optional. Usually it is <c>/etc</c>. + </p> + <p>A simple way to do this is to issue the command</p> + <code type="none"> + cp /etc/syslog.conf /etc/syslog.conf.ORIG</code> + </item> + </list> + </item> + <item> + <p><em>Make an Erlang specific configuration file for syslogd.</em></p> + <list type="bulleted"> + <item> + <p>Make an edited copy of the back-up copy previously made.</p> + </item> + <item> + <p>The file name must be <c>syslog.conf.OTP</c> and the path + must be the same as the back-up copy.</p> + </item> + <item> + <p>The format of the configuration file is found in the man page for + <c>syslog.conf(5)</c>, by issuing the command <c>man syslog.conf</c>.</p> + </item> + <item> + <p>Usually a line is added which should state:</p> + <list type="bulleted"> + <item> + <p>which types of information that will be supervised by Erlang,</p> + </item> + <item> + <p>the name of the file (actually a named pipe) that should receive + the information.</p> + </item> + </list> + </item> + <item> + <p>If e.g. only information originating from the unix-kernel should + be supervised, the line should begin with <c>kern.LEVEL</c> (for the + possible values of <c>LEVEL</c> see <c>syslog.conf(5)</c>).</p> + </item> + <item> + <p>After at least one tab-character, the line added should contain + the full name of the named pipe where syslogd writes its information. The + path must be the same as for the <c>syslog.conf.ORIG</c> and + <c>syslog.conf.OTP</c> files. The file name must be <c>syslog.otp</c>.</p> + </item> + <item> + <p>If the directory for the <c>syslog.conf.ORIG</c> and + <c>syslog.conf.OTP</c> files is <c>/etc</c> the line in + <c>syslog.conf.OTP</c> will look like:</p> + <code type="none"> + kern.LEVEL /etc/syslog.otp </code> + </item> + </list> + </item> + <item> + <p><em>Check the file privileges of the configuration files.</em></p> + <list type="bulleted"> + <item> + <p>The configuration files should have <c>rw-r--r--</c> file + privileges and be owned by root.</p> + </item> + <item> + <p>A simple way to do this is to issue the commands</p> + <code type="none"> + chmod 644 /etc/syslog.conf + chmod 644 /etc/syslog.conf.ORIG + chmod 644 /etc/syslog.conf.OTP </code> + </item> + <item> + <p><em>Note:</em> If the <c>syslog.conf.ORIG</c> and + <c>syslog.conf.OTP</c> files are not in the <c>/etc</c> directory, + the file path in the second and third command must be modified.</p> + </item> + </list> + </item> + <item> + <p><em>Modify file privileges and ownership of the mod_syslog utility.</em></p> + <list type="bulleted"> + <item> + <p>The file privileges and ownership of the <c>mod_syslog</c> utility + must be modified.</p> + </item> + <item> + <p>The full name of the binary executable file is derived from the + position of the <c>os_mon</c> application if the file system by adding + <c>/priv/bin/mod_syslog</c>. The generic full name of the binary executable + file is thus</p> + <code type="none"><![CDATA[ + <OTP_ROOT>/lib/os_mon-<rev>/priv/bin/mod_syslog ]]></code> + <p><em>Example:</em> If the path to the otp-root is + <c>/usr/otp</c>, thus the path to the <c>os_mon</c> application is + <c>/usr/otp/lib/os_mon-1.0</c> (assuming revision 1.0) and the full name + of the binary executable file is + <c>/usr/otp/lib/os_mon-1.0/priv/bin/mod_syslog</c>.</p> + </item> + <item> + <p>The binary executable file must be owned by root, have + <c>rwsr-xr-x</c> file privileges, in particular the setuid bit of + user must be set.</p> + </item> + <item> + <p>A simple way to do this is to issue the commands</p> + <code type="none"><![CDATA[ + cd <OTP_ROOT>/lib/os_mon-<rev>/priv/bin/mod_syslog + chmod 4755 mod_syslog + chown root mod_syslog ]]></code> + </item> + </list> + </item> + </list> + </section> + + <section> + <title>Testing the application configuration file</title> + <p>The following procedure does not require root privilege.</p> + <list type="bulleted"> + <item> + <p>Ensure that the configuration parameters for the <c>os_sup</c> + module in the <c>os_mon</c> application are correct.</p> + </item> + <item> + <p>Browse the application configuration file (do <em>not</em> edit + it). The full name of the application configuration file is derived + from the position of the os_mon-application if the file system by adding + <c>/ebin/os_mon.app</c>.</p> + <p>The generic full name of the file is thus</p> + <code type="none"><![CDATA[ + <OTP_ROOT>/lib/os_mon-<rev>/ebin/os_mon.app. ]]></code> + <p><em>Example:</em> If the path to the otp-root is <c>/usr/otp</c>, + thus the path to the <c>os_mon</c> application is <c>/usr/otp/lib/os_mon-1.0</c> (assuming revision 1.0) and the full name of the binary executable file + is <c>/usr/otp/lib/os_mon-1.0/ebin/os_mon.app</c>.</p> + </item> + <item> + <p>Ensure that the following configuration parameters are bound to + the correct values.</p> + </item> + </list> + <table> + <row> + <cell align="left" valign="top"><em>Parameter</em></cell> + <cell align="left" valign="top"><em>Function</em></cell> + <cell align="left" valign="top"><em>Standard value</em></cell> + </row> + <row> + <cell align="left" valign="middle">start_os_sup</cell> + <cell align="left" valign="middle">Specifies if os_sup will be started or not.</cell> + <cell align="left" valign="middle"><c>true</c>for the first instance on the hardware; <c>false</c>for the other instances.</cell> + </row> + <row> + <cell align="left" valign="middle">os_sup_own</cell> + <cell align="left" valign="middle">The directory for (1)the back-up copy, (2) the Erlang specific configuration file for syslogd.</cell> + <cell align="left" valign="middle"><c>"/etc"</c></cell> + </row> + <row> + <cell align="left" valign="middle">os_sup_syslogconf</cell> + <cell align="left" valign="middle">The full name for the Solaris standard configuration file for syslogd </cell> + <cell align="left" valign="middle"><c>"/etc/syslog.conf"</c></cell> + </row> + <row> + <cell align="left" valign="middle">error_tag</cell> + <cell align="left" valign="middle">The tag for the messages that are sent to the error logger in the Erlang runtime system.</cell> + <cell align="left" valign="middle"><c>std_error</c></cell> + </row> + <tcaption>Configuration Parameters</tcaption> + </table> + <p>If the values listed in the <c>os_mon.app</c> does not suite your + needs, you should <c>not</c> edit that file. Instead you should + <em>override</em> values in a <em>system configuration file</em>, the + full pathname of which is given on the command line to <c>erl</c>.</p> + <p><em>Example:</em> The following is an example of the contents of an + application configuration file.</p> + <p></p> + <pre> +[{os_mon, [{start_os_sup, true}, {os_sup_own, "/etc"}, + {os_sup_syslogconf, "/etc/syslog.conf"}, {os_sup_errortag, std_error}]}]. </pre> + </section> + + <section> + <title>Related documents</title> + <p>See also the <c>os_mon(3)</c>, <c>application(3)</c> and <c>erl(1)</c> + reference manual pages.</p> + </section> + </section> +</chapter> + diff --git a/system/doc/embedded/vme_problems.xml b/system/doc/embedded/vme_problems.xml new file mode 100644 index 0000000000..7f9b929875 --- /dev/null +++ b/system/doc/embedded/vme_problems.xml @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="latin1" ?> +<!DOCTYPE chapter SYSTEM "chapter.dtd"> + +<chapter> + <header> + <copyright> + <year>1997</year> + <year>2007</year> + <holder>Ericsson AB, All Rights Reserved</holder> + </copyright> + <legalnotice> + The contents of this file are subject to the Erlang Public License, + Version 1.1, (the "License"); you may not use this file except in + compliance with the License. You should have received a copy of the + Erlang Public License along with this software. If not, it can be + retrieved online at http://www.erlang.org/. + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and limitations + under the License. + + The Initial Developer of the Original Code is Ericsson AB. + </legalnotice> + + <title>VME Bus Driver</title> + <prepared>Fredrik Tillman</prepared> + <responsible></responsible> + <docno>ETX/B/SFP/TILLMAN:96-002</docno> + <approved></approved> + <checked></checked> + <date>1996-10-29</date> + <rev>PA1</rev> + <file>vme_problems.sgml</file> + </header> + <p>This chapter describes the OS specific parts of OTP which relate to + the VME Bus Driver. + </p> + + <section> + <title>Installation Problems</title> + <p>The hardware watchdog timer which is controlled by the + <c>heart</c> port program requires the <c>FORCEvme</c> package, + which contains the VME bus driver, to be installed. This driver, + however, might clash with the Sun <c>mcp</c> driver and cause + the system to completely refuse to boot. To cure this problem, + the following lines should be added to <c>/etc/system</c>: + </p> + <list type="bulleted"> + <item><c>exclude: drv/mcp</c></item> + <item><c>exclude: drv/mcpzsa</c></item> + <item><c>exclude: drv/mcpp</c></item> + </list> + <warning> + <p>It is recommended that these lines be added to avoid the + clash described, which may make it completely impossible to boot + the system.</p> + </warning> + </section> +</chapter> + diff --git a/system/doc/embedded/vxworks.xml b/system/doc/embedded/vxworks.xml new file mode 100644 index 0000000000..52143a42e3 --- /dev/null +++ b/system/doc/embedded/vxworks.xml @@ -0,0 +1,193 @@ +<?xml version="1.0" encoding="latin1" ?> +<!DOCTYPE chapter SYSTEM "chapter.dtd"> + +<chapter> + <header> + <copyright> + <year>1997</year><year>2009</year> + <holder>Ericsson AB. All Rights Reserved.</holder> + </copyright> + <legalnotice> + The contents of this file are subject to the Erlang Public License, + Version 1.1, (the "License"); you may not use this file except in + compliance with the License. You should have received a copy of the + Erlang Public License along with this software. If not, it can be + retrieved online at http://www.erlang.org/. + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and limitations + under the License. + + </legalnotice> + + <title>VxWorks</title> + <prepared>Patrik Winroth</prepared> + <responsible></responsible> + <docno></docno> + <approved></approved> + <checked></checked> + <date>2000-10-17</date> + <rev></rev> + <file>vxworks.xml</file> + </header> + <p>This chapter describes the OS specific parts of OTP which relate + to VxWorks. + </p> + + <section> + <title>Introduction</title> + <p>The Erlang/OTP distribution for VxWorks is limited to what + Switchboard requires (Switchboard is a general purpose + switching hardware developed by Ericsson). + </p> + <p>Please consult the README file, included at root level in the + installation, for latest information on the distribution. + </p> + </section> + + <section> + <title>Memory Usage</title> + <p>Memory required is 32 Mbyte. + </p> + </section> + + <section> + <title>Disk Usage</title> + <p>The disk space required is 22 Mbyte, the documentation included. + </p> + </section> + + <section> + <title>Installation</title> + <p>OTP/VxWorks is supplied in a distribution file named + <c><![CDATA[<PREFIX>.tar.gz]]></c>; i.e. a tar archive that is + compressed with gzip. <c><![CDATA[<PREFIX>]]></c> represents the + name of the release, + e.g. <c>otp_LXA12345_vxworks_cpu32_R42A</c>. Assuming you are + installing to a Solaris file system, the installation is + performed by following these steps: < + </p> + <p></p> + <list type="bulleted"> + <item>Change to the directory where you want to install + OTP/VxWorks (<c><![CDATA[<ROOTDIR>]]></c>): <c><![CDATA[cd <ROOTDIR>]]></c></item> + <item>Make a directory to put OTP/VxWorks in: <c>mkdir otp_vxworks_cpu32</c> (or whatever you want to call it)</item> + <item>Change directory to the newly created one: <c>cd otp_vxworks_cpu32</c></item> + <item>Copy the distribution file there from where it is located + (<c><![CDATA[<RELDIR>]]></c>): <c><![CDATA[cp <RELDIR>/<PREFIX>.tar.gz .]]></c></item> + <item>Unzip the distribution file: <c><![CDATA[gunzip <PREFIX>.tar.gz]]></c></item> + <item>Untar <c><![CDATA[<PREFIX>.tar]]></c>: <c><![CDATA[tar xvf <PREFIX>.tar]]></c></item> + <item>Create a bin directory: <c>mkdir bin</c></item> + <item>Copy the VxWorks Erlang/OTP start-up script to the bin directory: + <c>cp erts-Vsn/bin/erl bin/.</c></item> + <item>Copy the example start scripts to the bin directory: + <c>cp releases/R42A/*.boot bin/.</c></item> + </list> + <p>If you use VxWorks nfs mounting facility to mount the Solaris + file system, this installation may be directly used. An other + possibility is to copy the installation to a local VxWorks DOS + file system, from where it is used. + </p> + </section> + + <section> + <title>OS Specific Functionality/Information</title> + <p>There are a couple of files that are unique to the VxWorks + distribution of Erlang/OTP, these files are described here. + </p> + <list type="bulleted"> + <item>README - this files has some information on VxWorks + specifics that you are advised to consult. This includes the + latest information on what parts of OTP are included in the + VxWorks distribution of Erlang/OTP. If you want us to + include more parts, please contact us to discuss + this.</item> + <item>erts-Vsn/bin/resolv.conf - A resolver configuration EXAMPLE file. + You have to edit this file.</item> + <item>erts-Vsn/bin/erl - This is an EXAMPLE start script for VxWorks. + You have to edit this file to suit your needs.</item> + <item>erts-Vsn/bin/erl_io - One possible solution to the problem + of competing Erlang and VxWorks shell. Contains the function + 'start_erl' called by the erl script. Also contains the + function 'to_erl' to be used when connecting to the Erlang + shell from VxWorks' shell.</item> + <item>erts-Vsn/bin/erl_exec - Rearranges command line arguments + and starts Erlang.</item> + <item>erts-Vsn/bin/vxcall - Allows spawning of standard VxWorks + shell functions (which is just about any function in the + system...) from open_port/2. E.g. open_port({spawn, 'vxcall + func arg1 arg2'}, []) will cause the output that 'func arg1, + arg2' would have given in the shell to be received from the + port.</item> + <item>erts-Vsn/bin/rdate - Set the time from a networked host, + like the SunOS command. Nothing Erlang-specific, but nice + if you want date/0 and time/0 to give meaningful values (you + also need a TIMEZONE environment setting if GMT isn't + acceptable). For example: <c>putenv "TIMEZONE=CET::-60:033002:102603"</c> sets central european + time.</item> + <item>erts-Vsn/src - Contains source for the above files, and + additionally config.c, driver.h, preload.c and + reclaim.h. Reclaim.h defines the interface to a simple + mechanism for "resource reclamation" that is part of the + Erlang runtime system - may be useful to "port program" writers (and + possibly others). Take careful note of the caveats listed in + the file!</item> + </list> + </section> + + <section> + <title>Starting Erlang</title> + <p>Start (and restart) of the system depends on what file system + is used. To be able to start the system from a nfs mounted + file system you can use VxWorks start script facility to run a + start script similar to the example below. Note that the + Erlang/OTP start-up script is run at the end of this script. + </p> + <code type="none"><![CDATA[ +# start.script v1.0 1997/09/08 patrik +# +# File name: start.script +# Purpose: Starting the VxWorks/cpu32 erlang/OTP +# Author: [email protected] +# Resides in: ~tornado/wind/target/config/ads360/ + +# +# Set shell prompt +# +shellPromptSet("sauron-> ") + +# +# Set default gateway +# +hostAdd "router-20","150.236.20.251" +routeAdd "0","router-20" + +# +# Mount /home from gandalf +# +hostAdd "gandalf","150.236.20.16" +usergroup=10 +nfsAuthUnixSet("gandalf", 452, 10, 1, &usergroup) +nfsMount("gandalf", "/export/home", "/home") + +# +# Load and run rdate.o to set correct date on the target +# +ld < /home/gandalf/tornado/wind/target/config/ads360/rdate.o +rdate("gandalf") + +# +# Setup timezone information (Central European time) +# +putenv "TIMEZONE=CET::-60:033002:102603" + +# +# Run the Erlang/OTP start script +# +cd "/home/gandalf/tornado/wind/target/erlang_cpu32_R42A/bin" +<erl + ]]></code> + </section> +</chapter> + diff --git a/system/doc/embedded/warning.gif b/system/doc/embedded/warning.gif Binary files differnew file mode 100644 index 0000000000..96af52360e --- /dev/null +++ b/system/doc/embedded/warning.gif diff --git a/system/doc/embedded/xmlfiles.mk b/system/doc/embedded/xmlfiles.mk new file mode 100644 index 0000000000..2bdc34ae28 --- /dev/null +++ b/system/doc/embedded/xmlfiles.mk @@ -0,0 +1,22 @@ +# +# %CopyrightBegin% +# +# Copyright Ericsson AB 2009. All Rights Reserved. +# +# The contents of this file are subject to the Erlang Public License, +# Version 1.1, (the "License"); you may not use this file except in +# compliance with the License. You should have received a copy of the +# Erlang Public License along with this software. If not, it can be +# retrieved online at http://www.erlang.org/. +# +# Software distributed under the License is distributed on an "AS IS" +# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +# the License for the specific language governing rights and limitations +# under the License. +# +# %CopyrightEnd% +# +EMBEDDED_CHAPTER_FILES = \ + embedded_solaris.xml \ + embedded_nt.xml \ + vxworks.xml diff --git a/system/doc/embedded/xntp.xml b/system/doc/embedded/xntp.xml new file mode 100644 index 0000000000..564b63fc7d --- /dev/null +++ b/system/doc/embedded/xntp.xml @@ -0,0 +1,75 @@ +<?xml version="1.0" encoding="latin1" ?> +<!DOCTYPE chapter SYSTEM "chapter.dtd"> + +<chapter> + <header> + <copyright> + <year>1997</year> + <year>2007</year> + <holder>Ericsson AB, All Rights Reserved</holder> + </copyright> + <legalnotice> + The contents of this file are subject to the Erlang Public License, + Version 1.1, (the "License"); you may not use this file except in + compliance with the License. You should have received a copy of the + Erlang Public License along with this software. If not, it can be + retrieved online at http://www.erlang.org/. + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and limitations + under the License. + + The Initial Developer of the Original Code is Ericsson AB. + </legalnotice> + + <title>XNTP (Network Time Protocol)</title> + <prepared>ETX/B/SFP Kenneth Lundin</prepared> + <responsible></responsible> + <docno>1</docno> + <approved>ETX/B/SFP (Kenneth Lundin)</approved> + <checked></checked> + <date>1996-11-20</date> + <rev>A</rev> + <file>xntp.sgml</file> + </header> + <p>This chapter describes the OS specific part of OTP that relates + to the Network Time Protocol (XNTP). + </p> + + <section> + <title>XNTP for Sunos5</title> + <p>XNTP maintains a Unix system time-of-day which conforms with + the Internet standard time servers. XNTP is a complete + implementation of the Network Time Protocol, version 3 + specification as defined in RFC 1305. + </p> + <p>XNTP for use in an <em>embedded system running Sunos5</em> is + delivered with OTP. The XNTP is delivered as a separate + <c>tar</c> file which also includes extensive documentation and + installation instructions. + </p> + <p>The following section of the introductory documentation is + included in the distribution: + </p> + <quote> + <p>The Network Time Protocol (NTP) is used to synchronize the + time of a computer client or server to another server or + reference time source, such as a radio or satellite receiver + or modem. It provides client accuracies typically within a + millisecond on LANs and up to a few tens of milliseconds on + WANs relative to a primary server synchronized to Coordinated + Universal Time (UTC) via a Global Positioning Service (GPS) + receiver, for example. Typical NTP configurations utilize + multiple redundant servers and diverse network paths, in order + to achieve high accuracy and reliability. ...</p> + </quote> + <p>The XNTP software is supplied without charge under the + conditions set forth in the Copyright Notice provided within the + distribution. + </p> + <p>(© David L. Mills 1992, 1993, 1994, 1995, 1996) + </p> + </section> +</chapter> + |