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 -------------------------------------------------------------------------------