summaryrefslogtreecommitdiff
path: root/release/INSTALL-binary
diff options
context:
space:
mode:
Diffstat (limited to 'release/INSTALL-binary')
-rw-r--r--release/INSTALL-binary472
1 files changed, 472 insertions, 0 deletions
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.