Reformatted version of the Diskless X server tutorial.
This commit is contained in:
parent
28ded3fede
commit
59dba67e39
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=5367
4 changed files with 726 additions and 0 deletions
14
en_US.ISO8859-1/articles/diskless-x/Makefile
Normal file
14
en_US.ISO8859-1/articles/diskless-x/Makefile
Normal file
|
@ -0,0 +1,14 @@
|
|||
# $Id: Makefile,v 1.1 1999-08-16 22:00:10 nik Exp $
|
||||
|
||||
DOC?= article
|
||||
|
||||
FORMATS?= html
|
||||
|
||||
INSTALL_COMPRESSED?=gz
|
||||
INSTALL_ONLY_COMPRESSED?=
|
||||
|
||||
SRCS= article.sgml
|
||||
|
||||
DOC_PREFIX?= ../../..
|
||||
|
||||
.include "../../../share/mk/docproj.docbook.mk"
|
349
en_US.ISO8859-1/articles/diskless-x/article.sgml
Normal file
349
en_US.ISO8859-1/articles/diskless-x/article.sgml
Normal file
|
@ -0,0 +1,349 @@
|
|||
<!--
|
||||
The FreeBSD Documentation Project
|
||||
|
||||
$Id: article.sgml,v 1.1 1999-08-16 22:00:10 nik Exp $
|
||||
-->
|
||||
|
||||
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook V3.1-Based Extension//EN" [
|
||||
|
||||
<!ENTITY % man PUBLIC "-//FreeBSD//ENTITIES DocBook Manual Page Entities//EN">
|
||||
%man;
|
||||
]>
|
||||
|
||||
<article>
|
||||
<artheader>
|
||||
<title>Diskless X Server: a how to guide</title>
|
||||
|
||||
<authorgroup>
|
||||
<author>
|
||||
<firstname> Jerry</firstname>
|
||||
<surname>Kendall</surname>
|
||||
<affiliation>
|
||||
<address>
|
||||
<email>jerry@kcis.com</email>
|
||||
</address>
|
||||
</affiliation>
|
||||
</author></authorgroup>
|
||||
|
||||
<pubdate>28-December-1996</pubdate>
|
||||
|
||||
<copyright>
|
||||
<year>1996</year>
|
||||
<holder>Jerry Kendall</holder>
|
||||
</copyright>
|
||||
|
||||
<abstract>
|
||||
<para>With the help of some friends on the FreeBSD-hackers list, I have
|
||||
been able to create a diskless X terminal. The creation of the X
|
||||
terminal required first creating a diskless system with minimal
|
||||
utilities mounted via NFS. These same steps were used to create 2
|
||||
separate diskless systems. The first is <hostid
|
||||
role="fqdn">altair.kcis.com</hostid>. A diskless X terminal that I
|
||||
run on my old 386DX-40. It has a 340Meg hard disk but, I did not want
|
||||
to change it. So, it boots from <hostid
|
||||
role="fqdn">antares.kcis.com</hostid> across a Ethernet. The second
|
||||
system is a 486DX2-66. I setup a diskless FreeBSD (complete) that
|
||||
uses no local disk. The server in that case is a Sun 670MP running
|
||||
SunOS 4.1.3. The same setup configuration was needed for both.</para>
|
||||
|
||||
<para>I am sure that there is stuff that needs to be added
|
||||
to this. Please send me any comments.</para>
|
||||
</abstract>
|
||||
</artheader>
|
||||
|
||||
<sect1>
|
||||
<title>Creating the boot floppy (On the diskless system)</title>
|
||||
|
||||
<para>Since the network boot loaders will not work with some of the TSR's
|
||||
and such that MS-DOS uses, it is best to create a dedicated boot floppy
|
||||
or, if you can, create an MS-DOS menu that will (via the
|
||||
<filename>config.sys</filename>/<filename>autoexec.bat</filename> files)
|
||||
ask what configuration to load when the system starts. The later is the
|
||||
method that I use and it works great. My MS-DOS (6.x) menu is
|
||||
below.</para>
|
||||
|
||||
<example>
|
||||
<title><filename>config.sys</filename></title>
|
||||
|
||||
<programlisting>[menu]
|
||||
menuitem=normal, normal
|
||||
menuitem=unix, unix
|
||||
[normal]
|
||||
....
|
||||
normal config.sys stuff
|
||||
...
|
||||
[unix]</programlisting>
|
||||
</example>
|
||||
|
||||
<example>
|
||||
<title><filename>autoexec.bat</filename></title>
|
||||
|
||||
<programlisting>@ECHO OFF
|
||||
goto %config%
|
||||
|
||||
:normal
|
||||
...
|
||||
normal autoexec.bat stuff
|
||||
...
|
||||
goto end
|
||||
|
||||
:unix
|
||||
cd \netboot
|
||||
nb8390.com
|
||||
|
||||
:end</programlisting>
|
||||
</example>
|
||||
</sect1>
|
||||
|
||||
<sect1>
|
||||
<title>Getting the network boot programs (On the server)</title>
|
||||
|
||||
<para>Compile the 'net-boot' programs that are located in
|
||||
<filename>/usr/src/sys/i386/boot/netboot</filename>. You should read
|
||||
the comments at the top of the <filename>Makefile</filename>. Adjust as
|
||||
required. Make a backup of the original in case it gets foobar'd. When
|
||||
the build is done, there should be 2 MS-DOS executables,
|
||||
<filename>nb8390.com</filename> and <filename>nb3c509.com</filename>.
|
||||
One of these two programs will be what you need to run on the diskless
|
||||
server. It will load the kernel from the boot server. At this point,
|
||||
put both programs on the MS-DOS boot floppy created earlier.</para>
|
||||
</sect1>
|
||||
|
||||
<sect1>
|
||||
<title>Determine which program to run (On the diskless system)</title>
|
||||
|
||||
<para>If you know the chipset that your Ethernet adapter uses, this is
|
||||
easy. If you have the NS8390 chipset, or a NS8390 based chipset, use
|
||||
<filename>nb8390.com</filename>. If you have a 3Com 509 based chipset,
|
||||
use the <filename>nb3C509.com</filename> boot program. If you are not
|
||||
sure which you have, try using one, if it says <errorname>No adapter
|
||||
found</errorname>, try the other. Beyond that, you are pretty much on
|
||||
your own.</para>
|
||||
</sect1>
|
||||
|
||||
<sect1>
|
||||
<title>Booting across the network</title>
|
||||
|
||||
<para>Boot the diskless system with out any config.sys/autoexec.bat
|
||||
files. try running the boot program for your Ethernet adapter.</para>
|
||||
|
||||
<para>My Ethernet adapter is running in WD8013 16bit mode so I run
|
||||
<filename>nb8390.com</filename></para>
|
||||
|
||||
<screen><prompt>C:></prompt> <userinput>cd \netboot</userinput>
|
||||
<prompt>C:></prompt> <userinput>nb8390</userinput>
|
||||
|
||||
<prompt>Boot from Network (Y/N) ?</prompt> <userinput>Y</userinput>
|
||||
|
||||
BOOTP/TFTP/NFS bootstrap loader ESC for menu
|
||||
|
||||
Searching for adapter..
|
||||
WD8013EBT base 0x0300, memory 0x000D8000, addr 00:40:01:43:26:66
|
||||
|
||||
Searching for server...</screen>
|
||||
|
||||
<para>At this point, my diskless system is trying to find a machine to act
|
||||
as a boot server. Make note of the <literal>addr</literal> line above,
|
||||
you will need this number later. Reset the diskless system and modify
|
||||
your <filename>config.sys</filename> and
|
||||
<filename>autoexec.bat</filename> files to do these steps automatically
|
||||
for you. Perhaps in a menu. If you had to run
|
||||
<command>nb3c509.com</command> instead of <command>nb8390.com</command>
|
||||
the output is the same as above. If you got <errorname>No adapter
|
||||
found</errorname> at the <literal>Searching for adapter...</literal>
|
||||
message, verify that you did indeed set the compile time defines in the
|
||||
<filename>Makefile</filename> correctly.</para>
|
||||
</sect1>
|
||||
|
||||
<sect1>
|
||||
<title>Allowing systems to boot across the network (On the server)</title>
|
||||
|
||||
<para>Make sure the <filename>/etc/inetd.conf</filename> file has entries
|
||||
for tftp and bootps. Mine are listed below:</para>
|
||||
|
||||
<programlisting>tftp dgram udp wait nobody /usr/libexec/tftpd tftpd
|
||||
#
|
||||
# Additions by who ever you are
|
||||
bootps dgram udp wait root /usr/libexec/bootpd bootpd /etc/bootptab</programlisting>
|
||||
|
||||
<para>If you have to change the <filename>/etc/inetd.conf</filename> file,
|
||||
send a <literal>HUP</literal> signal to inetd. To do this, get the
|
||||
process ID of inetd with <command>ps -ax | grep inetd | grep -v
|
||||
grep</command>. Once you have it, send it a HUP signal. Do this by
|
||||
<command>kill -HUP <pid></command>. This will force inetd to
|
||||
re-read its config file.</para>
|
||||
|
||||
<para>Did you remember to note the <literal>addr</literal> line from the
|
||||
output of the boot loader on the diskless system? Guess what, here is
|
||||
where you need it.</para>
|
||||
|
||||
<para>Add an entry to <literal>/etc/bootptab</literal> (maybe creating the
|
||||
file). It should be laid out identical to this:</para>
|
||||
|
||||
<programlisting>altair:\
|
||||
:ht=ether:\
|
||||
:ha=004001432666:\
|
||||
:sm=255.255.255.0:\
|
||||
:hn:\
|
||||
:ds=199.246.76.1:\
|
||||
:ip=199.246.76.2:\
|
||||
:gw=199.246.76.1:\
|
||||
:vm=rfc1048:</programlisting>
|
||||
|
||||
<para>The lines are as follows:</para>
|
||||
|
||||
<informaltable frame="none">
|
||||
<tgroup cols="2">
|
||||
<tbody>
|
||||
<row>
|
||||
<entry><literal>altair</literal></entry>
|
||||
<entry>the diskless systems name without the domain name.</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry><literal>ht=ether</literal></entry>
|
||||
<entry>the hardware type of 'ethernet'.</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry><literal>ha=004001432666</literal></entry>
|
||||
<entry>the hardware address (the number noted above).</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry><literal>sm=255.255.255.0</literal></entry>
|
||||
<entry>the subnet mask.</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry><literal>hn</literal></entry>
|
||||
<entry>tells server to send client's hostname to the
|
||||
client.</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry><literal>ds=199.246.76.1</literal></entry>
|
||||
<entry>tells the client who the domain server is.</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry><literal>ip=199.246.76.2</literal></entry>
|
||||
<entry>tells the client what it's IP address is.</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry><literal>gw=199.246.76.1</literal></entry>
|
||||
<entry>tells the client what the default gateway is.</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry><literal>vm=...</literal></entry>
|
||||
<entry>just leave it there.</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</informaltable>
|
||||
|
||||
<note>
|
||||
<para>Be sure to setup the IP addresses correctly, the addresses above
|
||||
are my own.</para>
|
||||
</note>
|
||||
|
||||
<para>Create the directory '/tftpboot' on the server it will contain the
|
||||
configuration files for the diskless systems that the server will serve.
|
||||
These files will be named 'cfg.<ip>' where <ip> is the IP
|
||||
address of the diskless system. The config file for 'altair' is
|
||||
/tftpboot/cfg.199.246.76.2. The contents is:</para>
|
||||
|
||||
<programlisting>rootfs 199.246.76.1:/DiskLess/rootfs/altair
|
||||
hostname altair.kcis.com</programlisting>
|
||||
|
||||
<para>The line <literal>hostname altair.kcis.com</literal> simply tells
|
||||
the diskless system what its fully qualified domain name is.</para>
|
||||
|
||||
<para>The line <literal>rootfs
|
||||
199.246.76.1:/DiskLess/rootfs/altair</literal> tells the diskless
|
||||
system where its NFS mountable root filesystem is located.</para>
|
||||
|
||||
<note>
|
||||
<para>The NFS mounted root filesystem will be mounted <emphasis>read
|
||||
only</emphasis>.</para>
|
||||
</note>
|
||||
|
||||
<para>The hierarchy for the diskless system can be re-mounted allowing
|
||||
read-write operations if required.</para>
|
||||
|
||||
<para>I use my spare 386DX-40 as a dedicated X terminal.</para>
|
||||
|
||||
<para>The hierarchy for 'altair' is:</para>
|
||||
|
||||
<literallayout>/
|
||||
/bin
|
||||
/etc
|
||||
/tmp
|
||||
/sbin
|
||||
/dev
|
||||
/dev/fd
|
||||
/usr
|
||||
/var
|
||||
/var/run</literallayout>
|
||||
|
||||
<para>The actual list of files is:</para>
|
||||
|
||||
<screen>-r-xr-xr-x 1 root wheel 779984 Dec 11 23:44 ./kernel
|
||||
-r-xr-xr-x 1 root bin 299008 Dec 12 00:22 ./bin/sh
|
||||
-rw-r--r-- 1 root wheel 499 Dec 15 15:54 ./etc/rc
|
||||
-rw-r--r-- 1 root wheel 1411 Dec 11 23:19 ./etc/ttys
|
||||
-rw-r--r-- 1 root wheel 157 Dec 15 15:42 ./etc/hosts
|
||||
-rw-r--r-- 1 root bin 1569 Dec 15 15:26 ./etc/XF86Config.altair
|
||||
-r-x------ 1 bin bin 151552 Jun 10 1995 ./sbin/init
|
||||
-r-xr-xr-x 1 bin bin 176128 Jun 10 1995 ./sbin/ifconfig
|
||||
-r-xr-xr-x 1 bin bin 110592 Jun 10 1995 ./sbin/mount_nfs
|
||||
-r-xr-xr-x 1 bin bin 135168 Jun 10 1995 ./sbin/reboot
|
||||
-r-xr-xr-x 1 root bin 73728 Dec 13 22:38 ./sbin/mount
|
||||
-r-xr-xr-x 1 root wheel 1992 Jun 10 1995 ./dev/MAKEDEV.local
|
||||
-r-xr-xr-x 1 root wheel 24419 Jun 10 1995 ./dev/MAKEDEV</screen>
|
||||
|
||||
<para>Don't forget to run <command>MAKEDEV all</command> in the
|
||||
<filename>dev</filename> directory.</para>
|
||||
|
||||
<para>My <filename>/etc/rc</filename> for <hostid>altair</hostid>
|
||||
is:</para>
|
||||
|
||||
<programlisting>#!/bin/sh
|
||||
#
|
||||
PATH=/bin:/
|
||||
export PATH
|
||||
#
|
||||
# configure the localhost
|
||||
/sbin/ifconfig lo0 127.0.0.1
|
||||
#
|
||||
# configure the ethernet card
|
||||
/sbin/ifconfig ed0 199.246.76.2 netmask 0xffffff00
|
||||
#
|
||||
# mount the root filesystem via NFS
|
||||
/sbin/mount antares:/DiskLess/rootfs/altair /
|
||||
#
|
||||
# mount the /usr filesystem via NFS
|
||||
/sbin/mount antares:/DiskLess/usr /usr
|
||||
#
|
||||
/usr/X11R6/bin/XF86_SVGA -query antares -xf86config /etc/XF86Config.altair > /dev/null 2>&1
|
||||
#
|
||||
# Reboot after X exits
|
||||
/sbin/reboot
|
||||
#
|
||||
# We blew up....
|
||||
exit 1</programlisting>
|
||||
|
||||
<para>Any comments and all questions welcome.</para>
|
||||
</sect1>
|
||||
</article>
|
||||
|
||||
<!--
|
||||
Local Variables:
|
||||
mode: sgml
|
||||
sgml-indent-data: t
|
||||
sgml-omittag: nil
|
||||
sgml-always-quote-attributes: t
|
||||
End:
|
||||
-->
|
14
en_US.ISO_8859-1/articles/diskless-x/Makefile
Normal file
14
en_US.ISO_8859-1/articles/diskless-x/Makefile
Normal file
|
@ -0,0 +1,14 @@
|
|||
# $Id: Makefile,v 1.1 1999-08-16 22:00:10 nik Exp $
|
||||
|
||||
DOC?= article
|
||||
|
||||
FORMATS?= html
|
||||
|
||||
INSTALL_COMPRESSED?=gz
|
||||
INSTALL_ONLY_COMPRESSED?=
|
||||
|
||||
SRCS= article.sgml
|
||||
|
||||
DOC_PREFIX?= ../../..
|
||||
|
||||
.include "../../../share/mk/docproj.docbook.mk"
|
349
en_US.ISO_8859-1/articles/diskless-x/article.sgml
Normal file
349
en_US.ISO_8859-1/articles/diskless-x/article.sgml
Normal file
|
@ -0,0 +1,349 @@
|
|||
<!--
|
||||
The FreeBSD Documentation Project
|
||||
|
||||
$Id: article.sgml,v 1.1 1999-08-16 22:00:10 nik Exp $
|
||||
-->
|
||||
|
||||
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook V3.1-Based Extension//EN" [
|
||||
|
||||
<!ENTITY % man PUBLIC "-//FreeBSD//ENTITIES DocBook Manual Page Entities//EN">
|
||||
%man;
|
||||
]>
|
||||
|
||||
<article>
|
||||
<artheader>
|
||||
<title>Diskless X Server: a how to guide</title>
|
||||
|
||||
<authorgroup>
|
||||
<author>
|
||||
<firstname> Jerry</firstname>
|
||||
<surname>Kendall</surname>
|
||||
<affiliation>
|
||||
<address>
|
||||
<email>jerry@kcis.com</email>
|
||||
</address>
|
||||
</affiliation>
|
||||
</author></authorgroup>
|
||||
|
||||
<pubdate>28-December-1996</pubdate>
|
||||
|
||||
<copyright>
|
||||
<year>1996</year>
|
||||
<holder>Jerry Kendall</holder>
|
||||
</copyright>
|
||||
|
||||
<abstract>
|
||||
<para>With the help of some friends on the FreeBSD-hackers list, I have
|
||||
been able to create a diskless X terminal. The creation of the X
|
||||
terminal required first creating a diskless system with minimal
|
||||
utilities mounted via NFS. These same steps were used to create 2
|
||||
separate diskless systems. The first is <hostid
|
||||
role="fqdn">altair.kcis.com</hostid>. A diskless X terminal that I
|
||||
run on my old 386DX-40. It has a 340Meg hard disk but, I did not want
|
||||
to change it. So, it boots from <hostid
|
||||
role="fqdn">antares.kcis.com</hostid> across a Ethernet. The second
|
||||
system is a 486DX2-66. I setup a diskless FreeBSD (complete) that
|
||||
uses no local disk. The server in that case is a Sun 670MP running
|
||||
SunOS 4.1.3. The same setup configuration was needed for both.</para>
|
||||
|
||||
<para>I am sure that there is stuff that needs to be added
|
||||
to this. Please send me any comments.</para>
|
||||
</abstract>
|
||||
</artheader>
|
||||
|
||||
<sect1>
|
||||
<title>Creating the boot floppy (On the diskless system)</title>
|
||||
|
||||
<para>Since the network boot loaders will not work with some of the TSR's
|
||||
and such that MS-DOS uses, it is best to create a dedicated boot floppy
|
||||
or, if you can, create an MS-DOS menu that will (via the
|
||||
<filename>config.sys</filename>/<filename>autoexec.bat</filename> files)
|
||||
ask what configuration to load when the system starts. The later is the
|
||||
method that I use and it works great. My MS-DOS (6.x) menu is
|
||||
below.</para>
|
||||
|
||||
<example>
|
||||
<title><filename>config.sys</filename></title>
|
||||
|
||||
<programlisting>[menu]
|
||||
menuitem=normal, normal
|
||||
menuitem=unix, unix
|
||||
[normal]
|
||||
....
|
||||
normal config.sys stuff
|
||||
...
|
||||
[unix]</programlisting>
|
||||
</example>
|
||||
|
||||
<example>
|
||||
<title><filename>autoexec.bat</filename></title>
|
||||
|
||||
<programlisting>@ECHO OFF
|
||||
goto %config%
|
||||
|
||||
:normal
|
||||
...
|
||||
normal autoexec.bat stuff
|
||||
...
|
||||
goto end
|
||||
|
||||
:unix
|
||||
cd \netboot
|
||||
nb8390.com
|
||||
|
||||
:end</programlisting>
|
||||
</example>
|
||||
</sect1>
|
||||
|
||||
<sect1>
|
||||
<title>Getting the network boot programs (On the server)</title>
|
||||
|
||||
<para>Compile the 'net-boot' programs that are located in
|
||||
<filename>/usr/src/sys/i386/boot/netboot</filename>. You should read
|
||||
the comments at the top of the <filename>Makefile</filename>. Adjust as
|
||||
required. Make a backup of the original in case it gets foobar'd. When
|
||||
the build is done, there should be 2 MS-DOS executables,
|
||||
<filename>nb8390.com</filename> and <filename>nb3c509.com</filename>.
|
||||
One of these two programs will be what you need to run on the diskless
|
||||
server. It will load the kernel from the boot server. At this point,
|
||||
put both programs on the MS-DOS boot floppy created earlier.</para>
|
||||
</sect1>
|
||||
|
||||
<sect1>
|
||||
<title>Determine which program to run (On the diskless system)</title>
|
||||
|
||||
<para>If you know the chipset that your Ethernet adapter uses, this is
|
||||
easy. If you have the NS8390 chipset, or a NS8390 based chipset, use
|
||||
<filename>nb8390.com</filename>. If you have a 3Com 509 based chipset,
|
||||
use the <filename>nb3C509.com</filename> boot program. If you are not
|
||||
sure which you have, try using one, if it says <errorname>No adapter
|
||||
found</errorname>, try the other. Beyond that, you are pretty much on
|
||||
your own.</para>
|
||||
</sect1>
|
||||
|
||||
<sect1>
|
||||
<title>Booting across the network</title>
|
||||
|
||||
<para>Boot the diskless system with out any config.sys/autoexec.bat
|
||||
files. try running the boot program for your Ethernet adapter.</para>
|
||||
|
||||
<para>My Ethernet adapter is running in WD8013 16bit mode so I run
|
||||
<filename>nb8390.com</filename></para>
|
||||
|
||||
<screen><prompt>C:></prompt> <userinput>cd \netboot</userinput>
|
||||
<prompt>C:></prompt> <userinput>nb8390</userinput>
|
||||
|
||||
<prompt>Boot from Network (Y/N) ?</prompt> <userinput>Y</userinput>
|
||||
|
||||
BOOTP/TFTP/NFS bootstrap loader ESC for menu
|
||||
|
||||
Searching for adapter..
|
||||
WD8013EBT base 0x0300, memory 0x000D8000, addr 00:40:01:43:26:66
|
||||
|
||||
Searching for server...</screen>
|
||||
|
||||
<para>At this point, my diskless system is trying to find a machine to act
|
||||
as a boot server. Make note of the <literal>addr</literal> line above,
|
||||
you will need this number later. Reset the diskless system and modify
|
||||
your <filename>config.sys</filename> and
|
||||
<filename>autoexec.bat</filename> files to do these steps automatically
|
||||
for you. Perhaps in a menu. If you had to run
|
||||
<command>nb3c509.com</command> instead of <command>nb8390.com</command>
|
||||
the output is the same as above. If you got <errorname>No adapter
|
||||
found</errorname> at the <literal>Searching for adapter...</literal>
|
||||
message, verify that you did indeed set the compile time defines in the
|
||||
<filename>Makefile</filename> correctly.</para>
|
||||
</sect1>
|
||||
|
||||
<sect1>
|
||||
<title>Allowing systems to boot across the network (On the server)</title>
|
||||
|
||||
<para>Make sure the <filename>/etc/inetd.conf</filename> file has entries
|
||||
for tftp and bootps. Mine are listed below:</para>
|
||||
|
||||
<programlisting>tftp dgram udp wait nobody /usr/libexec/tftpd tftpd
|
||||
#
|
||||
# Additions by who ever you are
|
||||
bootps dgram udp wait root /usr/libexec/bootpd bootpd /etc/bootptab</programlisting>
|
||||
|
||||
<para>If you have to change the <filename>/etc/inetd.conf</filename> file,
|
||||
send a <literal>HUP</literal> signal to inetd. To do this, get the
|
||||
process ID of inetd with <command>ps -ax | grep inetd | grep -v
|
||||
grep</command>. Once you have it, send it a HUP signal. Do this by
|
||||
<command>kill -HUP <pid></command>. This will force inetd to
|
||||
re-read its config file.</para>
|
||||
|
||||
<para>Did you remember to note the <literal>addr</literal> line from the
|
||||
output of the boot loader on the diskless system? Guess what, here is
|
||||
where you need it.</para>
|
||||
|
||||
<para>Add an entry to <literal>/etc/bootptab</literal> (maybe creating the
|
||||
file). It should be laid out identical to this:</para>
|
||||
|
||||
<programlisting>altair:\
|
||||
:ht=ether:\
|
||||
:ha=004001432666:\
|
||||
:sm=255.255.255.0:\
|
||||
:hn:\
|
||||
:ds=199.246.76.1:\
|
||||
:ip=199.246.76.2:\
|
||||
:gw=199.246.76.1:\
|
||||
:vm=rfc1048:</programlisting>
|
||||
|
||||
<para>The lines are as follows:</para>
|
||||
|
||||
<informaltable frame="none">
|
||||
<tgroup cols="2">
|
||||
<tbody>
|
||||
<row>
|
||||
<entry><literal>altair</literal></entry>
|
||||
<entry>the diskless systems name without the domain name.</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry><literal>ht=ether</literal></entry>
|
||||
<entry>the hardware type of 'ethernet'.</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry><literal>ha=004001432666</literal></entry>
|
||||
<entry>the hardware address (the number noted above).</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry><literal>sm=255.255.255.0</literal></entry>
|
||||
<entry>the subnet mask.</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry><literal>hn</literal></entry>
|
||||
<entry>tells server to send client's hostname to the
|
||||
client.</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry><literal>ds=199.246.76.1</literal></entry>
|
||||
<entry>tells the client who the domain server is.</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry><literal>ip=199.246.76.2</literal></entry>
|
||||
<entry>tells the client what it's IP address is.</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry><literal>gw=199.246.76.1</literal></entry>
|
||||
<entry>tells the client what the default gateway is.</entry>
|
||||
</row>
|
||||
|
||||
<row>
|
||||
<entry><literal>vm=...</literal></entry>
|
||||
<entry>just leave it there.</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</informaltable>
|
||||
|
||||
<note>
|
||||
<para>Be sure to setup the IP addresses correctly, the addresses above
|
||||
are my own.</para>
|
||||
</note>
|
||||
|
||||
<para>Create the directory '/tftpboot' on the server it will contain the
|
||||
configuration files for the diskless systems that the server will serve.
|
||||
These files will be named 'cfg.<ip>' where <ip> is the IP
|
||||
address of the diskless system. The config file for 'altair' is
|
||||
/tftpboot/cfg.199.246.76.2. The contents is:</para>
|
||||
|
||||
<programlisting>rootfs 199.246.76.1:/DiskLess/rootfs/altair
|
||||
hostname altair.kcis.com</programlisting>
|
||||
|
||||
<para>The line <literal>hostname altair.kcis.com</literal> simply tells
|
||||
the diskless system what its fully qualified domain name is.</para>
|
||||
|
||||
<para>The line <literal>rootfs
|
||||
199.246.76.1:/DiskLess/rootfs/altair</literal> tells the diskless
|
||||
system where its NFS mountable root filesystem is located.</para>
|
||||
|
||||
<note>
|
||||
<para>The NFS mounted root filesystem will be mounted <emphasis>read
|
||||
only</emphasis>.</para>
|
||||
</note>
|
||||
|
||||
<para>The hierarchy for the diskless system can be re-mounted allowing
|
||||
read-write operations if required.</para>
|
||||
|
||||
<para>I use my spare 386DX-40 as a dedicated X terminal.</para>
|
||||
|
||||
<para>The hierarchy for 'altair' is:</para>
|
||||
|
||||
<literallayout>/
|
||||
/bin
|
||||
/etc
|
||||
/tmp
|
||||
/sbin
|
||||
/dev
|
||||
/dev/fd
|
||||
/usr
|
||||
/var
|
||||
/var/run</literallayout>
|
||||
|
||||
<para>The actual list of files is:</para>
|
||||
|
||||
<screen>-r-xr-xr-x 1 root wheel 779984 Dec 11 23:44 ./kernel
|
||||
-r-xr-xr-x 1 root bin 299008 Dec 12 00:22 ./bin/sh
|
||||
-rw-r--r-- 1 root wheel 499 Dec 15 15:54 ./etc/rc
|
||||
-rw-r--r-- 1 root wheel 1411 Dec 11 23:19 ./etc/ttys
|
||||
-rw-r--r-- 1 root wheel 157 Dec 15 15:42 ./etc/hosts
|
||||
-rw-r--r-- 1 root bin 1569 Dec 15 15:26 ./etc/XF86Config.altair
|
||||
-r-x------ 1 bin bin 151552 Jun 10 1995 ./sbin/init
|
||||
-r-xr-xr-x 1 bin bin 176128 Jun 10 1995 ./sbin/ifconfig
|
||||
-r-xr-xr-x 1 bin bin 110592 Jun 10 1995 ./sbin/mount_nfs
|
||||
-r-xr-xr-x 1 bin bin 135168 Jun 10 1995 ./sbin/reboot
|
||||
-r-xr-xr-x 1 root bin 73728 Dec 13 22:38 ./sbin/mount
|
||||
-r-xr-xr-x 1 root wheel 1992 Jun 10 1995 ./dev/MAKEDEV.local
|
||||
-r-xr-xr-x 1 root wheel 24419 Jun 10 1995 ./dev/MAKEDEV</screen>
|
||||
|
||||
<para>Don't forget to run <command>MAKEDEV all</command> in the
|
||||
<filename>dev</filename> directory.</para>
|
||||
|
||||
<para>My <filename>/etc/rc</filename> for <hostid>altair</hostid>
|
||||
is:</para>
|
||||
|
||||
<programlisting>#!/bin/sh
|
||||
#
|
||||
PATH=/bin:/
|
||||
export PATH
|
||||
#
|
||||
# configure the localhost
|
||||
/sbin/ifconfig lo0 127.0.0.1
|
||||
#
|
||||
# configure the ethernet card
|
||||
/sbin/ifconfig ed0 199.246.76.2 netmask 0xffffff00
|
||||
#
|
||||
# mount the root filesystem via NFS
|
||||
/sbin/mount antares:/DiskLess/rootfs/altair /
|
||||
#
|
||||
# mount the /usr filesystem via NFS
|
||||
/sbin/mount antares:/DiskLess/usr /usr
|
||||
#
|
||||
/usr/X11R6/bin/XF86_SVGA -query antares -xf86config /etc/XF86Config.altair > /dev/null 2>&1
|
||||
#
|
||||
# Reboot after X exits
|
||||
/sbin/reboot
|
||||
#
|
||||
# We blew up....
|
||||
exit 1</programlisting>
|
||||
|
||||
<para>Any comments and all questions welcome.</para>
|
||||
</sect1>
|
||||
</article>
|
||||
|
||||
<!--
|
||||
Local Variables:
|
||||
mode: sgml
|
||||
sgml-indent-data: t
|
||||
sgml-omittag: nil
|
||||
sgml-always-quote-attributes: t
|
||||
End:
|
||||
-->
|
Loading…
Reference in a new issue