diff options
Diffstat (limited to 'release')
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) |