diff options
Diffstat (limited to 'release')
33 files changed, 1275 insertions, 376 deletions
diff --git a/release/=announce-0.0 b/release/=announce-0.0 index 08d610ac..7aa1fa9f 100644 --- a/release/=announce-0.0 +++ b/release/=announce-0.0 @@ -6,17 +6,23 @@ anonymous FTP from prep.ai.mit.edu [18.159.0.42] in the file 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 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 libraries: + + diskfs, fshelp, ihash, iohelp, netfs, pager, pipe, ports, ps, + shouldbeinlibc, store, threads, trivfs. -Hurd utilities, etc: 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. +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. ------ @@ -46,12 +52,12 @@ This release may be fetched by anonymous FTP from prep.ai.mit.edu 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) + 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 @@ -78,13 +84,13 @@ 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. + 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. ------ @@ -95,11 +101,10 @@ 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 ----- 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/ChangeLog b/release/ChangeLog deleted file mode 100644 index 5bea60d1..00000000 --- a/release/ChangeLog +++ /dev/null @@ -1,110 +0,0 @@ -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-GRUB-MBR b/release/INSTALL-GRUB-MBR deleted file mode 100644 index ce15ea77..00000000 --- a/release/INSTALL-GRUB-MBR +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash -# Install grub stage1 as the MBR, copying the dos partition table from the -# existing MBR. - -DEV="$1" - -if [ ! "$DEV" -o ! -w "$DEV" ]; then - echo 2>&1 "Usage: $0 DEVICE" - exit 1 -fi - -case "$DEV" in - *r?d[0-9]) - ;; - *) - echo "The device $DEV doesn't seem to be a whole-disk raw device; continue? [n] " - read C - case "$C" in - [Yy]*) - ;; - *) - echo 2>&1 "$0: Aborting"; - exit 2 - ;; - esac - ;; -esac - -cd /tmp - -dd if="$DEV" of=mbr bs=512 count=1 \ -&& cp /boot/grub/stage1_ffs stage1 \ -&& dd if=mbr of=stage1 conv=notrunc bs=1 seek=446 skip=446 count=64 \ -&& dd if=stage1 of="$DEV" bs=512 count=1 \ -|| { echo 2>&1 "$0: Install failed!" ; exit 5 ; } - -rm mbr stage1 - -echo "$0: /boot/grub/stage1_ffs installed in MBR" -echo "$0: Don't forget to use the grub \`install=' command to install stage2" diff --git a/release/INSTALL-binary b/release/INSTALL-binary index e3416437..d13beb8c 100644 --- a/release/INSTALL-binary +++ b/release/INSTALL-binary @@ -1,6 +1,6 @@ -*- Text -*- Instructions for bootstrapping the Hurd from binary images (i386). -GNU Version 0.0 +GNU Version 0.2 This is the Hurd. Welcome. @@ -15,10 +15,9 @@ Library General Public when distributing this binary snapshot. See licenses. If you have noticed that these steps are rather long and a bit too -complex, you are right. But we didn't want to delay the release just -in order to make the installation prettier. You can rest assured, -however: Making it prettier and easier is one of our more important -priorities. +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 @@ -36,9 +35,6 @@ 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. -If any of these mailing address should fail, send your message to -`tower@gnu.ai.mit.edu' and ask him to forward it properly. - STEP I: @@ -50,10 +46,7 @@ file onto a fresh floppy with the command: 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. We have not prepared instructions for -setting up the system from an existing Linux-based system because of -time pressures. But all the tools and pieces should work for the more -stalwart souls to try it. +needs to be BSD FFS format or Linux ext2fs format. Start with a system already running BSD: @@ -66,15 +59,31 @@ Start with a system already running BSD: entire Hurd image into it. Make sure you do this as root, and remember to give tar the `p' option. -If you do not have a system running BSD, you can install using the -NetBSD boot floppies: +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 soon, which will make this all a -fair bit easier. +We plan to have our own boot floppies, which will make this all a fair +bit easier. @@ -91,6 +100,11 @@ 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.) @@ -126,17 +140,12 @@ 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 disk - -where `disk' is the name of the disk to install the boot block on, -without partition name, for example `sd0' or `hd0'. (If you give no -arg, it will ask you for the device to install the boot block on in -case you forgot. If you really don't want a boot block, just hit RET -when it asks.) + /bin/sh /SETUP This will set up some initial translators so that the system runs -normally, and then offer to reboot the system. When it comes back up, -boot it single-user again, so that you can do step V. +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! @@ -157,10 +166,11 @@ NOTE: Do NOT RUN BSD FSCK on a Hurd FFS! STEP V: -Now boot from the floppy again. This time, select the "grub install" -option. (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. +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. @@ -185,10 +195,8 @@ 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 `rd1f' is called for. Unit - number without any partition names the entire disk. (SETUP has - already created a device for the entire disk holding your boot - block, if you gave it that information.) + 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'. @@ -223,25 +231,20 @@ nameserver to work properly. You can mount a partition (say hd0a) by saying: - settrans /mnt /hurd/ufs /dev/rhd0a + settrans /mnt /hurd/ufs /dev/hd0a -The name `/dev/rhd0a' must have been created using `./MAKEDEV hd0a' in +The name `/dev/hd0a' must have been created using `./MAKEDEV hd0a' in the /dev directory. (This is equivalent to Unixy `mount /dev/hd0a /mnt'.) - -(Note that you are using the *RAW* device here. In theory, it's -irrelevant [and this is really only being used to get a name in a -clever but strange way], but there are minor bugs in the non-raw -versions, so don't try and use them.) If it's a Linux ext2 format disk, just do - settrans /mnt /hurd/ext2fs /dev/rhd0a + settrans /mnt /hurd/ext2fs /dev/hd0a You can make it readonly thus: - settrans /mnt /hurd/ufs -r /dev/rhd0a + settrans /mnt /hurd/ufs -r /dev/hd0a For more information on settrans, see the end of this file. @@ -261,7 +264,7 @@ automatically fscked, you'll have to make entries in /etc/fstab (see 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/rsd0a'. +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. @@ -295,6 +298,16 @@ 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! @@ -385,7 +398,7 @@ 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/arch/i386/floppies. The NetBSD install +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. @@ -403,7 +416,7 @@ 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/arch/i386/floppies. Put the + 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. @@ -449,8 +462,8 @@ K. Initialize the network with `ifconfig DEV MY-ADDR'. DEV was 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 conveniente command - `mount SERVER-ADDR:SERVER-DIR /mnt2'. +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 -) diff --git a/release/Makefile b/release/Makefile index 038c8974..e5d94e18 100644 --- a/release/Makefile +++ b/release/Makefile @@ -1,5 +1,5 @@ # Makefile for Hurd release tools -# Copyright (C) 1996 Free Software Foundation, Inc. +# Copyright (C) 1996, 1997 Free Software Foundation, Inc. # Written by Michael I. Bushnell, p/BSG. # # This file is part of the GNU Hurd. @@ -22,13 +22,16 @@ dir := release makemode := misc # Files that go into the root of binary distributions -dist-files = INSTALL-binary dist-README SETUP INSTALL-GRUB-MBR servers.boot \ - menu.lst COPYING.LIB SOURCES.0.0 +dist-files = INSTALL-binary dist-README SETUP servers.boot bfloppy.boot \ + menu.lst COPYING.LIB SOURCES.0.2 -# Tools for making images -tool-files = tool-Makefile install-stripped +# 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 -DIST_FILES = README $(dist-files) $(tool-files) +scripts = mkfsimage.sh mksmallso.sh mkemptyso.sh + +DIST_FILES = README $(dist-files) $(floppy-copy) $(scripts) include ../Makeconf @@ -37,25 +40,46 @@ 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.0 $(dist-root)/SOURCES - cp $(srcdir)/INSTALL-GRUB-MBR $(dist-root)/INSTALL-GRUB-MBR + 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 + 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 -ifneq ($(tool-root),) -install-tools: - cp $(srcdir)/install-stripped $(tool-root)/ - chmod +x $(tool-root)/install-stripped - cp $(srcdir)/tool-Makefile $(tool-root)/Makefile +# 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/SETUP b/release/SETUP index 56da063e..9860f03a 100644 --- a/release/SETUP +++ b/release/SETUP @@ -1,20 +1,22 @@ #!/bin/bash # Setup critical hurd translators -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 +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 @@ -24,6 +26,7 @@ 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 @@ -31,14 +34,14 @@ cd /dev 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/r$BOOT_DEV;; - esac -fi +# 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 diff --git a/release/SOURCES.0.0 b/release/SOURCES.0.0 index e75c176b..673f8dd1 100644 --- a/release/SOURCES.0.0 +++ b/release/SOURCES.0.0 @@ -2,7 +2,7 @@ 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 +version in ftp://prep.gnu.ai.edu/pub/gnu according to the provided instructions without modification: autoconf (2.10) @@ -107,5 +107,5 @@ 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.] +mach4 (UK22, slightly 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 index 2f5c7e7c..2e27a4b3 100644 --- a/release/checklist +++ b/release/checklist @@ -1,21 +1,61 @@ -Checklist for Hurd releases. +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 sure /i486-gnu contains hard links, not copies. +* 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 -o Source code for Hurd and libc must be released. -* Make sure everything listed in SOURCES is on prep. +* 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, ps, w, vmstat, rsh, rlogin, games/lib/nethack/nethack) + (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. -o Verify installation on bare machine. +* 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 index 2ad479ca..afad66cf 100644 --- a/release/dist-README +++ b/release/dist-README @@ -2,7 +2,7 @@ This is the Hurd. Welcome. -This is the complete GNU system, version 0.0. +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. @@ -32,9 +32,6 @@ 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. -If any of these mailing address should fail, send your message to -`tower@gnu.ai.mit.edu' and ask him to forward it properly. - The GNU system is free software. See the files /share/misc/COPYING and /share/misc/COPYING.LIB. diff --git a/release/menu.lst b/release/menu.lst index 7686778a..00807dec 100644 --- a/release/menu.lst +++ b/release/menu.lst @@ -14,34 +14,37 @@ default= 0 # These two entries are for SCSI disks # Entry 0: title= hurd (sd0a multi-user) -root= hd(0,a) -kernel= /boot/kernel root=sd0a +root= (hd0,a) +kernel= /boot/gnumach root=sd0a module= /boot/serverboot # Entry 1: title= hurd (sd0a single-user) -root= hd(0,a) -kernel= /boot/kernel root=sd0a -s +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= hd(0,a) -kernel= /boot/kernel root=hd0a +root= (hd0,a) +kernel= /boot/gnumach root=hd0a module= /boot/serverboot # Entry 3: title= hurd (hd0a single-user) -root= hd(0,a) -kernel= /boot/kernel root=hd0a -s +root= (hd0,a) +kernel= /boot/gnumach root=hd0a -s module= /boot/serverboot -# Installation step for GRUB hard disk boot blocks +# Installation steps for GRUB hard disk boot blocks # Entry 4: -title= grub install -root= hd(0) -install=hd(0,a)/boot/grub/stage2 +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..07b142f0 --- /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 occurrence 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 preceding "\`"rename TARGET"\'" says to give +NAME a different name in the target tree, and a preceding "\`"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 index 91beb152..9ba7f6a4 100644 --- a/release/servers.boot +++ b/release/servers.boot @@ -3,14 +3,12 @@ # 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} --machdev ${root-device} $(task-create) $(task-resume) +/hurd/ext2fs.static --multiboot-command-line=${kernel-command-line} --host-priv-port=${host-port} --device-master-port=${device-port} --exec-server-task=${exec-task} -T typed ${root} $(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; +# 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 /hurd/exec $(exec-task=task-create) - -# default pager -/dev/sd0b $(add-paging-file) $(default-pager) +/lib/ld.so.1 /hurd/exec $(exec-task=task-create) diff --git a/release/tool-Makefile b/release/tool-Makefile index 375042e4..6a23b95a 100644 --- a/release/tool-Makefile +++ b/release/tool-Makefile @@ -1,27 +1,38 @@ # Makefile for hurd image frobnication. -export GNUTARGET=elf32-i386 -export OBJCOPY=i386-gnu-objcopy +export OBJCOPY=objcopy -BF=bfloppy-image -RF=rfloppy-image +# Where we get programs from +image-dir=/ +# Where we get libc +libc-obj-dir = /gd4/hurd-native/build/glibc -bfloppy-files = $(bfloppy-bootfs:%=hurd/%) $(bfloppy-bootprogs:%=boot/%) \ +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 = kernel bootstrap +bfloppy-bootprogs = gnumach serverboot -$(BF)/boot/servers.boot: hurd-image/boot/floppy.boot - -rm -f $@ +$(BF)/boot/servers.boot: bfloppy.boot + @-rm -f $@ @test -d $(@D) || mkdir -p $(@D) cp $< $@ -$(BF)/%/: hurd-image/%/ +$(BF)/%/: $(image-dir)/%/ test -d $@ || mkdir -p $@ -$(BF)/%: hurd-image/% - -rm -f $@ +$(addsuffix .gz, $(addprefix $(BF)/boot/, $(bfloppy-bootprogs))): \ + $(BF)/boot/%.gz: $(image-dir)/boot/% + @-rm -f $@ @test -d $(@D) || mkdir -p $(@D) - ln $< $@ || cp $< $@ + $(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)/%) @@ -29,96 +40,54 @@ $(BF).tar: $(bfloppy-files:%=$(BF)/%) 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/ dev/MAKEDEV -rfloppy-hurd = auth devio null init proc term -rfloppy-progs = sh ls cat settrans # mkfs + 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 libioserver libihash libfshelp ld - -libc-satisfies = $(rfloppy-hurd:%=hurd/%) $(rfloppy-progs:%=bin/%) $(rfloppy-solib:%=lib/%.so) - -libc-obj-dir = /gd4/gnu/libc/i386 -smallso-LDFLAGS = -Wl,-rpath-link=/lib + libpager libiohelp libstore libihash libfshelp libnetfs ld -libc-USERS = -libc-DEPS = +libc-satisfies = $(rfloppy-hurd:%=hurd/%) $(rfloppy-progs:%=bin/%) $(rfloppy-sprogs:%=sbin/%) $(rfloppy-solib:%=lib/%.so) -$(RF)/lib/libc.so: hurd-image/lib/libc.so hurd-image/lib/libhurduser.so hurd-image/lib/libmachuser.so $(libc-satisfies:%=hurd-image/%) +$(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 '-Lhurd-image/lib -lhurduser -lmachuser' \ + $@ $(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:%=hurd-image/%) - mksmallso $(smallso-LDFLAGS) $@ $(libc-obj-dir)/libhurduser_pic.a -Lhurd-image/lib -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:%=hurd-image/%) - mksmallso $(smallso-LDFLAGS) $@ $(libc-obj-dir)/libmachuser_pic.a '' $(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 $^),$^) -$(addprefix $(RF)/,$(rfloppy-hurd:%=hurd/%) $(rfloppy-progs:%=bin/%)): \ - $(RF)/%: hurd-image/% +$(RF)/bin/%: $(image-dir)/bin/% + @-rm -f $@ @test -d $(@D) || mkdir -p $(@D) - gzip -9v -c $< > $@.new - chmod 555 $@.new - mv -f $@.new $@ - -$(RF)/%/: hurd-image/%/ - test -d $@ || mkdir -p $@ -$(RF)/%: hurd-image/% - -rm -f $@ + $(OBJCOPY) --strip-unneeded $< $@ +$(RF)/sbin/%: $(image-dir)/sbin/% + @-rm -f $@ @test -d $(@D) || mkdir -p $(@D) - ln $< $@ || cp $< $@ + $(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)/%=%) -MOUNT_POINT = /mnt -VND = vnd0 -VND_DEV = /dev/${VND}a -VND_RDEV = /dev/r${VND}a -MDEC = /usr/mdec - -floppy%-image.fs: /tmp/floppy%-image.fs; cp -f $< $@ - -/tmp/floppy%-image.fs: floppy%-image.tar - dd if=/dev/zero of=$@.new bs=10k count=144 - vnconfig -v -c ${VND_DEV} $@.new - disklabel -w -B -b ${MDEC}/fdboot -s ${MDEC}/bootfd ${VND} floppy3 - newfs -O -m 0 -o space -i 5120 -c 80 ${VND_RDEV} floppy3 - mount ${VND_DEV} ${MOUNT_POINT} - tar -f $< -C ${MOUNT_POINT} -xv - df -i ${MOUNT_POINT} - umount ${MOUNT_POINT} - vnconfig -u ${VND_DEV} $@.new - mv -f $@.new $@ - -hurd-image.tar: hurd-image hurd-image.stamp - tar cof $@ $< - -%.gz: % - gzip -9v -c $< > $@.new - mv -f $@.new $@ - -%:: %.gz - gunzip -c $< > $@.new - mv -f $@.new $@ - - -instdirs := $(patsubst ../hurdinst/%,%,\ - $(filter-out ../hurdinst,\ - $(shell find ../hurdinst -type d -print \ - | sort -r))) - -hurd-image/%/.stamp: ../hurdinst/% - @./install-stripped -N $@ $< $(@D) - @echo $< `date` > $@ - @echo updated $(@D)/ -hurd-image.stamp: $(instdirs:%=hurd-image/%/.stamp); touch $@ -hurd-image: hurd-image.stamp - - -
\ No newline at end of file +bfloppy.%: $(bfloppy-files:%=$(BF)/%) + mkfsimage -q $@ $(BF) +rfloppy.%.gz: $(rfloppy-files:%=$(RF)/%) + mkfsimage --compress -q $@ $(RF) |