[comp.unix.aux] Comments from someone using A/UX

liam@cs.qmc.ac.uk (William Roberts) (08/09/88)

In article <15131@apple.Apple.COM> phil@apple.apple.com.UUCP (Phil Ronzone) writes:
>Suggestions and comments solicited. Those suggestions and comments based
>on actual use of A/UX will be listened to ... :-) :-)

Here are the first 4 reports of problems etc found at QMC. So
far we have been sending them to the A/UX support people in the
UK who have been giving us some answers, but this was a come-on
I couldn't refuse:
NB. Most of the questions have been answered.
==========================================================
A/UX Beta Report
QMC Computer Science
Week Ending: 27/5/88


1. Sash won't run under Multi-Finder.

Sash pops up a dialogue box to say that the memory it needs is occupied.
Ideally Sash should shut-down Multi-Finder before starting AUX, rather
than simply give up. [Earlier problems with corruptions to the "Set
Startup..." dialogue cannot now be repeated]

2. Missing Manual Page

There is no online manual page for "sysinitrc(1M)", despite several
cross-references to it.

3. FSCK Problem

Using /etc/inittab to cause sash to boot multi-user by default,
answering the second file system checking question with Y always results
in "CANNOT READ BLOCK 1: BAD BLOCK", even though when subsequently
logged in as root the same fsck command from /etc/bcheckrc works
correctly and fsck's our /tmp filestore as expected.

4. Term dumped core

The term utility dumped core in mysterious circumstances which we were
not able to repeat. We also notice that the result of compiling term as
per the makefile in /usr/lib/mac/examples/term gives a binary which
differes considerably from /usr/toolboxbin/term.

5. A/UX Handling of Unknown Interrupts is Not Sensible

When we booted A/UX with the EtherPort II card fitted and connected to
the network, but A/UX not configured to use it, A/UX reported "Missing
interrupt handler" for every packet. This is admittedly unfair
treatment, but A/UX could take better care of itself.

General Comments:

We have a workable A/UX in the 10 Megabytes we allowed ourselves, and
have successfully used dd to transfer whole disk images onto other
machines. Time taken for the 40 Megabyte transfer is roughly 8 minutes
when a block size of 1024b (= 0.5 Megabytes) is used. This results in
long bursts of (external drive) disk activity interspersed with similar
bursts of nothing: when we tried to run two dd processes connected by a
pipe the effect was approximately the same - can A/UX not overlap its
transfers on the SCSI bus? Attempts to use larger dd block sizes (4096b,
2048b) resulted in I/O errors during the first read attempt. In the
absence of the EtherPort II driver, we have not been able to use NFS.


Questions Arising:

1. How can an MFS filestore be made, so that we can use the "mfs"
utility?

2. Where is there documentation on the A/UX toolbox routines?
==========================================================
A/UX Beta Report
QMC Computer Science
Week Ending: 3/6/88


1. NFS mounts happen too late.

The mounting of NFS filesystems happens so slowly that it is
possible to login before the remote mounts have complete, in
which case many of the path directories are not hashed (by csh)
because they weren't ready in time. This was fixed by changing
inittab to use "bootwait" instead of "wait" for our rc.mount
script (basically just line_sane followed by mount -vat nfs).

2. NFS mounting is very very slow

The mount command takes intolerably long for each NFS filesystem.
This is particularly annoying given that we have to wait for it
to finish before we allow logins, and that we mount a large
number of filesystems (more than 6).

3. The default IP broadcast address is not the Berkeley default

The default IP broadcast address is hostpart = all ones, in our
case 42.255.255.255, whereas our other machines expect the
Berkeley(?) convention of hostpart = all zeros, i.e. 42.0.0.0
To achieve the desired effect we have to make an explicit
ifconfig call which sets the broadcast address to 42.0.0.0

4. /etc/NETADDRS has no apparent effect

The information in the /etc/NETADDRS file has no apparent
effect on our system, nor is it mentioned in the autoconfig(1M)
and ifconfig(1M) manual pages to which NETADDRS(4) refers. This
came to light after we tried changing the hostname and
broadcast address in this file.

5. NFS mounts require an explicit rsize parameter

The A/UX default NFS read-size is too large for the A/UX RPC
software and has to be manually reduced to 1024 before NFS
works reliably. Typical symptoms include dying while trying to
ls a large remote directory. NB: rsize=2048 was too big.

6. Toolbox problems

We have lost the ability to run A/UX toolbox programs such as
rez, sample and term. The latter dump core ungraciously, but
rez produces a useful diagnostic before expiring gracefully.

  % make %sample
          /usr/toolboxbin/rez -i /usr/lib/mac/rincludes sample.r
  SysError(23)
  pc = 0x1002653a (ROM = 0x10000000 -> 0x10040000)
  Fatal error in Toolbox
  *** Error code 1

  Stop.

According to pg 156 of the A/UX ToolBox Mac ROM Interface
manual, SysError 23 means "package 6 not present". Restarting
the toolboxdaemon has no effect.



General Comments:

Once the rsize is reduced enough, NFS seems to be working
reliably. Losing the toolbox is a disaster, so we are delaying
the A/UX installation until it is solved; in any case, we are
waiting on the installation of thin-ethernet cabiling for most
of the Mac IIs.

We have successfully ported our "broadcast a new root
partition" software to the Mac II, though we aren't yet sure
how we might use it. It would be very useful if we could
produce a version that could be run from sash, so that we can
rebuild A/UX starting from a sash floppy.

We have employed a summer student to write an "hfs" program to
complement the "mfs" program. This will be written so that most
of the work can be reused in conjunction with the public domain
user-level NFS server recently sent out to the USENET.



Questions Arising:

1. Why have we lost the toolbox??!

2. How can we write programs that will run under sash?

3. How can we make sash boot A/UX from a floppy? We can get
   everything we need onto a mountable floppy (kernel, basic
   utilities etc) but sash refuses to boot from it.
==========================================================
A/UX Beta Report
QMC Computer Science
Week Ending: 10/6/88

1. The routine ffs is missing from libc

The manual page "bstring(3)" says that the routine ffs(i) will
return the index of the top bit set in i. The routine does not
however exist in /lib/libc.a

2. Missing BSD system calls

The following system calls and "section 3" routines are missing
from A/UX

        vadvise         see <sys/vadvise.h>
        getrusage       <sys/resource.h> is sadly truncated,
                        the 3rd argument to wait3() is "a placeholder"
        valloc          just plain missing

These are just rather a nuisance, and it would be very useful
to have either a list of all of the missing BSD routines, or
better still some bodges to cover for them.


General Comments:



Questions Arising:

1. Is there an include file which lists all of the system
   calls? On BSD 4.2 there used to be /usr/include/syscall.h
   which performed approximately this function.
==========================================================
A/UX Beta Report
QMC Computer Science
Period from 11/6/88 until 15/7/88

1. "sync" and "powerdown" do not fully sync the disk?

Many of our AUX users find that the root partition needs
correcting when they boot AUX, even when they have used
powerdown to shut the machine off. However, the repairs
necessary are only to the free block table and involve
recovering free blocks that were incorrectly marked as used.
This seems to suggest that sync doesn't flush quite enough
buffers.


2. sash can't run if too many things installed at startup

Using the SoundMaster(?) file which adds noises to many system
activities uses up too much space and prevents sash from
working.


3. Further NFS problems

Both ar(1) and ranlib(1) dump core if they are manipulating an
archive on a remote NFS filesystem that is not an A/UX machine.
We have had similar problems before and suspect that this is
due to attempts to open directories as files and interpret
their contents directly, rather than using the approved
opendir/readdir calls supported by NFS.


4. Error in Mac2 Termcap entry

The termcap entry for "mac2" specifies padding for the so/se
and us/ue font change strings, but the manual page does not say
that padding is allowed for these strings.


5. Compiler Bugs

In trying to compile the Sun NeWS source on A/UX, we have
identified a number of problems with the C compiler. It is
perhaps ironic that Sun can combine a desire to write portable
code with such a macho "this'll REALLY test your compiler"
programming style.

5.1 General Moans

Some of the tables are too small, e.g. macro expansions of
several kbytes are not possible. It is also not permitted to
have a cast applied to an lvalue.

5.2 Compiler Problems with Assignment Statements

The following program illustrates two compiler problems associated
with the value of an assignment statement
------------------------------------------------
    /* foo works OK*/

    foo() {
            char i, j =

            (i<10) ? (j = 1) : ( (i>100) ? (j = 100) : 0 ) ;
    }


    /* dies with internal compiler error
     *      Can't handle op REG
     */
    bar() {
            char i, j;

            (i<10) ? (j = 1) : ( (i>100) ? (j = 100) : 0 ) ;
    }


    /* dies claiming "Illegal LHS of assignment"
     * Apparently OK if all assignments bracketed but we
     * didn't try the remaining 6 possible combinations...
     */

    bar2() {
            char i, j ;

            (i<10) ? j = 1 : ( (i>100) ? j = 100 : j = 0 ) ;
    }
------------------------------------------------

5.3 Compiler Generates Illegal Assembler Code

The following fragment illustrates a construction which leads
to an illegal instruction being generated.
------------------------------------------------
    foo()
    {
        register float f;
        unsigned long ul;

        ul =  (unsigned long) -f; /* this works */
        ul = -(unsigned long)  f; /* this doesn't */

        /* generates a bad instruction:
                fneg.x  %fp2,%d0        ILLEGAL! should have fp reg as 2nd op
                mov.l   %d0,((S%1-4).w,%fp) */

        /* Note that having the float in a register isn't necessary for
         * this sort of error. If it's not in the register then it still
         * generates an erroneous instruction.... fneg.s <store>,%d0
         * this time!!!!
         */
    }
------------------------------------------------


6. Problems with the Console Terminal Driver

The "keypad mode" of the console terminal driver does not make
all keys on the keypad distinct from the main keyboard; it
leaves the keys Clear, =, /, * and + unchanged. It is also
impossible to distinguish between shifted and unshifted
versions of these keys.


7. Manual Page Bugs

The manual page for "console(7)" neglects
to mention that the keypad key "." is changed by selecting
keypad mode (is this a troff mistake - line beginning with dot?).
The "termio(7)" manual page does not mention the TIOCGWINSZ and
TIOCSWINSZ ioctls for getting and setting the current screen
size.


General Comments:

AUX is now installed on all our machines, but not many of them
are being used as anything more than multi-window terminals at
present. Porting our local software is taking time as we
discover what parts of the BSD system are missing; this week's
absences are all related to the sgtty structure and terminal
ioctls. We have successfully ported the ML language system to
AUX, together with our local "ded" editor and our "gsh" shell.
The Berkeley 4.2 printer spooler stuff was ported without
problems.

Work is proceeding on the port of Sun NeWS 1.0 to A/UX and we
have a working MacOs->AUX copy program which is roughly
equivalent to "mfs".


Outstanding Questions:

3.1. Is there an include file which lists all of the system
     calls? On BSD 4.2 there used to be /usr/include/syscall.h
     which performed approximately this function.

4.1. Is there a Pascal compiler available for AUX?

4.2. Is there better documentation about the precise disk block
     contents under MacOS than is given in Inside Macintosh volume 4?
==========================================================
A/UX Beta Report
QMC Computer Science
Period from 16/7/88 until /8/88

1. dumpfs missing from our 80 Meg disk

The program "dumpfs" is listed in the manual as being in /etc,
but is not present on any of our disks, including the original
80 Meg disk containing our master copy of A/UX. The only
references to "dumpfs" in the /descriptions file are /etc/dumpdates
and the manual pages dumpfs.1M, dumpfs.4 & rdumpfs.1M


2. More compiler bugs

If you switch on a variable which is of an enumerated type then you get
a warning "enumeration type clash, operator =". Casting to an int
will keep it quiet e.g.
----------------------------------------------------------
        typedef enum { Monday, Tuesday, Wednesday } Days;

        foo(day)
        Days day;
        {

                /* this causes a warning */

                switch(day) {
                case Monday:
                case Tuesday:
                case Wednesday:
                default:
                }

                /* this doesn't */

                switch( (int) day) {
                case Monday:
                case Tuesday:
                case Wednesday:
                default:
                }
        }
----------------------------------------------------------


3. dp can produce a partition map unacceptable to HD SC Setup

If dp is used to delete a partition, the resulting partition
map is "invalid" according to the Macintosh "HD SC Setup"
program. The problem appears to be that the deleted partition
is not removed from the map: dp says

        "/dev/rdsk/c0d0s31" 7 partitions, 6 allocated

and the "deleted partition" (in our case partition 6) appears
to be filled with nulls.  Deleting a partition using HD SC
Setup leaves a partition map entry of type Apple_Free.



General Comments:

Work is underway to port X11R2 and Cprolog to A/UX.

We have modified the "term" program to improve the VT100
emulation and ported our "ded" editor and "gsh" shell to run
under both term and the Mac console.



Outstanding Questions:

4.1. Is there a Pascal compiler available for AUX?

4.2. Is there better documentation about the precise disk block
     contents under MacOS than is given in Inside Macintosh volume 4?

5.1. What is the anticipated date at which MacOS will be able
     to handle more than one MacOS partition on the internal disk?

5.2. Could the "Macintosh Driver" boot file on the SCSI disk be
     modified to enable direct booting of A/UX, with a bit in
     the non-volatile RAM to select between MacOS and A/UX?

5.3. Is there a good reason why "HD SC Setup" doesn't allow
     MacOS partitions to be resized (even just increasing them)?
==========================================================
-- 

William Roberts         ARPA: liam@cs.qmc.ac.uk  (gw: cs.ucl.edu)
Queen Mary College      UUCP: liam@qmc-cs.UUCP
LONDON, UK              Tel:  01-975 5250

wytze@gouldnl.UUCP (Wytze van der Raay) (08/10/88)

In article <571@sequent.cs.qmc.ac.uk> liam@cs.qmc.ac.uk (William Roberts) writes:
>3. The default IP broadcast address is not the Berkeley default
>
>The default IP broadcast address is hostpart = all ones, in our
>case 42.255.255.255, whereas our other machines expect the
>Berkeley(?) convention of hostpart = all zeros, i.e. 42.0.0.0
>To achieve the desired effect we have to make an explicit
>ifconfig call which sets the broadcast address to 42.0.0.0

I'm afraid your Berkeley systems are out-of-date. Since the days of BSD 4.3
the default IP broadcast address is indeed hostpart = all ones, thereby
correcting the BSD 4.2 anomaly of using all zeros, which was not according
to the recommendation in RFC919.
So rather than condemning Apple's AUX on his point, it should be praised,
for keeping up-to-date with current IP broadcast standards.

-- 
| Wytze van der Raay                      ...!mcvax!gouldnl!wytze |
| Gould European Unix Support Centre             wytze@gouldnl.nl |
| Maarssenbroek, The Netherlands          (USA)   ...!gould!wraay |