TNOS Frequently Asked Questions

TNOS Frequently Asked Questions.

Version 1.0 Started 27th March 1995. By Mike Dent.

This version dated 1st August 1996.

Introduction.
This is the Official Frequently Asked Questions document for TNOS. This document is designed to aid the TNOS user, and prospective user in setting up and maintaining a working TNOS system.

The document will take the form of common questions relating to TNOS, complete with answers. The document will cover both the Unix and DOS versions of TNOS. Where specific differences between the versions apply, they will be noted.

This document is prepared using the text editor 'vi', with a liberal helping of cut and paste using the GPM mouse server.

If you find any mistakes with this FAQ or have any suggestions etc, please mail me:- mike@lurpac.lancs.ac.uk

Notes.
In this FAQ I make reference to the TNOS 'home' or TNOS 'root' directory. These directories are the same and refer to the directory from which the other TNOS directories are made from. You may also see '..tnos/' and can take this to mean the same.

Where I make reference to Linux specifics, this may also apply to other Unix like operating systems as mentioned in question 5 below:-
"What platforms/operating systems has TNOS been successfully compiled/run on?".



General questions and comments.

1)

Q: What is TNOS?

A: Well I will leave this one to Brian:-
Brian, ko4ks says:-

TNOS is a multi-threaded application that contains a complete implementation of industry standard TCP/IP with drivers, applications, and support for use in an RF environment, primarily the Amateur Packet Radio environment.

There are two versions, one that runs under MS-DOS/PC-DOS/DR-DOS and any multi-taskers that support virtual DOS boxes, and the other which runs as an application under Unix.

TNOS serves as a good dedicated router, firewall, email exchanger, gateway, etc.

TNOS is derived from KA9Q NOS, and has many of the same roots as JNOS, another KA9Q derivitive.

Some of the TNOS differences from JNOS:

TNOS is supported by it's author, Brian A. Lantz/KO4KS, and several Internet mailing lists.

A lot more information on what TNOS is can be found here.


2)

Q: What is the correct pronunciation of TNOS?

A: Tee-NOS, the 'Tee' is pronounced like a tee in golf. Or if you are British, like the tea in 'afternoon tea' :-)


3)

Q: Where can I obtain TNOS?

A: The latest release of TNOS can always be ftp'd from Brian Lantz's (TNOS author) machine, ftp://ftp.lantz.com/tnos/current. It can also be found at ftp.ucsd.edu in the /hamradio/packet/tcpip/incoming directory a few days after a new version is released.
For the Unix version only, you can also try sunsite.unc.edu in the /Pub/Linux/Incoming directory.
There is also a mirror site of ftp.lantz.com which you may get better performance from, Brians net link is 56k frame relay, this is a T1 link. FTP to ftp.mwmicro.com and look in /pub/mirrors/tnos/current. You will also find all the other goodies from ftp.lantz.com mirrored here.

TNOS can also be obtained from dial up BBS's for those without 'net' access. The info below is out of date, but may be helpful.

Here is some info from Mike Bilow regarding his BBS:-


Now available for FReq (1:323/107@fidonet) or download (+1 401 944 8498), at up
to 28800 bps V.34, KO4KS TNOS v2.01:


***** DOS *****

Filename       Area    Size   Date    Description
TNOS201.RDM  TCP-TNOS    2K  9-24-95* TNOS 950924v2.01: README: Instructions to
                                      assist you in chosing the proper files to
                                      download
TN201EX4.ZIP TCP-TNOS  267K  9-24-95* TNOS 950924v2.01: Same as TN201EX1, with
                                      PPP, & DIALER
TN201EX3.ZIP TCP-TNOS  260K  9-23-95* TNOS 950924v2.01: Same as TN201EX1, with
                                      SLIP, TIPMAIL, DIALER, & XMODEM
TN201EX2.ZIP TCP-TNOS  259K  9-23-95* TNOS 950924v2.01: Assorted TNOS
                                      executables with CONFERENCE BRIDGE
TN201EX1.ZIP TCP-TNOS  263K  9-23-95* TNOS 950924v2.01: Assorted TNOS
                                      executables without CONFERENCE BRIDGE
TNOS201S.ZIP TCP-TNOS 1217K  9-23-95* TNOS 950924v2.01: All TNOS release 2.01
                                      source code
TNOS201B.ZIP TCP-TNOS  228K  9-23-95* TNOS 950924v2.01: All TNOS release 2.01
                                      base files/support executables; has not
                                      changed since release 1.10
***** Linux/Unix *****

TN201DOC.TGZ TCP-UNIX   81K  9-24-95* (Tnos-2.01-doc.tgz) KO4KS TNOS for
                                      Linux/Unix 95-Sep-24, all TNOS release
                                      2.01 docs
TN201EXE.TGZ TCP-UNIX  641K  9-24-95* (Tnos-2.01.tgz) KO4KS TNOS for Linux/Unix
                                      95-Sep-24, all TNOS release 2.01
                                      executables
TN201SRC.TGZ TCP-UNIX 1048K  9-24-95* (Tnos-2.01-src.tgz) KO4KS TNOS for
                                      Linux/Unix 95-Sep-24, all TNOS release


TNOS and lots of other Linux/Dos packet programs etc can also be downloaded from BayBBS (more useful for those in the UK.) BayBBS is at +44 (0)1524 833222 . It is run by myself Mike Dent- G6PHF and also provides dial in access for licensed amateur radio operators to the WW convers and my TNOS system.
Please note, as of 22nd Oct. 1995, BayBBS is off-line at present.
4)

Q: Can I get help and support for TNOS?

A: Most certainly yes! There is a very good mailing list for TNOS help and comments, here are the details:-

Mailing Lists at lantz.com

There are several mailing lists maintained at lantz.com. All are available as regular subscriptions or digest subscriptions. Current TNOS specific mailing lists include:

Other mailing lists may be created later if need develops.

Joining a Mailing List

To join one of these mailing lists, send a mail message to listserv@lantz.com and in the data of the message include a single line "SUBSCRIBE emailaddress group", where "group" is the name of one of the above groups (minus the '@lantz.com'), and "emailaddress" is an optional name of a complete email address that you wish the subscription sent. The "emailaddress" is only necessary if you wish the subscription to go to an address other than the one you are sending the email from.

Example:

SUBSCRIBE tnos-stuff@ko4ks.ampr.org tnos-topics

Leaving a Mailing List

To leave one of these mailing lists, you use the same method of sending a mail message to listserv@lantz.com, but use "UNSUBSCRIBE emailaddress group".

Example:

UNSUBSCRIBE tnos-stuff@ko4ks.ampr.org tnos-topics

Sending to the Mailing List

To send mail to the mailing list, use the full address of the list (i.e. tnos-topics@lantz.com). When replying to email from the mailing list, make sure that you CC: a copy back to the group, to make the information exchange complete.

Help with the Listserver

For help on the listserver, use a data line of "HELP".

Differences with Digests

The names of the digest lists are the same as the regular list name, with "-digest" added to it (i.e. 'tnos-topics' becomes 'tnos-topics-digest'). All mail submissions are sent to the NON-digest address, though. Digests are formed at approximately midnight each day for the mailing lists that have had activity that day.

Archives of the Mailing Lists

Archives of the mailing list digests are available via anonymous FTP at
lantz.com in the directory '/digests'.

SPECIAL NOTE:

PLEASE!!! Do NOT subscribe from an ampr.org address UNLESS that address is either available on the Internet, or that address has a defined Mail Exchanger that is available on the Internet. If the mail fails due to an unknown route, you will be MANUALLY removed from the list. Nothing personal ;-)

Brian Lantz now has a system in operation where you can register your copy of TNOS, and receive enhanced support. Here is the information, from Brian.

You DO NOT need to pay anything for your copy of TNOS to use it for Amateur Radio or educational purposes. TNOS is free for these purposes. Any usage outside of this requires a commercial license of TNOS. For details on a commercial license, contact brian@lantz.com.

Registering TNOS is simply a way of supporting the TNOS project, and it's author. Registration DOES have it's benefits, though:

To register your copy of TNOS and become a registered user send via snail mail, the following info and a voluntary contribution (suggested minimum $25.00, in US dollars, and yes, some have given more). Upon receipt of this, you will receive verification via email, be added to the registered users database and added to the TNOS-SUPPORT mailing list (which is already in place).

Needed info:

        Hostname: (of the TNOS system)
        Email address: (addr you wish the mailing list sent to)
        TNOS Release: (your current release, example 2.02)
        Snail mail address: (just in case it's needed)

Send to:

        Brian A. Lantz
        6403 N. Paddock Ave.
        Tampa, FL  33614
        (add USA, of course, if mailing outside the US)

Visa and Mastercard not accepted. No CODs. Not available is stores. Good through this Internet offer only. Limited time, only. First come, first served......


5)

Q: What platforms/operating systems has TNOS been sucessfully compiled/run on?

A: At the date of this FAQ (see top), TNOS has been compiled or run on, most DOS systems, e.g. Microsoft, DR and PC. It works well under OS/2 and recent versions of Linux. TNOS will also run/compile with Free/BSD and with BSD/OS (BSDI).
Thanks to EA4ABB, there is a SunOS 4.1 binary of TNOS 2.02 in the /tnos/current/unix directory on ftp.lantz.com, though at time of writing it is not confirmed if this works.
To compile for BSD/OS, you should add the following make.inc to your source directory and compile.

#
# Included makefile for BSD/OS by Dave VK2KFU
#
USEELF =
INSTALL= install -c -g dialer -m 2755
CC = gcc
PATCHES = -DIS_LITTLE_ENDIAN -DUSE_SETSTACK -DBSD_RANDOM -DDUMP_CORE
SETSTACK= setsp.o
ICURSES = -I/usr/local/include/ncurses
OPTIONAL = "-DOPTIONAL="
DEBUG =  -g
LOCKDIR = /var/spool/uucp
#

Thanks to Dave Horsfell, vk2kfu@amsat.org for BSD/OS information.

6)

Q: When I type 'VERSion' at the mailbox/BBS prompt or at the 'Net>' prompt, it does not display the correct version information, or any at all??

A: If you have just compiled a new version of TNOS, you must make sure you have run the program 'mkvers' in the ..tnos/src/ directory. This will then build a new version.hlp file and place it in your ..tnos/etc/help/ directory.
Recent versions of TNOS seem to do this after the TNOS binary is made
If you are using an existing installation or pre-compiled version, then check you have the file ..tnos/etc/help/version.hlp, as this is the file which is displayed when 'VERSion' is typed.


7)

Q: When a new user logs into my BBS the first thing they get is 'HOME-BBS>'

A: You must edit the file ..tnos/etc/askhome.dat. This file will then be shown to the user before the HOME-BBS> prompt. Here is a sample askhome.dat file.


Sorry to have to ask, but this system does not know your HOME BBS!
This information is needed in order to properly send any mail to you from
users of this system.

Your HOME BBS is like your Postal Address. If you have already defined your
HOME BBS on another system, the name of that system is needed.

NOTE: only use a BBS hierarchial address, not a TCP/IP address.

8)

Q: How can I get the FBB forwarding working in TNOS?

A: To take advantage of the FBB forwarding in TNOS, you need to be running Version 2.0 or later. To set your forwarding sessions to use FBB style forwarding, you should set forward fbb-style on. If you also want the FBB compressed forwarding then use forward fbb-compression on . You should also note that the syntax of the forward.bbs file has changed completely. You can use the cnvfwd program distributed with TNOS 2.0+ releases to convert your old pre-2.0 forward.bbs file to the new format.


9)

Q: I keep seeing users idle in my BBS for long periods of time. Is there something I can do about this?

A: Yes, use the 'mbox tdisc' setting. It is in seconds, and will disconnect a user if they have been idle for greater than that time. E.g. mbox tdisc 1800 will disconnect a BBS user if they have been idle for more than 30 minutes. Also make sure you are using version 1.12 or newer of TNOS, there was a bug with the tdisc timer in earlier versions.


10)

Q: Why do my packets go out from me with the callsign 'NOCALL' ?

A: Well chances are you are running 1.13 TNOS or later. A feature was added in 1.13 to assign the callsign 'NOCALL' to ax25 mycall and ax25 user. Make sure these are set to your callsign, or at least the callsign you want.
It should also be noted that with TNOS 1.13 you should only need to do an ax25 user *if* you want it different from the 'ax25 mycall'. That bug is fixed in 1.14 and later.


11)

Q: Why does my TNOS keep crashing?

A: It has been noted that starting your servers right at the end of your autoexec.nos file i.e. your 'start' lines, can lead to a more stable system.
You should also make sure you are running a the latest version of TNOS. At the time of writing this I am running 2.10 for Unix, and it seems to be proving very stable.


12)

Q: When I telnet or ttylink into my conference bridge I do not get the *** Please login with '/n ' bit back from the server?

A: You will not see this message unless you press return *or* set convers header to on.


13)
Q: What is the best way to run TNOS, and make sure it re-starts if it crashes?

A: Well this depends on what operating system you are running TNOS under. First I will describe one way of doing it under Linux (and maybe other Unix systems), and then a way of doing it under DOS. Please note. There is another example later in this FAQ from Brian, ko4ks, that details a slightly different way of doing this. Mix 'n' Match :-) Caveat.

Linux.

This is by no means the only way to run TNOS from Linux, it is however the way I do it and it works well for me!
First you will need to make sure that TNOS is started when your machine boots. To do this I call a small script ../tnos/startnos from the /etc/inittab file. The way I do it is to start it in place of one of the VT's (virtual terminals), I choose the one under function key F7.
Note, this will depend on which style of init your system uses!
If you have a line in your /etc/inittab file to start a 'getty' process on this key, then you must comment it out, just put a '#' sign at the start of the line, for example:-

#c7:45:respawn:/sbin/agetty 38400 tty7

Now we must add a line to execute the startnos script, this looks like this:-

c7:234:respawn:/tnos/startnos /dev/tty7

The numbers above '234' after 'c7' are the run levels to start TNOS in. These may vary from system to system. Check the man page for 'init' for more details. They do however work for Red Hat 2.3.0.

Remember to replace '/tnos' with the root directory of your TNOS installation.
Here is a sample of the 'startnos' script incase you did not get it with your TNOS files (please note, this may be a slightly different startnos script to the one currently distributed in the TNOS releases):-


##########################################################################
# Sample 'startos' script to keep TNOS running if it should crash. Place
# this script in your TNOS root directory.
##########################################################################
#!/bin/bash
ps -aux | grep " ./tnos" | while read user pid rest
do
  kill -STOP ${pid} 2>/dev/null
  sleep 2
  kill -KILL ${pid} 2>/dev/null
done
/bin/rm /home/g6phf/bin/tnos/spool/mqueue/*.lck 2>/dev/null
/bin/rm -f /home/g6phf/bin/tnos/spool/mail/*.lck 2>/dev/null
cd /home/g6phf/bin/tnos
export TZ=GMT0
export TERM=console
sleep 1
exec ./tnos < $1 > $1 2>&1
##########################################################################
# In this script you must make sure to replace the root directory of your
# TNOS installation. Mine is set to /home/g6phf/bin/tnos.
# This script also does a check to make sure there is not already a TNOS
# running, if so it kills it before it restarts. 
# Thanks to Mat, dl1bjl@db0fho.ampr.org. 
# 
##########################################################################


Ok, once you are satisfied you have the script correct, and have made the changes to /etc/inittab then you can go ahead and re-read the file in. To do this type:-

telinit q

After a moment you can change to vt7 (press ALT F7) and TNOS should be running! If you type 'exit' at the 'Net>' prompt it should exit and restart again.

Occasionaly TNOS may 'lock' up all together, it does not happen often, but you can bet it will happen just after you leave on holiday, or for the weekend :-). Here is a short script that can be run from one of you startup files, I put the command:-

 
echo "Starting TNOS watchdog."
/home/g6phf/bin/tnos/nosreset &

to start it at the end of my /etc/rc.d/rc.local file, this will depend on your installation of Linux I guess and of course you will have to alter the path to your nosreset script above.

Below is the nosreset file itself.


############################################################################
# Nosreset script.
############################################################################
#!/bin/bash
# This is the nosreset script that checks that TNOS is still running, and
# if not will kill the process and restart it. NOTE!! this script assumes
# that you have the Linux kernel IP talking to TNOS over a pseudo slip link.
# It also assumes you are running TNOS with the 'startnos' script.
# See another section of this FAQ to connect Linux IP to TNOS.
# Every 5 minutes several pings are sent to your TNOS IP address from your
# Linux IP address. If 0 packets are received it assumes your TNOS has
# locked and will then find the process, stop it and kill it. Then the 
# startnos script will restart TNOS.
# A message is then mailed to you to let you know when it was restarted.
#
while test -f /home/g6phf/bin/tnos/nosreset
do
  if
    ping -q -c 3 g6phf | grep "0 packets received" > /dev/null
  then
    ps -aux | grep " ./tnos" | while read user pid rest
    do
      kill -STOP ${pid} 2> /dev/null
      sleep 2
      kill -KILL ${pid} 2> /dev/null
    done
    sleep 20
    echo "TNOS was restarted by nosreset" | mailx -s "TNOS reset" g6phf 
  fi
  sleep 300
done
##########################################################################
# Thanks again to Mat, dl1bjl@db0fho.ampr.org.
#
##########################################################################


Of course that may not be the only way to do it, but it works for me :-).

With the above two scripts I am able to make sure my TNOS system is up and running all the time without having to keep looking to see if it has crashed or locked.

DOS.

As I do not run DOS on my packet PC's here I asked for the information from a local DOS/NOS user. With DOS it is a case of adding a loop around TNOS, to make sure that if TNOS crashes and exits it will be restarted again. However if TNOS locks when it crashes this way of restarting TNOS will be of no use!


# These lines can be put in a batch file maybe called startnos.bat, and
# called from the last line in your autoexec.bat file.
# The sleep program is just a little utility to give you chance to stop
# the loop if you want to come out of TNOS.
#
:loop
n:
cd\
@echo "Control C to abort TNOS load !"
n:\sleep 6
del n:\spool\mqueue\*.lck
del n:\spool\mail\*.lck
n:\tnos\tnos
@echo " Control C to abort TNOS load !"
n:\sleep 6
goto :loop
#
# EOF

As I do not use TNOS with DOS, I cannot really add much to this.


14)

Q:Is there a command to list the total number of messages in an area (NOT just new ones).?

A: Yes the 'AS' command, lists all areas in the appropriate areas file ('areas' for users, and 'areas.sys' for sysops) in addition to the users personal area.
Sysops can also use the 'AS ALL' command, which gives the above and all USER areas, too.....


15)

Q: Why does some of my SMTP mail stay in the mail queue and not get delivered with TNOS?

A: This is probably due the the fact you have the smtp hopper code compiled into your TNOS. The smtp hopper defaults to ON, at least in 1.14 TNOS.
If the site you are mailing is down stream of a TheNet X1J type node/router, (or indeed any other router that does not handle SMTP connects) and you have a IP route set via one of these nodes, then the smtp hopper code will be trying to deliver your mail to this node!
If this is the case simply turn off the smtp hopper, smtp hopper off.


16)

Q: How do I set the ftpusers permissions and 'security' commands in TNOS?

A: The ftp security levels are very much different to those of JNOS, beware if you are converting from JNOS to TNOS! Here is a full listing:-

# TNOS FTPUSERS permissions as of Version 2.10
# 
#LABEL        DECIMAL      HEX        DESCRIPTION
#ftp_read           1   0x00000001    (Read files)
#ftp_create         2   0x00000002    (Create new files)
#ftp_write          4   0x00000004    (Overwrite or delete existing files)
#ax25_cmd           8   0x00000008    (AX.25 gateway operation allowed)
#telnet_cmd        16   0x00000010    (Non-ampr Telnet gateway operation allowed)
#netrom_cmd        32   0x00000020    (NET/ROM gateway operation allowed)
#sysop_cmd         64   0x00000040    (Remote sysop access allowed)
#excluded_cmd     128   0x00000080    (This user is banned from the BBS)
#                 256   0x00000100    (Used in PPP)
#                 512   0x00000200    (Used in PPP)
#no_sendcmd      1024   0x00000400    (Disallow send command)
#no_readcmd      2048   0x00000800    (Disallow read command)
#no_3party       4096   0x00001000    (Disallow third-party mail)
#is_bbs          8192   0x00002000    (This user is a bbs)
#is_expert      16384   0x00004000    (This user is an expert)
#no_convers     32768   0x00008000    (Disallow convers command)
#no_escape      65536   0x00010000    (Default is no escape)
#ampr_telnet   131072   0x00020000    (Ampr Telnet gateway operation allowed)
#no_linkedto   262144   0x00040000    (No '*** LINKED TO' allowed
#no_slip      1048576   0x00100000    (Disallow tipmail exit to IP)
#no_pbbs_mail 2097152   0x00200000    (Disallow PBBS mail addresses)
#no_inet_mail 4194304   0x00400000    (Disallow non-ampr mail addresses)
#no_ampr_mail 8388608   0x00800000    (Disallow ampr mail addresses)
#hold_mail   16777216   0x01000000    (Any mail entered held for sysop review)
#no_http_ip  33554432   0x02000000    (Disallow http PBBS access via IP)
#no_http_ax  67108864   0x04000000    (Disallow http PBBS access via AX25)

You can further configure the security of your TNOS system by using the security commands.

(The following commands allow you to tailor your users security level according to their connection method to your BBS)

security amprperms value
This defaults to 0, disabled. When a user logs in anonymously via telnet, i.e. they do not have a specific entry in the ftpusers file, then they first get assigned the value of 'univperm' (assuming it is set), then their permission will be set to whatever value you have this set to, as long as it is non-zero.
NOTE:- ampr/nonampr is determined by a 44.xx.xx.xx address, NOT by a .ampr.org hostname.

security ax25perms value
This defaults to 0, disabled. When a user logs in anonymously via AX25, i.e. they do not have a specific entry in the ftpusers file, then they first get assigned the value of 'univperm' (assuming it is set), then their permission will be set to whatever value you have this set to, as long as it is non-zero.

security nonamprperms value
This defaults to 0, disabled. When a user logs in anonymously via a non ampr IP address, i.e. they do not have a specific entry in the ftpusers file, then they first get assigned the value of 'univperm' (assuming it is set), then their permission will be set to whatever value you have this set to, as long as it is non-zero.
NOTE:- ampr/nonampr is determined by a 44.xx.xx.xx address, NOT by a .ampr.org hostname.

security tipperms value
This defaults to 0, disabled. When a user logs in anonymously via a TIP connection, i.e. they do not have a specific entry in the ftpusers file, then they first get assigned the value of 'univperm' (assuming it is set), then their permission will be set to whatever value you have this set to, as long as it is non-zero.

security ampronly [on|off]
When set to on and assumiung you do not allow non amprnet telnets (see ftpusers permissions above), then when a user attempt to telnet to a non 44 address, they will see the following message:-

Sorry, but only Amateur Radio IP stations can be reached from here!

Note. A message is NOT sent to sysop notifying you of the users action

With this set to off they will get a 'Permission denied' message. Or, if you use the following script, and place it in spool/cmds it will give them some further information:-

Permission denied.

Sorry, g9xxx, but access is denied :-(

Only telnets to ampr.org stations are permitted, and those are denied to non-ampr telnet sessions.

To check out your security level permissions use the 'SEC' command.

Here is the script:-


~ Denied access

Sorry, ~c, but access is denied :-(

~p 1 0 7 20
~a 2 converse
~c 1 2
~n test2
The Conference Bridge is not available to non-ampr telnet sessions.
~g common


~l test2
~a 2 telnet
~c 1 2
~n test3
Only telnets to ampr.org stations are permitted, and those are denied to
non-ampr telnet sessions.
~g common


~l test3
~a 2 ax25
~c 1 2
~n test4
AX25 connects are not allowed from non-ampr telnet sessions.
~g common


~l test4
~a 2 netrom
~c 1 2
~n test5
NETROM connects are not allowed from non-ampr telnet sessions.
~g common


~l test5
The BBS is secured against any RF access from all anonymous users.
~g common


~l common

To check out your security level perimissions use the 'SEC' command.

The script also does other things! Note. A message is sent to 'sysop' to notify you of the users actions.

security nonsecureampr < addr >
Here is what Brian has to say about this one:-

 I discovered one remaining security hole that I had, so we have a new
  subcommand of the security command, 'security nonsecureampr '. This
  sets up a single ampr.org address (44.xx.xx.xx) as being NON-SECURE for
  anonymous ampr/ax25/netrom access.

  The problem on my end was that the Linux side of my machine has an ampr
  address on its side of the SLIP connection. All connections coming from
  the Linux side of the machine come with that AMPR address. I allow logins
  to lantz.com to come into the gateway, which made them unsecured and set
  as a trusted ampr site. Now any coming this way are treated as non-ampr
  for that one address only.

security encode
This simply encodes the passwords in your ftpusers file so that they cannot be determined if somebody was to get hold of or view your ftpusers file. Please note that if you make an alteration to the ftpusers file whilst TNOS is running, then you must do a 'security encode' to make the changes take effect. 'security encode' is also done at TNOS boot time.
MD5 is the encoding method used, for those interested.

security mbsecure [on|off]
This secures your radio ports so that any anonymous user cannot gateway out on them via AX25 or netrom, this overrides any permissions set for anonymous users in the 'ftpusers' file. Please note it also overrides any 'security [ampr | non | ax25p | tip] values which are set.

security level [levelname pathstring permissions]
Allows you to set up a name for a security level, that can be used as a shortcut in the ftpusers files. The levelname can be anything descriptive. The pathstring is the same format as the third field of the ftpusers files . The permissions field is the same format as the fourth field of the ftpusers files.

Some examples:-

# Security level examples for inclusion in autoexec.nos file.
#
# set a security level called 'low' and allow the user(s) with this level
# access only to '/pub/restricted' directory with ftp read permission only.
#
security level low /pub/restricted  1
#
# set a security level called 'medium' and allow user(s) with this level 
# of access to the directory '/pub' with ftp read and write permission.
#
security level medium /pub 3
#
# set a security level called 'top' and allow user(s) with this level of 
# access to the '/' (root) directory with read/write and overwrite permission!.
#
security level top / 7

And in your ftpusers file.

################## 
# Assign a lowly security level to guest users!
guest * #low
#
# and a slightly higher level to univperm.
univperm * #medium
#
# and a level for our registered/trusted users perhaps?
g0vgs sEcret_PwoRD  #top
#
###################

From the above examples you can see it is easy to assign an easy to remember name to a specific security level. Above I have only shown examples which are useful for 'ftp' type connections, it is however possible to set up any type of security level and assign it a name, e.g. sysop, sub-sysop, guest etc. NOTE, you ,must put the hash '#' before the security level. The "security level" command (without the rest of the parameters) displays the currently defined security levels.

I should also point out that there is an addition to the ftpusers file which allows you to branch out to another file with further users/permissions in it. To do this use the line:-

#include filename

in the ftpusers file.
Where 'filename' above is the name of your 'sub' ftpusers file. Maybe called ftpusers-2 or something.
After this additional file has been scanned, and the user lookup was unsuccessful, control returns to the original 'ftpusers' file. You can have as many included files as you wish, but you cannot include a file from within an included file.


17)

Q: Is there a command in TNOS to stop certain mail areas being broadcast with the MAILFOR beacon? I have some message areas I do not want broadcasting over the air!

A: You need to use the command pbbs mailfor exclude area1 area2 area3, where area1, area2, area3 etc are the mail areas you would like excluding from the mailfor beacon text. You can check what areas you have excluded by using the command pbbs mailfor exclude.

This also works for the the output of the BBS 'ms' command too. But be warned, if you have had mail in the areas you have excluded above, and they still show up on the Mail for: line, you will have to do a pbbs mailfor now to 'flush' these out.


18)

Q: What are the subchannels used for in the TNOS BBS forwarding please ?

A: Here is what Brian had to say about this:-

If I had the time (or volunteers) to document this stuff, you'd already have the docs ;-)
An example, you should be able to fill in the blanks........

My setup has ONE port out, to ONE TNC, that forwards to many BBSs. MOST of them go out on ONE RF port.

In order to pace the traffic and better use the bandwidth, I place all those that must travel the same RF path into a subchannel together. Ones that travel ANOTHER RF path, go into another subchannel.

Then the 'forward subchannel' command allows me to restrict HOW MANY of these will be active at one time (outgoing), and how many I will reverse forward to (incoming). When a BBS has been deferred due to a maximum being reached on a subchannel, a flag is set, and when a forwarding session completes (making a slot available), the forwarding cycle is 'kicked' again (even if the 'forward timer' hasn't expired), to allow the subchannel to be 'filled' again.

BUT, no one BBS will get a second turn, until all have had their shot at it.

On mine, I set a maximum of 1 per subchannel, and this makes them all go in turn, rather than all at once.

If I had several ports with a single BBS on each, I would probably not define these BBSs as being on a subchannel; so they would not have any pacing used.

NOTE: The FBB forwarding (inbound) needs a little attention here, since it doesn't yet account for subchannels. TNOS Version 2.01 when released will fix this.


19)

Q: What does the ctlcheck program that comes with TNOS actually do ?

A: ctlcheck is a diagnostic tool used to display the raw values of a *.ctl file. It is not normally needed other than for diagnosing problems when altering code that manipulates *.ctl files.


20)

Q: I think I have found a bug in TNOS, what should I do?

A: Here are some points from Brian Lantz that should be read and digested before you send your 'bug' report to the Tnos-Topics mailing list :-)

1) DO take your time and explain the situation. DON'T assume that the reader(s) have your knowledge.

2) DO give as detailed a description as possible, indicating what actions/commands you used, the order used, the given output (if any), and the expected results.

3) DON'T send along a copy of your config files unless asked.

4) DO your own investigation.

5) DO use the trace function for the feature you are having a problem/question with, if there is one available.

6) DO double-check your config files.

7) DON'T present bug reports/questions with an attitude or when angry.

8) DON'T even bother with a report if all you can say is "it don't work!". If you follow the rest of this list, you will have FAR more to say about the situation than this.

9) DO indicate the Operating System being used, and the release version number. These can be found in the first line of output from the Command Session command 'status'.

10) DO realize that the author of TNOS CANNOT fully test/debug all portions of a program as vast as TNOS, and that some conditions MAY slip through the cracks.

11) DO be wise enough to know that everything you can do to help pin down the circumstances of failure will make it that much easier to fix the problem.

12) DON'T be afraid to ask questions.

13) DON'T expect that there are answers to all questions.

14) DON'T send bug reports/questions to the author directly, unless he has asked you to. DO send bug reports/questions to the TNOS-TOPICS mailing list.

15) DON'T send the same question/bug repeatedly.

16) DON'T *even* expect immediate resolution of problems. This support is free and you get what you pay for, sometimes ;^D

17) DON'T get discouraged if you run into problems. TNOS is very complex, with scores of complete subsystems. It is easy to enter areas where you can get lost.

18) DO provide GDB output (if you can) if you are running Unix. A 'backtrace' command's COMPLETE output can make a massive problem disappear in seconds.
(GDB is the GNU debugger, used to get better information from a TNOS crash. You have to have the de-bugging code compiled into TNOS to use this. Read the GDB man page.- ED)

19) DO read the docs before posting. Yep, SOME of the FAQs are there in the body of the new2tnx.xx files. DO take the time to see if the answer has already been given to you, before asking for it to be given again.

20) DON'T go out into the rain without your raincoat (I ran out of ones that pertained to the subject, and thought an even 20 would be nice) ;-)


21)

Q:When somebody connects to my TNOS BBS, they get connected, then get nothing else from me ?

A: This is most likely due to the fact that your LINKADDRESS and IPCALL are set the same on the port the user is connecting in on.
To overcome this you must set your ifconfig <port> ipcall and your
ifconfig <port> linkaddress to different callsigns or more usually different SSID's.

Example:-

ifconfig 2m linkaddress gb7mbb
ifconfig 2m ipcall gb7mbb-5

Here, users connecting in via ax25 would connect to gb7mbb. and all IP packets/frames would use gb7mbb-5 as the hardware address.


22)

Q:What about a sample autoexec.nos file for TNOS? ?

A: Well, ok then :-) Here is a annotated version of my autoexec.nos file that I use with TNOS under Linux.


################################################################################
# Startup file for Linux based TNOS, as used at gb7mbb.ampr.org.
# Virtually everything in this file applies to both DOS and Unix
# TNOS installations. 
# It is likely that you will have to heavily modify this sample file 
# to make it useful for your system. You have been warned!.
# Mike Dent. g6phf. July 1996. For TNOS 2.02pl2. 
################################################################################
ip address 44.131.1.158
hostname gb7mbb.ampr.org
################################################################################
# Setup ax25 params before attaches. To modify on per/port basis, use
# ifconfig port ax25 param, after attaches.
################################################################################
ax25 user gb7mbb     # callsign to use on outgoing ax25 connects from console.
ax25 mycall gb7mbb-5 # callsign for incoming ax25 connects.
ax25 retries 15      # ax25 connection retries before giving up.
ax25 blimit 6        # backoff this many times then no more. default 30.
ax25 t4 100000	     # this is the link redundancy timer for ax25.
ax25 hsize 30        # number of stations in (J)heard listing.
ax25 version 2	     # hmm, lets use AX25 version 2.
ax25 maxframe 2      # no. of outstanding frames allowed without an ACK. max 7.
ax25 paclen 256      # length of ax25 packets.
ax25 window 2048     # window size allowed on ax25 frames.
ax25 maxwait 30000   # maximum timeout in msecs of the ax25 retry timer.
ax25 timer linear    # timer is either linear or exponential.
################################################################################
# Next our tcp/ip params. global.
################################################################################
tcp window 1024	     # tcp window size in bytes.
tcp mss 432	     # maximum segment size of datagrams.
tcp irtt 6000	     # initial round trip timer in milliseconds.
tcp retries 100	     # no. of tcp retries before giving up.
tcp maxwait 30000    # maximum timeout in msecs of the tcp retry timer. 
tcp blimit 20 	     # backoff this many times then no more.
tcp timer linear     # timer is either linear or exponential.
ip hsize 22	     # max no. of entries in pbbs (IH)eard listing.
ip ttl 150	     # time to live.
################################################################################
# Attach interfaces next.
#################################################################################
# attach asy <port> - <mode> <iface> <buffsize> <mtu> <speed>
#
attach asy ttyS0 - ax25 2m 512 256 9600
attach asy ttyS1 - ax25 4m 512 256 9600
attach asy ttyS2 - ax25 70cm 512 512 19200
attach asy ttypf - slip sl0 2048 1500 38400
################################################################################
# Ifconfigs. These override global parameters above.
################################################################################
#
# ipcall sets the callsign/hwaddr to use on IP packets.
ifconfig 2m ipcall gb7mbb
ifconfig 4m ipcall gb7mbb
#
# set the mtu/window/blimit different for port '70cm'
ifconfig 70cm mtu 555
ifconfig 70cm tcp window 2048 
ifconfig 70cm tcp blimit 4 
#
# description below is displayed on pbbs (PO)rts listing.
ifconfig 2m description "144.625 local access, tcp/ip channel. 1200bd.\nsl0    :  38400 internal slip link to Linux IP."
ifconfig 4m description "70.3375 access to WC and CRV nodes. 1200bd."
ifconfig 70cm description "9k6 WW Amprnet link at 70cms."
#
# rx queue and tx queue. (refer to other documentation.)
asyconfig 70cm rxq 5 
asyconfig 70cm txq 5 
#
################################################################################
# Netrom params
################################################################################
#
attach netrom		# kind of like 'start netrom' :-)
netrom interface 4m 192	# quality to use for our netrom port. '4m' in this case.
netrom call GB7MBB	# set this to your netrom callsign.
netrom alias MBBBBS	# and this to  your netrom alias. 
netrom retries 5	# no. of netrom retries before giving up.
netrom timer linear	# timer is either linear or exponential.
netrom promiscuous on	#
#
# load in netrom routing table from disk, file netrom.sav. This file is 
# created with 'netrom save' command.
netrom load		
#
################################################################################
# Domain params.
################################################################################
domain suffix ampr.org.		# gets added to all host names etc.
domain dns on			# set on if we want to process domain queries.	
domain addserver sys2.g0uje 	# set this to your domain server.
domain cache size 40		# no. of entries to hold in memory.
domain maxwait 30		# time to wait on a domain query of your server
################################################################################
# Convers commands.
################################################################################
convers host BayBBS	# what we call our convers server.
conv entry 131		# default channel users go to from the bbs conf alias.
#
# if set 'on' the user will see "*** Please login with '/n '" when they
# first enter the conference bridge. If set to 'off' they dont get this.
conv head on		# show login info when user first enters conf.
#
# message a user gets when he has logged in with /n  . you can
# use '\n' to add more lines to your login message.
conv motd "Please avoid channel 0. The default entry channel is 131.\nInternational users, if you have a more local convers server, please use that!" 
#
conv time on		# shows time when users come on/off convers.
#
# this is the maximum amount of data (bytes) that is allowed to remain in
# queue for a user logged into the conference bridge.
conv umaxq 12000	
#
# this is the maximum amount of data (bytes) that is allowed to remain in
# queue for a host that is linked to your conference bridge.
conv hmaxq 12000	
#
# unixphf.ampr.org is the convers host I link to, and BayCONV is the name of it.
conv link unixphf.ampr.org 3600 BayCONV  
#
# sysinfo is displayed when a convers user requests '/sysinfo baybbs'.
conv sysinfo "g6phf@gb7mbb.ampr.org or mike@lurpac.lancs.ac.uk"
#
# when we type 'conf' from our console, this is the user we will be logged in as.
conv console g6phf
#
# this sets the type of filter mode. When set to accept, it will then only allow
# hosts to link in to your convers that you specifically allow.
conv filter mode accept
#
# allow *only* following hosts to link with our convers.	
conv filter unixphf
conv filter g0vgs
conv filter unix.g0vgs
conv filter ppc.g6crv
conv filter g6crv
############################################################################
# SMTP commands.
############################################################################
#
# set the smtp timer for 20 mins between processing of the smtp mail queue.
smtp timer 120 # Time in seconds
smtp quiet yes # Do not ring bell when "New mail arrives".
#
# Do not batch up mail when sending. Can cause problems with some *nix MTA's. 
smtp batch off
#
# our mail gateway.
smtp gateway gb7mbb
#
# If you have 'smtp hopper' in your compile, this may cause problems if you
# route to hosts you send mail to via IP only routers, e.g. TheNet nodes.
# I set it to off to avoid this as I route mail via a TheNet X1J node.
#smtp hopper off	# not compiled in so #'d out anyway!
#
# set the smtp delivery timeout for mail which cannot be delivered.
# return to sender after 4 days.
smtp dtimeout 96	# time in hours.
# Fast compression mode.
lzw mode fast
##############################################################################
# Some commands for the running of my BBS, gb7mbb.
##############################################################################
# set the string users get when the BBS is performing maintenance.
pbbs maintstr "Sorry, automatic BBS maintenance is in progress. Logins are disabled.\nPlease call back in a short while. (5 mins or so)."
#
# Bump users off when expire process kicks, and send them maintstr above.
pbbs maintclear on
#
# An alias for incoming connects to the BBS. No need for CR with this.
pbbs alias mobbs
#
# we act as a white pages client and server.
wpages client on
wpages server on 
wpages dest gb7ulv # where to send our WP updates.
#
# this checks our outbound mails R: lines to see if they contain the callsign(s) 
# of any BBS's that are in our forward.bbs file. If so they do not get forwarded
# out.
bull check on
#
# hold locally entered bulletins for review by sysop before forwarding.
bull hold on
#
# use the original R: line for return. You should set this to  'on' to stop
# the listing of the many R: header lines when reading bulletins. You should
# instead get the more usual 'GB7MBB!GB7ULV!GB7FCI!GB7OAR' path.
bull return on
#
##############################################################################
# Mailbox commands.
###############################################################################
#
# users get this text when they attempt a chat/tty with you.
motd "If I dont answer shortly, leave a message @gb7mbb.ampr.org, Mike"
#
# message displayed just before the 'login:' prompt.
pbbs tmsg "Please login with your callsign, and use your name for the password."
#
# motd displayed just before the 'A,B,C..Z>' prompt.
pbbs motd "For help on using this system type 'TUTOR'. For news about this \nsystem 'NEWS'. For other information type 'INFO' "
#
# set to 1 to always display  the file 'etc/motd' at logins. Comes just
# after the [TNOS-2.01-BFHIMT$] banner.
pbbs motdalways 1
#
# users idle this long (secs) are bumped off the BBS.
pbbs tdisc 1800
#
# this sets the 'Send this message (N=no)?' query on or off after users have
# finished entering a message.
pbbs sendq off
#
# log mailbox logins to spool/log/pbbs.log in this form:-
# MBOX from g6phf (Mike) on Sun, 12 Mar 95 18:02:55 UTC
pbbs log on
#
# message users see when they (B)ye from BBS. '\n' inserts carriage return & LF
pbbs mexit "\n73, Call again\nMike!"
#
# maximum session time (secs) for users of the BBS.
pbbs maxtimer 13600
#
# these define our custom commands. 
pbbs cmd MUD1 "telnet unixphf 7777"
pbbs cmd MUD2 "telnet unixphf 4000"
pbbs cmd CONV "telnet unixphf 3600"
pbbs cmd CALLUS "telnet 44.98.24.25 7373"
pbbs cmd TEMP "finger temp@gate.g6phf"
#
# this defines what we want our BBS prompt to look like. You must also include
# the commands above if you want users to see them.
pbbs prompt "?,A,B,C,CALL,CALLUS,CONF,D,E,F,G,H,I,J,K,L,M,MUD1,MUD2,N,O,P,Q,R,S,T,U,V,W,X,Y "
#
# how often (secs) to broadcast a mailfor beacon.
pbbs mailfor  timer 3600
#
#
# this will notify me if mail arrives for the pbbs 'check'. It will display
# an '@' symbol on the status bar, and play a sound.
# first turn on the alerting.
pbbs mailfor alert mode on
#
# now define the area to keep a watch on, 'check' in this case.
pbbs mailfor alert mbox check
#
# now define the sound to play! (Unix only). The sound 'alert' is defined
# in the sounds section of this autoexec.nos.
pbbs mailfor alert sound alert
#
# to clear the '@' flag on the status bar, use 'pbbs mailfor alert clear'
#
# if mail is held on my BBS for review, I want to be notified about that
# too. If my BBS is holding mail, an '!' symbol will be displayed on the
# status bar, and a sound played.
pbbs mailfor hold mode on
#
# now define the sound to play! (Unix only). The sound 'hold' is defined
# in the sounds section of this autoexec.nos.
pbbs mailfor hold sound hold
#
# to clear the '!' flag on the status bar, use 'pbbs mailfor hold clear'
#
# this adds the area prompt to the BBS for new users. Toggled with 'SET A'
# in the BBS.
pbbs newuser area on
#
# this suppresses the 'beep/bell' when listing messages that some people insist
# on inserting in subject lines.
pbbs nosubjbell on
#
# this defines wether we want the 'pbbs tdisc' idle timer to affect users 
# defined as sysop or not. Set to 'off' sysops are not affected by tdisc,
# but will be bumped off if 'pbbs maxtimer' is defined.
pbbs tdiscsysop off
#
#
#####################################################
# NO AX25 access on 144.625Mhz. As from 1st Dec 94
#####################################################
# I dont allow any ax25 connects on the UK tcp/ip channel.
pbbs noax25 2m on
##############################################################################
# NTS mail forwarding commands
##############################################################################
#
# this allows me to use a 2 letter continent designator. 'EU'.
forward tapr off
# 
# sets my hierarchical BBS address. Note, no callsign needed.
forward haddress #16.GBR.EU
#
# with 'fwdinfo' , 'rcall' and 'qth' below, my R: line looks like this:-
# R:951015/2157z @:GB7MBB.#16.GBR.EU [Morecambe] TNOS/U $:7388_GB7MBB
forward fwdinfo "Morecambe"
forward qth "TNOS/U"
#
# defines callsign in R: line.
forward rcall "GB7MBB"	
#
# strip off smtp headers on outbound NTS mail.
forward smtptoo off
#
# use FBB type batched forwarding.
forward fbb-style on
#
# use FBB compression for forwarding too.
forward fbb-compression on
#
# define the callsign used for outgoing mail forwarding.
forward mycall GB7MBB
#
# set to 'on' to keep original BID in R: lines.
forward bid on
#
# set to 'on' to add a local MID to R: lines.
forward mid off
#
# set a forwarding session off each hour.
forward timer 3600 	# time in seconds.
#
##########################################################################
# Set TNC paramaters
##########################################################################
# set our KISS parameters for our TNC's. I use Tiny-2's.
# 
param 70cm 1 24         # TXdelay
param 70cm 2 64         # PPersist
param 70cm 3 3          # Slottime
param 70cm 4 3		# Tailtime
param 2m 1 30
param 2m 2 50
param 2m 3 5
param 2m 4 5 
param 4m 1 25
param 4m 2 50 
param 4m 3 5 
param 4m 4 5
#
# use device driver-level queuing, only good for *nix TNOS's I think.
param 70cm min 255
param 2m min 255
param 4m min 255
###########################################################################
# FTP commands.
###########################################################################
#
ftpmax 3 	# maximum number of incoming FTP sessions allowed.
ftype image	# set default transfer type. image or ascii.
ftptdisc 900	# FTP idle disconnect timer in seconds.
#############################################################################
# TCP and IP access stuff.
##############################################################################
# Allow 44 stuff of course.
tcp acc permit 44/8 1 8888
# Allow some other stuff.
tcp acc permit 148.88/16 1 8888
tcp acc permit 194.80.36/24 1 8888
tcp acc permit 194.80.32/24 1 8888
tcp acc permit 127.0.0.1 1 8888
# anything else is ignored.
# load in our ip access rules from file 'ipaccess'.
source ipaccess
#
##############################################################################
# Misc commands.
##############################################################################
#
ip hport sl0 on		# show ip hosts heard on slip port, 'sl0'.
#
# set the console prompt to display the directory we are in. My console prompt
# looks something like this:- '/home/g6phf/bin/tnos> ' depending on the
# directory I am in.
prompt dir
#
# this sends our tracing output to the screen 'under' Fkey 9.
strace on
#
# this sets the permission that users connecting via netrom/ax25 get. See
# security section of FAQ.
security ax25 1441835     
#
# when a user attempts to telnet to a non ampr host, i.e. non 44.x.y.z. With 
# 'security ampr on' set, a message will be sent telling them :-
# 'Sorry, but only Amateur Radio IP stations can be reached from here!'
# see security section of FAQ for more explanations.
#
security ampr on
#
security ftpgid 900
security ftpuid 507
# this uses the 'callbook' at pi8esk for 'CALL' look ups.
callserver pi8esk
#
statline on quiet	# I like the status line, but don't like the bell!
history 30		# keep 30 entries in command buffer. Up/Down arrows.
#
# 'gone' refuses incoming ttylink (port 87) and BBS 'o' chats.
gone
#
source routes   # this reads in my routes file 'routes' off disk.
#
# log to 'net.log' file.
log net.log
#
##############################################################################
# TNOS in X.
##############################################################################
#
# this defines the hosts we will allow remote X connections from. Dont forget
# to 'start x'. We use the dpwish script 'status' for this.
x hosts 44.131.1.166 
#
##############################################################################
# Unix sound params.
##############################################################################
# sound command to execute when somebody attempts chat.
sound define chat "/usr/local/bin/play /home/audio/au/mission-impos.au"
# sound command to execute when alerted mail comes in.
sound define alert "/usr/local/bin/play /home/audio/wav/alert1.wav"
# sound command to execute when there is mail held.
sound define hold "/usr/local/bin/play /home/audio/wav/windows/space.wav"
#
##############################################################################
# Chat commands. Most are new to 2.02.
##############################################################################
#
# I set the chat attend to on. Then use 'gone' and 'here' from cron to decide if
# I am in the shack or not, depending on time.
chat attend on
#
# I want to screen incoming chat requests. This gives me chance to accept,
# or deny the page.
chat screen on
#
# this is the text a user gets if I decide to deny their chat request!
chat denystr "Sorry, looks like the SysOp is busy now. Please leave a message."
#
#
# time in seconds to wait before giving up on chat request.
chat retries 40
#
# play the defined 'chat' sound when a user pages us. This is defined with sound
# command, see section above.
chat screensound chat
#
#############################################################################
# I am using the nntp server beta code in TNOS. 2.02pl2
#############################################################################
nntp auto on
nntp quiet 1
##############################################################################
# START servers at end of file!
##############################################################################
start ax25
start telnet
start ftp
start netrom
start smtp
start remote
start finger
start tutor
start info
start convers
start news
start time
start pop3
#start ttylink
stop ttylink
start callbook
start x
start trace
start nntp
#
# the tcpgate below will transfer incoming IP frames for our TNOS system on
# port 80, to unixphf.ampr.org port 80(my linux kernel) so I can use the
# httpd there.
start tcpgate 80 unixphf:80
##############################################################################
# cron commands. New to 2.02
##############################################################################
#
# Now 2.02 has 'cron' I have done away with the 'at's and now use cron.
# load the cron entries from spool/crontab, this is done by starting cron.
start cron
#
# Thats all folks!
##############################################################################


23)

Q: What is the purpose of the AREAS.SYS file ?

A: I'll leave this one to Brian...
The AREA file defines which public areas are available to the non-SYSOP users. The AREAS.SYS file defines ALL of the public areas, even those that are NOT available to the normal users. Such areas would be areas that you place outgoing PBBS mail that is to be forwarded, etc.

Since the AREA.SYS is THE file that defines which are public areas, it MUST (at least) have all of the areas listed in the AREAS file.


24)

Q: When I read messages in my TNOS BBS, I still see lots of R: lines ?

A: This is probably due to the fact you do not have bulletin return on in your autoexec.nos file.


25)

Q: How do I make TNOS broadcast its netrom node table?

A: You must use the command netrom interface <interface> <quality > v
Where 'interface' is the name of your interface, and 'quality' is the minimum netrom quality to broadcast nodes at.


26)

Q: What are the TCP port numbers of the NEWS, INFO and TUTOR servers in TNOS ?

A: NEWS server is on port 3597
INFO server is on port 3598
TUTOR server is on port 3599


27)

Q: How do I use the 'tcpgate' feature in TNOS ?

A: The tcpgate facility in TNOS allows you to re-direct incoming IP packets, destined for a particular port, to a different host. To make this clearer here are some examples:-

1) You may not want to use the in built TNOS ftp server, so you could re-direct incoming ftp connections to your Unix ftp server, or another machines ftp server.
NOTE I do not presently do this myself, some people have had varying degrees of success doing this. FTP uses a control and a data stream, this may cause problems with tcpgate. Caveat!
2) You may run a MUD (Multi User Dungeon/Domain) as I do, and want to allow connects to it, using your TNOS ip address. The MUD may run on a different machine or on the same one.
3) You might like to run a http server (though TNOS has its own built in now) but allow connects using your TNOS ip address.

Here is how you would start a tcpgate port for a web server running on another host:

start tcpgate 80 unixphf.ampr.org:80

this tells TNOS to route any packets it receives for itself on port 80 to unixphf.ampr.org on port 80. As it happens unixphf.ampr.org is the kernel side of my TNOS pty.

Advantages to running tcpgate:-
1) All incoming connections that are redirected to a different host via tcpgate, e.g. MUD, httpd, will use the TNOS ip timers etc, and not the Linux/unix kernel timers, which are more suited to fast networks such as ethernet, giving better throughput to these services.
2) The host that you are re-directing to, may be on another network, e.g. non ampr-net, and you may want to keep this other network seperate/secret from your TNOS users.


28)

Q: How do I use the cron facility in TNOS?

A: The cron facility in TNOS is based upon the Unix cron command and crontab file. Basically it allows you to schedule TNOS events for certain times or days/months etc. it is much more flexible than the 'at' command in TNOS and other NOS's.
Cron relies on a file to read its schedule of events from, this is the ..tnos/spool/crontab file. Here is an example of the crontab file I use at gb7mbb.ampr.org.

#
###############################################################################
# TNOS 2.02 crontab file. This file is spool/crontab .
###############################################################################
# 'here' and 'gone' are for incoming tty sessions and BBS 'o'.
# at 5:30 pm I am here!
30 17 * * * here
#
# and 9:15 pm I am gone!
15 21 * * * gone
#
# do a tcp clean to reset any tcp  sockets in FIN WAIT 2 state every 3hrs.
# probably not needed these days, but just for good measure.
00 0-23/3 * * * tcp clean
#
# This is a special for my log renaming program run from crontab. This makes 
# sure TNOS starts the logging again after I have moved the original log file.
# Runs each day at midnight.
00 00 * * * log net.log
#
# at 04:00 do a wpages update sorting the wpages files.
00 04 * * * wpages kick
#
# at 05:00 kick out wpages updates to BBS(s) specified in 'wpages destination'
00 05 * * * wpages update now
#
# at 05:30 expire mail areas depending on settings in
# spool/expire.dat and also delete mail marked for deletion.
30 05 * * * expire now
#
# on the 1st of each month, prune the personal mail areas.
00 00 1 * * pbbs prune
#
# save the netrom table at 01:00 each day in spool/netrom.sav
00 01 * * * netrom save
###############################################################################

There are 6 fields to each crontab entry:-

*              *            *ave the netrom table at 01:00 each day in spool/netrom.sav
00 01 * * * netrom save
###############################################################################

There are 6 fields to each crontab entry:-

*              *            *une

So this says at midnight, on the 1st of each month, issue the TNOS command 'pbbs prune'

Here is an excerpt from one of the ever invaluable new2tnx.xx files! 'new2tn2.02' to be precise.

To start the cron process, you do a 'start cron'. This will read the 'spool/crontab' file for cron entries. Each entry is of the form:

min hour day month dayofweek command

The fields 'min', 'hour', 'day', 'month', and 'dayofweek' can be in several forms. A range of numbers (from 1 to 6) can be specified as '1-6'. A list of numbers (1, 5 and 9) can be specified as '1,5,9'. Lists and ranges can be combined, so '1-5,9' is the same as '1,2,3,4,5,9'. Ranges can be followed with a '/xxx' to specify an increment to use other than 1. For example, a field of '0-12/2' would be the same as '0,2,4,6,8,10,12'.

Minutes can be 0-59, hours can be 0-23, days can be 1-31, months can be 1-12, and dayofweek can be 0-6 (0=Sun).

Additional, the 'months' and 'dayofweek' fields can be specified using the first three characters of their names ('Sun', 'Sep', 'Dec', 'Thu', etc.). These can be combined with ranges and lists, as 'Dec,2-4,July' or '2-12/2,Jan'.

As with most all of the TNOS config files, comments can be included in the crontab file, by starting a line with a '#', or by using a blank line.

Example: '0 5 * * * expire now' will run the 'expire now' command at 5:00 a.m. everyday.

The 'cron' Command Session command has several subcommands: 'add', 'delete', 'clear', 'list' and 'load'. You can use the 'load' command to re-load a crontab on demand when you have made changes or to load an additional file, if given an optional filename. If none is given, it loads the 'spool/crontab' file. You use the 'add' command to add individual entries manually. The 'list' command show you what cron is analyzing. The 'delete' command allows you to remove an entry manually. The 'clear' removes ALL entries.

Once started, it will do a 'clear', a 'load', and then parse the queued entries, executing any that meet the criteria. Then the CRON server will goto sleep for 1 minute, and try again. The time is NOT syncronized to the first second of each minute, so it could fall anywhere within the minute, depending on when it was started.

29)

Q: Can you enlighten me on all the different callsign options in TNOS?

A: TNOS is very flexible and because of this allows you many ways to tailor the callsigns your system uses for different jobs. Below is a list of most of the callsign options with a brief explanation.

arp dupcall     used to allow arp replies broadcast to a 2nd address.

ax25 infocall   call for direct incoming connects to the info server.

ax25 mycall     the main AX25 callsign of your TNOS system.

ax25 newscall   call for direct incoming connects to the news server.

ax25 rosecall   an alias, used with Rose, which is commonly used for
                the call of the entry Rose switch (a commonly typed call).
                The alias '@' gets substituted with this call.

ax25 ttycall    call for ax25 ttylink, direct chat/talk session to sysop.

ax25 tutorcall  call for direct incoming connects to the tutorial server.

ax25 user       call for outbound Command Session ax25 connects.

convers alias   alias call for 2nd incoming connects to the conference bridge.

convers mycall  call for direct incoming connects to the conference bridge.

forward mycall  call used for outbound forwarding sessions.

netrom alias    the alias used for the netrom protocol.

pbbs alias      alias call for 2nd incoming connects to the PBBS.


Questions and comments relating to hardware issues.

1)

Q: Will TNOS run on a PC with a 8088 or 80286 processor. ?

A: Well I will leave this one to Brian:
Brian says:-

"It will run, but only if you use a stripped down version (less features compiled in), and have almost NO drivers, etc loaded into memory. TNOS must exist in conventional memory, and on processors earlier than a 386, you had no support in the CPU for altering memory maps to maximize the conventional memory. I ran TNOS on a 286 for several years, I just needed a good "shoehorn" to get in what features I needed."

So there you go. Of course the above *only* applies to the DOS version of TNOS, as Linux needs at least a 80386 or greater processor.


2)

Q: Do PI, SCC etc cards work with TNOS ?

A: In short, NO, not directly with TNOS but they will work with the later Linux kernels, you can then attach a pseudo slip link from TNOS to the kernel and so in effect link the PI card to TNOS.


Questions and comments relating to software/operating system.

1)

Q: When I try to compile TNOS under DOS, all goes well until right at the end, then I get something like 'ERROR: Group DGROUP exceeds 64k limit.' ??

A: You have tried to compile too many features into your version of TNOS. Edit your config.h file and remove some features.


2)

Q: Does TNOS compile/work with FreeBSD?

A: As from version 1.14 of TNOS there has been support for FreeBSD.


3)

Q: What advantages, if any, are to be had from running TNOS under Unix ?

A: Well there are several advantages that I know of, but there are probably a few more too!

1) TNOS for Unix will be more stable and run for longer periods than its Dos counterpart.
2) I have noticed that Linux TNOS when compared to Dos TNOS, on the same specification hardware will perform faster.
3) Running TNOS under Unix will allow yourself and your users to take advantage of several Linux/unix services, such as ftp, smtp, telnet, httpd, online muti-user games etc.
4) Using TNOS under Unix you will not run into any memory restictions such as you would with the Dos version. You have no need to worry about what options you compile into your version of TNOS i.e. how large it is.


4)

Q: How do I go about installing TNOS?

A: Rather than re-invent the wheel I will leave this to Brian!
Brian says:-

TNOS Installation

Installation of TNOS

There are two releases of TNOS, so choose the proper set of instructions.


MS-DOS Installation

Installation under MS-DOS is very simple, but does require

To install TNOS/Dos:

  1. Pick a 'root' directory for TNOS to exist in (\nos, etc.)
  2. Create the 'root' directory with 'md'
  3. Copy the tnos2xxb.zip file into the 'root' directory
  4. Unzip the support files with 'pkunzip -d tnos2xxb.zip'
  5. Unzip the executable file with 'pkunzip -d tn2xxex?.zip'
  6. Modify the 'autoexec.nos' file for your needs, or convert one from another variant of xNOS
  7. Test it out, by typing 'tnos'
See these instructions on compiling your own copy of TNOS...


Linux/FreeBSD Installation

Installation under Unix is very simple, but does require

To install TNOS/Linux:

  1. Pick a 'root' directory for TNOS to exist in (/nos, /usr/local/nos, etc.)
  2. Create the 'root' directory with 'mkdir'
  3. Copy the Tnos-2.xx.tgz file into the 'root' directory
  4. Unzip the distribution file with 'gunzip Tnos-2.xx.tgz'
  5. Untar the distribution file with 'tar xvpf Tnos-2.xx.tgz'
  6. Modify the 'autoexec.nos' file for your needs, or convert one from TNOS/Dos or another variant of xNOS
  7. Test it out, by typing 'tnos'

Before connecting TNOS/Linux to a TNC:

You should look in the /etc/rc.d directory and see if you have an rc.serial file. If you do, examine it, as it MAY need to have some changes made to it before the serial ports will be ready for use.

To connect TNOS/Linux to the Linux kernel:

  1. Add an attach line to the 'autoexec.nos' file for an interface to talk to the kernel, like:

           attach asy ttypf - slip linux 1024 1024 38400

    This adds an interface named 'linux' to TNOS, which it 'thinks' is a SLIP connection at 38400, but is actually a 'pseudo-terminal' link into the Linux kernel

  2. Now add the kernel side. The easiest way is to add this as a part of the Linux boot process. Since there are at least two different init programs in use on Linux, this can be done by either:
    • Adding an 'rc.tnos' file to your /etc/rc.d/rc.misc directory (if it exists) and doing a 'chmod 755' to it.
    • Adding these commands to the /etc/rc.local file, instead
    Either way, you need something like the following example to connect the TNOS process to the Linux kernel, allowing a non-ampr and an ampr address for both sides of the link. Of course, you MUST supply your own addresses ;-)
    #
    # Setup for TNOS/Linux gateway
    #
    # 44.98.24.1  is the TNOS ampr IP address (ko4ks.ampr.org)
    # 163.125.16.254 is the TNOS internet IP address (gw.lantz.com)
    # 44.98.24.25 is the linux box's AMPR IP address (linux.ko4ks.ampr.org)
    # 163.125.16.1 is the linux box's internet IP address (lantz.com)
    
    echo ""         # blank line
    echo "Initiating SLIP connection to TNOS/Linux..."
    /usr/net/bin/slattach -s 38400 -p slip /dev/ptypf &
    sleep 1         # allow time for slattach to catch up
    /usr/net/bin/ifconfig sl0 broadcast 44.255.255.255 pointopoint 44.98.24.1 \
          mtu 576 44.98.24.25
    /usr/net/bin/route add 44.98.24.1 sl0
    /usr/net/bin/route add 163.125.16.254 sl0
    /usr/net/bin/route add -net 44.0.0.0 netmask 255.0.0.0 gw 44.98.24.1
    
    NOTE: while other values probably CAN be used for MTU in the ifconfig line here and the 'attach' line in the autoexec.nos file, these are KNOWN to work.
  3. Then, execute the rc.tnos script from your favorite shell, and restart TNOS. To test, you should be able to ping TNOS from the kernel, and the kernel from TNOS. If you have difficulties at this point, check your interface netmasks and routing statements

Setting TNOS/Linux to come up automatically in it's own virtual console:

This example will use the 7th virtual console (tty7), that is selected with the key combination. To use another console, you will need to change this example.
  1. Check to make sure that the tty7 console device exists, with a:
                  ls -la /dev/tty7
    
    You should see something like the following:
             crw-rw-rw-   1 root     system     4,   7 May 13 20:43 /dev/tty7
    
    If you do, skip the next step....
  2. Create the tty7 device with 'mknod /dev/tty7 c 4 7', then verify as described in the previous step.
  3. Verify that the 'startnos' file in your TNOS 'root' directory is set to use the proper 'root' directory. The 'cd' line may need to be modified.
  4. Add an entry to your /etc/inittab file. Since there are two different possible formats for this file, use the example below that resembles the existing lines in your inittab file:
    • tn:234:respawn:/nos/startnos /dev/tty7
    • tty7:con80x25:/nos/startnos /dev/tty7
    Also, note that you will need to change the pathlist for the startnos file, if you do not have '/nos' as your TNOS 'root' directory. If you have the first style of entry, look at the other entries at the '234' field. Some use '2345' or other combinations here. Look at the 'getty' line for tty2, and use the same value as in that entry, to be safe.
  5. Restart your init process (usually with 'init Q'), then to get to it

Installing the source tree for TNOS/Linux also requires:

  • about 19 Meg more additional disk space
  • a copy of the current source tree (Tnos-2.xx-src.tgz)


Compiling your own TNOS

Building the source tree for TNOS in either DOS or Unix is nearly identical.

There ARE a few prerequisites, though...

    DOS:
    • A Borland compiler - both 3.0 and 3.1 are known to work
    • Others SHOULD compile, but no promises!
    Unix:
    • TCL (tclsh)
    • GCC compiler (probably works with others)
    • GNU make (might work with others)
    • Complete header files (for Linux, this means that the Kernel sources need to be installed).
The actual compile is as easy as 1-2-3.........
  1. Set up for proper makefile...

    • DOS:
      'premake.bat'
      (Sets up for proper makefile, and creates dummy make.inc and
      ddepend files)
      
    • Unix:
      'premake'
      (Sets up for proper makefile, and runs build-make.inc)           
      
      Other functions may be added to the premake scripts at a later time.

  2. [Optional step] Site-specific configuration
    This customization should NOT include editing the Makefile. Instead, all customizations should be placed in a file named 'make.inc', which will be included within the Makefile's processing, and commands in make.inc will be treated the same as if they were in the Makefile. This way ALL changes specific to your site are in make.inc, and will not have to be RE-DONE when you upgrade to later releases of TNOS.

    Edit the make.inc to your needs. Anything that you WOULD change in the Makefile, instead override it in make.inc by including it in make.inc.

    For example, if you wish to use a different directory for installing TNOS other than the default of '/nos' (or '\nos' for MSDOS), you could add a new NOSDIR (and NOSDIRSTR, for MSDOS) line in make.inc. For example, if you wanted to change the default directory (under DOS) to '\tnos' add 'NOSDIR=c:\tnos' and 'NOSDIRSTR=c:/tnos' to the make.inc file.

    MSDOS NOTE: Backslashes must be used for NOSDIR and forward slashes used for NOSDIRSTR.

    Please consult the Makefile for what things you COULD change in make.inc, what values are valid, and what affect certain changes might have on other items. Consider the Makefile as the reference for make.inc changes.

    All changes/additions to the make.inc file should be made NOW, before moving to the next step.

  3. Make it....
               make doeverything
Can't make it any easier! ;-)

NOTE: the 'make' utility MAY be named something different than 'make' on your system, depending on the compiler, etc. For instance, some DOS users may need to use Borland's real mode make 'MAKER' and BSD users have GNU's make named 'gmake'. I can't help you here, it should be named 'make' ;-)

The compiles SHOULD be clear of errors and warnings. UNIX NOTE: If the SETSTACK default (as set up in the Makefile) is used, there will be ONE warning in ksubr.c (about variable `stktop'). This warning is harmless, and will ALWAYS occur if SETSTACK is not being used.


5)

Q:1) How do you attach a TNC to TNOS/LINUX? and how do you tell LINUX and TNOS that you have a KISS TNC attached to COM1, COM2, COM3, and COM4?

A: You have to use the correct syntax for the attach line in your autoexec.nos file. An example:-

	attach asy ttyS0 - ax25 iface 1024 256 9600
You must use the linux device name of the serial port you are attaching. In the above case 'ttyS0', is your first serial port, COM1 in DOS terms, or 0x3f8. Just put a '-' hyphen after the port, this field is not used. Next comes the protocol to use, 'ax25'. Then put your interface name, 'iface' in the above example. Next '1024' is the buffer size, then '256' is the MTU, and lastly '9600' is the TNC to serial port speed.
If you where using COM2 you would use ttyS1, COM3 is ttyS2 and COM4 is ttyS3.


6)

Q: How do I set Linux up to talk to TNOS on the same machine?

A: To do this you must add certain lines to your Linux startup files to add a pseudo slip port to talk to TNOS. First I shall give details of the necessary lines that must be added to your startup files, and then the lines which will need to be added to your TNOS startup file (autoexec.nos).

Please note. Brian, ko4ks, shows another similar way of doing this above. Brian's way is more suited if your TNOS system is to be connected to a network, other than the Amprnet e.g. the Internet. The way I detail below assumes that your machine is stand-alone, and not connected to an external network (other than the Amprnet).

########################################################################
# Usually these lines can be put in one of the rc.* files found in     #
# the /etc/rc.d directory, at least that is the case for the Slackware #
# Linux distriution. I recommend the file /etc/rc.d/rc.inet1, though   #
# rc.local is an alternative.					       #
# Add these lines to the bottom of the file.			       #
########################################################################
#
# First we must set up a pseudo slip port at the Linux kernel side to
# talk to linux. If this is your only slip port on your Linux machine
# it will become 'sl0'. If you already have a slip port configured on
# your machine, say to talk to a modem or another pc, then this port
# will become 'sl1'. Your will need to know this for later. We will assume
# that it is your only slip port, 'sl0'.
#
/sbin/slattach -v -s 38400 -p slip ptypf &
#
# OK, that is the port attached, now we must wait a while for it to get a
# hold before we can configure it.
#
/bin/sleep 1
#
# Right that should have done it. We now have a slip port 'sl0' attached
# to the kernel. The -v indicates verbose, so we can see everything is
# ok, the -s is the speed 38400, the -p is the port, ptypf in this case
# and the ampersand is to put the command in the background.
#
# Next we shall configure it and assign it an IP address. You must
# have seperate IP addresses for TNOS and Linux. Make sure you have
# these entries in /etc/hosts also.
#
/sbin/ifconfig sl0 linux.g6phf.ampr.org up
#
# Ok we have now assigned the Linux kernel IP stack with its own
# IP address and set it in an 'up' or working state.
# Next we must add a route to TNOS down the pseudo slip link, 'sl0',
# so the kernel IP knows how to reach it.
#
/sbin/route add g6phf.ampr.org sl0
#
# Right now the kernel IP knows how to reach TNOS, we should tell
# the kernel how to reach the other 44.x.y.z addreses.
#
/sbin/route add 44.0.0.0 gw g6phf.ampr.org sl0
#
# That should do it. We have added a route to all 44 addresses via the
# gateway 'gw' of g6phf.ampr.org (TNOS) down sl0.
# If you wanted to add any other routes to non 44 addresses, you would
# do it in the same way, e.g.
# /sbin/route add 148.88.0.0 gw g6phf.ampr.org sl0
#
# NOTES: If you paste the above file into one of your rc.* files
# remember to change g6phf.ampr.org to your TNOS hostname and
# linux.g6phf.ampr.org to your Linux hostname. These hostnames will
# also need to be in your /etc/hosts file, and your ../tnos/domain.txt.
########################################################################

Ok, now we have configured and setup the Linux IP stack to talk to TNOS via a pseudo (internal) slip link. We used the device /dev/ptypf for the port 'sl0', we shall now use the other end of this slip link /dev/ttypf for our interface within TNOS.
Below are the necessary lines for your ../tnos/autoexec.nos file.

#####################################################################
# Lines needed in autoexec.nos file for Linux TNOS this allows TNOS #
# to talk to the Linux IP stack and visa-versa.			    #
#####################################################################
#
# First we must attach the port. Put this attach line with your other
# attach statements.
#
attach asy ttypf - slip kernel 1024 512 38400
#
# As you can see the format is very similar to your other attach  
# statement(s). /dev/ttypf is the other end of the pseudo  
# slip port from /dev/ptypf, the Linux kernel end. 'slip'
# is of course the protocol used, 'kernel' is the name of the interface
# I have chosen, you can of course call this 'sl0' or whatever you like.  
# 1024 is the buffer size, 512 the MTU of the port and 38400 the speed.
#
# Now we must add a route to the Linux IP stack down out port 'kernel'.
#
route add linux.g6phf.ampr.org kernel
#
# Make sure your hostname and IP address are in your ../tnos/domain.txt
# file. If we want other people to be able to access your Linux IP, be
# it for smtp, ftp or whatever, then it is best if your TNOS will answer
# ARP queries for it. So we need to advertise that fact. We use 'proxy'
# arp to do that.
#
arp publish linux.g6phf.ampr.org ax25 g6phf 2m
#
# In the statement above replace linux.g6phf.ampr.org with the hostname
# or IP address of your Linux kernel, replace g6phf with your ax25
# callsign, and replace '2m' with the interface name of your radio port.
# If you have several radio ports you may need to arp publish your
# Linux address on each port. I have 2 more entries like this:-
# arp publish linux.g6phf.ampr.org ax25 g6phf 4m
# arp publish linux.g6phf.ampr.org ax25 g6phf 70cm
#
########################################################################

Ok that should do it, you should now be able to sucessfully communicate between TNOS and your Linux kernel. Test it by trying a ping or better still telnet between the two. If it fails make sure you have a kernel with SLIP compiled in, (check /var/adm/messages or watch your system bootup messages) also make sure TNOS has SLIP in it and that you have the speeds set correctly at each end.
NOTE. You will have to reboot your machine for the changes in rc.local to take effect. I recommend typing them in by hand (logged in as root) at the Linux prompt first to check you have everything correct.


7)

Q:What time/date server do I need to run on Unix so local users can use the RDATE server command in TNOS/JNOS to update their clocks??

A: You can use the time server built into TNOS, (assuming it is in your compile.) just type start time.


8)

Q: I am having trouble compiling TNOS with Slackware 2.3.0 any ideas ?

A: If the compile fails very near to the start and assuming you have done the symlink as outlined in the 'readme' with the source ln -s makefile.lnx Makefile, you must make a small change to Makefile. About 2 screens down the file:-

#######################
#  Compiler Variables #
#######################

#
# Define whether or not you are using GCC 2.6.x which support ELF and a.out
#
USEELF = 1
# Use this for GCC 2.5.x or for 2.6.x a.out-only compiler setup
#USEELF =

You need to un-hash the #USEELF = and hash out the USEELF = 1 line. So it should look like this:-
#######################
#  Compiler Variables #
#######################

#
# Define whether or not you are using GCC 2.6.x which support ELF and a.out
#
#USEELF = 1
# Use this for GCC 2.5.x or for 2.6.x a.out-only compiler setup
USEELF =

Now, with TNOS 2.01 (and possibly later versions, you must look further down the Makefile, about line 162 and you will see:-

 # if you are using GCC 2.7.0, you need this line.....
 OPTIONAL = "-DOPTIONAL=__attribute__ ((unused))"
 # otherwise, use this one....
 # OPTIONAL = "-DOPTIONAL="

This should be changed for:-

 # if you are using GCC 2.7.0, you need this line.....
 #OPTIONAL = "-DOPTIONAL=__attribute__ ((unused))"
 # otherwise, use this one....
 OPTIONAL = "-DOPTIONAL="

This is of course assuming you are using GCC 2.6.3 as comes with Slackware 2.3.0.

However if it fails on the curses.c file, then you will need to remove your ncurses package, 1.8.6. , use pkgtool to do this. Then you will need to get the ncurses package from an earlier Slackware release and install this. To do this put the package ncurses.tgz in your root directory and use the installpkg program. At present (as of TNOS 2.0pl2) you will need ncurses 1.8.5 to compile TNOS. You can ftp the ncurses Slackware 1.8.5 package from ftp://lurpac.lancs.ac.uk/tnos, the package is 'ncurses.tgz'.


9)

Q: Why can I not connect to my Unix TNOS system from a computer on the same LAN ?

A: This is probably due to the fact that you are not publishing your TNOS IP address via the Unix kernel IP, thus TNOS will never receive ARP broadcasts for its own a ddress. This is easily fixed by adding a line in your rc.local or rc.inet1 file (or wherever you choose to put it depending on your Linux/unix installation.
It is usual to assign a non 44 IP address to TNOS too, when working with a network/internet connection. This is assigned to the TNOS end of the pseudo slip link to the kernel. You should refer to Brian's setup details in Software section, Q-4 for more details of this type of setup.
Assuming you have TNOS talking ok to the kernel, but cannot access TNOS from other machines on the ethernet/network, then you need to add the following line:-

# Line to add to your /etc/rc.d/rc.local or rc.inet1 file.
#
echo "Publishing TNOS IP address"
/sbin/arp -s 192.129.16.99 00:00:c0:99:1a:1c pub
#
# Needless to say you *must* replace the IP address and hw address of the
# network card above.

You must also have IP_FORWARDING enabled in your Linux kernel. This is set in the make config part of building a kernel.


10)

Q: How do I apply patches to the TNOS source (Unix) ?

A: First make sure you have the patch utility. Assuming you have this then the easiest way is to 'cd' to your source directory and do the following:-

patch -p1 -l -s < xxxxx

where xxxxx above is your patch file to be applied.
For more information on patch see the patch man page.


11)

Q: How do I apply the patches to my DOS sources for TNOS ?

A: The patch utility for DOS can be found on ftp.lantz.com in /tnos/misc or the mirror site of ftp.mwmicro.com in /pub/linux/tnos/misc.
It is also available from:- ftp://pc.usl.edu/pub/msdos/unixisms/patch12.zip


12)

Q: I can't make my function keys work properly with TNOS under X ?

A: Ok, here is some info from John Ackermann on how he solved it.

John says:-
The function key problem with TNOS under X has to do with the fact that the terminfo entry for xterm is seriously broken in many distributions (I know it is in Slackware through at least 1.2.0).

Following is an "xterm.tic" souce file for my hacked version that restores fkey functionality. Run it through tic to generate the new database file, and the problem should be solved in xterms (or rxvts) opened thereafter.

BTW -- this problem drove me nuts for almost a month. It was only sheer luck that led to me finding it; the way the config files and docs for X are scattered around makes it great fun to track down problems like this.

John

-- John Ackermann AG9V Internet: jra@ag9v.ampr.org Packet: AG9V@N8ACV.#DAY.OH.USA

xterm.tic (from /usr/lib/terminfo, run 'tic xterm.tic' to compile and install):

xterm|vs100|xterm terminal emulator (X Window System),
	am, km, mir, msgr, xenl, xon,
	cols#80, lines#25,
	bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub1=\b, cud=\E[%p1%dB,
	cud1=\n, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
	cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
	dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H,
	ht=\t, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\n,
	is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l, kbs=\b,
	kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	rc=\E8,
	rev=\E[7m, ri=\EM, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l,
	rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
	rs2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E<,
	sc=\E7, sgr0=\E[m, smcup=\E7\E[?47h, smir=\E[4h,
	smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3k,
	kf1=\E[11~,kf2=\E[12~,kf3=\E[13~,kf4=\E[14~,kf5=\E[15~,
	kf6=\E[17~,kf7=\E[18~,kf8=\E[19~,kf9=\E[20~,kf10=\E[21~,

13)

Q: Is it possible to have TNOS trace to a seperate xterm in X ?

A: As of version 2.02, TNOS now has some builtin X support. Below is some details of a way of doing this with pre 2.02 TNOS.
This can be done, thought it may seem a little messy.
You must first make sure you have the trace server running in TNOS
start trace

Then, from your xterm you wish to trace to, you must telnet to your TNOS host/ip on port 1236.
One the session is established you can issue the command:-
trace <iface> <mode> !
The '!' tells it to attach the output to the current session.
e.g.:-
trace 2m 111 !
This would trace your '2m' port with input and output (ASCII dump) to your current session or xterm.

TNOS 2.02 and later, has support for X builtin. I hope to make this a part of a future FAQ!


14)

Q: How come the 'fkeys' do not work in TNOS with Unix ?

A: The 'fkey' command is not yet supported in TNOS/U.


15)

Q: When I start TNOS (Unix) I see the following message, or something very similar...'Can't lock /dev/ttyS0: No such file or directory' ?

A: By default (stock executables) TNOS looks for lock files in '/usr/spool/uucp'. If this directory does not exist, then you will see the above error. To cure the problem, either create the directory or make a link to an existing directory. If you are using a Slackware Linux distribution you you probably will not see this error, but Red Hat, and probably others does not have '/usr/spool/uucp'. In this case you could do the following (as root):-

cd /usr
ln -s /var/spool spool

If you compile your own TNOS, look in the Makefile for the section:-

 # This defines the directory that lock files are expected. Uncomment only ONE!  # This one for Linux
 LOCKDIR = /usr/spool/uucp
 # This one for BSD
 #LOCKDIR = /var/spool/lock
 # This one for BSDI
 #LOCKDIR = /var/spool/uucp

Here you can define your own lockfile directory.


Mike Dent . mike@lurpac.lancs.ac.uk. v1.0 1st August 1996.