summaryrefslogtreecommitdiff
path: root/sys/arch/alpha/README
blob: 55e2aa1a6b40850bb64029c23e0807179e69520b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
I'm pleased to (finally) announce the release of NetBSD/Alpha.

As some of you may know, NetBSD is a freely-available and freely-
redistributable BSD-derived system that runs on a variety of hardware
platforms, including i386's, Amigas, SPARCs, and DECstations.  The Alpha
port is unique, because it's the first port of NetBSD to a 64-bit
architecture.

The Alpha port of NetBSD is a true 64-bit port: pointers and longs are 64
bits.  This involved a _LOT_ of changes to "machine-independent" kernel,
and to many of the user-land programs.

So, some details on the status of the port, and a list of supported hardware:

	The port is self-hosting; it is stable enough to build all of its
	constituent binaries  (including GCC and the rest of the tool chain)
	many times over.  I've seen uptimes of more than a week, with
	multiple compiles going 24 hours a day.  It is in "production use"
	for its own development, and will soon be in use by computer science
	researchers.  It's _not_ simply a kernel hacker's toy at this point.

	Lots of things still don't work properly.  In particular, a lot of
	(poorly-written) user-land programs don't work.  As far as I'm
	aware, however, there are no found-but-yet-unfixed bugs in the
	libraries, which makes getting programs working a bit easier.
	Unfortunately, at this time, GDB isn't capable of actually debugging
	programs (though it is good for disassembling them, if you know
	where they crashed).  It's worth noting that the internet protocol
	suite works well (and, indeed, I do most of my work remotedly
	logged in), and the SunRPC library also works.  (Both required serious
	modifications to make them work with 64 bit pointers and longs.)
	Because formatting the manual pages would have required making g++
	and groff work, there are no formatted man pages included and
	there's no easy way to format them.  If you need the manual pages,
	I'd suggest that you look on another NetBSD system.  If you
	absolutely can't do that, OSF/1 manual pages should be OK for
	most tasks.

	There's rudimentary support for running OSF/1 binaries, which I
	originally used when bootstrapping the system.  However, it is only
	capable of running statically linked binaries, so it's not very
	useful except for bootstrapping.  It's hoped that eventually we'll
	be able to run dynamically-linked OSF/1 binaries.  (If you wish to
	work on this, please get in touch with me!)  NetBSD/Alpha can safely
	read and write OSF/1 (v2.0; I would guess v1.x and v3.x as well)
	file systems (assuming you don't have OSF/1's security features
	enabled).  Additionally, the NetBSD/Alpha disklabel format is
	compatible with OSF/1's.

	Supported hardware:
		DEC 3000/[456789]00 (I've only tested it on the 400 and
		600, but the rest should "just work) using the following
		peripherals:

			Serial ports -- barely; the serial driver needs a
				lot of help and is not useful for many
				complex tasks.
			LANCE ethernet -- only the on-board model; I've
				not tried any TurboChannel boards, and
				didn't write complete support for them into
				the driver.
			SCSI system -- it recognizes and can use both
				on-board SCSI controller chips.  However,
				it has trouble working with both at the
				same time.

			At this time neither the Smart Frame Buffer nor the
			ISDN/Audio interface is supported.

		DEC 3000/300 (with the same hardware supported as above;
		I've not tested these very much at all, on any of the
		3000/300 models.)

	Unfortunately, at this time none of the following systems are
	supported:
		AlphaPCs -- the EISA-bus Alpha systems
		AlphaStations -- the PCI-bus Alpha systems
		The Futurebus-based Alpha server systems
		The multiprocessor Alpha systems

Obtaining NetBSD/Alpha sources and binaries:

	This release is being made in two parts, source and binary.  The
	source distribution is a gzipped tar file containing all of the
	sources used to build the system, including the compiler and
	user-land sources.  (Most of the kernel and user-land changes
	have made it back into the NetBSD source tree.  Many have not,
	however, and the compiler shipped with NetBSD doesn't work on
	the Alpha; if you're using NetBSD on the Alpha, you _need_ my
	source distribution.) The binary distribution is a gzipped disk
	image from an rz25 disk; it's approximately 406M ungzipped
	(63M gzipped), and you install it by dd'ing it on to a raw disk;
	more on this later.

	If you wish to obtain the source or binaries for the NetBSD/Alpha
	distribution, send me (cgd@cs.cmu.edu) mail, and I'll arrange to
	get them to you.  They're sufficiently large that I've not yet
	found an FTP site for them, and also, given the preliminary nature
	of this distribution, I want to keep in close contact with
	the people who are using them.

	If you are interested in the NetBSD/Alpha port, I suggest that you
	subscribe to the NetBSD "port-alpha" mailing list by sending an
	email message to majordomo@netbsd.org with no subject and with a
	body of "subscribe port-alpha" (without the quotes).  For help on
	using majordomo, send it mail with an empty subject and body.

Installing the NetBSD/Alpha distribution:

	[ Note that these instructions are minimal; it's assumed that if
	  you're going to be installing this, you're knowledgeable about
	  booting Alphas and doing other sysadmin-ish stuff, are willing
	  to look in your Alpha documentation, or are brave.  If they're
	  really not good enough to get you running, get in touch with me
	  and I'll try to help you. ]

	To install the NetBSD/Alpha distribution, you'll need a disk at
	least the size of an RZ25 -- about 406Mb.  Once you've gotten the
	binary distribution from me, gunzip it and dd it to the raw disk.
	The binary distribution includes a disklabel and boot block, so you
	don't need to do anything special to make it bootable.  I created
	the binary distribution's file systems with an older version (4.3
	Reno) of the Berkeley Fast File System format, so that you can
	mount, read, and write them under OSF/1.

	Once you've dd'd the image to the disk, set your system to use a
	serial console.  Boot the Alpha with the NetBSD disk, supplying the
	boot flag "-s".  It should print something about "NetBSD/Alpha Boot
	program", load the kernel, print a copyright, and print various
	startup messages.  Included among those startup messages will be
	SCSI bus/id to device name mappings for all of the SCSI devices
	that NetBSD recognizes.  Eventually, it'll ask you for the name of
	the root device.  It expects something like "sd0", "sd1", etc., and
	you should pick the name that corresponds to the NetBSD disk.

	After a short while, you should be asked for the name of a shell
	to use; just hit return.  You're advised to fsck the disk at this
	point (the root partition is partition 'a' and the /usr partition
	is partition 'd'), remount the root partition read-write (use mount
	-u root-dev /), and create some necessary system information files:
		/etc/hosts
		/etc/resolv.conf (if you want to use DNS)
		/etc/myname (the hostname of the machine)
		/etc/mygate (the LAN's gateway's IP address, if your network
			setup requires that it be named explicitly)
		/etc/hostname.le0 (to describe the enet addr, etc., for the
			Alpha's ethernet.  The format can be discerned by
			looking in /etc/netstart. As an example, for
			my development machine, it's:
			inet macallan.dssc.cs.cmu.edu 0xffff0000 128.2.255.255
			     ^^^^^^^^^^^^^^^hostname  ^^^netmask ^^^broadcast)
		/etc/fstab (a prototype is in /etc/fstab.sd)
	(You can also create the files mentioned above by mounting the
	disk's file systems under OSF/1 and filling in the appropriate
	information.)

	Once those files are created, you should be able to boot the system
	multi-user.  To do so, halt the system and boot again from the
	NetBSD disk, this time supplying the boot flags "-a".

	Once the system has booted, you should be able to log in over the
	network.  (Log in as root, at first, then use vipw to create user
	account(s) and re-log in as the appropriate user.)  If you used a
	disk other than an RZ25, you may also want to edit the disk's
	disklabel, and create one or more partitions to use the extra space.

Using NetBSD/Alpha:
	You'll probably want to NFS mount the sources from another machine;
	that's what I do, and it works just fine.  If you'd like tips on
	good ways to keep the NetBSD sources under source control, just ask.

	A fair number of binaries don't work properly.  For example:
		GDB won't properly run programs or debug core files; someone
			needs to write support for NetBSD/Alpha.
		diff dumps core if there are differences in the files being
			compared (but it _doesn't_ dump core if they're the
			same!)
		ps and w don't work properly, for several reasons:
			(a) they don't know how to read an ECOFF binary's
				namelist, so can't find the addresses of
				things in core
			(b) I've thus far been lazy, and didn't bother
				creating some of the necessary entries in
				the device switches (e.g. /dev/drum),
				because I knew nothing could use them
				because of (a) anyway...

	As noted above, the SCSI code is reliable only when being used with
	one SCSI bus at a time; this is obviously a bug.  Additionally, the
	SCSI driver seems unhappy about dealing with certain types of disk
	drives (e.g. the IBM Lightning).  I don't know why these problems
	exist yet, but it's worth noting that somebody's in the process of
	rewriting the 53c94 chip support from the ground up because the
	current support is "somewhat lacking."  (This should solve at least
	the latter problem.)

	Because I've been working on getting the system up and running, then
	out the door, I've not had much time to do performance analysis on
	the kernel, nor tried to improve performance in any way.  Some of
	the code is awfully rough.  That being said, on a lot of operations
	I'm seeing performance comparable to that of OSF/1 on the same
	hardware, so I've not gone too far wrong anywhere.

	I've run 'paranoia' on NetBSD/Alpha, and it reports one defect (the
	same result as for OSF/1).

Thanks to:
	Carnegie Mellon University, for funding for this project.
	Digital Equipment Corporation, for the hardware and documentation.
	Keith Bostic, for writing and/or working on a large chunk of the
		code, and for general moral corruption and good humor.
	Kirk McKusick, for being the Final Arbiter of Taste and Style.
	Jeff Mogul, for providing moral support, documentation, and
		pointers thereto.
	Various people working on NetBSD, for suggestions, sanity checking,
		drivers, etc.
	Whoever I'm forgetting, for things that I don't remember right now.


That's it for now; get in touch if you'd like to get copies of the software
and/or would like to contribute to the development effort.  I'll be sending
out status reports to various places (probably including the place(s) you
saw this announcement) as things progress.


Chris Demetriou
cgd@cs.cmu.edu