I've assembled some notes from old manuals and other sources
on the formats used for on-disk file systems through the
Seventh Edition:
http://www.cita.utoronto.ca/~norman/old-unix/old-fs.html
Additional notes, comments on style, and whatnot are welcome.
(It may be sensible to send anything in the last two categories
directly to me, rather than to the whole list.)
In article by Robertdkeys(a)aol.com:
> Warren... is there a non-broken 4.3BSD-Tahoe set somewhere?
> Bob
As in a bootable 4.3BSD-Tahoe kit? As far as I know, no. The Unix Archive
has a broken copy in 4BSD/Distributions/4.3BSD-Tahoe, indicating that
both usr.tar and src.tar are broken.
It might/should be possible to merge files from the CRSG CD set from Kirk
to recreate these tar files.
Anybody out there have an unbroken Tahoe release?
Warren
Helbig remarked (quoting Davidson):
> >Yes, you are right - V7 restores the register variables to a state which
> >is consistent with the other auto variables in the function - ie the value
> >which they had when longjmp was called.
> >
> >The caveats about not relying on register variables applied to V6.
> Nope, even in V6, register variables are restored to the values they had
> when reset(III) was called! (reset() is the name of longjmp() in V6).
> By the way, reset() is much smaller than longjmp() but provides the same
> functionality.
> I wonder why longjmp() was rewritten.
Setjmp/longjmp do more (setjmp returns different values
for the initial call and the longjmp-invoked one).
But the thing that would become more important
is that the PDP-11 compiler's calling sequence was
especially friendly toward restoring register values--
it just worked automatically.
Other machines and compilers were not so friendly.
This is why ANSI and ISO had to put in special rules
about promising to preserve only things marked
volatile.
We've been through this before.
Dennis
>X-Unix-From: michael_davidson(a)pacbell.net Tue Dec 31 17:04:50 2002
>Date: Tue, 31 Dec 2002 08:02:37 -0800
>From: Michael Davidson <michael_davidson(a)pacbell.net>
>User-Agent: Mozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:0.9.4)
Gecko/20011128 Netscape6/6.2.1
>X-Accept-Language: en-us
>MIME-Version: 1.0
>To: Wolfgang Helbig <helbig(a)Informatik.BA-Stuttgart.DE>
>CC: pups(a)minnie.tuhs.org
>Subject: Re: [pups] V7 setjmp/longjmp
>Content-Transfer-Encoding: 7bit
>
>Wolfgang Helbig wrote:
>>You can trust register variables when setjmp() returns the second time. Then
>>the registers are restored to the values they had when the "next" function was
>>called, that is the "values as of the time longjmp() was called" (quoted from
>>longjmp(3)'s man page. Thus any variable behaves the same, regardless of its
>>storage class.
>>
>Yes, you are right - V7 restores the register variables to a state which
>is consistent with the other auto variables in the function - ie the value
>which they had when longjmp was called.
>
>The caveats about not relying on register variables applied to V6.
Nope, even in V6, register variables are restored to the values they had
when reset(III) was called! (reset() is the name of longjmp() in V6).
By the way, reset() is much smaller than longjmp() but provides the same
functionality.
I wonder why longjmp() was rewritten.
Wolfgang.
On Mar 21, 19:31, Ian King wrote:
> Yup. I used to do that, but had an older version of sendmail and got
> 'co-opted' as a relay host for a spammer. :-(
I've seen a few attempts to do that. I should point out that even if
you only run sendmail for the benefit of machines on your own network,
and even if you use a dialup (rather than always-on) connection, you
want the ant-relay stuff. I see regular attempts to connect to port 25
on my hub, even though it's behind a dynamic IP address on an ISDN
dialup (I also see regular attempts to connect to the telnet, ssh, and
ftp ports, and others, maybe 2-3 times a week. If you run a common
operating system, don't assume that a dynamic IP address, or NAT, or
using a dialup, gives any worthwhile protection).
> FWIW: rather than update sendmail and hack another .cf, I bought a
> Windows-based mail server
Nowadays, it's easy to use m4 to set up sendmail.cf for the common
sorts of home use -- just define the settings for masquerading and
smarthost, and press go (more or less). The only time you need to hack
it a bit is if you want something unusual, like some mail going to the
local machine and some forwarded to other machines on your network, or
using UUCP.
> Instead, I use my free time to hack 2.11BSD and UNIX v6! :-)
I have to admit that sounds like a better use of the time :-)
--
Pete Peter Turnbull
Network Manager
University of York
On Mar 21, 23:04, Robin Birch wrote:
> I am probably going to get a broadband connection to wherever I end
up.
> I will then network all of the various boxes together and connect
> everything (including the PDP) to the Internet. I intend having one
box
> set up as a server
[...]
> In case the above seems stupid the idea is to take all email through
a
> server, weed out all incoming rubbish, and route it to various
> individual's (partner, daughter etc.) PCs.
This is exactly what I do, though I have the sending and receiving
sides of the email equation separate. I have one machine that acts as
a mail hub. It runs sendmail with a custom sendmail.cf which is
capable of delivering internal mail either to /var/mail, which is then
exported to other machines, or via UUCP or SMTP to other machines. It
also batches up outgoing mail and sends it to my ISP's mail server
("Smart Host") at specific times of the day (mine's not an always-on
connection).
All the other machines either use UUCP, or use sendmail with the
"nullclient" .cf file, to send mail to my hub machine. No reason why
the hub couldn't run a POP3 server for the benefit of Windoze PCs as
well, but I've never felt the need :-) If you go that route, I'd
suggest you think about IMAP rather than POP, though. As far as
getting mail from my ISP, I use fetchmail -- but if you do this, be
sure that your ISP puts something in the headers that makes it easy for
fetchmail to tell which user it's really for (don't forget about
mailing lists), and that you have a catchall rule to handle mail you
didn't think of.
If you have an always-on connection, you could have your DNS MX
record(s) set to point to your hub machine, and needn't use fetchmail.
However, if you do that, be sure to set up sendmail with anti-relaying
and all the proper security patches.
--
Pete Peter Turnbull
Network Manager
University of York
Hi Everyone,
Sorry for asking this here but you are probably the best people to ask.
I'm in the process of packing up my house to redecorate it and move to
another. As a result my 11/83 has been packed up and I won't get to
play for some time :-(. However, the question -
I am probably going to get a broadband connection to wherever I end up.
I will then network all of the various boxes together and connect
everything (including the PDP) to the Internet. I intend having one box
set up as a server for FTP, email and so on and everything else using
that. I will probably use a Linux box for this. Can I get a pop3
system for it that will talk to sendmail (only because sendmail is the
only mail system that I have used) or can I get a reasonable pop3 server
for Linux.
Anybody else has ideas on how I should do this then hints tips etc.
gratefully received.
In case the above seems stupid the idea is to take all email through a
server, weed out all incoming rubbish, and route it to various
individual's (partner, daughter etc.) PCs.
Cheers
Robin
--
Robin Birch
Hi -
> From: "Ian King" <iking(a)killthewabbit.org>
> I tried changing the partition type with disklabel -e -r but, when I exited
> vi, I got an error message saying that the type I'd provided was not valid.
> Viewing the label (with disklabel -r) showed the fstype set to 'unknown'.
"unknown" or "unused"
On my virtual 11 I see disklabel report:
8 partitions:
# size offset fstype [fsize bsize]
a: 16720 0 2.11BSD 1024 1024 # (Cyl. 0 - 39)
b: 8360 16720 swap # (Cyl. 40 - 59)
c: 340670 0 unused 1024 1024 # (Cyl. 0 - 814)
h: 315590 25080 2.11BSD 1024 1024 # (Cyl. 60 - 814)
> Just for grins, I tried modifying the drive type, too - no success there,
> either. The disklabel utility isn't having any of that; again it claims
> 'unknown'.
Ah, that says something is corrupt somewhere.
If you look at /usr/include/sys/disklabel.h you'll see the
table of filesystem types:
static char *fstypenames[] = {
"unused",
"swap",
"Version 6",
"Version 7",
"System V",
"2.11BSD",
"Eighth Edition",
"4.2BSD",
"MSDOS",
"4.4LFS",
"unknown",
"HPFS",
"ISO9660",
0
};
So for 'unknown' to appear there would need to be a 10 in the type
field instead of a 5 (for "2.11BSD"). 'unused' is a 0 obviously.
Try booting up a standalone disklabel and see what it says without
a kernel getting involved.
Steve
Hi -
> From: "Ian King" <iking(a)killthewabbit.org>
> Now I know I'm missing something. I tried following your advice, using the
> disklabel utility running under the old kernel. From what you say below, I
Which part of the advice? ;)
The part of the advice that might be most useful was to put a
copy of the standalone disklabel program in / and boot it - NOT
run the usermode version while the system is running.
cd /sys/pdpstand
make
cp disklabel /
then reboot the system and at the ':' prompt enter ra(0,0)disklabel
there are things that can be done with the standalone version that
are either impractical under a kernel (because the 'a'/root partition
is open/busy) or because the standalone version has no safety checks.
> assume you are referring to the 'fstype' parameter on the partition, not the
> 'type' parameter for the drive, correct? The drive type is MSCP, and the
> partition fstype is 2.11BSD.
'fstype' is what I had in mind.
a: 16720 0 2.11BSD 1024 1024 # (Cyl. 0 - 39)
> I tried changing the partition type with disklabel -e -r but, when I exited
> vi, I got an error message saying that the type I'd provided was not valid.
> Viewing the label (with disklabel -r) showed the fstype set to 'unknown'.
Now I am confused. 2.11BSD is correct - but then it's "unknown" and
that would cause the 'iinit' panic that started this thread of
discussion.
Down the path of logic that results in a 'iinit' panic and the
'no fs' there's a check for the filesystem type and "unknown" was the
likely cause (or at least that was the hope).
If the standalone disklabel program says it's "2.11BSD" then there's
something else going on - the next likely thought is that 'rootdev'
or related entity isn't set to the device that is the actual root
filesystem.
> Just for grins, I tried modifying the drive type, too - no success there,
> either. The disklabel utility isn't having any of that; again it claims
> 'unknown'.
That's not used for anything important.
> Oh well, while I'm waiting for your reply I can rebuild my kernel with a
> higher MAXUSERS parameter. :-)
~12 is a good number - not much need for more than that as a rule.
Steve
Hi -
> From: "Ian King" <iking(a)killthewabbit.org>
> Well, given the excellent advice I received here (especially from Steven
> Schultz), I got the networking kernel to build after moving a few modules
> around between overlays. It was indeed the overage on DATA/BSS that was
Hmmm, if it was an overage on the DATA/BSS (which is hard to do unless
you overdeclare MAXUSERS or the number of tty devices) then
shuffling overlays wouldn't have made any difference since overlays
affect only code and not data allocation.
> Now, when I respond to the boot prompt with 'ra(0,0)unix', I'm getting the
> following:
>
> <banner for the image, date, time, etc.>
> panic: iinit
> no fs on 5/0
That says the kernel was not able to mount the root filesystem. The
earlier messages about the kernel build date, etc appear because
the kernel prints those directly from internal strings (and the
kernel is loaded by /boot who doesn't "mount" the root filesystem).
> I'm booting from an RD54, and checking both 'ls -l /dev/ra*' and
> /dev/MAKEDEV, it sure looks to me that the major device number for this
> drive is 5 - am I missing anything yet? That's what I called out as the
You're not missing anything so far ;)
Are there other devices/controllers on the system? That should work
(works on my system) but I'm trying to get a handle on what might be
confusing the kernel.
> for ra.) Note that this is exactly the same device as I have been using all
> along with the GENERIC kernel, so I know there's really a filesystem there.
That's the puzzling part - why the old one works but the new one
doesn't.
> (FWIW, I didn't define an autoboot device.) In ufs_subr.c, I see where this
> message is apparently generated in the getfs() function, but I can't really
mountfs() calls getfs(). mountfs() is called out of main() in
init_main.c
The panic "iinit" is in init_main.c after mountfs() has returned
NULL
The times I have seen the 'iinit' panic it's meant that the disklabel
was either missing _or_ that the root ('a') partition was not of
type FS_V71K. I SUPPOSE it's far fetched, but possible, that the
old kernel predates the check for the filesystem type, thus it ignores
the type of partition 'a' and assumes it's a valid filesystem.
If you have a copy of the standalone 'disklabel' program installed
in / you can boot that with
ra(0,0)disklabel
and examine the label that way. Or boot the tape and load the
utility that way. Using the old kernel and running disklabel
would work too. If the 'type' for the 'a' partition is not 'FS_V71K'
that's the problem.
> PS: I'm really glad I followed the advice to copy my old (GENERIC) kernel
> image to 'oldunix' - so I can still boot!
Ah, glad to hear that the advice came in handy. The other thing
that comes in useful is a bootable Zip disk (complete 2BSD system
fits on a Zip disk if one has a SCSI adaptor around) - came in handy
when I corrupted/broke 'init' ...
Steve