diff options
Diffstat (limited to 'en_US.ISO8859-1/articles/diskless-x/article.sgml')
-rw-r--r-- | en_US.ISO8859-1/articles/diskless-x/article.sgml | 358 |
1 files changed, 358 insertions, 0 deletions
diff --git a/en_US.ISO8859-1/articles/diskless-x/article.sgml b/en_US.ISO8859-1/articles/diskless-x/article.sgml new file mode 100644 index 0000000000..1a52f033e8 --- /dev/null +++ b/en_US.ISO8859-1/articles/diskless-x/article.sgml @@ -0,0 +1,358 @@ +<!-- + The FreeBSD Documentation Project + + $FreeBSD$ +--> + +<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [ +<!ENTITY % articles.ent PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Articles Entity Set//EN"> +%articles.ent; +]> + +<article> + <articleinfo> + <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> + + <legalnotice id="trademarks" role="trademarks"> + &tm-attrib.freebsd; + &tm-attrib.3com; + &tm-attrib.microsoft; + &tm-attrib.sun; + &tm-attrib.general; + </legalnotice> + + <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.example.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.example.com</hostid> across a Ethernet. The second + system is a 486DX2-66. I set up 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> + </articleinfo> + + <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 <quote>net-boot</quote> 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 something goes wrong. 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 &tm.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 /tftpboot +# +# 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 &man.inetd.8;. To do this, get the + process ID of <command>inetd</command> with <command>ps -ax | grep inetd | grep -v + grep</command>. Once you have it, send it a <literal>HUP</literal> signal. Do this by + <command>kill -HUP <pid></command>. This will force <command>inetd</command> 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 <filename>/etc/bootptab</filename> (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" pgwide="1"> + <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 <quote>ethernet</quote>.</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 its 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 set up the IP addresses correctly, the addresses above + are my own.</para> + </note> + + <para>Create the directory <filename>/tftpboot</filename> on the server it will contain the + configuration files for the diskless systems that the server will serve. + These files will be named <filename>cfg.<replaceable>ip</replaceable></filename> where <replaceable>ip</replaceable> is the IP + address of the diskless system. The config file for <hostid>altair</hostid> is + <filename>/tftpboot/cfg.199.246.76.2</filename>. The contents is:</para> + + <programlisting>rootfs 199.246.76.1:/DiskLess/rootfs/altair +hostname altair.example.com</programlisting> + + <para>The line <literal>hostname altair.example.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 <hostid>altair</hostid> 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>If you are not using &man.devfs.5; (which is the default + in FreeBSD 5.X), you should make sure that you + do not 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: +--> |