Adding a Second Disk to a 2.11BSD system under SIMH
I recently followed some instructions to get 2.11BSD running under SIMH. That topic is covered elsewhere adequately. I may write something up in the future.
Before I started, my simh.init file looked like this (some items from install omitted)
SET CPU 11/93, 4M SET CPU IDLE SET RP ENABLE SET RP0 ENABLE, RP06, WRITEENABLED ATTACH RP0 ./2.11BSD SET XQ ENABLED SET XQ TYPE=DEQNA SET XQ MAC=08-00-2b-11-07-82 ATTACH XQ tap:tap0 ; At the SimH promp type: unix BOOT RP0
As part of my 2.11BSD patch level 0 restoration project (more on that later), I needed to add another disk I could install chroot images to test building. I'm running 2.11BSD pl 457 at the moment (I've not walked forward form the last snapshot tape). Fortunately, this version has disklabels, so I'm able to do this the easy way (though the old hard-coded stuff isn't too hard either).
First, I needed to add the raw disk in simh. I opted to have a second RP06 for simplicity. There's adequate space. My 'root image' for 2.11BSD I want to test is about 100MB, and the RP06 is 165MB. That should be adequate. I just needed to duplicate the RP0 lines:
SET RP1 ENABLE, RP06, WRITEENABLED
ATTACH RP1 ./extra-data
and restart simh (be sure to halt any running system before stopping simh). The important part here is to configure RP1 as writeable and an RP06. Otherwise, it will default to the smaller RP04. For me, that's too small.
Next, I had to check to see if there were /dev nodes for this device. The xp driver handles RP06 (and many other) disks.
3% root-> ls /dev/xp1* /dev/xp1a /dev/xp1c /dev/xp1e /dev/xp1g /dev/xp1b /dev/xp1d /dev/xp1f /dev/xp1h
so I'm in luck. The devices are there. Otherwise I'd have to run /dev/MAKEDEV in /dev to add them (or worse, do it by hand).
Next, I needed to label the disk. It's fortunate I'm running a new version because this was easy and I didn't have to rely on the hard-coded partitioning in the driver. However, even if I did, I'm using the whole disk so it wouldn't change my life much...
5% root-> disklabel -r -w xp1 rp06
which puts the standard rp06 label (from /etc/disktab) onto the drive. Chances are good that this will work on older versions. This gives the following label:
6% root-> disklabel -r xp1 # /dev/rxp1a: type: unknown disk: rp06 label: flags: removeable badsect bytes/sector: 512 sectors/track: 22 tracks/cylinder: 19 sectors/cylinder: 418 cylinders: 815 rpm: 3600 interleave: 1 trackskew: 0 cylinderskew: 0 headswitch: 0 # milliseconds track-to-track seek: 0 # milliseconds drivedata: 0 8 partitions: # size offset fstype [fsize bsize] a: 9614 0 2.11BSD 1024 1024 # (Cyl. 0 - 22) b: 8778 9614 swap # (Cyl. 23 - 43) c: 153406 18392 2.11BSD 1024 1024 # (Cyl. 44 - 410) d: 168724 171798 2.11BSD 1024 1024 # (Cyl. 411 - 814*) e: 322130 18392 2.11BSD 1024 1024 # (Cyl. 44 - 814*) g: 171798 0 2.11BSD 1024 1024 # (Cyl. 0 - 410) h: 340522 0 2.11BSD 1024 1024 # (Cyl. 0 - 814*)
Note one difference from modern FreeBSD: rxp1a. 2.11BSD still has the character/block split. Also the 'standard' layout looks a bit odd to modern eyes. But there's 4 sets of partitions here: a,b,c,d for a system disk with / on a, swap on b and /usr on c. a,b,e (same but with a larger /usr on e). g and d to split the disk in half for data storage. And h for the whole disk. This mirrors the partitions from when things were hard coded in the device driver (yikes! glad we don't have that legacy anymore). In those days, you had to be as flexible as you could and leave it to the sysadmin to make wise choices with the limited flexibility they hard. These days, I'd label a scratch disk with just one partition (and call it 'a'). Since I was being lazy, I thought I'd leave this label in place. It's a quaint curiosity, but also instructive of history.
So, next, I have to put a filesystem on it. That's done with newfs:
8% root--> newfs /dev/xp1h newfs: /dev/xp1h: not a character device 9% root--> newfs /dev/rxp1h newfs: /sbin/mkfs -m 2 -n 209 -i 4096 -s 170261 /dev/rxp1h isize = 42560 m/n = 2 209
which gives me a new filesystem. This is quite a bit less chatty that I'm used to on FreeBSD. Also, even after noticing, I forgot you have to newfs and fsck the raw device, not the block device.
Now time to mount it and add it to fstab. Old-school write ups say to fsck /dev/rxp1h here, but given simh doesn't simulate the unreliability often found in the hardware of the time, I've skipped that part.
10% root--> mkdir /scratch 11% root--> mount /dev/xp1h /scratch 12% root--> vi /etc/fstab "/etc/fstab" 3 lines, 79 characters /dev/xp0a / ufs rw 1 1 /dev/xp0b none swap sw 0 0 /dev/xp0c /usr ufs rw 1 2 /dev/xp1h /scratch ufs rw 1 1
I've scrunched the vi session into the above: I just added the last line. And now I have a /scratch filesystem that will survive reboot.
And now I'm ready to create a tape with my putative 2.11BSD pl 0 system (really at the moment a 2.11BSD pl 195 system with pl0 sources). But that's for another day.
No comments:
Post a Comment