> From: Jacob Ritorto
> I think it's something to do with the fact that he compiled it to run on
> an 11/23. Maybe it lacks unibus support.
No, the UNIBUS and QBUS appear (from the programming level) to be identical.
There are subtle differences (the /23 and its devices can address more than
256KB of memory, and some devices have minor differences between the QBUS and
UBIBUS - e.g. the QBUS DZ has only 4 lines, not 8), but in general, they
should be interchangeable.
> Maybe something to do with clock differences.
Again, if it boots at all, that's not it. (The vanilla /23 doesn't have a
software-controllable clock, and when booting Unix on one, one has to leave
the clock switched off till UNIX is running - at least, for the early versions
of UNIX.)
> I fired 2.9MSCP up in simh emulating an 11/23 and it works fine. Just to
> corroborate my hardware experience of it on the '34, I switch the cpu
> emulation to 11/34 and got a mostly identical crash sequence as with my
> real hardware.
Ah. Now we're getting somewhere! If the simulator crashes in the same way, it's
not flaky hardware (my first guess as to the cause).
What are the symptoms (in as much detail as you can give us)? What, if anything,
is printed before it dies?
> I changed ...
> UNIBUS_MAP = 0
> to
> UNIBUS_MAP = 1
The /34 doesn't have a UNIBUS map.
Noel
> From: Jacob Ritorto
> I jiggled the memory board and the seqfault went away.
Ugh. A flaky. I hate those....
> So now the real box is behaving more like the simh and just hanging,
> not panicing anymore.
Does it _always_ hang at the same point in time? If so, what are the
circumstances, - have you just tried to start multi-user operation, or what?
> How can I find this startup() you mention?
It's in machdep.c in sys/sys.
Noel
> From: Jacob Ritorto
> I set simh to 11/34 and I managed to get actual panics before (that I
> didn't record)
Ah.
> now I'm just getting hangs, mostly when hitting ctrl-D to bring system to
> mutiuser.
The fact that it boots to the shell OK indicates things are mostly OK. I
wonder what it's trying to do, in going to multi-user, that's wedging the
system?
> Same if I mount -a in single user and then try to access /usr (works for
> a while, then hangs.).
Ah. That sounds very much like a 'lost' interrupt. The process is waiting
(inside the kernel) for the device to complete, and ..... crickets.
> When hung, I can still get character echo to my terminal
So the machine is still running OK (most echoing is done inside the TTY
interrupt handler).
> but can't interrupt or background the running command, etc.
Like I said, it's sleeping inside the kernel, and missed the wakeup event.
If you have another console logged in, it would be interesting to see if that
one is frozen too. If not, we can use tools like 'ps', running on the second
line, to look at the first process and see what it's waiting for.
Single user, the following hack:
sh < /dev/ttyX > /dev/ttyX &
can be used to start a shell on another tty line (since going full multi-user
seems to wedge it).
> Would it help if I traced memory and single-stepped through the
> (apparently) infinite loop?
No, because it's very likely not a loop! ;-)
> here are some examples of crashes on the real pdp11/34 (booting via
> vtserver, then bringing in system from the MSCP disk), with the original
> 2.9bsd-MSCP kernel (the one specifically built for 11/23):
>
> CONFIGURE SYSTEM:
> ka6 = 2200
> aps = 141572
> pc = 50456 ps = 30250
> __ovno = 7
> trap type 11
> panic: trap
That's a segmentation fault. Very odd trap to get! 2.9 uses overlays right?
Maybe there's a problem with how some overlay fits, or something? I don't know
much about the overlay feature, never used it, sorry.
Most of the other data (PS address, PC, KDSA6 contents, etc) aren't much use
without a dump.
> and another: plain boring old hang at boot when trying to size devices.
> Can't even echo characters this time.
If the init process hasn't got as far an opening the TTY, you might not get
character echoing.
If that randomly lost interrupt got lost very early on, you might could see
this sort of behaviour.
> One thing I think is interesting is that it's claiming 158720KW of
> memory. Is that weird? ... Where's it getting that odd number? Vanilla
> 2.9.1 on the real 11/34 boots with
>
> Berkeley UNIX (Rev. 2.9.1) Sun Nov 20 14:55:50 PST 1983
> mem = 135872
No idea where it's coming from, but remember Beowulf Schaeffer's advice to
Gregory Pelton in "Flatlander".
And now that I think about it, if the system thinks it has more memory than it
actually does, that would definitely cause problems.
Probably you should put some printf()'s in startup() and see where it's coming
from.
Noel
> From: Cory Smelosky <b4(a)gewt.net>
> Only the 11/23+ can, early rev 11/23s couldn't go above 256K.
Correctamundo on the last part, but not the first. I have both 11/23+'s and
11/23's, and I can assure you that Rev C and later 11/23's (the vast majority
of them) can do more than 256KB. See:
http://www.ibiblio.org/pub/academic/computer-science/history/pdp-11/hardwar…
for more.
Noel
Hi,
Since my Fuji160 drive is rather head-crashed, I've replaced it with an
M2333k, which is a smaller SMD rig with more sectors than the 160.
Unfortunately, after many dip switch settings and config changes, I have to
conclude that the sc21 just doesn't work with this new disk.
I've plugged in my SC41 controller that speaks MSCP and supports the
M2333k correctly. So now it's a matter of getting a unix small enough to
run on the 11/34 that can also speak MSCP. Enter Jonathan Engdahl's
2.9bsd-MSCP.
I managed to restor a root dump from his distribution and am able to
occasionally boot it on my 11/34, but it crashes very soon after booting
and I don't understand why. I think it's something to do with the fact that
he compiled it to run on an 11/23. Maybe it lacks unibus support. Maybe
something to do with clock differences. Not sure. But I was thinking that I
could make it work by recompiling the kernel with 11/34 support.
I fired 2.9MSCP up in simh emulating an 11/23 and it works fine. Just to
corroborate my hardware experience of it on the '34, I switch the cpu
emulation to 11/34 and got a mostly identical crash sequence as with my
real hardware.
So I switched the emulation back to '23, rebooted and edited the assym.s
file found in Jonathan's /usr/src/sys/RA directory. I changed
PDP11 = 23.
to
PDP11 = 34.
as well as
UNIBUS_MAP = 0
to
UNIBUS_MAP = 1
and recompiled with 'make unix,' then copied the resultant unix to /unix.
I switched simh back to emulating an 11/34 and rebooted. It crashes
randomly just as it did before the kernel recompile.
Any idea what I'm missing here? My hope was to simply move this
freshly-compiled 11/34-friendly kernel onto my real 11/34 and have a
working hardware system.
thx
jake
Ok folks,
I've uploaded what I call Unix v5a to:
http://www.maxhost.org/other/unix-v5-feb-2015.tar.gz
I use simh on Linux to emulate the PDP-11/70.
The tarball contains:
unix_v5_rk.dsk
unix_v5_rk1.dsk
unix_v5_rk2.dsk
pdp11-v5.ini
readme-v5.txt
unix-v5a.sh
The original file is uv5swre.zip if anyone wants to compare them.
Mark
> From: Clem Cole <clemc(a)ccc.com>
> Once people started to partition them, then all sort of new things
> occurred and I that's when the idea of a dedicated swap partition came
> up. I've forgotten if that was a BSDism or UNIX/TS.
Well, vanilla V6 had i) partitioned drives (that was the only way to support
an RP03), and ii) the swap device in the c.c config file. That's all you need
to put swap in its own partition. (One of the other MIT-LCS groups with V6
did that; we didn't, because it was better to swap off the RK, which did
multi-block transfers in a single I/O operation.)
> As I recall in V6 and I think V7, the process was first placed in the
> swap image before the exec (or at least space reserved for it).
As best I understand it, the way fork worked in V6 was that if there was not
enough memory for an in-core fork (in which case the entire memory of the
process was just copied), the process was 'swapped out', and the swapped out
image assumed the identity of the child.
But this is kind of confusing, because when I was bringing up V6 under the
Ersatz11 simulator, I had a problem where the swapper (process 0) was trying
to fork (with the child becoming 1 and running /etc/init), and it did the
'swap out' thing. But there was a ton of free memory at that point, so... why
was it doing a swap? Eh, something to investigate sometime...
Noel
> From: Jacob Ritorto
> I'm having trouble understanding how to get my swap configured. Since
> rl02s are so little, the MAKE file in /dev doesn't partition them into
> a, b, c, etc. However, when MAKE makes the /dev/rl0 device, it uses
> only 8500 of its 10000 blocks, so what would presumably be intended as
> swap space does exist. Swap is usually linked to the b partition,
> right? So how do I create this b partition on an rl02?
I don't know how the later systems work, but in V6, the swap device, and the
start block / # of blocks are specified in the c.c configuration file (i.e.
they are compiled into the system). So you can take one partition, and by
specifying less than the full size to 'mkfs', you can use the end of the
partition for swap space (which is presumably what's happening with /dev/rl0
here).
Noel
Dave Horsfall:
I also wrote a paper on a "bad block" system, where something like inum
"-1" contained the list of bad sectors, but never saw it through.
====
During the file system change from V6 to V7, the i-number of
the root changed from 1 to 2, and i-node 1 became unused.
At least some versions of the documentation (I am too harried
to look it up at the moment) claimed i-node 1 was reserved
for holding bad blocks, to keep them out of the free list,
but that the whole thing was unimplemented.
I vaguely remember implementing that at some point: writing
a tool to add named sectors to i-node 1. Other tools needed
fixing too, though: dump, I think, still treated i-node 1
as an ordinary file, and tried to dump the contents of
all the bad blocks, more or less defeating the purpose.
I left all that behind when I moved to systems with MSCP disks,
having written my own driver code that implemented DEC's
intended port/class driver split, en passant learning how
to inform the disk itself of a bad block so it would hide it
from the host.
I'd write more but I need to go down to the basement and look
at one of my modern* 3TB SATA disks, which is misbehaving
even though modern disks are supposed to be so much better ...
Norman Wilson
Toronto ON
* Not packaged in brass-bound leather like we had in the old days.
You can't get the wood, you know.