diff --git a/handbook/authors.sgml b/handbook/authors.sgml index 1437eb3e0b..56a387947f 100644 --- a/handbook/authors.sgml +++ b/handbook/authors.sgml @@ -1,288 +1,330 @@ - + +"> + +"> + +"> + +"> + +"> + +"> + +"> + +"> + +"> + +"> + "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> "> diff --git a/handbook/contrib.sgml b/handbook/contrib.sgml index e644fdff2a..a24df37c0c 100644 --- a/handbook/contrib.sgml +++ b/handbook/contrib.sgml @@ -1,361 +1,361 @@ - + FreeBSD contributor list Derived software contributors

This software was originally derived from William F. Jolitz's 386BSD release 0.1, though almost none of the original 386BSD specific code remains. This software has been essentially re-implemented from the 4.4 BSD Lite release provided by the Computer Science Research Group (CSRG) at the University of California, Berkeley and associated academic contributors. There are also portions of NetBSD that have been integrated into FreeBSD as well, and we would therefore like to thank all the contributors to NetBSD for their work. Despite some occasionally rocky moments in relations between the two groups, we both want essentially the same thing: More BSD based operating systems on people's computers! We wish the NetBSD group every success in their endeavors. Hardware contributors

A special thank-you to Walnut Creek CDROM for providing the Pentium P5-90 and 486/DX2-66 EISA/VL systems that are being used for our development work, to say nothing of the network access and other donations of hardware resources. It would have been impossible to do this release without their support. TRW Financial Systems, Inc. provided 130 PCs, three 68 GB fileservers, twelve Ethernets, two routers and an ATM switch for debugging the diskless code. They also keep a couple of FreeBSD hackers alive and busy. Thanks! Thanks also to Dermot McDonnell for his donation of a Toshiba XM3401B CDROM drive. It's been most useful! Thanks to Chuck Robey <chuckr@eng.umd.edu> who contributed his floppy tape streamer for experimental work. Thanks to Larry Altneu <larry@ALR.COM>, and to Wilko Bulte <wilko@yedi.iaf.nl>, for providing us with a Wangtek and an Archive QIC-02 tape drive, in order to give us the hardware to improve the wt driver. The FreeBSD core team

(in alphabetical order by last name): &a.asami &a.ache &a.dyson &a.bde &a.gibbs &a.davidg &a.jkh &a.phk &a.rich &a.gpalmer &a.sos &a.peter &a.wollman &a.joerg The FreeBSD Developers

These are the people who have commit privileges and do the work on FreeBSD source tree. All core team members are also developers. &a.torstenb; &a.gclarkii; &a.adam; &a.dufault; &a.uhclem; &a.julian; &a.sef; &a.se; &a.fenner; &a.jfieber; &a.lars; &a.tg; &a.graichen; &a.rgrimes; &a.hsu; &a.ugen; &a.gj; &a.ljo; &a.erich; &a.smace; &a.amurai; &a.markm; &a.olah; &a.wpaul; &a.jmacd; &a.jdp; &a.mpp; &a.dfr; &a.csgr; &a.martin; &a.paul; &a.roberto; &a.dima; &a.wosch; &a.ats; &a.karl; &a.pst; &a.guido; &a.swallace; &a.nate; &a.jmz; Who is responsible for what

Additional FreeBSD contributors

(in alphabetical order by first name): Adam Glass <glass@postgres.berkeley.edu> Adrian T. Filipi-Martin <atf3r@agate.cs.virginia.edu> Akito Fujita <fujita@zoo.ncl.omron.co.jp> Alain Kalker <A.C.P.M.Kalker@student.utwente.nl> Alex Nash <alex@zen.nash.org> Andreas Klemm <andreas@knobel.GUN.de> Andrew Gordon <andrew.gordon@net-tel.co.uk> Andrew Herbert <andrew@werple.apana.org.au> Andrew McRae <amcrae@cisco.com> Andrew Moore <alm@FreeBSD.org> Anthony Yee-Hang Chan <yeehang@netcom.com> Bernd Rosauer <br@netland.sub.de> Bob Wilcox <bob@obiwan.uucp> Brent J. Nordquist <nordquist@platinum.com> Brian Clapper <bmc@telebase.com> Brian Tao <taob@gate.sinica.edu.tw> Charles Hannum <mycroft@ai.mit.edu> Chet Ramey <chet@odin.INS.CWRU.Edu> Chris G. Demetriou <cgd@postgres.berkeley.edu> Chris Stenton <jacs@gnome.co.uk> Chris Torek <torek@ee.lbl.gov> Christian Gusenbauer <cg@fimp01.fim.uni-linz.ac.at> Christian Haury <Christian.Haury@sagem.fr> Christoph Robitschko <chmr@edvz.tu-graz.ac.at> Chuck Hein <chein@cisco.com> Chuck Robey <chuckr@Glue.umd.edu> Cornelis van der Laan <nils@guru.ims.uni-stuttgart.de> Craig Struble <cstruble@vt.edu> Cristian Ferretti <cfs@riemann.mat.puc.cl> Curt Mayer <curt@toad.com> Daniel Baker <dbaker@crash.ops.neosoft.com> Daniel M. Eischen <deischen@iworks.InterWorks.org> Danny J. Zerkel <dzerkel@feephi.phofarm.com> Dave Burgess <burgess@hrd769.brooks.af.mil> Dave Chapeskie <dchapes@zeus.leitch.com> Dave Rivers <rivers@ponds.uucp> David Dawes <dawes@physics.su.OZ.AU> David O'Brien <obrien@cs.ucdavis.edu> Dean Huxley <dean@fsa.ca> Dirk Froemberg <dirk@hal.in-berlin.de> Don Whiteside <dwhite@anshar.shadow.net> Donald Burr <d_burr@ix.netcom.com> Doug Ambrisko <ambrisko@ambrisko.roble.com> Frank Bartels <knarf@camelot.de> Frank Maclachlan <fpm@crash.cts.com> Frank Nobis <fn@trinity.radio-do.de> Gary A. Browning <gab10@griffcd.amdahl.com> Gene Stark <stark@cs.sunysb.edu> Greg Ungerer <gerg@stallion.oz.au> Harlan Stenn <Harlan.Stenn@pfcs.com> Havard Eidnes <Havard.Eidnes@runit.sintef.no> Hideaki Ohmon <ohmon@sfc.keio.ac.jp> Hidetoshi Shimokawa <simokawa@sat.t.u-tokyo.ac.jp> Holger Veit <Holger.Veit@gmd.de> Ishii Masahiro, R. Kym Horsell J.T. Conklin <jtc@cygnus.com> James Clark <jjc@jclark.com> James FitzGibbon <james@nexis.net> James da Silva <jds@cs.umd.edu> et al Janusz Kokot <janek@gaja.ipan.lublin.pl> Javier Martin Rueda <jmrueda@diatel.upm.es> Jian-Da Li <jdli@FreeBSD.csie.NCTU.edu.tw> Jim Wilson <wilson@moria.cygnus.com> John Hay - <jhay@mikom.csir.co.za> John Perry <perry@vishnu.alias.net> Juergen Lock <nox@jelal.hb.north.de> Julian Stacey <stacey@guug.de> (fallback: <julian@meepmeep.pcs.com>) Keith Bostic <bostic@toe.CS.Berkeley.EDU> Keith Moore <?> Kirk McKusick <mckusick@mckusick.com> Kurt Olsen <kurto@tiny.mcs.usu.edu> Lucas James <Lucas.James@ldjpc.apana.org.au> Marc Frajola <marc@dev.com> Marc Ramirez <mrami@mramirez.sy.yale.edu Marc van Kempen <wmbfmk@urc.tue.nl> Mark Tinguely <tinguely@plains.nodak.edu> <tinguely@hookie.cs.ndsu.NoDak.edu> Martin Birgmeier Masafumi Nakane <max@sfc.wide.ad.jp> Matt Thomas <thomas@lkg.dec.com> - Michael Elbel <me@freebsd.org> + Michael Elbel <me@FreeBSD.ORG> Michael Smith <msmith@atrad.adelaide.edu.au> Mike Peck <mike@binghamton.edu> MITA Yoshio <mita@iis.u-tokyo.ac.jp> NIIMI Satoshi <sa2c@and.or.jp> Nisha Talagala <nisha@cs.berkeley.edu> Nobuhiro Yasutomi <nobu@psrc.isac.co.jp> Nobuyuki Koganemaru <kogane@kces.koganemaru.co.jp> Noritaka Ishizumi <graphite@taurus.bekkoame.or.jp> Paul Kranenburg <pk@cs.few.eur.nl> Paul Mackerras <paulus@cs.anu.edu.au> Philippe Charnier <charnier@lirmm.fr> Richard Stallman <rms@gnu.ai.mit.edu> Richard Wiwatowski <rjwiwat@adelaide.on.neti> Rob Shady <rls@id.net> Rob Snow <rsnow@txdirect.net> Robert Sanders <rsanders@mindspring.com> Sascha Wildner <swildner@channelz.GUN.de> Scott Blachowicz <scott@sabami.seaslug.org> Serge V. Vakulenko <vak@zebub.msk.su> Stephen McKay <syssgm@devetir.qld.gov.au> Steve Gerakines <steve2@genesis.tiac.net> Steve Passe <smp@csn.net> Tatsumi Hosokawa <hosokawa@mt.cs.keio.ac.jp> Terry Lambert <terry@lambert.org> Terry Lee <terry@uivlsi.csl.uiuc.edu> Theo Deraadt <deraadt@fsa.ca> Thomas Gellekum <thomas@ghpc8.ihf.rwth-aachen.de> Tom Samplonius <tom@misery.sdf.com> Torbjorn Granlund <tege@matematik.su.se> Werner Griessl <werner@btp1da.phy.uni-bayreuth.de> Wes Santee <wsantee@wsantee.oz.net> Wolfgang Stanglmeier <wolf@kintaro.cologne.de> Yoshiro Mihira <sanpei@yy.cs.keio.ac.jp> Yuval Yarom <yval@cs.huji.ac.il> Yves Fonk <yves@cpcoup5.tn.tudelft.nl> 386BSD Patch kit patch contributors

(in alphabetical order by first name): Adam Glass <glass@postgres.berkeley.edu> Adrian Hall <adrian@ibmpcug.co.uk> Andrey A. Chernov <ache@astral.msk.su> Andrew Herbert <andrew@werple.apana.org.au> Andrew Moore <alm@netcom.com> Andy Valencia <ajv@csd.mot.com> <jtk@netcom.com> Arne Henrik Juul <arnej@Lise.Unit.NO> Bakul Shah <bvs@bitblocks.com> Barry Lustig <barry@ictv.com> Bob Wilcox <bob@obiwan.uucp> Branko Lankester Brett Lymn <blymn@mulga.awadi.com.AU> Charles Hannum <mycroft@ai.mit.edu> Chris G. Demetriou <cgd@postgres.berkeley.edu> Chris Torek <torek@ee.lbl.gov> Christoph Robitschko <chmr@edvz.tu-graz.ac.at> Daniel Poirot <poirot@aio.jsc.nasa.gov> Dave Burgess <burgess@hrd769.brooks.af.mil> Dave Rivers <rivers@ponds.uucp> David Dawes <dawes@physics.su.OZ.AU> David Greenman <davidg@Root.COM> Eric J. Haug <ejh@slustl.slu.edu> Felix Gaehtgens <felix@escape.vsse.in-berlin.de> Frank Maclachlan <fpm@crash.cts.com> Gary A. Browning <gab10@griffcd.amdahl.com> Geoff Rehmet <csgr@alpha.ru.ac.za> Goran Hammarback <goran@astro.uu.se> Guido van Rooij <guido@gvr.win.tue.nl> Guy Harris <guy@auspex.com> Havard Eidnes <Havard.Eidnes@runit.sintef.no> Herb Peyerl <hpeyerl@novatel.cuc.ab.ca Holger Veit <Holger.Veit@gmd.de> Ishii Masahiro, R. Kym Horsell J.T. Conklin <jtc@cygnus.com> Jagane D Sundar < jagane@netcom.com > James Clark <jjc@jclark.com> James Jegers <jimj@miller.cs.uwm.edu> James W. Dolter James da Silva <jds@cs.umd.edu> et al Jay Fenlason <hack@datacube.com> Jim Wilson <wilson@moria.cygnus.com> Jörg Lohse <lohse@tech7.informatik.uni-hamburg.de> Jörg Wunsch <joerg_wunsch@uriah.heep.sax.de> John Dyson - <formerly dyson@ref.tfs.com> John Polstra <jdp@polstra.com> John Woods <jfw@eddie.mit.edu> Jordan K. Hubbard <jkh@whisker.hubbard.ie> Julian Elischer <julian@dialix.oz.au> Julian Stacey <stacey@guug.de> (fallback: <julian@meepmeep.pcs.com>) Karl Lehenbauer <karl@NeoSoft.com> <karl@one.neosoft.com> Keith Bostic <bostic@toe.CS.Berkeley.EDU> Ken Hughes Kent Talarico <kent@shipwreck.tsoft.net> Kevin Lahey <kml%rokkaku.UUCP@mathcs.emory.edu> <kml@mosquito.cis.ufl.edu> Marc Frajola <marc@dev.com> Mark Tinguely <tinguely@plains.nodak.edu> <tinguely@hookie.cs.ndsu.NoDak.edu> Martin Renters <martin@innovus.com> Michael Galassi <nerd@percival.rain.com> Mike Durkin <mdurkin@tsoft.sf-bay.org> Nate Williams <nate@bsd.coe.montana.edu> Nick Handel <nhandel@NeoSoft.com> <nick@madhouse.neosoft.com> Pace Willisson <pace@blitz.com> Paul Kranenburg <pk@cs.few.eur.nl> Paul Mackerras <paulus@cs.anu.edu.au> Paul Popelka <paulp@uts.amdahl.com> Peter da Silva <peter@NeoSoft.com> Phil Sutherland <philsuth@mycroft.dialix.oz.au> - Poul-Henning Kamp<phk@FreeBSD.org> + Poul-Henning Kamp<phk@FreeBSD.ORG> Ralf Friedl <friedl@informatik.uni-kl.de> Rick Macklem <root@snowhite.cis.uoguelph.ca> Robert D. Thrush <rd@phoenix.aii.com> Rodney W. Grimes <rgrimes@cdrom.com> Rog Egge <?> Sascha Wildner <swildner@channelz.GUN.de> Scott Burris <scott@pita.cns.ucla.edu> Scott Reynolds <scott@clmqt.marquette.mi.us> Sean Eric Fagan <sef@kithrup.com> Simon J Gerraty <sjg@melb.bull.oz.au> <sjg@zen.void.oz.au> Stephen McKay <syssgm@devetir.qld.gov.au> Terry Lambert <terry@icarus.weber.edu> Terry Lee <terry@uivlsi.csl.uiuc.edu> Warren Toomey <wkt@csadfa.cs.adfa.oz.au> Wiljo Heinen <wiljo@freeside.ki.open.de> William Jolitz <withheld> Wolfgang Solfrank <ws@tools.de> Wolfgang Stanglmeier <wolf@dentaro.GUN.de> Yuval Yarom <yval@cs.huji.ac.il> diff --git a/handbook/ctm.sgml b/handbook/ctm.sgml index 032eb6e52f..84308b472e 100644 --- a/handbook/ctm.sgml +++ b/handbook/ctm.sgml @@ -1,199 +1,199 @@ CTM

Contributed by &a.phk;. Updated 16-Mar-1995. Why should I use

. What do I need to use

You will need two things: The ``/usr/src/usr.sbin/ if you have a copy of the source online. If you are running a pre-2.0 version of FreeBSD, you can fetch the current + url="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/FreeBSD-current/src/usr.sbin/ctm"> The ``deltas'' you feed FTP the relevant directory and fetch the /etc/aliases if you want to have the process run in a fully automated fashion. Check the Starting off with

Before you can start using Using

To apply the deltas, simply say cd /where/ever/you/want/the/stuff ctm -v -v /where/you/store/your/deltas/src-cur.* Future plans for

Tons of them: Make local modifications to the tree possible. One way to do it could be this:

When foo/bar.c'', it would first check for the existence of foo/bar.c#CTM If this file exists, the delta is applied to it instead. This way the foo/bar.c file can be edited to suit local needs. Make a ``restore file(s)'' option to ctm -r src/sys/i386/wd.c /here/are/my/deltas/src-cur.* would restore Clean up the options to The bad news is that I am very busy, so any help in doing this will be most welcome. And don't forget to tell me what you want also... Miscellaneous stuff

All the ``DES infected'' (e.g. export controlled) source is not included. You will get the ``international'' version only. If sufficient interest appears, we will set up a ``Thanks!

diff --git a/handbook/current.sgml b/handbook/current.sgml index 79054dab54..c8fc80b5cd 100644 --- a/handbook/current.sgml +++ b/handbook/current.sgml @@ -1,166 +1,166 @@ - + Staying current with FreeBSD

Contributed by &a.jkh;. What is FreeBSD-current?

FreeBSD-current is, quite literally, nothing more than a daily snapshot of the working sources for FreeBSD. These include work in progress, experimental changes and transitional mechanisms that may or may not be present in the next official release of the software. While many of us compile almost daily from FreeBSD-current sources, there are periods of time when the sources are literally un-compilable. These problems are generally resolved as expeditiously as possible, but whether or not FreeBSD-current sources bring disaster or greatly desired functionality can literally be a matter of which part of any given 24 hour period you grabbed them in! Under certain circumstances we will sometimes make binaries for parts of FreeBSD-current available, but only because we're interested in getting something tested, not because we're in the business of providing binary releases of current. If we don't offer, please don't ask! It takes far too much time to do this as a general task. Who needs FreeBSD-current?

FreeBSD-current is made generally available for 3 primary interest groups: Members of the FreeBSD group who are actively working on some part of the source tree and for whom keeping `current' is an absolute requirement. Members of the FreeBSD group who are active testers, willing to spend time working through problems in order to ensure that FreeBSD-current remains as sane as possible. These are also people who wish to make topical suggestions on changes and the general direction of FreeBSD. Peripheral members of the FreeBSD (or some other) group who merely wish to keep an eye on things and use the current sources for reference purposes (e.g. for reading, not running). These people also make the occasional comment or contribute code. What is FreeBSD-current NOT?

A fast-track to getting pre-release bits because you heard there's some cool new feature in there and you want to be the first on your block to have it. A quick way of getting bug fixes. In any way ``officially supported'' by us. We do our best to help people genuinely in one of the 3 ``legitimate'' FreeBSD-current categories, but we simply do not have the time to help every person who jumps into FreeBSD-current with more enthusiasm than knowledge of how to deal with experimental system software. This is not because we're mean and nasty people who don't like helping people out (we wouldn't even be doing FreeBSD if we were), it's literally because we can't answer 400 messages a day and actually work on FreeBSD! I'm sure that, if given the choice between having us answer lots of questions or continuing to improve FreeBSD, most of you would vote for us improving it. Using FreeBSD-current

Join the freebsd-current and cvs-all mailing lists. This is not just a good idea, it's - essential. If you aren't on freebsd-current, you + essential. If you aren't on the &a.current, you won't see the comments that people are making about the current state of the system and thus will probably end up stumbling over a lot of problems that others have already found and solved. Even more importantly, you will miss out on potentially critical information (e.g. ``Yo, Everybody! Before you rebuild /usr/src, you must rebuild the kernel or your system will crash horribly!"). The cvs-all mailing list will allow you to see the commit log entry for each change as it's made along with any pertinent information on possible side-effects. To join these lists, send mail to and say: subscribe current subscribe cvs-all In the body of your message. Optionally, you can also say `help' and Majordomo will send you full help on how to subscribe and unsubscribe to the various other mailing lists we support. Grab the sources from ftp.FreeBSD.ORG. You can do this in three ways: Using the CTM facility described below. Unless you have a good TCP/IP connection at a flat rate, this is the way to do it. Use the CMU `sup' program (Software Update Protocol), also described below. This is the second most recommended method, since it allows you to grab the entire collection once and then only what's changed from then on. Many people run sup from cron and keep their sources up-to-date automatically. Use ftp. The source tree for FreeBSD-current is always "exported" on: We also use `wu-ftpd' which allows compressed/tar'd grabbing of whole trees. e.g. you see: usr.bin/lex You can do: ftp> cd usr.bin ftp> get lex.tar.Z And it will get the whole directory for you as a compressed tar file. Essentially, if you need rapid on-demand access to the source and communications bandwidth is not a consideration, use sup or ftp. Otherwise, use CTM. If you're grabbing the sources to run, and not just look at, then grab all of current, not just selected portions. The reason for this is that various parts of the source depend on updates elsewhere, and trying to compile just a subset is almost guaranteed to get you into trouble. Before compiling current, read the Makefile in /usr/src carefully. You should at least run a `make world' the first time through as part of the upgrading process. - Reading freebsd-hackers will keep you up-to-date on other + Reading the &a.hackers will keep you up-to-date on other bootstrapping procedures that sometimes become necessary as we move towards the next release. Be active! If you're running FreeBSD-current, we want to know what you have to say about it, especially if you have suggestions for enhancements or bug fixes. Suggestions with accompanying code are received most enthusiastically! diff --git a/handbook/dialup.sgml b/handbook/dialup.sgml index 7c54b179fe..ccac5b7db6 100644 --- a/handbook/dialup.sgml +++ b/handbook/dialup.sgml @@ -1,812 +1,810 @@ Dialup access

Contributed by &a.ghelmer;. This document provides suggestions for configuring a FreeBSD system to handle dialup modems. This document is written based on the author's experience with FreeBSD versions 1.0, 1.1, and 1.1.5.1 (and experience with dialup modems on other UNIX-like operating systems); however, this document may not answer all of your questions or provide examples specific enough to your environment. The author cannot be responsible if you damage your system or lose data due to attempting to follow the suggestions here. Prerequisites

To begin with, the author assumes you have some basic knowledge of FreeBSD. You need to have FreeBSD installed, know how to edit files in a UNIX-like environment, and how to look up manual pages on the system. As discussed below, you'll need certain versions of FreeBSD, and knowledge of some terminology & modem and cabling. FreeBSD Version

First, it is assumed that you are using FreeBSD version 1.1 or higher (including versions 2.x). FreeBSD version 1.0 included two different serial drivers, which complicates the situation. Also, the serial device driver (Terminology

A quick rundown of terminology: If you need more information about these terms and data communications in general, the author remembers reading that External vs. Internal Modems

External modems seem to be more convenient for dialup, because external modems often can be semi-permanently configured via parameters stored in non-volatile RAM and they usually provide lighted indicators that display the state of important RS-232 signals. Blinking lights impress visitors, but lights are also very useful to see whether a modem is operating properly. Internal modems usually lack non-volatile RAM, so their configuration may be limited only to setting DIP switches. If your internal modem has any signal indicator lights, it is probably difficult to view the lights when the system's cover is in place. Modems and Cables

A background knowledge of these items is assumed You know how to connect your modem to your computer so that the two can communicate (unless you have an internal modem, which doesn't need such a cable) You are familiar with your modem's command set, or know where to look up needed commands You know how to configure your modem (probably via a terminal communications program) so you can set the non-volatile RAM parameters The first, connecting your modem, is usually simple - most straight-through serial cables work without any problems. You need to have a cable with appropriate connectors (DB-25 or DB-9, male or female) on each end, and the cable must be a DCE-to-DTE cable with these signals wired: Transmitted Data ( Received Data ( Request to Send ( Clear to Send ( Data Set Ready ( Data Terminal Ready ( Carrier Detect ( Signal Ground ( FreeBSD needs the Serial Interface Considerations

FreeBSD supports NS8250-, NS16450-, NS16550-, and NS16550A-based EIA RS-232C (CCITT V.24) communications interfaces. The 8250 and 16450 devices have single-character buffers. The 16550 device provides a 16-character buffer, which allows for better system performance. (Bugs in plain 16550's prevent the use of the 16-character buffer, so use 16550A's if possible). Because single-character-buffer devices require more work by the operating system than the 16-character-buffer devices, 16550A-based serial interface cards are much prefered. If the system has many active serial ports or will have a heavy load, 16550A-based cards are better for low-error-rate communications. Quick Overview

Here is the process that FreeBSD follows to accept dialup logins. A /dev/ttyd0, for our example). The command 4850 ?? I 0:00.09 /usr/libexec/getty V19200 ttyd0 When a user dials the modem's line and the modems connect, the /usr/bin/login, which completes the login by asking for the user's password and then starting the user's shell. Let's dive into the configuration... Kernel Configuration

FreeBSD kernels typically come prepared to search for four serial ports, known in the PC-DOS world as /sbin/dmesg command to replay the kernel's boot messages. In particular, look for messages that start with the characters /sbin/dmesg | grep 'sio' For example, on a system with four serial ports, these are the serial-port specific kernel boot messages: sio0 at 0x3f8-0x3ff irq 4 on isa sio0: type 16550A sio1 at 0x2f8-0x2ff irq 3 on isa sio1: type 16550A sio2 at 0x3e8-0x3ef irq 5 on isa sio2: type 16550A sio3 at 0x2e8-0x2ef irq 9 on isa sio3: type 16550A If your kernel doesn't recognize all of your serial ports, you'll probably need to configure a custom FreeBSD kernel for your system. Please see the BSD System Manager's Manual chapter on ``Building Berkeley Kernels with Config'' [the source for which is in /usr/src/share/doc/smm] and ``FreeBSD Configuration Options'' [in /sys/conf/options and in /sys/arch/conf/options.arch, with arch for example being i386] for more information on configuring and building kernels. You may have to unpack the kernel source distribution if haven't installed the system sources already (srcdist/srcsys.?? in FreeBSD 1.1, srcdist/sys.?? in FreeBSD 1.1.5.1, or the entire source distribution in FreeBSD 2.0) to be able to configure and build kernels. Create a kernel configuration file for your system (if you haven't already) by /sys/i386/conf. Then, if you are creating a new custom configuration file, copy the file GENERICAH (or GENERICBT, if you have a BusTek SCSI controller on FreeBSD 1.x) to device sio0 at isa? port "IO_COM1" tty irq 4 vector siointr device sio1 at isa? port "IO_COM2" tty irq 3 vector siointr device sio2 at isa? port "IO_COM3" tty irq 5 vector siointr device sio3 at isa? port "IO_COM4" tty irq 9 vector siointr You can comment-out or completely remove lines for devices you don't have. If you have a multiport serial board, such as the Boca Board BB2016, please see the can't share interrupts on ISA-bus PCs (multiport boards have on-board electronics that allow all the 16550A's on the board to share one or two interrupt request lines). When you are finished adjusting the kernel configuration file, use the program Device Special Files

Most devices in the kernel are accessed through ``device special files'', which are located in the /dev directory. The /dev/ttyd? (dial-in) and /dev/cua0? (call-out) devices. On FreeBSD version 1.1.5 and higher, there are also initialization devices (/dev/ttyid? and /dev/cuai0?) and locking devices (/dev/ttyld? and /dev/cual0?). The initialization devices are used to initialize communications port parameters each time a port is opened, such as crtscts for modems which use CTS/RTS signaling for flow control. The locking devices are used to lock flags on ports to prevent users or programs changing certain parameters; see the manual pages Making Device Special Files

A shell script called /dev directory manages the device special files. (The manual page for /dev and issue the command /dev/ttyd? device special files, but also creates the /dev/cua0? (and all of the initializing and locking special files under FreeBSD 1.1.5 and up) and removes the hardwired terminal special file /dev/tty0?, if it exists. After making new device special files, be sure to check the permissions on the files (especially the /dev/cua* files) to make sure that only users who should have access to those device special files can read & write on them - you probably don't want to allow your average user to use your modems to dialout. The default permissions on the /dev/cua* files should be sufficient: crw-rw---- 1 uucp dialer 28, 129 Feb 15 14:38 /dev/cua01 crw-rw---- 1 uucp dialer 28, 161 Feb 15 14:38 /dev/cuai01 crw-rw---- 1 uucp dialer 28, 193 Feb 15 14:38 /dev/cual01 These permissions allow the user Configuration Files

There are three system configuration files in the /etc directory that you'll probably need to edit to allow dialup access to your FreeBSD system. The first, /etc/gettytab, contains configuration information for the /usr/libexec/getty daemon. Second, /etc/ttys holds information that tells /sbin/init what /etc/rc.serial script if you have FreeBSD 1.1.5.1 or higher; otherwise, you can initialize ports in the /etc/rc.local script. There are two schools of thought regarding dialup modems on UNIX. One group likes to configure their modems and system so that no matter at what speed a remote user dials in, the local computer-to-modem RS-232 interface runs at a locked speed. The benefit of this configuration is that the remote user always sees a system login prompt immediately. The downside is that the system doesn't know what a user's true data rate is, so full-screen programs like Emacs won't adjust their screen-painting methods to make their response better for slower connections. The other school configures their modems' RS-232 interface to vary its speed based on the remote user's connection speed. For example, V.32bis (14.4 Kbps) connections to the modem might make the modem run its RS-232 interface at 19.2 Kbps, while 2400 bps connections make the modem's RS-232 interface run at 2400 bps. Because <Enter> key until they see a recognizable prompt. If the data rates don't match, /etc/gettytab

/etc/gettytab is a Locked-Speed Config

If you are locking your modem's data communications rate at a particular speed, you probably won't need to make any changes to /etc/gettytab. Matching-Speed Config

You'll need to setup an entry in /etc/gettytab to give # # Fast dialup terminals, 2400/1200/300 rotary (can start either way) # D2400|d2400|Fast-Dial-2400:\ :nx=D1200:tc=2400-baud: 3|D1200|Fast-Dial-1200:\ :nx=D300:tc=1200-baud: 5|D300|Fast-Dial-300:\ :nx=D2400:tc=300-baud: If you have a higher speed modem, you'll probably need to add an entry in /etc/gettytab; here's an entry you could use for a 14.4 Kbps modem with a top interface speed of 19.2 Kpbs: # # Additions for a V.32bis Modem # um|V300|High Speed Modem at 300,8-bit:\ :nx=V19200:tc=std.300: un|V1200|High Speed Modem at 1200,8-bit:\ :nx=V300:tc=std.1200: uo|V2400|High Speed Modem at 2400,8-bit:\ :nx=V1200:tc=std.2400: up|V9600|High Speed Modem at 9600,8-bit:\ :nx=V2400:tc=std.9600: uq|V19200|High Speed Modem at 19200,8-bit:\ :nx=V9600:tc=std.19200: On FreeBSD 1.1.5 and later, this will result in 8-bit, no parity connections. Under FreeBSD 1.1, add std. entries at the top of the file for 8 bits, no parity; otherwise, the default is 7 bits, even parity. The example above starts the communications rate at 19.2 Kbps (for a V.32bis connection), then cycles through 9600 bps (for V.32), 2400 bps, 1200 bps, 300 bps, and back to 19.2 Kbps. Communications rate cycling is implemented with the # # Additions for a V.32bis or V.34 Modem # Starting at 57.6 Kpbs # vm|VH300|Very High Speed Modem at 300,8-bit:\ :nx=VH57600:tc=std.300: vn|VH1200|Very High Speed Modem at 1200,8-bit:\ :nx=VH300:tc=std.1200: vo|VH2400|Very High Speed Modem at 2400,8-bit:\ :nx=VH1200:tc=std.2400: vp|VH9600|Very High Speed Modem at 9600,8-bit:\ :nx=VH2400:tc=std.9600: vq|VH57600|Very High Speed Modem at 57600,8-bit:\ :nx=VH9600:tc=std.57600: If you have a slow CPU or a heavily loaded system and you don't have 16550A-based serial ports, you may receive sio ``silo'' errors at 57.6 Kbps. /etc/ttys

/etc/ttys is the list of /etc/ttys also provides security information to /etc/ttys or add new lines to make ttyd0 "/usr/libexec/getty xxx" dialup on The first item in the above line is the device special file for this entry - /dev/ttyd0 is the file that this "/usr/libexec/getty (secure, but it should only be used for terminals which are physically secure (such as the system console). The default terminal type (/etc/ttys, you may send the kill -1 1 to send the signal. If this is your first time setting up the system, though, you may want to wait until your modem(s) are properly configured and connected before signaling Locked-Speed Config

For a locked-speed configuration, your ttyd0 "/usr/libexec/getty std.19200" dialup on If your modem is locked at a different data rate, substitute the appropriate name for the std. entry for /etc/gettytab for your modem's data rate. Matching-Speed Config

In a matching-speed configuration, your /etc/gettytab. For example, if you added the above suggested entry for a matching-speed modem that starts at 19.2 Kbps (the ttyd0 "/usr/libexec/getty V19200" dialup on /etc/rc.serial or /etc/rc.local

High-speed modems, like V.32, V.32bis, and V.34 modems, need to use hardware (RTS/CTS) flow control. You can add /etc/rc.serial on FreeBSD 1.1.5.1 and up, or /etc/rc.local on FreeBSD 1.1, to set the hardware flow control flag in the FreeBSD kernel for the modem ports. For example, on a sample FreeBSD 1.1.5.1 system, /etc/rc.serial reads: #!/bin/sh # # Serial port initial configuration stty -f /dev/ttyid1 crtscts stty -f /dev/cuai01 crtscts which sets the # Set serial ports to use RTS/CTS flow control stty -f /dev/ttyd0 crtscts stty -f /dev/ttyd1 crtscts stty -f /dev/ttyd2 crtscts stty -f /dev/ttyd3 crtscts Since there isn't an initialization device special file on FreeBSD 1.1, one has to just set the flags on the sole device special file and hope the flags aren't cleared by a miscreant. Modem Settings

If you have a modem whose parameters may be permanently set in non-volatile RAM, you'll need to use a terminal program (such as Telix under PC-DOS or Disable XON/XOFF flow control Quiet mode (no result codes) No command echo Please read the documentation for your modem to find out what commands and/or DIP switch settings you need to give it. For example, to set the above parameters on a USRobotics Sportster 14,400 external modem, one could give these commands to the modem: ATZ AT&C1&D2&H1&I0&R2&W You might also want to take this opportunity to adjust other settings in the modem, such as whether it will use V.42bis and/or MNP5 compression. The USR Sportster 14,400 external modem also has some DIP switches that need to be set; for other modems, perhaps you can use these settings as an example: Switch 1: UP - DTR Normal Switch 2: Don't care (Verbal Result Codes/Numeric Result Codes) Switch 3: UP - Suppress Result Codes Switch 4: DOWN - No echo, offline commands Switch 5: UP - Auto Answer Switch 6: UP - Carrier Detect Normal Switch 7: UP - Load NVRAM Defaults Switch 8: Don't care (Smart Mode/Dumb Mode) Result codes should be disabled/suppressed for dialup modems to avoid problems that can occur if Locked-speed Config

For a locked-speed configuration, you'll need to configure the modem to maintain a constant modem-to-computer data rate independent of the communications rate. On a USR Sportster 14,400 external modem, these commands will lock the modem-to-computer data rate at the speed used to issue the commands: ATZ AT&B1&W Matching-speed Config

For a variable-speed configuration, you'll need to configure your modem to adjust its serial port data rate to match the incoming call rate. On a USR Sportster 14,400 external modem, these commands will lock the modem's error-corrected data rate to the speed used to issue the commands, but allow the serial port rate to vary for non-error-corrected connections: ATZ AT&B2&W Checking the Modem's Configuration

Most high-speed modems provide commands to view the modem's current operating parameters in a somewhat human-readable fashion. On the USR Sportster 14,400 external modems, the command Troubleshooting

Here are a few steps you can follow to check out the dialup modem on your system. Checking out the FreeBSD system

Hook up your modem to your FreeBSD system, boot the system, and, if your modem has status indication lights, watch to see whether the modem's 114 ?? I 0:00.10 /usr/libexec/getty V19200 ttyd0 115 ?? I 0:00.10 /usr/libexec/getty V19200 ttyd1 If you see something different, like this: 114 d0 I 0:00.10 /usr/libexec/getty V19200 ttyd0 ^^ and the modem hasn't accepted a call yet, this means that /etc/ttys to see if there are any mistakes there. Also, check the log file /var/log/messages to see if there are any log messages from /etc/ttys and /etc/gettytab, as well as the appropriate device special files /dev/ttyd?, for any mistakes, missing entries, or missing device special files. Try Dialing In

Try dialing into the system; be sure to use 8 bits, no parity, 1 stop bit on the remote system. If you don't get a prompt right away, or get garbage, try pressing <Enter> about once per second. If you still don't see a BREAK. If you are using a high-speed modem to do the dialing, try dialing again after locking the dialing modem's interface speed (via AT&B1 on a USR Sportster, for example). If you still can't get a /etc/gettytab again and double-check that The initial capability name specified in /etc/ttys for the line matches a name of a capability in /etc/gettytab Each Each If you dial but the modem on the FreeBSD system won't answer, make sure that the modem is configured to answer the phone when -describing your modem and your problem, and the good folks on the list will +perhaps you can send an electronic mail message to the &a.questions +describing your modem and youer problem, and the good folks on the list will try to help. Acknowledgments

Thanks to these people for comments and advice: - diff --git a/handbook/eresources.sgml b/handbook/eresources.sgml index 48b75e4ecc..cac21f8143 100644 --- a/handbook/eresources.sgml +++ b/handbook/eresources.sgml @@ -1,364 +1,364 @@ - + Resources on the Internet

Contributed by &a.jkh;.

The rapid pace of FreeBSD progress makes print media impractical as a means for following the latest developments. Electronic resources are the best, if not often the only way stay informed of the latest advances. Since FreeBSD is a volunteer effort, the user community itself also generally serves as a `technical support department' of sorts, with electronic mail and Usenet news being the most effective way of reaching that community. The most important points of contact with the FreeBSD user community are outlined below. If you are aware of other - resources not mentioned here, please send them to - doc@freebsd.org so that they may also be included. + resources not mentioned here, please send them to the &a.doc + so that they may also be included. Mailing lists

Though many of the FreeBSD development members read USENET, we cannot always guarantee that we'll get to your questions in a timely fashion (or at all) if you post them only to one of the comp.unix.bsd.freebsd.* groups. By addressing your questions to the appropriate mailing list you will reach both us and a concentrated FreeBSD audience, invariably assuring a better (or at least faster) response.

The charters for the various lists are given at the bottom of this document. Please read the charter before joining a list since we must strive to keep the signal to noise ratio of the lists high, especially in the technical ones. Archives are kept for all of the mailing lists and can be searched -using the the . The keyword searchable archive offers an excellent way of finding answers to frequently asked questions and should be consulted before posting a question. List summary

General lists: The following are general lists which anyone is free to join: List Purpose ---------------------------------------------------------------------- freebsd-announce Important events and project milestones freebsd-bugs Bug reports freebsd-chat Non-technical items related to the FreeBSD community freebsd-current Discussion concerning the use of FreeBSD-current freebsd-stable Discussion concerning the use of FreeBSD-stable freebsd-isp Issues for Internet Service Providers using FreeBSD freebsd-policy General policy issues and suggestions freebsd-questions User questions Technical lists: The following lists are for technical discussion. You should read the charter carefully before joining one, keeping any messages sent to a list within the scope of the guidelines. List Purpose ---------------------------------------------------------------------- freebsd-doc The FreeBSD Documentation project freebsd-emulation Emulation of other systems such as Linux/DOS/Windows freebsd-fs Filesystems freebsd-hackers General technical discussion freebsd-hardware General discussion of hardware for running FreeBSD freebsd-multimedia Multimedia discussion freebsd-platforms Concerning ports to non-Intel architecture platforms freebsd-ports Discussion of the ports collection freebsd-security Security issues freebsd-scsi The SCSI subsystem Limited lists: The following lists require approval to join, though anyone is free to send suggestions and comments to them. It is a good idea establish a presence in the technical lists before asking to join one of these limited lists. List Purpose ---------------------------------------------------------------------- freebsd-admin Administrative issues freebsd-arch Architecture and design discussions freebsd-core FreeBSD core team freebsd-install Installation development freebsd-user-groups User group coordination CVS lists: The following lists are for people interested in seeing the log messages for changes to various areas of the source tree. List name Source area Area Description (source for) ---------------------------------------------------------------------- cvs-CVSROOT /usr/src/[A-Z]* Top level /usr/src file changes cvs-all /usr/src All changes to the tree (superset) cvs-bin /usr/src/bin System binaries cvs-etc /usr/src/etc System files cvs-games /usr/src/games Games cvs-gnu /usr/src/gnu GPL'd utilities cvs-include /usr/src/include Include files cvs-kerberosIV /usr/src/kerberosIV Kerberos encryption code cvs-lib /usr/src/lib System libraries cvs-libexec /usr/src/libexec System binaries cvs-ports /usr/ports Ported software cvs-sbin /usr/src/sbin System binaries cvs-share /usr/src/share System shared files cvs-sys /usr/src/sys Kernel cvs-usrbin /usr/src/usr.bin Use binaries cvs-usrsbin /usr/src/usr.sbin System binaries How to subscribe

All mailing lists live on FreeBSD.ORG, so to post to a given list you simply mail to listname@FreeBSD.ORG. It will then be redistributed to mailing list members world-wide. To subscribe to a list, send mail to: majordomo@FreeBSD.ORG And include the keyword subscribe [] In the body of your message. For example, to subscribe yourself to freebsd-announce, you'd do: % mail majordomo@FreeBSD.ORG subscribe freebsd-announce ^D If you want to subscribe yourself under a different name, or submit a subscription request for a local mailing list (note: this is more efficient if you have several interested parties at one site, and highly appreciated by us!), you would do something like: % mail majordomo@FreeBSD.ORG subscribe freebsd-announce local-announce@somesite.com ^D Finally, it is also possible to unsubscribe yourself from a list, get a list of other list members or see the list of mailing lists again by sending other types of control messages to majordomo. For a complete list of available commands, do this: % mail majordomo@FreeBSD.ORG help ^D Again, we'd like to request that you keep discussion in the technical mailing lists on a technical track. If you're only interested in the "high points" then it's suggested that you join freebsd-announce, which is intended only for infrequent traffic. List charters

Administrative issues Important events / milestones This is the mailing list for people interested only in occasional announcements of significant freebsd events. This includes announcements about snapshots and other releases. It contains announcements of new FreeBSD capabilities. It may contain calls for volunteers etc. This is a low volume list. Architecture and design discussions This is the mailing list for people discussing FreeBSD architectural issues. It is a closed list, and not for general subscription. Bug reports This is the mailing list for reporting bugs in FreeBSD Whenever possible, bugs should be submitted using "send-pr". Non technical items related to the community This list contains the overflow from the other lists about non-technical, social information. It includes discussion about whether Jordan looks like a toon ferret or not, whether or not to type in capitals, who is drinking too much coffee, where the best beer is brewed, who is brewing beer in their basement, and so on. Occasional announcements of important events (such as upcoming parties, weddings, births, new jobs, etc) can be made to the technical lists, but the follow ups should be directed to this -chat list. FreeBSD core team This is an internal mailing list for use by the core members. Discussions about the use of FreeBSD-current This is the mailing list for users of freebsd-current. It includes warnings about new features coming out in -current that will affect the users, and instructions on steps that must be taken to remain -current. Anyone running "current" must subscribe to this list. Discussions about the use of FreeBSD-current This is the digest version of the freebsd-current mailing list. The digest consists of all messages sent to freebsd-current bundled together and mailed out as a single message. The average digest size is about 40kB. Discussions about the use of FreeBSD-stable This is the mailing list for users of freebsd-stable. It includes warnings about new features coming out in -stable that will affect the users, and instructions on steps that must be taken to remain -stable. Anyone running ``stable'' should subscribe to this list. Documentation project This mailing list belongs to the FreeBSD Doc Project and is for the discussion of documentation related issues and projects. Filesystems Discussions concerning FreeBSD filesystems. Technical discussions This is a forum for technical discussions related to FreeBSD. This is the primary technical mailing list. It is for individuals actively working on FreeBSD, to bring up problems or discuss alternative solutions. Individuals interested in following the technical discussion are also welcome. Technical discussions This is the digest version of the freebsd-hackers mailing list. The digest consists of all messages sent to freebsd-hackers bundled together and mailed out as a single message. The average digest size is about 40kB. General discussion of FreeBSD hardware General discussion about the types of hardware that FreeBSD runs on, various problems and suggestions concerning what to buy or avoid. Installation discussion This mailing list is for discussing FreeBSD installation development for the future releases. Issues for Internet Service Providers This mailing list is for discussing topics relevant to Internet Service Providers (ISPs) using FreeBSD. Multimedia discussions This is a forum about multimedia applications using FreeBSD. Discussion center around multimedia applications, their installation, their development and their support within FreeBSD Porting to Non-Intel platforms Cross-platform freebsd issues, general discussion and proposals for non-Intel FreeBSD ports. Policy issues and suggestions This is a forum for policy discussions related to FreeBSD. This includes where FreeBSD is going, how to set up a consortium, whether or not and how to make FreeBSD pay for itself, how to attract more users, and so on. When a topic relates directly to FreeBSD but has little or no technical content then it should be sent to this list. Discussion of "ports" Discussions concerning FreeBSD's "ports collection" (/usr/ports), proposed ports, modifications to ports collection infrastructure and general coordination efforts. User questions This is the mailing list for questions about FreeBSD. You should not send "how to" questions to the technical lists unless you consider the question to be pretty technical. User questions This is the digest version of the freebsd-questions mailing list. The digest consists of all messages sent to freebsd-questions bundled together and mailed out as a single message. The average digest size is about 40kB. SCSI subsystem This is the mailing list for people working on the scsi subsystem for FreeBSD. Security issues FreeBSD computer security issues (DES, Kerberos, known security holes and fixes, etc). User Group Coordination List This is the mailing list for the coordinators from each of the local area Users Groups to discuss matters with each other and a designated individual from the Core Team. This mail list should be limited to meeting synopsis and coordination of projects that span User Groups. Usenet newsgroups

In addition to two FreeBSD specific newsgroups, there are many others in which FreeBSD is discussed or are otherwise relevant to FreeBSD users. are available for some of these newsgroups from courtesy of Warren Toomey <wkt@cs.adfa.oz.au>. BSD specific newsgroups

comp.unix.bsd.freebsd.announce comp.unix.bsd.freebsd.misc Other Unix newsgroups of interest

comp.unix comp.unix.questions comp.unix.admin comp.unix.programmer comp.unix.shell comp.unix.user-friendly comp.security.unix comp.sources.unix comp.unix.advocacy comp.unix.misc comp.os.386bsd.announce comp.os.386bsd.apps comp.os.386bsd.bugs comp.os.386bsd.development comp.os.386bsd.misc comp.os.386bsd.questions comp.bugs.4bsd comp.bugs.4bsd.ucb-fixes comp.unix.bsd X-Window system

comp.windows.x.i386unix comp.windows.x comp.windows.x.apps comp.windows.x.announce comp.windows.x.intrinsics comp.windows.x.motif comp.windows.x.pex comp.emulators.ms-windows.wine World Wide Web servers

- + diff --git a/handbook/handbook.sgml b/handbook/handbook.sgml index 694c872888..7038cbee46 100644 --- a/handbook/handbook.sgml +++ b/handbook/handbook.sgml @@ -1,164 +1,162 @@ - + %authors; %sections; ]> FreeBSD Handbook <author> <name>The FreeBSD Documentation Project</name> </author> <date>March 19, 1996</date> <abstract>Welcome to FreeBSD! This handbook covers the installation and day to day use of <bf>FreeBSD Release 2.1.0</bf>. This manual is a <bf>work in progress</bf> and is the work of many individuals. Many sections do not yet exist and some of those that do exist need to be updated. If you are interested in helping with this project, send -email to the FreeBSD Documentation -Project mailing list <tt><htmlurl url="mailto:doc@freebsd.org" -name="<doc@freebsd.org>"></tt>. +email to the &a.doc The latest version of this document is always available from -the <url url="http://www.freebsd.org/" name="FreeBSD World Wide +the <url url="http://www.FreeBSD.ORG/" name="FreeBSD World Wide Web server">. It may also be downloaded in ascii, LaTeX, postscript -or HTML from the <url url="ftp://ftp.freebsd.org/pub/FreeBSD/docs" +or HTML from the <url url="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/docs" name="FreeBSD FTP server"> or one of the numerous <ref id="mirrors" name="mirror sites">. </abstract> <toc> <!-- ************************************************************ --> <part><heading>Basics</heading> <chapt><heading>Introduction</heading> <p>FreeBSD is a 4.4 BSD Lite based operating system for Intel architecture (x86) based PCs. For an overview of FreeBSD, see <ref id="nutshell" name="FreeBSD in a nutshell">. For a history of the project, read <ref id="history" name="a brief history of FreeBSD">. To see a description of the latest release, read <ref id="relnotes" name="about the current release">. If you're interested in contributing something to the FreeBSD project (code, equipment, sacks of unmarked bills), please see about <ref id="submitters" name="contributing to FreeBSD">. &nutshell; &history; &goals; &relnotes; &install; &basics; <chapt><heading>Installing applications</heading> <sect><heading>* Installing packages</heading> &ports; <!-- ************************************************************ --> <part><heading>System Administration</heading> &kernelconfig; <chapt><heading>Users, groups and security</heading> &crypt; &skey; &kerberos; &firewalls; &printing; "as; <chapt><heading>The X-Window System</heading> <p>Pending the completion of this section, please refer to documentation supplied by the <url url="http://www.xfree86.org/" name="The XFree86 Project, Inc">. &hw; <!-- ************************************************************ --> <part><heading>Network Communications</heading> <chapt><heading>Basic Networking</heading> <sect><heading>* Ethernet basics</heading> <sect><heading>* Serial basics</heading> <sect><heading>* Hardwired Terminals</heading> &dialup; <chapt><heading>PPP and SLIP</heading> <p>If your connection to the Internet is through a modem, or you wish to provide other people with dialup connections to the Internet using FreeBSD, you have the option of using PPP or SLIP. Furthermore, two varieties of PPP are provided: <em>user</em> (sometimes referred to as iijppp) and <em>kernel</em>. The procedures for configuring both types of PPP, and for setting up SLIP are described in this chapter. &userppp; &ppp; &slipc; &slips; <chapt><heading>Advanced networking</heading> &routing; &nfs; &diskless; <sect><heading>* Yellow Pages/NIS</heading> <sect><heading>* ISDN</heading> <chapt><heading>* Mail</heading> <!-- ************************************************************ --> <part><heading>Advanced topics</heading> ¤t; &stable; &synching; &submitters; &troubleshooting; &kerneldebug; <chapt><heading>FreeBSD internals</heading> &booting; &memoryuse; &dma; <!-- ************************************************************ --> <part><heading>Appendices</heading> &mirrors; &bibliography; &eresources; &contrib; &pgpkeys; <!-- &glossary; --> </book> </linuxdoc> diff --git a/handbook/hw.sgml b/handbook/hw.sgml index c520e7cda1..08b45b6353 100644 --- a/handbook/hw.sgml +++ b/handbook/hw.sgml @@ -1,266 +1,266 @@ -<!-- $Id: hw.sgml,v 1.19 1996-04-08 15:01:04 jfieber Exp $ --> +<!-- $Id: hw.sgml,v 1.20 1996-05-09 23:04:43 mpp Exp $ --> <!-- The FreeBSD Documentation Project --> <!-- <!DOCTYPE linuxdoc PUBLIC "-//FreeBSD//DTD linuxdoc//EN"> --> <chapt><heading>PC Hardware compatibility<label id="hw"></heading> <p>Issues of hardware compatibility are among the most troublesome in the computer industry today and FreeBSD is by no means immune to trouble. In this respect, FreeBSD's advantage of being able to run on inexpensive commodity PC hardware is also its liability when it comes to support for the amazing variety of components on the market. While it would be impossible to provide a exhaustive listing of hardware that FreeBSD supports, this section serves as a catalog of the device drivers included with FreeBSD and the hardware each drivers supports. Where possible and appropriate, notes about specific products are included. As FreeBSD is a volunteer project without a funded testing department, we depend on you, the user, for much of the information contained in this catalog. If you have direct experience of hardware that does or does not work with FreeBSD, please let us know by sending email to <tt>doc@freebsd.org</tt>. Questions about supported hardware - should be directed to <tt>questions@freebsd.org</tt> (see + should be directed to the &a.questions (see <ref id="eresources:mail" name="Mailing Lists"> for more information). When submitting information or asking a question, please remember to specify exactly what version of FreeBSD you are using and include as many details of your hardware as possible. <sect><heading>Sample Configurations<label id="hw:configs"></heading> <p>The following list of sample hardware configurations by no means constitutes an endorsement of a given hardware vendor or product by <em>The FreeBSD Project</em>. This information is provided only as a public service and merely catalogs some of the experiences that various individuals have had with different hardware combinations. Your mileage may vary. Slippery when wet. Beware of dog. <sect1><heading>Jordan's Picks</heading> <p>I have had fairly good luck building workstation and server configurations with the following components. I can't guarantee that you will too, nor that any of the companies here will remain "best buys" forever. I will try, when I can, to keep this list up-to-date but cannot obviously guarantee that it will be at any given time. <sect2><heading>Motherboards</heading> <p>The <htmlurl url="http://asustek.asus.com.tw/" name="ASUS"> <htmlurl url="http://asustek.asus.com.tw/FTP/ASUS/Info/Spec/pi-p55tp4xe.txt" name="P55TP4XE"> motherboard appears to be a good choice for mid-to-high range Pentium server and workstation systems. If you're really looking for performance, be also sure to get the <htmlurl url="http://asustek.asus.com.tw/Products/TB/mem-0002.html" name="pipelined burst cache module">. I feel that it's worth the extra cost. If you're looking for a 486 class motherboard, you might also investigate ASUS's <htmlurl url="http://asustek.asus.com.tw/FTP/ASUS/Info/Spec/pvi-486sp3.txt" name="486SP3G"> offering. NOTE: The Intel <htmlurl url="http://asustek.asus.com.tw/Products/TB/triton-intro.html" name="Triton"> chipset based motherboards do not offer memory parity logic, making it almost impossible to detect when a memory error has occurred. Those wishing to build highly fault-tolerant systems may therefore want to wait for Intel's newest generation of motherboards based on the Orion chipset or investigate ASUS's SiS chipset based motherboard, the <htmlurl url="http://asustek.asus.com.tw/FTP/ASUS/Info/Spec/pi-p55sp4.txt" name="P55SP4">. I have no personal experience with this motherboard and have heard mixed reports - some say it's a fine MB, others say that it's measurably slower than the Triton. The only undisputed advantage it offers is being available <em>now</em>. <sect2><heading>Disk Controllers</heading> <p>This one is a bit trickier, and while I used to recommend the <htmlurl url="http://www.buslogic.com" name="Buslogic"> controllers unilaterally for everything from ISA to PCI, now I tend to lean towards the <htmlurl url="http://www.adaptec.com" name="Adaptec"> 1542CF for ISA, Buslogic Bt747c for EISA and Adaptec 2940 for PCI. <sect2><heading>Disk drives</heading> <p>In this particular game of Russian roulette, I'll make few specific recommendations except to say "SCSI over IDE whenever you can afford it." Even in small desktop configurations, SCSI often makes more sense since it allows you to easily migrate drives from server to desktop as falling drive prices make it economical to do so. If you have more than one machine to administer then think of it not simply as storage, think of it as a food chain! <p>I do not currently see SCSI WIDE drives as a necessary expense unless you're putting together an NFS or NEWS server that will be doing a lot of multiuser disk I/O. <sect2><heading>CDROM drives</heading> <p>My SCSI preferences extend to SCSI CDROM drives as well, and the <htmlurl url="http://www.toshiba.com" name="Toshiba"> XM-3501B (now released in a caddy-less model called the XM-5401B) drive has always performed well for me. Generally speaking, most SCSI CDROM drives I've seen have been of pretty solid construction (probably because they don't occupy the lower end of the market, due to their higher price) and you probably won't go wrong with an HP or NEC SCSI CDROM drive either. <sect2><heading>Tape drives</heading> <p>I've had pretty good luck with both <htmlurl url="http://www.Exabyte.COM:80/Products/8mm/8505XL/Rfeatures.html" name="8mm drives"> from <htmlurl url="http://www.exabyte.com" name="Exabyte"> and <htmlurl url="http://www-dmo.external.hp.com:80/tape/_cpb0001.htm" name="4mm (DAT)"> drives from <htmlurl url="http://www.hp.com" name="HP">. <p>For backup purposes, I'd have to give the higher recommendation to the Exabyte due to the more robust nature (and higher storage capacity) of 8mm tape. <sect2><heading>Video Cards</heading> <p>If you can also afford to buy a commercial X server for US$99 from <htmlurl url="http://www.xinside.com/" name="X Inside"> then I can heartily recommend the <htmlurl url="http://www.matrox.com/" name="Matrox"> <htmlurl url="http://www.matrox.com/mgaweb/brochure.htm" name="Millenium"> card. If free X servers are more to your liking, you certainly can't go wrong with one of <htmlurl url="http://www.nine.com/" name="Number 9's"> cards - their S3 Vision 868 and 968 based cards (the 9FX series) are pretty fast cards as well, and are supported by <htmlurl url="http://www.xfree86.org" name="XFree86">'s S3 server. <sect2><heading>Monitors</heading> <p>I have had very good luck with the <htmlurl url="http://cons3.sel.sony.com/SEL/ccpg/display/ms17se2.html" name="Sony Multiscan 17SE monitors">, as have I with the Viewsonic offering in the same (trinitron) tube. For larger than 17", all I can recommend at the time of this writing is to not spend any less than U.S. $2,500 for a 21" monitor if that's what you really need. There are good monitors available in the >=20" range and there are also cheap monitors in the >=20" range. Unfortunately, none are both cheap and good! <sect2><heading>Networking</heading> <p>I can recommend the <htmlurl url="http://www.smc.com/" name="SMC"> Ultra 16 controller for any ISA application and the SMC EtherPower or Compex ENET32 cards for any serious PCI based networking. Both of the PCI cards are based around DEC's DC21041 Ethernet controller chip and other cards using it, such as the Zynx ZX342 or DEC DE435, will generally work as well. <sect2><heading>Serial</heading> <p>If you're looking for high-speed serial networking solutions, then <htmlurl url="http://www.dgii.com/" name="Digi International"> makes the <htmlurl url="http://www.dgii.com/prodprofiles/profiles-prices/digiprofiles/digispecs/sync570.html" name="SYNC/570"> series, with drivers now in FreeBSD-current. <htmlurl url="http://www.etinc.com" name="Emerging Technologies"> also manufactures a board with T1/E1 capabilities, using software they provide. <p>Multiport card options are somewhat more numerous, though it has to be said that FreeBSD's support for <htmlurl url="http://www.cyclades.com/" name="Cyclades">'s products is probably the tightest, primarily as a result of that company's committment to making sure that we are adequately supplied with evaluation boards and technical specs. I've heard that the Cyclom-16Ye offers the best price/performance, though I've not checked the prices lately. Other multiport cards I've heard good things about are the BOCA and AST cards, and <htmlurl url="http://www.stallion.com/" name="Stallion Technologies"> apparently offers an unofficial driver for their cards at <htmlurl url="ftp://ftp.stallion.com/drivers/unsupported/freebsd/stalbsd-0.0.4.tar.gz" name="this"> location. <sect2><heading>Audio</heading> <p>I currently use the <htmlurl url="http://www.gravis.com/" name="Gravis"> Ultrasound MAX due to its high sound quality and full-duplex audio capabilities (dual DMA channels). Support for Windows NT and OS/2 is fairly anemic, however, so I'm not sure that I can recommend it as an all-around card for a machine that will be running both FreeBSD and NT or OS/2. In such a scenario, I might recommend the <htmlurl url="http://www.creaf.com/" name="Creative Labs"> AWE32 instead. <sect2><heading>Video</heading> <p>For video capture, there's really only once choice - the <htmlurl url="http://www.matrox.com/" name="Matrox"> <htmlurl url="http://www.matrox.com/imgweb/meteor.htm" name="Meteor"> card. FreeBSD also supports the older video spigot card from Creative Labs, but those are getting somewhat difficult to find and the Meteor is a more current generation frame-grabber with a higher-speed PCI interface. I use one for broadcasting video on the MBONE and it works quite well! <sect><heading>Core/Processing<label id="hw:core"></heading> <sect1><heading>Motherboards, busses, and chipsets</heading> <sect2><heading>* ISA</heading> <sect2><heading>* EISA</heading> <sect2><heading>* VLB</heading> <sect2><heading>PCI</heading> <p><em>Contributed by &a.rgrimes;.<newline>25 April 1995.</em></p> <p>Of the Intel PCI chip sets, the following list describes various types of known-brokenness and the degree of breakage, listed from worst to best. </p> <p><descrip> <tag>Mercury:</tag> Cache coherency problems, especially if there are ISA bus masters behind the ISA to PCI bridge chip. Hardware flaw, only known work around is to turn the cache off. <tag>Saturn-I <em>(ie, 82424ZX at rev 0, 1 or 2)</em>:</tag> Write back cache coherency problems. Hardware flaw, only known work around is to set the external cache to write-through mode. Upgrade to Saturn-II. <tag>Saturn-II <em>(ie, 82424ZX at rev 3 or 4)</em>:</tag> Works fine, but many MB manufactures leave out the external dirty bit SRAM needed for write back operation. Work arounds are either run it in write through mode, or get the dirty bit SRAM installed. (I have these for the ASUS PCI/I-486SP3G rev 1.6 and later boards). <tag>Neptune:</tag> Can not run more than 2 bus master devices. Admitted Intel design flaw. Workarounds include do not run more than 2 bus masters, special hardware design to replace the PCI bus arbiter (appears on Intel Altair board and several other Intel server group MB's). And of course Intel's official answer, move to the Triton chip set, we ``fixed it there''. <tag>Triton:</tag> No known cache coherency or bus master problems, chip set does not implement parity checking. Workaround for parity issue. Wait for Triton-II. <tag>Triton-II:</tag> Unknown, not yet shipping. </descrip> </p> <sect1><heading>* CPUs/FPUs</heading> <sect1><heading>* Memory</heading> <sect1><heading>* BIOS</heading> <sect><heading>Input/Output Devices<label id="hw:io"></heading> <sect1><heading>* Video cards</heading> <sect1><heading>* Sound cards</heading> <sect1><heading>Serial ports and multiport cards</heading> &uart; &sio; <sect1><heading>* Parallel ports</heading> <sect1><heading>* Modems</heading> <sect1><heading>* Network cards</heading> <sect1><heading>* Keyboards</heading> <sect1><heading>* Mice</heading> <sect1><heading>* Other</heading> <sect><heading>Storage Devices<label id="hw:storage"></heading> &esdi; &scsi; <sect1><heading>* Disk/tape controllers</heading> <sect2><heading>* SCSI</heading> <sect2><heading>* IDE</heading> <sect2><heading>* Floppy</heading> <sect1><heading>* Hard drives</heading> <sect1><heading>* Tape drives</heading> <sect1><heading>* CD-ROM drives</heading> <sect1><heading>* Other</heading> <sect><heading>* Other<label id="hw:other"></heading> <sect1><heading>* PCMCIA</heading> diff --git a/handbook/install.sgml b/handbook/install.sgml index 67cb0cbf11..02392fada7 100644 --- a/handbook/install.sgml +++ b/handbook/install.sgml @@ -1,877 +1,878 @@ -<!-- $Id: install.sgml,v 1.25 1996-03-20 10:38:53 jkh Exp $ --> +<!-- $Id: install.sgml,v 1.26 1996-05-09 23:04:45 mpp Exp $ --> <!-- The FreeBSD Documentation Project --> <!-- <!DOCTYPE linuxdoc PUBLIC '-//FreeBSD//DTD linuxdoc//EN'> --> <chapt><heading>Installing FreeBSD<label id="install"></heading> <p>So, you would like to try out FreeBSD on your system? This section is a quick-start guide for what you need to do. FreeBSD can be installed from a variety of media including CD-ROM, floppy disk, magnetic tape, an MS-DOS partition, and if you have a network connection, via anonymous ftp or NFS. Regardless of the installation media you choose, you can get started by downloading the <bf>installation disk</bf> as described below. Booting your computer with disk will provide important information about compatibility between FreeBSD and your hardware which could dictate which installation options are possible. It can also provide early clues to compatibility problems that could prevent FreeBSD running on your system at all. If you plan on installing via anonymous FTP, then this installation disk is all you need to download. For more information on obtaining the FreeBSD distribution itself, please see <ref id="mirrors" name="Obtaining FreeBSD"> in the Appendix. So, to get the show on the road, follow these steps: <enum> <item>Review the <ref id="install:hw" name="supported configurations"> section of this installation guide to be sure that your hardware is supported by FreeBSD. It may be helpful to make a list of any special cards you have installed, such as SCSI controllers, Ethernet adapters or sound cards. This list should include relevant configuration parameters such as interrupts (IRQ) and IO port addresses. </item> <item>Download the <url - url="ftp://ftp.freebsd.org/pub/FreeBSD/2.1.0-RELEASE/floppies/boot.flp" + url="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/2.1.0-RELEASE/floppies/boot.flp" name="installation boot disk image"> file to your hard drive, and be sure to tell your browser to <em>save</em> rather than <em>display</em>. <bf>Note:</bf> This disk image can be used for <em>both</em> 1.44 megabyte 3.5 inch floppy disks and 1.2 megabyte 5.25 inch floppy disks.</item> <item>Make the installation boot disk from the image file: <itemize> <item>If you are using MS-DOS download <url -url="ftp://ftp.freebsd.org/pub/FreeBSD/tools/dos-tools/rawrite.exe" +url="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/tools/dos-tools/rawrite.exe" name="rawrite.exe">, then run it: <tscreen><verb> C:\> rawrite </verb></tscreen> The program will prompt you for the floppy drive containing the disk you want to write to (A: or B:) and the name of the file to put on disk (boot.flp). </item> <item>If you are using a UNIX system: <tscreen> % dd if=boot.flp of=<em>disk_device</em> </tscreen> where <em>disk_device</em> is the <tt>/dev</tt> entry for the floppy drive. On FreeBSD systems, this is <tt>/dev/fd0</tt> for the A: drive and <tt>/dev/fd1</tt> for the B: drive. </item> </itemize> </item> <item>With the installation disk in the A: drive, reboot your computer. You should get a boot prompt something like this: <tscreen> >> FreeBSD BOOT ...<newline> Use hd(1,a)/kernel to boot sd0 when wd0 is also installed.<newline> Usage: [[hd(1,a)]/kernel][-abcCdhrsv]<newline> Use ? for file list or press Enter for defaults<newline> Boot: </tscreen> If you do <em>not</em> type anything, FreeBSD will automatically boot with its default configuration after a delay of about five seconds. As FreeBSD boots, it probes your computer to determine what hardware is installed. The results of this probing is displayed on the screen. </item> <item>When the booting process is finished, The main FreeBSD installation menu will be displayed.</item> </enum> <p><bf>If something goes wrong...</bf> <p>Due to limitations of the PC architecture, it is impossible for probing to be 100 percent reliable. In the event that your hardware is incorrectly identified, or that the probing causes your computer to lock up, first check the <ref id="install:hw" name="supported configurations"> section of this installation guide to be sure that your hardware is indeed supported by FreeBSD. <p>If your hardware is supported, reset the computer and when the <tt>Boot:</tt> prompt comes up, type <bf>-c</bf>. This puts FreeBSD into a configuration mode where you can supply hints about your hardware. The FreeBSD kernel on the installation disk is configured assuming that most hardware devices are in their factory default configuration in terms of IRQs, IO addresses and DMA channels. If your hardware has been reconfigured, you will most likely need to use the <bf>-c</bf> option at boot to tell FreeBSD where things are. <p>It is also possible that a probe for a device not present will cause a later probe for another device that is present to fail. In that case, the probes for the conflicting driver(s) should be disabled. <p>In the configuration mode, you can: <itemize> <item>List the device drivers installed in the kernel.</item> <item>Disable device drivers for hardware not present in your system.</item> <item>Change the IRQ, DRQ, and IO port addresses used by a device driver.</item> </itemize> <p>While at the <tt>config></tt> prompt, type <tt>help</tt> for more information on the available commands. After adjusting the kernel to match how you have your hardware configured, type <tt>quit</tt> at the <tt>config></tt> prompt to continue booting with the new settings. After FreeBSD has been installed, changes made in the configuration mode will be permanent so you do not have to reconfigure every time you boot. Even so, it is likely that you will want to build a custom kernel to optimize the performance of your system. See <ref id="kernelconfig" name="Kernel configuration"> for more information on creating custom kernels. <sect><heading>Supported Configurations<label id="install:hw"></heading> <p>FreeBSD currently runs on a wide variety of ISA, VLB, EISA and PCI bus based PC's, ranging from 386sx to Pentium class machines (though the 386sx is not recommended). Support for generic IDE or ESDI drive configurations, various SCSI controller, network and serial cards is also provided. A minimum of five megabytes of RAM is required to run FreeBSD. To run the X-window system, eight megabytes of RAM is the recommended minimum. Following is a list of all disk controllers and Ethernet cards currently known to work with FreeBSD. Other configurations may very well work, and we have simply not received any indication of this. <sect1><heading>Disk Controllers</heading> <p> <itemize> <item>WD1003 (any generic MFM/RLL) <item>WD1007 (any generic IDE/ESDI) <item>IDE <item>ATA <item>Adaptec 152x series ISA SCSI controllers <item>Adaptec 154x series ISA SCSI controllers <item>Adaptec 174x series EISA SCSI controller in standard and enhanced mode. <item>Adaptec 274x/284x/2940/3940 (Narrow/Wide/Twin) series EISA/VLB/PCI SCSI controllers <item>Adaptec <!-- AIC-6260 and - actually not working, joerg --> AIC-6360 based boards, which includes the AHA-152x and SoundBlaster SCSI cards. <bf>Note:</bf> You cannot boot from the SoundBlaster cards as they have no on-board BIOS, which is necessary for mapping the boot device into the system BIOS I/O vectors. They are perfectly usable for external tapes, CDROMs, etc, however. The same goes for any other AIC-6x60 based card without a boot ROM. Some systems DO have a boot ROM, which is generally indicated by some sort of message when the system is first powered up or reset. Check your system/board documentation for more details. <item>Buslogic 545S & 545c <bf>Note:</bf> that Buslogic was formerly known as "Bustek". <item>Buslogic 445S/445c VLB SCSI controller <item>Buslogic 742A/747S/747c EISA SCSI controller. <item>Buslogic 946c PCI SCSI controller <item>Buslogic 956c PCI SCSI controller <item>NCR 53C810/53C815/53C825/53C860/53C875 PCI SCSI controller. <item>NCR5380/NCR53400 (``ProAudio Spectrum'') SCSI controller. <item>DTC 3290 EISA SCSI controller in 1542 emulation mode. <item>UltraStor 14F/24F/34F SCSI controllers. <item>Seagate ST01/02 SCSI controllers. <item>Future Domain 8xx/950 series SCSI controllers. <item>WD7000 SCSI controllers. </itemize> With all supported SCSI controllers, full support is provided for SCSI-I & SCSI-II peripherals, including Disks, tape drives (including DAT) and CD ROM drives. The following CD-ROM type systems are supported at this time: <itemize> <item>SoundBlaster SCSI and ProAudio Spectrum SCSI (<tt>cd</tt>) <item>Mitsumi (all models) proprietary interface (<tt>mcd</tt>) <item>Matsushita/Panasonic (Creative) CR-562/CR-563 proprietary interface (<tt>matcd</tt>) <item>Sony proprietary interface (<tt>scd</tt>) <item>ATAPI IDE interface (experimental and should be considered ALPHA quality!) (<tt>wcd</tt>) </itemize> <sect1><heading>Ethernet cards</heading> <p> <itemize> <item>Allied-Telesis AT1700 and RE2000 cards <item>SMC Elite 16 WD8013 Ethernet interface, and most other WD8003E, WD8003EBT, WD8003W, WD8013W, WD8003S, WD8003SBT and WD8013EBT based clones. SMC Elite Ultra is also supported. <item>DEC EtherWORKS III NICs (DE203, DE204, and DE205) <item>DEC EtherWORKS II NICs (DE200, DE201, DE202, and DE422) <item>DEC DC21040/DC21041/DC21140 based NICs: <itemize> <item>ASUS PCI-L101-TB <item>Accton ENI1203 <item>Cogent EM960PCI <item>Compex CPXPCI/32C <item>D-Link DE-530 <item>DEC DE435 <item>Danpex EN-9400P3 <item>JCIS Condor JC1260 <item>Linksys EtherPCI <item>Mylex LNP101 <item>SMC EtherPower 10/100 (Model 9332) <item>SMC EtherPower (Model 8432) <item>Zynx ZX342 </itemize> <item>DEC FDDI (DEFPA/DEFEA) NICs <item>Fujitsu FMV-181 and FMV-182 <item>Intel EtherExpress <item>Isolan AT 4141-0 (16 bit) <item>Isolink 4110 (8 bit) <item>Novell NE1000, NE2000, and NE2100 ethernet interface. <item>3Com 3C501 cards <item>3Com 3C503 Etherlink II <item>3Com 3c505 Etherlink/+ <item>3Com 3C507 Etherlink 16/TP <item>3Com 3C509, 3C579, 3C589 (PCMCIA) Etherlink III <item>Toshiba ethernet cards <item>PCMCIA ethernet cards from IBM and National Semiconductor are also supported. </itemize> <p><em>Note:</em> FreeBSD does not currently support PnP (plug-n-play) features present on some ethernet cards. If your card has PnP and is giving you problems, try disabling its PnP features. <sect1><heading>Miscellaneous devices</heading> <p> <itemize> <item>AST 4 port serial card using shared IRQ. <item>ARNET 8 port serial card using shared IRQ. <item>BOCA IOAT66 6 port serial card using shared IRQ. <item>BOCA 2016 16 port serial card using shared IRQ. <item>Cyclades Cyclom-y Serial Board. <item>STB 4 port card using shared IRQ. <item>SDL Communications Riscom/8 Serial Board. <item>Adlib, SoundBlaster, SoundBlaster Pro, ProAudioSpectrum, Gravis UltraSound, Gravis UltraSound MAX and Roland MPU-401 sound cards. </itemize> FreeBSD currently does not support IBM's microchannel (MCA) bus, but support is apparently close to materializing. Details will be posted as the situation develops. <sect><heading>Preparing for the installation</heading> <p>There are a number of different methods by which FreeBSD can be installed. The following describes what preparation needs to be done for each type. <sect1><heading>Before installing from CDROM</heading> <p>If your CDROM is of an unsupported type, such as an IDE CDROM, then please skip to <ref id="install:msdos" name="MS-DOS Preparation">. There is not a lot of preparatory work that needs to be done to successfully install from one of Walnut Creek's FreeBSD CDROMs (other CDROM distributions may work as well, though we cannot say for certain as we have no hand or say in how they're created). You can either boot into the CD installation directly from DOS using Walnut Creek's supplied ``install.bat'' batch file or you can make a boot floppy with the ``makeflp.bat'' command [NOTE: If you're using an IDE CDROM, use the inst_ide.bat or atapiflp.bat batch files instead]. For the easiest interface of all (from DOS), type ``view''. This will bring up a DOS menu utility that leads you through all the available options. If you are creating the boot floppy from a UNIX machine, see <ref id="install" name="the beginning of this guide"> for examples. of how to create the boot floppy. Once you have booted from DOS or floppy, you should then be able to select CDROM as the media type in the Media menu and load the entire distribution from CDROM. No other types of installation media should be required. After your system is fully installed and you have rebooted from the hard disk, you can mount the cdrom at any time by typing: <tt>mount /cdrom</tt> Before removing the CD again, also note that it's necessary to first type: <tt>umount /cdrom</tt>. Don't just remove it from the drive! <quote><bf>Special note:</bf> Before invoking the installation, be sure that the CDROM is in the drive so that the install probe can find it. This is also true if you wish the CDROM to be added to the default system configuration automatically during the install (whether or not you actually use it as the installation media). </quote> Finally, if you would like people to be able to FTP install FreeBSD directly from the CDROM in your machine, you will find it quite easy. After the machine is fully installed, you simply need to add the following line to the password file (using the vipw command): <tscreen><verb> ftp:*:99:99::0:0:FTP:/cdrom:/nonexistent </verb></tscreen> Anyone with network connectivity to your machine (and permission to log into it) can now chose a Media type of FTP and type in: <tt>ftp://<em>your machine</em></tt> after picking ``Other'' in the ftp sites menu. <sect1><heading>Before installing from Floppy</heading> <p>If you must install from floppy disks, either due to unsupported hardware or just because you enjoy doing things the hard way, you must first prepare some floppies for the install. The first floppy that you will need in addition to the boot.flp image is ``floppies/root.flp'', which is somewhat special in that it's not a DOS filesystem floppy at all, but rather a floppy "image" (it's actually a gzip'd cpio file). You can create this floppy in the same way that you created the boot floppy <ref id="install" name="the beginning of this guide">. Once this floppy is made, you can go on to make the distribution set floppies using ordinary DOS or UFS (if you're preparing the floppies on another FreeBSD machine) formatted diskettes. You will need, at minimum, as many 1.44MB or 1.2MB floppies as it takes to hold all files in the bin (binary distribution) directory. If you're preparing these floppies under DOS, then THESE floppies *must* be formatted using the MS-DOS FORMAT command. If you're using Windows, use the Windows File Manager format command. Do <em>not</em> trust Factory Preformatted floppies! Format them again yourself, just to make sure. Many problems reported by our users in the past have resulted from the use of improperly formatted media, which is why I'm taking such special care to mention it here! If you're creating the floppies from another FreeBSD machine, a format is still not a bad idea though you don't need to put a DOS filesystem on each floppy. You can use the `disklabel' and `newfs' commands to put a UFS filesystem on them instead, like so: <tscreen><verb> disklabel -w -r fd0 floppy3 (use floppy5 for 1.2MB disks) newfs /dev/rfd0 </verb></tscreen> Then you can mount and write to them like any other file system. After you have DOS formatted the floppies, you will need to copy the files onto them. The distribution files are split into chunks conveniently sized so that 5 of them will fit on a conventional 1.44MB floppy. Go through all your floppies, packing as many files as will fit on each one, until you have got all the distributions you want packed up in this fashion. Each distribution should go into a subdirectory on the floppy, e.g.: <bf>a:\bin\bin.aa</bf>, <bf>a:\bin\bin.ab</bf>, and so on. Once you come to the Media screen of the install, select ``Floppy'' and you will be prompted for the rest. <sect1><heading>Before installing from a MS-DOS partition<label id="install:msdos"></heading> <p>To prepare for installation from an MS-DOS partition, copy the files from the distribution into a directory called <tt>C:\FREEBSD</tt>. The directory tree structure of the CDROM must be partially reproduced within this directory so we suggest using the DOS <tt>xcopy</tt> command. For example, to prepare for a minimal installation of FreeBSD: <tscreen><verb> C> MD C:\FREEBSD C> XCOPY /S E:\DISTS\BIN C:\FREEBSD\BIN\ C> XCOPY /S E:\FLOPPIES C:\FREEBSD\FLOPPIES\ </verb></tscreen> assuming that <tt>C:</tt> is where you have free space and <tt>E:</tt> is where your CDROM is mounted. Note that you need the <tt>FLOPPIES</tt> directory because the <tt>root.flp</tt> image is needed during an MS-DOS installation. For as many `DISTS' you wish to install from MS-DOS (and you have free space for), install each one under <tt>C:\FREEBSD</tt> - the <tt>BIN</tt> dist is only the minimal requirement. If you have room on your MS-DOS partition for all the distributions, you could replace the last line above with: <tscreen><verb> C> XCOPY /S E:\DISTS C:\FREEBSD\ </verb></tscreen> which would copy all the subdirectories of <tt>E:\DISTS</tt> to <tt>C:\FREEBSD</tt>. <sect1><heading>Before installing from QIC/SCSI Tape</heading> <p>Installing from tape is probably the easiest method, short of an on-line install using FTP or a CDROM install. The installation program expects the files to be simply tar'ed onto the tape, so after getting all of the files for distribution you are interested in, simply tar them onto the tape with a command like: <tscreen> cd /freebsd/distdir<newline> tar cvf /dev/rwt0 (or /dev/rst0) dist1 .. dist2 </tscreen> Make sure that the `floppies/' directory is one of the ``dists'' given above, since the installation will look for `floppies/root.flp' on the tape. When you go to do the installation, you should also make sure that you leave enough room in some temporary directory (which you will be allowed to choose) to accommodate the <bf>full</bf> contents of the tape you have created. Due to the non-random access nature of tapes, this method of installation requires quite a bit of temporary storage. You should expect to require as much temporary storage as you have stuff written on tape. <quote><bf>Note:</bf> When going to do the installation, the tape must be in the drive <em>before</em> booting from the boot floppy. The installation probe may otherwise fail to find it.</quote> <sect1><heading>Before installing over a network</heading> <p>You can do network installations over 3 types of communications links: <descrip> <tag>Serial port</tag> SLIP or PPP <tag>Parallel port</tag> PLIP (laplink cable) <tag>Ethernet</tag> A standard ethernet controller (includes some PCMCIA). </descrip> SLIP support is rather primitive, and limited primarily to hard-wired links, such as a serial cable running between a laptop computer and another computer. The link should be hard-wired as the SLIP installation does not currently offer a dialing capability; that facility is provided with the PPP utility, which should be used in preference to SLIP whenever possible. If you are using a modem, then PPP is almost certainly your only choice. Make sure that you have your service provider's information handy as you will need to know it fairly soon in the installation process. You will need to know, at the minimum, your service provider's IP address and possibly your own (though you can also leave it blank and allow PPP to negotiate it with your ISP). You also need to know how to use the various ``AT commands'' to dial the ISP with your particular modem as the PPP dialer provides only a very simple terminal emulator. If a hard-wired connection to another FreeBSD (2.0R or later) machine is available, you might also consider installing over a ``laplink'' parallel port cable. The data rate over the parallel port is much higher than what is typically possible over a serial line (up to 50k/sec), thus resulting in a quicker installation. Finally, for the fastest possible network installation, an ethernet adaptor is always a good choice! FreeBSD supports most common PC ethernet cards, a table of supported cards (and their required settings) is provided in <ref id="install:hw" name="Supported Hardware">. If you are using one of the supported PCMCIA ethernet cards, also be sure that it is plugged in <em>before</em> the laptop is powered on! FreeBSD does not, unfortunately, currently support hot insertion of PCMCIA cards. You will also need to know your IP address on the network, the netmask value for your address class, and the name of your machine. Your system administrator can tell you which values to use for your particular network setup. If you will be referring to other hosts by name rather than IP address, you will also need a name server and possibly the address of a gateway (if you are using PPP, it is your provider's IP address) to use in talking to it. If you do not know the answers to all or most of these questions, then you should really probably talk to your system administrator <em>first</em> before trying this type of installation. Once you have a network link of some sort working, the installation can continue over NFS or FTP. <sect2><heading>Preparing for NFS installation</heading> <p>NFS installation is fairly straight-forward: Simply copy the FreeBSD distribution files you want onto a server somewhere and then point the NFS media selection at it. If this server supports only ``privileged port'' access (as is generally the default for Sun workstations), you will need to set this option in the Options menu before installation can proceed. If you have a poor quality ethernet card which suffers from very slow transfer rates, you may also wish to toggle the appropriate Options flag. In order for NFS installation to work, the server must support subdir mounts, e.g., if your FreeBSD 2.1 distribution directory lives on: <bf>ziggy:/usr/archive/stuff/FreeBSD</bf> Then ziggy will have to allow the direct mounting of <bf>/usr/archive/stuff/FreeBSD</bf>, not just <bf>/usr</bf> or <bf>/usr/archive/stuff</bf>. In FreeBSD's <bf>/etc/exports</bf> file, this is controlled by the ``<tt>-alldirs</tt>'' option. Other NFS servers may have different conventions. If you are getting `Permission Denied' messages from the server then it is likely that you do not have this enabled properly. <sect2><heading>Preparing for FTP Installation</heading> <p>FTP installation may be done from any mirror site containing a reasonably up-to-date version of FreeBSD 2.1. A full menu of reasonable choices from almost anywhere in the world is provided by the FTP site menu. If you are installing from some other FTP site not listed in this menu, or you are having troubles getting your name server configured properly, you can also specify your own URL by selecting the ``Other'' choice in that menu. A URL can also be a direct IP address, so the following would work in the absence of a name server: <tscreen><verb> ftp://192.216.222.4/pub/FreeBSD/2.1.0-RELEASE </verb></tscreen> There are two FTP installation modes you can use: <descrip> <tag>FTP Active</tag> For all FTP transfers, use ``Active'' mode. This will not work through firewalls, but will often work with older ftp servers that do not support passive mode. If your connection hangs with passive mode (the default), try active! <tag>FTP Passive</tag> For all FTP transfers, use ``Passive'' mode. This allows the user to pass through firewalls that do not allow incoming connections on random port addresses. </descrip> <quote><bf>Note:</bf> Active and passive modes are not the same as a `proxy' connection, where a proxy ftp server is listening on a different port!</quote> In such instances, you should specify the URL as something like: <tscreen><verb> ftp://foo.bar.com:1234/pub/FreeBSD </verb></tscreen> Where ``1234'' is the port number of the proxy ftp server. <sect><heading>Installing FreeBSD</heading> <p>Once you have taken note of the appropriate preinstallation steps, you should be able to install FreeBSD without any further trouble. Should this not be true, then you may wish to go back and re-read the relevant preparation section above for the installation media type you are trying to use, perhaps there is a helpful hint there that you missed the first time? If you are having hardware trouble, or FreeBSD refuses to boot at all, read the Hardware Guide provided on the boot floppy for a list of possible solutions. The FreeBSD boot floppy contains all the on-line documentation you should need to be able to navigate through an installation and if it does not then we would like to know what you found most confusing. Send your - comments to <htmlurl url="mailto:doc@freebsd.org" - name="doc@freebsd.org">. It is the objective of the + comments to the &a.doc;. + It is the objective of the FreeBSD installation program (sysinstall) to be self-documenting enough that painful ``step-by-step'' guides are no longer necessary. It may take us a little while to reach that objective, but that is the objective! Meanwhile, you may also find the following ``typical installation sequence'' to be helpful: <enum> <item>Boot the boot floppy. After a boot sequence which can take anywhere from from 30 seconds to 3 minutes, depending on your hardware, you should be presented with a menu of initial choices. If the floppy does not boot at all, or the boot hangs at some stage, go read the Q&A section of the Hardware Guide for possible causes. <item>Press F1. You should see some basic usage instructions on the menu system and general navigation. If you have not used this menu system before then PLEASE read this thoroughly! <item>Select the Options item and set any special preferences you may have. <item>Select a Custom or Express install, depending on whether or not you would like the installation to give you a high degree of control over each step of the installation or simply lead you through it, choosing reasonable defaults when possible. See details on both installation types below. <item>The Configure menu choice allows you to further configure your FreeBSD installation by giving you menu-driven access to various system defaults. Some items, like networking, may be especially important if you did a CDROM/Tape/Floppy installation and have not yet configured your network interfaces (assuming you have any). Properly configuring such interfaces here will allow FreeBSD to come up on the network when you first reboot from the hard disk. </enum> <sect1><heading>Express installation</heading> <p>The express installation is not too much different than the Custom one except that it leads you through the required stages in the proper order and presents you with various helpful prompts along the way. <enum> <item>The first step is the `Partition Editor', which allows you to chose how your drives will be used for FreeBSD. If you are dedicating an entire drive to FreeBSD, the `A' command is probably all you need to type here. <item>Next, with the `Label Editor', you can specify how the space in any allocated FreeBSD partitions should be used by FreeBSD, or where to mount a non-FreeBSD partition (such as DOS). If you want the standard layout, simply type `A' here. <item>Next, the `Distributions' menu allows you to specify which parts of FreeBSD you wish to load. A good choice is ``User'' for a small system or ``Developer'' for someone wanting a bit more out of FreeBSD. If none of the existing collections sound applicable, select Custom. <item>Next, the `Media' menu allows you to specify what kind of media you wish to install from. If a desired media choice is found and configured automatically then this menu will simply return, otherwise you will be asked for additional details on the media device type. <item>Finally, you will be prompted to commit all of these actions at once (nothing has been written to your disk so far, nor will it until you give the final confirmation). All new or changed partition information will be written out, file systems will be created and/or non-destructively labeled (depending on how you set their newfs flags in the Label Editor) and all selected distributions will be extracted. </enum> At this point, you are generally done with the sysinstall utility and can select the final `Quit'. If you are running it as an installer (e.g., before the system is all the way up) then the system will now reboot after you press return one last time. If you selected the boot manager option, you will see a small boot menu with an `F?' prompt. Press the function key for BSD (it will be shown) and you should boot up into FreeBSD off the hard disk. If this fails to happen for some reason, see the Q&A section of the Hardware Guide for possible clues! <sect1><heading>Custom installation</heading> <p>You can do anything you like in this menu without altering your system <em>except</em> for ``Commit'', which will perform any requests to alter your system you may have made. Some of the menu options will also have direct `Write' commands available for committing an operation immediately, but they should only be used if you are absolutely sure it is necessary. It is generally better to make your changes and then commit them all at once so that you are left with the option of changing your mind up to the very last minute. If you are confused at any point, the F1 key usually pulls up the right information for the screen you are in. <sect><heading>MS-DOS user's Questions and Answers</heading> <p>Many FreeBSD users wish to install FreeBSD on PCs inhabited by MS-DOS. Here are some commonly asked questions about installing FreeBSD on such systems. <p><bf>Help! I have no space! Do I need to delete everything first?</bf> If your machine is already running MS-DOS and has little or no free space available for FreeBSD's installation, all is not lost! You may find the FIPS utility, provided in the <tt>tools</tt> directory on the FreeBSD CDROM or on the various FreeBSD ftp sites, to be quite useful. FIPS allows you to split an existing MS-DOS partition into two pieces, preserving the original partition and allowing you to install onto the second free piece. You first defragment your MS-DOS partition, using the DOS 6.xx DEFRAG utility or the Norton Disk tools, then run FIPS. It will prompt you for the rest of the information it needs. Afterwards, you can reboot and install FreeBSD on the new free slice. See the <em>Distributions</em> menu for an estimation of how much free space you will need for the kind of installation you want. <bf>Can I use compressed MS-DOS filesystems from FreeBSD?</bf> No. If you are using a utility such as Stacker(tm) or DoubleSpace(tm), FreeBSD will only be able to use whatever portion of the filesystem you leave uncompressed. The rest of the filesystem will show up as one large file (the stacked/dblspaced file!). <bf>Do not remove that file!</bf> You will probably regret it greatly! It is probably better to create another uncompressed MS-DOS primary partition and use this for communications between MS-DOS and FreeBSD. <!-- XXX Status??? <bf>Can I mount my MS-DOS extended partitions?</bf> This feature is not in FreeBSD 2.0.5 but should be in 2.1. We have laid all the groundwork for making this happen, now we just need to do the last 1 percent of the work involved. --> <bf>Can I run MS-DOS binaries under FreeBSD?</bf> Not yet! We would like to add support for this someday, but are still lacking anyone to actually do the work. Ongoing work with Linux's DOSEMU utility may bring this much closer to being a reality sometime soon. Send mail - to hackers@freebsd.org if you're interested in joining + to the &a.hackers + if you're interested in joining this effort! However, there is a nice application available in the <ref id="ports" name="The Ports Collection"> called pcemu, that allows you to run many basic MS-DOS text-mode binaries by entirely emulating an 8088 CPU. diff --git a/handbook/kernelconfig.sgml b/handbook/kernelconfig.sgml index 6db11d8bf9..0498e14664 100644 --- a/handbook/kernelconfig.sgml +++ b/handbook/kernelconfig.sgml @@ -1,1260 +1,1258 @@ -<!-- $Id: kernelconfig.sgml,v 1.9 1996-03-31 18:01:55 joerg Exp $ --> +<!-- $Id: kernelconfig.sgml,v 1.10 1996-05-09 23:04:46 mpp Exp $ --> <!-- The FreeBSD Documentation Project --> <!-- <!DOCTYPE linuxdoc PUBLIC '-//FreeBSD//DTD linuxdoc//EN'> --> <chapt><heading>Configuring the FreeBSD Kernel<label id="kernelconfig"></heading> <p><em>Contributed by &a.jehamby;.<newline>6 October 1995.</em> This large section of the handbook discusses the basics of building your own custom kernel for FreeBSD. This section is appropriate for both novice system administrators and those with advanced Unix experience. <sect><heading>Why build a custom kernel?</heading> <p>Building a custom kernel is one of the most important rites of passage every Unix system administrator must learn. This process, while time-consuming, will provide many benefits to your FreeBSD system. Unlike the GENERIC kernel, which must support every possible SCSI and network card, along with tons of other rarely used hardware support, a custom kernel only contains support for <em>your</em> PC's hardware. This has a number of benefits: <itemize> <item>It will take less time to boot because it does not have to spend time probing for hardware which you do not have. <item>A custom kernel often uses less memory, which is important because the kernel is the one process which must always be present in memory, and so all of that unused code ties up pages of RAM that your programs would otherwise be able to use. Therefore, on a system with limited RAM, building a custom kernel is of critical importance. <item>Finally, there are several kernel options which you can tune to fit your needs, and device driver support for things like sound cards which you can include in your kernel but are <em>not</em> present in the GENERIC kernel. </itemize></p> <sect><heading>Building and Installing a Custom Kernel</heading> <p>First, let us take a quick tour of the kernel build directory. All directories mentioned will be relative to the main <tt>/usr/src/sys</tt> directory, which is also accessible through <tt>/sys</tt>. There are a number of subdirectories here representing different parts of the kernel, but the most important, for our purposes, are <tt>i386/conf</tt>, where you will edit your custom kernel configuration, and <tt>compile</tt>, which is the staging area where your kernel will be built. Notice the logical organization of the directory tree, with each supported device, filesystem, and option in its own subdirectory. Also, anything inside the <tt>i386</tt> directory deals with PC hardware only, while everything outside the <tt>i386</tt> directory is common to all platforms which FreeBSD could potentially be ported to. <quote><em/Note:/ If there is <em>not</em> a <tt>/usr/src/sys</tt> directory on your system, then the kernel source has not been been installed. Follow the instructions for installing packages to add this package to your system.</quote> Next, move to the <tt>i386/conf</tt> directory and copy the GENERIC configuration file to the name you want to give your kernel. For example: <tscreen><verb> # cd /usr/src/sys/i386/conf # cp GENERIC MYKERNEL </verb></tscreen> Traditionally, this name is in all capital letters and, if you are maintaining multiple FreeBSD machines with different hardware, it's a good idea to name it after your machine's hostname. We will call it MYKERNEL for the purpose of this example. <quote><em/Note:/ You must execute these and all of the following commands under the root account or you will get ``permission denied'' errors.</quote> Now, edit MYKERNEL with your favorite text editor. If you're just starting out, the only editor available will probably be <tt>vi</tt>, which is too complex to explain here, but is covered well in many books in the <ref id="bibliography" name="bibliography">. Feel free to change the comment lines at the top to reflect your configuration or the changes you've made to differentiate it from GENERIC. If you've build a kernel under SunOS or some other BSD operating system, much of this file will be very familiar to you. If you're coming from some other operating system such as DOS, on the other hand, the GENERIC configuration file might seem overwhelming to you, so follow the descriptions in the <ref id="kernelconfig:config" name="Configuration File"> section slowly and carefully. <quote><em/Note:/ If you are trying to upgrade your kernel from an older version of FreeBSD, you will probably have to get a new version of <tt>config(8)</tt> from the same place you got the new kernel sources. It is located in <tt>/usr/src/usr.sbin</tt>, so you'll need to download those sources as well. Re-build and install it before running the next commands.</quote> When you're finished, type the following to compile and install your kernel: <tscreen><verb> # /usr/sbin/config MYKERNEL # cd ../../compile/MYKERNEL # make depend # make # make install </verb></tscreen> The new kernel will be copied to the root directory as <tt>/kernel</tt> and the old kernel will be moved to <tt>/kernel.old</tt>. Now, shutdown the system and reboot to use your kernel. In case something goes wrong, there are some <ref id="kernelconfig:trouble" name= "troubleshooting"> instructions at the end of this document. Be sure to read the section which explains how to recover in case your new kernel <ref id="kernelconfig:noboot" name="does not boot">. <quote><em/Note:/ If you've added any new devices (such as sound cards) you may have to add some <ref id="kernelconfig:nodes" name="device nodes"> to your <tt>/dev</tt> directory before you can use them.</quote> <sect><heading>The Configuration File<label id="kernelconfig:config"></heading> <p>The general format of a configuration file is quite simple. Each line contains a keyword and one or more arguments. For simplicity, most lines only contain one argument. Anything following a <tt>#</tt> is considered a comment and ignored. The following sections describe each keyword, generally in the order they are listed in GENERIC, although some related keywords have been grouped together in a single section (such as Networking) even though they are actually scattered throughout the GENERIC file. An exhaustive list of options and more detailed explanations of the device lines is present in the LINT configuration file, located in the same directory as GENERIC. If you are in doubt as to the purpose or necessity of a line, check first in LINT. <p>The kernel is currently being moved to a better organization of the option handling. Traditionally, each option in the config file was simply converted into a <tt>-D</tt> switch for the <tt>CFLAGS</tt> line of the kernel Makefile. Naturally, this caused a creaping optionism, with nobody really knowing which option has been referenced in what files. <p>In the new scheme, every <tt>#ifdef</tt> that is intended to be dependant upon an option gets this option out of an <tt>opt_<em>foo</em>.h</tt> declaration file created in the compile directory by <tt>config</tt>. The list of valid options for <tt>config</tt> lives in two files: options that don't depend on the architecture are listed in <tt>/sys/conf/options</tt>, architecture-dependant ones in <tt>/sys/<em>arch</em>/conf/options.<em>arch</em></tt>, with <em>arch</em> being for example <tt>i386</tt>. <sect1><heading>Mandatory Keywords</heading> <p>These keywords are required in every kernel you build. <descrip> <tag>machine ``i386''</tag> <p>The first keyword is <tt>machine</tt>, which, since FreeBSD only runs on Intel 386 and compatible chips, is i386. <quote><em>Note:</em> that any keyword which contains numbers used as text must be enclosed in quotation marks, otherwise <tt>config</tt> gets confused and thinks you mean the actual number 386.</quote> <tag>cpu ``<em>cpu_type</em>''</tag> <p>The next keyword is <tt>cpu</tt>, which includes support for each CPU supported by FreeBSD. The possible values of <tt><em>cpu_type</em></tt> include: <itemize> <item>I386_CPU <item>I486_CPU <item>I586_CPU </itemize> and multiple instances of the <tt>cpu</tt> line may be present with different values of <tt><em>cpu_type</em></tt> as are present in the GENERIC kernel. For a custom kernel, it is best to specify only the cpu you have. If, for example, you have an Intel Pentium, use <tt>I586_CPU</tt> for <tt><em>cpu_type</em></tt>. <tag>ident <em>machine_name</em></tag> <p>Next, we have <tt>ident</tt>, which is the identification of the kernel. You should change this from GENERIC to whatever you named your kernel, in this example, MYKERNEL. The value you put in <tt>ident</tt> will print when you boot up the kernel, so it's useful to give a kernel a different name if you want to keep it separate from your usual kernel (if you want to build an experimental kernel, for example). Note that, as with <tt>machine</tt> and <tt> cpu</tt>, enclose your kernel's name in quotation marks if it contains any numbers. Since this name is passed to the C compiler as a <tt>-D</tt> switch, don't use names like <tt> DEBUG</tt>, or something that could be confused with another machine or CPU name, like <tt>vax</tt>. <tag>maxusers <em>number</em></tag> <p>This file sets the size of a number of important system tables. This number is supposed to be roughly equal to the number of simultaneous users you expect to have on your machine. However, under normal circumstances, you will want to set <tt>maxusers</tt> to at least four, especially if you're using X Windows or compiling software. The reason is that the most important table set by <tt>maxusers</tt> is the maximum number of processes, which is set to <bf><tt>20 + 16 * maxusers</tt></bf>, so if you set <tt>maxusers</tt> to one, then you can only have 36 simultaneous processes, including the 18 or so that the system starts up at boot time, and the 15 or so you will probably create when you start X Windows. Even a simple task like reading a <tt>man</tt> page will start up nine processes to filter, decompress, and view it. Setting <tt>maxusers</tt> to 4 will allow you to have up to 84 simultaneous processes, which should be enough for anyone. If, however, you see the dreaded ``proc table full'' error when trying to start another program, or are running a server with a large number of simultaneous users (like Walnut Creek CDROM's FTP site), you can always increase this number and rebuild. <quote><em/Note:/ <tt>maxuser</tt> does <em>not</em> limit the number of users which can log into your machine. It simply sets various table sizes to reasonable values considering the maximum number of users you will likely have on your system and how many processes each of them will be running. One keyword which <em>does</em> limit the number of simultaneous <em>remote logins</em> is <ref id="kernelconfig:ptys" name="pseudo-device pty 16">.</quote> <tag>config <em>kernel_name</em> root on <em>root_device</em></tag> <p>This line specifies the location and name of the kernel. Traditionally the kernel is called <tt>vmunix</tt> but in FreeBSD, it is aptly named <tt>kernel</tt>. You should always use <tt>kernel</tt> for <em>kernel_name</em> because changing it will render numerous system utilities inoperative. The second part of the line specifies the disk and partition where the root filesystem and kernel can be found. Typically this will be <tt>wd0</tt> for systems with non-SCSI drives, or <tt>sd0</tt> for systems with SCSI drives. </descrip> <sect1><heading>General Options</heading> <p>These lines provide kernel support for various filesystems and other options. <descrip> <label id="kernelconfig:mathemu"> <tag>options MATH_EMULATE</tag> <p>This line allows the kernel to simulate a math co-processor if your computer does not have one (386 or 486SX). If you have a Pentium, a 486DX, or a 386 or 486SX with a separate 387 or 487 chip, you can comment this line out. <quote><em>Note:</em> The normal math co-processor emulation routines that come with FreeBSD are <em>not</em> very accurate. If you do not have a math co-processor, and you need the best accuracy, I recommend that you change this option to <tt>GPL_MATH_EMULATE</tt> to use the superior GNU math support, which is not included by default for licensing reasons.</quote> <tag>options ``COMPAT_43''</tag> <p>Compatibility with BSD 4.3. Leave this in; some programs will act strangely if you comment this out. <tag>options BOUNCE_BUFFERS</tag> <p>ISA devices and EISA devices operating in an ISA compatibility mode can only perform DMA (Direct Memory Access) to memory below 16 megabytes. This option enables such devices to work in systems with more than 16 megabytes of memory. <tag>options UCONSOLE</tag> <p>Allow users to grab the console, useful for X Windows. For example, you can create a console xterm by typing <tt>xterm -C</tt>, which will display any `write', `talk', and other messages you receive, as well as any console messages sent by the kernel. <tag>options SYSVSHM</tag> <p>This option provides for System V shared memory. The most common use of this is the XSHM extension in X Windows, which many graphics-intensive programs (such as the movie player XAnim, and Linux DOOM) will automatically take advantage of for extra speed. If you use X Windows, you'll definitely want to include this. <tag>options SYSVSEM</tag> <p>Support for System V semaphores. Less commonly used but only adds a few hundred bytes to the kernel. <tag>options SYSVMSG</tag> <p>Support for System V messages. Again, only adds a few hundred bytes to the kernel. <quote><em/Note:/ The <tt>ipcs(1)</tt> command will tell will list any processes using using each of these System V facilities.</quote> </descrip> <sect1><heading>Filesystem Options</heading> <p>These options add support for various filesystems. You must include at least one of these to support the device you boot from; typically this will be <tt>FFS</tt> if you boot from a hard drive, or <tt>NFS</tt> if you are booting a diskless workstation from Ethernet. You can include other commonly-used filesystems in the kernel, but feel free to comment out support for filesystems you use less often (perhaps the MS-DOS filesystem?), since they will be dynamically loaded from the Loadable Kernel Module directory <tt>/lkm</tt> the first time you mount a partition of that type. <descrip> <tag>options FFS</tag> <p>The basic hard drive filesystem; leave it in if you boot from the hard disk. <tag>options NFS</tag> <p>Network Filesystem. Unless you plan to mount partitions from a Unix file server over Ethernet, you can comment this out. <tag>options MSDOSFS</tag> <p>MS-DOS Filesystem. Unless you plan to mount a DOS formatted hard drive partition at boot time, you can safely comment this out. It will be automatically loaded the first time you mount a DOS partition, as described above. Also, the excellent <tt>mtools</tt> software (in the ports collection) allows you to access DOS floppies without having to mount and unmount them (and does not require MSDOSFS at all). <tag>options ``CD9660''</tag> <p>ISO 9660 filesystem for CD-ROMs. Comment it out if you do not have a CD-ROM drive or only mount data CD's occasionally (since it will be dynamically loaded the first time you mount a data CD). Audio CD's do not need this filesystem. <tag>options PROCFS</tag> <p>Process filesystem. This is a pretend filesystem mounted on /proc which allows programs like <tt>ps(1)</tt> to give you more information on what processes are running. <tag>options MFS</tag> <p>Memory-mapped file system. This is basically a RAM disk for fast storage of temporary files, useful if you have a lot of swap space that you want to take advantage of. A perfect place to mount an MFS partition is on the <tt>/tmp</tt> directory, since many programs store temporary data here. To mount an MFS RAM disk on <tt>/tmp</tt>, add the following line to <tt>/etc/fstab</tt> and then reboot or type <tt>mount /tmp</tt>: <tscreen><verb> /dev/wd1s2b /tmp mfs rw 0 0 </verb></tscreen> <quote><em/Note:/ Replace the <tt>/dev/wd1s2b</tt> with the name of your swap partition, which will be listed in your <tt>/etc/fstab</tt> as follows: <tscreen><verb> /dev/wd1s2b none swap sw 0 0 </verb></tscreen> </quote> <quote><em/Note:/ <!-- MFS is currently a bit limited (for example, I noticed that two programs ca not access the <tt>/tmp</tt> device simultaneously). As such, you may want to avoid it for now. --> Also, the <tt>MFS</tt> filesystem can <em>not</em> be dynamically loaded, so you <em>must</em> compile it into your kernel if you want to experiment with it.</quote> <tag>options QUOTA</tag> <p>Enable disk quotas. If you have a public access system, and do not want users to be able to overflow the <tt>/home</tt> partition, you can establish disk quotas for each user. This code is a little buggy, so do not enable it unless you have to. View the manual page for <tt>quota(1)</tt> to learn more about disk quotas. </descrip> <sect1><heading>Basic Controllers and Devices</heading> <p>These sections describe the basic disk, tape, and CD-ROM controllers supported by FreeBSD. There are separate sections for <ref id="kernelconfig:scsi" name="SCSI"> controllers and <ref id="kernelconfig:network" name="network"> cards. <descrip> <tag>controller isa0</tag> <p>All PC's supported by FreeBSD have one of these. If you have an IBM PS/2 (Micro Channel Architecture), then you cannot run FreeBSD at this time. <tag>controller pci0</tag> <p>Include this if you have a PCI motherboard. This enables auto-detection of PCI cards and gatewaying from the PCI to the ISA bus. <tag>controller fdc0</tag> <p>Floppy drive controller: <tt>fd0</tt> is the ``A:'' floppy drive, and <tt>fd1</tt> is the ``B:'' drive. <tt>ft0</tt> is a QIC-80 tape drive attached to the floppy controller. Comment out any lines corresponding to devices you do not have. <quote><em/Note:/ QIC-80 tape support requires a separate filter program called <tt>ft(8)</tt>, see the manual page for details.</quote> <tag>controller wdc0</tag> <p>This is the primary IDE controller. <tt>wd0</tt> and <tt>wd1</tt> are the master and slave hard drive, respectively. <tt>wdc1</tt> is a secondary IDE controller where you might have a third or fourth hard drive, or an IDE CD-ROM. Comment out the lines which do not apply (if you have a SCSI hard drive, you'll probably want to comment out all six lines, for example). <tag>controller wcd0<label id="kernelconfig:atapi"></tag> <p>This device provides IDE CD-ROM support. Be sure to leave <tt>wdc1</tt> uncommented if your CD-ROM is on its own controller card. To use this, you must also include the line <tt>options ATAPI</tt>. <tag>device npx0 at isa? port ``IO_NPX'' irq 13 vector npxintr</tag> <p><tt>npx0</tt> is the interface to the floating point math unit in FreeBSD, either the hardware co-processor or the software math emulator. It is <em/NOT/ optional. <tag>device wt0 at isa? port 0x300 bio irq 5 drq 1 vector wtintr</tag> <p>Wangtek and Archive QIC-02/QIC-36 tape drive support <tag>Proprietary CD-ROM support</tag> <p>The following drivers are for the so-called <em>proprietary</em> CD-ROM drives. These drives have their own controller card or might plug into a sound card such as the SoundBlaster 16. They are <em>not</em> IDE or SCSI. Most older single-speed and double-speed CD-ROMs use these interfaces, while newer quad-speeds are likely to be <ref id="kernelconfig:atapi" name="IDE"> or <ref id="kernelconfig:scsi" name="SCSI">. <descrip> <tag>device mcd0 at isa? port 0x300 bio irq 10 vector mcdintr</tag> <p>Mitsumi CD-ROM (LU002, LU005, FX001D). <tag>device scd0 at isa? port 0x230 bio</tag> <p>Sony CD-ROM (CDU31, CDU33A). <tag>controller matcd0 at isa? port ? bio</tag> <p>Matsushita/Panasonic CD-ROM (sold by Creative Labs for SoundBlaster). </descrip> </descrip> <sect1><heading>SCSI Device Support<label id="kernelconfig:scsi"></heading> <p>This section describes the various SCSI controllers and devices supported by FreeBSD. <descrip> <tag>SCSI Controllers</tag> <p>The next ten or so lines include support for different kinds of SCSI controllers. Comment out all except for the one(s) you have: <descrip> <tag>controller bt0 at isa? port ``IO_BT0'' bio irq ? vector btintr</tag> <p>Most Buslogic controllers <tag>controller uha0 at isa? port ``IO_UHA0'' bio irq ? drq 5 vector uhaintr</tag> <p>UltraStor 14F and 34F <tag>controller ahc0</tag> <p>Adaptec 274x/284x/294x <tag>controller ahb0 at isa? bio irq ? vector ahbintr</tag> <p>Adaptec 174x <tag>controller aha0 at isa? port ``IO_AHA0'' bio irq ? drq 5 vector ahaintr</tag> <p>Adaptec 154x <tag>controller aic0 at isa? port 0x340 bio irq 11 vector aicintr </tag> <p>Adaptec 152x and sound cards using Adaptec AIC-6360 (slow!) <tag>controller nca0 at isa? port 0x1f88 bio irq 10 vector ncaintr </tag> <p>ProAudioSpectrum cards using NCR 5380 or Trantor T130 <tag>controller sea0 at isa? bio irq 5 iomem 0xc8000 iosiz 0x2000 vector seaintr</tag> <p>Seagate ST01/02 8 bit controller (slow!) <tag>controller wds0 at isa? port 0x350 bio irq 15 drq 6 vector wdsintr</tag> <p>Western Digital WD7000 controller <tag>controller ncr0</tag> <p>NCR 53C810 and 53C825 PCI SCSI controller </descrip> <tag>options ``SCSI_DELAY=15''</tag> <p>This causes the kernel to pause 15 seconds before probing each SCSI device in your system. If you only have IDE hard drives, you can ignore this, otherwise you'll probably want to lower this number, perhaps to 5 seconds, to speed up booting. Of course if you do this, and FreeBSD has trouble recognizing your SCSI devices, you'll have to raise it back up. <tag>controller scbus0</tag> <p>If you have any SCSI controllers, this line provides generic SCSI support. If you do not have SCSI, you can comment this, and the following three lines, out. <tag>device sd0</tag> <p>Support for SCSI hard drives. <tag>device st0</tag> <p>Support for SCSI tape drives. <tag>device cd0</tag> <p>Support for SCSI CD-ROM drives. <p>Note that the number <bf>0</bf> in the above entries is slightly misleading: all these devices are automatically configured as they are found, regardless of how many of them are hooked up to the SCSI bus(es), and which target IDs they have. If you want to ``wire down'' specific target IDs to particular devices, refer to the appropriate section of the LINT kernel config file. </descrip> <sect1><heading>Console, Bus Mouse, and X Server Support</heading> <p>You must choose one of these two console types, and, if you plan to use X Windows, enable the XSERVER option and optionally, a bus mouse or PS/2 mouse device. <descrip> <tag>device sc0 at isa? port ``IO_KBD' tty irq 1 vector scintr</tag> <p><tt>sc0</tt> is the default console driver, which resembles an SCO console. Since most full-screen programs access the console through a terminal database library like <em>termcap</em>, it should not matter much whether you use this or <tt>vt0</tt>, the VT220 compatible console driver. When you log in, set your TERM variable to ``scoansi'' if full-screen programs have trouble running under this console. <tag>device vt0 at isa? port ``IO_KBD'' tty irq 1 vector pcrint</tag> <p>This is a VT220-compatible console driver, backwards compatible to VT100/102. It works well on some laptops which have hardware incompatibilities with <tt>sc0</tt>. Also, set your TERM variable to ``vt100'' or ``vt220'' when you log in. This driver might also prove useful when connecting to a large number of different machines over the network, where the <em>termcap</em> or <em>terminfo</em> entries for the <tt>sc0</tt> device are often not available -- ``vt100'' should be available on virtually any platform. <descrip> <tag>options ``PCVT_FREEBSD=210''</tag> <p>Required with the <tt>vt0</tt> console driver. <tag>options XSERVER</tag> <p>This includes code required to run the <tt>XFree86</tt> X Window Server. </descrip> <tag>device mse0 at isa? port 0x23c tty irq 5 vector ms</tag> <p>Use this device if you have a Logitech or ATI InPort bus mouse card. <quote><em/Note:/ If you have a serial mouse, ignore these two lines, and instead, make sure the appropriate <ref id="kernelconfig:serial" name="serial"> port is enabled (probably COM1).</quote> <tag>device psm0 at isa? port ``IO_KBD'' conflicts tty irq 12 vector psmintr</tag> <p>Use this device if your mouse plugs into the PS/2 mouse port. </descrip> <sect1><heading>Serial and Parallel Ports</heading> <p>Nearly all systems have these. If you are attaching a printer to one of these ports, the <ref id="printing" name="Printing"> section of the handbook is very useful. If you are using modem, <ref id="dialup" name="Dialup access"> provides extensive detail on serial port configuration for use with such devices. <descrip> <tag>device sio0 at isa? port ``IO_COM1'' tty irq 4 vector siointr<label id="kernelconfig:serial"></tag> <p><tt>sio0</tt> through <tt>sio3</tt> are the four serial ports referred to as COM1 through COM4 in the MS-DOS world. Note that if you have an internal modem on COM4 and a serial port at COM2 you will have to change the IRQ of the modem to 2 (for obscure technical reasons IRQ 2 = IRQ 9) in order to access it from FreeBSD. If you have a multiport serial card, check the manual page for <tt>sio(4)</tt> for more information on the proper values for these lines. Some video cards (notably those based on S3 chips) use IO addresses of the form <tt>0x*2e8</tt>, and since many cheap serial cards do not fully decode the 16-bit IO address space, they clash with these cards, making the COM4 port practically unavailable. Each serial port is required to have a unique IRQ (unless you are using one of the multiport cards where shared interrupts are supported), so the default IRQs for COM3 and COM4 cannot be used. <tag>device lpt0 at isa? port? tty irq 7 vector lptintr</tag> <p><tt>lpt0</tt> through <tt>lpt2</tt> are the three printer ports you could conceivably have. Most people just have one, though, so feel free to comment out the other two lines if you do not have them. </descrip> <sect1><heading>Networking<label id="kernelconfig:network"></heading> <p>FreeBSD, as with Unix in general, places a <em>big</em> emphasis on networking. Therefore, even if you do not have an Ethernet card, pay attention to the mandatory options and the dial-up networking support. <descrip> <tag>options INET</tag> Networking support. Leave it in even if you do not plan to be connected to a network. Most programs require at least loopback networking (i.e. making network connections within your PC) so this is essentially mandatory. <tag>Ethernet cards</tag> <p>The next lines enable support for various Ethernet cards. If you do not have a network card, you can comment out all of these lines. Otherwise, you'll want to leave in support for your particular Ethernet card(s): <descrip> <tag>device de0</tag> <p>Digital Equipment DC21040 PCI Ethernet adapter <tag>device cx0 at isa? port 0x240 net irq 15 drq 7 vector cxintr</tag> <p>Cronyx/Sigma multiport sync/async (with Cisco or PPP framing) <tag>device ed0 at isa? port 0x280 net irq 5 iomem 0xd8000 vector edintr</tag> <p>Western Digital and SMC 80xx; Novell NE1000 and NE2000; 3Com 3C503 <tag>device el0 at isa? port 0x300 net irq 9 vector elintr</tag> <p>3Com 3C501 (slow!) <tag>device eg0 at isa? port 0x310 net irq 5 vector egintr</tag> <p>3Com 3C505 <tag>device ep0 at isa? port 0x300 net irq 10 vector epintr</tag> <p>3Com 3C509 (buggy) <tag>device fe0 at isa? port 0x240 net irq ? vector feintr</tag> <p>Fujitsu MB86960A/MB86965A Ethernet <tag>device fea0 at isa? net irq ? vector feaintr</tag> <p>DEC DEFEA EISA FDDI adapter <tag>device ie0 at isa? port 0x360 net irq 7 iomem 0xd0000 vector ieintr</tag> <p>AT&T StarLAN 10 and EN100; 3Com 3C507; unknown NI5210 <tag>device ix0 at isa? port 0x300 net irq 10 iomem 0xd0000 iosiz 32768 vector ixintr</tag> <p>Intel EtherExpress 16 <tag>device le0 at isa? port 0x300 net irq 5 iomem 0xd0000 vector le_intr</tag> <p>Digital Equipment EtherWorks 2 and EtherWorks 3 (DEPCA, DE100, DE101, DE200, DE201, DE202, DE203, DE204, DE205, DE422) <tag>device lnc0 at isa? port 0x300 net irq 10 drq 0 vector lncintr</tag> <p>Lance/PCnet cards (Isolan, Novell NE2100, NE32-VL) <tag>device ze0 at isa? port 0x300 net irq 5 iomem 0xd8000 vector zeintr</tag> <p>IBM/National Semiconductor PCMCIA ethernet controller. <tag>device zp0 at isa? port 0x300 net irq 10 iomem 0xd8000 vector zpintr</tag> <p>3Com PCMCIA Etherlink III </descrip> <quote><em/Note:/ With certain cards (notably the NE2000) you'll have to change the port and/or IRQ since there is no ``standard'' location for these cards.</quote> <tag>pseudo-device loop</tag> <p><tt>loop</tt> is the generic loopback device for TCP/IP. If you telnet or FTP to <em>localhost</em> (a.k.a. <tt>127.0.0.1</tt>) it will come back at you through this pseudo-device. Mandatory. <tag>pseudo-device ether</tag> <p><tt>ether</tt> is only needed if you have an Ethernet card and includes generic Ethernet protocol code. <tag>pseudo-device sl <em>number</em></tag> <p><tt>sl</tt> is for SLIP (Serial Line Internet Protocol) support. This has been almost entirely supplanted by PPP, which is easier to set up, better suited for modem-to-modem connections, as well as more powerful. The <em>number</em> after <tt>sl</tt> specifies how many simultaneous SLIP sessions to support. This handbook has more information on setting up a SLIP <ref id="slipc" name="client"> or <ref id="slips" name="server">. <tag>pseudo-device ppp <em>number</em></tag> <p><tt>ppp</tt> is for kernel-mode PPP (Point-to-Point Protocol) support for dial-up Internet connections. There is also version of PPP implemented as a user application that uses the <tt>tun</tt> and offers more flexibility and features such as demand dialing. If you still want to use this PPP driver, read the <ref id="ppp" name="kernel-mode PPP"> section of the handbook. As with the <tt>sl</tt> device, <em>number</em> specifies how many simultaneous PPP connections to support. <tag>pseudo-device tun <em>number</em></tag> <p><tt>tun</tt> is used by the user-mode PPP software. This program is easy to set up and very fast. It also has special features such as automatic dial-on-demand. The number after <tt>tun</tt> specifies the number of simultaneous PPP sessions to support. See the <ref id="userppp" name="user-mode PPP"> section of the handbook for more information. <tag>pseudo-device bpfilter <em>number</em></tag> <p>Berkeley packet filter. This pseudo-device allows network interfaces to be placed in promiscuous mode, capturing every packet on a broadcast network (e.g. an ethernet). These packets can be captured to disk and/or examined with the <tt>tcpdump(1)</tt> program. Note that implementation of this capability can seriously compromise your overall network security. The <em>number</em> after bpfilter is the number of interfaces that can be examined simultaneously. Optional, not recommended except for those who are fully aware of the potential pitfalls. Not all network cards support this capability. </descrip> <sect1><heading>Sound cards</heading> <p>This is the first section containing lines that are not in the GENERIC kernel. To include sound card support, you'll have to copy the appropriate lines from the LINT kernel (which contains support for <em>every</em> device) as follows: <descrip> <tag>controller snd0</tag> <p>Generic sound driver code. Required for all of the following sound cards except <tt>pca</tt>. <tag>device pas0 at isa? port 0x388 irq 10 drq 6 vector pasintr</tag> <p>ProAudioSpectrum digital audio and MIDI. <tag>device sb0 at isa? port 0x220 irq 7 conflicts drq 1 vector sbintr</tag> <p>SoundBlaster digital audio. <quote><em/Note:/ If your SoundBlaster is on a different IRQ (such as 5), change <tt>irq 7</tt> to, for example, <tt>irq 5</tt> and remove the <tt>conflicts</tt> keyword. Also, you must add the line: <tt>options ``SBC_IRQ=5''</tt></quote> <tag>device sbxvi0 at isa? drq 5</tag> <p>SoundBlaster 16 digital 16-bit audio. <quote><em/Note:/ If your SB16 is on a different 16-bit DMA channel (such as 6 or 7), change the <tt>drq 5</tt> keyword appropriately, and then add the line: <tt>options "SB16_DMA=6"</tt></quote> <tag>device sbmidi0 at isa? port 0x330</tag> <p>SoundBlaster 16 MIDI interface. If you have a SoundBlaster 16, you must include this line, or the kernel will not compile. <tag>device gus0 at isa? port 0x220 irq 10 drq 1 vector gusintr</tag> <p>Gravis Ultrasound. <tag>device mss0 at isa? port 0x530 irq 10 drq 1 vector adintr</tag> <p>Microsoft Sound System. <tag>device opl0 at isa? port 0x388 conflicts</tag> <p>AdLib FM-synthesis audio. Include this line for AdLib, SoundBlaster, and ProAudioSpectrum users, if you want to play MIDI songs with a program such as <tt>playmidi</tt> (in the ports collection). <tag>device mpu0 at isa? port 0x330 irq 6 drq 0</tag> <p>Roland MPU-401 stand-alone card. <tag>device uart0 at isa? port 0x330 irq 5 vector ``m6850intr''</tag> <p>Stand-alone 6850 UART for MIDI. <tag>device pca0 at isa? port ``IO_TIMER1'' tty<label id="kernelconfig:pcaudio"></tag> <p>Digital audio through PC speaker. This is going to be very poor sound quality and quite CPU-intensive, so you have been warned (but it does not require a sound card). </descrip> <quote><em/Note:/ There is some additional documentation in <tt>/usr/src/sys/i386/isa/sound/sound.doc</tt>. Also, if you add any of these devices, be sure to create the sound <ref id="kernelconfig:nodes" name="device nodes">.</quote> <sect1><heading>Pseudo-devices</heading> <p>Pseudo-device drivers are parts of the kernel that act like device drivers but do not correspond to any actual hardware in the machine. The <ref id="kernelconfig:network" name="network-related"> pseudo-devices are in that section, while the remainder are here. <descrip> <tag>pseudo-device gzip</tag> <p><tt>gzip</tt> allows you to run FreeBSD programs that have been compressed with <tt>gzip</tt>. The programs in <tt>/stand</tt> are compressed so it is a good idea to have this option in your kernel.</p> <tag>pseudo-device log</tag> <p><tt>log</tt> is used for logging of kernel error messages. Mandatory. <tag>pseudo-device pty <em>number</em><label id="kernelconfig:ptys"></tag> <p><tt>pty</tt> is a ``pseudo-terminal'' or simulated login port. It's used by incoming <bf>telnet</bf> and <bf>rlogin</bf> sessions, xterm, and some other applications such as emacs. The <em>number</em> indicates the number of <tt>pty</tt>s to create. If you need more than GENERIC default of 16 simultaneous xterm windows and/or remote logins, be sure to increase this number accordingly, up to a maximum of 64. <tag>pseudo-device snp <em>number</em></tag> <p>Snoop device. This pseudo-device allows one terminal session to watch another using the <tt>watch(8)</tt> command. Note that implementation of this capability has important security and privacy implications. The <em>number</em> after snp is the total number of simultaneous snoop sessions. Optional. <tag>pseudo-device vn</tag> <p>Vnode driver. Allows a file to be treated as a device after being set up with the <tt>vnconfig(8)</tt> command. This driver can be useful for manipulating floppy disk images and using a file as a swap device (e.g. an MS Windows swap file). Optional. </descrip> <sect1><heading>Joystick, PC Speaker, Miscellaneous</heading> <p>This section describes some miscellaneous hardware devices supported by FreeBSD. Note that none of these lines are included in the GENERIC kernel, you'll have to copy them from this handbook or the LINT kernel (which contains support for <em>every</em> device): <descrip> <tag>device joy0 at isa? port ``IO_GAME''</tag> <p>PC joystick device. <tag>pseudo-device speaker</tag> <p>Supports IBM BASIC-style noises through the PC speaker. Some fun programs which use this are <tt>/usr/sbin/spkrtest</tt>, which is a shell script that plays some simple songs, and <tt>/usr/games/piano</tt> which lets you play songs using the keyboard as a simple piano (this file only exists if you've installed the <em>games</em> package). Also, the excellent text role-playing game NetHack (in the ports collection) can be configured to use this device to play songs when you play musical instruments in the game. <p>See also the <ref id="kernelconfig:pcaudio" name="pca0"> device. </descrip> <sect><heading>Making Device Nodes<label id="kernelconfig:nodes"></heading> <p>Almost every device in the kernel has a corresponding ``node'' entry in the <tt>/dev</tt> directory. These nodes look like regular files, but are actually special entries into the kernel which programs use to access the device. The shell script <tt>/dev/MAKEDEV</tt>, which is executed when you first install the operating system, creates nearly all of the device nodes supported. However, it does not create <em>all</em> of them, so when you add support for a new device, it pays to make sure that the appropriate entries are in this directory, and if not, add them. Here is a simple example: Suppose you add the IDE CD-ROM support to the kernel. The line to add is: <tscreen><verb> controller wcd0 </verb></tscreen> This means that you should look for some entries that start with <tt>wcd0</tt> in the <tt>/dev</tt> directory, possibly followed by a letter, such as `c', or preceded by the letter 'r', which means a `raw' device. It turns out that those files are not there, so I must change to the <tt>/dev</tt> directory and type: <tscreen><verb> # sh MAKEDEV wcd0 </verb></tscreen> When this script finishes, you will find that there are now <tt>wcd0c</tt> and <tt>rwcd0c</tt> entries in <tt>/dev</tt> so you know that it executed correctly. For sound cards, the command: <tscreen><verb> # sh MAKEDEV snd0 </verb></tscreen> creates the appropriate entries. Follow this simple procedure for any other non-GENERIC devices which do not have entries. <quote><em/Note:/ All SCSI controllers use the same set of <tt>/dev</tt> entries, so you do not need to create these. Also, network cards and SLIP/PPP pseudo-devices do not have entries in <tt>/dev</tt> at all, so you do not have to worry about these either.</quote> <sect><heading>If Something Goes Wrong<label id="kernelconfig:trouble"></heading> <p>There are four categories of trouble that can occur when building a custom kernel. They are: <descrip> <tag>Config command fails</tag> <p>If the <tt>config</tt> command fails when you give it your kernel description, you've probably made a simple error somewhere. Fortunately, <tt>config</tt> will print the line number that it had trouble with, so you can quickly skip to it with <tt>vi</tt>. For example, if you see: <tscreen><verb> config: line 17: syntax error </verb></tscreen> you can skip to the problem in <tt>vi</tt> by typing ``17G'' in command mode. Make sure the keyword is typed correctly, by comparing it to the GENERIC kernel or another reference. <tag>Make command fails</tag> <p>If the <tt>make</tt> command fails, it usually signals an error in your kernel description, but not severe enough for <tt>config</tt> to catch it. Again, look over your configuration, and if you still cannot resolve the - problem, send mail to <tt><htmlurl - url="mailto:questions@freebsd.org" - name="questions@FreeBSD.ORG"></tt> with your kernel + problem, send mail to the &a.questions with your kernel configuration, and it should be diagnosed very quickly. <tag>Kernel will not boot<label id="kernelconfig:noboot"></tag> <p>If your new kernel does not boot, or fails to recognize your devices, do not panic! Fortunately, BSD has an excellent mechanism for recovering from incompatible kernels. Simply type the name of the kernel you want to boot from (i.e. ``kernel.old'') at the FreeBSD boot prompt instead of pressing return. When reconfiguring a kernel, it is always a good idea to keep a kernel that is known to work on hand. After booting with a good kernel you can check over your configuration file and try to build it again. One helpful resource is the <tt>/var/log/messages</tt> file which records, among other things, all of the kernel messages from every successful boot. Also, the <tt>dmesg(8)</tt> command will print the kernel messages from the current boot. <quote><em/Note:/ If you are having trouble building a kernel, make sure to keep a GENERIC, or some other kernel that is known to work on hand as a different name that will not get erased on the next build. You cannot rely on <tt>kernel.old</tt> because when installing a new kernel, <tt>kernel.old</tt> is overwritten with the last installed kernel which may be non-functional. Also, as soon as possible, move the working kernel to the proper ``kernel'' location or commands such as <tt>ps(1)</tt> will not work properly. The proper command to ``unlock'' the kernel file that <tt>make</tt> installs (in order to move another kernel back permanently) is: <tscreen><verb> # chflags noschg /kernel </verb></tscreen> And, if you want to ``lock'' your new kernel into place, or any file for that matter, so that it cannot be moved or tampered with: <tscreen><verb> # chflags schg /kernel </verb></tscreen> </quote> <tag>Kernel works, but <tt>ps</tt> does not work any more!</tag> <p>If you've installed a different version of the kernel from the one that the system utilities have been built with, for example, an experimental ``2.2.0'' kernel on a 2.1.0-RELEASE system, many system-status commands like <tt>ps(1)</tt> and <tt>vmstat(8)</tt> will not work any more. You must recompile the <tt>libkvm</tt> library as well as these utilities. This is one reason it is not normally a good idea to use a different version of the kernel from the rest of the operating system. </descrip> diff --git a/handbook/mirrors.sgml b/handbook/mirrors.sgml index ac2c0008da..03a718d3ef 100644 --- a/handbook/mirrors.sgml +++ b/handbook/mirrors.sgml @@ -1,450 +1,450 @@ -<!-- $Id: mirrors.sgml,v 1.31 1996-03-21 17:53:44 jkh Exp $ --> +<!-- $Id: mirrors.sgml,v 1.32 1996-05-09 23:04:47 mpp Exp $ --> <!-- The FreeBSD Documentation Project --> <!-- <!doctype linuxdoc public "-//FreeBSD//DTD linuxdoc//EN"> --> <chapt><heading>Obtaining FreeBSD<label id="mirrors"></heading> <p>The official sources for FreeBSD available via anonymous FTP from: <quote> -<htmlurl url="ftp://ftp.freebsd.org/pub/FreeBSD" +<htmlurl url="ftp://ftp.FreeBSD.ORG/pub/FreeBSD" name="ftp://ftp.FreeBSD.org/pub/FreeBSD"> </quote> and on CD-ROM from Walnut Creek CDROM: <quote> Walnut Creek CDROM<newline> 1547 Palos Verdes Mall, Suite 260<newline> Walnut Creek CA 94596 USA<newline> Phone: +1 510 674-0783<newline> Fax: +1 510 674-0821<newline> Email: <htmlurl url="mailto:info@cdrom.com" name="info@cdrom.com"><newline> WWW: <htmlurl url="http://www.cdrom.com/" name="http://www.cdrom.com/"> </quote> <p>Additionally, FreeBSD is available via anonymous FTP from the following mirror sites. If you choose to obtain FreeBSD via anonymous FTP, please try to use a site near you. <descrip> <tag>Australia</tag> In case of problems, please contact the -<htmlurl url="mailto:hostmaster@au.freebsd.org" name="hostmaster"> +<htmlurl url="mailto:hostmaster@au.FreeBSD.ORG" name="hostmaster"> for this domain. <itemize> <item> -<htmlurl url="ftp://ftp.au.freebsd.org/pub/FreeBSD" - name="ftp://ftp.au.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp.au.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp.au.FreeBSD.ORG/pub/FreeBSD"><newline> <item> -<htmlurl url="ftp://ftp2.au.freebsd.org/pub/FreeBSD" - name="ftp://ftp2.au.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp2.au.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp2.au.FreeBSD.ORG/pub/FreeBSD"><newline> <item> -<htmlurl url="ftp://ftp3.au.freebsd.org/pub/FreeBSD" - name="ftp://ftp3.au.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp3.au.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp3.au.FreeBSD.ORG/pub/FreeBSD"><newline> <item> -<htmlurl url="ftp://ftp4.au.freebsd.org/pub/FreeBSD" - name="ftp://ftp4.au.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp4.au.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp4.au.FreeBSD.ORG/pub/FreeBSD"><newline> </itemize> <tag>Brazil</tag> In case of problems, please contact the -<htmlurl url="mailto:hostmaster@br.freebsd.org" name="hostmaster"> +<htmlurl url="mailto:hostmaster@br.FreeBSD.ORG" name="hostmaster"> for this domain. <itemize> <item> -<htmlurl url="ftp://ftp.br.freebsd.org/pub/FreeBSD" - name="ftp://ftp.br.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp.br.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp.br.FreeBSD.ORG/pub/FreeBSD"><newline> <item> -<htmlurl url="ftp://ftp2.br.freebsd.org/pub/FreeBSD" - name="ftp://ftp2.br.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp2.br.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp2.br.FreeBSD.ORG/pub/FreeBSD"><newline> <item> -<htmlurl url="ftp://ftp3.br.freebsd.org/pub/FreeBSD" - name="ftp://ftp3.br.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp3.br.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp3.br.FreeBSD.ORG/pub/FreeBSD"><newline> <item> -<htmlurl url="ftp://ftp4.br.freebsd.org/pub/FreeBSD" - name="ftp://ftp4.br.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp4.br.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp4.br.FreeBSD.ORG/pub/FreeBSD"><newline> <item> -<htmlurl url="ftp://ftp5.br.freebsd.org/pub/FreeBSD" - name="ftp://ftp5.br.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp5.br.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp5.br.FreeBSD.ORG/pub/FreeBSD"><newline> </itemize> <tag>Canada</tag> In case of problems, please contact the -<htmlurl url="mailto:hostmaster@ca.freebsd.org" name="hostmaster"> +<htmlurl url="mailto:hostmaster@ca.FreeBSD.ORG" name="hostmaster"> for this domain. <itemize> <item> -<htmlurl url="ftp://ftp.ca.freebsd.org/pub/FreeBSD" - name="ftp://ftp.ca.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp.ca.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp.ca.FreeBSD.ORG/pub/FreeBSD"><newline> </itemize> <tag>Czech Republic</tag> <itemize> <item> <htmlurl url="ftp://sunsite.mff.cuni.cz/OS/FreeBSD" name="ftp://sunsite.mff.cuni.cz/OS/FreeBSD"><newline> Contact: <htmlurl url="jj@sunsite.mff.cuni.cz" name="jj@sunsite.mff.cuni.cz">. </itemize> <tag>Finland</tag> <itemize> <item> <htmlurl url="ftp://nic.funet.fi/pub/unix/FreeBSD" name="ftp://nic.funet.fi/pub/unix/FreeBSD"><newline> Contact: <htmlurl url="mailto:count@nic.funet.fi" name="count@nic.funet.fi">. </itemize> <tag>France</tag> <itemize> <item> <htmlurl url="ftp://ftp.ibp.fr/pub/FreeBSD" name="ftp://ftp.ibp.fr/pub/FreeBSD"><newline> Contact: <htmlurl url="mailto:Remy.Card@ibp.fr" name="Remy.Card@ibp.fr">. </itemize> <tag>Germany</tag> In case of problems, please contact the -<htmlurl url="mailto:hostmaster@de.freebsd.org" name="hostmaster"> +<htmlurl url="mailto:hostmaster@de.FreeBSD.ORG" name="hostmaster"> for this domain. <itemize> <item> -<htmlurl url="ftp://ftp.de.freebsd.org/pub/FreeBSD" - name="ftp://ftp.de.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp.de.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp.de.FreeBSD.ORG/pub/FreeBSD"><newline> <item> -<htmlurl url="ftp://ftp2.de.freebsd.org/pub/FreeBSD" - name="ftp://ftp2.de.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp2.de.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp2.de.FreeBSD.ORG/pub/FreeBSD"><newline> <item> -<htmlurl url="ftp://ftp3.de.freebsd.org/pub/FreeBSD" - name="ftp://ftp3.de.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp3.de.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp3.de.FreeBSD.ORG/pub/FreeBSD"><newline> <item> -<htmlurl url="ftp://ftp4.de.freebsd.org/pub/FreeBSD" - name="ftp://ftp4.de.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp4.de.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp4.de.FreeBSD.ORG/pub/FreeBSD"><newline> <item> -<htmlurl url="ftp://ftp5.de.freebsd.org/pub/FreeBSD" - name="ftp://ftp5.de.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp5.de.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp5.de.FreeBSD.ORG/pub/FreeBSD"><newline> <item> -<htmlurl url="ftp://ftp6.de.freebsd.org/pub/FreeBSD" - name="ftp://ftp6.de.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp6.de.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp6.de.FreeBSD.ORG/pub/FreeBSD"><newline> <item> -<htmlurl url="ftp://ftp7.de.freebsd.org/pub/FreeBSD" - name="ftp://ftp7.de.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp7.de.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp7.de.FreeBSD.ORG/pub/FreeBSD"><newline> </itemize> <tag>Hong Kong</tag> <itemize> <item> <htmlurl url="ftp://ftp.hk.super.net/pub/FreeBSD" name="ftp://ftp.hk.super.net/pub/FreeBSD"><newline> Contact: <htmlurl url="mailto:ftp-admin@HK.Super.NET" name="ftp-admin@HK.Super.NET">. </itemize> <tag>Ireland</tag> <itemize> <item> -<htmlurl url="ftp://ftp.ie.freebsd.org/pub/FreeBSD" - name="ftp://ftp.ie.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp.ie.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp.ie.FreeBSD.ORG/pub/FreeBSD"><newline> </itemize> <tag>Israel</tag> <itemize> <item> <htmlurl url="ftp://orgchem.weizmann.ac.il/pub/FreeBSD" name="ftp://orgchem.weizmann.ac.il/pub/FreeBSD"><newline> Contact: <htmlurl url="mailto:serg@klara.weizmann.ac.il" name="serg@klara.weizmann.ac.il">. <item> <htmlurl url="ftp://xray4.weizmann.ac.il/pub/FreeBSD" name="ftp://xray4.weizmann.ac.il/pub/FreeBSD"><newline> Contact: <htmlurl url="mailto:serg@klara.weizmann.ac.il" name="serg@klara.weizmann.ac.il">. </itemize> <tag>Japan</tag> In case of problems, please contact the -<htmlurl url="mailto:hostmaster@jp.freebsd.org" name="hostmaster"> +<htmlurl url="mailto:hostmaster@jp.FreeBSD.ORG" name="hostmaster"> for this domain. <itemize> <item> -<htmlurl url="ftp://ftp.jp.freebsd.org/pub/FreeBSD" - name="ftp://ftp.jp.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp.jp.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp.jp.FreeBSD.ORG/pub/FreeBSD"><newline> <item> -<htmlurl url="ftp://ftp2.jp.freebsd.org/pub/FreeBSD" - name="ftp://ftp2.jp.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp2.jp.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp2.jp.FreeBSD.ORG/pub/FreeBSD"><newline> <item> -<htmlurl url="ftp://ftp3.jp.freebsd.org/pub/FreeBSD" - name="ftp://ftp3.jp.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp3.jp.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp3.jp.FreeBSD.ORG/pub/FreeBSD"><newline> <item> -<htmlurl url="ftp://ftp4.jp.freebsd.org/pub/FreeBSD" - name="ftp://ftp4.jp.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp4.jp.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp4.jp.FreeBSD.ORG/pub/FreeBSD"><newline> <item> -<htmlurl url="ftp://ftp5.jp.freebsd.org/pub/FreeBSD" - name="ftp://ftp5.jp.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp5.jp.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp5.jp.FreeBSD.ORG/pub/FreeBSD"><newline> <item> -<htmlurl url="ftp://ftp6.jp.freebsd.org/pub/FreeBSD" - name="ftp://ftp6.jp.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp6.jp.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp6.jp.FreeBSD.ORG/pub/FreeBSD"><newline> </itemize> <tag>Korea</tag> In case of problems, please contact the -<htmlurl url="mailto:hostmaster@kr.freebsd.org" name="hostmaster"> +<htmlurl url="mailto:hostmaster@kr.FreeBSD.ORG" name="hostmaster"> for this domain. <itemize> <item> -<htmlurl url="ftp://ftp.kr.freebsd.org/pub/FreeBSD" - name="ftp://ftp.kr.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp.kr.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp.kr.FreeBSD.ORG/pub/FreeBSD"><newline> <item> -<htmlurl url="ftp://ftp2.kr.freebsd.org/pub/FreeBSD" - name="ftp://ftp2.kr.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp2.kr.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp2.kr.FreeBSD.ORG/pub/FreeBSD"><newline> </itemize> <tag>Netherlands</tag> <itemize> <item> <htmlurl url="ftp://ftp.nl.net/pub/os/FreeBSD" name="ftp://ftp.nl.net/pub/os/FreeBSD"><newline> Contact: <htmlurl url="mailto:archive@nl.net" name="archive@nl.net">. </itemize> <tag>Poland</tag> <itemize> <item> <htmlurl url="ftp://SunSITE.icm.edu.pl/pub/FreeBSD" name="ftp://SunSITE.icm.edu.pl/pub/FreeBSD"><newline> Contact: <htmlurl url="mailto:ftp@SunSITE.icm.edu.pl" name="ftp@SunSITE.icm.edu.pl">. </itemize> <tag>Portugal</tag> <itemize> <item> <htmlurl url="ftp://ftp.ua.pt/pub/misc/FreeBSD" name="ftp://ftp.ua.pt/pub/misc/FreeBSD"><newline> Contact: <htmlurl url="mailto:archie@ua.pt" name="archie@ua.pt">. </itemize> <tag>Russia</tag> <itemize> <item> <htmlurl url="ftp://ftp.kiae.su/FreeBSD" name="ftp://ftp.kiae.su/FreeBSD"><newline> Contact: <htmlurl url="mailto:ftp@ftp.kiae.su" name="ftp@ftp.kiae.su">. </itemize> <tag>South Africa</tag> In case of problems, please contact the -<htmlurl url="mailto:hostmaster@za.freebsd.org" name="hostmaster"> +<htmlurl url="mailto:hostmaster@za.FreeBSD.ORG" name="hostmaster"> for this domain. <itemize> <item> -<htmlurl url="ftp://ftp.za.freebsd.org/pub/FreeBSD" - name="ftp://ftp.za.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp.za.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp.za.FreeBSD.ORG/pub/FreeBSD"><newline> <item> -<htmlurl url="ftp://ftp2.za.freebsd.org/pub/FreeBSD" - name="ftp://ftp2.za.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp2.za.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp2.za.FreeBSD.ORG/pub/FreeBSD"><newline> </itemize> <tag>Sweden</tag> <itemize> <item> <htmlurl url="ftp://ftp.luth.se/pub/FreeBSD" name="ftp://ftp.luth.se/pub/FreeBSD"><newline> Contact: <htmlurl url="mailto:ragge@ludd.luth.se" name="ragge@ludd.luth.se">. </itemize> <tag>Taiwan</tag> In case of problems, please contact the -<htmlurl url="mailto:hostmaster@tw.freebsd.org" name="hostmaster"> +<htmlurl url="mailto:hostmaster@tw.FreeBSD.ORG" name="hostmaster"> for this domain. <itemize> <item> -<htmlurl url="ftp://ftp.tw.freebsd.org/pub/FreeBSD" - name="ftp://ftp.tw.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp.tw.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp.tw.FreeBSD.ORG/pub/FreeBSD"><newline> <item> -<htmlurl url="ftp://ftp2.tw.freebsd.org/pub/FreeBSD" - name="ftp://ftp2.tw.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp2.tw.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp2.tw.FreeBSD.ORG/pub/FreeBSD"><newline> <item> -<htmlurl url="ftp://ftp3.tw.freebsd.org/pub/FreeBSD" - name="ftp://ftp3.tw.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp3.tw.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp3.tw.FreeBSD.ORG/pub/FreeBSD"><newline> </itemize> <tag>Thailand</tag> <itemize> <item> <htmlurl url="ftp://ftp.nectec.or.th/pub/FreeBSD" name="ftp://ftp.nectec.or.th/pub/FreeBSD"><newline> Contact: <htmlurl url="mailto:ftpadmin@ftp.nectec.or.th" name="ftpadmin@ftp.nectec.or.th">. </itemize> <tag>USA</tag> In case of problems, please contact the -<htmlurl url="mailto:hostmaster@freebsd.org" name="hostmaster"> +<htmlurl url="mailto:hostmaster@FreeBSD.ORG" name="hostmaster"> for this domain. <itemize> <item> -<htmlurl url="ftp://ftp.freebsd.org/pub/FreeBSD" - name="ftp://ftp.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp.FreeBSD.ORG/pub/FreeBSD"><newline> <item> -<htmlurl url="ftp://ftp2.freebsd.org/pub/FreeBSD" - name="ftp://ftp2.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp2.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp2.FreeBSD.ORG/pub/FreeBSD"><newline> <item> -<htmlurl url="ftp://ftp3.freebsd.org/pub/FreeBSD" - name="ftp://ftp3.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp3.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp3.FreeBSD.ORG/pub/FreeBSD"><newline> <item> -<htmlurl url="ftp://ftp4.freebsd.org/pub/FreeBSD" - name="ftp://ftp4.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp4.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp4.FreeBSD.ORG/pub/FreeBSD"><newline> <item> -<htmlurl url="ftp://ftp5.freebsd.org/pub/FreeBSD" - name="ftp://ftp5.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp5.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp5.FreeBSD.ORG/pub/FreeBSD"><newline> <item> -<htmlurl url="ftp://ftp6.freebsd.org/pub/FreeBSD" - name="ftp://ftp6.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp6.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp6.FreeBSD.ORG/pub/FreeBSD"><newline> </itemize> <tag>UK</tag> <itemize> <item> -<htmlurl url="ftp://ftp.uk.freebsd.org/packages/unix/FreeBSD" - name="ftp://ftp.uk.freebsd.org/packages/unix/FreeBSD"><newline> +<htmlurl url="ftp://ftp.uk.FreeBSD.ORG/packages/unix/FreeBSD" + name="ftp://ftp.uk.FreeBSD.ORG/packages/unix/FreeBSD"><newline> <item> -<htmlurl url="ftp://ftp2.uk.freebsd.org/pub/walnut.creek/FreeBSD" - name="ftp://ftp2.uk.freebsd.org/pub/walnut.creek/FreeBSD"><newline> +<htmlurl url="ftp://ftp2.uk.FreeBSD.ORG/pub/walnut.creek/FreeBSD" + name="ftp://ftp2.uk.FreeBSD.ORG/pub/walnut.creek/FreeBSD"><newline> <item> -<htmlurl url="ftp://ftp3.uk.freebsd.org/pub/BSD/FreeBSD" - name="ftp://ftp3.uk.freebsd.org/pub/BSD/FreeBSD"><newline> +<htmlurl url="ftp://ftp3.uk.FreeBSD.ORG/pub/BSD/FreeBSD" + name="ftp://ftp3.uk.FreeBSD.ORG/pub/BSD/FreeBSD"><newline> </itemize> </descrip> The latest versions of export-restricted code for FreeBSD (2.0C or later) (eBones and secure) are being made available at the following locations. If you are outside the U.S. or Canada, please get secure (DES) and eBones (Kerberos) from one of the following foreign distribution sites: <descrip> <tag>South Africa</tag> -<htmlurl url="mailto:hostmaster@internat.freebsd.org" name="Hostmaster"> +<htmlurl url="mailto:hostmaster@internat.FreeBSD.ORG" name="Hostmaster"> for this domain. <itemize> <item> -<htmlurl url="ftp://ftp.internat.freebsd.org/pub/FreeBSD" - name="ftp://ftp.internat.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp.internat.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp.internat.FreeBSD.ORG/pub/FreeBSD"><newline> <item> -<htmlurl url="ftp://ftp2.internat.freebsd.org/pub/FreeBSD" - name="ftp://ftp2.internat.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp2.internat.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp2.internat.FreeBSD.ORG/pub/FreeBSD"><newline> </itemize> <tag>Brazil</tag> -<htmlurl url="mailto:hostmaster@br.freebsd.org" name="Hostmaster"> +<htmlurl url="mailto:hostmaster@br.FreeBSD.ORG" name="Hostmaster"> for this domain. <itemize> <item> -<htmlurl url="ftp://ftp.br.freebsd.org/pub/FreeBSD" - name="ftp://ftp.br.freebsd.org/pub/FreeBSD"><newline> +<htmlurl url="ftp://ftp.br.FreeBSD.ORG/pub/FreeBSD" + name="ftp://ftp.br.FreeBSD.ORG/pub/FreeBSD"><newline> </itemize> <tag>Finland</tag> <itemize> <item> <htmlurl url="ftp://nic.funet.fi/pub/unix/FreeBSD/eurocrypt" name="ftp://nic.funet.fi/pub/unix/FreeBSD/eurocrypt"><newline> Contact: <htmlurl url="mailto:count@nic.funet.fi" name="count@nic.funet.fi">. </itemize> </descrip> diff --git a/handbook/porting.sgml b/handbook/porting.sgml index c132b5d274..4d2f8453b0 100644 --- a/handbook/porting.sgml +++ b/handbook/porting.sgml @@ -1,1106 +1,1105 @@ -<!-- $Id: porting.sgml,v 1.18 1996-04-10 06:32:42 asami Exp $ --> +<!-- $Id: porting.sgml,v 1.19 1996-05-09 23:04:48 mpp Exp $ --> <!-- The FreeBSD Documentation Project --> <sect1><heading>Porting an existing piece of free software<label id="porting"></heading> <p><em>Contributed by &a.jkh;, &a.gpalmer; and &a.asami;.<newline>19 August 1995.</em> <p>The porting of freely available software, while perhaps not as gratifying as developing your own from scratch, is still a vital part of FreeBSD's growth and of great usefulness to those who wouldn't otherwise know where to turn for it. All ported software is organized into a carefully organized hierarchy know as ``the ports collection''. The collection enables a new user to get a quick and complete overview of what's available for FreeBSD in an easy-to-compile form. It also saves considerable space by not actually containing the the majority of the sources being ported, but merely those differences required for running under FreeBSD. <p>What follows are some guidelines for creating a new port for FreeBSD 2.x . The <tt>${..}</tt> variable names you will see in this document all refer to various user-overrideable defaults used (and documented) by <tt>/usr/share/mk/bsd.port.mk</tt>. Please refer to that file for more details on the inner workings of the ports collection. <sect2> <heading>Before Starting the Port<label id="porting:starting"></heading> <p>Note: Only a fraction of the overrideable variables are mentioned in this document. Most (if not all) are documented at the start of the <tt>bsd.port.mk</tt> file which can be found in <tt>/usr/share/mk</tt>. This file uses a non-standard tab setting. <tt>Emacs</tt> should recognize the setting on loading the file. <tt>vi</tt> or <tt>ex</tt> can be set to using the correct value by typing `<tt>:set tabstop=4</tt>' once the file has been loaded. <p>You may come across code that needs modifications or conditional compilation based upon what version of UNIX it's running under. If you need to make such changes to the code for conditional compilation, make sure you make the changes as general as possible so that we can back-port code to FreeBSD 1.x systems and cross-port to other BSD systems such as 4.4BSD from CSRG, BSD/386, 386BSD and NetBSD. <p>The preferred way to tell 4.3BSD/Reno and newer versions of the BSD code apart is by using the `<tt>BSD</tt>' macro defined in <tt><sys/param.h></tt>. Hopefully that file is already included; if not, add the code: <tscreen><verb> #ifdef _HAVE_PARAM_H #include <sys/param.h> #endif </verb></tscreen> to the proper place in the <tt>.c</tt> file and add <tt>-D_HAVE_PARAM_H</tt> to the <tt>CFLAGS</tt> in the Makefile. Then, you may use: <tscreen><verb> #if (defined(BSD) && (BSD >= 199103)) </verb></tscreen> to detect if the code is being compiled on a 4.3 Net2 code base or newer (e.g. FreeBSD 1.x, 4.3/Reno, NetBSD 0.9, 386BSD, BSD/386 1.1 and below). Use: <tscreen><verb> #if (defined(BSD) && (BSD >= 199306)) </verb></tscreen> to detect if the code is being compiled on a 4.4 code base or newer (e.g. FreeBSD 2.x, 4.4, NetBSD 1.0, BSD/386 2.0 or above). <p>Use sparingly: <itemize> <item><tt>__FreeBSD__</tt> is defined in all versions of FreeBSD. Use it if the change you are making ONLY affects FreeBSD. Porting gotchas like the use of <tt>sys_errlist[]</tt> vs <tt>strerror()</tt> are Berkeleyisms, not FreeBSD changes. <item>In FreeBSD 2.x, <tt>__FreeBSD__</tt> is defined to be <tt>2</tt>. In earlier versions, it's <tt>1</tt>. <item>If you need to tell the difference between a FreeBSD 1.x system and a FreeBSD 2.x system, usually the right answer is to use the <tt>BSD</tt> macros described above. If there actually is a FreeBSD specific change (such as special shared library options when using `<tt>ld</tt>') then it's OK to use <tt>__FreeBSD__</tt> and `<tt>#if __FreeBSD__ > 1</tt>' to detect a FreeBSD 2.x system. If you need more granularity in detecting FreeBSD systems since 2.0-RELEASE you can use the following: <tscreen><verb> #if __FreeBSD__ >= 2 #include <osreldate.h> # if __FreeBSD_version >= 199504 /* 2.0.5+ release specific code here */ # endif #endif </verb></tscreen> <tt>__FreeBSD_version</tt> values: <tscreen><verb> 2.0-RELEASE: 199411 2.1-current's: 199501, 199503 2.0.5-RELEASE: 199504 2.1.0-RELEASE: 199511 2.2-current before 2.1: 199508 2.2-current as 10 Jan 1996: 199512 (will certainly be bumped) </verb></tscreen> The pattern is the year followed by the month. </itemize> <p>In the dozens of ports that have been done, there have only been one or two cases where <tt>__FreeBSD__</tt> should have been used. Just because an earlier port screwed up and used it in the wrong place doesn't mean you should do so too. <sect2> <heading>Quick Porting</heading> <p>This section tells you how to do a quick port. In many cases, it is not enough, but we'll see. <p>First, get the original tarball and put it into <tt>${DISTDIR}</tt>, which defaults to <tt>/usr/ports/distfiles</tt>. <p>Note: The following assumes that the software compiled out-of-the-box, i.e., there was absolutely no change required for the port to work on your FreeBSD box. If you needed to change something, you'll have to refer to the next section too. <sect3> <heading>Writing the Makefile</heading> <p>The minimal <tt>Makefile</tt> would look something like this: <tscreen><verb> # New ports collection makefile for: oneko # Version required: 1.1b # Date created: 5 December 1994 # Whom: asami # - # $Id: porting.sgml,v 1.18 1996-04-10 06:32:42 asami Exp $ + # $Id: porting.sgml,v 1.19 1996-05-09 23:04:48 mpp Exp $ # DISTNAME= oneko-1.1b CATEGORIES+= games MASTER_SITES= ftp://ftp.cs.columbia.edu/archives/X11R5/contrib/ MAINTAINER= asami@FreeBSD.ORG USE_IMAKE= yes .include <bsd.port.mk> </verb></tscreen> <p>See if you can figure it out. Don't worry about the contents of the <tt>$Id$</tt> line, it will be filled in automatically by CVS when the port is imported to our main ports tree. <sect3> <heading>Writing the description files</heading> <p>There are three required description files that are required for any port, whether they actually package or not. They are <tt>COMMENT</tt>, <tt>DESCR</tt>, and <tt>PLIST</tt>, and reside in the <tt>pkg</tt> subdirectory. <sect4> <heading>COMMENT</heading> <p>This is the one-line description of the port. It is recommended to not have the name of the package at the beginning, as in: <tscreen><verb> A cat chasing a mouse all over the screen </verb></tscreen> <sect4> <heading>DESCR</heading> <p>This is a longer description of the port. One to a few paragraphs concisely explaining what the port does is sufficient. Note: This is <em>not</em> a manual nor an in-depth description on how to use or compile the port. In particular, please do not just copy the <tt>README</tt> file here, unless, of course, it's a concise description of the port. <p>It is recommended that you sign the name at the end of this file, as in: <tscreen><verb> This is a port of oneko, in which a cat chases a poor mouse all over the screen. : (etc.) - Satoshi asami@cs.berkeley.edu </verb></tscreen> <sect4> <heading>PLIST</heading> <p>This file lists all the files installed by the port. It is also called the `packing list' because the package is generated by packing the files listed here. The pathnames are relative to the installation prefix (usually <tt>/usr/local</tt> or <tt>/usr/X11R6</tt>). <p>Here is a small example: <tscreen><verb> bin/oneko man/man1/oneko.1.gz lib/X11/app-defaults/Oneko lib/X11/oneko/cat1.xpm lib/X11/oneko/cat2.xpm lib/X11/oneko/mouse.xpm </verb></tscreen> <sect3> <heading>Creating the checksum file</heading> <p>Just type `<tt>make makesum</tt>'. The ports make rules will automatically generate the file <tt>files/md5</tt>. <sect3> <heading>Testing the port</heading> <p>You should make sure that the port rules do exactly what you want it to do, including packaging up the port. Try doing `<tt>make install</tt>', `<tt>make package</tt>' and then `<tt>pkg_delete -d <pkgname></tt>' and see if all the files are correctly deleted. Then do a `<tt>pkg_add <pkgname>.tgz</tt>' and see if everything re-appears and works correctly. <sect3> <heading>Submitting the port</heading> <p>Now that you're happy with your port, the only thing remaining is to put it in the main FreeBSD ports tree and make everybody else happy about it too. To accomplish this, pack the necessary files (everything described in this section -- in particular do <em>not</em> include the original source tarball or the `<tt>work</tt>' subdirectory) into a <tt>.tar.gz</tt> file, stick it in the directory <tscreen><verb> -ftp://ftp.freebsd.org/pub/FreeBSD/incoming/ +ftp://ftp.FreeBSD.ORG/pub/FreeBSD/incoming/ </verb></tscreen> - and send mail to <tt>ports@freebsd.org</tt>. We will take a + and send mail to the &a.ports;. We will take a look, get back to you if necessary, and put it in the tree. Your name will also appear in the list of `Additional FreeBSD contributors' on the FreeBSD Handbook and other files. Isn't that great?!? <tt>:)</tt> <sect2> <heading>Slow Porting</heading> <p>Ok, so it wasn't that simple, and the port required some modifications to get it to work. In this section, we'll explain, step by step, how to modify it to get it to work with the ports paradigm. <sect3> <heading>How things work</heading> <p>First, this is the sequence of events which occurs when the user first types `<tt>make</tt>' in your port's directory, and you may find that having <tt>bsd.port.mk</tt> in another window while you read this really helps to understand it. <p>But don't worry if you don't really understand what <tt>bsd.port.mk</tt> is doing, not many people do... <tt>:></tt> <enum> <item>The fetch target is run. The fetch target is responsible for making sure that the tarball exists locally in <tt>${DISTDIR}</tt>. If fetch cannot find the required files in <tt>${DISTDIR}</tt> it will look up the ftp-URL <tt>${MASTER_SITES}</tt>, which is set in the Makefile. It will then attempt to fetch the named distribution file with <tt>${NCFTP}</tt>, assuming that the requesting site has direct access to the Internet. If that succeeds, it will save the file in <tt>${DISTDIR}</tt> for future use and proceed. <item>The extract target is run. It looks for your ports' distribution file in <tt>${DISTDIR}</tt> (typically a gzip'd tarball) and unpacks it into a temporary subdirectory specified by <tt>${WRKDIR}</tt> (defaults to <tt>work</tt>). <item>The patch target is run. First, any patches defined in <tt>${PATCHFILES}</tt> are applied. Second, if any patches are found in <tt>${PATCHDIR}</tt> (defaults to the <tt>patches</tt> subdirectory), they are applied at this time in alphabetical order. <item>The configure target is run. This can do any one of many different things. <enum> <item>If it exists, <tt>scripts/configure</tt> is run. <item>If <tt>${HAS_CONFIGURE}</tt> or <tt>${GNU_CONFIGURE}</tt> is set, <tt>${WRKSRC}/configure</tt> is run. <item>If <tt>${USE_IMAKE}</tt> is set, <tt>${XMKMF}</tt> (default: `<tt>xmkmf -a</tt>') is run. </enum> <item>The build target is run. This is responsible for descending into the ports' private working directory (<tt>${WRKSRC}</tt>) and building it. If <tt>${USE_GMAKE}</tt> is set, GNU <tt>make</tt> will be used, otherwise the system <tt>make</tt> will be used. </enum> <p>The above are the default actions. In addition, you can define targets `<tt>pre-<something></tt>' or `<tt>post-<something></tt>', or put scripts with those names, in the <tt>scripts</tt> subdirectory, and they will be run before or after the default actions are done. <p>For example, if you have a <tt>post-extract</tt> target defined in your Makefile, and a file <tt>pre-build</tt> in the <tt>scripts</tt> subdirectory, the <tt>post-extract</tt> target will be called after the regular extraction actions, and the <tt>pre-build</tt> script will be executed before the default build rules are done. It is recommended that you use Makefile targets if possible, because it will be easier for someone to figure out what kind of non-default action the port requires. <p>The default actions are done by the <tt>bsd.port.mk</tt> targets `<tt>do-<something></tt>'. For example, the commands to extract a port are in the target `<tt>do-extract</tt>'. If you are not happy with the default target, and you can't fix it by redefining the `<tt>do-<something></tt>' target in your Makefile. <p>Note that the `main' targets (e.g., <tt>extract</tt>, <tt>configure</tt>, etc.) do nothing more than make sure all the stages up to that one is completed and call the real targets or scripts, and they are not intended to be changed. If you want to fix the extraction, fix <tt>do-extract</tt>, but never ever touch <tt>extract</tt>! <p>Now that you understand what goes on when the user types `<tt>make</tt>', let's go through the recommended steps to create the perfect port. <sect3> <heading>Getting the original sources</heading> <p>Get the original sources (normally) as a compressed tarball (<tt><foo>.tar.gz</tt> or <tt><foo>.tar.Z</tt>) and copy it into <tt>${DISTDIR}</tt>. Always use <em>mainstream</em> sources when and where you can. <p>If you can't find a ftp site that is well-connected to the net, or can only find sites that have irritatingly non-standard formats, we can `house' it ourselves by putting it on <tscreen><verb> -ftp://freefall.freebsd.org/pub/FreeBSD/LOCAL_PORTS/ +ftp://freefall.FreeBSD.ORG/pub/FreeBSD/LOCAL_PORTS/ </verb></tscreen> - as the last resort. Send mail to <tt>ports@freebsd.org</tt> + as the last resort. Send mail to the &a.ports if you are not sure what to do. <p>If your port requires some additional `patches' that are available on the Internet, fetch them too and put them in <tt>${DISTDIR}</tt>. Don't worry if they come from site other than where you got the the main source tarball, we have a way to handle these situations (see the description of <tt>${PATCHFILES}</tt> below). <sect3> <heading>Modifying the port</heading> <p>Unpack a copy of the tarball in a private directory and make whatever changes are necessary to get the port to compile properly under the current version of FreeBSD. Keep <em>careful track</em> of everything you do, as you will be automating the process shortly. Everything, including the deletion, addition or modification of files should be doable using an automated script or patch file when your port is finished. <p>If your port requires significant user interaction/customization to compile or install, you should take a look at one of Larry Wall's classic Configure scripts and perhaps do something similar yourself. The goal of the new ports collection is to make each port as `plug-and-play' as possible for the end-user while using a minimum of disk space. <sect3> <heading>Patching</heading> <p>In the preparation of the port, files that have been added or changed can be picked up with a recursive diff for later feeding to patch. This is the easiest kind of change to make as it doesn't involve any mucking around with configuration files. Each set of patches you wish to apply should be collected into a file named `<tt>patch-<xx></tt>' where <tt><xx></tt> denotes the sequence in which the patches will be applied -- these are done in <em>alphabetical order</em>, thus `<tt>aa</tt>' first, `<tt>ab</tt>' second and so on. These files should be stored in <tt>${PATCHDIR}</tt>, from where they will be automatically applied. All patches should be relative to <tt>${WRKSRC}</tt> (generally the directory your port's tarball unpacks itself into, that being where the make is done). To make fixes and upgrades easier you should avoid having more than one patch fix the same file (e.g., patch-aa and patch-ab both changing <tt>${WRKSRC}</tt>/foobar.c). <sect3> <heading>Configuring</heading> <p>Include any additional customization commands to your <tt>configure</tt> script and save it in the `<tt>scripts</tt>' subdirectory. As mentioned above, you can also do this as Makefile targets and/or scripts with the name <tt>pre-configure</tt> or <tt>post-configure</tt>. <sect3> <heading>Handling user input</heading> <p>If your port requires user input to build, configure or install, then set <tt>IS_INTERACTIVE</tt> in your Makefile. This will allow `overnight builds' to skip your port if the user sets the variable <tt>BATCH</tt> in his environment (and if the user sets the variable <tt>INTERACTIVE</tt>, then <em>only</em> those ports requiring interaction are built). <sect2> <heading>Configuring the Makefile</heading> <p>Configuring the Makefile is pretty simple, and again we suggest that you look at existing examples before starting. Consider the following problems in sequence as you design your new Makefile: <sect3> <heading>The original source</heading> <p>Does it live in <tt>${DISTDIR}</tt> as a standard gzip'd tarball? If so, you can go on to the next step. If not, you should look at overriding any of the <tt>${EXTRACT_CMD}</tt>, <tt>${EXTRACT_BEFORE_ARGS}</tt>, <tt>${EXTRACT_AFTER_ARGS}</tt>, <tt>${EXTRACT_SUFX}</tt>, or <tt>${DISTFILE}</tt> variables, depending on how alien a format your port's distribution file is. (The most common case is `<tt>EXTRACT_SUFX=.tar.Z</tt>', when the tarball is condensed by regular compress, not gzip.) <p>In the worst case, you can simply create your own `<tt>do-extract</tt>' target to override the default, though this should be rarely, if ever, necessary. <sect3> <heading>DISTNAME</heading> <p>You should set <tt>${DISTNAME}</tt> to be the base name of your port. The default rules expect the distribution file list (<tt>${DISTFILES}</tt>) to be named <tt>${DISTNAME}${EXTRACT_SUFX}</tt> by default which, if it's a normal tarball, is going to be something like: <tscreen><verb> foozolix-1.0.tar.gz </verb></tscreen> for a setting of `<tt>DISTNAME=foozolix-1.0</tt>'. The default rules also expect the tarball(s) to extract into a subdirectory called <tt>work/${DISTNAME}</tt>, e.g. <tscreen><verb> work/foozolix-1.0/ </verb></tscreen> All this behavior can be overridden, of course, it simply represents the most common time-saving defaults. For a port requiring multiple distribution files, simply set <tt>${DISTFILES}</tt> explicitly. If only a subset of <tt>${DISTFILES}</tt> are actual extractable archives, then set them up in <tt>${EXTRACT_ONLY}</tt>, which will override the <tt>${DISTFILES}</tt> list when it comes to extraction, and the rest will be just left in <tt>${DISTDIR}</tt> for later use. <sect3> <heading>CATEGORIES</heading> <p>When a package is created, it is put under <tt>/usr/ports/packages/All</tt> and links are made from one or more subdirectories of <tt>/usr/ports/packages</tt>. The names of these subdirectories are specified by the variable <tt>${CATEGORIES}</tt>. It is intended to make life easier for the user when he is wading through the pile of packages on the ftp site or the CD-ROM. Please take a look at the existing categories (some of them have different names from subdirectories of <tt>/usr/ports</tt>) and pick the ones that are suitable for your port. If your port truly belongs to something that is different from all the existing ones, you can even create a new category name. <sect3> <heading>MASTER_SITES</heading> <p>If you have a ftp-URL pointing at the the original tarball, record the directory containing the tarball in <tt>${MASTER_SITES}</tt>. This will provide a backup site, as well as a direct pointer to the original source location. Don't forget the trailing slash (<tt>/</tt>)! <p>The make macros will try to use this specification for grabbing the distribution file with <tt>${NCFTP}</tt> if they can't find it already on the system. <p>It is recommended that you put multiple sites on this list, preferably from different continents. This will safeguard against wide-area network problems, and we are even planning to add support for automatically determining the closest master site and fetching from there! <sect3> <heading>PATCHFILES</heading> <p>If your port requires some additional patches that are available by ftp, set <tt>${PATCHFILES}</tt> to the names of the files and <tt>${PATCH_SITES}</tt> to the URL of the directory that contains them (the format is the same as <tt>${MASTER_SITES}</tt>). <p>If the patch is not relative to the top of the source tree (i.e., <tt>${WKRSRC}</tt>) because it contains some extra pathnames, set <tt>${PATCH_DIST_STRIP}</tt> accordingly. For instance, if all the pathnames in the patch has an extra `<tt>foozolix-1.0/</tt>' in front of the filenames, then set `<tt>PATCH_DIST_STRIP=-p1</tt>'. <p>Don't worry if the patches are compressed, they will be decompressed automatically if the filenames end with `<tt>.gz</tt>' or `<tt>.Z</tt>'. <sect3> <heading>MAINTAINER</heading> <p>Set your mail-address here. Please. <tt>:)</tt> <sect3> <heading>Dependencies</heading> <p>Many ports depend on other ports. There are five variables that you can use to ensure that all the required bits will be on the user's machine. <sect4> <heading>LIB_DEPENDS</heading> <p>This variable specifies the shared libraries this port depends on. It is a list of `<tt>lib:dir</tt>' pairs where <tt>lib</tt> is the name of the shared library, and <tt>dir</tt> is the directory in which to find it in case it's not available. For example, <tscreen><verb> LIB_DEPENDS= tcl\\.7\\.:${PORTSDIR}/lang/tcl </verb></tscreen> will check for a shared tcl library with major version 7, and descend into the <tt>lang/tcl</tt> subdirectory of your ports tree to build and install it if it's not found. Note that the <tt>lib</tt> part is just an argument given to `<tt>ldconfig -r | grep</tt>', so periods should be escaped by two backslashes like in the example above. <sect4> <heading>RUN_DEPENDS</heading> <p>This variable specifies executables this port depends on during run-time. It is a list of `<tt>exec:dir</tt>' pairs where <tt>exec</tt> is the name of the executable, and <tt>dir</tt> is the directory in which to find it in case it's not available. For example, <tscreen><verb> RUN_DEPENDS= wish:${PORTSDIR}/x11/tk </verb></tscreen> will check for an executable called `<tt>wish</tt>', and descend into the <tt>x11/tk</tt> subdirectory of your ports tree to build and install it if it's not found. The dependency is checked from within the <tt>install</tt> target. Also, the name of the dependency is put in to the package so that <tt>pkg_add</tt> will automatically install it if it is not on the user's system. <sect4> <heading>BUILD_DEPENDS</heading> <p>This variable specifies executables this port requires to build. Like <tt>RUN_DEPENDS</tt>, it is a list of `<tt>exec:dir</tt>' pairs. For example, <tscreen><verb> BUILD_DEPENDS= unzip:${PORTSDIR}/archivers/unzip </verb></tscreen> will check for an executable called `<tt>unzip</tt>', and descend into the <tt>archivers/unzip</tt> subdirectory of your ports tree to build and install it if it's not found. Note that `build' here means everything from extracting to compilation. The dependency is checked from within the <tt>extract</tt> target. <sect4> <heading>FETCH_DEPENDS</heading> <p>This variable specifies executables this port requires to fetch. Like the previous two, it is a list of `<tt>exec:dir</tt>' pairs. For example, <tscreen><verb> FETCH_DEPENDS= ncftp2:${PORTSDIR}/net/ncftp2 </verb></tscreen> will check for an executable called `<tt>ncftp2</tt>', and descend into the <tt>net/ncftp2</tt> subdirectory of your ports tree to build and install it if it's not found. The dependency is checked from within the <tt>fetch</tt> target. <sect4> <heading>DEPENDS</heading> <p>If there is a dependency that doesn't fall into either of the above four categories, or your port requires to have the source of the other port extracted (i.e., having them installed is not enough), then use this variable. This is just a list of directories, as there is nothing to check, unlike the previous two. <sect3> <heading>Building mechanisms</heading> <p>If your package uses GNU <tt>make</tt>, set `<tt>USE_GMAKE=yes</tt>'. If your package uses GNU <tt>configure</tt>, set `<tt>GNU_CONFIGURE=yes</tt>'. If you want to override the default GNU <tt>configure</tt> arguments from `<tt>--prefix=${PREFIX}</tt>' to something else, set those arguments in <tt>${CONFIGURE_ARGS}</tt>. <p>If your package uses <tt>imake</tt> (e.g. is an X application that has an <tt>Imakefile</tt>), then set `<tt>USE_IMAKE=yes</tt>'. This will cause the configure stage to automatically do an <tt>xmkmf -a</tt>. If the `<tt>-a</tt>' flag is a problem for your port, set `<tt>XMKMF=xmkmf</tt>'. <p>If your port's source Makefile has something else than `<tt>all</tt>' as the main build target, set <tt>${ALL_TARGET}</tt> accordingly. Same goes for `<tt>install</tt>' and <tt>${INSTALL_TARGET}</tt>. <sect3> <heading>NO_INSTALL_MANPAGES</heading> <p>If the port uses imake but doesn't understand the `<tt>install.man</tt>' target, `<tt>NO_INSTALL_MANPAGES=yes</tt>' should be set. In addition, the author of the original port should be shot. <sect2> <heading>Licensing Problems</heading> <p>Some software packages have restrictive licenses or are in violation to the law (PKP's patent on public key crypto, ITAR (export of crypto software) to name just two of them). What we can do with them vary a lot, depending on the exact wordings of the respective licenses. <p>Note that it is your responsibility as a porter to read the licensing terms of the software and make sure that the FreeBSD project won't held accountable of violating them by redistributing the source or compiled binaries either via ftp - or CD-ROM. If in doubt, please contact - <tt>ports@freebsd.org</tt>. + or CD-ROM. If in doubt, please contact the &a.ports;. <p>We usually get around this problem by setting <tt>${NO_PACKAGE}</tt> in the Makefile, and not putting the distfile up for ftp. However, for most cases, you should at least be able to make a port, so don't let the license scare you away! <p>Note: The GNU General Public License (GPL), both version 1 and 2, shouldn't be a problem for ports. <p>Note: If you are a committer, make sure you update the <tt>ports/LEGAL</tt> file too. <sect2> <heading>* Upgrading</heading> <p>This section is still under construction, sorry. <sect2> <heading>Do's and Dont's</heading> <p>Here's a list of common do's and dont's that you encounter during the porting process. <sect3> <heading>WRKDIR</heading> <p>Don't leave anything valuable lying around in the `<tt>work</tt>' subdirectory, `<tt>make clean</tt>' will <em>nuke</em> it completely! If you need auxiliary files that aren't scripts or patches, put them in the subdirectory `<tt>files</tt>' and use the <tt>post-extract</tt> target to copy them to the `<tt>work</tt>' subdirectory. <sect3> <heading>Package information</heading> <p>Do install package information, i.e., the three files in <tt>pkg</tt>. Note that these files are not used only for packaging anymore, and are <em>mandatory</em> now, even if <tt>${NO_PACKAGE}</tt> is set. <sect3> <heading>Compress manpages, strip binaries</heading> <p>Do compress manpages and strip binaries. If the original source already does that, fine; otherwise, you can add a <tt>post-install</tt> rule to do it yourself. Make sure that you check the variable <tt>NOMANCOMPRESS</tt> that the user can set in <tt>/etc/make.conf</tt> to disable man page compression. Here's an example: <tscreen><verb> post-install: strip ${PREFIX}/bin/xdl .if !defined(NOMANCOMPRESS) gzip -9nf ${PREFIX}/man/man1/xdl.1 .endif </verb></tscreen> <p>Use the <tt>file</tt> command on the installed executable to check whether the binary is stripped or not. If it doesn't say `not stripped', it is stripped. <sect3> <heading>Install additional documentation</heading> <p>If your software has some documentation other than the standard man and info pages that you think is useful for the user, install it under <tt>${PREFIX}/share/doc</tt>. This can be done, like the previous item, in the <tt>post-install</tt> target. <p>Create a new directory for your port. The directory name should reflect what the port is. This usually means <tt>${PKGNAME}</tt> minus the version part. However, if you think the user might want different versions of the port to be installed at the same time (e.g., tcl/tk), you can use the whole <tt>${PKGNAME}</tt>. <p>Make the installation dependent to the variable <tt>NOPORTDOCS</tt> so that users can disable it in <tt>/etc/make.conf</tt>, like this: <tscreen><verb> post-install: .if !defined(NOPORTDOCS) mkdir -p ${PREFIX}/share/doc/xv cp ${WRKSRC}/docs/xvdocs.ps ${PREFIX}/share/doc/xv .endif </verb></tscreen> <p>Don't forget to add them to <tt>pkg/PLIST</tt> too! (Don't worry about <tt>NOPORTDOCS</tt> here; there is currently no way for the packages to read variables from <tt>/etc/make.conf</tt>.) <sect3> <heading>DIST_SUBDIR</heading> <p>Don't let your port clutter <tt>/usr/ports/distfiles</tt>. If your port requires a lot of files (including patchfiles) to be fetched, or contains a file that has a name that might conflict with other ports (e.g., `Makefile'), set <tt>${DIST_SUBDIR}</tt> to the name of the port (<tt>${PKGNAME}</tt> without the version part should work fine). This will change <tt>${DISTDIR}</tt> from the default <tt>/usr/ports/distfiles</tt> to <tt>/usr/ports/distfiles/${DIST_SUBDIR}</tt>, and in effect puts everything that is required for your port into that subdirectory. <p>It will also look at the subdirectory with the same name on the backup master site at <tt>ftp.freebsd.org</tt>. (Setting <tt>${DISTDIR}</tt> explicitly in your Makefile will not accomplish this, so please use <tt>${DIST_SUBDIR}</tt>.) <p>Note this does not affect the <tt>${MASTER_SITES}</tt> you define in your Makefile. <sect3> <heading>Custom utilities</heading> <p>Don't rely on custom utilities in your local configure script or anything -- they may not be there on the user's system! If you really need something else to be installed before you can work, detect this from your configure script, print a helpful message and exit with a non-zero status! At least you'll have given the user some idea of what's needed. If the custom utility or package is actually part of the ports tree, this should be dealt by the dependency mechanism of ports. <p>Actually, if this utility is not part of the ports tree you should probably make a port of this utility (this is how many of the ports made it into the tree!). Depending on something that is not part of the main FreeBSD distribution or the ports tree is a bad idea, and the user should be able to go to any subdirectory of <tt>/usr/ports</tt> and type `<tt>make</tt>' and have that port, as well as everything it requires, built automatically. <sect3> <heading>Feedback</heading> <p>Do send applicable changes/patches to the original author/maintainer for inclusion in next release of the code. This will only make your job that much easier for the next release. <sect3> <heading>RCS strings</heading> <p>Don't put RCS strings in patches. CVS will mangle them when we put the files into the ports tree, and when we check them out again, they will come out different and the patch will fail. RCS strings are surrounded by dollar (`<tt>$</tt>') signs, and typically start with `<tt>$Id</tt>' or `<tt>$RCS</tt>'. <sect3> <heading>Recursive diff</heading> <p>Using the recurse (`<tt>-r</tt>') option to <tt>diff</tt> to generate patches is fine, but please take a look at the resulting patches to make sure you don't have any unnecessary junk in there. In particular, diffs between two backup files, Makefiles when the port uses imake or GNU configure, etc., are unnecessary and should be deleted. Also, if you had to delete a file, then you can do it in the <tt>post-extract</tt> target rather than as part of the patch. <sect3> <heading>PREFIX</heading> <p>Do try to make your port install relative to <tt>${PREFIX}</tt>. (The value of this variable will be set to <tt>${LOCALBASE}</tt> (default <tt>/usr/local</tt>), unless <tt>${USE_IMAKE}</tt> or <tt>${USE_X11}</tt> is set, in which case it will be <tt>${X11BASE}</tt> (default <tt>/usr/X11R6</tt>).) <p>Not hard-coding `<tt>/usr/local</tt>' or `<tt>/usr/X11R6</tt>' anywhere in the source will make the port much more flexible and able to cater to the needs of other sites. For X ports that use imake, this is automatic; otherwise, this can often be done by simply replacing the occurrences of `<tt>/usr/local</tt>' (or `<tt>/usr/X11R6</tt>' for X ports that don't use imake) in the various scripts/Makefiles in the port to read `<tt>${PREFIX}</tt>', as this variable is automatically passed down to every stage of the build and install processes. <p>The variable <tt>${PREFIX}</tt> can be reassigned in your Makefile or in the user's environment. However, it is strongly discouraged for individual ports to set this variable explicitly in the Makefiles. (If your port is an X port but doesn't use imake, set <tt>USE_X11=yes</tt>; this is quite different from setting <tt>PREFIX=/usr/X11R6</tt>.) <p>Also, refer to programs/files from other ports with the variables mentioned above, not explicit pathnames. For instance, if your port requires a macro <tt>PAGER</tt> to be the full pathname of <tt>less</tt>, use the compiler flag: `<tt>-DPAGER=\"${PREFIX}/bin/less\"</tt>' (or `<tt>-DPAGER=\"${LOCALBASE}/bin/less\"</tt>' if this is an X port), instead of `<tt>-DPAGER=\"/usr/local/bin/less\"</tt>'. This way it will have a better chance of working if the system administrator has moved the whole `/usr/local' tree somewhere else. <sect3> <heading>Subdirectories</heading> <p>Try to let the port put things in the right subdirectories of <tt>${PREFIX}</tt>. Some ports lump everything and put it in the subdirectory with the port's name, which is incorrect. Also, many ports put everything except binaries, header files and manual pages in the a subdirectory of `<tt>lib</tt>', which does not bode well with the BSD paradigm. Many of the files should me moved to one of the following: `<tt>etc</tt>' (setup/configuration files), `<tt>libexec</tt>' (executables started internally), `<tt>sbin</tt>' (executables for superusers/managers) or `<tt>share</tt>' (architecture independent files). See <tt>hier(7)</tt> for details, the rule governing <tt>/usr</tt> pretty much applies to <tt>/usr/local</tt> too. <sect3> <heading>ldconfig</heading> <p>If your port installs a shared library, add a <tt>post-install</tt> target to your Makefile that runs `<tt>/sbin/ldconfig -m</tt>' on the directory where the new library is installed (usually <tt>${PREFIX}/lib</tt>) to register it into the shared library cache. <p>Also, add an <tt>@exec</tt> line to your <tt>pkg/PLIST</tt> file so that a user who installed the package can start using the shared library immediately. This line should immediately follow the line for the shared library itself, as in: <tscreen><verb> lib/libtcl.so.7.3 @exec /sbin/ldconfig -m %D/lib </verb></tscreen> <p>Note: the `-m' option is new since 2.0.5 and 2.1.0-950726-SNAP, so don't be alarmed if it doesn't work on your machine. <p>Never, ever, <em>ever</em> add a line that says `<tt>ldconfig</tt>' without any arguments to your Makefile or pkg/PLIST. This will reset the shared library cache to the contents of <tt>/usr/lib</tt> only, and will royally screw up the user's machine ("Help, xinit doesn't run anymore after I install this port!"). Anybody who does this will be shot and cut into 65,536 pieces by a rusty knife and have his liver chopped out by a bunch of crows and will eternally rot to death in the deepest bowels of hell (not necessarily in that order).... <sect3> <heading>If you are stuck....</heading> <p>Do look at existing examples and the <tt>bsd.port.mk</tt> file before asking us questions! <tt>;)</tt> <p>Do ask us questions if you have any trouble! Don't just beat your head against a wall! <tt>:)</tt> <sect2> <heading>A Sample Makefile</heading> <p>Here is a sample Makefile that you can use to create a new port. Make sure you remove all the extra comments (ones between brackets)! <p>It is recommended that you follow this format (ordering of variables, etc.). Not all of the existing Makefiles are in this format (mostly old ones), but we are trying to uniformize how they look. This format is designed so that the most important information is easy to locate. <tscreen><verb> [the header...just to make it easier for us to identify the ports] # New ports collection makefile for: xdvi # Version required: 2.2 [things like "1.5alpha" are fine here too] # Date created: 26 May 1995 [this is the person who did the original port to FreeBSD, in particular, the person who wrote this Makefile] # Whom: Satoshi Asami <asami@FreeBSD.ORG> # - # $Id: porting.sgml,v 1.18 1996-04-10 06:32:42 asami Exp $ + # $Id: porting.sgml,v 1.19 1996-05-09 23:04:48 mpp Exp $ [ ^^^^ don't worry about this...it will be automatically filled in by CVS when it is committed to our repository] # [section to describe the package itself and main ftp site - DISTNAME is always first, followed by PKGNAME (if necessary), CATEGORIES, and then MASTER_SITES, and optionally EXTRACT_SUFX or DISTFILES] DISTNAME= xdvi PKGNAME= xdvi-pl18 CATEGORIES+= printing [don't forget the trailing slash ("/")!] MASTER_SITES= ftp://crl.dec.com/pub/X11/contrib/applications/ [set this if the source is not in the standard ".tar.gz" form] EXTRACT_SUFX= .tar.Z [section for distributed patches -- can be empty] PATCH_SITES= ftp://ftp.sra.co.jp/pub/X11/japanese/ PATCHFILES= xdvi-18.patch1.gz xdvi-18.patch2.gz [maintainer; *mandatory*! This is the person (preferably with commit privileges) who a user can contact for questions and bug reports - this person should be the porter or someone who can forward questions to the original porter reasonably promptly. If you really don't want to have your address here, set it to "ports@FreeBSD.ORG".] MAINTAINER= asami@FreeBSD.ORG [dependencies -- can be empty] RUN_DEPENDS= gs:${PORTSDIR}/print/ghostscript LIB_DEPENDS= Xpm\\.4\\.:${PORTSDIR}/graphics/xpm [this section is for other standard bsd.port.mk variables that don't belong to any of the above] [If it extracts to a directory other than ${DISTNAME}...] WRKSRC= ${WRKDIR}/xdvi-new [If it asks questions during configure, build, install...] IS_INTERACTIVE= yes [If it requires "configure" in the distributed source directory to be run...] HAS_CONFIGURE= yes [If it requires GNU make, not /usr/bin/make, to build...] USE_GMAKE= yes [If it is an X application and requires "xmkmf -a" to be run...] USE_IMAKE= yes [et cetera.] [non-standard variables to be used in the rules below] MY_FAVORITE_RESPONSE= "yeah, right" [then the special rules, in the order they are called] pre-fetch: i go fetch something, yeah post-patch: i need to do something after patch, great pre-install: and then some more stuff before installing, wow [and then the epilogue] .include <bsd.port.mk> </verb></tscreen> <sect2> <heading>Package Names</heading> <p>The following are the conventions you should follow in naming your packages. This is to have our package directory easy to scan, as there are already lots and lots of packages and users are going to turn away if they hurt their eyes! <p>If your <tt>${DISTNAME}</tt> does not look like `<tt><name>-<version.string.numbers></tt>', set <tt>${PKGNAME}</tt> to something in that format. <enum> <item>The `<tt><name></tt>' part should be all lowercases, except for a really large package (with lots of programs in it). Things like XFree86 (yes there really is a package of it, check it out) and ImageMagick fall into this category. Otherwise, convert the name (or at least the first letter) to lowercase. If the software in question really is called that way, you can have numbers, hyphens and underscores in the name too. <item>The version string should be a period-separated list of integers and single lowercase alphabets. The only exception is the string `pl' (meaning `patchlevel'), which can be used <em>only</em> when there are no major and minor version numbers in the software. </enum> <p>Here are some (real) examples on how to convert a <tt>${DISTNAME}</tt> into a suitable <tt>${PKGNAME}</tt>: <tscreen><verb> DISTNAME PKGNAME Reason mule-2.2.2 mule-2.2.2 no prob at all XFree86-3.1.2 XFree86-3.1.2 ditto EmiClock-1.0.2 emiclock-1.0.2 no uppercase names for single programs gmod1.4 gmod-1.4 need hyphen after `<name>' xmris.4.02 xmris-4.02 ditto rdist-1.3alpha rdist-1.3a no strings like `alpha' allowed es-0.9-beta1 es-0.9b1 ditto v3.3beta021.src jpeg-5a what the heck was that anyway? ;) tvtwm tvtwm-pl11 version string always required piewm piewm-1.0 ditto xvgr-2.10pl1 xvgr-2.10.1 `pl' allowed only when no maj/minor numbers </verb></tscreen> <p>If there is absolutely no trace of version information in the original source and it is unlikely that the original author will ever release another version, just set the version string to `1.0' (like the piewm example above). Otherwise, ask the original author or use the date string (`yy.mm.dd') as the version. <sect2> <heading>That's It, Folks!</heading> <p>Boy, this sure was a long tutorial, wasn't it? Thanks for following us to here, really. <p>Well, now that you know how to do a port, let's go at it and convert everything in the world into ports! That is the easiest way to start contributing to the FreeBSD Project! <tt>:)</tt> diff --git a/handbook/ports.sgml b/handbook/ports.sgml index 483052f0c2..2a6aa9fe2e 100644 --- a/handbook/ports.sgml +++ b/handbook/ports.sgml @@ -1,237 +1,237 @@ -<!-- $Id: ports.sgml,v 1.8 1995-12-04 17:58:45 jfieber Exp $ --> +<!-- $Id: ports.sgml,v 1.9 1996-05-09 23:04:49 mpp Exp $ --> <!-- The FreeBSD Documentation Project --> <sect><heading>The Ports collection<label id="ports"></heading> <p><em>Contributed by &a.gpalmer; and &a.jkh;.</em> Unfortunately, there are more variations of UN*X than most people know of, and hence not all software for UN*X available on the Internet will work on all versions of UN*X (in fact, I can guarantee it!). Hence, some software needs modifications to work under some UN*Xs. The process of making those modifications is known as ``porting'' and the result known as a ``port'' (not to be confused with the sockets on the back of your computer!). <sect1><heading>What is the FreeBSD Ports Collection?</heading> <p> When 2.0 was released, the FreeBSD Project decided to attempt to automate the process of ``porting'' such software to FreeBSD, and the result is the Ports Collection. The general idea was that a combination of various programming tools already available in the base FreeBSD installation would allow you to simply type `make' for a given port and have the underlying ports mechanism automatically fetch the port from a FreeBSD mirror site, apply any special configuration knowledge to it and then build it to result in a fully working version of the program. The ports collection itself normally doesn't have any of the original source code necessary for the compilation in the tree, just those shell scripts, Makefiles and source code ``diffs'' that are necessary to configure and compile the program under FreeBSD. This keeps the entire system down to a manageable size, with the current system having over 300 ports in the master source tree and yet taking up less than twenty megabytes. <sect1><heading>How does the system compile with no source code?</heading> <p> The Makefile for a port automatically looks in a central location on your system (usually /usr/ports/distfiles, though this value can be customized) for the associated set of original distribution files that have been ``ported''. Those not found locally are searched for wherever they're generally provided on the Internet. If you have a CDROM distribution of FreeBSD then you've already got them available on your CD for ease of use. See <ref id="ports:cd" name="Compiling ports from CD"> if you have such a CDROM distribution, otherwise skip to <ref id="ports:inet" name="Compiling ports using an Internet connection">. <sect1><heading>Compiling ports from CDROM<label id="ports:cd"></heading> <p>The ports collection is easy to use from CDROM, and all you need to do is to create a "link tree" to it using the <tt>lndir(1)</tt> command that comes with the <em>XFree86</em> distribution. Find a location with some free space and create a directory there, and make a symbolic link from <tt>/usr/ports</tt> to that directory. Then invoke the <tt>lndir(1)</tt> command with the full pathname of the ``ports'' directory on the CDROM as an argument (this might be, for example, something like: <tt>lndir /cdrom/ports</tt>). Then you can build ports directly off the CDROM by building them in the link tree you've created. Note that there are some ports for which we can't provide the original source in the CDROM due to licensing limitations. In that case, you'll need to look at the next section (<ref id="ports:inet" name="Compiling ports using an Internet connection">). <sect1><heading>Compiling ports using an Internet connection<label id="ports:inet"></heading> <p> The ports collection can also use an auto-fetch system to keep your ports collection source tree up to date, updating the central ``distfiles'' version for you the next time you compile the port. Of course, this assumes you have a permanent network link or don't mind heavy usage of your telephone. If you don't want heavy network usage when you compile your ports tree, you can pre-fetch the necessary tarballs beforehand and put them into /usr/ports/distfiles by hand. A good way to see what files a port is going to need is to cd to that ports' directory and do a <tt>make fetch-list</tt> to see what it does. The output of <tt>make fetch-list</tt> can also be used as a shell script to fetch the ports' tarballs at a well-connected machine. You can also chose to get the source files either from the master FTP site as defined in the relevant Makefile (in the MASTER_SITES line), or some FreeBSD mirror site also carrying a set of distfiles, as does the master FTP site on ftp.FreeBSD.org (aka ftp.cdrom.com) in the directory <tt>/pub/FreeBSD/distfiles</tt>. Note that the files in that directory are not guaranteed to be kept up to date - this is a volunteer project! We can't make any guarantees about the mirror sites either - they are obviously under independent control and don't even have to mirror the distfiles directory. If you have a non-permanent link, you can fetch all the distfiles by going to the top of the tree and typing ``make fetch''. <sect1><heading>It doesn't work?!</heading> <p>Oh. You can do one of four (4) things : <enum> <item> Fix it yourself. Technical details can be found in <ref id="porting" name="Porting applications">. <item> Gripe. This is done by e-mail *ONLY*! The people at Walnut Creek are in no way responsible for the functionality (or lack thereof) of the FreeBSD system as a whole, and especially the ports system, which is mainly contributed by 3rd parties. (If you don't believe me, check the catalogue, especially the line saying "We cannot offer tech-support on this product") The e-mail address is Ports@FreeBSD.org. Please include details of the port, where you got both the port source & distfile(s) from, and what the error was. Note: At time of writing, lang/Sather doesn't seem to work on Pentium machines due to the Intel Curse (aka the Floating Point Division Bug). Please don't tell us about this - gripe to Intel instead - it's their bug! <item> Forget it. This is the easiest for most - very few of the programs in ports can be classified as `essential'! <item> Grab the pre-compiled package from a ftp server. The ``master'' package collection is in: ftp://ftp.FreeBSD.org/pub/FreeBSD/packages/ though check your local mirror first, please! These are more likely to work (on the whole) than trying to compile from source, and a lot faster! Use the <tt>pkg_add(1)</tt> or <tt>pkg_manage(1)</tt> program to install them to your system. </enum> <sect1><heading>I've ported a program and I want to make a port out of it. What now?</heading> <p> See the <ref id="porting:starting" name="guidelines"> that contain details of the procedure and structure involved. <sect1><heading>I've got a good port, what now?</heading> <p>Upload the fixed version to <tt>ftp://freefall.cdrom.com/pub/incoming</tt> or <tt>ftp://ftp.FreeBSD.org/pub/FreeBSD/incoming</tt> and send e-mail to -ports@FreeBSD.org with the filename and details. Someone on the +the &a.ports with the filename and details. Someone on the all-volunteer `ports committee' will (hopefully) look it over and commit it to the ports collection if they like the looks of it. <sect1><heading>I want to leave the compile going overnight, but some ports don't like this.</heading> <p> There is a way around this. Before starting the compilation, type: <verb> setenv BATCH yes # (if you use csh/tcsh) or BATCH=yes; export BATCH # (for sh/bash) </verb> This should skip ports which need user interaction to build. To compile those ports left out by doing the above, using a different login shell (or unsetting the above BATCH variable), set the INTERACTIVE variable instead (you can use the same statements as above except replace ``BATCH'' with ``INTERACTIVE'') and re-run make. This should now compile only those ports which will definitely ask for user interaction. <sect1><heading>The ports collection is weak. What can I do to help?</heading> <p> First read the bsd.port.mk file (which may be found in /usr/share/mk/) and the associated bsd.port.subdir.mk file. A lot of the weirdness can be explained properly in there (most of the current weirdness is due to the lack of assumptions about anything, which is necessary due to the generic nature of these files). Also check that you have an up-to-date copy, as the file can change from minute to minute. The most up-to-date copy can be found in: - <url url="ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current/src/share/mk"> + <url url="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/FreeBSD-current/src/share/mk"> If you find that you still need to go in there and alter things, by all means do so, and then send the diffs to ports@FreeBSD.org if you'd like them to be a part of the default distribution. Please also remember that any changes must respect backwards-compatibility with any and all older Makefiles, unless you want a real nightmare of /usr/ports munging ahead of you! Large scale changes will generally not be warmly welcomed unless all the existing makefiles work without alteration. Sorry! <sect1><heading>This FAQ is weak. What can I do?</heading> <p> Send changes to ports@FreeBSD.org. Changes are most welcome! This FAQ is also very green and should be considered no more than a `good start' for now. Authors? You can come out of hiding any time now! :-) <sect1><heading>How do I get more information on all the ports?</heading> <p> One good method is to cd to the top of the ports tree (say /usr/ports) and type: <verb> make print-index </verb> This will print a summary of all ports in the tree. <sect1><heading>I've heard of a new checksum system. What is this for?</heading> <p> For various reasons, when using FTP over the Internet to obtain the source code, you may not always end up with the same copy of the code that the original porter worked from, and this can lead to problems. So a simple checksumming system has been employed to try and highlight problems in this area. To check the entire system, go to the top of the ports tree (defaults to /usr/ports) and type <verb> make checksum </verb> This will give a report on the validity of the files you have FTP'd. If some are missing, the system will attempt to retrieve them before running the checksum routine. The same technique can be applied to a single port. The system will complain if there is no pre-computed checksum available for that port. Not all ports currently have checksums, but this should be cured soon. Some older versions of the system don't recognize the ``checksum'' target. In that case, try the command <verb> make check-md5 </verb> (``check-md5'' was the pre-cursor to the ``checksum'' target). If neither work, get the latest copies of bsd.port.mk and bsd.port.subdir.mk from - <url url="ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current/src/share/mk"> + <url url="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/FreeBSD-current/src/share/mk"> and install them in /usr/share/mk. This will get you the latest version of the ports system. diff --git a/handbook/submitters.sgml b/handbook/submitters.sgml index af0c8f9169..8c5cab3920 100644 --- a/handbook/submitters.sgml +++ b/handbook/submitters.sgml @@ -1,525 +1,507 @@ -<!-- $Id: submitters.sgml,v 1.24 1996-03-30 19:46:37 jkh Exp $ --> +<!-- $Id: submitters.sgml,v 1.25 1996-05-09 23:04:50 mpp Exp $ --> <!-- The FreeBSD Documentation Project --> <chapt><heading>Contributing to FreeBSD<label id="submitters"></heading> <p><em>Contributed by &a.jkh;.</em> <p>So you want to contribute something to FreeBSD? That's great! We can always use the help, and FreeBSD is one of those systems that <em>relies</em> on the contributions of its user base in order to survive. Your contributions are not only appreciated, they're vital to FreeBSD's continued growth! <p>Contrary to what some people might also have you believe, you don't need to be a hot-shot programmer or a close personal friend of the FreeBSD core team in order to have your contributions accepted. The FreeBSD Project's development is done by a large and growing number of international contributors who's ages and areas of technical expertise vary greatly, and there is always more work to be done than there are people available to do it. <p>Since the FreeBSD project is responsible for an entire operating system environment (and its installation) rather than just a kernel or a few scattered utilities, our "TODO" list also spans a very wide range of tasks, from documentation, beta testing and presentation to highly specialized types of kernel development. No matter what your skill level, there's almost certainly something you can do to help the project! <p>Commercial entities engaged in FreeBSD-related enterprises are also encouraged to contact us. Need a special extension to make your product work? You'll find us receptive to your requests, given that they aren't too outlandish. Working on a value-added product? Please let us know! We may be able to work cooperatively on some aspect of it. The free software world is challenging a lot of existing assumptions about how software is developed, sold, and maintained throughout its life cycle, and we urge you to at least give it a second look. <sect><heading>What's needed</heading> <p>The following list of tasks and sub-projects represents something of an amalgam of the various core team TODO lists and user requests we've collected over the last couple of months. Where possible, tasks have been ranked by degree of urgency. If you're interested in working on one of the tasks you see here, send mail to the coordinator listed by clicking on their names. If no coordinator has been appointed, maybe you'd like to volunteer? <sect1><heading>High priority tasks</heading> <p>The following tasks are considered to be urgent, usually because they represent something that is badly broken or sorely needed: <enum> <item>3-stage boot issues. Overall coordination: -<tt><htmlurl url="mailto:hackers@freebsd.org" name="Hackers"></tt> +&a.hackers <p><itemize> <item>Autodetect memory over 64MB properly. <item>Move userconfig (-c) into 3rd stage boot. <item>Do WinNT compatible drive tagging so that the 3rd stage can provide an accurate mapping of BIOS geometries for disks. </itemize> <item>Filesystem problems. Overall coordination: -<tt><htmlurl url="mailto:freebsd-fs@freebsd.org" name="File Systems Group"></tt>. +&a.fs <itemize> <item>Fix the MSDOS file system. -<item>Clean up and document the nullfs filesystem code. Coordinator: <tt><htmlurl -url="mailto:gibbs@freebsd.org" name="Justin Gibbs"></tt> -<item>Fix the union file system. Coordinator: <tt><htmlurl -url="mailto:dyson@freebsd.org" name="John Dyson"></tt> -<item>Fix the LFS file system. Coordinator: <tt><htmlurl -url="mailto:dyson@freebsd.org" name="John Dyson"></tt> +<item>Clean up and document the nullfs filesystem code. Coordinator: &a.gibbs +<item>Fix the union file system. Coordinator: &a.dyson +<item>Fix the LFS file system. Coordinator: &a.dyson </itemize> -<item>Implement kernel and user vm86 support. Coordinator: <tt><htmlurl -url="mailto:hackers@freebsd.org" name="Hackers"></tt>. -<item>Implement Int13 vm86 disk driver. Coordinator: <tt><htmlurl -url="mailto:hackers@freebsd.org" name="Hackers"></tt>. -<item>SCSI driver issues. Overall coordination: -<tt><htmlurl url="mailto:freebsd-scsi@freebsd.org" name="SCSI Group"></tt>. +<item>Implement kernel and user vm86 support. Coordinator: &a.hackers +<item>Implement Int13 vm86 disk driver. Coordinator: &a.hackers +<item>SCSI driver issues. Overall coordination: &a.hackers <p><itemize> <item>Support tagged queuing generically. Requires a rewrite of how we do our command queing, but we need this anyway to for prioritized I/O (CD-R writers/scanners). <item>Better error handling (Busy status and retries). <item>Merged Scatter-Gather list creation code. </itemize> <item>Kernel issues. Overall coordination: -<tt><htmlurl url="mailto:freebsd-hackers@freebsd.org" name="Hackers"></tt>. +&a.hackers <p><itemize> <item>Complete the eisaconf conversion of all existing drivers. <item>Change all interrupt routines to take a (void *) instead of using unit numbers. <item>Merge EISA/PCI/ISA interrupt registration code. <item>Split PCI/EISA/ISA probes out from drivers like bt742a.c (WIP) -<item>Fix the syscons ALT-TAB/vt switching hangs. Coordinator: <tt><htmlurl -url="mailto:sos@freebsd.org" name="Soren Schmidt"></tt>. +<item>Fix the syscons ALT-TAB/vt switching hangs. Coordinator: &a.sos <item>Mouse support for syscons. <item>Merged keyboard code for all console drivers. <item>Rewrite the Intel Etherexpress 16 driver. <item>Merge the 3c509 and 3c590 drivers (essentially provide a PCI probe for ep.c). <item>Support Adaptec 3985 (first as a simple 3 channel SCSI card) -Coordinator: <tt><htmlurl -url="mailto:gibbs@freebsd.org" name="Justin Gibbs"></tt>. -<item>Support Advansys SCSI controller products. Coordinator: <tt><htmlurl -url="mailto:gibbs@freebsd.org" name="Justin Gibbs"></tt>. +Coordinator: &a.gibbs +<item>Support Advansys SCSI controller products. Coordinator: &a.gibbs </itemize> </enum> <sect1><heading>Medium priority tasks</heading> <p>The following tasks need to be done, but not with any particular urgency: <enum> <item>DOS emulator (for DOS executables) Coordinator: <tt><htmlurl url="mailto:jr@jrw.org" name="J.R. Westmoreland"></tt> <item>Port AFS (Andrew File System) to FreeBSD Coordinator: <tt><htmlurl url="mailto:ajones@ctron.com" name="Alexander Seth Jones"></tt> <item>MCA support? This should be finalized one way or the other. <item>Full LKM based driver support/Configuration Manager. <p><itemize> <item>Devise a way to do all LKM registration without ld. This means some kind of symbol table in the kernel. <item>Write a configuration manager (in the 3rd stage boot?) that probes your hardware in a sane manner, keeps only the LKMs required for your hardware, etc. </itemize> -<item>PCMCIA/PCCARD. Coordinator: <tt><htmlurl -url="mailto:phk@freebsd.org" name="Poul-Henning Kamp"></tt> +<item>PCMCIA/PCCARD. Coordinator: &a.phk <itemize> <item>Reliable operation of the pcic driver. <item>Recognizer and handler for sio.c <item>Recognizer and handler for ed.c <item>Recognizer and handler for ep.c <item>User-mode recognizer and handler. </itemize> -<item>Advanced Power Management. Coordinator: <tt><htmlurl -url="mailto:phk@freebsd.org" name="Poul-Henning Kamp"></tt> +<item>Advanced Power Management. Coordinator: &a.phk <itemize> <item>APM sub-driver. <item>IDE/ATA disk sub-driver. <item>syscons/pcvt sub-driver. </itemize> </enum> <sect1><heading>Low priority tasks</heading> <p>The following tasks are purely cosmetic or represent such an investment of work that it's not likely that anyone will get them done anytime soon: <p>The first 20 items are from Terry Lambert <terry@lambert.org> <enum> <item>Ability to make BIOS calls from protected mode using V86 mode on the processor and return the results via a mapped interrupt IPC mechanism to the protected mode caller. <item>Drivers built into the kernel that use the BIOS call mechanism to allow them to be independent of the actual underlying hardware the same way that DOS is independent of the underlying hardware. This includes NetWork and ASPI drivers loaded in DOS prior to BSD being loaded by a DOS-based loader program, which means potential polling, which means DOS-not-busy interrupt generation for V86 machines by the protected mode kernel. <item>An image format that allows tagging of such drivers data and text areas in the default kernel executable so that that portion of the kernel address space may be recovered at a later time, after hardware specific protected mode drivers have been loaded and activated. This includes separation of BIOS based drivers from each other, since it is better to run with a BIOS based driver in all cases than to not run at all. <item>Abstraction of the bus interface mechanism. Currently, PCMCIA, EISA, and PCI busses are assumed to be bridged from ISA. This is not something which should be assumed. <item>A configuration manager that knows about PNP events, including power management events, insertion, extraction, and bus (PNP ISA and PCMCIA bridging chips) vs. card level event management. <item>A topological sort mechanism for assigning reassignable addresses that do not collide with other reassignable and non-reassignable device space resource usage by fixed devices. <item>A registration based mechanism for hardware services registration. Specifically, a device centric registration mechanism for timer and sound and other system critical service providers. Consider Timer2 and Timer0 and speaker services as one example of a single monolithic service provider. <item>A kernel exported symbol space in the kernel data space accessible by an LKM loader mechanism that does relocation and symbol space manipulation. The intent of this interface is to support the ability to demand load and unload kernel modules. <item>NetWare Server (protected mode ODI driver) loader and subservices to allow the use of ODI card drivers supplied with network cards. The same thing for NDIS drivers and NetWare SCSI drivers. <item>An "upgrade system" option that works on Linux boxes instead of just previous rev FreeBSD boxes. <item>Splitting of the console driver into abstraction layers, both to make it easier to port and to kill the X and ThinkPad and PS/2 mouse and LED and console switching and bouncing NumLock problems once and for all. <item>Other kernel emulation environments for other foreign drivers as opportunity permits. SCO and Solaris are good candidates, followed by UnixWare, etc. <item>Processor emulation environments for execution of foreign binaries. This is easier than it sounds if the system call interface doesn't change much. <item>Streams to allow the use of commercial streams drivers. <item>Kernel multithreading (requires kernel preemption). <item>Symmetric Multiprocessing with kernel preemption (requires kernel preemption). <item>A concerted effort at support for portable computers. This is somewhat handled by changing PCMCIA bridging rules and power management event handling. But there are things like detecting internal vs. external display and picking a different screen resolution based on that fact, not spinning down the disk if the machine is in dock, and allowing dock-based cards to disappear without affecting the machines ability to boot (same issue for PCMCIA). <item>Reorganization of the source tree for multiple platform ports. <item>A "make world" that "makes the world" (rename the current one to "make regress" if that's all it is good for). <item>A 4M (preferably smaller!) memory footprint. </enum> <sect><heading>How to contribute</heading> <p>Contributions to the system generally fall into one or more of the following 6 categories: <sect1><heading>Bug reports and general commentary</heading> <p>If you have a bug to report or a suggestion to make: <itemize> <item>An idea or suggestion of general technical interest should be - mailed to <tt><htmlurl url="mailto:hackers@freebsd.org" - name="<hackers@freebsd.org>"></tt>. + mailed to the &a.hackers;. Likewise, people with an interest in such things (and a tolerance for a <em>high</em> volume of mail!) may subscribe to the hackers mailing list by sending mail to - <tt><htmlurl url="mailto:majordomo@freebsd.org" - name="<majordomo@freebsd.org>"></tt>. + <tt><htmlurl url="mailto:majordomo@FreeBSD.ORG" + name="<majordomo@FreeBSD.ORG>"></tt>. See <ref id="eresources:mail" name="mailing lists"> for more information about this and other mailing lists. <item>An actual bug report should be filed by using the <tt>send-pr(1)</tt> program. This will prompt you for various fields to fill in. Simply go to the fields surrounded by <tt><></tt>'s and fill in your own information in place of what's suggested there. You should receive confirmation of your bug report and a tracking number. Keep this tracking number and use it in any subsequent correspondence. If you do not receive confirmation in a timely fashion (3 days to a week, depending on your email connection) or are, for some reason, unable to use the <tt>send-pr(1)</tt> command, - then you may also file a bug report by sending mail to - <tt><htmlurl url="mailto:bugs@freebsd.org" - name="<bugs@freebsd.org>"></tt>. + then you may also file a bug report by sending mail to the &a.bugs;. </itemize> <sect1><heading>Changes to the documentation</heading> -<p>Changes to the documentation are overseen by the FreeBSD Documentation -Project, which can be reached at <tt><htmlurl url="mailto:doc@freebsd.org" -name="<doc@freebsd.org>"></tt>. This does not generally include +<p>Changes to the documentation are overseen by the &a.doc;. +This does not generally include changes to manual pages, which should be considered under the category of "changes to existing source code." <sect1><heading>Changes to existing source code</heading> <p>An addition or change to the existing source code is a somewhat trickier affair and depends a lot on how far out of date you are with the current state of the core FreeBSD development. There is a special on-going release of FreeBSD known as ``FreeBSD-current'' which is made available in a variety of ways for the convenience of developers working actively on the system. See <ref id="current" name="Staying current with FreeBSD"> for more information about getting and using FreeBSD-current. Working from older sources unfortunately means that your changes may sometimes be too obsolete or too divergent for easy re-integration into FreeBSD. Chances of this can be minimized somewhat by subscribing to the - <tt><announce@freebsd.org></tt> and - <tt><current@freebsd.org></tt> mailing lists, where discussions + &a.announce and the &a.current lists, where discussions on the current state of the system take place. Assuming that you can manage to secure fairly up-to-date sources to base your changes on, the next step is to produce a set of diffs to send to the FreeBSD maintainers. This is done with the <tt>diff(1)</tt> command, with the `context diff' form being preferred. For example: <tscreen><verb> diff -c oldfile newfile </verb></tscreen> or <tscreen><verb> diff -c -r olddir newdir </verb></tscreen> would generate such a set of context diffs for the given source file or directory hierarchy. See the man page for <tt>diff(1)</tt> for more details. Once you have a set of diffs (which you may test with the <tt>patch(1)</tt> command), you should bundle them up in an email message and send it, along with a brief description of - what the diffs are for, to - <tt><htmlurl url="mailto:hackers@freebsd.org" - name="<hackers@freebsd.org>"></tt>. Someone will very + what the diffs are for, to the &a.hackers;. + Someone will very likely get back in touch with you in 24 hours or less, assuming of course that your diffs are interesting! :-) If your changes don't express themselves well as diffs alone (e.g. you've perhaps added, deleted or renamed files as well) then you may be better off bundling any new files, diffs and instructions for deleting/renaming others into a <tt>tar</tt> file and running the <tt>uuencode(1)</tt> program on it before - sending the output of that to <tt><htmlurl url="mailto:hackers@freebsd.org" - name="<hackers@freebsd.org>"></tt>. + sending the output of that to the &a.hackers;. See the man pages on <tt>tar(1)</tt> and <tt>uuencode(1)</tt> for more information on bundling files this way. If your change is of a potentially sensitive nature, e.g. you're unsure of copyright issues governing its further distribution or you're simply not ready to release it without a tighter review first, - then you should send it to <tt><htmlurl url="mailto:core@freebsd.org" - name="<core@freebsd.org>"></tt> rather than - <tt><hackers@freebsd.org></tt>. The core mailing list + then you should send it to <tt><htmlurl url="mailto:core@FreeBSD.ORG" + name="<core@FreeBSD.ORG>"></tt> rather than the &a.hackers + The core mailing list reaches a much smaller group of people who do much of the day-to-day work on FreeBSD. Note that this group is also <em>very busy</em> and so you should only send mail to them in cases where mailing to hackers is truly impractical. <sect1><heading>New code or major value-added packages</heading> <p>In the case of a significant contribution of a large body work, or the addition of an important new feature to FreeBSD, it becomes almost always necessary to either send changes as uuencoded tar files or upload them to our ftp site <url - url="ftp://ftp.freebsd.org/pub/FreeBSD/incoming">. + url="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/incoming">. When working with large amounts of code, the touchy subject of copyrights also invariably comes up. Acceptable copyrights for code included in FreeBSD are: <enum> <item>The BSD copyright. This copyright is most preferred due to its ``no strings attached'' nature and general attractiveness to commercial enterprises. Far from discouraging such commercial use, the FreeBSD Project actively encourages such participation by commercial interests who might eventually be inclined to invest something of their own into FreeBSD. <item>The GNU Public License, or ``GPL''. This license isn't quite as popular with us due to the amount of extra effort demanded of anyone using the code for commercial purposes, but given the sheer quantity of GPL'd code we currently require (compiler, assembler, text formatter, etc) it would be silly to refuse additional contributions under this license. Code under the GPL also goes into a different part of the tree, that being <tt>/sys/gnu</tt> or <tt>/usr/src/gnu</tt>, and is therefore easily identifiable to anyone for whom the GPL presents a problem. </enum> <p>Contributions coming under any other type of copyright must be carefully reviewed before their inclusion into FreeBSD will be considered. Contributions for which particularly restrictive commercial copyrights apply are generally rejected, though the authors are always encouraged to make such changes available through their own channels. To place a ``BSD-style'' copyright on your work, include the following text at the very beginning of every source code file you wish to protect, replacing the text between the `<tt>%%</tt>' with the appropriate information. <tscreen><verb> Copyright (c) %%proper_years_here%% %%your_name_here%%, %%your_state%% %%your_zip%%. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer as the first lines of this file unmodified. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: This product includes software developed by %%your_name_here%%. 4. The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY %%your_name_here%% ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL %%your_name_here%% BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - $Id: submitters.sgml,v 1.24 1996-03-30 19:46:37 jkh Exp $ + $Id: submitters.sgml,v 1.25 1996-05-09 23:04:50 mpp Exp $ </verb></tscreen> For your convenience, a copy of this text can be found in <tt>/usr/share/examples/etc/bsd-style-copyright</tt>. &porting; <sect1><heading>Money, Hardware or Internet access</heading> <p>We're always very happy to accept donations to further the cause of the FreeBSD Project and, in a volunteer effort like ours, a little can go a long way! Donations of hardware are also very important to expanding our list of supported peripherals since we generally lack the funds to buy such items ourselves. <sect2><heading>Donating funds</heading> <p>While the FreeBSD Project is not a 501(C3) (non-profit) corporation and hence cannot offer special tax incentives for any donations made, any such donations will be gratefully accepted on behalf of the project by FreeBSD, Inc. <p>FreeBSD, Inc. was founded in early 1995 by &a.jkh and &a.davidg with the goal of furthering the aims of the FreeBSD Project and giving it a minimal corporate presence. Any and all funds donated (as well as any profits that may eventually be realized by FreeBSD, Inc.) will be used exclusively to further the project's goals. Please make any checks payable to FreeBSD, Inc., sent in care of the following address: <tscreen><verb> FreeBSD, Inc. 246 Park St. Clyde CA, 94520 </verb></tscreen> Wire transfers may also be sent directly to: <tscreen><verb> Bank Of America Concord Main Office P.O. Box 37176 San Francisco CA, 94137-5176 Routing #: 121-000-358 Account #: 01411-07441 (FreeBSD, Inc.) </verb></tscreen> If you do not wish to be listed in our <ref id="donors" name="donors"> section, please specify this when making your donation. Thanks! <sect2><heading>Donating hardware</heading> <p>Donations of hardware in any of the 3 following categories are also gladly accepted by the FreeBSD Project: <itemize> <item>General purpose hardware such as disk drives, memory or complete systems should be sent to the FreeBSD, Inc. address listed in the <em>donating funds</em> section. <item>Hardware for which ongoing compliance testing is desired. We are currently trying to put together a testing lab of all components that FreeBSD supports so that proper regression testing can be done with each new release. We are still lacking many important pieces (network cards, motherboards, etc) and if you'd like to make such a donation, please contact &a.davidg for information on which items are still required. <item>Hardware currently unsupported by FreeBSD for which you'd like to see such support added. Please contact the <htmlurl -url="mailto:core@freebsd.org" name="FreeBSD Core Team"> before sending +url="mailto:core@FreeBSD.ORG" name="FreeBSD Core Team"> before sending such items as we'll need to find a developer willing to take on the task before we can accept delivery of them. </itemize> <sect2><heading>Donating Internet access</heading> <p>We can always use new mirror sites for FTP, WWW or sup. If you'd like to be such a mirror, please contact -<htmlurl url="mailto:admin@freebsd.org" name="the FreeBSD project +<htmlurl url="mailto:admin@FreeBSD.ORG" name="the FreeBSD project administrators"> for more information. <sect><heading>Donors Gallery<label id="donors"></heading> <p>The FreeBSD Project is indebted to the following donors and would like to publically thank them here! <itemize> <item><htmlurl url="http://www.cdrom.com" name="Walnut Creek CDROM"> has donated almost more than we can say (see the <ref id="history" name="history"> document for more details). In particular, we'd like to thank them for the hardware used for - <em>freefall.freebsd.org</em>, our primary development machine, - and for <em>thud.freebsd.org</em>, our testing and build box. + <em>freefall.FreeBSD.ORG</em>, our primary development machine, + and for <em>thud.FreeBSD.ORG</em>, our testing and build box. We are also indebted to them for funding various contributors over the years and providing us with unrestricted use of their T1 connection to the Internet. </item> <item><htmlurl url="mailto:ANDRSN@HOOVER.STANFORD.EDU" name="Annelise Anderson"> has generously donated funding to the further development of FreeBSD </item> </itemize> diff --git a/handbook/sup.sgml b/handbook/sup.sgml index 8fbff545bf..f6e7adad27 100644 --- a/handbook/sup.sgml +++ b/handbook/sup.sgml @@ -1,132 +1,132 @@ -<!-- $Id: sup.sgml,v 1.13 1996-02-11 00:16:18 jkh Exp $ --> +<!-- $Id: sup.sgml,v 1.14 1996-05-09 23:04:53 mpp Exp $ --> <!-- The FreeBSD Documentation Project --> <sect><heading>SUP<label id="sup"></heading> <p><em>Contributed by &a.jkh; and &a.gclarkii;.</em> SUP is a network based software update tool developed at CMU. The purpose of this document is get the beginner up and running with sup. <sect1><heading>Getting setup</heading> <p>Starting with FreeBSD 2.1, sup is supplied as part of the base system and no separate installation is required. SUP gets the information it needs to run from a configuration file called a supfile. This file should be found in <tt>/usr/share/examples/sup/standard-supfile</tt> for the standard distributions. This file tells sup what collections it will be updating and/or installing and where they go. This supfile will sup the current source collection. For ports please have a look at <tt>/usr/share/examples/sup/ports-supfile</tt>. If you are interested in obtaining the cvs files that make up the source tree, refer to <tt>/usr/share/examples/sup/cvs-supfile</tt>. If you would rather track changes to the -stable release, refer to <tt>/usr/share/examples/sup/stable-supfile</tt> instead. If you're inside the United States, you may also uncomment the `secure' and `eBones' collection lines to grab the DES code. If you're outside the U.S., you should NOT sup this code from sup.FreeBSD.ORG as this will violate U.S. export restrictions. Instead you should use the <tt>secure-supfile</tt> found within the above directory. This will connect you to the international sup site that contains a secure distribution. Any distributions you do not wish to receive can be commented out with a # at the beginning of the distribution line. Please consult the file <tt>/usr/share/examples/sup/README</tt> for a list of alternate sup servers. The default sup server (sup.FreeBSD.ORG) listed in the above example files is currently overloaded and any traffic that can be transfered to a different host will help relieve some of the strain. Once this is setup, you're ready to go. To start sup type: <verb> sup supfile </verb> If you wish to see what sup is doing "verbosely", give it the -v option, like so: <verb> sup -v supfile </verb> Thats all there is to it! Remember that if you're running current, which is what you will have if you sup with the standard-supfile, please -join the freebsd-current mailing list. You should also be sure to read +join the &a.current mailing list. You should also be sure to read <ref id="current" name="Staying current with FreeBSD"> for important information on just what we can and cannot do for you as a -current user. If you are using the stable-supfile, please -join the freebsd-stable mailing list and read +join the &a.stable mailing list and read <ref id="stable" name="Staying stable with FreeBSD"> . <sect1><heading>Description of FreeBSD SUP distributions</heading> <p>For the main FreeBSD distribution using the standard-supfile: <verb> src-base: /usr/src/... misc files at the top of /usr/src src-bin: /usr/src/bin user and system binaries src-secure: /usr/src/secure DES Sources (US/Canada ONLY) src-eBones: /usr/src/eBones Kerberos and DES (US/Canada ONLY) src-etc: /usr/src/etc system files src-games: /usr/src/games games src-gnu: /usr/src/gnu sources under the GNU Public License src-include: /usr/src/include include files src-sys: /usr/src/sys kernel sources src-lib: /usr/src/lib libraries src-libexec: /usr/src/libexec system binaries src-share: /usr/src/share various shared resources src-sbin: /usr/src/sbin single user system binaries src-usrbin: /usr/src/usr.bin user binaries src-usrsbin: /usr/src/usr.sbin system binaries </verb> <p>For the international FreeBSD distribution using the secure-supfile: <verb> src-secure: /usr/src/secure DES Sources src-eBones: /usr/src/eBones Kerberos and DES </verb> <p>And for the ports collection: <verb> ports-base: /usr/ports/... misc files at the top of /usr/ports ports-archivers: /usr/ports/archivers archiving tools ports-audio: /usr/ports/audio sound support ports-benchmarks: /usr/ports/benchmarks benchmarks ports-cad: /usr/ports/cad CAD tools ports-comms: /usr/ports/comms communication software ports-databases: /usr/ports/databases databases ports-devel: /usr/ports/devel development utilities ports-editors: /usr/ports/editors editors ports-emulators: /usr/ports/emulators emulators for other OSes ports-games: /usr/ports/games games ports-graphics: /usr/ports/graphics various graphics utilities ports-japanese: /usr/ports/japanese Japanese software. ports-lang: /usr/ports/lang programming languages ports-mail: /usr/ports/mail mail software ports-math: /usr/ports/math numerical computation software ports-misc: /usr/ports/misc miscellaneous utilities ports-net: /usr/ports/net networking software ports-news: /usr/ports/news USENET news software ports-plan9: /usr/ports/plan9 various programs from Plan9 ports-print: /usr/ports/print printing software ports-russian: /usr/ports/russian Russian software ports-security: /usr/ports/security ``security'' utilities, for better or for worse ports-shells: /usr/ports/shells various UN*X shells ports-sysutils: /usr/ports/sysutils system utilities ports-www: /usr/ports/www software related to the world wide web ports-x11: /usr/ports/x11 X11 software </verb> <p>If you want to keep updated on the original source of the ports, you can also add this to your supfile. But note that this collection is <em>enormous</em>, and unless you are an ftp site mirroring the entire FreeBSD tree (but can't use ``mirror'' for some reason), you (and us) are much better off not using sup to collect these: <verb> ports-distfiles: /usr/ports/distfiles original tarballs </verb>