Welcome to comp.unix.i386 (AKA Frequently Asked Questions)

Conor P. Cahill cpcahil at virtech.uucp
Sat May 12 08:54:29 AEST 1990


This is the first posting of this sort for this group.  Please review
it and send comments, additions, suggestions, corrections, etc to
uunet!virtech!cpcahil.  There are several items that I have not yet
had the time to research, so if you have the info, feel free to send it
to me. Let me know what you think...

Welcome to the comp.unix.i386 newsgroup.  This newsgroup was founded 
to perpetuate discussions of the various unix systems running on the
Intel 80386 architecture.

This article contains the answers to some Frequently Asked Questions
often seen in comp.unix.i386.  Users are directed to read the monthly 
Frequently Asked Questions posting in comp.unix.questions and the 
assorted postings in news.announce.newusers.

This article includes answers to:

	 1. What is this group for?
	 2. Which Unix should I buy?
	 3. Is there a BSD port for the 386 available anywhere?
	 4. What hardware works with brand X Unix and/or X11
	 5. How do I rewind or retension a cartridge tape?
	 6. How do I get a second serial port working?
	 7. How do I get fast serial line throughput with stock asynch ports?
	 8. Is there a port of X11 R3/4 available for whatever?
	 9. What are good intelligent multi-port serial card solutions?
	10. Where do I get troff from?
	11. Why doesn't vi work on large files?
	12. How do I increase my ulimit?
	13. How do you set up a port for both dial-in and dial-out access?
	14. List of frequent changes made to code inported from net to get
	    it to work correctly on 386/ix/ESIX/SCO Unix, etc.
	15. How do I setup a global environment variable that even gets set
	    in the /etc/rc*/* scripts.
	16. How do I get more than 8 virtual terminals to work on the console?
	17. Why do I get the error "ps: unlink() error" every once in a while?
	18. How do I set up more than 4 partitions on the disk drive
	19. Why do I run out of inodes on some filesystems when I know I don't
	    have that many files?
	20. What is the minimum hardware for running Unix on a 386?
	21. Will a caching controller be a good investment?
	22. How many users can I run on my 386?
	23. What is the bandwidth of an AT Bus?
	24. Can Unix make use of memory in 16 bit AT bus slots?


Before I start on the answers, I will state that there is NO GUARANTEE as 
to the correctness and/or appropriateness of these answers.  If you intend
to try one, BE SURE TO HAVE A BACKUP of your system first.

My current system is Interactive's 386/ix version 2.0.2.  I have tested 
most of the responses on this system.  If you find that another system 
requires a different response, please send me mail explaining what is 
required on your system (you might also want to tell me the OS and version).


1. What is this group for?

	This group was formed to discuss the various implementations of UNIX
	on the Intel 386 architecture.  This includes SCO Unix, 386/ix,
	ESIX, Dell, Bell Tech (now Intel) Unix, Microport Unix, and, of
	course, AT&T and any others that I have forgotten.
	
2. Which Unix should I buy?
	
	This is a hard question.  Few people have access to all of the
	available Unix implementations and without that access it is 
	hard to be able to recommend any one over the other.

	Considerations should include the following:

	Price:
					OS		Dev	X
		Esix 
		Bell Tech/Intel
		Dell
		386/ix
		SCO Unix
		Xenix


	Compatibility

		With the exception of Xenix, all of the current 386/486 
		offerings support the Intel Application Binary Interface
		and will therefore run the same application software.  

	Performance

		Special performance offerings for each group will be listed
		below.  Like anything else in this posting, if you have
		information to add, send email to uunet!virtech!cpcahil

		Interactive  	High performance Disk Driver with the Fast
				File System gives significant performance
				gains over standard file system.

		ESIX		Also has some form of a Fast File System. I
				don't have any real data on this product.

		Interactive	X11R3 server is reputed to be the fastest
				and most stable in the 386 market.

			
3. Is there a BSD port for the 386 available anywhere?

	No.  However, System V Release 4.0 will have many BSDisms including
	symbolic links, job control, BSD file system, sockets (implemented 
	on top of streams).  It will also contain the SunOS memory mapped
	files, the Korn shell, and many other nifty things.

	The bad news is that you probably won't see any on the market 
	until 4Q90/1Q91.  The first to hit the market will probably be
	Intel or Interactive.

	BSD 4.4 will support the 386 architecture as a base system.  This
	means that vendors will have a base BSD system that could be used
	to make a BSD binary release for this architecture.  There are
	several reasons why this probably won't occur:

		1. SVR4 will be enough BSD to satisfy most people

		2. BSD kernel would have to be modified to support the 
		   386 ABI or else it would be closed out of a major 
		   portion of the 386 market.

		3. This is a brand new port and it can be expect that
		   there will be significant problems with the stability
		   of any new product.  This puts it around 2 or 3 years
		   behind the other 386 Unixs in this respect.

		  
4. What hardware works with brand X Unix and/or X11

	The correct answer to this is a recommendation to call the
	distributor of the X11 that you intend to buy.  The list of
	devices changes all the time and attempting to maintain a list
	here would be ludicrous.

5. How do I rewind or retension a cartridge tape?

	This depends upon the OS and tape device.  The standard at&t 
	distribution includes the tapectrl() program (it is even documented
	in the 386/ix manuals), but most of the 386 unix products do not
	provide it.  The next place to look is the tape driver
	manufacturer.  Archive does provide a "ctape" program which can
	perform this function.
	
	If your OS manufacturer doesn't provided it and your tape
	manufacturer doesn't provide it, a "ctape" program written by
	Buster Irby is attached at the end of this posting.

6. How do I get a second serial port working?

	The information in this section applies to any of the UNIX SV/386
	releases.

	The asy file in /etc/conf/sdevice.d contains the kernel configuration
	information for the standard asynchronous ports.  The file should 
	look something like:

		asy	Y	1	7	1 ....
		asy	N	1	7	1 ....

	This shows that the first asy is enabled, while the second is 
	disabled (the N in column 2).  Change this file to:

		asy	Y	1	7	1 ....
		asy	Y	1	7	1 ....

	and rebuild the kernel using kconfig or /etc/conf/bin/idbuild as
	appropriate for your system.  Be sure to check the interrupt number
	and i/o port addresses to ensure they are correct and don't conflict
	with other devices.  See sdevice(4) for more info.

7. How do I get fast serial line throughput with stock asynch ports?

	The stock serial ports usually will drop characters when run at
	high speeds with incomming data.  The best way to fix this is to
	add the "FAS" driver to your system.  (FAS stands for Final 
	Asynch Solution).  This driver was posted to alt.sources and
	comp.unix.i386 in March of 1990.

	The Readme for the FAS driver suggests that you also replace the
	16450 uart chips on your asynch card with 16550s (I think the 
	cost runs around $20).  The 16550s provide a 16 byte FIFO which
	allows operation at high speeds without loosing characters.

8. Is there a port of X11 R3/4 available for whatever?

	X11R3 is available from all of the 386 UNIX (not Xenix) 
	distributors.  There are no releases fully based upon X11R4 
	yet.

9. What are good intelligent multi-port serial card solutions?

	This is yet another religous issue.  The following cards are 
	hyped to be good performance cards (in alphabetical order):

	Bell Tech (now Intell)
		BT has three serial port solutions: ICC, ACE, and HUB. 
		The ICC card looses data at incomming speeds > 19200. It 
		locks up about once or twice a week, but is easily restarted
		since BT provides a program that can reset the card without
		rebooting the system.  For normal terminal operation the
		card is satisfactory.  Price was around $1500 when I bought
		it a couple of years ago. I have no experience with the
		ACE or HUB cards.

	Computone
		Computone provides a series of serial port solutions.  I
		have no experience/pricing info on these cards.

	Digiboard 
		Digiboard provides a series of serial port solutions.  I
		have no experience/pricing info on these cards.

	Equinox
		Equinox has two serial port solutions: the Megaport 12, and
		Megaport 24.  Each board is reputed to be capable of running
		all ports at full 38400 simultaneously. The 24 port cards
		runs around $1200.  Installation is a snap, no jumpers to
		set, no interrupts required for the board.   The board
		can be installed to use memory between 640K and 1 MB for
		communications between the board and the system.
		The board runs fine.  Input/output port sharing is supported.

	Maxspeed
		Maxspeed has an 8 port card that will run any of the ports
		at speeds up to 38.4K. The card retails for 795, but is 
		usually available at $500 to $550.  I lost data when 
		receiving data as speeds > 9600 baud.  VPIX did not 
		run correctly on my wyse 60's.  I contacted customer
		support and got the response "it works fine on other
		machines".
		Other than the vpix problem I had this board provides
		good support for 8 terminals/printers at a low price.  

	SpecialX
		SpecialX provides a series of serial port solutions.  I
		have no experience/pricing info on these cards.

	
10. Where do I get troff from?

	You can but the Documenters Workbench package from your 
	Unix distributor, or a substitute package from a third party 
	venor.

	The problem with the standard packages is that they do not support
	most of the currently available printers in troff mode.

	The third party packages seem to fill this niche quite well.
	These include:

		Eroff 			$795
		SoftQuad Publishing	???
		Jetroff			$100

	I have only used Eroff and it works quite well.  I have heard good
	words about SoftQuad and Jetroff.
	
11. Why doesn't vi work on large files?

	There are two possible problems.  The first problem may be
	that you are running into a ULIMIT problem.  See the discussion
	under question 12 to figure out how to change/correct it.

	If this is not the probem, you may be running into a bug/feature
	of some VIs.  The problem is that there are compiled in limits
	as to the number of lines in the data file. 
	
	This problem is known to exist in the following Unix packages:

		AT&T System V Rel 3.2
		Bell Technologies System V Rel 3.2 (was ok in 3.1)

12. How do I increase my ulimit?

	For those of you that don't know, ULIMIT is the system imposed
	limit on the size of a file in blocks.  This value usually
	defaults to 2048(1MB) or 4096(2MB).  

	1. If your desired limit is > 12288(6MB):

		Edit /etc/conf/cf.d/mtune to change the following line:
			ULIMIT        	3072	2048	12288
		to:
			ULIMIT        	3072	2048	xxxxx

		where xxxxx is the limit you desire.

	2. Edit /etc/conf/cf.d/stune to add/change the following line:

		ULIMIT	xxxxx
	
	   where xxxxx is the limit you desire.

	3. Edit /etc/default/login to delete the ULIMIT line.

	4. Rebuild the kernel and reboot.
	

13. How do you set up a port for both dial-in and dial-out access?
	There are two ways to do this.  Most intelligent boards provide
	two devices for every port: one with and one without modem
	controls.  The modem control ports are used for getty, while
	the corresponding non-modem control lines are used for cu,
	uucp, kermit, etc.  This is the easiest mechanism to configure
	and use (provided the device driver works properly).

	The second solution is to use the uugetty software. uugetty
	is a replacement for getty that uses uucp/cu locks to control
	access to the port.  In order to work properly,  the port must
	have modem control support.

14. List of frequent changes made to code inported from net to get
it to work correctly on 386/ix/ESIX/SCO Unix, etc.
	
	This will be built up over time.  Right now I have nothing
	to put in here.

15. How do I setup a global environment variable that even gets set
in the /etc/rc*/* scripts.

	/etc/init reads the /etc/TIMEZONE file at start up time.  The
	first 5 or so variables in this file are placed into the global
	envionment for all processes started by init (this includes the
	rc scripts, cron scripts, etc).  In addition many OS scripts
	will "source" this file.

16. How do I get more than 8 virtual terminals to work on the console?

	I haven't done this myself (a 19" X display kind of makes virtual 
	terminals obsolete), but the following should work:

	Assuming you want new_max number of vt's (new_max must be <= 15) you can
	do the following....

	a.  Modify the NKDVTTY line in /etc/conf/cf.d/mtune to look like:

		NKDVTTY       	8	8	new_max

	b. Add the following entry to /etc/conf/cf.d/stune:

		NKDVTTY		new_max

	c. reconfigure the kernel

	d. add new devices to /dev.  The device names and numbers should be as 
	   follows:

	   Major device number:	Value in 6th column of the "kd" entry in 
				/etc/conf/cf.d/mdevice file.  (On my system
				it is a 5).

	   Minor device numbers are generated using the following mechanism:

		/dev		VT		Minor
		entry		number		Device
						Number

		vt00 		 1 		  0
		vt01 		 2		 32
		vt02 		 3		 64
		vt03		 4		 96
		vt04		 5		128
		vt05		 6		160
		vt06		 7		192
		vt07		 8		224
		vt08		 9 	 	 16
		vt09		10		 48
		vt10		11		 80
		vt11		12		112
		vt12		13		144
		vt13		14		176
		vt14		15		208

	    These numbers are based upon my interpretation of the VTINDEX()
	    macro in the /usr/include/sys/vt.h system include file.

	e. Add the appropriate entries to /etc/conf/cf.d/init.base

	f. reboot the system

17. Why do I get the error "ps: unlink() error" every once in a while?

	This error is caused by the ps program being unable to remove
	the /etc/ps_data file.  This is usually a permissions problem
	on /etc or /bin/ps.  The files and/or directories should
	be set with the following modes:

	drwxrwxr-x  20 root     sys         3968 Apr 29 08:36 /etc
	-r-xr-sr-x   1 root     sys        21472 May 22  1989 /bin/ps

	In english:
		/bin/ps must be mode 2xxx (set-gid)
		/bin/ps must have the same group as /etc (usually sys)
		/etc must be group writable

18. How do I set up more than 4 unix partitions on the disk drive

	This is slightly different if you are talking about the 
	boot drive as opposed to the second drive. 

	For the boot drive, use the installation software to set up
	the root (and /usr, if you are combining them) partition as
	you need it to be.  Then place the rest of your disk into
	the last partition.

	For the second drive, use the system administration shell
	to set up the disk and set up the first partition as you 
	want it to end up.  Place the rest of the disk into a single
	partition.

	The rest of this applies to either disk.  I will show you the
	steps required to add 3 partitions on the first drive.

	a. Make a backup of your system!!!

	b. Make sure you made a backup of your system!!!

	c. modify the /etc/inittab so that your system boots up into
	   single user mode.  To do this you change the initdefault 
	   line to be something like:

		is:s:initdefault:

	   Note the 's' between the first set of colons.

	d. reboot the system

	e. Look at the /etc/partitions file and determine the name
	   of the big partition you created.  For my system this was:

		usr2:
		partition = 3, start = 129808, size = 1187914,
		tag = USR, perm = VALID

	   Since we want to break that partition up into smaller
	   partitions, we need to delete it from the disk.
	   the remainder of the disk.  The following command is used:

		/etc/mkpart -p usr2 disk0

	   The "disk0" comes from the first line in the /etc/partitions
	   file which contains the header information for the disk drive.  If
	   you are working on the second disk drive you will find a second
	   device stanza header just like the one for disk0: somewhere in
	   the middle of the file.

	   When you run mkpart you will probably get some message saying
	   that your changes won't take effect until you rebbot.  This is
	   ok.  You don't need to reboot yet.

	f. Now you must edit the /etc/partitions file to set up the
	   partition stanzas for your new partitions and delete the
	   stanza for the /usr2 partition.  I added the following 
	   entries:

		a:
		partition = 3, start = 129808, size = 243600,
		tag = USR, perm = VALID

		b:
		partition = 4, start = 373408, size = 311978,
		tag = USR, perm = VALID

		c:
		partition = 5, start = 685386, size = 469768,
		tag = USR, perm = VALID

		d:
		partition = 6, start = 1155154, size = 162568,
		tag = USR, perm = VALID

	   The key parts of these entries are the label, partition
	   number, start, and size.  Be sure that your values do not
	   collide and that the start of each successive partition is
	   equal to the summation of the start of the current partition
	   and it's size.

	g. Now to make all of the new partitions run the following
	   commands:

		/etc/mkpart -P a disk0
		/etc/mkpart -P b disk0
		/etc/mkpart -P c disk0
		/etc/mkpart -P d disk0

	h. reboot the computer.  Use the command "uadmin 2 0" to 
	   halt the system from single user mode.

	i. Make the file systems for each of the partitions:
	   
		mkfs /dev/rdsk/0s3 243600
		mkfs /dev/rdsk/0s4 311978
		mkfs /dev/rdsk/0s5 468768
		mkfs /dev/rdsk/0s6 162568:63000
	   
	   Note that since the /d partition is to be my news partition
	   I have overridden the default number of inodes created on 
	   the filesystem.

	j. Label the file systems:

		labelit /dev/rdsk/0s3 a disk0
		labelit /dev/rdsk/0s4 b disk0
		labelit /dev/rdsk/0s5 c disk0
		labelit /dev/rdsk/0s6 d disk0

	k. Modify /etc/fstab.  Delete the entry for /usr2 and add
	   entries for the new file systems.  My new /etc/fstab file
	   looks like:

		/dev/dsk/0s3	/a
		/dev/dsk/0s4	/b
		/dev/dsk/0s5	/c
		/dev/dsk/0s6	/d

	l. If desired, change the /etc/inittab file initdefault 
	   entry back to what it was before.

	m. run "telinit 2" or "init 2" (or 3 for those of you
	   with a networked)

	All done.

19. Why do I run out of inodes on some filesystems when I know I don't
    have that many files?

	It's a known bug. Corrected in AT&T's 3.2.1 etc..., ISC 2.02,
	and in some binary patches, previously posted here, for
	Microport 3.0e and ISC 2.0 (and Microport SV/AT). If you
	have it, write hate mail to your supplier's expensive QA
	department... It has been known for years.

20. What is the minimum hardware for running Unix on a 386?

	A 386SX, 2 MBytes (comfortable if you are running Xenix386,
	which has a less stupid swapping policy, a bit tight with
	System V), a 40 MByte disc (Unix will take about 20 of those)
	with an avg. seek time of 28 msec or better, a monochrome
	adapter and screen. You can have this for little over $1000
	mail order nowadays. Using RLL is advisable, and does not
	cost you more.

21. Will a caching controller be a good investment?

	The question is not easy to answer. Some believe that
	you'd better just add the same memory to central memory
	and expand the buffer cache. On many machines that have
	a limit of maximum 16 megs of physical memory this cannot
	not be done, if you already have the maximum.

	Remember though that the cache must be not volatile or
	write thru, or you in the absence of an UPS your disc
	contents could be horribly trashed.

22. How many users can I run on my 386?

	On a suitably configured (read: multiple fast discs, ESDI
	or SCSI controller, many MBytes of RAM), quite a lot,
	depending on many factors. At least a dozen. As many as
	as three dozen doing light sw developement or similar things.

23. What is the bandwidth of an AT Bus?

	Over 5 MBytes per second. As an IO-memory bus, that's still
	plenty. Most peripherals don't go over 1 MByte per second.
	As a CPU-memory bus, no way.

24. Can Unix make use of memory in 16 bit AT bus slots?

	Yes, but the slowdown is really impressive. Don't do it.
	When you buy your machine, make sure that you can put in
	1MBit chips, and that you can stuff at least 8MBytes on
	the motherboard or the 32 bit memory board without buying
	anything extra, and that you can go all the way to 16 MBytes
	(or what you see as your maximum) without throwing away
	any chips that are already installed.


*************************** CTAPE SHAR *************************************

#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create:
#	ctape.1
#	ctape.c
# This archive created: Sat Feb  3 00:10:50 1990
export PATH; PATH=/bin:/usr/bin:$PATH
if test -f 'ctape.1'
then
	echo shar: "will not over-write existing file 'ctape.1'"
else
cat << \SHAR_EOF > 'ctape.1'
.PU
.TH ctape 1 local
.SH NAME
ctape \- cartridge tape utility program
.SH SYNOPSIS
.ll +8
.B ctape
[
.B \-erq
] [
.B device
]
.ll -8
.SH DESCRIPTION
Ctape allows the user to execute cartridge tape commands from
the command line.  Three options are available, 
.B \-e 
causes the tape to be erased, and
.B \-r
retensions the tape, and
.B \-q
selects the quiet mode (no diagnostics).
If neither the -e or the -r option is specified, 
the tape will be retensioned.  If a <device> is named
on the command line, that device will be used, otherwise
/dev/tape will be used.
.PP
If the erase option is specified, there is a 5 second
pause before the command is executed to provide the
user time to change his(her) mind.
.br
.SH "FILES"
/dev/tape
.br
/dev/ntape
.SH "SEE ALSO"
mt(7), wt(7)
.SH "DIAGNOSTICS"
Usage: ctape [ -erq ] [ <device> ]
.br
Unable to open device \'<device>\'
.br
Erasing tape
.br
Retensioning cartridge
.br
device error, <errno>
.br
.SH "BUGS"
None found, yet.
.SH "CAVEAT"
This is a very hardware specific utility, which is only
known to work with the Wangtek tape driver supplied
with 386/ix 2.0.2.  
.SH "AUTHOR"
Buster Irby 
.br
rli at buster.irby.com
SHAR_EOF
fi
if test -f 'ctape.c'
then
	echo shar: "will not over-write existing file 'ctape.c'"
else
cat << \SHAR_EOF > 'ctape.c'
/*=============================================================================
                  ctape.c - cartridge tape utility program

                            rli at buster.irby.com

     This program is copyright (c) 1990, Buster Irby, and as such, you
     are hereby granted the right  to  alter, break, change, disclose,
     distribute,  erase,  fix, modify, publish, reproduce, use, or not
     as you see fit.  No rights reserved.

=============================================================================*/
#include  <stdio.h>
#include  <ctype.h>
#include  <fcntl.h>
#include  <sys/wtioctl.h>

     extern int  errno;       
     extern char *optarg;
     extern int  optind;

#define   TRUE      1
#define   FALSE     0

/*-----------------------------------------------------------------------------
     Name:     ctape - cartridge tape erase/retension utility program
     Syntax:   ctape -er [device]
               -e        erase tape
               -r        retension tape (default)
               [device]  is an optional raw tape device name,
                         the default tape device is /dev/tape.
-----------------------------------------------------------------------------*/
main( argc, argv )
int  argc;
char **argv;
{
     char *p_tape;
     char *pname;
     int  c;   
     int  c_tape;
     int  f_quiet;
     int  tape_cmd;

     tape_cmd = RETENS;                           /* Default command         */
     pname = argv[0];                             /* Program name            */
     f_quiet = FALSE;
     while(( c = getopt( argc, argv, "erq" )) != -1  )
     {
          switch( c )                             /* Parse command options   */
          {
               case 'e':
                    tape_cmd = ERASE;
                    break;
               case 'r':
                    tape_cmd = RETENS;
                    break;
               case 'q':
                    f_quiet = TRUE;
                    break;
               default:
                    usage( pname );
                    break;
          }
     }
     if( optind < argc )                          /* Parse tape device       */
          p_tape = argv[ optind ];
     else 
          p_tape = "/dev/tape";
     if(( c_tape = open( p_tape, O_RDWR )) == -1 )
     {
          fprintf( stderr, "%s: Unable to open device '%s'\n", pname, p_tape );
          exit( 1 );
     }
     if( !f_quiet )                               /* Display diagnostics     */
     {
          switch( tape_cmd )
          {
               case ERASE:    
                    printf( "Erasing %s\n", p_tape );
                    break;
               case RETENS:
                    printf( "Retensioning %s\n", p_tape );
                    break;
          }    
     }
     if( tape_cmd == ERASE )
          sleep( 5 );                             /* CAUTION: Saftey valve   */
     if( ioctl( c_tape, WTQICMD, tape_cmd ) == -1 )
     {
          fprintf( stderr, "%s: %s device error, %d\n", pname, p_tape, errno );
          exit( 1 );
     }
     exit( 0 );
}

usage( pname )
char *pname;
{
     fprintf( stderr, "%s: [ -erq ] [ device ]\n", pname );
     exit( 1 );
}
SHAR_EOF
fi
exit 0
#	End of shell archive
*************************** END CTAPE SHAR *************************************



-- 
Conor P. Cahill            (703)430-9247        Virtual Technologies, Inc.,
uunet!virtech!cpcahil                           46030 Manekin Plaza, Suite 160
                                                Sterling, VA 22170 



More information about the Comp.unix.i386 mailing list