summaryrefslogtreecommitdiff
path: root/release
diff options
context:
space:
mode:
Diffstat (limited to 'release')
-rw-r--r--release/=announce-0.0111
-rw-r--r--release/=announce-0.170
-rw-r--r--release/=announce-0.262
-rw-r--r--release/COPYING.LIB481
-rw-r--r--release/ChangeLog298
-rw-r--r--release/INSTALL-binary472
-rw-r--r--release/Makefile85
-rw-r--r--release/README13
-rw-r--r--release/SETUP49
-rw-r--r--release/SOURCES.0.0111
-rw-r--r--release/SOURCES.0.2110
-rw-r--r--release/bfloppy-special.copy1
-rw-r--r--release/bfloppy.boot14
-rw-r--r--release/bfloppy.copy11
-rw-r--r--release/bfloppy1-special.copy1
-rw-r--r--release/bfloppy1.copy7
-rw-r--r--release/bfloppy1.grub29
-rw-r--r--release/bfloppy2-special.copy2
-rw-r--r--release/bfloppy2.boot14
-rw-r--r--release/bfloppy2.copy4
-rw-r--r--release/checklist61
-rw-r--r--release/dist-README39
-rwxr-xr-xrelease/fstab-to-settrans1
-rwxr-xr-xrelease/install-stripped184
-rw-r--r--release/menu.lst50
-rwxr-xr-xrelease/mkemptyso.sh5
-rw-r--r--release/mkfsimage.sh412
-rwxr-xr-xrelease/mksmallso.sh48
-rw-r--r--release/release-steps8
-rw-r--r--release/rfloppy-special.copy3
-rw-r--r--release/rfloppy.copy175
-rw-r--r--release/rfloppy.group1
-rw-r--r--release/rfloppy.nss19
-rw-r--r--release/rfloppy.passwd1
-rw-r--r--release/servers.boot16
-rw-r--r--release/tool-Makefile93
36 files changed, 3061 insertions, 0 deletions
diff --git a/release/=announce-0.0 b/release/=announce-0.0
new file mode 100644
index 00000000..7aa1fa9f
--- /dev/null
+++ b/release/=announce-0.0
@@ -0,0 +1,111 @@
+
+
+I am pleased to announce version 0.0 of the GNU Hurd, available via
+anonymous FTP from prep.ai.mit.edu [18.159.0.42] in the file
+/pub/gnu/hurd-0.0.tar.gz (about 1.2 MB compressed).
+
+This file contains complete source code for the following:
+
+Hurd servers:
+
+ auth, crash, devio, devport, exec, ext2fs, fifo, fwd, ifsock, init,
+ magic, new-fifo, nfs, null, pfinet, pflocal, proc, symlink, term,
+ ufs.
+
+Hurd libraries:
+
+ diskfs, fshelp, ihash, iohelp, netfs, pager, pipe, ports, ps,
+ shouldbeinlibc, store, threads, trivfs.
+
+Hurd utilities and other programs:
+
+ boot, shd, ps, settrans, showtrans, sync, su, mount, fsysopts,
+ storeinfo, login, w, uptime, hurdids, loginpr, sush, vmstat,
+ portinfo, devprobe, reboot, halt, fsck, fsck.ufs, mkfs.ufs, clri.ufs,
+ stati.ufs, getty, rc.
+
+
+------
+
+
+In addition, we have prepared a binary distribution of a complete
+version 0.0 GNU system corresponding to this Hurd release. This
+release runs only on PC-AT compatible systems with i[345]86
+processors.
+
+The GNU Hurd, plus Mach, is a kernel, not an operating system. The
+GNU operating system, like the Unix operating system, consists of many
+components, including kernel, libraries, compilers, assembler, shell,
+parser generators, utilities, window system, editors, text formatters,
+and so on. The GNU project set out a decade ago to develop this
+system, and we've been writing various components of it ever since.
+
+This release uses the `UK22' version of the Mach kernel, as
+distributed by the University of Utah. It is too difficult to prepare
+a detailed list of supported devices at this point. Common disk
+controllers and ethernet cards are generally supported.
+
+This release does not contain the X Window System.
+
+This release may be fetched by anonymous FTP from prep.ai.mit.edu
+[18.159.42] in the directory /pub/gnu/gnu-0.0/.
+
+In that directory, you should find the following files:
+
+ README
+ SOURCES
+ INSTALL-binary
+ grub-boot.image (about 1.4 MB, not compressed)
+ gnu-0.0.tar.gz (about 56.9 MB compressed)
+ gnu-0.0-stripped.tar.gz (about 26.2 MB compressed)
+
+SOURCES contains a complete list describing the sources for the
+binaries found in the image. INSTALL-binary contains complete
+installation instructions for this release.
+
+(The files README, SOURCES, and INSTALL-binary are also found in the
+root directory of the gnu-0.0 release.)
+
+gnu-0.0.tar.gz holds the image of the complete system. It unpacks
+into a directory that requires approximately 233 MB of disk space.
+
+gnu-0.0-stripped.tar.gz holds the same contents as gnu-0.0, except
+that executable programs have been stripped to save space, and the
+libraries have had debugging symbols stripped to save space and speed
+linking. It unpacks into a directory that requires about 85.5 MB of
+disk space.
+
+We recommend using the unstripped image, or you will be unable to
+debug anything. Surely there are bugs. So fetch the unstripped
+image, at least to have around.
+
+grub-boot.image is an image of a 3.5" floppy disk that you will need
+in order to complete part of the installation instructions.
+
+The following free software packages are found in this release:
+
+ autoconf, automake, bash, bc, binutils, bison, cpio, cvs, diffutils,
+ doschk, e2fsprogs, ed, emacs, fileutils, findutils, flex, from, gawk,
+ gcal, gcc, gdb, gdbm, gettext, glibc, gmp, gperf, grep, grub, gzip,
+ hello, hurd, indent, inetutils, less, mach, make, m4, miscfiles,
+ ncurses, nethack, nvi, patch, ptx, rcs, readline, recode, sed,
+ serverboot, sharutils, shellutils, tar, termcap, termutils, texinfo,
+ textutils, time, wdiff.
+
+
+------
+
+
+Here are md5sum checksums for the files mentioned in this message:
+
+b5f888bab3eb193fe97a00a141324c9d INSTALL-binary
+345dcd826747d7b11fc78f4db162d75b README
+1a5744bb4ed3448045fa6d24153d65fe SOURCES
+f7b1bc428bc4ee29977a5b28f5762092 gnu-0.0-stripped.tar.gz
+24554c58e5c89f295176e17d21dbae8e gnu-0.0.tar.gz
+8338c619d860b71bc4128c9c0fd39d63 grub-boot.image
+1fd18ccc4c81d051b83d28b13dc07ee2 hurd-0.0.tar.gz
+
+-----
+
+Br. Thomas Bushnell, n/BSG
diff --git a/release/=announce-0.1 b/release/=announce-0.1
new file mode 100644
index 00000000..b33af968
--- /dev/null
+++ b/release/=announce-0.1
@@ -0,0 +1,70 @@
+
+
+I am pleased to announce version 0.1 of the GNU Hurd, available via
+anonymous FTP from prep.ai.mit.edu [18.159.0.42] in the file
+/pub/gnu/hurd-0.1.tar.gz (about 1.2 MB compressed). There is also a
+patch file of diffs from the 0.0 release in
+/pub/gnu/hurd-0.0-0.1-diff.gz (about 75 KB compressed).
+
+(The GNU Hurd, plus Mach, is a kernel, not an operating system. The
+GNU operating system, like the Unix operating system, consists of many
+components, including kernel, libraries, compilers, assembler, shell,
+parser generators, utilities, window system, editors, text formatters,
+and so on. The GNU project set out a decade ago to develop this
+system, and we've been writing various components of it ever since.)
+
+This release contains many bug fixes from version 0.0. Many thanks to
+all the people who are helping find bugs!
+
+The best way you can help find bugs is to try and compile and use on
+the Hurd as many programs as you can find and find out where bugs
+still exist. There are also unimplemented features, and your reports
+will help us to prioritize which things we work on.
+
+Brief description of important news:
+
+ This release contains several new utilities:
+ * e2os
+ which modifies the "creator OS" field of an ext2fs filesystem
+ * nfsd
+ which implements an NFS server. It's still relatively untested,
+ so people are invited to use it for non-critical things and
+ report on successes and failures.
+ * vminfo
+ prints the virtual memory map of a process
+
+ This release contains one new shared library, `hurdbugaddr' which is
+ only used internally to various Hurd servers and utilities.
+
+ Problems in version 0.1 that prevented ext2fs from working correctly
+ have all been fixed, and the source files that were accidentally
+ missing from 0.0 have been added.
+
+For more detailed news, see the NEWS file in the distribution.
+
+There is no binary release corresponding to this source release. A
+new binary release will probably be made together with the next source
+release.
+
+This release contains complete source code for the following:
+
+Hurd servers:
+
+ auth, crash, devio, devport, exec, ext2fs, fifo, fwd, ifsock, init,
+ magic, new-fifo, nfs, null, pfinet, pflocal, proc, symlink, term,
+ ufs.
+
+Hurd libraries:
+
+ diskfs, fshelp, ihash, iohelp, netfs, pager, pipe, ports, ps,
+ shouldbeinlibc, store, threads, trivfs, hurdbugaddr.
+
+Hurd utilities and other programs:
+
+ boot, shd, ps, settrans, showtrans, sync, su, mount, fsysopts,
+ storeinfo, login, w, uptime, hurdids, loginpr, sush, vmstat,
+ portinfo, devprobe, reboot, halt, fsck, fsck.ufs, mkfs.ufs, clri.ufs,
+ stati.ufs, getty, rc, e2os, vminfo, nfsd.
+
+
+Thomas Bushnell, n/BSG
diff --git a/release/=announce-0.2 b/release/=announce-0.2
new file mode 100644
index 00000000..2d67687a
--- /dev/null
+++ b/release/=announce-0.2
@@ -0,0 +1,62 @@
+I am pleased to announce version 0.2 of the GNU Hurd, available via
+anonymous FTP from prep.ai.mit.edu [18.159.0.42] in the file
+/pub/gnu/hurd-0.2.tar.gz (about 1.37 MB compressed).
+
+(The GNU Hurd, plus Mach, is a kernel, not an operating system. The
+GNU operating system, like the Unix operating system, consists of many
+components, including kernel, libraries, compilers, assembler, shell,
+parser generators, utilities, window system, editors, text formatters,
+and so on. The GNU project set out a decade ago to develop this
+system, and we've been writing various components of it ever since.)
+
+This release contains many bug fixes from version 0.1. Many thanks to
+all the people who are helping find bugs!
+
+The best way you can help find bugs is to try and compile and use on
+the Hurd as many programs as you can find and find out where bugs
+still exist. There are also unimplemented features, and your reports
+will help us to prioritize which things we work on.
+
+The system is vastly more reliable than it has been in the past.
+
+One important addition:
+
+ New programs addauth, rmauth, unsu, su, and setauth modify the uid
+ sets of running programs. Using addauth you can add root to your
+ emacs, write a file, and then use rmauth to take the uid back. (Of
+ course, passwords are required when necessary.) New program `ids'
+ will tell you what all the user ids are that a program has. Note
+ that in the Hurd a program can have several user ids all at once,
+ just like Unix supports having several group ids. Now that you can
+ dynamically change the ids of running programs, system
+ administration (among other things) becomes much easier.
+
+For more detailed news, see the NEWS file in the distribution.
+
+This release contains complete source code for the following:
+
+Hurd servers:
+
+ auth, crash, devport, exec, ext2fs, fifo, fwd, ifsock, init,
+ magic, new-fifo, nfs, null, pfinet, pflocal, proc, symlink, term,
+ ufs, storeio, firmlink.
+
+Hurd libraries:
+
+ diskfs, fshelp, ihash, iohelp, netfs, pager, pipe, ports, ps,
+ shouldbeinlibc, store, threads, trivfs, hurdbugaddr, ftpconn
+
+Hurd utilities and other programs:
+
+ boot, shd, ps, settrans, showtrans, sync, su, mount, fsysopts,
+ storeinfo, login, w, uptime, ids, sush, vmstat, portinfo, devprobe,
+ reboot, halt, fsck, fsck.ufs, mkfs.ufs, clri.ufs, stati.ufs, getty,
+ rc, e2os, vminfo, nfsd, mail.local, serverboot, MAKEDEV, loginpr,
+ addauth, rmauth, unsu, setauth, ftpcp, ftpdir.
+
+We are also making a complete GNU 0.2 binary release, which will
+include Hurd 0.2, glibc 2.0.4, gnumach 1.1.2, and many other
+programs. This binary release is announced separately.
+
+
+Thomas Bushnell, n/BSG
diff --git a/release/COPYING.LIB b/release/COPYING.LIB
new file mode 100644
index 00000000..92b8903f
--- /dev/null
+++ b/release/COPYING.LIB
@@ -0,0 +1,481 @@
+ GNU LIBRARY GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the library GPL. It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it. You can use it for
+your libraries, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if
+you distribute copies of the library, or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link a program with the library, you must provide
+complete object files to the recipients so that they can relink them
+with the library, after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library. If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, so that any problems introduced by others will not reflect on
+the original authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software. To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+ Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs. This
+license, the GNU Library General Public License, applies to certain
+designated libraries. This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+ The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it. Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program. However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+ Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries. We
+concluded that weaker conditions might promote sharing better.
+
+ However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves. This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them. (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.) The hope is that this
+will lead to faster development of free libraries.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, while the latter only
+works together with the library.
+
+ Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+ GNU LIBRARY GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+General Public License (also called "this License"). Each licensee is
+addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also compile or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ c) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ d) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the source code distributed need not include anything that is normally
+distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Library General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with this library; if not, write to the Free
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
diff --git a/release/ChangeLog b/release/ChangeLog
new file mode 100644
index 00000000..2874cd9c
--- /dev/null
+++ b/release/ChangeLog
@@ -0,0 +1,298 @@
+1999-09-07 Thomas Bushnell, BSG <tb@mit.edu>
+
+ * SETUP: Also set /servers/password.
+
+1999-07-30 Roland McGrath <roland@baalperazim.frob.com>
+
+ * mksmallso, mkemptyso: Files removed. The *.sh files are the source.
+
+1999-05-15 Roland McGrath <roland@baalperazim.frob.com>
+
+ * servers.boot: Remove obsolete $(default-pager) tag.
+
+1997-07-22 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * rfloppy.copy: Remove hurd/devport.
+
+1997-07-21 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * bfloppy1.copy: Compress boot/serverboot again.
+ * bfloppy1.grub: Use it.
+
+1997-07-15 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * mkfsimage.sh: Let uncompressed images be smaller than the
+ maximum size.
+
+1997-07-14 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * rfloppy.copy: Add bin/rm.
+
+1997-07-09 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * bfloppy1.grub: Use /boot/serverboot uncompressed.
+
+ * rfloppy.nss: New file.
+ * rfloppy-special.copy: etc/nsswitch.conf.
+ * rfloppy.copy: Add sbin/swapon, servers/socket/inet, servers/socket/local.
+
+ * bfloppy2.boot: Specify a sync interval of two seconds to avoid
+ accumulating tons of memory when doing massive copies.
+
+1997-07-08 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * bfloppy2.boot: Renamed from bfloppy1.boot.
+ Use ext2fs.static rather than ufs.static.
+ * bfloppy2-special.copy: mkdir boot.
+ Use bfloppy2.boot rather than bfloppy1.boot.
+ * bfloppy1.copy: Don't compress boot/serverboot (grub can't handle it).
+
+1997-07-07 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * mkfsimage.sh: Add support for dependency generation.
+ * Makefile (floppy-copy, scripts): New variables.
+ (DIST_FILES): Use them.
+ (boot-floppies): New rule.
+ (%.ext2.gz, %.ext2): New rules.
+ [$(no_deps) != t]: Include boot floppy dependency files (.f_d).
+ (%.ext2.f_d %.ext2.gz.f_d): New rule for generating floppy dep files.
+
+1997-07-03 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * rfloppy.copy: Remove bin/ps, lib/libps.so, sbin/fsck.ufs, & sbin/libnss_db*.
+
+1997-06-30 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * rfloppy.copy: Add bin/ed, sbin/fdisk.
+ * Makefile: Make floppy targets depend on the appropriate .copy files.
+
+ * bfloppy1.copy, bfloppy1-special.copy, bfloppy2.copy,
+ bfloppy2-special.copy, bfloppy1.grub, bfloppy1.boot: New files.
+ * Makefile (bfloppy1.ext2, bfloppy2.ext2): New targets.
+
+1997-06-27 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * rfloppy.group, rfloppy.passwd, rfloppy-special.copy: New files.
+ * rfloppy.copy: Add etc/protocols & etc/services.
+ Put dev & lib at end (since they're big & monotonous).
+ * Makefile (rfloppy.ext2.gz): Copy from $(srcdir) using
+ rfloppy-special.copy.
+
+ * mkfsimage.sh: Get rid of debugging noise.
+ Use the tar --same-owner option work around a bug with tar
+ not preserving ownership when the current user isn't root.
+ Don't pre-touch `makedev's.
+
+1997-06-25 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * mkfsimage.sh: Correct parsing of delayed translator specs.
+
+1997-06-24 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * mkfsimage.sh: Set the owner of created files. Add --owner option.
+ Rename `settrans' copy-op to `copytrans', & implement `settrans'.
+ * rfloppy.copy: Add bin/fsysopts, bin/devprobe, bin/vmstat.
+ Explicitly specify a translator for servers/socket/1.
+ * Makefile (bfloppy.ext2, rfloppy.ext2.gz): Set owner to root.wheel.
+ Use $(bfloppy-src) as the source, rather than /.
+ (bfloppy-src): New variable.
+
+ * mkfsimage.sh: New file.
+ * bfloppy.copy, rfloppy.copy, bfloppy-special.copy: New files.
+ * Makefile (tool-files): Variable removed.
+ (install-tools): Rule removed.
+ (bfloppy.ext2, rfloppy.ext2.gz): New rules.
+ (dist-files): Include mkfsimage.sh, bfloppy.copy,
+ bfloppy-special.copy, rfloppy.copy.
+
+1997-06-19 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * bfloppy.boot: New file.
+ * tool-Makefile: Trash everything but floppy production rules.
+
+Mon Jun 23 11:47:51 1997 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * INSTALL-binary (STEP I): Tell to use e2os if the filesystem was
+ made with Linux.
+
+1997-06-17 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * mksmallso, mkemptyso: New files.
+ * Makefile (tool-files): add mksmallso & mkemptyso.
+
+Mon Jun 16 11:56:33 1997 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * Makefile (dist-links): Make $(dist-root)/boot/grub and
+ $(dist-root)/share/misc. Reported by Marcus G. Daniels
+ (marcus@cathcart.sysc.pdx.edu).
+
+Wed Jun 11 12:05:02 1997 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * Makefile (dist-links): Create /servers/exec node.
+
+ * servers.boot: Dynamic linker is now `ld.so.1', not `ld.so'.
+
+ * menu.lst: Kernel is now `gnumach', not `kernel'.
+
+Tue Jun 10 18:48:10 1997 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * INSTALL-binary (Subroutine): Update location of NetBSD install
+ floppies. Also specify to use -P mount option on nfs mount.
+
+ * menu.lst: Fix typo in floppy -> hd install.
+
+ * Makefile (dist-files): Replace SOURCES.0.0 with SOURCES.0.2.
+ (install-dist): Install SOURCES.0.2 instead of SOURCES.0.0.
+
+Mon Jun 9 12:18:50 1997 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * dist-README: Update version number.
+ * INSTALL-binary: Likewise. Also added some instructions to help
+ Linux users.
+
+Mon May 26 23:03:41 1997 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * checklist: Add su, addauth, setauth, ids, & vminfo to list of
+ setuid programs.
+
+Wed May 7 15:07:48 1997 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * INSTALL-binary (STEP VI): Suggest building a kernel.
+
+Fri Apr 11 14:21:29 1997 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * SETUP: Comment out frobbing of BOOT_DEV; grub does that on it's
+ own now.
+ * INSTALL-GRUB-MBR: Delete file.
+ * Makefile (dist-files): Omit INSTALL-GRUB-MBR.
+ (install-dist): Likewise.
+ * menu.lst (title): Replace install entries with new versions.
+ * INSTALL-binary (STEP IV): Revised instructions to correspond to
+ new reality, with Grub 0.4.
+
+Tue Sep 24 16:47:04 1996 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * servers.boot (/hurd/ufs.static): Change --machdev to -Tdevice.
+
+Tue Sep 17 14:36:39 1996 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * SETUP: Don't prepend `r' to $BOOT_DEV when invoking INSTALL-GRUB-MBR.
+
+Fri Aug 16 10:50:01 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * SETUP: Set `PATH'.
+
+Wed Aug 14 16:23:11 1996 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * tool-Makefile (INSTALL, IMAGE): New variables.
+ Change all rules &c to use these variables instead of
+ `../hurdinst' and `hurd-image'.
+
+Mon Aug 5 11:44:30 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * SETUP: Put `r' before BOOT_DEV in call to INSTALL-GRUB-MBR.
+ Repair syntax of test to see if BOOT_DEV is valid.
+
+ * Makefile (dist-links): Use correct pathnames for `ln' commands;
+ use -f. Repair touch command to avoid {}.
+
+Wed Jul 31 13:15:38 1996 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * install-stripped (copy/copyattrs): New function.
+ (copy/plaincopy, copy/objcopy, copy): Use copyattrs.
+
+ * Makefile (install-tools): Copy from the right place. Make the
+ installed install-stripped executable.
+
+Tue Jul 30 12:05:54 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * INSTALL-binary: Don't make stupid claims about avoiding use of
+ cylinder zero.
+
+Mon Jul 29 14:47:53 1996 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
+
+ * checklist: Add cc to the list of symlinks to check.
+
+Thu Jul 25 23:22:47 1996 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * checklist: Add vmstat to the list of setuid programs.
+
+Thu Jul 18 18:27:14 1996 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * SETUP: Install grub with INSTALL-GRUB-MBR if desired.
+
+ * INSTALL-GRUB-MBR: Fix quoting in last echo.
+
+Wed Jul 17 00:17:05 1996 Michael I. Bushnell, p/BSG <mib@gnu.ai.mit.edu>
+
+ * INSTALL-binary: Yet more changes.
+
+Tue Jul 16 23:41:09 1996 Michael I. Bushnell, p/BSG <mib@gnu.ai.mit.edu>
+
+ * Makefile (dist-files): boot-menu.grub -> menu.lst.
+ (install-dist): Likewise; also put it in /boot/grub and don't
+ bother with link in /etc.
+ * menu.lst: Renamed from boot-menu.grub.
+
+Mon Jul 15 17:18:05 1996 Michael I. Bushnell, p/BSG <mib@gnu.ai.mit.edu>
+
+ * INSTALL-binary: Many changes.
+
+ * boot-menu.grub: Rewritten; much nicer now.
+
+Mon Jul 15 15:58:46 1996 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * INSTALL-GRUB-MBR: Only read first block of disk as mbr.
+ "in)" -> "in".
+
+ (INSTALL-GRUB-MBR): New file.
+ * Makefile (dist-files): Add INSTALL-GRUB-MBR.
+ (install-dist): Install INSTALL-GRUB-MBR.
+
+Sun Jul 14 20:21:12 1996 Michael I. Bushnell, p/BSG <mib@gnu.ai.mit.edu>
+
+ * servers.boot: That's STATIC ufs.
+
+Sat Jul 13 18:06:03 1996 Michael I. Bushnell, p/BSG <mib@gnu.ai.mit.edu>
+
+ * SETUP: Make ptys too.
+
+ * SETUP: Setup /servers/crash too.
+
+ * COPYING.LIB: New file.
+ * Makefile (install-dist): Install COPYING.LIB and COPYING.
+ Fix commands to install most everything from $(srcdir).
+
+ * boot-menu.grub: New file.
+ * servers.boot: New file.
+ * Makefile (dist-files): Add servers.boot and boot-menu.grub.
+ (install-dist): Install servers.boot and boot-menu.grub.
+ (dist-links): Create $(dist-root)/boot.
+
+ * INSTALL-binary: Various changes.
+
+Fri Jul 12 15:18:25 1996 Michael I. Bushnell, p/BSG <mib@gnu.ai.mit.edu>
+
+ * install-stripped (makelocalhardlink): Only do cleverness if TO
+ already exists. If it's not there, just make the link.
+
+Tue Jul 9 20:10:21 1996 Miles Bader <miles@gnu.ai.mit.edu>
+
+ * INSTALL-binary: Changed.
+
+Tue Jul 9 18:03:45 1996 Michael I. Bushnell, p/BSG <mib@gnu.ai.mit.edu>
+
+ * INSTALL-binary: Various changes.
+
+ * Makefile (install-dist): Depend on dist-links.
+ (dist-links): New target.
+
+ * SETUP: Put pflocal on /servers/socket/local (which will be a
+ link to /servers/socket/1).
+
+ * SETUP: Set root writable before doing anything else; offer to
+ reboot the system when through.
+
+Mon Jul 8 17:47:58 1996 Michael I. Bushnell, p/BSG <mib@gnu.ai.mit.edu>
+
+ * INSTALL-binary: Various changes.
diff --git a/release/INSTALL-binary b/release/INSTALL-binary
new file mode 100644
index 00000000..d13beb8c
--- /dev/null
+++ b/release/INSTALL-binary
@@ -0,0 +1,472 @@
+-*- Text -*-
+Instructions for bootstrapping the Hurd from binary images (i386).
+GNU Version 0.2
+
+
+This is the Hurd. Welcome.
+
+This directory contains i386 binaries for the Hurd and various
+programs built to run under it.
+
+See the file SOURCES to see where each package came from. Remember
+that you must adhere to the GNU General Public License and the GNU
+Library General Public when distributing this binary snapshot. See
+/share/misc/COPYING and /share/misc/COPYING.LIB for copies of these
+licenses.
+
+If you have noticed that these steps are rather long and a bit too
+complex, you are right. One of our upcoming tasks is to develop a
+convenient package mechanism and more streamlined installation
+procedure.
+
+Bug reports for programs in this distribution should be sent to the
+maintainer of the program. For a complete list of which mailing lists
+get bug reports for which programs, ask `gnu@prep.ai.mit.edu'.
+
+Bug reports for the GNU Hurd should be sent to the mailing list
+`bug-hurd@prep.ai.mit.edu'. Please do not send requests for
+assistance in installing or using the software to that address.
+Instead, send requests for assistance to the mailing list
+`help-hurd@prep.ai.mit.edu'. You can join these lists by sending a
+request to `bug-hurd-request@prep.ai.mit.edu' or
+`help-hurd-request@prep.ai.mit.edu' respectively.
+
+In addition, bug reports or requests for help in using the system as a
+connected whole (as opposed to for particular programs) should be sent
+to the hurd mailing lists.
+
+
+
+STEP I:
+
+Fetch the file `grub-boot.image' from the FTP site. It should be
+in the same directory as the Hurd binary image tar file. Copy this
+file onto a fresh floppy with the command:
+ dd if=grub-boot.image of=/dev/fd0 bs=512
+This is your `grub boot floppy', referred to below.
+
+Unpack the binary distribution onto a fresh disk partition, which
+needs to be BSD FFS format or Linux ext2fs format.
+
+Start with a system already running BSD:
+
+ You should ideally use a fresh disk, labelling it with the BSD
+ `disklabel' command.
+
+ Make the A partition large enough to hold the entire Hurd binary
+ image, and then some, and make a B partition for swap. Use newfs to
+ make a filesystem on the A partition, mount it, and extract the
+ entire Hurd image into it. Make sure you do this as root, and
+ remember to give tar the `p' option.
+
+Start with a system already running a GNU/Linux system:
+
+ Again, we suggest using a fresh disk. But you can also use an
+ existing partition. Make it big enough to hold the entire Hurd
+ binary image, and then some. Make sure you have a partition for
+ swap too. Extract the binary image onto the new partition using
+ tar; make sure you sue the `p' option to tar.
+
+ You need to set the "owning OS" field for this filesystem to "hurd";
+ otherwise you will not be able to use Hurd-related extensions on
+ it. (And using those extensions is required on the root
+ filesystem.) Run the command `e2os DEVICE hurd' after the
+ filesystem is unmounted in order to accomplish this.
+
+If you do not have a system running BSD or a GNU/Linux system, you can
+install using the NetBSD boot floppies. To do this, you do NOT need
+to install NetBSD; you will just be using their boot floppies
+briefly.
+
+ Unpack the entire Hurd image somewhere accessible by NFS. Then see
+ the instruction subroutine in this file labelled `Installing from
+ NetBSD boot floppies' and follow them.
+
+We plan to have our own boot floppies, which will make this all a fair
+bit easier.
+
+
+
+STEP II:
+
+You might need to change the device on which paging is done. This is
+done in a file in the Hurd partition called `boot/servers.boot', on
+the line which looks like:
+
+ /dev/sd0b $(add-paging-file) $(default-pager)
+
+`sd0b' is the paging device. Replace this with the correct device
+name (this is a mach partition name), or comment out the line if you
+don't want paging. Note that you don't have to do anything to
+initialize swap partitions, unlike Linux.
+
+If your filesystem is an ext2fs filesystem (if you are starting with a
+system already running a GNU/Linux system, for example), then you also
+should change the reference to /hurd/ufs.static into a reference to
+/hurd/ext2fs.static.
+
+(If you did STEP I using NetBSD boot floppies, then this file should
+be /mnt/boot/servers.boot.)
+
+
+
+STEP III:
+
+(If you used NetBSD boot floppies, shutdown NetBSD with the commands
+`umount /mnt' and `halt'.)
+
+Now boot the Hurd the following way. First, boot the grub boot
+floppy. When the menu comes up, select one of the single user boot
+commands, depending on whether you have a SCSI disk (sd0) or an IDE
+type disk (hd0). If you put the Hurd on something other than
+partition `a', then you will need to edit the boot commands
+appropriately before booting. (Editing the commands using grub only
+affects what you boot that time, it does not affect what the floppy
+does the next time you boot it.)
+
+Mach should load, and then the Hurd should start, saying something like:
+
+ Hurd server bootstrap: ufs exec init proc auth.
+ Single-user bootstrap: term sh.
+ bash#
+
+
+
+STEP IV:
+
+When GNU boots the first time, you might see some confusing messages,
+and you may notice that pipes don't work.
+
+In order to set up the translators for this to be a fully functional
+Hurd system, say
+
+ /bin/sh /SETUP
+
+This will set up some initial translators so that the system runs
+normally, and then offer to reboot the system. When you get to the
+GRUB menu, do step V.
+
+
+NOTE: Do NOT RUN BSD FSCK on a Hurd FFS!
+
+ (Hurd partitions, especially the root partition, may have filesystem
+ extensions that BSD does not know about. Most of these are ignored
+ by the BSD kernel and filesystem tools. One of them, `passive
+ translators' (a/k/a non-transient mounts), is not understood by the
+ BSD fsck. If you run the BSD fsck on a Hurd partition with such
+ translators, things might fail *massively*. The Hurd version of
+ fsck does not, of course, have any such problem.
+
+ (The Hurd root partition needs to have such translators installed in
+ order to work correctly. Other partitions don't; the filesystems
+ support compat options to prevent the use of Hurd filesystem
+ extensions.)
+
+
+
+STEP V:
+
+Now boot from the floppy again. This time, select the option to
+install grub from the floppy. (If your disk isn't known as hd0 to
+grub, then you will need to edit the commands accordingly.) Reset
+your PC and take the floppy disk out of the drive. The hard disk
+should now boot successfully.
+
+Select the single-user boot menu option, and proceed to STEP VI.
+
+The menu that grub provides is found in /boot/grub/menu.lst. You can
+edit that file to change what options the menu provides, as well as
+which option is selected by default. (You can change the one on the
+floppy by mounting the filesystem it contains and editing the file
+there.)
+
+
+
+STEP VI:
+
+Now you have a Hurd system. But in order to make it fully usable, do
+the following:
+
+
+*** make devices
+cd to /dev and make devices.
+
+Say `./MAKEDEV dev1 dev2 dev3 ...'.
+
+Supported devices are:
+ o any hard disk device you have; you must specify both unit number *and*
+ partition. Something like `sd0a' or `hd1f' is called for. Unit
+ number without any partition names the entire disk.
+ o floppy disk drives, give something like `fd0' or `fd1'.
+ o hardwired terminals, something like `com0' or `com1'.
+
+In general, the name of the device to use was printed by Mach when it
+booted.
+
+
+*** setup network
+
+If you want to use the network, set it up thus:
+
+ settrans /servers/socket/inet \
+ /hurd/pfinet --interface=eth0 --address=NN.NN.NN.NN \
+ --gateway=GG.GG.GG.GG --netmask=MM.MM.MM.MM
+
+where NN.NN.NN.NN is your IP address (not hostname, IP address). GG.GG.GG.GG
+is the address of an IP gateway, and MM.MM.MM.MM the netmask for the local
+subnet. If your host is isolated, then you can omit the gateway, and the
+netmask argument is optional if you don't use subnetting. The
+interface name to use was printed by Mach when it booted.
+
+Pfinet currently only supports a single active interface. Parameters may be
+changed while pfinet is running by using fsysopts, e.g.:
+
+ fsysopts /servers/socket/inet --netmask=MM.MM.MM.MM
+
+Make sure you edit /etc/resolv.conf and/or /etc/hosts for the
+nameserver to work properly.
+
+
+*** mount partitions
+
+You can mount a partition (say hd0a) by saying:
+
+ settrans /mnt /hurd/ufs /dev/hd0a
+
+The name `/dev/hd0a' must have been created using `./MAKEDEV hd0a' in
+the /dev directory.
+
+(This is equivalent to Unixy `mount /dev/hd0a /mnt'.)
+
+If it's a Linux ext2 format disk, just do
+
+ settrans /mnt /hurd/ext2fs /dev/hd0a
+
+You can make it readonly thus:
+
+ settrans /mnt /hurd/ufs -r /dev/hd0a
+
+For more information on settrans, see the end of this file.
+
+NFS mounts, not surprisingly, are done thus:
+
+ settrans /mnt /hurd/nfs /remote/file/system remote.host.org
+
+(You may also use the host:fs and fs@host notations if you prefer.)
+NFS supports many options; use `/hurd/nfs --help' to see them all.
+
+The mounts created this way are not transient--they will last across
+reboots, being recorded directly on disk. To get rid of one, say:
+`settrans /mnt' with no further args. The command `showtrans /mnt'
+will show you where it's at right now. However, note that to have them
+automatically fscked, you'll have to make entries in /etc/fstab (see
+`fscking', above).
+
+A temporary mount (which lasts only until the filesystem program is
+killed or the system is rebooted) can be accomplished by giving the -a
+option to settrans thus: `settrans -a /mnt /hurd/ufs /dev/sd0a'.
+(Note the placement of this option, as an arg to settrans, is
+different from the -r options you might give to the filesystem.)
+`showtrans' does not display these temporary mounts.
+
+
+
+
+*** edit configuration files
+
+Edit the password file (/etc/passwd) appropriately.
+
+Add any serial lines you have terminals on to /etc/ttys.
+
+Set your hostname with `echo foo.bar.baz > /etc/hostname'. This will
+then be permanent until you change the file.
+
+Create a link from /etc/localtime to the file describing your timezone
+in /share/zoneinfo. Something like the following command will do the
+trick: `ln /share/zoneinfo/US/Eastern /etc/localtime'. Look at the
+directory /share/zoneinfo to see all the various possibilities.
+
+Edit /etc/fstab according to the disk mounts you've installed; this
+will control which partitions `df' prints and which partitions get
+`fsck' run for them at boot time. It will not affect which partitions
+are mounted; use settrans for that as explained above.
+
+Edit /etc/hosts if you want to. The system works fine without it if a
+name server is available.
+
+Edit resolv.conf to provide for name service appropriate to your
+location.
+
+
+*** build a smaller kernel
+
+As an optional step, you can build a smaller kernel. The distributed
+kernel is quite large, because it includes a great many device
+drivers. If you fetch the gnumach distribution, you can build a
+kernel with only the device drivers you actually need. This will make
+bootstrapping faster, and also take less memory when the system is
+running, and result in a faster system in general.
+
+
+Once you've completed these steps, you can reboot the system multi
+user. Enjoy!
+
+
+
+
+MISCELLANEOUS NOTES:
+
+Fscking:
+
+/sbin/fsck is a wrapper that invokes filesystem-specific backend programs for
+each particular type of filesystem; these backends do the actual work (they
+can be found in the same directory, with names like /sbin/fsck.ufs and
+/sbin/fsck.ext2).
+
+/sbin/fsck will currently only work with filesystems that have entries in the
+file `/etc/fstab'; for those, it will try to be intelligent about making
+active filesystems readonly before fscking them, and telling them to
+incorporate any changes that result (the backend fsck programs do not know
+anything about active filesystems). However, it is up to the user to make
+sure that /etc/fstab accurately reflects reality.
+
+/etc/fstab is the same as in most unix systems -- any filesystems that are
+there and have a non-zero pass number will be automatically fscked during a
+multi-user boot.
+
+You'll certainly want to make an entry in /etc/fstab for the device that
+corresponds to your root filesystem (and make a device entry for it using
+MAKEDEV, as described above).
+
+
+GDB:
+
+The version of gdb included in this release has various features not used by
+most systems, in particular, the `thread' and `info thread' commands.
+
+The Hurd gdb can also debug running programs without halting them,
+which is useful to debug crucial system servers that can't be stopped
+without wedging the system. To do this, give the command `set
+noninvasive on'. Of course, gdb may get confused because data
+structures are changing underneath it, but this generally works pretty
+well. Doing a detach and then another attach usually causes gdb to
+clue in to changes it otherwise misses.
+
+The `portinfo' program is also useful for debugging problems related
+to Mach ports.
+
+
+SETTRANS:
+
+The syntax of settrans is:
+
+ settrans [settrans-option-args] file command-line
+
+All the options after the file are part of the command given to the
+filesystem. To see the args supported by ufs or ext2fs, say
+`/hurd/ufs --help' or `/hurd/ext2fs --help'.
+
+settrans itself supports several args. (Use settrans --help for a
+summary.) Once a filesystem is running, some options may be changed
+at runtime using the `fsysopts FSYS' command, where FSYS is the mount
+point (note that there is currently no easy way of finding out which
+ones).
+
+
+CRASH SERVER:
+
+When programs get fatal signals in the Hurd, they call the "crash
+server". Right now, the crash server suspends the program, and the
+rest of its process group.
+
+At that point, if you resume the program, it will exit. But you can
+also attach a debugger to it, and all it's current dynamic state will
+still be there.
+
+If you would rather have crashing programs just exit, and not suspend,
+then disable the crash server by saying `settrans /servers/crash'.
+You can always reenable it later, if you like, by typing the command
+`settrans /servers/crash /hurd/crash'.
+
+Core dumps are not yet supported.
+
+
+
+
+Subroutine: Installing from NetBSD boot floppies
+
+If you do not have a system running BSD, the NetBSD 2-floppy install
+set contains enough tools to make a new filesystem using newfs and
+copy to it from nfs. You can fetch these floppies from ftp.netbsd.org
+in the directory /pub/NetBSD/NetBSD-1.1/floppies. The NetBSD install
+script will start automatically when you boot from the floppies, and
+we suggest you use it in order to partition and set up your disk.
+
+Here are detailed instructions for this step, assuming you are using
+NetBSD boot floppies, and you have the Hurd binary snapshot unpacked
+somewhere accessible via nfs. It is assumed here that your machine's
+network address is MY-ADDR and that the nfs server's address is
+SERVER-ADDR. The nfs mountpoint on the server is presumed to be
+SERVER-DIR. (MY-ADDR and SERVER-ADDR should be IP addresses in dot
+notation, not hostnames.) Your server and your new machine need to be
+on the same network.
+
+If you installing this way, you probably want to do STEP II first,
+because your nfs server probably has more convenient editors than the
+NetBSD boot floppies. The boot floppies have only ed.
+
+A. Fetch the netbsd boot floppies from
+ ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-1.1/i386/floppies. Put the
+ images onto floppy disks using the instructions found on the FTP
+ site.
+
+B. Boot the `kernel' floppy, and switch to the `filesystem' floppy
+ when instructed.
+
+C. Proceed through the NetBSD automated installation script.
+ When you are asked if you want to view the boot messages again,
+ say yes. Then answer the disk geometry questions correctly,
+ copying from what was printed at boot time.
+
+D. Tell the script that you want to use cylinders, not sectors,
+ in specifying sizes.
+
+E. Make the size of your `NetBSD' portion the total amount
+ that the script has listed, starting at cylinder 0.
+
+F. Then allocate however much disk you want to your root partition
+ and to your swap partition. The root partition must be big
+ enough to hold the entire Hurd binary snapshot; it is strongly
+ recommended that you make it a fair bit bigger than that. It is
+ quite satisfactory to use only one filesystem partition in the
+ Hurd.
+
+G. If you specify partitions beyond the root partition and swap,
+ the script will ask you for a `mount point'. Type anything you
+ like, it won't matter.
+
+H. Affirm to the over-eagerly questioning script that you really do
+ want to smash your disk. NetBSD will proceed to create
+ filesystems on all the partitions you specified in I.G-H.
+
+I. When the script says "populating ..." hit ^C. You are now done
+ with the script.
+
+J. cd to /mnt. For each mount point that was gratuitously created
+ in step I.H, say `umount NAME'. Then say `rm -rf * .*'. Make
+ sure you are really in /mnt. This will delete whatever NetBSD
+ has put on your new partition.
+
+K. Initialize the network with `ifconfig DEV MY-ADDR'. DEV was
+ printed by the kernel when it booted; type `more /kern/msgbuf'
+ if you want to see those messages again. (Sometimes ifconfig
+ says that something is "offline". Ignore it.)
+
+L. Mount the NFS server partition with the convenient command
+ `mount -o -P SERVER-ADDR:SERVER-DIR /mnt2'.
+
+M. Copy the Hurd onto your disk with the command
+ (cd /mnt2; tar cf - .) | (cd mnt; tar xfpv -)
+
+N. If you haven't done STEP II yet, then do it now; otherwise go on
+ to STEP III.
diff --git a/release/Makefile b/release/Makefile
new file mode 100644
index 00000000..e5d94e18
--- /dev/null
+++ b/release/Makefile
@@ -0,0 +1,85 @@
+# Makefile for Hurd release tools
+# Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+# Written by Michael I. Bushnell, p/BSG.
+#
+# This file is part of the GNU Hurd.
+#
+# The GNU Hurd is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2, or (at
+# your option) any later version.
+#
+# The GNU Hurd is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
+
+dir := release
+makemode := misc
+
+# Files that go into the root of binary distributions
+dist-files = INSTALL-binary dist-README SETUP servers.boot bfloppy.boot \
+ menu.lst COPYING.LIB SOURCES.0.2
+
+# Files describing the contents of boot floppies
+floppy-copy = bfloppy.copy bfloppy-special.copy rfloppy.copy rfloppy-special.copy \
+ bfloppy1.copy bfloppy1-special.copy bfloppy2.copy bfloppy2-special.copy
+
+scripts = mkfsimage.sh mksmallso.sh mkemptyso.sh
+
+DIST_FILES = README $(dist-files) $(floppy-copy) $(scripts)
+
+include ../Makeconf
+
+ifneq ($(dist-root),)
+install-dist: dist-links
+ cp $(srcdir)/INSTALL-binary $(dist-root)/
+ cp $(srcdir)/dist-README $(dist-root)/README
+ cp $(srcdir)/SETUP $(dist-root)/SETUP
+ cp $(srcdir)/SOURCES.0.2 $(dist-root)/SOURCES
+ cp $(srcdir)/servers.boot $(dist-root)/boot/servers.boot
+ cp $(srcdir)/menu.lst $(dist-root)/boot/grub/menu.lst
+ cp $(top_srcdir)/COPYING $(dist-root)/share/misc/COPYING
+ cp $(srcdir)/COPYING.LIB $(dist-root)/share/misc/COPYING.LIB
+
+dist-links:
+ mkdir -p $(dist-root)/boot/grub
+ mkdir -p $(dist-root)/servers/socket
+ mkdir -p $(dist-root)/share/misc
+ touch $(dist-root)/servers/socket/1
+ touch $(dist-root)/servers/socket/2
+ ln -f $(dist-root)/servers/socket/1 $(dist-root)/servers/socket/local
+ ln -f $(dist-root)/servers/socket/2 $(dist-root)/servers/socket/inet
+ touch $(dist-root)/servers/exec
+endif
+
+# Where to get files for the floppies from.
+bfloppy-src=$(firstword $(dist-root) /)
+
+# Boot floppies we generate
+boot-floppies = bfloppy1.ext2 bfloppy2.ext2 bfloppy.ext2 rfloppy.ext2.gz
+
+boot-floppies: $(boot-floppies)
+
+%.ext2.gz:
+ ./mkfsimage $@ --compress --owner=root.wheel \
+ $(bfloppy-src) --copy-rules=$(srcdir)/$*.copy \
+ $(srcdir) --copy-rules=$(srcdir)/$*-special.copy
+%.ext2:
+ ./mkfsimage $@ --owner=root.wheel \
+ $(bfloppy-src) --copy-rules=$(srcdir)/$*.copy \
+ $(srcdir) --copy-rules=$(srcdir)/$*-special.copy
+
+# floppy dependencies
+ifneq ($(no_deps),t)
+-include $(patsubst %,%.f_d, $(boot-floppies))
+
+%.ext2.f_d %.ext2.gz.f_d: mkfsimage
+ ./mkfsimage $(patsubst %.f_d,%,$@) --dependencies=$@ \
+ $(bfloppy-src) --copy-rules=$(srcdir)/$*.copy \
+ $(srcdir) --copy-rules=$(srcdir)/$*-special.copy
+endif
diff --git a/release/README b/release/README
new file mode 100644
index 00000000..fcb6a260
--- /dev/null
+++ b/release/README
@@ -0,0 +1,13 @@
+As if the editor cared that this was -*- Text -*-.
+
+This directory contains tools and scripts useful in setting up Hurd
+binary distributions. None of it is installed by default, but it's
+provided here for those who might find it helpful.
+
+Use `make install-dist dist-root=FOO' to install the files that go
+into the root of binary distributions.
+
+Use `make install-tools tool-root=FOO' to install the tools that are
+used to build binary distributions.
+
+
diff --git a/release/SETUP b/release/SETUP
new file mode 100644
index 00000000..9860f03a
--- /dev/null
+++ b/release/SETUP
@@ -0,0 +1,49 @@
+#!/bin/bash
+# Setup critical hurd translators
+
+PATH=/bin:/sbin
+
+# BOOT_DEV="$1"
+# if [ ! "$BOOT_DEV" ]; then
+# echo "No device to install a boot loader was specified."
+# echo "Here are some possible devices to use:"
+# /bin/devprobe sd0 hd0 sd1 hd1
+# echo -n "Boot device? [none] "
+# read BOOT_DEV
+# fi
+#
+# if [ "$BOOT_DEV" ]; then
+# if /bin/devprobe -s "$BOOT_DEV"; then true; else
+# echo 2>&1 "$0: $BOOT_DEV: No such device known"; exit 1
+# fi
+# fi
+
+set -v
+
+# Make sure the filesystem is writable
+fsysopts / --writable
+
+# Set up standard passive translators
+/bin/settrans -c /servers/socket/local /hurd/pflocal
+/bin/settrans -c /servers/crash /hurd/crash
+/bin/settrans -c /servers/password /hurd/password
+
+# Setup crucial devices
+cd /dev
+/bin/sh ./MAKEDEV std ptyp ptyq
+
+set +v
+
+# if test "$BOOT_DEV" && /bin/sh ./MAKEDEV "$BOOT_DEV"; then
+# echo -n "Install grub as main boot record on $BOOT_DEV? [y] "
+# read yn
+# case "$yn" in
+# "" | "[yY]*")
+# /bin/sh /INSTALL-GRUB-MBR /dev/$BOOT_DEV;;
+# esac
+# fi
+
+echo 'Hit ^C now for shell prompt or RET to reboot'
+read response
+sync
+reboot
diff --git a/release/SOURCES.0.0 b/release/SOURCES.0.0
new file mode 100644
index 00000000..1f561ad6
--- /dev/null
+++ b/release/SOURCES.0.0
@@ -0,0 +1,111 @@
+Sources for binaries in Hurd version 0.0.
+
+
+The following packages were built from the sources of the indicated
+version in ftp://prep.gnu.ai.edu/pub/gnu according to the provided
+instructions without modification:
+
+autoconf (2.10)
+automake (1.0)
+bc (1.03)
+binutils (2.7)
+bison (1.25)
+cpio (2.4.2)
+cvs (1.8.1, in cvs-1.8.tar.gz)
+diffutils (2.7)
+doschk (1.1)
+ed (0.2)
+emacs lisp manual (19-2.4)
+fileutils (3.13)
+flex (2.5.3)
+gawk (3.0.0)
+gcal (1.01)
+gcc (2.7.2)
+gdbm (1.7.3)
+gettext (0.10)
+gmp (2.0.2)
+grep (2.0)
+hello (1.3)
+hurd (0.0)
+indent (1.9.1)
+inetutils (1.1)
+less (320)
+m4 (1.4)
+miscfiles (1.0)
+nvi (1.71)
+ptx (0.4)
+readline (2.0)
+recode (3.4)
+sed (2.05)
+sharutils (4.2)
+termcap (1.3) [manual only]
+termutils (2.0)
+textutils (1.19)
+time (1.7)
+wdiff (0.5)
+
+
+
+The following packages were built from the sources of the indicated
+version in ftp://prep.gnu.ai.mit.edu/pub/gnu according to the provided
+instructions, after making the indicated minor modifications:
+
+emacs (19.31)
+ [comment out definition of tparam in src/terminfo.c.]
+ [add to src/s/gnu.h the following five lines]
+ #ifdef HAVE_LIBNCURSES
+ #define TERMINFO
+ #define LIBS_TERMCAP -lncurses
+ #endif
+ #define setpgrp(a,b) setpgrp()
+findutils (4.1)
+ [Comment out decl of basename in defs.h and defn in util.c
+ Add `#define ARG_MAX 20480' in xargs/xargs.c, right after the includes]
+gperf (cperf 2.1a)
+ [hacked src/Makefile and src/stderr.c slightly]
+gzip (1.2.4)
+ [commented out basename from gzip.h and util.c]
+ncurses (1.9.9e)
+ [In read_entry.c, change second arg of call to open from `0' to O_RDONLY]
+ [In lib_tparm.c:tparam, add the following before the call to tparam_internal]
+ if (!buffer)
+ buffer = malloc (256);
+patch (2.1)
+ [comment out basename in backupfile.c.]
+rcs (5.7)
+ [Put `#undef ED' before #define ED in conf.h.]
+ [Add `#define SYMLOOP_MAX 8' to conf.h.]
+tar (1.11.8)
+ [add `strerror' to AC_CHECK_FUNCS in configure.in]
+texinfo (3.7)
+ [info/terminal.c -- add `#define B9600 9600']
+nethack (3.2.1)
+ [3.2.0 + nethack-3.2.0-3.2.1.patch
+ define BSD & linux, frob paths in config.h & unixconf.h & root Makefile
+ comment out declaration of random in system.h
+ Use `-lncurses' for WINTTYLIB in src/Makefile
+ declare `int status' in files.c:decompress_file, and pass &status
+ as an arg to the call to `wait' in the same function. ]
+
+
+
+The following were compiled from the sources found in
+ftp://prep.gnu.ai.mit.edu/pub/gnu/gnu-0.0/hurd-special-src:
+
+bash (1.14.4 patchlevel 10, with some additional local bugfixes)
+e2fsprogs (e2fsprogs-0.5c-hurd1.tar.gz) [1.04 doesn't have hurd patches]
+serverboot (serverboot.tar.gz)
+ [ Unpack into the mach4 source directory, and rename it to be `bootstrap';
+ you won't need the existing mach4 bootstrap. Then build in the bootstrap
+ subdir of the build directory, and install as /boot/serverboot. ]
+from
+grub
+ [ Requires changes for ELF: avoid generating 16-bit relocations.
+ Requires other changes to deal with ELF; makefiles only work for
+ mach3-a.out object file format. ]
+sh-utils (1.12m from alpha.gnu.ai.mit.edu)
+ [ copy libc's time/strftime.c into lib/strftime.c to fix a date bug. ]
+make (3.74.5 from alpha.gnu.ai.mit.edu; unmodified)
+gdb (Modified from Cygnus snapshot of 960526)
+mach4 (UK22, slighly hacked) [already includes `serverboot' program.]
+libc (1.93, with modifications)
diff --git a/release/SOURCES.0.2 b/release/SOURCES.0.2
new file mode 100644
index 00000000..4f50de84
--- /dev/null
+++ b/release/SOURCES.0.2
@@ -0,0 +1,110 @@
+Sources for binaries in GNU version 0.2.
+
+Typical configure line is
+
+../../src/foo-NN/configure --prefix= --cache-file=../config.cache i486-gnu
+
+autoconf (2.12)
+automake (1.0) (useless w/out perl)
+bash (2.0)
+bc (1.04)
+binutils (2.8.1)
+bison (1.25)
+cpio (2.4.2)
+cvs (1.9)
+ [ inhibit use of libc getopt by defining _LIBC in lib/getopt.c
+ and lib/getopt1.c immediately before it is tested. ]
+diffutils (2.7)
+doschk (1.1)
+e2fsprogs (1.08)
+ed (0.2)
+emacs (19.34b)
+emacs lisp manual (19-2.4.2)
+fileutils (3.16)
+findutils (4.1)
+ [ Comment out basename in find/defs.h and find/util.c.
+ Define _GNU_SOURCE at front of find/pred.c.
+ Define ARG_MAX to be 20480 before its first use. ]
+flex (2.5.4)
+from (special source)
+g77 (0.5.19.1)
+gawk (3.0.3)
+gcal (2.10)
+gcc (2.7.2.2) (includes patches from g77 0.5.19.1)
+gdb (gdb-gnu-5 special!)
+ [ texinfo subdir fails, so finish make by doing `make all-gdb'
+ gdb installs as `i486-gnu-gdb' by default, so perhaps just copy
+ by hand ]
+gettext (0.10)
+glibc (2.0.4)
+gmp (2.0.2)
+gnuchess (4.0.pl77) [ in src/Makefile, use 'prefix=' ]
+gnumach (1.1.3)
+gnugo (1.2)
+grep (2.0)
+grub (0.4)
+gzip (1.2.4)
+ [ Comment out basename in gzip.h and util.c. ]
+hello (1.3)
+hurd (0.2)
+indent (1.9.1)
+inetutils (1.3a)
+less (332)
+libg++ (2.7.2)
+lynx (2.7)
+ [ Set defaults appropriately for GNU in userdefs.h. ]
+ [ In WWW/Library/Implementation/HTTCP.c add #ifndef __GNU__ around
+ the sys_errlist test and #ifdef __GNU__ around the strerror case
+ in HTInetStatus. ]
+
+m4 (1.4)
+make (3.75) [ use latest getloadavg ]
+miscfiles (1.1)
+ncurses (1.9.9g)
+nethack (3.2.2)
+ [ In include/config.h:
+ define COMPRESS as "/bin/gzip"
+ define COMPRESS_EXTENSION as ".gz"
+ define HACKDIR as "/games/lib/nethackdir"
+ define SCORE_ON_BOTL
+
+ In include/unixconf.h:
+ define POSIX_JOB_CONTROL and POSIX_TYPES.
+
+ In include/system.h:
+ comment out declaration of random.
+
+ In src/Makefile: Change -O to -O2 in CFLAGS and add -g.
+ Use -lncurses for WINTTYLIB
+
+ In util/Makefile: Change -O to -O2 in CFLAGS and add -g.
+ Use bison for YACC and flex for LEX.
+
+ In Makefile: Change GAMEGRP to games.
+ Change GAMEDIR to /games/lib/$(GAME)dir.
+ Change SHELLDIR to /games.
+ ]
+nvi (1.71)
+patch (2.2) [ Comment out basename in backupfile.c. ]
+perl (5.003)
+ptx (0.4)
+readline (2.0)
+rcs (5.7)
+recode (3.4)
+sed (2.05) [ Change sed.c to include <errno.h> and also use
+ strerror instead sys_errlist in read_file(). ]
+sendmail (8.8.5) [ with special! patch ]
+sh-utils (1.16) [ use latest getloadavg.c ]
+sharutils (4.2)
+tar (1.12)
+termutils (2.0)
+texinfo (3.9)
+ [ Omit OCRNL from the expression in which it occurs in
+ info/terminal.c.
+ In util/install-info.c, replace guts of my_strerror with a call to
+ strerror. ]
+textutils (1.22)
+time (1.7)
+wdiff (0.5)
+
+
diff --git a/release/bfloppy-special.copy b/release/bfloppy-special.copy
new file mode 100644
index 00000000..69ae66d7
--- /dev/null
+++ b/release/bfloppy-special.copy
@@ -0,0 +1 @@
+rename boot/servers.boot copy bfloppy.boot
diff --git a/release/bfloppy.boot b/release/bfloppy.boot
new file mode 100644
index 00000000..3766920b
--- /dev/null
+++ b/release/bfloppy.boot
@@ -0,0 +1,14 @@
+# Boot script file for booting GNU Hurd from a boot floppy. Each line
+# specifies a file to be loaded by the boot loader (the first word), and
+# actions to be done with it.
+
+# First, the bootstrap filesystem. It needs several ports as arguments,
+# as well as the user flags from the boot loader.
+/hurd/ufs.static.gz --bootflags=${boot-args} --host-priv-port=${host-port} --device-master-port=${device-port} --exec-server-task=${exec-task} -Tgunzip:device ${root-device} $(task-create) $(prompt-task-resume)
+
+# Now the exec server; to load the dynamically-linked exec server program,
+# we have the boot loader in fact load and run ld.so, which in turn
+# loads and runs /hurd/exec. This task is created, and its task port saved
+# in ${exec-task} to be passed to the fs above, but it is left suspended;
+# the fs will resume the exec task once it is ready.
+/lib/ld.so.1.gz /hurd/exec $(exec-task=task-create)
diff --git a/release/bfloppy.copy b/release/bfloppy.copy
new file mode 100644
index 00000000..eb2796fb
--- /dev/null
+++ b/release/bfloppy.copy
@@ -0,0 +1,11 @@
+mkdir boot
+mkdir hurd
+mkdir lib
+mkdir boot/grub
+gzip objcopy boot/gnumach
+gzip objcopy boot/serverboot
+gzip objcopy lib/ld.so.1
+gzip objcopy hurd/ext2fs.static
+copy boot/grub/menu.lst
+copy boot/grub/stage1
+copy boot/grub/stage2
diff --git a/release/bfloppy1-special.copy b/release/bfloppy1-special.copy
new file mode 100644
index 00000000..c92545e1
--- /dev/null
+++ b/release/bfloppy1-special.copy
@@ -0,0 +1 @@
+rename boot/grub/menu.lst copy bfloppy1.grub
diff --git a/release/bfloppy1.copy b/release/bfloppy1.copy
new file mode 100644
index 00000000..312fe70c
--- /dev/null
+++ b/release/bfloppy1.copy
@@ -0,0 +1,7 @@
+mkdir boot
+mkdir boot/grub
+gzip objcopy boot/gnumach
+gzip objcopy boot/serverboot
+copy boot/grub/stage1
+copy boot/grub/stage2
+copy boot/grub/ffs_stage1_5
diff --git a/release/bfloppy1.grub b/release/bfloppy1.grub
new file mode 100644
index 00000000..1c7cd56d
--- /dev/null
+++ b/release/bfloppy1.grub
@@ -0,0 +1,29 @@
+# This is the amount grub waits before booting the default entry
+timeout= 5
+
+# Tell which entry to boot by default. Note that this is origin zero
+# from the beginning of the file.
+default= 0
+
+# Note that to GRUB, all hard disks are `hd' and all floppy disks are `fd'.
+# To Mach, SCSI disks are `sd' and IDE type disks are `hd'. Use
+# GRUB names in the `root' command and prefixing filenames. Use a
+# Mach name as the `root' arg for the kernel, and whenever running the Hurd.
+
+
+# These two entries are for SCSI disks
+# Entry 0:
+title= fd0
+root= (fd0)
+kernel= /boot/gnumach.gz root=fd0
+module= /boot/serverboot.gz
+pause= Insert boot-floppy #2 and hit RETURN...
+
+# Installation steps for GRUB hard disk boot blocks
+# Entry 4:
+title= Install grub from floppy onto hard disk
+install= (fd0)+1 (hd0) (hd0,a)/boot/grub/stage2 0x8000 p
+
+# Entry 5:
+title= Reinstall grub from hard disk to itself
+install= (hd0)/boot/grub/stage1 (hd0) (hd0,a)/boot/grub/stage2 0x8000 p
diff --git a/release/bfloppy2-special.copy b/release/bfloppy2-special.copy
new file mode 100644
index 00000000..f5c3d761
--- /dev/null
+++ b/release/bfloppy2-special.copy
@@ -0,0 +1,2 @@
+mkdir boot
+rename boot/servers.boot copy bfloppy2.boot
diff --git a/release/bfloppy2.boot b/release/bfloppy2.boot
new file mode 100644
index 00000000..943d76d4
--- /dev/null
+++ b/release/bfloppy2.boot
@@ -0,0 +1,14 @@
+# Boot script file for booting GNU Hurd from a boot floppy. Each line
+# specifies a file to be loaded by the boot loader (the first word), and
+# actions to be done with it.
+
+# First, the bootstrap filesystem. It needs several ports as arguments,
+# as well as the user flags from the boot loader.
+/hurd/ext2fs.static --sync=2 --bootflags=${boot-args} --host-priv-port=${host-port} --device-master-port=${device-port} --exec-server-task=${exec-task} -Tgunzip:device ${root-device} $(task-create) $(prompt-task-resume)
+
+# Now the exec server; to load the dynamically-linked exec server program,
+# we have the boot loader in fact load and run ld.so, which in turn
+# loads and runs /hurd/exec. This task is created, and its task port saved
+# in ${exec-task} to be passed to the fs above, but it is left suspended;
+# the fs will resume the exec task once it is ready.
+/lib/ld.so.1 /hurd/exec $(exec-task=task-create)
diff --git a/release/bfloppy2.copy b/release/bfloppy2.copy
new file mode 100644
index 00000000..78c9f95b
--- /dev/null
+++ b/release/bfloppy2.copy
@@ -0,0 +1,4 @@
+mkdir hurd
+mkdir lib
+objcopy lib/ld.so.1
+objcopy hurd/ext2fs.static
diff --git a/release/checklist b/release/checklist
new file mode 100644
index 00000000..2e27a4b3
--- /dev/null
+++ b/release/checklist
@@ -0,0 +1,61 @@
+Order for building binary distribution:
+
+1) Make tools on build machine
+* Build/install libc and header files from mach and hurd.
+* Build/install gcc (just LANGUAGES=c)
+* Build/install binutils.
+
+2) Make everything for release; install both on build machine and dist dir.
+* Build/install binutils again (now using new as and ld).
+* Build/install gcc again. (only one stage necessary).
+* Build/install libc again.
+* Build/install everything else.
+
+See `release-steps' for Hurd source release steps.
+
+Checklist for binary image filesystems
+
+* Symlinks in /bin; esp. sh, awk, more, cc.
+* Symlink /lib/libtermcap.a -> /lib/libncurses.a, termcap_g.a,
+ curses_g.a, curses.a.
+* Symlink /lib/ld.so -> /lib/ld.so.1.
+* Symlink . -> /usr.
+* Make sure directories exist: /tmp, /var/run.
+* Touch /var/log/wtmp.
+* Check all symlinks to make sure they don't reference /gd4.
+* Don't use absolute symlinks--make them all relative.
+* Build some static fileutils: ls, ln, cp, mv, chmod.
+* Make damn sure that we are only distributing the md5 libcrypt.
+* Make sure /include/obstack.h is from libc and not binutils.
+* Make sure there is no /include/i386.
+* Make sure there is no /i486-gnu.
+* Make sure we are using Hurd versions of su and uptime, not sh-utils.
+* Make sure we are using Hurd fsck, not e2fs.
+* Make install-dist from release dir.
+* Make sure there is only a stubby resolv.conf in the distribution.
+* Make sure /etc/fstab has no active members
+* Make sure nethack is clean
+* Make sure localtime is Factory
+* Source code for Hurd and libc must be released.
+* Remove .stamp files from binary tree.
+* Chown everything root.wheel, mode 755/644.
+* /tmp is 1777.
+* Chown /games games.games.
+* Check permissions on set[gu]id files in binary tree.
+ (login, su, addauth, setauth, ids, ps, w, vmstat, vminfo, rsh, rlogin,
+ games/lib/nethack/nethack)
+* Check each directory for bogus cruft files.
+* Especially delete .bash_history, .gnunfs*, and .stamp files, *~, *.rej
+* Verify installation on bare machine.
+* Make sure everything listed in SOURCES is on prep.
+* Install release
+* Post announcement
+
+
+FSF Hurd machines need in addition to the INSTALL-binary installation:
+
+* our NFS translators
+* our kernel
+* sendmail.cf, /etc/aliases
+* /home/* symlinks
+* /etc/syslog.conf
diff --git a/release/dist-README b/release/dist-README
new file mode 100644
index 00000000..afad66cf
--- /dev/null
+++ b/release/dist-README
@@ -0,0 +1,39 @@
+-*- Text -*-
+
+This is the Hurd. Welcome.
+
+This is the complete GNU system, version 0.2.
+
+This directory contains i386 binaries for the Hurd and various
+programs built to run under it.
+
+See the file SOURCES to see where each package came from. Remember
+that you must adhere to the GNU General Public License and the GNU
+Library General Public when distributing this binary snapshot. See
+/share/misc/COPYING and /share/misc/COPYING.LIB for copies of these
+licenses.
+
+For instructions on installing binary images and setting up a Hurd
+system, see the file INSTALL-binary.
+
+Bug reports for programs in this distribution should be sent to the
+maintainer of the program. For a complete list of which mailing lists
+get bug reports for which programs, ask `gnu@prep.ai.mit.edu'.
+
+Bug reports for the GNU Hurd should be sent to the mailing list
+`bug-hurd@prep.ai.mit.edu'. Please do not send requests for
+assistance in installing or using the software to that address.
+Instead, send requests for assistance to the mailing list
+`help-hurd@prep.ai.mit.edu'. You can join these lists by sending a
+request to `bug-hurd-request@prep.ai.mit.edu' or
+`help-hurd-request@prep.ai.mit.edu' respectively.
+
+In addition, bug reports or requests for help in using the system as a
+connected whole (as opposed to for particular programs) should be sent
+to the hurd mailing lists.
+
+The GNU system is free software. See the files /share/misc/COPYING
+and /share/misc/COPYING.LIB.
+
+
+
diff --git a/release/fstab-to-settrans b/release/fstab-to-settrans
new file mode 100755
index 00000000..e107cf10
--- /dev/null
+++ b/release/fstab-to-settrans
@@ -0,0 +1 @@
+sed -n 's;^\([^ ][^ ]*\)[ ][ ]*\([^ ][^ ]*\)[ ][ ]*nfs.*$;settrans -c \2 /hurd/nfs \1;p'
diff --git a/release/install-stripped b/release/install-stripped
new file mode 100755
index 00000000..8237c7f4
--- /dev/null
+++ b/release/install-stripped
@@ -0,0 +1,184 @@
+#! /usr/local/bin/bash
+
+# Shell script to copy files and directories, stripping things appropriately.
+# Executable programs are stripped completely, and library archives
+# have debugging symbols removed.
+
+usage()
+{
+ echo >&2 "Usage: $0 [-N NEWER-THAN-FILE] SOURCE-DIR TARGET-DIR"
+ exit 1
+}
+
+# If non-null, only copy files newer than this file when copying directories.
+newer_than=''
+
+while :; do
+ case "$1" in
+ -N) newer_than="$2"; shift 2
+ if test -r "$newer_than"; then
+ case "$newer_than" in [!/]*)
+ newer_than=`pwd`/"$newer_than"
+ esac
+ else
+ # There is no such file, so don't try to use it
+ newer_than=''
+ fi;;
+ -*) usage;;
+ *) break;;
+ esac
+done
+
+if [ $# -lt 2 ]; then
+ usage
+fi
+
+OBJCOPY=${OBJCOPY:-i386-gnu-objcopy}
+
+check_inode()
+{
+ inode=`ls -dli "$1" | awk '{ print $1 }'`
+ eval "old_inode=\${inode_${inode}}"
+ eval "inode_${inode}=$2"
+}
+
+# Prints the files in DIR, only using those newer than $newer_than if
+# it's non-null
+dir_files()
+{
+ case "$newer_than" in
+ "") test='';;
+ *) test="-newer $newer_than";;
+ esac
+
+ find $1 -maxdepth 1 \( ! -type d $test -print \) \
+ | sed "s@^$1/@@"
+}
+
+copy()
+{
+ local from=$1
+ local to=$2
+
+ copyattrs()
+ {
+ local ls="`ls -l $from`"
+ local owner="`echo "$ls" | awk '{print $3 "." $4}'`"
+ local mode="`echo "$ls" | sed -e 's/^.\(...\)\(...\)\(...\).*$/u=\1,g=\2,o=\3/' -e 's/-//g' -e 's/s/xs/g'`"
+ chown "$owner" $to
+ chmod "$mode" $to
+ }
+
+ plaincopy()
+ {
+ rm -f $to
+ echo "$from -> $to"
+ if ! ln -f $from $to 2>/dev/null; then
+ install -m 644 -c $from $to
+ copyattrs
+ fi
+ }
+
+ objcopy()
+ {
+ if $OBJCOPY --strip-debug $from $to; then
+ echo "strip-debug $from -> $to"
+ copyattrs
+ else
+ plaincopy
+ fi
+ }
+
+ copysymlink ()
+ {
+ linkto="`ls -ld $from | awk '{ print $NF }'`"
+ if test -L $to; then
+ oldlinkto="`ls -ld $to | awk '{ print $NF }'`"
+ else
+ oldlinkto=not-the-value-of-any-real-symlink
+ fi
+
+ if test $linkto != $oldlinkto; then
+ rm -f $to
+ echo "making symlink $to -> $linkto"
+ ln -s $linkto $to
+ fi
+ }
+
+ makelocalhardlink ()
+ {
+ if test -e $to; then
+ fromino=`ls -dli "$from" | awk '{ print $1 }'`
+ toino=`ls -dli "$to" | awk '{print $1 }'`
+ if test $fromino != $toino; then
+ echo "$to linked to $old_inode"
+ ln -f $old_inode $to
+ fi
+ else
+ echo "$to linked to $old_inode"
+ ln -f $old_inode $to
+ fi
+ }
+
+ check_inode $from $to
+
+# Not necessary; the other bits already do necessary deletion.
+# test -d $to || { test -e $to && rm -f $to }
+
+ if test -L $from; then
+ copysymlink
+ elif test "$old_inode"; then
+ makelocalhardlink
+ elif test -d $from; then
+ if test ! -d $to; then
+ echo making $to
+ mkdir -p $to
+ fi
+ for file in `dir_files $from` ..; do
+ test "$file" = .. && continue
+ copy $from/$file $to/$file
+ done
+ else
+ case $from in
+ *.a)
+ read p l o g size rest <<foo
+`ls -l $from`
+foo
+# I've reenabled installing large libraries; please don't change
+# this without syncing with mib first.
+# if test $size -gt 200000; then
+# echo "skipping large library $from ($size)"
+# else
+ objcopy
+# fi
+ ;;
+ *.o | *.so | *.so.*)
+ objcopy
+ ;;
+ *)
+ if test -x $from; then
+ if $OBJCOPY -S $from $to 2>/dev/null; then
+ echo "strip $from -> $to"
+ copyattrs
+ else
+ plaincopy
+ fi
+ else
+ plaincopy
+ fi
+ ;;
+ esac
+ fi
+}
+
+if [ $# -gt 2 ]; then
+ eval "todir=\${$#}"
+ test -d $todir || { echo >&2 With multiple args, last must be a directory.
+ exit 1; }
+ while [ $# -gt 1 ]; do
+ copy $1 $todir/`basename $1`
+ shift
+ done
+else
+ copy $1 $2
+fi
diff --git a/release/menu.lst b/release/menu.lst
new file mode 100644
index 00000000..00807dec
--- /dev/null
+++ b/release/menu.lst
@@ -0,0 +1,50 @@
+# This is the amount grub waits before booting the default entry
+timeout= 30
+
+# Tell which entry to boot by default. Note that this is origin zero
+# from the beginning of the file.
+default= 0
+
+# Note that to GRUB, all hard disks are `hd' and all floppy disks are `fd'.
+# To Mach, SCSI disks are `sd' and IDE type disks are `hd'. Use
+# GRUB names in the `root' command and prefixing filenames. Use a
+# Mach name as the `root' arg for the kernel, and whenever running the Hurd.
+
+
+# These two entries are for SCSI disks
+# Entry 0:
+title= hurd (sd0a multi-user)
+root= (hd0,a)
+kernel= /boot/gnumach root=sd0a
+module= /boot/serverboot
+
+# Entry 1:
+title= hurd (sd0a single-user)
+root= (hd0,a)
+kernel= /boot/gnumach root=sd0a -s
+module= /boot/serverboot
+
+
+# These two entries are for RLL/IDE/ST-506/etc. disks
+# Entry 2:
+title= hurd (hd0a multi-user)
+root= (hd0,a)
+kernel= /boot/gnumach root=hd0a
+module= /boot/serverboot
+
+# Entry 3:
+title= hurd (hd0a single-user)
+root= (hd0,a)
+kernel= /boot/gnumach root=hd0a -s
+module= /boot/serverboot
+
+
+# Installation steps for GRUB hard disk boot blocks
+# Entry 4:
+title= Install grub from floppy onto hard disk
+install= (fd0)+1 (hd0) (hd0,a)/boot/grub/stage2 0x8000 p
+
+# Entry 5:
+title= Reinstall grub from hard disk to itself
+install= (hd0)/boot/grub/stage1 (hd0) (hd0,a)/boot/grub/stage2 0x8000 p
+
diff --git a/release/mkemptyso.sh b/release/mkemptyso.sh
new file mode 100755
index 00000000..0260a48e
--- /dev/null
+++ b/release/mkemptyso.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+# args: $1 -- destination .so file
+SO=$1
+GCC=${GCC-i386-gnu-gcc}
+$GCC -nostdlib -shared -fPIC -x c /dev/null -Wl,-soname=`basename $SO` -o $SO
diff --git a/release/mkfsimage.sh b/release/mkfsimage.sh
new file mode 100644
index 00000000..181928f8
--- /dev/null
+++ b/release/mkfsimage.sh
@@ -0,0 +1,412 @@
+#!/bin/sh
+# Make a filesystem image
+#
+# Copyright (C) 1997 Free Software Foundation, Inc.
+# Written by Miles Bader <miles@gnu.ai.mit.edu>
+# This file is part of the GNU Hurd.
+#
+# The GNU Hurd is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2, or (at
+# your option) any later version.
+#
+# The GNU Hurd is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
+#
+
+USAGE="\
+Usage: $0 [OPTION...] IMAGE-FILE SRC..."
+TRY="Try "\`"$0 --help' for more information"
+
+MAX_SIZE=1440 # size of floppy
+MIN_SIZE=500 # avoid lossage for compressed filesystems
+
+OWNER="`id -un`.`id -gn`"
+
+unset IMAGE SRCS COMPRESS SCRIPTS QUIET GEN_DEPS
+declare -a SRCS SCRIPTS
+
+NUM_SRCS=0
+NUM_SCRIPTS=0
+
+while :; do
+ case "$1" in
+ --compress) COMPRESS=yes; shift 1;;
+ --fstype=*) FSTYPE="`echo "$1" | sed 's/^--fstype=//'`"; shift 1;;
+ --fstype) FSTYPE="$2"; shift 2;;
+ --mkfs=*) MKFS="`echo "$1" | sed 's/^--mkfs=//'`"; shift 1;;
+ --mkfs) MKFS="$2"; shift 2;;
+ --fstrans=*) FSTRANS="`echo "$1" | sed 's/^--fstrans=//'`"; shift 1;;
+ --fstrans) FSTRANS="$2"; shift 2;;
+ --owner=*) OWNER="`echo "$1" | sed 's/^--owner=//'`"; shift 1;;
+ --owner) OWNER="$2"; shift 2;;
+ --max-size=*) MAX_SIZE="`echo "$1" | sed 's/^--max-size=//'`"; shift 1;;
+ --max-size) MAX_SIZE="$2"; shift 2;;
+ --quiet|-q|-s) QUIET=yes; shift 1;;
+ --copy=*|--copy-rules=*) SCRIPTS[NUM_SCRIPTS]="`echo "$1" | sed 's/^--[-a-z]*=//'`"; let NUM_SCRIPTS+=1; shift 1;;
+ --copy|--copy-rules) SCRIPTS[NUM_SCRIPTS]="$2"; let NUM_SCRIPTS+=1; shift 2;;
+ --dependencies=*) GEN_DEPS="`echo "$1" | sed 's/^--[-a-z]*=//'`"; shift 1;;
+ --dependencies) GEN_DEPS="$2"; shift 2;;
+
+ --version)
+ echo "STANDARD_HURD_VERSION_mkfsimage_"; exit 0;;
+ --help)
+ echo "$USAGE"
+ echo "Make a file-system image IMAGE-FILE from the files in SRC..."
+ echo ''
+ echo "\
+ --copy-rules=FILE Copy files in a manner described by FILE
+
+ --compress Compress the final image
+ --owner=USER[.GROUP] Make files owned by USER & GROUP (default "\`"$OWNER')
+ --max-size=KBYTES Maximum size of final image (default $MAX_SIZE)
+ --dependencies=DEPS Generate a make dependency rule into DEPS and exit
+
+ --fstype=TYPE Type of filesystem (TYPE may be "\`"ext2' or "\`"ufs')
+ --mkfs=PROGRAM Program to make an empty filesystem image
+ --fstrans=PROGRAM File system translator program
+
+ --help Display this help and exit
+ --version Output version information and exit
+
+If multiple SRCs are specified, then each occurance of --files pertains only to
+the corresponding SRC.
+
+Each FILE named in a --copy-rules option contains lines of the form:
+
+ [gzip] [rename TARGET] COPY-OP NAME
+
+and says to copy NAME from the source tree to the destination, using the
+method specified by COPY-OP. A preceeding "\`"rename TARGET"\'" says to give
+NAME a different name in the target tree, and a preceeding "\`"gzip"\'" says
+to compress the result (appending .gz to the name). COPY-OP may be one of the
+following:
+
+ copy -- A plain copy, preserving symlinks
+ objcopy -- Copy using objcopy to strip any unneeded symbols
+ copytrans -- Copy a translator
+
+ touch -- Create an empty file in the destination, ignoring the source
+ mkdir -- Create an empty directory in the destination, ignoring the source
+ makedev -- Create the given device in the destination, ignoring the source
+ settrans -- Set a translator with the given arguments
+
+If both --mkfs and --fstrans are specified, no filesystem type need be given.
+If --fstype is not specified, an attempt is made to guess it based on the
+extension of IMAGE-FILE."
+ exit 0;;
+ -*)
+ echo 1>&2 "$0: $1: Unknown option"
+ echo 1>&2 "$TRY"
+ exit 64;;
+ '')
+ break;;
+ *)
+ case "${IMAGE+set}" in
+ set) SRCS[NUM_SRCS]="$1"; let 'NUM_SRCS += 1';;
+ *) IMAGE="$1";;
+ esac
+ shift
+ esac
+done
+
+case "${IMAGE+set}${SRCS[*]+set}" in
+ setset) ;;
+ *)
+ echo 1>&2 "$USAGE"
+ echo 1>&2 "$TRY"
+ exit 64;
+esac
+
+# Choose format
+if [ "${MKFS+set}" != set -o "${MKFS+set}" != set ]; then
+ if [ "${FSTYPE+set}" != set ]; then
+ case "$IMAGE" in
+ *.ext2|*.ext2.gz) FSTYPE=ext2;;
+ *.ufs|*.ext2.gz) FSTYPE=ufs;;
+ *) echo 1>&2 "$0: $IMAGE: Unknown filesystem type"; exit 1;;
+ esac
+ fi
+
+ case "$FSTYPE" in
+ ext2) MKFS="/sbin/mkfs.ext2 -ohurd"; MKFS_Q="-q"; FSTRANS=/hurd/ext2fs;;
+ ufs) MKFS="/sbin/mkfs.ufs --tracks=1 --sectors=80"; FSTRANS=/hurd/ufs;;
+ *) echo 1>&2 "$0: $IMAGE: Unknown filesystem type"; exit 1;;
+ esac
+fi
+
+case "$QUIET" in
+ yes) MKFS_Q="${MKFS_Q} >/dev/null"; ECHO=:;;
+ *) MKFS_Q=''; ECHO=echo;;
+esac
+export ECHO MKFS_Q
+
+case "$IMAGE" in *.gz) COMPRESS=yes;; esac
+
+IMAGE_TMP="${IMAGE}.new"
+IMAGE_GZIP_TMP="${IMAGE}.new.gz"
+MNT="/tmp/,mkfsimage-$$.mnt"
+ERROUT="/tmp/,mkfsimage-$$.errout"
+STAGE="/tmp/,mkfsimage-$$.stage"
+TRANS_LIST="/tmp/,mkfsimage-$$.trans"
+
+# Extra blocks that will be used by translators
+TRANS_BLOCKS=0
+
+if [ "$GEN_DEPS" ]; then
+ GEN_DEPS_TMP="$GEN_DEPS.new"
+ echo "$GEN_DEPS: ${SCRIPTS[*]}" >> "$GEN_DEPS_TMP"
+ echo "$IMAGE: \\" >> "$GEN_DEPS_TMP"
+fi
+
+trap "settrans 2>/dev/null -a $MNT; rm -rf $MNT $IMAGE_TMP $IMAGE_GZIP_TMP $ERROUT $STAGE $TRANS_LIST $GEN_DEPS_TMP" 0 1 2 3 15
+
+if [ ${#SRCS[@]} = 1 -a ${#SCRIPTS[@]} = 0 ]; then
+ # No staging directory
+ TREE="$1"
+else
+ # Multiple source trees, or selective copying -- copy using a staging directory.
+ # We record any translators in a file ($TRANS_LIST) for later, since we copy
+ # the staging dir to the final dir using tar, and it can't handle translators.
+
+ mkdir $STAGE || exit $?
+
+ SRC_NUM=0
+ while [ $SRC_NUM -lt ${#SRCS[@]} ]; do
+ SRC="${SRCS[SRC_NUM]}"
+ SCRIPT="${SCRIPTS[SRC_NUM]}"
+ let SRC_NUM+=1
+
+ if [ ! -d "$SRC" ]; then
+ echo 1>&2 "$0: $SRC: No such directory"
+ exit 24
+ fi
+ case "$SRC" in
+ /) PFX="/";;
+ *) PFX="$SRC/";;
+ esac
+
+ if [ ! "$GEN_DEPS" ]; then
+ eval $ECHO "'# Copying files from $SRC into staging directory $STAGE...'"
+ fi
+
+ if [ x"${SCRIPT}" != x ]; then
+ eval $ECHO "'# Using copy script $SCRIPT'"
+ (
+ if [ x"$SCRIPT" != x- ]; then
+ if [ ! -r "$SCRIPT" ]; then
+ echo 1>&2 "$0: $SCRIPT: No such file"
+ exit 25
+ fi
+ exec <"$SCRIPT"
+ fi
+
+ test "$GEN_DEPS" && echo " $SCRIPT \\" >> "$GEN_DEPS_TMP"
+
+ while read -a args; do
+ case $args in
+ gzip) gzip=yes; unset args[0]; args=(${args[@]});;
+ *) gzip=no;;
+ esac
+ case $args in
+ rename) dst="${args[1]}"; unset args[0] args[1]; args=(${args[@]});;
+ *) unset dst;;
+ esac
+
+ op="${args[0]}"
+ src="${args[1]}"
+
+ if echo "$src" | grep -q "[?*[]"; then
+ # For wildcards, use the most recent file matching that pattern
+ src="`(cd $SRC; ls -t1 $src | head -1)`"
+ fi
+
+ case ${dst+set} in
+ set)
+ # Destination patterns match files in the source tree (What
+ # else could we use? This may be useful for files that exist
+ # in the source, but which we want to use a different version
+ # of for this filesystem).
+ if echo "$dst" | grep -q "[?*[]"; then
+ dst="`(cd $SRC; ls -t1 $dst | head -1)`"
+ fi;;
+ *)
+ dst="$src";;
+ esac
+
+ # Pop op & src off of args
+ set -- "${args[@]}"; shift 2; unset args; args=("$@")
+
+ if [ "$GEN_DEPS" ]; then
+ case $op in
+ copy|objcopy)
+ echo " ${PFX}$src \\" >> "$GEN_DEPS_TMP";;
+ esac
+ continue
+ fi
+
+ case $op in
+ copy)
+ eval $ECHO "'cp -d ${PFX}$src $STAGE/$dst'"
+ cp -d ${PFX}$src $STAGE/$dst
+ ;;
+ objcopy)
+ eval $ECHO "'objcopy --strip-unneeded ${PFX}$src $STAGE/$dst'"
+ objcopy --strip-unneeded "${PFX}$src" "$STAGE/$dst"
+ ;;
+ symlink)
+ if echo "$args" | grep -q "[?*[]"; then
+ # symlink expansion is in the source tree, in the same
+ # directory as the file itself.
+ args="`(cd $PFX`dirname $dst`; ls -t1 $args | head -1)`"
+ fi
+ eval $ECHO "'ln -s $args $STAGE/$dst'"
+ ln -s $args $STAGE/$dst
+ ;;
+ mkdir)
+ eval $ECHO "'mkdir $STAGE/$dst'"
+ mkdir "$STAGE/$dst"
+ ;;
+ touch)
+ eval $ECHO "'touch $STAGE/$dst'"
+ touch "$STAGE/$dst"
+ ;;
+
+ makedev|settrans|copytrans)
+ # delay translators until later, as tar can't copy them.
+
+ case $op in
+ settrans|copytrans)
+ # We create the node on which translators will be put so
+ # that the owner gets set correctly; this isn't necessary for
+ # device because MAKEDEV does all the work needed, and doing so
+ # would cause problems with device names that are really
+ # categories.
+ touch "$STAGE/$dst";;
+ esac
+
+ # Accunt for space used by the translator block
+ TRANS_BLOCKS=$(($TRANS_BLOCKS + 1))
+
+ # Record the desired operation for a later pass
+ echo "$op $dst $src ${args[*]}" >> $TRANS_LIST
+ ;;
+
+ ''|'#')
+ ;;
+ *)
+ echo 1>&2 "$0: $op: Unknown operation"
+ ;;
+ esac
+
+ case $gzip in yes)
+ eval $ECHO "'gzip -v9 $STAGE/$dst'"
+ gzip -v9 "$STAGE/$dst";;
+ esac
+ done
+ ) || exit $?
+ else
+ eval $ECHO "'# Copying all files using tar'"
+ (cd $SRC; tar cf - .) | (cd $STAGE; tar -x --same-owner -p -f -)
+ fi
+ done
+ TREE="$STAGE"
+fi
+
+if [ "$GEN_DEPS" ]; then
+ echo "" >> "$GEN_DEPS_TMP" && mv "$GEN_DEPS_TMP" "$GEN_DEPS"
+ exit 0
+fi
+
+eval $ECHO "'# Changing file owners to $OWNER'"
+chown -R "$OWNER" $TREE
+
+# Size of source tree, plus 5% for overhead
+TREE_SIZE=$((($TRANS_BLOCKS + `du -s "$TREE" | sed 's/^\([0-9]*\).*/\1/'`) * 105 / 100))
+
+if [ "${COMPRESS-no}" = yes ]; then
+ # Add 10% to the filesystem size to leave some breathing room.
+ # Since unused filesystem space compresses very well, this shouldn't add
+ # much to the final size.
+ SIZE=$(($TREE_SIZE * 110 / 100))
+ test $SIZE -lt $MIN_SIZE && SIZE=$MIN_SIZE
+else
+ if [ $TREE_SIZE -gt $MAX_SIZE ]; then
+ echo 1>&2 "$0: $TREE: Too big (${TREE_SIZE}k) to fit in ${MAX_SIZE}k"
+ exit 10
+ fi
+ SIZE=$(($TREE_SIZE * 110 / 100))
+ test $SIZE -lt $MIN_SIZE && SIZE=$MIN_SIZE
+ test $SIZE -gt $MAX_SIZE && SIZE=$MAX_SIZE
+fi
+
+eval $ECHO "'# Zeroing disk image...'"
+rm -f $IMAGE_TMP
+if ! dd if=/dev/zero of=$IMAGE_TMP bs=${SIZE}k count=1 2>$ERROUT; then
+ sed -n "s@^dd:@$0@p" < $ERROUT 1>&2
+ exit 11
+fi
+
+eval $ECHO "'# Making filesystem...'"
+eval "$MKFS $MKFS_Q '$IMAGE_TMP'" || exit 12
+settrans -ac $MNT $FSTRANS $IMAGE_TMP || exit 13
+
+eval $ECHO "'# Copying $TREE into filesystem...'"
+(cd $TREE; tar cf - .) | (cd $MNT; tar -x --same-owner -p -f -)
+
+if [ -r "$TRANS_LIST" ]; then
+ # create any delayed translators
+ eval $ECHO "'# Creating translators...'"
+ cat "$TRANS_LIST" |
+ while read -a args; do
+ op="${args[0]}"
+ dst="${args[1]}"
+ src="${args[2]}"
+ set -- "${args[@]}"; shift 3; unset args; args=("$@")
+
+ case $op in
+ copytrans)
+ tr="`showtrans "${PFX}$src"`"
+ eval $ECHO "'settrans $MNT/$dst $tr'"
+ settrans "$MNT/$dst" $tr
+ ;;
+ settrans)
+ eval $ECHO "'settrans $MNT/$dst ${args[*]}'"
+ settrans "$MNT/$dst" "${args[@]}"
+ ;;
+ makedev)
+ dd="/`dirname $dst`"
+ eval $ECHO "'/sbin/MAKEDEV --devdir=$dd $MNT/$dst'"
+ /sbin/MAKEDEV --devdir=$dd "$MNT/$dst"
+ ;;
+ esac
+ done
+fi
+
+settrans -a $MNT
+
+case "$COMPRESS" in
+ yes)
+ case "$QUIET" in
+ yes)
+ gzip -9 $IMAGE_TMP
+ ;;
+ *)
+ eval $ECHO "'# Compressing disk image...'"
+ gzip -v9 $IMAGE_TMP 2>&1 | sed "s@$IMAGE_TMP\.gz@$IMAGE@g"
+ ;;
+ esac
+ mv $IMAGE_GZIP_TMP $IMAGE
+ ;;
+ *)
+ mv $IMAGE_TMP $IMAGE
+ ;;
+esac
+
+exit 0
diff --git a/release/mksmallso.sh b/release/mksmallso.sh
new file mode 100755
index 00000000..2f147bd0
--- /dev/null
+++ b/release/mksmallso.sh
@@ -0,0 +1,48 @@
+# Usage:
+# $1 : Destination merged, stripped, small shared library
+# $2 : lib*_pic.a files from which to produce the final small library
+# $3 : .so files that this library should depend on
+# ${4:$} : executables and shared libraries whos dependencies we care about
+
+while :; do
+ case "$1" in
+ -*) LDARGS="$1"; shift;;
+ *) break;;
+ esac
+done
+
+MERGED_SO="$1"; shift
+PIC_LIBS="$1"; shift
+DEPS="$1"; shift
+
+GCC=${GCC-gcc}
+LD=${LD-ld}
+OBJDUMP=${OBJDUMP-objdump}
+OBJCOPY=${OBJCOPY-objcopy}
+
+DEP_FLAGS_FILE=/tmp/,depflags.$$
+NEED_DSYMS_FILE=/tmp/,need.dyn.syms.$$
+HAVE_DSYMS_FILE=/tmp/,have.dyn.syms.$$
+MERGED_PIC_LIB=/tmp/,libmerged_pic.a.$$
+
+#trap "rm -f $DEP_FLAGS_FILE $MERGED_PIC_LIB $NEED_DSYMS_FILE $HAVE_DSYMS_FILE" 0
+
+
+$OBJDUMP --dynamic-syms "$@" 2>/dev/null \
+ | sed -n 's/^.*\*UND\*.* \([^ ]*\)$/\1/p' \
+ | sort -u > $NEED_DSYMS_FILE
+
+# 00000000 w F .text 00000000 syscall_device_write_request
+# 00000000 g F .text 0000056c __strtoq_internal
+$OBJDUMP --syms $PIC_LIBS 2>/dev/null \
+ | sed -n 's/^........ \(g \| w\) .. .* [0-9a-f]....... \([^ ]*\)$/\2/p' \
+ | sort -u > $HAVE_DSYMS_FILE
+
+# This had better be gnu diff...
+diff --unchanged-l='%L' --old-l= --new-l= $NEED_DSYMS_FILE $HAVE_DSYMS_FILE \
+ | sed 's/^/-u/' > $DEP_FLAGS_FILE
+
+$GCC $LDARGS -nostdlib -nostartfiles -shared -Wl,-soname=`basename $MERGED_SO` `cat $DEP_FLAGS_FILE` \
+ -o $MERGED_SO.uns $PIC_LIBS $DEPS \
+&& $OBJCOPY --strip-debug $MERGED_SO.uns $MERGED_SO \
+&& rm -f $MERGED_SO.uns
diff --git a/release/release-steps b/release/release-steps
new file mode 100644
index 00000000..5303017b
--- /dev/null
+++ b/release/release-steps
@@ -0,0 +1,8 @@
+
+Make tar file.
+Test compilation.
+Update README, including version number.
+Update INSTALL, including version number.
+Update NEWS.
+Write release announcement.
+README and release announcement should mention list of platforms.
diff --git a/release/rfloppy-special.copy b/release/rfloppy-special.copy
new file mode 100644
index 00000000..cf7ef22a
--- /dev/null
+++ b/release/rfloppy-special.copy
@@ -0,0 +1,3 @@
+rename etc/passwd copy rfloppy.passwd
+rename etc/group copy rfloppy.group
+rename etc/nsswitch.conf copy rfloppy.nss
diff --git a/release/rfloppy.copy b/release/rfloppy.copy
new file mode 100644
index 00000000..55beef92
--- /dev/null
+++ b/release/rfloppy.copy
@@ -0,0 +1,175 @@
+# Files on the hurd boot floppy root disk
+
+mkdir bin
+mkdir boot
+mkdir dev
+mkdir etc
+mkdir hurd
+mkdir lib
+mkdir sbin
+mkdir servers
+mkdir tmp
+mkdir mnt
+
+copy etc/protocols
+copy etc/services
+
+objcopy bin/bash
+objcopy bin/cat
+objcopy bin/chmod
+objcopy bin/chown
+objcopy bin/cp
+objcopy bin/dd
+objcopy bin/ed
+objcopy bin/devprobe
+objcopy bin/fsysopts
+objcopy bin/ftp
+objcopy bin/gzip
+objcopy bin/ln
+objcopy bin/ls
+objcopy bin/mv
+objcopy bin/rm
+objcopy bin/settrans
+objcopy bin/showtrans
+objcopy bin/sync
+copy bin/sh
+objcopy bin/tar
+objcopy bin/vmstat
+
+objcopy hurd/auth
+objcopy hurd/exec
+objcopy hurd/init
+objcopy hurd/nfs
+objcopy hurd/pfinet
+objcopy hurd/proc
+objcopy hurd/term
+objcopy hurd/ext2fs
+objcopy hurd/magic
+objcopy hurd/null
+objcopy hurd/pflocal
+objcopy hurd/storeio
+objcopy hurd/ufs
+
+copy sbin/MAKEDEV
+objcopy sbin/halt
+objcopy sbin/mkfs.ext2
+objcopy sbin/mkfs.ufs
+objcopy sbin/reboot
+objcopy sbin/fdisk
+objcopy sbin/swapon
+
+touch servers/exec
+mkdir servers/socket
+settrans servers/socket/1 /hurd/pflocal
+symlink servers/socket/local servers/socket/1
+touch servers/socket/2
+symlink servers/socket/inet servers/socket/2
+
+copy lib/ld.so
+objcopy lib/ld.so.1
+objcopy lib/libc-*.so
+copy lib/libc.so
+copy lib/libc.so.*
+copy lib/libcrypt.so
+copy lib/libcrypt.so.*
+objcopy lib/libcrypt-*.so
+copy lib/libdb.so
+copy lib/libdb.so.*
+objcopy lib/libdb-*.so
+copy lib/libdl.so
+copy lib/libdl.so.*
+objcopy lib/libdl-*.so
+objcopy lib/libdiskfs.so
+objcopy lib/libfshelp.so
+objcopy lib/libhurdbugaddr.so
+copy lib/libhurduser.so
+copy lib/libhurduser.so.*
+objcopy lib/libhurduser-*.so
+objcopy lib/libihash.so
+objcopy lib/libiohelp.so
+copy lib/libm.so
+copy lib/libm.so.*
+objcopy lib/libm-*.so
+copy lib/libmachuser.so
+copy lib/libmachuser.so.*
+objcopy lib/libmachuser-*.so
+objcopy lib/libnetfs.so
+copy lib/libnss_dns.so
+copy lib/libnss_dns.so.*
+objcopy lib/libnss_dns-*.so
+copy lib/libnss_files.so
+copy lib/libnss_files.so.*
+objcopy lib/libnss_files-*.so
+objcopy lib/libpager.so
+objcopy lib/libpipe.so
+objcopy lib/libports.so
+copy lib/libresolv.so
+copy lib/libresolv.so.*
+objcopy lib/libresolv-*.so
+objcopy lib/libshouldbeinlibc.so
+objcopy lib/libstore.so
+objcopy lib/libthreads.so
+objcopy lib/libtrivfs.so
+copy lib/libutil.so
+copy lib/libutil.so.*
+objcopy lib/libutil-*.so
+
+copy dev/MAKEDEV
+makedev dev/std
+makedev dev/fd0
+makedev dev/hd0
+makedev dev/hd0a
+makedev dev/hd0b
+makedev dev/hd0c
+makedev dev/hd0d
+makedev dev/hd0e
+makedev dev/hd0f
+makedev dev/hd0g
+makedev dev/hd0s1
+makedev dev/hd0s2
+makedev dev/hd0s3
+makedev dev/hd0s4
+makedev dev/hd0s5
+makedev dev/hd0s6
+makedev dev/hd1
+makedev dev/hd1a
+makedev dev/hd1b
+makedev dev/hd1c
+makedev dev/hd1d
+makedev dev/hd1e
+makedev dev/hd1f
+makedev dev/hd1g
+makedev dev/hd1s1
+makedev dev/hd1s2
+makedev dev/hd1s3
+makedev dev/hd1s4
+makedev dev/hd1s5
+makedev dev/hd1s6
+makedev dev/sd0
+makedev dev/sd0a
+makedev dev/sd0b
+makedev dev/sd0c
+makedev dev/sd0d
+makedev dev/sd0e
+makedev dev/sd0f
+makedev dev/sd0g
+makedev dev/sd0s1
+makedev dev/sd0s2
+makedev dev/sd0s3
+makedev dev/sd0s4
+makedev dev/sd0s5
+makedev dev/sd0s6
+makedev dev/sd1
+makedev dev/sd1a
+makedev dev/sd1b
+makedev dev/sd1c
+makedev dev/sd1d
+makedev dev/sd1e
+makedev dev/sd1f
+makedev dev/sd1g
+makedev dev/sd1s1
+makedev dev/sd1s2
+makedev dev/sd1s3
+makedev dev/sd1s4
+makedev dev/sd1s5
+makedev dev/sd1s6
diff --git a/release/rfloppy.group b/release/rfloppy.group
new file mode 100644
index 00000000..47b7278c
--- /dev/null
+++ b/release/rfloppy.group
@@ -0,0 +1 @@
+wheel::0:root
diff --git a/release/rfloppy.nss b/release/rfloppy.nss
new file mode 100644
index 00000000..31447c2a
--- /dev/null
+++ b/release/rfloppy.nss
@@ -0,0 +1,19 @@
+# /etc/nsswitch.conf
+#
+# Don't use name services that we can't provide (specifically, nis & db)
+#
+
+# defaults for hosts & networks are ok
+
+passwd: files
+group: files
+shadow: files
+aliases: files
+
+protocols: files
+services: files
+ethers: files
+rpc: files
+publickey: files
+
+netgroup: files
diff --git a/release/rfloppy.passwd b/release/rfloppy.passwd
new file mode 100644
index 00000000..a799e8f6
--- /dev/null
+++ b/release/rfloppy.passwd
@@ -0,0 +1 @@
+root::0:0:Lord of the Files:/:/bin/bash
diff --git a/release/servers.boot b/release/servers.boot
new file mode 100644
index 00000000..3e1895de
--- /dev/null
+++ b/release/servers.boot
@@ -0,0 +1,16 @@
+# Boot script file for booting GNU Hurd. Each line specifies a file to be
+# loaded by the boot loader (the first word), and actions to be done with it.
+
+# First, the bootstrap filesystem. It needs several ports as arguments,
+# as well as the user flags from the boot loader.
+/hurd/ufs.static --bootflags=${boot-args} --host-priv-port=${host-port} --device-master-port=${device-port} --exec-server-task=${exec-task} -Tdevice ${root-device} $(task-create) $(task-resume)
+
+# Now the exec server; to load the dynamically-linked exec server program,
+# we have the boot loader in fact load and run ld.so, which in turn
+# loads and runs /hurd/exec. This task is created, and its task port saved
+# in ${exec-task} to be passed to the fs above, but it is left suspended;
+# the fs will resume the exec task once it is ready.
+/lib/ld.so.1 /hurd/exec $(exec-task=task-create)
+
+# default pager
+/dev/sd0b $(add-paging-file)
diff --git a/release/tool-Makefile b/release/tool-Makefile
new file mode 100644
index 00000000..6a23b95a
--- /dev/null
+++ b/release/tool-Makefile
@@ -0,0 +1,93 @@
+# Makefile for hurd image frobnication.
+
+export OBJCOPY=objcopy
+
+# Where we get programs from
+image-dir=/
+# Where we get libc
+libc-obj-dir = /gd4/hurd-native/build/glibc
+
+smallso-LDFLAGS = -Wl,-rpath-link=/lib
+
+BF=bfloppy
+RF=rfloppy
+
+bfloppy-files = $(bfloppy-bootfs:%=hurd/%) $(bfloppy-bootprogs:%=boot/%.gz) \
+ lib/ld.so boot/servers.boot
+bfloppy-bootfs = ufs
+bfloppy-bootprogs = gnumach serverboot
+
+$(BF)/boot/servers.boot: bfloppy.boot
+ @-rm -f $@
+ @test -d $(@D) || mkdir -p $(@D)
+ cp $< $@
+
+$(BF)/%/: $(image-dir)/%/
+ test -d $@ || mkdir -p $@
+$(addsuffix .gz, $(addprefix $(BF)/boot/, $(bfloppy-bootprogs))): \
+ $(BF)/boot/%.gz: $(image-dir)/boot/%
+ @-rm -f $@
+ @test -d $(@D) || mkdir -p $(@D)
+ $(OBJCOPY) --strip-unneeded $< | gzip -9 > $@
+$(BF)/%: $(image-dir)/%
+ @-rm -f $@
+ @test -d $(@D) || mkdir -p $(@D)
+ $(OBJCOPY) --strip-unneeded $< $@
+
+$(BF): $(bfloppy-files:%=$(BF)/%)
+$(BF).tar: $(bfloppy-files:%=$(BF)/%)
+ rm -f $@
+ cd $(BF); tar covf ../$@ $(^:$(BF)/%=%)
+
+rfloppy-files = $(rfloppy-hurd:%=hurd/%) $(rfloppy-progs:%=bin/%) \
+ $(rfloppy-sprogs:%=sbin/%) \
+ $(rfloppy-solib:%=lib/%.so) hurd/exec \
+ lib/libc.so lib/libhurduser.so lib/libmachuser.so \
+ servers/exec servers/socket/1 \
+ README tmp/ mnt/ dev/MAKEDEV
+rfloppy-hurd = auth storeio null init proc term pfinet nfs ufs ext2fs
+rfloppy-progs = bash ls cat settrans
+rfloppy-sprogs = mkfs.ufs mkfs.ext2
+rfloppy-solib = libtrivfs libthreads libshouldbeinlibc libports \
+ libpager libiohelp libstore libihash libfshelp libnetfs ld
+
+libc-satisfies = $(rfloppy-hurd:%=hurd/%) $(rfloppy-progs:%=bin/%) $(rfloppy-sprogs:%=sbin/%) $(rfloppy-solib:%=lib/%.so)
+
+$(RF)/lib/libc.so: $(image-dir)/lib/libc.so $(image-dir)/lib/libhurduser.so $(image-dir)/lib/libmachuser.so $(libc-satisfies:%=$(image-dir)/%)
+ mksmallso $(smallso-LDFLAGS) \
+ $@ $(libc-obj-dir)/libc_pic.a '-L$(image-dir)/lib -lhurduser -lmachuser' \
+ $(filter-out $(firstword $^),$^)
+
+$(RF)/lib/libhurduser.so: $(RF)/lib/libc.so $(libc-satisfies:%=$(image-dir)/%)
+ mksmallso $(smallso-LDFLAGS) $@ $(libc-obj-dir)/hurd/libhurduser_pic.a -L$(image-dir)/lib -lmachuser $(filter-out $(firstword $^),$^)
+
+$(RF)/lib/libmachuser.so: $(RF)/lib/libc.so $(RF)/lib/libhurduser.so $(libc-satisfies:%=$(image-dir)/%)
+ mksmallso $(smallso-LDFLAGS) $@ $(libc-obj-dir)/mach/libmachuser_pic.a '' $(filter-out $(firstword $^),$^)
+
+$(RF)/bin/%: $(image-dir)/bin/%
+ @-rm -f $@
+ @test -d $(@D) || mkdir -p $(@D)
+ $(OBJCOPY) --strip-unneeded $< $@
+$(RF)/sbin/%: $(image-dir)/sbin/%
+ @-rm -f $@
+ @test -d $(@D) || mkdir -p $(@D)
+ $(OBJCOPY) --strip-unneeded $< $@
+$(RF)/hurd/%: $(image-dir)/hurd/%
+ @-rm -f $@
+ @test -d $(@D) || mkdir -p $(@D)
+ $(OBJCOPY) --strip-unneeded $< $@
+$(RF)/servers/%:
+ @test -d $(@D) || mkdir -p $(@D)
+ touch $@
+$(RF)/%/: $(image-dir)/%/
+ test -d $@ || mkdir -p $@
+
+$(RF): $(rfloppy-files:%=$(RF)/%)
+$(RF).tar: $(rfloppy-files:%=$(RF)/%)
+ rm -f $@
+ cd $(RF); tar covf ../$@ $(^:$(RF)/%=%)
+
+bfloppy.%: $(bfloppy-files:%=$(BF)/%)
+ mkfsimage -q $@ $(BF)
+rfloppy.%.gz: $(rfloppy-files:%=$(RF)/%)
+ mkfsimage --compress -q $@ $(RF)