[comp.unix.aux] Disk partitions: autorecovery, aux-root, swap, etc.

barad@rampart.tulane.edu (Herb Barad) (07/12/88)

I have a Dataframe 150XP and I've set it up for A/UX.  I did this
using dp and created only 1 partition: the A/UX root partition.

I did not create any autorecovery, eschatology, Mac_HFS, or swap
partitions.  I've heard from SuperMac that their current driver
does not support Mac_HFS partitions (please inform me if I'm wrong).
This doesn't bother me that much, but I don't have other
partitions like swap and the eschatology partitions.

How do I create these?  I can make a tar tape and save what I've got.
Do I have to reformat the disk?  How big do each of the partitions
have to be?

If I don't have a swap partition, does this imply that I'm not taking
advantage of virtual memory?

Has anyone formatted their own A/UX disk (especially a Dataframe)?
How did you make the different partitions.  I finally have the manuals
now, but the description of dp(1) is not too clear regarding
partitioning strategy.  Any help would be greatly appreciated.  Thanks.
-- 
Herb Barad	Electrical Engineering Dept., Tulane Univ.
INTERNET:	barad@tulane.edu
USENET:		barad@tulane.uucp

paul@unisoft.UUCP (n) (07/13/88)

In article <8@rampart.tulane.edu> barad@tulane.UUCP writes:
>I have a Dataframe 150XP and I've set it up for A/UX.  I did this
>using dp and created only 1 partition: the A/UX root partition.
>
>I did not create any autorecovery, eschatology, Mac_HFS, or swap
>partitions.  I've heard from SuperMac that their current driver
>does not support Mac_HFS partitions (please inform me if I'm wrong).
>This doesn't bother me that much, but I don't have other
>partitions like swap and the eschatology partitions.
>

I too have an XP150 and it works very well (it's faster, and bigger than
a quantum 80 ...). What I did was the following (it should work for any
CDC Wren IV based disk and also for many other similar disks), I dd'd
the whole of the Apple distribution from a quantum (ie dd if=/dev/rdsk/c0d0s31
of=/dev/rdsk/c1d0s31 bs=500k) to my XP150, this copies EVERYTHING including
all the partitions, the partition table, the HFS booting partition and the
APPLE driver. I then used dp to extend the 2 sector 'Extra' partition at the
end so that it takes up the whole of the rest of the disk (make sure you set
the partition type correctly to 'SVR2 user'). Next I used pname to call the
partition /dev/dsk/c1d0s2 and the used mkfs to put a filesystem on it. You can
now reboot onto your new disk, after coming up single user mode use pname to
create an /etc/ptab (so it always recognises the new partition) and then
create a mount point and add an /etc/fstab entry so that the partition will be 
mounted when you go multi-user. Phew easy wasn't it :-) of course you only
have to do it once.

The SuperMac (MacOS only, A/UX has its own) driver on the original XP150
doesn't seem to support partitioning correctly, they tell me they will fix
it asap ... this is a pity for two reasons 1) it is faster in its transfer
rate than the Apple one (leaner and meaner) but if you only run A/UX this
is not an issue and 2) it has special hooks in it which allow you to run all
those free programs you got on the disk when you bought it they are 'copy
protected' so that they will ONLY run off a disk that is running with the SM
driver (after all they did come FREE with the disk). Older XP150s or XP150i
(the internal disk) owners may need a ROM upgrade to run with A/UX, see 
SuperMac for details.

Disclaimer: I have business dealings with SuperMac so I'm probably biased
	but the above information will hopefully help anyone trying to
	configure a 3rd party disk with A/UX


		Paul

-- 
Paul Campbell, UniSoft Corp. 6121 Hollis, Emeryville, Ca
	E-mail:		..!{ucbvax,hoptoad}!unisoft!paul  
Nothing here represents the opinions of UniSoft or its employees (except me)
"Nuclear war doesn't prove who's Right, just who's Left" (ABC news 10/13/87)

root@infohh.rmi.de (Operator) (07/16/88)

Setup:
======
   80 MB external A/UX (as shipped by Apple)
  300 MB internal installed with 1 MacOS partition workable + 1 other partition
Purpose:
========
  300 MB internal with MacOS running in 1 partition and A/UX
  in 1 root and one user partition

As far as I know: with A/UX tools (dp(1M), little vi+c+...) there 
is no way short of writing your own MacOS driver to set up a functional 
MacOS partition; Apple's 'Apple_Driver' intentionally ignores non-Apple
drives. So the MacOS setup had to be done with an installer tool 
supplied  by the local distributor of the 300 MB drive, that (installer) 
runs under MacOS - and being a 1st test version written without access to
A/UX still had some minor shortcomings.

So, when I looked at the drives under A/UX (running from HD 80), dp showed 
(semantically, I 'netted up' the format 
(status: v_alid, a_llocated, u_sed, b_oot, r_ead, w_rite;
last 3 columns in A/UX partitions: {Eschatology,Root,User,Swap}FS
                                   cluster
                                   critical)
) this:

/dev/rdsk/c5d0s31:      # SCSI 5, external HD 80                
ID  Name         Type                phys. blks        log. blks    status
-----------------------------------------------------------------------------------
0 MacOS          Apple_HFS           (  4096 @ 146128) [  4096 @ 0] vau-rw
1 Apple          Apple_partition_map (    63 @      1) [    63 @ 0] vau-rw
2 Macintosh      Apple_Driver        (    32 @     64) [    32 @ 0] vaubrw
3 Extra          Apple_Free          (    32 @     96) [    32 @ 0] vau-rw
4 Eschatology_1  Apple_UNIX_SVR2     (  6144 @    128) [  6144 @ 0] vau-rw  EFS 0 C
5 A/UX_Root      Apple_UNIX_SVR2     (111184 @   6272) [111184 @ 0] vau-rw RUFS 0 -
6 Swap           Apple_UNIX_SVR2     ( 28672 @ 117456) [ 28672 @ 0] vau-rw  SFS 0 C
7 Eschatology_2  Apple_UNIX_SVR2     (  6144 @ 150224) [  6144 @ 0] vau-rw  EFS 0 C
8 Extra          Apple_Free          (     2 @ 156368) [     2 @ 0] vau-rw         

/dev/rdsk/c0d0s31:      # SCSI 0, internal HD 300
ID  Name         Type                phys. blks        log. blks    status
-----------------------------------------------------------------------------------
0 80 Macintosh   Apple_HFS           (163840 @    128) [0 @ 163840] vau-rw
1 Macintosh      Apple_Driver        (    16 @     64) [0 @     16] vaubrw
2 Macintosh      Apple_UNIX_SVR2     (422795 @ 163986) [0 @ 422795] vau-rw RUFS 0 -
3 Partition      Apple_partition_map (     6 @      1) [0 @      6] vau-rw
4 Macintosh      Apple_Free          (    48 @     80) [0 @     48] vau-rw
5 Macintosh      Apple_Free          (  4660 @    128) [0 @   4660] vau-rw

so I had to 1) change the number of entries in the partition map
            2) swap logical start with logical length
            3) change the size of the UNIX partition
            4) add some more partitions for Eschatology, user FS
                        5) change partition 5 (starts at same block as 0)
                        6) copy date form HD 80 to HD 300, make filesystem,
                           eschatology, have user FS automatically mounted
to get here:

/dev/rdsk/c0d0s31:      # SCSI 0, internal HD 300
ID  Name         Type                phys. blks        log. blks    status
-----------------------------------------------------------------------------------
0 80 Macintosh   Apple_HFS           (163840 @    128) [163840 @ 0] vau-rw
1 Macintosh      Apple_Driver        (    16 @     64) [    16 @ 0] vaubrw
2 Eschatology_1  Apple_UNIX_SVR2     (  6144 @ 163986) [  6144 @ 0] vau-rw  EFS 0 C
3 Partition      Apple_partition_map (    63 @      1) [    63 @ 0] vau-rw
4 Macintosh      Apple_Free          (    48 @     80) [0 @     48] vau-rw
5 A/UX_Root      Apple_UNIX_SVR2     (111184 @ 170130) [111184 @ 0] vau-rw RUFS 0 -
6 Swap           Apple_UNIX_SVR2     ( 28672 @ 281314) [ 28672 @ 0] vau-rw  SFS 0 C
7 Eschatology_2  Apple_UNIX_SVR2     (  6144 @ 309986) [  6144 @ 0] vau-rw  EFS 0 C 
8 A/UX_user      Apple_UNIX_SVR2     (200000 @ 316130) [200000 @ 0] vau-rw  UFS 0 -
9 Extra          Apple_UNIX_SVR2     ( 70000 @ 516130) [ 70000 @ 0] vau-rw  UFS 0 -
(where partition 9 isn't used by A/UX, yet)


Step 1: As dp doesn't have a documented way of changing the
======= number of entries in the partition map, I wrote a small 
 C tool  to do it:

 !!!! if used the wrong way, the following code could assist you
      in destroying the most sensitive data, so don't use it before
      you're sure what it does !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
          
#include <stdio.h>       /* this works only if you have super user access */
#include <fcntl.h>
#include <apple/dpme.h>

extern long lseek();

main() {
  int fd;
  DPME OneEntry;
#define DPMElen sizeof(DPME)
#define BLOCK   512
  int count = 0;

  /* /dev/rdsk/c0d0s31 is c<SCSI 0>d<driver>s<slice 31=whole disk> */
  
  printf ("\npme: opening /dev/rdsk/c0d0s31 for inspection etc. of partition map\n");
  printf ("-------------------------------------------------------------------\n");

  if ((fd = open ("/dev/rdsk/c0d0s31", O_RDWR)) >= 0 ) {
    for (count=1 /* phys. blk, see table above */; count < 17; count++) {
      lseek (fd, (long)(count*BLOCK), 0);
      if (read (fd, &OneEntry, DPMElen) == DPMElen) {
       if (OneEntry.dpme_signature != DPME_SIGNATURE) {
           printf ("indecent DPME %d\n", count-1);  exit (-1);
       }
       else {
        if (OneEntry.dpme_allocated)
            printf ("%d %20s %20s [%8d %8d] (%8d %8d) %c%c%c%c %c%v\n", 
                    count-1, OneEntry.dpme_dpident.dpiname,
                             OneEntry.dpme_dpident.dpitype,
                             OneEntry.dpme_pblock_start, OneEntry.dpme_pblocks,
                             OneEntry.dpme_lblock_start, OneEntry.dpme_lblocks,
                             OneEntry.dpme_writable  ?'w':'-',
                             OneEntry.dpme_readable  ?'r':'-',
                             OneEntry.dpme_bootable  ?'b':'-',
                             OneEntry.dpme_in_use    ?'u':'-',
                             OneEntry.dpme_allocated ?'a':'-',
                             OneEntry.dpme_valid     ?'v':'-'
                        );
        else
            printf ("%d ------- not allocated -----------\n", count-1);
        }
      }
      else { printf ("couldn't read DPME %d\n", count-1); exit(-1); }
    }
    
    /* change number of map entries in partition map */
    /* --------------------------------------------- */
    lseek (fd, (long)(1*BLOCK), 0);
    if (read (fd, &OneEntry, DPMElen) == DPMElen) {
           OneEntry.dpme_map_entries = 16;        /* <<--- MAP ENTRIES */
           lseek (fd, (long)(1*BLOCK), 0);
           /* if (write (fd, &OneEntry, DPMElen) != DPMElen) { protection */
              printf ("couldn't change # of MAP ENTRIES in DPME %d\n", 1-1);
           }
    }
        
    /* initializing new map entries for 'dp' et. al. */
    /* --------------------------------------------- */
    for (count=6+1; count < 16; count++) {
      lseek (fd, (long)(count*BLOCK), 0);
      if (read (fd, &OneEntry, DPMElen) == DPMElen) {
           OneEntry.dpme_bootable = 0;            /* <<--- NOT BOOTABLE */
                   OneEntry.dpme_pblocks =        /* <<--- otherwise dp */
                   OneEntry.dpme_lblocks = 0;     /* <<--- dumps core   */
                   OneEntry.dpme_pblock_start = 
                   OneEntry.dpme_lblock_start = 500000; /* device dependent! */
           lseek (fd, (long)(count*BLOCK), 0);
           /* if (write (fd, &OneEntry, DPMElen) != DPMElen) { protection */
              printf ("couldn't change BOOTABLE bits in DPME %d\n", count-1);
              break;
           }
           */
      }
      else { printf ("couldn't read DPME %d\n", count-1); break; }
    }
  }
  close (fd);
}

Step 2: can be done with dp interactively (see below) or
======= by modifying the above source

Steps 3-5 I found easiest to do in dp interactive mode: (do see dp(1M))
}i========= thus: 'dp /dev/rdsk/c0d0s31'  # you need to be super user
'P'    - to be sure about the disk we're manipulating

'd 5'  - to delete partition 5

'c 2'  - to supply the new name, block numbers of partition 2 as asked for
'b'    - to supply FS type, cluster #, and critical bit as asked for
'q'    - to get to DPME-field mode
'q'    - to get to command mode

'a 5'  - to create A/UX_Root partition
'b'    - to supply FS type, cluster #, and critical bit as asked for
'q'    - to get to DPME-field mode
'q'    - to get to command mode

'a 6'  - to create Swap partition
...
'a 7'  - to create Eschatology_2 partition
...
'a 8'  - to create A/UX_user partition
...
'a 9'  - to create Extra partition
...

'P'    - to check the changes
'w'    - to write back iff o.k.
'q'    - to get to step 6

Step 6: make file systems to access partitions logically:
======= 'mkfs /dev/rdsk/c0d0s0 111184'  # number from ID 5, above
        'mkfs /dev/rdsk/c0d0s2 200000'  # number from ID 8, above
                
copy root partition from external HD 80 to internal HD 300:
dd if=/dev/rdsk/c5d0s0 of=/dev/rdsk/c0d0s0

>>> now reboot and from 'sash' boot (0,0,0), i.e. from HD300
and in SYSTEM MAINTENANCE MODE (single user) run 'eupdate'
to install/preset the eschatology filesystems

then 'mkdir /user' and 
'/etc/mount /dev/dsk/c0d0s2 /user' and with
'devnm > /etc/fstab' install /user FS for automatic
mount at boot-up.

I'd be glad to hear any comments, corrections, improvements.

---------
That's it, 
  rlj
  
  
-------------------------------------------------------------------------------
RL Jakschewitz  systemsoftware  Geuderstr. 7  D-8500 NUERNBERG 20  West Germany
Tel: +949 911 53 84 24                                     BITNET: P17386@QZCOM
UUCP: rlj-nbg@infohh.rmi.de         or        mcvax!unido!infohh.rmi.de!rlj-nbg
-------------------------------------------------------------------------------

rlj-nbg@infohh.rmi.de (R.L. Jakschewitz) (07/16/88)

Subject: bring out your dead - eschatology questions


1) eupdate(1M) works in single user mode only, otherwise it chokes to death
   ------- on eu's lockfile
   
2) escher(1M) dies with the words:
   ------
  'pnames: ioctl error on Eschatoloy 1, errno 16, raw device /dev/rdsk/c0d0s0'
  
These couldn't possibly be bugs, [Apple: "the power to be your best"... S:-|]
so, does anybody know what I'm doing wrong?

3) How can I actually LOOK at the 2 Eschatology file systems? Mounting
   the device nodes which remain after eupdate dies, doesn't work. I'd
   like to know how much space is left there, in order to decide which files
   to add to the eschatology list.
   
4) I remember how one of my MacApp-lications in development died, because I
   forgot to supply the function return value (an object), and apparently
   Object Pascal tried to call one member function of the random pointer,
   and, jumping into an interesting area of code, ended up overwriting
   - at least - the driver partition of the disk.
   With A/UX, it's no problem dd-ing the first 128 blocks of the physical
   disk (/dev/rdsk/c<n>d<m>s31) to a floppy, thus conserving Block 0,
   partition map, and Apple_Driver. So I assembled a floppy with tiny system
   folder, sash, minimal standalone A/UX utilities - and found out, that I 
   didn't have a chance to eject the A/UX-boot floppy from ;sash', and so 
   couldn't    access the vital data I had saved on the above mentioned floppy.
   Any ideas?


Necrophobiously,
      rlj
  
-------------------------------------------------------------------------------
RL Jakschewitz  systemsoftware  Geuderstr. 7  D-8500 NUERNBERG 20  West Germany
Tel: +949 911 53 84 24                                     BITNET: P17386@QZCOM
UUCP: rlj-nbg@infohh.rmi.de         or ??  uunet!mcvax!unido!infohh.rmi!rlj-nbg
-------------------------------------------------------------------------------