Disconnect the FAQ and handbook from the makefiles and remove the files.

The FAQ and handbook have been repository copied to their own top-level
("doc") directory in the cvs tree which will not be branched so as to
avoid the syncing problems.  At some point, the sgml text will require
formatting tools that will be from ports rather than the main source tree.

Requested by:	 jfieber, jkh
This commit is contained in:
Peter Wemm 1997-05-23 12:55:14 +00:00
parent b8c01a853d
commit c9b143ca1c
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=26062
130 changed files with 2 additions and 60259 deletions

File diff suppressed because it is too large Load diff

View file

@ -1,6 +0,0 @@
# $Id$
DOC= FAQ
SRCS= FAQ.sgml
.include <bsd.sgml.mk>

View file

@ -1,23 +1,7 @@
# From: @(#)Makefile 8.1 (Berkeley) 6/5/93
# $Id$
# $Id: Makefile,v 1.12 1997/02/22 12:57:48 peter Exp $
SUBDIR= FAQ handbook psd smm usd papers
# List of all language-specific subdirs.
LANGSUBDIR= ja_JP.EUC
# If ALLLANG is defined, descend to all language-specific subdirs too.
# If ALLLANG is not defined, but LANG is defined and a subdirectory with
# that name exists, descend to that directory too.
# In either case, the default subdirectories are always traversed.
.if defined(ALLLANG)
SUBDIR+= ${LANGSUBDIR}
.elif defined(LANG)
.if exists(${.CURDIR}/${LANG})
SUBDIR+= ${LANG}
.endif
.endif
SUBDIR= psd smm usd papers
# Default output formats are ascii for troff documents, and
# ascii and html for sgml documents.

View file

@ -1,19 +0,0 @@
# $Id: Makefile,v 1.25 1997/05/02 02:20:25 ache Exp $
SGMLOPTS=-links
SRCS= authors.sgml basics.sgml bibliography.sgml boothelp.sgml
SRCS+= booting.sgml contrib.sgml crypt.sgml ctm.sgml current.sgml cvsup.sgml
SRCS+= cyclades.sgml development.sgml dialup.sgml dialout.sgml
SRCS+= diskless.sgml dma.sgml eresources.sgml esdi.sgml
SRCS+= firewalls.sgml glossary.sgml goals.sgml
SRCS+= handbook.sgml history.sgml hw.sgml install.sgml isdn.sgml
SRCS+= kerberos.sgml kernelconfig.sgml kerneldebug.sgml kernelopts.sgml
SRCS+= lists.sgml mail.sgml memoryuse.sgml
SRCS+= mirrors.sgml nfs.sgml nutshell.sgml pgpkeys.sgml policies.sgml
SRCS+= porting.sgml ports.sgml ppp.sgml printing.sgml
SRCS+= quotas.sgml relnotes.sgml routing.sgml russian.sgml
SRCS+= serial.sgml scsi.sgml sections.sgml sio.sgml skey.sgml slipc.sgml
SRCS+= slips.sgml stable.sgml submitters.sgml sup.sgml synching.sgml
SRCS+= term.sgml userppp.sgml uart.sgml linuxemu.sgml
.include <bsd.sgml.mk>

View file

@ -1,489 +0,0 @@
<!-- $Id: authors.sgml,v 1.68 1997/05/19 15:54:36 joerg Exp $ -->
<!-- The FreeBSD Documentation Project -->
<!--
Names and email address of contributing authors and CVS committers.
Use these entities when referencing people. Please note the use of single
and double quotes.
Please keep this list in alphabetical order by entity names.
-->
<!ENTITY a.ache "Andrey A. Chernov
<tt><htmlurl url='mailto:ache@FreeBSD.ORG'
name='&lt;ache@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.adam "Adam David
<tt><htmlurl url='mailto:adam@FreeBSD.ORG'
name='&lt;adam@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.alex "Alex Nash
<tt><htmlurl url='mailto:alex@freebsd.org'
name='&lt;alex@freebsd.org&gt;'></tt>">
<!ENTITY a.amurai "Atsushi Murai
<tt><htmlurl url='mailto:amurai@FreeBSD.ORG'
name='&lt;amurai@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.andreas "Andreas Klemm
<tt><htmlurl url='mailto:andreas@FreeBSD.ORG'
name='&lt;andreas@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.asami "Satoshi Asami
<tt><htmlurl url='mailto:asami@FreeBSD.ORG'
name='&lt;asami@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.ats "Andreas Schulz
<tt><htmlurl url='mailto:ats@FreeBSD.ORG'
name='&lt;ats@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.awebster "Andrew Webster
<tt><htmlurl url='mailto:awebster@pubnix.net'
name='&lt;awebster@pubnix.net&gt;'></tt>">
<!ENTITY a.bde "Bruce Evans
<tt><htmlurl url='mailto:bde@FreeBSD.ORG'
name='&lt;bde@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.brian "Brian Somers
<tt><htmlurl url='mailto:brian@awfulhak.org'
name='&lt;brian@awfulhak.org&gt;'></tt>">
<!ENTITY a.cawimm "Charles A. Wimmer
<tt><htmlurl url='mailto:cawimm@FreeBSD.ORG'
name='&lt;cawimm@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.charnier "Philippe Charnier
<tt><htmlurl url='mailto:charnier@FreeBSD.ORG'
name='&lt;charnier@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.chuck "Chuck Robey
<tt><htmlurl url='mailto:chuckr@glue.umd.edu'
name='&lt;chuckr@glue.umd.edu&gt;'></tt>">
<!ENTITY a.chuckr "Chuck Robey
<tt><htmlurl url='mailto:chuckr@FreeBSD.ORG'
name='&lt;chuckr@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.cracauer "Martin Cracauer
<tt><htmlurl url='mailto:cracauer@FreeBSD.ORG'
name='&lt;cracauer@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.csgr "Geoff Rehmet
<tt><htmlurl url='mailto:csgr@FreeBSD.ORG'
name='&lt;csgr@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.danny "Daniel O'Callaghan
<tt><htmlurl url='mailto:danny@FreeBSD.ORG'
name='&lt;danny@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.darrenr "Darren Reed
<tt><htmlurl url='mailto:darrenr@FreeBSD.ORG'
name='&lt;darrenr@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.dave "Dave Cornejo
<tt><htmlurl url='mailto:dave@FreeBSD.ORG'
name='&lt;dave@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.davidg "David Greenman
<tt><htmlurl url='mailto:davidg@FreeBSD.ORG'
name='&lt;davidg@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.davidn "David Nugent
<tt><htmlurl url='mailto:davidn@blaze.net.au'
name='&lt;davidn@blaze.net.au&gt;'></tt>">
<!ENTITY a.dfr "Doug Rabson
<tt><htmlurl url='mailto:dfr@FreeBSD.ORG'
name='&lt;dfr@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.dima "Dima Ruban
<tt><htmlurl url='mailto:dima@FreeBSD.ORG'
name='&lt;dima@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.dirkvangulik "Dirk-Willem van Gulik
<tt><htmlurl url='mailto:Dirk.vanGulik@jrc.it'
name='&lt;Dirk.vanGulik@jrc.it&gt;'></tt>">
<!ENTITY a.dufault "Peter Dufault
<tt><htmlurl url='mailto:dufault@FreeBSD.ORG'
name='&lt;dufault@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.dyson "John Dyson
<tt><htmlurl url='mailto:dyson@FreeBSD.ORG'
name='&lt;dyson@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.eivind "Eivind Eklund
<tt><htmlurl url='mailto:perhaps@yes.no'
name='&lt;perhaps@yes.no&gt;'></tt>">
<!ENTITY a.erich "Eric L. Hernes
<tt><htmlurl url='mailto:erich@FreeBSD.ORG'
name='&lt;erich@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.fenner "Bill Fenner
<tt><htmlurl url='mailto:fenner@FreeBSD.ORG'
name='&lt;fenner@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.fsmp "Steve Passe
<tt><htmlurl url='mailto:fsmp@FreeBSD.ORG'
name='&lt;fsmp@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.gclarkii "Gary Clark II
<tt><htmlurl url='mailto:gclarkii@FreeBSD.ORG'
name='&lt;gclarkii@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.gena "Gennady B. Sorokopud
<tt><htmlurl url='mailto:gena@NetVision.net.il'
name='&lt;gena@NetVision.net.il&gt;'></tt>">
<!ENTITY a.ghelmer "Guy Helmer
<tt><htmlurl url='mailto:ghelmer@alpha.dsu.edu'
name='&lt;ghelmer@alpha.dsu.edu&gt;'></tt>">
<!ENTITY a.gibbs "Justin T. Gibbs
<tt><htmlurl url='mailto:gibbs@FreeBSD.ORG'
name='&lt;gibbs@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.gj "Gary Jennejohn
<tt><htmlurl url='mailto:gj@FreeBSD.ORG'
name='&lt;gj@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.gpalmer "Gary Palmer
<tt><htmlurl url='mailto:gpalmer@FreeBSD.ORG'
name='&lt;gpalmer@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.graichen "Thomas Graichen
<tt><htmlurl url='mailto:graichen@FreeBSD.ORG'
name='&lt;graichen@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.gryphon "Coranth Gryphon
<tt><htmlurl url='mailto:gryphon@healer.com'
name='&lt;gryphon@healer.com&gt;'></tt>">
<!ENTITY a.guido "Guido van Rooij
<tt><htmlurl url='mailto:guido@FreeBSD.ORG'
name='&lt;guido@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.hanai "Hiroyuki HANAI
<tt><htmlurl url='mailto:hanai@FreeBSD.ORG'
name='&lt;hanai@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.handy "Brian N. Handy
<tt><htmlurl url='mailto:handy@sxt4.physics.montana.edu'
name='&lt;handy@sxt4.physics.montana.edu&gt;'></tt>">
<!ENTITY a.hm "Hellmuth Michaelis
<tt><htmlurl url='mailto:hm@kts.org'
name='&lt;hm@kts.org&gt;'></tt>">
<!ENTITY a.hsu "Jeffrey Hsu
<tt><htmlurl url='mailto:hsu@FreeBSD.ORG'
name='&lt;hsu@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.imp "Warner Losh
<tt><htmlurl url='mailto:imp@FreeBSD.ORG'
name='&lt;imp@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.jb "John Birrell
<tt><htmlurl url='mailto:jb@cimlogic.com.au'
name='&lt;jb@cimlogic.com.au&gt;'></tt>">
<!ENTITY a.jdp "John Polstra
<tt><htmlurl url='mailto:jdp@FreeBSD.ORG'
name='&lt;jdp@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.jehamby "Jake Hamby
<tt><htmlurl url='mailto:jehamby@lightside.com'
name='&lt;jehamby@lightside.com&gt;'></tt>">
<!ENTITY a.jfieber "John Fieber
<tt><htmlurl url='mailto:jfieber@FreeBSD.ORG'
name='&lt;jfieber@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.jfitz "James FitzGibbon
<tt><htmlurl url='mailto:james@nexis.net'
name='&lt;james@nexis.net&gt;'></tt>">
<!ENTITY a.jgreco "Joe Greco
<tt><htmlurl url='mailto:jgreco@FreeBSD.ORG'
name='&lt;jgreco@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.jhay "John Hay
<tt><htmlurl url='mailto:jhay@FreeBSD.ORG'
name='&lt;jhay@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.jkh "Jordan K. Hubbard
<tt><htmlurl url='mailto:jkh@FreeBSD.ORG'
name='&lt;jkh@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.jlind "John Lind
<tt><htmlurl url='mailto:john@starfire.MN.ORG'
name='&lt;john@starfire.MN.ORG&gt;'></tt>">
<!ENTITY a.jlrobin "James L. Robinson
<tt><htmlurl url='mailto:jlrobin@FreeBSD.ORG'
name='&lt;jlrobin@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.jmacd "Joshua Peck Macdonald
<tt><htmlurl url='mailto:jmacd@FreeBSD.ORG'
name='&lt;jmacd@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.jmb "Jonathan M. Bresler
<tt><htmlurl url='mailto:jmb@FreeBSD.ORG'
name='&lt;jmb@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.jmg "John-Mark Gurney
<tt><htmlurl url='mailto:jmg@FreeBSD.ORG'
name='&lt;jmg@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.jmz "Jean-Marc Zucconi
<tt><htmlurl url='mailto:jmz@FreeBSD.ORG'
name='&lt;jmz@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.joerg "J&ouml;rg Wunsch
<tt><htmlurl url='mailto:joerg@FreeBSD.ORG'
name='&lt;joerg@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.john "John Cavanaugh
<tt><htmlurl url='mailto:john@FreeBSD.ORG'
name='&lt;john@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.jraynard "James Raynard
<tt><htmlurl url='mailto:jraynard@freebsd.org'
name='&lt;jraynard@freebsd.org&gt;'></tt>">
<!ENTITY a.julian "Julian Elischer
<tt><htmlurl url='mailto:julian@FreeBSD.ORG'
name='&lt;julian@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.jvh "Johannes Helander
<tt><htmlurl url='mailto:jvh@FreeBSD.ORG'
name='&lt;jvh@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.karl "Karl Strickland
<tt><htmlurl url='mailto:karl@FreeBSD.ORG'
name='&lt;karl@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.kato "Takenori KATO
<tt><htmlurl url='mailto:kato@FreeBSD.ORG'
name='&lt;kato@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.kelly "Sean Kelly
<tt><htmlurl url='mailto:kelly@fsl.noaa.gov'
name='&lt;kelly@fsl.noaa.gov&gt;'></tt>">
<!ENTITY a.kjc "Kenjiro Cho
<tt><htmlurl url='mailto:kjc@FreeBSD.ORG'
name='&lt;kjc@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.lars "Lars Fredriksen
<tt><htmlurl url='mailto:lars@FreeBSD.ORG'
name='&lt;lars@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.ljo "L Jonas Olsson
<tt><htmlurl url='mailto:ljo@FreeBSD.ORG'
name='&lt;ljo@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.markm "Mark Murray
<tt><htmlurl url='mailto:markm@FreeBSD.ORG'
name='&lt;markm@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.martin "Martin Renters
<tt><htmlurl url='mailto:martin@FreeBSD.ORG'
name='&lt;martin@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.max "Masafumi NAKANE
<tt><htmlurl url='mailto:max@FreeBSD.ORG'
name='&lt;max@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.mayo "Mark Mayo
<tt><htmlurl url='mailto:mayo@quickweb.com'
name='&lt;mayo@quickweb.com&gt;'></tt>">
<!ENTITY a.mbarkah "Ade Barkah
<tt><htmlurl url='mailto:mbarkah@FreeBSD.ORG'
name='&lt;mbarkah@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.mckay "Stephen McKay
<tt><htmlurl url='mailto:mckay@FreeBSD.ORG'
name='&lt;mckay@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.md "Mark Dapoz
<tt><htmlurl url='mailto:md@bsc.no'
name='&lt;md@bsc.no&gt;'></tt>">
<!ENTITY a.mpp "Mike Pritchard
<tt><htmlurl url='mailto:mpp@FreeBSD.ORG'
name='&lt;mpp@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.msmith "Michael Smith
<tt><htmlurl url='mailto:msmith@FreeBSD.ORG'
name='&lt;msmith@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.nate "Nate Williams
<tt><htmlurl url='mailto:nate@FreeBSD.ORG'
name='&lt;nate@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.nik "Nik Clayton
<tt><htmlurl url='mailto:nik@blueberry.co.uk'
name='&lt;nik@blueberry.co.uk&gt;'></tt>">
<!ENTITY a.nsj "Nate Johnson
<tt><htmlurl url='mailto:nsj@FreeBSD.ORG'
name='&lt;nsj@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.obrien "David O'Brien
<tt><htmlurl url='mailto:obrien@cs.ucdavis.edu'
name='&lt;obrien@cs.ucdavis.edu&gt;'></tt>">
<!ENTITY a.olah "Andras Olah
<tt><htmlurl url='mailto:olah@FreeBSD.ORG'
name='&lt;olah@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.opsys "Chris Watson
<tt><htmlurl url='mailto:opsys@open-systems.net'
name='&lt;opsys@open-systems.net&gt;'></tt>">
<!ENTITY a.paul "Paul Richards
<tt><htmlurl url='mailto:paul@FreeBSD.ORG'
name='&lt;paul@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.pds "Peter da Silva
<tt><htmlurl url='mailto:pds@FreeBSD.ORG'
name='&lt;pds@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.peter "Peter Wemm
<tt><htmlurl url='mailto:peter@FreeBSD.ORG'
name='&lt;peter@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.phk "Poul-Henning Kamp
<tt><htmlurl url='mailto:phk@FreeBSD.ORG'
name='&lt;phk@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.pjc "Peter Childs
<tt><htmlurl url='mailto:pjchilds@imforei.apana.org.au'
name='&lt;pjchilds@imforei.apana.org.au&gt;'></tt>">
<!ENTITY a.proven "Chris Provenzano
<tt><htmlurl url='mailto:proven@FreeBSD.ORG'
name='&lt;proven@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.pst "Paul Traina
<tt><htmlurl url='mailto:pst@FreeBSD.ORG'
name='&lt;pst@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.rgrimes "Rodney Grimes
<tt><htmlurl url='mailto:rgrimes@FreeBSD.ORG'
name='&lt;rgrimes@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.rhuff "Robert Huff
<tt><htmlurl url='mailto:rhuff@cybercom.net'
name='&lt;rhuff@cybercom.net&gt;'></tt>">
<!ENTITY a.ricardag "Ricardo AG
<tt><htmlurl url='mailto:ricardag@ag.com.br'
name='&lt;ricardag@ag.com.br&gt;'></tt>">
<!ENTITY a.rich "Rich Murphey
<tt><htmlurl url='mailto:rich@FreeBSD.ORG'
name='&lt;rich@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.roberto "Ollivier Robert
<tt><htmlurl url='mailto:roberto@FreeBSD.ORG'
name='&lt;roberto@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.scrappy "Marc G. Fournier
<tt><htmlurl url='mailto:scrappy@FreeBSD.ORG'
name='&lt;scrappy@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.se "Stefan Esser
<tt><htmlurl url='mailto:se@FreeBSD.ORG'
name='&lt;se@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.sef "Sean Eric Fagan
<tt><htmlurl url='mailto:sef@FreeBSD.ORG'
name='&lt;sef@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.smace "Scott Mace
<tt><htmlurl url='mailto:smace@FreeBSD.ORG'
name='&lt;smace@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.smpatel "Sujal Patel
<tt><htmlurl url='mailto:smpatel@FreeBSD.ORG'
name='&lt;smpatel@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.sos "S&oslash;ren Schmidt
<tt><htmlurl url='mailto:sos@FreeBSD.ORG'
name='&lt;sos@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.stark "Gene Stark
<tt><htmlurl url='mailto:stark@FreeBSD.ORG'
name='&lt;stark@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.stb "Stefan Bethke
<tt><htmlurl url='mailto:stb@FreeBSD.ORG'
name='&lt;stb@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.steve "Steve Price
<tt><htmlurl url='mailto:steve@FreeBSD.ORG'
name='&lt;steve@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.swallace "Steven Wallace
<tt><htmlurl url='mailto:swallace@FreeBSD.ORG'
name='&lt;swallace@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.tedm "Ted Mittelstaedt
<tt><htmlurl url='mailto:tedm@FreeBSD.ORG'
name='&lt;tedm@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.tegge "Tor Egge
<tt><htmlurl url='mailto:tegge@FreeBSD.ORG'
name='&lt;tegge@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.tg "Thomas Gellekum
<tt><htmlurl url='mailto:tg@FreeBSD.ORG'
name='&lt;tg@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.torstenb "Torsten Blum
<tt><htmlurl url='mailto:torstenb@FreeBSD.ORG'
name='&lt;torstenb@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.ugen "Ugen J.S.Antsilevich
<tt><htmlurl url='mailto:ugen@FreeBSD.ORG'
name='&lt;ugen@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.uhclem "Frank Durda IV
<tt><htmlurl url='mailto:uhclem@FreeBSD.ORG'
name='&lt;uhclem@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.ulf "Ulf Zimmermann
<tt><htmlurl url='mailto:ulf@FreeBSD.ORG'
name='&lt;ulf@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.whiteside "Don Whiteside
<tt><htmlurl url='mailto:whiteside@acm.org'
name='&lt;whiteside@acm.org&gt;'></tt>">
<!ENTITY a.wilko "Wilko Bulte
<tt><htmlurl url='mailto:wilko@yedi.iaf.nl'
name='&lt;wilko@yedi.iaf.nl&gt;'></tt>">
<!ENTITY a.wlloyd "Bill Lloyd
<tt><htmlurl url='mailto:wlloyd@mpd.ca'
name='&lt;wlloyd@mpd.ca&gt;'></tt>">
<!ENTITY a.wollman "Garrett Wollman
<tt><htmlurl url='mailto:wollman@FreeBSD.ORG'
name='&lt;wollman@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.wosch "Wolfram Schneider
<tt><htmlurl url='mailto:wosch@FreeBSD.ORG'
name='&lt;wosch@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.wpaul "Bill Paul
<tt><htmlurl url='mailto:wpaul@FreeBSD.ORG'
name='&lt;wpaul@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.yokota "Kazutaka YOKOTA
<tt><htmlurl url='mailto:yokota@FreeBSD.ORG'
name='&lt;yokota@FreeBSD.ORG&gt;'></tt>">

View file

@ -1,96 +0,0 @@
<!-- $Id$ -->
<!-- The FreeBSD Documentation Project -->
<chapt><heading>Unix Basics<label id="basics"></heading>
<sect>
<heading>The online manual<label id="basics:man"></heading>
<p>The most comprehensive documentation on FreeBSD is in
the form of <em>man pages</em>. Nearly every program
on the system comes with a short reference manual
explaining the basic operation and various arguments.
These manuals can be view with the
<tt><bf>man</bf></tt> command. Use of the
<tt><bf>man</bf></tt> command is simple:
<tscreen>
<bf>man</bf> <it>command</it>
</tscreen>
where <it>command</it> is the name of the command
you wish to learn about. For example, to learn more about
<tt><bf>ls</bf></tt> command type:
<tscreen>
% <bf>man ls</bf>
</tscreen>
<p>The online manual is divided up into numbered
sections:
<enum>
<item>User commands</item>
<item>System calls and error numbers</item>
<item>Functions in the C libraries</item>
<item>Device drivers</item>
<item>File formats</item>
<item>Games and other diversions</item>
<item>Miscellaneous information</item>
<item>System maintenance and operation commands</item>
</enum>
in some cases, the same topic may appear in more than
one section of the on-line manual. For example, there
is a <tt><bf>chmod</bf></tt> user command and a
<tt><bf>chmod()</bf></tt> system call. In this case,
you can tell the <tt><bf>man</bf></tt> command which
one you want by specifying the section:
<tscreen>
% <bf>man 1 chmod</bf>
</tscreen>
which will display the manual page for the user command
<tt><bf>chmod</bf></tt>. References to a particular
section of the on-line manual are traditionally placed
in parenthesis in written documentation, so
<tt><bf>chmod(1)</bf></tt> refers to the <tt><bf>chmod
</bf></tt> user command and <tt><bf>chmod(2)</bf></tt>
refers to the system call.
<p>This is fine if you know the name of the command and
simply wish to know how to use it, but what if you cannot recall the
command name? You can use <tt><bf>man</bf></tt> to
search for keywords in the command <em>descriptions</em> by
using the <tt><bf>-k</bf></tt> switch:
<tscreen>
% <bf>man -k mail</bf>
</tscreen>
With this command you will be presented with a list of
commands that have the keyword `mail' in their
descriptions. This is actually functionally equivalent to
using the <tt><bf>apropos</bf></tt> command.
<p>So, you are looking at all those fancy commands in <tt>
/usr/bin</tt> but do not even have the faintest idea
what most of them actually do? Simply do a
<tscreen>
% <bf>cd /usr/bin; man -f *</bf>
</tscreen>
or
<tscreen>
% <bf>cd /usr/bin; whatis *</bf>
</tscreen>
which does the same thing.
<sect>
<heading>GNU Info files<label id="basics:info"></heading>
<p>FreeBSD includes many applications and utilities
produced by the Free Software Foundation (FSF). In
addition to man pages, these programs come with more
extensive hypertext documents called <em>info</em>
files which can be viewed with the <tt>info</tt>
command or, if you installed <tt>emacs</tt>, the info
mode of <tt>emacs</tt>.
To use the <tt>info(1)</tt> command, simply type:
<tscreen>% <bf>info</bf></tscreen> For a brief
introduction, type <tt><bf>h</bf></tt>. For a quick
command reference, type <tt><bf>?</bf></tt>.

View file

@ -1,334 +0,0 @@
<!-- $Id: bibliography.sgml,v 1.25 1997/03/19 07:59:19 obrien Exp $ -->
<!-- The FreeBSD Documentation Project -->
<chapt>
<heading>Bibliography<label id="bibliography"></heading>
<p>While the manual pages provide the definitive reference
for individual pieces of the FreeBSD operating system,
they are notorious for not illustrating how to put the
pieces together to make the whole operating system run
smoothly. For this, there is no substitute for a good
book on UNIX system administration and a good users'
manual.
<sect>
<heading>Books & magazines specific to FreeBSD</heading>
<p><bf>International books & Magazines:</bf>
<p><itemize>
<item><htmlurl url="http://freebsd.csie.nctu.edu.tw/~jdli/book.html"
name="Using FreeBSD"> (in Chinese).
<item>FreeBSD for PC 98'ers (in Japanese), published by SHUWA
System Co, LTD. ISBN4-87966-468-5 C3055 P2900E.
<item>FreeBSD (in Japanese), published by CUTT.
ISBN4-906391-22-2 C3055 P2400E.
</itemize>
<p><bf>English language books & Magazines:</bf>
<p><itemize>
<item><htmlurl url="http://www.cdrom.com/titles/os/bsdbook2.htm"
name="The Complete FreeBSD">, published by <htmlurl
url="http://www.cdrom.com" name="Walnut Creek CDROM">.
</itemize>
<sect>
<heading>Users' guides</heading>
<p><itemize>
<item>Computer Systems Research Group, UC Berkeley.
<sl>4.4BSD User's Reference Manual</sl>.
O'Reilly &amp; Associates, Inc., 1994.
<newline>ISBN 1-56592-075-9</item>
<item>Computer Systems Research Group, UC Berkeley.
<sl>4.4BSD User's Supplementary Documents</sl>.
O'Reilly &amp; Associates, Inc., 1994.
<newline>ISBN 1-56592-076-7</item>
<item><sl>UNIX in a Nutshell</sl>.
O'Reilly &amp; Associates, Inc., 1990.
<newline>ISBN 093717520X</item>
<item>Mui, Linda.
<em>What You Need To Know When You Can't Find Your UNIX
System Administrator</em>.
O'Reilly &amp; Associates, Inc., 1995.
<newline>ISBN 1-56592-104-6 </item>
<item><htmlurl url="http://www-wks.acs.ohio-state.edu/"
name="Ohio State University"> has written
a <htmlurl
url="http://www-wks.acs.ohio-state.edu/unix_course/unix.html"
name="UNIX Introductory Course"> which is available online
in HTML and postscript format.</item>
</itemize>
<sect>
<heading>Administrators' guides</heading>
<p><itemize>
<item>Albitz, Paul and Liu, Cricket. <em>DNS and
BIND</em>, 2nd Ed.
O'Reilly &amp; Associates, Inc., 1997.
<newline>ISBN 1-56592-236-0 </item>
<item>Computer Systems Research Group, UC Berkeley.
<sl>4.4BSD System Manager's Manual</sl>.
O'Reilly &amp; Associates, Inc., 1994.
<newline>ISBN 1-56592-080-5</item>
<item>Costales, Brian, et al.
<em>Sendmail</em>, 2nd Ed. O'Reilly &amp;
Associates, Inc., 1997.
<newline>ISBN 1-56592-222-0 </item>
<item>Frisch, &AElig;leen. <em>Essential System
Administration</em>, 2nd Ed. O'Reilly &amp;
Associates, Inc., 1995. <newline>ISBN 1-56592-127-5 </item>
<item>Hunt, Craig. <em>TCP/IP Network Administration</em>.
O'Reilly &amp; Associates, Inc., 1992.
<newline>ISBN 0-937175-82-X</item>
<item>Nemeth, Evi. <em>UNIX System Administration
Handbook</em>. 2nd ed. Prentice Hall, 1995.
<newline>ISBN 0131510517</item>
<item>Stern, Hal <em>Managing NFS and NIS</em>
O'Reilly &amp; Associates, Inc., 1991.
<newline>ISBN 1-937175-75-7 </item>
</itemize>
<sect>
<heading>Programmers' guides</heading>
<p><itemize>
<item>Asente, Paul. <em>X Window System
Toolkit</em>. Digital Press.
<newline>ISBN 1-55558-051-3</item>
<item>Computer Systems Research Group, UC Berkeley.
<sl>4.4BSD Programmer's Reference Manual</sl>.
O'Reilly &amp; Associates, Inc., 1994.
<newline>ISBN 1-56592-078-3</item>
<item>Computer Systems Research Group, UC Berkeley.
<sl>4.4BSD Programmer's Supplementary Documents</sl>.
O'Reilly &amp; Associates, Inc., 1994.
<newline>ISBN 1-56592-079-1</item>
<item>Ellis, Margaret A. and Stroustrup,
Bjarne. <em>The Annotated C++ Reference
Manual</em>. Addison-Wesley, 1990.
<newline>ISBN 0-201-51459-1</item>
<item>Harbison, Samuel P. and Steele, Guy
L. Jr. <em>C: A Reference Manual</em>. 4rd ed. Prentice
Hall, 1995. <newline>ISBN 0-13-326224-3</item>
<item>Kernighan, Brian and Dennis M. Ritchie.
<em>The C Programming Language.</em>.
PTR Prentice Hall, 1988.
<newline>ISBN 0-13-110362-9</item>
<item>Lehey, Greg.
<em>Port UNIX Software</em>.
O'Reilly &amp; Associates, Inc., 1995.
<newline>ISBN 1-56592-126-7</item>
<item>Plauger, P. J. <em>The Standard C
Library</em>. Prentice Hall, 1992.
<newline>ISBN 0-13-131509-9</item>
<item>Stevens, W. Richard. <em>Advanced
Programming in the UNIX Environment</em>.
Reading, Mass. : Addison-Wesley, 1992
<newline>ISBN 0-201-56317-7</item>
<item>Stevens, W. Richard. <em>UNIX Network
Programming</em>. PTR Prentice Hall, 1990.
<newline>ISBN 0-13-949876-1</item>
<item>Wells, Bill. "Writing Serial Drivers for UNIX".
<em>Dr. Dobb's Journal</em>. 19(15), December
1994. pp68-71, 97-99.</item>
</itemize>
<sect>
<heading>Operating System Internals</heading>
<p><itemize>
<item>Andleigh, Prabhat K. <em>UNIX System Architecture</em>.
Prentice-Hall, Inc., 1990.
<newline>ISBN 0-13-949843-5</item>
<item>Jolitz, William. "Porting UNIX to the
386". <em>Dr. Dobb's Journal</em>. January
1991-July 1992.</item>
<item>Leffler, Samuel J., Marshall Kirk McKusick,
Michael J Karels and John Quarterman <em>The Design and
Implementation of the 4.3BSD UNIX Operating
System</em>. Reading, Mass. : Addison-Wesley, 1989.
<newline>ISBN 0-201-06196-1</item>
<item>Leffler, Samuel J., Marshall Kirk McKusick,
<em>The Design and Implementation of the 4.3BSD
UNIX Operating System: Answer Book</em>.
Reading, Mass. : Addison-Wesley, 1991.
<newline>ISBN 0-201-54629-9</item>
<item>McKusick, Marshall Kirk, Keith Bostic, Michael J Karels,
and John Quarterman. <em>The Design and
Implementation of the 4.4BSD Operating
System</em>. Reading, Mass. : Addison-Wesley, 1996.
<newline>ISBN 0-201-54979-4</item>
<item>Stevens, W. Richard. <em>TCP/IP Illustrated,
Volume 1: The Protocols</em>.
Reading, Mass. : Addison-Wesley, 1996.
<newline>ISBN 0-201-63346-9</item>
<item>Stevens, W. Richard. <em>TCP/IP Illustrated,
Volume 3: TCP for Transactions, HTTP, NNTP
and the UNIX Domain Protocols</em>.
Reading, Mass. : Addison-Wesley, 1996.
<newline>ISBN 0-201-63495-3</item>
<item>Vahalia, Uresh. <em>UNIX Internals -- The New Frontiers</em>.
Prentice Hall, 1996.
<newline>ISBN 0-13-101908-2</item>
<item>Wright, Gary R. and W. Richard Stevens.
<em>TCP/IP Illustrated, Volume 2:
The Implementation</em>.
Reading, Mass. : Addison-Wesley, 1995.
<newline>ISBN 0-201-63354-X</item>
</itemize>
<sect>
<heading>Security reference</heading>
<p><itemize>
<item>Cheswick, William R. and Steven M. Bellovin.
<em>Firewalls and Internal Security:
Repelling the Wily Hacker</em>.
Reading, Mass. : Addison-Wesley, 1995.
<newline>ISBN 1-201-63357-4 </item>
<item>Garfinkel, Simson and Gene Spafford.
<em>Practical UNIX Security</em>. 2nd Ed.
O'Reilly &amp; Associates, Inc., 1996.
<newline>ISBN 1-56592-148-8 </item>
<item>Garfinkel, Simson.
<em>PGP Pretty Good Privacy</em>
O'Reilly &amp; Associates, Inc., 1995.
<newline>ISBN 1-56592-098-8 </item>
</itemize>
<sect>
<heading>Hardware reference</heading>
<p><itemize>
<item>Anderson, Don and Tom Shanley.
<em>Pentium Processor System Architecture</em>.
2nd ed. Reading, Mass. : Addison-Wesley, 1995.
<newline>ISBN 0-201-40992-5</item>
<item>Ferraro, Richard F. <em>Programmer's Guide
to the EGA, VGA, and Super VGA Cards</em>.
3rd ed. Reading, Mass. : Addison-Wesley, 1995.
<newline>ISBN 0-201-62490-7</item>
<item>Shanley, Tom. <em>80486 System
Architecture</em>. 3rd ed. Reading, Mass. :
Addison-Wesley, 1995. <newline>ISBN
0-201-40994-1</item>
<item>Shanley, Tom. <em>ISA System
Architecture</em>. 3rd ed. Reading, Mass. :
Addison-Wesley, 1995.
<newline>ISBN 0-201-40996-8</item>
<item>Shanley, Tom. <em>PCI System
Architecture</em>. 3rd ed. Reading, Mass. :
Addison-Wesley, 1995. <newline>ISBN
0-201-40993-3</item>
<item>Van Gilluwe, Frank. <em>The Undocumented PC</em>.
Reading, Mass: Addison-Wesley Pub. Co., 1994.
<newline>ISBN 0-201-62277-7</item>
</itemize>
<sect>
<heading>UNIX history</heading>
<p><itemize>
<item>Lion, John <em>Lion's Commentary on UNIX, 6th Ed.
With Source Code</em>.
ITP Media Group, 1996.
<newline>ISBN 1573980137</item>
<item>Raymond, Eric s. <em>The New Hacker's Dictonary,
3rd edition</em>. MIT Press, 1996.
<newline>ISBN 0-262-68092-0
<newline>Also known as the
<htmlurl url="http://www.ccil.org/jargon/jargon.html"
name="Jargon File"></item>
<item>Salus, Peter H. <em>A quarter century of UNIX</em>.
Addison-Wesley Publishing Company, Inc., 1994.
<newline>ISBN 0-201-54777-5</item>
<item>Simon Garfinkel, Daniel Weise, Steven Strassmann.
<em>The UNIX-HATERS Handbook</em>.
IDG Books Worldwide, Inc., 1994.
<newline>ISBN 1-56884-203-1</item>
<item>Don Libes, Sandy Ressler <em>Life with UNIX</em> - special
edition. Prentice-Hall, Inc., 1989.
<newline>ISBN 0-13-536657-7</item>
<item><em>The BSD family tree</em>. 1997.
<newline>
<htmlurl url="http://www.de.freebsd.org/de/ftp/unix-stammbaum"
name="http://www.de.freebsd.org/de/ftp/unix-stammbaum">
or <url url="file:/usr/share/misc/bsd-family-tree"
name="local"> on a FreeBSD-current machine.
</item>
</itemize>
<sect>
<heading>Magazines and journals</heading>
<p><itemize>
<item><em>The C/C++ Users Journal</em>. R&amp;D Publications
Inc. ISSN 1075-2838</item>
<item><em>Sys Admin - The Journal for UNIX System
Administrators</em> Miller Freeman, Inc., ISSN 1061-2688</item>
</itemize>
</sect>

View file

@ -1,50 +0,0 @@
<!-- $Id$ -->
<!-- The FreeBSD Documentation Project -->
<!DOCTYPE linuxdoc PUBLIC "-//FreeBSD//DTD linuxdoc//EN" [
<!-- Conditional flags for this version of the document -->
<!ENTITY % boothelp.only "INCLUDE">
<!ENTITY % handbook.only "IGNORE">
<!-- Entity shorthand for authors' names and email addresses -->
<!ENTITY % authors SYSTEM "authors.sgml">
%authors;
<!-- Entity definitions for all the parts -->
<!ENTITY % sections SYSTEM "sections.sgml">
%sections;
]>
<linuxdoc>
<book>
<title>FreeBSD Installation
<author>
<name></name>
</author>
<abstract>Welcome to FreeBSD! This guide describes the
FreeBSD installation process. To navigate through the
sections in this guide using the <bf>up</bf> and
<bf>down</bf> arrow keys to select the section you wish to
read. Then use the <bf>right arrow</bf> or the <bf>enter
key</bf> to view the section. You can backtrack through
sections you have read by using the <bf>left arrow</bf>.
</abstract>
<chapt><heading>General information</heading>
&nutshell;
&history;
&relnotes;
&install;
&troubleshooting;
&bibliography;
&eresources;
&hw;
&contrib;
</book>
</linuxdoc>

View file

@ -1,173 +0,0 @@
<!-- This is a SGML version of the text on FreeBSD boot procedures
made by Poul-Henning Kamp <phk@FreeBSD.ORG>
This conversion has been made by Ollivier Robert.
$Id$
<!DOCTYPE linuxdoc PUBLIC "-//FreeBSD//DTD linuxdoc//EN">
<article>
<title>Boot overview</title>
<author>Poul-Henning Kamp, <tt/&lt;phk@login.dknet.dk&gt;/</author>
<date>v1.1, April 26th</date>
<abstract>
Booting FreeBSD is essentially a three step: Load the kernel,
determine the root filesystem and initialize user-land things. This
leads to some interesting possibilities as shown below...
</abstract>
<toc>
-->
<sect><heading>The FreeBSD Booting Process<label id="booting"></heading>
<p><em>Contributed by &a.phk;. v1.1, April 26th.</em>
Booting FreeBSD is essentially a three step: Load the kernel,
determine the root filesystem and initialize user-land things. This
leads to some interesting possibilities shown below.
<sect1><heading>Loading a kernel</heading>
<p>
We presently have three basic mechanisms for loading the
kernel as described below:
They all pass some
information to the kernel to help the kernel decide what to do
next.
<descrip>
<tag>Biosboot</tag>
Biosboot is our ``bootblocks'', it consists of two files, which
will be installed in the first 8Kbytes of the floppy or hard-disk
slice to be booted from.
Biosboot can load a kernel from a FreeBSD filesystem.
<tag>Dosboot</tag>
Dosboot was written by DI. Christian Gusenbauer, and is
unfortunately at this time one of the few pieces of code that
will not compile under FreeBSD itself because it is written for
Microsoft compilers.
Dosboot will boot the kernel from a MS-DOS file or from a FreeBSD
filesystem partition on the disk. It attempts to negotiate with
the various and strange kinds of memory manglers that lurk in
high memory on MS/DOS systems and usually wins them for its
case.
<tag>Netboot</tag>
Netboot will try to find a supported Ethernet card, and use
BOOTP, TFTP and NFS to find a kernel file to boot.
</descrip>
<sect1><heading>Determine the root filesystem</heading>
<p>
Once the kernel is loaded and the boot-code jumps to it, the kernel
will initialize itself, trying to determine what hardware is
present and so on, and then it needs to find a root filesystem.
Presently we support the following types of root filesystems:
<descrip>
<tag>UFS</tag>
This is the most normal type of root filesystem. It can reside on
a floppy or on hard disk.
<tag>MSDOS</tag>
While this is technically possible, it is not particular useful,
because of ``FAT'' filesystems inability to make links, device
nodes and such ``UNIXisms''.
<tag>MFS</tag>
This is actually a UFS filesystem which has been compiled into
the kernel. That means that the kernel does not really need any
disks/floppies or other HW to function.
<tag>CD9660</tag>
This is for using a CD-ROM as root filesystem.
<tag>NFS</tag>
This is for using a fileserver as root filesystem, basically
making it a diskless machine.
</descrip>
<sect1><heading>Initialize user-land things</heading>
<p>
To get the user-land going, when the kernel has finished
initialization, it will create a process with ``<tt/pid == 1/'' and execute
a program on the root filesystem, this program is normally
``<tt>/sbin/init</tt>''.
You can substitute any program for /sbin/init, as long as you keep
in mind that:
there is no stdin/out/err unless you open it yourself, if you exit,
the machine panics, signal handling is special for ``<tt/pid ==
1/''.
An example of this is the ``<tt>/stand/sysinstall</tt>''
program on the installation floppy.
<sect1><heading>Interesting combinations</heading>
<p>
Boot a kernel with a MFS in it with a special <tt>/sbin/init</tt>
which...
<descrip>
<tag/A -- Using DOS/
<itemize>
<item>mounts your <tt/C:/ as <tt>/C:</tt>
<item>Attaches <tt>C:/freebsd.fs</tt> on <tt>/dev/vn0</tt>
<item>mounts <tt>/dev/vn0</tt> as <tt>/rootfs</tt>
<item>makes symlinks<newline>
<tt>/rootfs/bin -&gt; /bin</tt><newline>
<tt>/rootfs/etc -&gt; /etc</tt><newline>
<tt>/rootfs/sbin -&gt; /sbin</tt><newline>
(etc...)<newline>
</itemize>
Now you run FreeBSD without repartitioning your hard disk...
<tag/B -- Using NFS/
NFS mounts your <tt>server:&tilde;you/FreeBSD</tt> as
<tt>/nfs</tt>, chroots to <tt>/nfs</tt> and executes
<tt>/sbin/init</tt> there
Now you run FreeBSD diskless, even though you do not control
the NFS server...
<tag/C -- Start an X-server/
Now you have an X-terminal, which is better than that dingy
X-under-windows-so-slow-you-can-see-what-it-does thing that
your boss insist is better than forking our money on HW.
<tag/D -- Using a tape/
Takes a copy of <tt>/dev/rwd0</tt> and writes it to a remote tape
station or fileserver.
Now you finally got that backup you should have made a year
ago...
<tag>E -- Acts as a firewall/web-server/what do I know...</tag>
This is particular interesting since you can boot from a write-
protected floppy, but still write to your root filesystem...
</descrip>

View file

@ -1,502 +0,0 @@
<!-- $Id: contrib.sgml,v 1.248 1997/05/21 03:27:15 asami Exp $ -->
<!-- The FreeBSD Documentation Project -->
<!-- Please try to keep the file 'avail' (from CVSROOT)
in sync with the list of FreeBSD Developers -->
<chapt><heading>FreeBSD Project Staff<label id="staff"></heading>
<p>The FreeBSD Project is managed and operated by the following
groups of people:
<sect><heading>The FreeBSD core team<label id="contrib:core"></heading>
<p>The FreeBSD core team constitutes the project's ``Board of Directors'',
responsible for deciding the project's overall goals and direction
as well as managing <ref id="contrib:who" name="specific areas"> of
the FreeBSD project landscape.
<p>(in alphabetical order by last name):
<itemize>
<item>&a.asami;
<item>&a.jmb;
<item>&a.ache;
<item>&a.dyson;
<item>&a.bde;
<item>&a.gibbs;
<item>&a.davidg;
<item>&a.jkh;
<item>&a.phk;
<item>&a.rich;
<item>&a.gpalmer;
<item>&a.jdp;
<item>&a.guido;
<item>&a.sos;
<item>&a.peter;
<item>&a.wollman;
<item>&a.joerg;
</itemize>
<sect><heading>The FreeBSD Developers<label id="contrib:committers"></heading>
<p>These are the people who have commit privileges and do the engineering
work on the FreeBSD source tree. All core team members and most
FreeBSD Documentation project personnel are also developers.
<itemize>
<item>&a.mbarkah;
<item>&a.stb;
<item>&a.jb;
<item>&a.torstenb;
<item>&a.danny;
<item>&a.charnier;
<item>&a.kjc;
<item>&a.gclarkii;
<item>&a.cracauer;
<item>&a.adam;
<item>&a.dufault;
<item>&a.uhclem;
<item>&a.tegge;
<item>&a.eivind;
<item>&a.sef;
<item>&a.julian;
<item>&a.se;
<item>&a.fenner;
<item>&a.jfieber;
<item>&a.jfitz;
<item>&a.lars;
<item>&a.scrappy;
<item>&a.tg;
<item>&a.graichen;
<item>&a.jgreco;
<item>&a.rgrimes;
<item>&a.jmg;
<item>&a.jhay;
<item>&a.hsu;
<item>&a.ugen;
<item>&a.gj;
<item>&a.nsj;
<item>&a.ljo;
<item>&a.darrenr;
<item>&a.kato;
<item>&a.andreas;
<item>&a.erich;
<item>&a.imp;
<item>&a.smace;
<item>&a.mckay;
<item>&a.tedm;
<item>&a.amurai;
<item>&a.markm;
<item>&a.max;
<item>&a.alex;
<item>&a.davidn;
<item>&a.obrien;
<item>&a.fsmp;
<item>&a.smpatel;
<item>&a.wpaul;
<item>&a.jmacd;
<item>&a.steve;
<item>&a.mpp;
<item>&a.dfr;
<item>&a.jraynard;
<item>&a.csgr;
<item>&a.martin;
<item>&a.paul;
<item>&a.roberto;
<item>&a.chuckr;
<item>&a.dima;
<item>&a.wosch;
<item>&a.ats;
<item>&a.msmith;
<item>&a.brian;
<item>&a.stark;
<item>&a.karl;
<item>&a.pst;
<item>&a.swallace;
<item>&a.nate;
<item>&a.yokota;
<item>&a.jmz;
<item>&a.hanai;
</itemize>
<sect><heading>The FreeBSD Documentation Project<label id="contrib:doc">
</heading>
<p>The <url url="../docproj.html" name="FreeBSD Documentation
Project"> is responsible for a number of different services, each
service being run by an individual and his <em>deputies</em> (if any):
<p><descrip>
<tag/Documentation Project Manager/ &a.jfieber
<tag/Webmaster/ &a.mbarkah;<p><em>Deputy:</em> &a.paul
<tag/Handbook & FAQ Editor/ &a.pds
<tag/Build Engineer/ &a.paul;<p><em>Deputy:</em> &a.dave
<tag/Mirror Manager/ &a.ulf;<p><em>Deputy:</em> &a.john
<tag/News Editor/ &a.nsj;<p><em>Deputy:</em> &a.john;
<tag/Gallery and Commercial Editor/ &a.nsj;<p><em>Deputy:</em> &a.cawimm
<tag/Style Police & Art Director/ &a.dave;<p><em>Deputy:</em> &a.opsys
<tag/Database Engineer/ &a.mayo;<p><em>Deputy:</em> &a.cracauer
<tag/CGI Engineer/ &a.cracauer;<p><em>Deputy:</em> &a.stb
<tag/Bottle Washing/ &a.nsj
</descrip>
<sect><heading>Who is responsible for what<label id="contrib:who"></heading>
<p><descrip>
<tag/Principal Architect/ &a.davidg
<tag/Documentation Project Manager/ &a.jfieber
<tag/Internationalization/ &a.ache
<tag/Networking/ &a.wollman
<tag/Postmaster/ &a.jmb;
<tag/Release Coordinator/ &a.jkh
<tag/Public Relations & Corporate Liaison/ &a.jkh
<tag/Security Officer/ &a.guido
<tag/Source Repository Manager/ &a.peter
<tag/Ports Manager/ &a.asami
<tag/XFree86 Project, Inc. Liaison/ &a.rich
<tag/Usenet Support/ &a.joerg;
</descrip>
<chapt><heading>FreeBSD contributor list<label id="contrib"></heading>
<sect><heading>Derived software contributors</heading>
<p>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.4BSD-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.
<sect><heading>Additional FreeBSD contributors<label
id="contrib:additional"></heading>
<p>(in alphabetical order by first name):
<itemize>
<item>A JOSEPH KOSHY &lt;koshy@india.hp.com&gt;
<item>ABURAYA Ryushirou &lt;pcs51674@asciinet.or.jp&gt;
<item>Adam Glass &lt;glass@postgres.berkeley.edu&gt;
<item>Adrian T. Filipi-Martin &lt;atf3r@agate.cs.virginia.edu&gt;
<item>Akito Fujita &lt;fujita@zoo.ncl.omron.co.jp&gt;
<item>Alain Kalker &lt;A.C.P.M.Kalker@student.utwente.nl&gt;
<item>Alan Cox &lt;alc@cs.rice.edu&gt;
<item>Andreas Kohout &lt;shanee@rabbit.augusta.de&gt;
<item>Andreas Lohr &lt;andreas@marvin.RoBIN.de&gt;
<item>Andrew Gordon &lt;andrew.gordon@net-tel.co.uk&gt;
<item>Andrew Herbert &lt;andrew@werple.apana.org.au&gt;
<item>Andrew McRae &lt;amcrae@cisco.com&gt;
<item>Andrew Moore &lt;alm@FreeBSD.org&gt;
<item>Andrew Stevenson &lt;andrew@ugh.net.au&gt;
<item>Andrew V. Stesin &lt;stesin@elvisti.kiev.ua&gt;
<item>Andrey Zakhvatov &lt;andy@cgu.chel.su&gt;
<item>Andy Whitcroft &lt;andy@sarc.city.ac.uk&gt;
<item>Anthony Yee-Hang Chan &lt;yeehang@netcom.com&gt;
<item>Brent J. Nordquist &lt;bjn@visi.com&gt;
<item>Bernd Rosauer &lt;br@schiele-ct.de&gt;
<item>Bill Kish &lt;kish@osf.org&gt;
<item>&a.wlloyd
<item>Bob Wilcox &lt;bob@obiwan.uucp&gt;
<item>Boyd Faulkner &lt;faulkner@mpd.tandem.com&gt;
<item>Brent J. Nordquist &lt;bjn@visi.com&gt;
<item>Brian Clapper &lt;bmc@willscreek.com&gt;
<item>Brian Handy &lt;handy@lambic.space.lockheed.com&gt;
<item>Brian Tao &lt;taob@risc.org&gt;
<item>Carey Jones &lt;mcj@acquiesce.org&gt;
<item>Charles Hannum &lt;mycroft@ai.mit.edu&gt;
<item>Charles Mott &lt;cmott@srv.net&gt;
<item>Chet Ramey &lt;chet@odin.INS.CWRU.Edu&gt;
<item>Chris Dabrowski &lt; chris@vader.org&gt;
<item>Chris G. Demetriou &lt;cgd@postgres.berkeley.edu&gt;
<item>Chris Stenton &lt;jacs@gnome.co.uk&gt;
<item>Chris Timmons &lt;skynyrd@opus.cts.cwu.edu&gt;
<item>Chris Torek &lt;torek@ee.lbl.gov&gt;
<item>Christian Gusenbauer &lt;cg@fimp01.fim.uni-linz.ac.at&gt;
<item>Christian Haury &lt;Christian.Haury@sagem.fr&gt;
<item>Christoph Robitschko &lt;chmr@edvz.tu-graz.ac.at&gt;
<item>Choi Jun Ho &lt;junker@jazz.snu.ac.kr&gt;
<item>Chuck Hein &lt;chein@cisco.com&gt;
<item>Conrad Sabatier &lt;conrads@neosoft.com&gt;
<item>Cornelis van der Laan &lt;nils@guru.ims.uni-stuttgart.de&gt;
<item>Craig Struble &lt;cstruble@vt.edu&gt;
<item>Cristian Ferretti &lt;cfs@riemann.mat.puc.cl&gt;
<item>Curt Mayer &lt;curt@toad.com&gt;
<item>Dan Cross &lt;tenser@spitfire.ecsel.psu.edu&gt;
<item>Daniel Baker &lt;dbaker@crash.ops.neosoft.com&gt;
<item>Daniel M. Eischen &lt;deischen@iworks.InterWorks.org&gt;
<item>Danny J. Zerkel &lt;dzerkel@feephi.phofarm.com&gt;
<item>Dave Bodenstab &lt;imdave@synet.net&gt;
<item>Dave Burgess &lt;burgess@hrd769.brooks.af.mil&gt;
<item>Dave Chapeskie &lt;dchapes@zeus.leitch.com&gt;
<item>Dave Edmondson &lt;davided@sco.com&gt;
<item>Dave Rivers &lt;rivers@ponds.uucp&gt;
<item>David Dawes &lt;dawes@physics.su.OZ.AU&gt;
<item>David Leonard &lt;d@scry.dstc.edu.au&gt;
<item>Dean Huxley &lt;dean@fsa.ca&gt;
<item>Dirk Froemberg &lt;dirk@hal.in-berlin.de&gt;
<item>Dmitrij Tejblum &lt;dima@tejblum.dnttm.rssi.ru&gt;
<item>Dmitry Kohmanyuk &lt;dk@farm.org&gt;
<item>&a.whiteside;
<item>Don Yuniskis &lt;dgy@rtd.com&gt;
<item>Donald Burr &lt;d_burr@ix.netcom.com&gt;
<item>Doug Ambrisko &lt;ambrisko@ambrisko.roble.com&gt;
<item>Eric Blood &lt;eblood@cs.unr.edu&gt;
<item>Frank Bartels &lt;knarf@camelot.de&gt;
<item>Frank Maclachlan &lt;fpm@crash.cts.com&gt;
<item>Frank Nobis &lt;fn@trinity.radio-do.de&gt;
<item>FURUSAWA Kazuhisa &lt;furusawa@com.cs.osakafu-u.ac.jp&gt;
<item>Gary A. Browning &lt;gab10@griffcd.amdahl.com&gt;
<item>Greg Ungerer &lt;gerg@stallion.oz.au&gt;
<item>Harlan Stenn &lt;Harlan.Stenn@pfcs.com&gt;
<item>Havard Eidnes &lt;Havard.Eidnes@runit.sintef.no&gt;
<item>Hideaki Ohmon &lt;ohmon@tom.sfc.keio.ac.jp&gt;
<item>Hidekazu Kuroki &lt;hidekazu@cs.titech.ac.jp&gt;
<item>Hidetoshi Shimokawa &lt;simokawa@sat.t.u-tokyo.ac.jp&gt;
<item>Holger Veit &lt;Holger.Veit@gmd.de&gt;
<item>Hung-Chi Chu &lt;hcchu@r350.ee.ntu.edu.tw&gt;
<item>Igor Vinokurov &lt;igor@zynaps.ru&gt;
<item>Ikuo Nakagawa &lt;ikuo@isl.intec.co.jp&gt;
<item>IMAMURA Tomoaki &lt;tomoak-i@is.aist-nara.ac.jp&gt;
<item>Ishii Masahiro &lt;?&gt;
<item>Itsuro Saito &lt;saito@miv.t.u-tokyo.ac.jp&gt;
<item>J. David Lowe &lt;lowe@saturn5.com&gt;
<item>J.T. Conklin &lt;jtc@cygnus.com&gt;
<item>James Clark &lt;jjc@jclark.com&gt;
<item>James da Silva &lt;jds@cs.umd.edu&gt; et al
<item>Janusz Kokot &lt;janek@gaja.ipan.lublin.pl&gt;
<item>Jason Thorpe &lt;thorpej@nas.nasa.gov&gt;
<item>Javier Martin Rueda &lt;jmrueda@diatel.upm.es&gt;
<item>Jeffrey Wheat &lt;jeff@cetlink.net&gt;
<item>Jian-Da Li &lt;jdli@csie.NCTU.edu.tw&gt;
<item>Jim Lowe &lt;james@cs.uwm.edu&gt;
<item>Jim Wilson &lt;wilson@moria.cygnus.com&gt;
<item>Johann Tonsing &lt;jtonsing@mikom.csir.co.za&gt;
<item>Joel Sutton &lt;suttonj@interconnect.com.au&gt;
<item>John Capo &lt;jc@irbs.com&gt;
<item>John Perry &lt;perry@vishnu.alias.net&gt;
<item>Juergen Lock &lt;nox@jelal.hb.north.de&gt;
<item>Juha Inkari &lt;inkari@cc.hut.fi&gt;
<item>Julian Assange &lt;proff@suburbia.net&gt;
<item>Julian Jenkins &lt;kaveman@magna.com.au&gt;
<item>Julian Stacey &lt;jhs@freebsd.org&gt;
<item>Jun-ichiro Itoh &lt;itojun@csl.sony.co.jp&gt;
<item>Justin M. Seger &lt;jseger@scds.ziplink.net&gt;
<item>Kazuhiko Kiriyama &lt;kiri@kiri.toba-cmt.ac.jp&gt;
<item>Kazutaka YOKOTA &lt;yokota@zodiac.mech.utsunomiya-u.ac.jp&gt;
<item>Keith Bostic &lt;bostic@bostic.com&gt;
<item>Keith Moore &lt;?&gt;
<item>Kenneth Monville &lt;desmo@bandwidth.org&gt;
<item>Kent Vander Velden &lt;graphix@iastate.edu&gt;
<item>Kirk McKusick &lt;mckusick@mckusick.com&gt;
<item>Kiroh HARADA &lt;kiroh@kh.rim.or.jp&gt;
<item>Koichi Sato &lt;copan@ppp.fastnet.or.jp&gt;
<item>Kostya Lukin &lt;lukin@okbmei.msk.su&gt;
<item>Kurt Olsen &lt;kurto@tiny.mcs.usu.edu&gt;
<item>Lars Koeller &lt;Lars_Koeller@odie.physik2.uni-rostock.de&gt;
<item>Lucas James &lt;Lucas.James@ldjpc.apana.org.au&gt;
<item>Luigi Rizzo &lt;luigi@iet.unipi.it&gt;
<item>Makoto Matsushita &lt;matusita@ics.es.osaka-u.ac.jp&gt;
<item>Manu Iyengar &lt;iyengar@grunthos.pscwa.psca.com&gt;
<item>Marc Frajola &lt;marc@dev.com&gt;
<item>Marc Ramirez &lt;mrami@mramirez.sy.yale.edu&gt;
<item>Marc Slemko &lt;marcs@znep.com&gt;
<item>Marc van Kempen &lt;wmbfmk@urc.tue.nl&gt;
<item>Mark Huizer &lt;xaa@stack.nl&gt;
<item>Mark J. Taylor &lt;mtaylor@cybernet.com&gt;
<item>Mark Tinguely &lt;tinguely@plains.nodak.edu&gt;
&lt;tinguely@hookie.cs.ndsu.NoDak.edu&gt;
<item>Martin Birgmeier
<item>Masachika ISHIZUKA &lt;ishizuka@isis.min.ntt.jp&gt;
<item>Mats Lofkvist &lt;mal@algonet.se&gt;
<item>Matt Bartley &lt;mbartley@lear35.cytex.com&gt;
<item>Matt Thomas &lt;thomas@lkg.dec.com&gt;
<item>Matt White &lt;mwhite+@CMU.EDU&gt;
<item>Matthew Hunt &lt;mph@pobox.com&gt;
<item>Matthew N. Dodd &lt;winter@jurai.net&gt;
<item>Matthew Stein &lt;matt@bdd.net&gt;
<item>Michael Butschky &lt;butsch@computi.erols.com&gt;
<item>Michael Elbel &lt;me@FreeBSD.ORG&gt;
<item>Michael Searle &lt;searle@longacre.demon.co.uk&gt;
<item>Miguel Angel Sagreras &lt;msagre@cactus.fi.uba.ar&gt;
<item>Mikael Hybsch &lt;micke@dynas.se&gt;
<item>Mikhail Teterin &lt;mi@aldan.ziplink.net&gt;
<item>Mike McGaughey &lt;mmcg@cs.monash.edu.au&gt;
<item>Mike Peck &lt;mike@binghamton.edu&gt;
<item>MITA Yoshio &lt;mita@jp.FreeBSD.ORG&gt;
<item>MOROHOSHI Akihiko &lt;moro@race.u-tokyo.ac.jp&gt;
<item>Naoki Hamada &lt;nao@tom-yam.or.jp&gt;
<item>Narvi &lt;narvi@haldjas.folklore.ee&gt;
<item>NIIMI Satoshi &lt;sa2c@and.or.jp&gt;
<item>Nick Sayer &lt;nsayer@quack.kfu.com&gt;
<item>Nisha Talagala &lt;nisha@cs.berkeley.edu&gt;
<item>Nobuhiro Yasutomi &lt;nobu@psrc.isac.co.jp&gt;
<item>Nobuyuki Koganemaru &lt;kogane@kces.koganemaru.co.jp&gt;
<item>Noritaka Ishizumi &lt;graphite@jp.FreeBSD.ORG&gt;
<item>Oliver Laumann &lt;net@informatik.uni-bremen.de&gt;
<item>Oliver Oberdorf &lt;oly@world.std.com&gt;
<item>Paul Fox &lt;pgf@foxharp.boston.ma.us&gt;
<item>Paul Kranenburg &lt;pk@cs.few.eur.nl&gt;
<item>Paul Mackerras &lt;paulus@cs.anu.edu.au&gt;
<item>Paulo Menezes &lt;paulo@isr.uc.pt&gt;
<item>Pedro Giffuni &lt;pgiffuni@fps.biblos.unal.edu.co&gt;
<item>Pedro A M Vazquez &lt;vazquez@IQM.Unicamp.BR&gt;
<item>Peter Stubbs &lt;PETERS@staidan.qld.edu.au&gt;
<item>R. Kym Horsell &lt;?&gt;
<item>Ralf S. Engelschall &lt;rse@engelschall.com&gt;
<item>Randall Hopper &lt;rhh@stealth.ct.picker.com&gt;
<item>Richard Stallman &lt;rms@gnu.ai.mit.edu&gt;
<item>Richard Wiwatowski &lt;rjwiwat@adelaide.on.neti&gt;
<item>Rob Mallory &lt;rmallory@csusb.edu&gt;
<item>Rob Shady &lt;rls@id.net&gt;
<item>Rob Snow &lt;rsnow@txdirect.net&gt;
<item>Robert Sanders &lt;rsanders@mindspring.com&gt;
<item>Robert Withrow &lt;witr@rwwa.com&gt;
<item>Ronald Kuehn &lt;kuehn@rz.tu-clausthal.de&gt;
<item>Samuel Lam &lt;skl@ScalableNetwork.com&gt;
<item>Sander Vesik &lt;sander@haldjas.folklore.ee&gt;
<item>Sandro Sigala &lt;ssigala@globalnet.it&gt;
<item>Sascha Blank &lt;blank@fox.uni-trier.de&gt;
<item>Sascha Wildner &lt;swildner@channelz.GUN.de&gt;
<item>Scott Blachowicz &lt;scott@sabami.seaslug.org&gt;
<item>Serge V. Vakulenko &lt;vak@zebub.msk.su&gt;
<item>Simon Marlow &lt;simonm@dcs.gla.ac.uk&gt;
<item>Slaven Rezic (Tomic) &lt;eserte@cs.tu-berlin.de&gt;
<item>Soren Dayton &lt;csdayton@midway.uchicago.edu&gt;
<item>Stefan Moeding &lt;moeding@bn.DeTeMobil.de&gt;
<item>Steve Gerakines &lt;steve2@genesis.tiac.net&gt;
<item>Suzuki Yoshiaki &lt;zensyo@ann.tama.kawasaki.jp&gt;
<item>Tadashi Kumano &lt;kumano@strl.nhk.or.jp&gt;
<item>Taguchi Takeshi &lt;taguchi@tohoku.iij.ad.jp&gt;
<item>Tatsumi Hosokawa &lt;hosokawa@mt.cs.keio.ac.jp&gt;
<item>Terry Lambert &lt;terry@lambert.org&gt;
<item>Terry Lee &lt;terry@uivlsi.csl.uiuc.edu&gt;
<item>Theo Deraadt &lt;deraadt@fsa.ca&gt;
<item>Thomas K&ouml;nig &lt;Thomas.Koenig@ciw.uni-karlsruhe.de&gt;
<item>Tim Kientzle &lt;kientzle@netcom.com&gt;
<item>Tim Vanderhoek &lt;ac199@freenet.hamilton.on.ca&gt;
<item>Tom Samplonius &lt;tom@misery.sdf.com&gt;
<item>Torbjorn Granlund &lt;tege@matematik.su.se&gt;
<item>Toshihiro Kanda &lt;candy@fct.kgc.co.jp&gt;
<item>Vanill Ice &lt;vanilla@Minje.Com.TW&gt;
<item>Ville Eerola &lt;ve@sci.fi&gt;
<item>Werner Griessl &lt;werner@btp1da.phy.uni-bayreuth.de&gt;
<item>Wes Santee &lt;wsantee@wsantee.oz.net&gt;
<item>Wolfgang Stanglmeier &lt;wolf@kintaro.cologne.de&gt;
<item>Yoshiro Mihira &lt;sanpei@yy.cs.keio.ac.jp&gt;
<item>Yukihiro Nakai &lt;nakai@mlab.t.u-tokyo.ac.jp&gt;
<item>Yuval Yarom &lt;yval@cs.huji.ac.il&gt;
<item>Yves Fonk &lt;yves@cpcoup5.tn.tudelft.nl&gt;
</itemize>
<sect><heading>386BSD Patch kit patch contributors</heading>
<p>(in alphabetical order by first name):
<itemize>
<item>Adam Glass &lt;glass@postgres.berkeley.edu&gt;
<item>Adrian Hall &lt;adrian@ibmpcug.co.uk&gt;
<item>Andrey A. Chernov &lt;ache@astral.msk.su&gt;
<item>Andrew Herbert &lt;andrew@werple.apana.org.au&gt;
<item>Andrew Moore &lt;alm@netcom.com&gt;
<item>Andy Valencia &lt;ajv@csd.mot.com&gt; &lt;jtk@netcom.com&gt;
<item>Arne Henrik Juul &lt;arnej@Lise.Unit.NO&gt;
<item>Bakul Shah &lt;bvs@bitblocks.com&gt;
<item>Barry Lustig &lt;barry@ictv.com&gt;
<item>Bob Wilcox &lt;bob@obiwan.uucp&gt;
<item>Branko Lankester
<item>Brett Lymn &lt;blymn@mulga.awadi.com.AU&gt;
<item>Charles Hannum &lt;mycroft@ai.mit.edu&gt;
<item>Chris G. Demetriou &lt;cgd@postgres.berkeley.edu&gt;
<item>Chris Torek &lt;torek@ee.lbl.gov&gt;
<item>Christoph Robitschko &lt;chmr@edvz.tu-graz.ac.at&gt;
<item>Daniel Poirot &lt;poirot@aio.jsc.nasa.gov&gt;
<item>Dave Burgess &lt;burgess@hrd769.brooks.af.mil&gt;
<item>Dave Rivers &lt;rivers@ponds.uucp&gt;
<item>David Dawes &lt;dawes@physics.su.OZ.AU&gt;
<item>David Greenman &lt;davidg@Root.COM&gt;
<item>Eric J. Haug &lt;ejh@slustl.slu.edu&gt;
<item>Felix Gaehtgens &lt;felix@escape.vsse.in-berlin.de&gt;
<item>Frank Maclachlan &lt;fpm@crash.cts.com&gt;
<item>Gary A. Browning &lt;gab10@griffcd.amdahl.com&gt;
<item>Geoff Rehmet &lt;csgr@alpha.ru.ac.za&gt;
<item>Goran Hammarback &lt;goran@astro.uu.se&gt;
<item>Guido van Rooij &lt;guido@gvr.win.tue.nl&gt;
<item>Guy Harris &lt;guy@auspex.com&gt;
<item>Havard Eidnes &lt;Havard.Eidnes@runit.sintef.no&gt;
<item>Herb Peyerl &lt;hpeyerl@novatel.cuc.ab.ca
<item>Holger Veit &lt;Holger.Veit@gmd.de&gt;
<item>Ishii Masahiro, R. Kym Horsell
<item>J.T. Conklin &lt;jtc@cygnus.com&gt;
<item>Jagane D Sundar &lt; jagane@netcom.com &gt;
<item>James Clark &lt;jjc@jclark.com&gt;
<item>James Jegers &lt;jimj@miller.cs.uwm.edu&gt;
<item>James W. Dolter
<item>James da Silva &lt;jds@cs.umd.edu&gt; et al
<item>Jay Fenlason &lt;hack@datacube.com&gt;
<item>Jim Wilson &lt;wilson@moria.cygnus.com&gt;
<item>J&ouml;rg Lohse &lt;lohse@tech7.informatik.uni-hamburg.de&gt;
<item>J&ouml;rg Wunsch &lt;joerg_wunsch@uriah.heep.sax.de&gt;
<item>John Dyson - &lt;formerly dyson@ref.tfs.com&gt;
<item>John Polstra &lt;jdp@polstra.com&gt;
<item>John Woods &lt;jfw@eddie.mit.edu&gt;
<item>Jordan K. Hubbard &lt;jkh@whisker.hubbard.ie&gt;
<item>Julian Elischer &lt;julian@dialix.oz.au&gt;
<item>Julian Stacey &lt;jhs@freebsd.org&gt;
<item>Karl Lehenbauer &lt;karl@NeoSoft.com&gt;
&lt;karl@one.neosoft.com&gt;
<item>Keith Bostic &lt;bostic@toe.CS.Berkeley.EDU&gt;
<item>Ken Hughes
<item>Kent Talarico &lt;kent@shipwreck.tsoft.net&gt;
<item>Kevin Lahey &lt;kml%rokkaku.UUCP@mathcs.emory.edu&gt;
&lt;kml@mosquito.cis.ufl.edu&gt;
<item>Marc Frajola &lt;marc@dev.com&gt;
<item>Mark Tinguely &lt;tinguely@plains.nodak.edu&gt;
&lt;tinguely@hookie.cs.ndsu.NoDak.edu&gt;
<item>Martin Renters &lt;martin@tdc.on.ca&gt;
<item>Michael Clay &lt;mclay@weareb.org&gt;
<item>Michael Galassi &lt;nerd@percival.rain.com&gt;
<item>Mike Durkin &lt;mdurkin@tsoft.sf-bay.org&gt;
<item>Naoki Hamada &lt;nao@tom-yam.or.jp&gt;
<item>Nate Williams &lt;nate@bsd.coe.montana.edu&gt;
<item>Nick Handel &lt;nhandel@NeoSoft.com&gt;
&lt;nick@madhouse.neosoft.com&gt;
<item>Pace Willisson &lt;pace@blitz.com&gt;
<item>Paul Kranenburg &lt;pk@cs.few.eur.nl&gt;
<item>Paul Mackerras &lt;paulus@cs.anu.edu.au&gt;
<item>Paul Popelka &lt;paulp@uts.amdahl.com&gt;
<item>Peter da Silva &lt;peter@NeoSoft.com&gt;
<item>Phil Sutherland &lt;philsuth@mycroft.dialix.oz.au&gt;
<item>Poul-Henning Kamp&lt;phk@FreeBSD.ORG&gt;
<item>Ralf Friedl &lt;friedl@informatik.uni-kl.de&gt;
<item>Rick Macklem &lt;root@snowhite.cis.uoguelph.ca&gt;
<item>Robert D. Thrush &lt;rd@phoenix.aii.com&gt;
<item>Rodney W. Grimes &lt;rgrimes@cdrom.com&gt;
<item>Sascha Wildner &lt;swildner@channelz.GUN.de&gt;
<item>Scott Burris &lt;scott@pita.cns.ucla.edu&gt;
<item>Scott Reynolds &lt;scott@clmqt.marquette.mi.us&gt;
<item>Sean Eric Fagan &lt;sef@kithrup.com&gt;
<item>Simon J Gerraty &lt;sjg@melb.bull.oz.au&gt;
&lt;sjg@zen.void.oz.au&gt;
<item>Stephen McKay &lt;syssgm@devetir.qld.gov.au&gt;
<item>Terry Lambert &lt;terry@icarus.weber.edu&gt;
<item>Terry Lee &lt;terry@uivlsi.csl.uiuc.edu&gt;
<item>Tor Egge &lt;Tor.Egge@idi.ntnu.no&gt;
<item>Warren Toomey &lt;wkt@csadfa.cs.adfa.oz.au&gt;
<item>Wiljo Heinen &lt;wiljo@freeside.ki.open.de&gt;
<item>William Jolitz &lt;withheld&gt;
<item>Wolfgang Solfrank &lt;ws@tools.de&gt;
<item>Wolfgang Stanglmeier &lt;wolf@dentaro.GUN.de&gt;
<item>Yuval Yarom &lt;yval@cs.huji.ac.il&gt;
</itemize>

View file

@ -1,78 +0,0 @@
<!-- $Id: crypt.sgml,v 1.3 1997/02/22 12:58:13 peter Exp $ -->
<!-- The FreeBSD Documentation Project -->
<sect><heading>DES, MD5, and Crypt<label id="crypt"></heading>
<p><em>Contributed by &a.wollman;<newline>24 September 1995.</em>
<p>In order to protect the security of passwords on UN*X systems from
being easily exposed, passwords have traditionally been scrambled in
some way. Starting with Bell Labs' Seventh Edition Unix, passwords
were encrypted using what the security people call a ``one-way hash
function''. That is to say, the password is transformed in such a way
that the original password cannot be regained except by brute-force
searching the space of possible passwords. Unfortunately, the only
secure method that was available to the AT&amp;T researchers at the
time was based on DES, the Data Encryption Standard. This causes only
minimal difficulty for commercial vendors, but is a serious problem
for an operating system like FreeBSD where all the source code is
freely available, because national governments in many places like to
place restrictions on cross-border transport of DES and other
encryption software.
<p>So, the FreeBSD team was faced with a dilemma: how could we provide
compatibility with all those UNIX systems out there while still not
running afoul of the law? We decided to take a dual-track approach:
we would make distributions which contained only a non-regulated
password scrambler, and then provide as a separate add-on library the
DES-based password hash. The password-scrambling function was moved
out of the C library to a separate library, called `<tt>libcrypt</tt>'
because the name of the C function to implement it is
`<tt>crypt</tt>'. In FreeBSD 1.x and some pre-release 2.0 snapshots,
the non-regulated scrambler uses an insecure function written by Nate
Williams; in subsequent releases this was replaced by a mechanism
using the RSA Data Security, Inc., MD5 one-way hash function. Because
neither of these functions involve encryption, they are believed to be
exportable from the US and importable into many other countries.
<p>Meanwhile, work was also underway on the DES-based password hash
function. First, a version of the `<tt>crypt</tt>' function which was
written outside the US was imported, thus synchronizing the US and
non-US code. Then, the library was modified and split into two; the
DES `<tt>libcrypt</tt>' contains only the code involved in performing
the one-way password hash, and a separate `<tt>libcipher</tt>' was
created with the entry points to actually perform encryption. The
code was partitioned in this way to make it easier to get an export
license for the compiled library.
<sect1><heading>Recognizing your `<tt>crypt</tt>' mechanism</heading>
<p>It is fairly easy to recognize whether a particular password
string was created using the DES- or MD5-based hash function.
MD5 password strings always begin with the characters
`<tt>&dollar;1&dollar;</tt>'. DES password strings do not have
any particular identifying characteristics, but they are shorter
than MD5 passwords, and are coded in a 64-character alphabet
which does not include the `<tt>&dollar;</tt>' character, so a
relatively short string which doesn't begin with a dollar sign is
very likely a DES password.
<p>Determining which library is being used on your system is fairly
easy for most programs, except for those like `<tt>init</tt>' which
are statically linked. (For those programs, the only way is to try
them on a known password and see if it works.) Programs which use
`<tt>crypt</tt>' are linked against `<tt>libcrypt</tt>', which for
each type of library is a symbolic link to the appropriate
implementation. For example, on a system using the DES versions:
<tscreen><verb>
$ cd /usr/lib
$ ls -l /usr/lib/libcrypt*
lrwxr-xr-x 1 bin bin 13 Sep 5 12:50 libcrypt.a -> libdescrypt.a
lrwxr-xr-x 1 bin bin 18 Sep 5 12:50 libcrypt.so.2.0 -> libdescrypt.so.2.0
lrwxr-xr-x 1 bin bin 15 Sep 5 12:50 libcrypt_p.a -> libdescrypt_p.a
</verb></tscreen>
On a system using the MD5-based libraries, the same links will be
present, but the target will be `<tt>libscrypt</tt>' rather than
`<tt>libdescrypt</tt>'.

View file

@ -1,201 +0,0 @@
<!--
# This is the sgml version of the ctm.FAQ file.
#
# Converted by Ollivier Robert <roberto@FreeBSD.ORG>
#
# $Id: ctm.sgml,v 1.16 1997/04/19 10:40:45 gpalmer Exp $
#
# ----------------------------------------------------------------------------
# "THE BEER-WARE LICENSE" (Revision 42):
# <phk@login.dknet.dk> wrote this file. As long as you retain this notice you
# can do whatever you want with this stuff. If we meet some day, and you think
# this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
# ----------------------------------------------------------------------------
#
-->
<sect1><heading>CTM<label id="ctm"></heading>
<p><em>Contributed by &a.phk;. Updated 16-Mar-1995.</em>
<tt/CTM/ is a method for keeping a remote directory tree in sync with a
central one. It has been developed for usage with FreeBSD's source
trees, though other people may find it useful for other purposes as
time goes by. Little, if any, documentation currently exists at
this time on the process of creating deltas, so talk to &a.phk;
for more information should you wish to use <tt/CTM/ for other things.
<sect2><heading>Why should I use <tt/CTM/?</heading>
<p><tt/CTM/ will give you a local copy of the ``FreeBSD-current''
sources. If you are an active developer on FreeBSD, but have lousy
or non-existent TCP/IP connectivity, <tt/CTM/ was made for you.
You will need to transfer up to four deltas per day (or you can
have them arrive in email automatically), the sizes for which are
always kept as small as possible. This is typically less than 5K,
with the occasional (one in ten) being 10-50K and every now and
then a biggie of 100K+ or more coming around.
You will also need to make yourself aware of the various caveats in
running ``current'' sources, and for this it is recommended that
you read <ref id="current" name="Staying current with FreeBSD">.
<sect2><heading>What do I need to use <tt/CTM/?</heading>
<p>You will need two things: The ``<tt/CTM/'' program and the initial
deltas to feed it (to get up to ``current'' levels).
The <tt/CTM/ program has been part of FreeBSD ever since version 2.0
was released, and lives in <tt>/usr/src/usr.sbin/<tt/CTM/</tt> 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 <tt/CTM/ sources directly from:
<url
url="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/FreeBSD-current/src/usr.sbin/ctm">
The ``deltas'' you feed <tt/CTM/ can be had two ways, FTP or e-mail.
If you have general FTP access to the Internet then the following
FTP sites support access to <tt/CTM/:
<url url="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/CTM">
or see section <ref id="mirrors-ctm" name="mirrors">.
FTP the relevant directory and fetch the <tt/README/ file,
starting from there.
If you only have access to electronic mail or are otherwise blocked
from using FTP then you may wish to get your deltas via email:
Send email to &a.majordomo to subscribe to
the list ``ctm-src-cur''. (If you do not know how to subscribe
yourself using majordomo, send a message first containing the
word ``help'' - it will send you back usage instructions.)
When you begin receiving your <tt/CTM/ updates in the mail, you may
use the <tt/ctm_rmail/ program to unpack and apply them. You
can actually use the <tt/ctm_rmail/ program directly from a entry
in <tt>/etc/aliases</tt> if you want to have the process run in a
fully automated fashion. Check the <tt/ctm_rmail/ man page for more
details.
<bf/NOTE/: No matter what method you use to get the <tt/CTM/
deltas, you should subscribe to the <tt/ctm-announce@FreeBSD.ORG/
mailing list. In the future, this will be the only place where
announcements concerning the operations of the <tt/CTM/ system will be
posted. Send an email to &a.majordomo with a single
line of ``<tt/subscribe ctm-announce/'' to get added to the list.
<sect2><heading>Starting off with <tt/CTM/ for the first time</heading>
<p>Before you can start using <tt/CTM/ deltas, you will need to get a
special ``base'' delta that provides the starting point for all
deltas produced subsequently to it.
You can recognize a base delta by the ``<tt/A/'' appended to the
number (<tt/src-cur.0341A.gz/ for instance). As a rule a base
delta is produced every 100 deltas, the next one will be
<tt/src-cur.0400A.gz/. By the way, they are large! 25 to 30
Megabytes of <tt/gzip/'ed data is common for a base delta.
If you do have the 2.0-RELEASE <tt/srcdist/, you can instead
retrieve the <tt/src-cur.0372R20.gz/ file, it is only 4Mb and it
will take you to current from the 2.0-RELEASE sources.
Once you've picked a base delta to start from, you will also need
all deltas with higher numbers following it.
<sect2><heading>Using <tt/CTM/ in your daily life</heading>
<p>To apply the deltas, simply say
<verb>
cd /where/ever/you/want/the/stuff
ctm -v -v /where/you/store/your/deltas/src-cur.*
</verb>
<tt/CTM/ understands deltas which have been put through <tt/gzip/,
so you do not need to gunzip them first, this saves disk space.
Unless it feels very secure about the entire process, <tt/CTM/ will
not touch your tree. To verify a delta you can also use the
``<tt/-c/'' flag and <tt/CTM/ will not actually touch your tree; it will
merely verify the integrity of the delta and see if it would apply
cleanly to your current tree.
There are other options to <tt/CTM/ as well, look in the sources
for more details.
I would also be very happy if somebody could help with the ``user
interface'' portions, as I have realized that I cannot make up my
mind on what options should do what, how and when...
That's really all there is to it. Every time you get a new delta,
just run it through <tt/CTM/ to keep your sources up to date.
Do not remove the deltas if they are hard to download again. You
just might want to keep them around in case something bad happens.
Even if you only have floppy disks, consider using <tt/fdwrite/ to
make a copy.
<sect2><heading>Future plans for <tt/CTM/</heading>
<p>
Tons of them:
<itemize>
<item>
Make local modifications to the tree possible. One way to do
it could be this:<p> When <tt/CTM/ wants to edit the file
``<tt>foo/bar.c</tt>'', it would first check for the existence
of <tt>foo/bar.c&num;CTM</tt> If this file exists, the delta is
applied to it instead. This way the <tt>foo/bar.c</tt> file
can be edited to suit local needs.
<item>
Make a ``restore file(s)'' option to <tt/CTM/, something like:
<verb>
ctm -r src/sys/i386/wd.c /here/are/my/deltas/src-cur.*
</verb>
would restore <tt/wd.c/ to the current status from the files.
<item>
Clean up the options to <tt/CTM/, they became confusing and
counter intuitive.
</itemize>
The bad news is that I am very busy, so any help in doing this will
be most welcome. And do not forget to tell me what you want also...
<sect2><heading>Miscellaneous stuff</heading>
<p>
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 ``<tt/sec-cur/''
sequence too.
If you are a frequent or valuable contributor to FreeBSD, I will be
willing to arrange special services, one option is delivery via
<tt/ftp/ or <tt/rcp/ to a machine closer to you. You need to have
earned this, since it takes time to do, but I will be all the more
happy to do it for you then.
There is a sequence of deltas for the <tt/ports/ collection too,
but interest has not been all that high yet. Tell me if you want
an email list for that too and we will consider setting it up.
If you have commit privileges or are similarly authorized by the
FreeBSD core team, you can also get access to the CVS repository
tree by the same means. Contact &a.phk;
for details.
<sect2><heading>Thanks!</heading>
<p>
<descrip>
<tag/&a.bde;/
for his pointed pen and invaluable comments.
<tag/&a.sos;/
for patience.
<tag/Stephen McKay/
wrote <tt/ctm_&lsqb;rs&rsqb;mail/, much appreciated.
<tag/&a.jkh;/
for being so stubborn that I had to make it better.
<tag/All the users/
I hope you like it...
</descrip>

View file

@ -1,162 +0,0 @@
<!-- $Id: current.sgml,v 1.20 1997/05/02 14:15:34 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
<sect><heading>Staying current with FreeBSD<label id="current"></heading>
<p><em>Contributed by &a.jkh;.</em>
<!--
THE FREEBSD CURRENT POLICY
Last updated: $Date: 1997/05/02 14:15:34 $
This document attempts to explain the rationale behind
FreeBSD-current, what you should expect should you decide to run it,
and states some prerequisites for making sure the process goes as
smoothly as possible.
-->
<sect1><heading>What is FreeBSD-current?</heading>
<p>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 are interested in
getting something tested, not because we are in the business of
providing binary releases of current. If we do not offer, please do not
ask! It takes far too much time to do this as a general task.
<sect1><heading>Who needs FreeBSD-current?</heading>
<p>FreeBSD-current is made generally available for 3 primary interest groups:
<enum>
<item> 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.
<item> 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.
<item> 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 <em>reading</em>, not running). These
people also make the occasional comment or contribute code.
</enum>
<sect1><heading>What is FreeBSD-current <em>NOT</em>?</heading>
<p><enum>
<item> A fast-track to getting pre-release bits because you heard there is
some cool new feature in there and you want to be the first on
your block to have it.
<item> A quick way of getting bug fixes.
<item> 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 <em>do not
have the time</em> to provide tech support for it.
This is not because we are mean and nasty people who do not like
helping people out (we would not even be doing FreeBSD if we were),
it is literally because we cannot answer 400 messages a day
<em>and</em> actually work on FreeBSD! I am 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.
</enum>
<sect1><heading>Using FreeBSD-current</heading>
<p><enum> <item> Join the &a.current and the &a.cvsall .
This is not just a good idea, it is <em>essential</em>.
If you are not on the <em>FreeBSD-current</em> mailing list you
will not 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 <tt>/usr/src</tt>, you <em>must</em>
rebuild the kernel or your system will crash horribly!").
The <em>cvs-all</em> mailing list will allow you to see the commit log
entry for each change as it is made along with any pertinent
information on possible side-effects.
To join these lists, send mail to &a.majordomo and specify:
<verb>
subscribe freebsd-current
subscribe cvs-all
</verb>
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.
<item> Grab the sources from ftp.FreeBSD.ORG. You can do this in
three ways:
<enum>
<item> Use the <ref id="ctm" name="CTM"> facility. Unless you
have a good TCP/IP connection at a flat rate, this is
the way to do it.
<item> Use the <ref id="cvsup" name="cvsup"> program with
<url url="ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current/src/share/examples/cvsup/standard-supfile" name="this supfile">.
This is the second most recommended method, since it allows
you to grab the entire collection once and then only what has
changed from then on. Many people run cvsup from cron
and keep their sources up-to-date automatically.
<item> Use ftp. The source tree for FreeBSD-current is always
"exported" on:
<htmlurl url="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/FreeBSD-current"
name="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/FreeBSD-current">
We also use `wu-ftpd' which allows compressed/tar'd grabbing
of whole trees. e.g. you see:
<verb>
usr.bin/lex
</verb>
You can do:
<verb>
ftp> cd usr.bin
ftp> get lex.tar.Z
</verb>
And it will get the whole directory for you as a compressed
tar file.
</enum>
<item> Essentially, if you need rapid on-demand access to the source and
communications bandwidth is not a consideration, use cvsup or ftp.
Otherwise, use CTM.
<item> If you are grabbing the sources to run, and not just look at,
then grab <em>all</em> 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.
<item> 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 the &a.current will keep you up-to-date on other
bootstrapping procedures that sometimes become necessary as we move
towards the next release.
<item> Be active! If you are 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!
</enum>

View file

@ -1,574 +0,0 @@
<!-- $Id: cvsup.sgml,v 1.18 1997/05/19 17:39:20 jdp Exp $ -->
<!-- The FreeBSD Documentation Project -->
<sect1><heading>CVSup<label id="cvsup"></heading>
<p><em>Contributed by &a.jdp;</em>.
<sect2><heading>Introduction<label id="cvsup:intro"></heading>
<p>CVSup is a software package for distributing and updating source
trees from a master CVS repository on a remote server host. The
FreeBSD sources are maintained in a CVS repository on a central
development machine in California. With CVSup, FreeBSD users can
easily keep their own source trees up to date.
<p>CVSup uses the so-called "pull" model of updating. Under the pull
model, each client asks the server for updates, if and when they are
wanted. The server waits passively for update requests from its
clients. Thus all updates are instigated by the client. The server
never sends unsolicited updates. Users must either run the CVSup client
manually to get an update, or they must set up a cron job to run it
automatically on a regular basis.
<p>The term "CVSup", capitalized just so, refers to the entire software
package. Its main components are the client "cvsup" which runs on each
user's machine, and the server "cvsupd" which runs at each of the
FreeBSD mirror sites.
<p>As you read the FreeBSD documentation and mailing lists, you may
see references to <ref id="sup">. Sup was the predecessor to CVSup,
and it served a similar purpose. CVSup is in used in much the same
way as sup and, in fact, uses configuration files which are
backward-compatible with sup's. Sup is no longer used in the FreeBSD
project, however, because CVSup is both faster and more flexible.
<sect2><heading>Installation<label id="cvsup:install"></heading>
<p>The easiest way to install CVSup if you are running FreeBSD 2.2 or
later is to use either <url
url="ftp://ftp.freebsd.org/pub/FreeBSD/ports-current/net/cvsup.tar.gz"
name="the port"> from the FreeBSD <ref id="ports" name="ports
collection"> or the corresponding <url
url="ftp://ftp.freebsd.org/pub/FreeBSD/packages-current/net/cvsup-14.1.1.tgz"
name="binary package">, depending on whether you prefer to roll your
own or not.
<p>If you are running FreeBSD-2.1.6 or 2.1.7, you unfortunately cannot use the
binary package versions due to the fact that it requires a version of
the C library that does not yet exist in FreeBSD-2.1.{6,7}. You can easily
use <url url="ftp://ftp.freebsd.org/pub/FreeBSD/ports-current/net/cvsup.tar.gz"
name="the port">, however, just as with FreeBSD 2.2. Simply unpack
the tar file, cd to the cvsup subdirectory and type "make install"
<p>Because CVSup is written in <url
url="http://www.research.digital.com/SRC/modula-3/html/home.html"
name="Modula-3">, both the package and the port require that the
Modula-3 runtime libraries be installed. These are available as the
<url
url="ftp://ftp.freebsd.org/pub/FreeBSD/ports-current/lang/modula-3-lib.tar.gz"
name="lang/modula-3-lib"> port and the <url
url="ftp://ftp.freebsd.org/pub/FreeBSD/packages-current/lang/modula-3-lib-3.6.tgz"
name="lang/modula-3-lib-3.6"> package. If you follow the same
directions as for cvsup, these libraries will be compiled and/or
installed automatically when you install the CVSup port or package.
<p>The Modula-3 libraries are rather large, and fetching and compiling
them is not an instantaneous process. For that reason, a third option
is provided. You can get <em>statically linked</em> FreeBSD
executables for CVSup from either the USA distribution site:
<itemize>
<item><url url="ftp://hub.freebsd.org/pub/CVSup/cvsup-bin-14.1.1.tar.gz"
name="ftp://hub.freebsd.org/pub/CVSup/cvsup-bin-14.1.1.tar.gz">
(client).
<item><url url="ftp://hub.freebsd.org/pub/CVSup/cvsupd-bin-14.1.1.tar.gz"
name="ftp://hub.freebsd.org/pub/CVSup/cvsupd-bin-14.1.1.tar.gz">
(server).
</itemize>
or the German mirror:
<itemize>
<item><url url="ftp://ftp.cs.tu-berlin.de/pub/FreeBSD/CVSup/cvsup-bin-14.1.1.tar.gz"
name="ftp://ftp.cs.tu-berlin.de/pub/FreeBSD/CVSup/cvsup-bin-14.1.1.tar.gz">
(client).
<item><url url="ftp://ftp.cs.tu-berlin.de/pub/FreeBSD/CVSup/cvsupd-bin-14.1.1.tar.gz"
name="ftp://ftp.cs.tu-berlin.de/pub/FreeBSD/CVSup/cvsupd-bin-14.1.1.tar.gz">
(server).
</itemize>
<p>Most users will need only the client. These executables are entirely
self-contained, and they will run on any version of FreeBSD from
FreeBSD-2.1.0 to FreeBSD-current.
<p>In summary, your options for installing CVSup are:
<itemize>
<item>FreeBSD-2.2 or later: static binary, port, or package
<item>FreeBSD-2.1.6, 2.1.7: static binary or port
<item>FreeBSD-2.1.5 or earlier: static binary
</itemize>
<sect2><heading>Configuration<label id="cvsup:config"></heading>
<p>CVSup's operation is controlled by a configuration file called the
"supfile". Beginning with FreeBSD-2.2, there are some sample supfiles
in the directory <url url="file:/usr/share/examples/cvsup"
name="/usr/share/examples/cvsup">. These examples are also available
from <url url="ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current/src/share/examples/cvsup/" name="ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current/src/share/examples/cvsup/"> if you are on a pre-2.2 system.
<p>The information in a supfile answers the following questions for cvsup:
<itemize>
<item><ref id="cvsup:config:files" name="Which files do you want to receive?">
<item><ref id="cvsup:config:vers" name="Which versions of them do you want?">
<item><ref id="cvsup:config:where" name="Where do you want to get them from?">
<item><ref id="cvsup:config:dest" name="Where do you want to put them on your own machine?">
<item><ref id="cvsup:config:status" name="Where do you want to put your status files?">
</itemize>
<p>In the following sections, we will construct a typical supfile by
answering each of these questions in turn. First, we describe the
overall structure of a supfile.
<p>A supfile is a text file. Comments begin with "#" and extend to
the end of the line. Lines that are blank and lines that contain only
comments are ignored.
<p>Each remaining line describes a set of files that the user wishes
to receive. The line begins with the name of a "collection", a
logical grouping of files defined by the server. The name of the
collection tells the server which files you want. After the
collection name come zero or more fields, separated by white space.
These fields answer the questions listed above. There are two types
of fields: flag fields and value fields. A flag field consists of a
keyword standing alone, e.g., "delete" or "compress". A value field
also begins with a keyword, but the keyword is followed without
intervening white space by "=" and a second word. For example,
"release=cvs" is a value field.
<p>A supfile typically specifies more than one collection to receive.
One way to structure a supfile is to specify all of the relevant
fields explicitly for each collection. However, that tends to make
the supfile lines quite long, and it is inconvenient because most
fields are the same for all of the collections in a supfile. CVSup
provides a defaulting mechanism to avoid these problems. Lines
beginning with the special pseudo-collection name "*default" can be
used to set flags and values which will be used as defaults for the
subsequent collections in the supfile. A default value can be
overridden for an individual collection, by specifying a different
value with the collection itself. Defaults can also be changed or
augmented in mid-supfile by additional "*default" lines.
<p>With this background, we will now proceed to construct a supfile
for receiving and updating the main source tree of <ref id="current"
name="FreeBSD-current">.
<itemize>
<item>Which files do you want to receive?<label id="cvsup:config:files">
<p>As with sup, the files available via CVSup are organized into named
groups called "collections". The collections that are available are
described <ref id="cvsup:collec" name="here">.
In this example, we wish to receive the
entire main source tree for the FreeBSD system. There is a single
large collection "src-all" which will give us all of that, except the
export-controlled cryptography support. Let us assume for this
example that we are in the USA or Canada. Then we can get the
cryptography code with one additional collection, "cvs-crypto".
As a first step toward constructing our supfile, we
simply list these collections, one per line:
<verb>
src-all
cvs-crypto
</verb>
<p><item>Which version(s) of them do you want?<label id="cvsup:config:vers">
<p>With CVSup, you can receive virtually any version of the sources
that ever existed. That is possible because the cvsupd server works
directly from the CVS repository, which contains all of the versions.
You specify which one of them you want using the "tag=" and "date="
value fields.
<p>The "tag=" field names a symbolic tag in the repository. There are
two kinds of tags, revision tags and branch tags. A revision tag
refers to a specific revision. Its meaning stays the same from day to
day. A branch tag, on the other hand, refers to the latest revision
on a given line of development, at any given time. Because a branch
tag does not refer to a specific revision, it may mean something
different tomorrow than it means today.
<p>Here are the branch tags that users might be interested in:
<descrip>
<tag/tag=./
The main line of development, also known as FreeBSD-current.
Note: the "." is not punctuation; it is the name of the tag.
<tag/tag=RELENG_2_2/
The line of development for FreeBSD-2.2.x.
<tag/tag=RELENG_2_1_0/
The line of development for FreeBSD-2.1.x, also known as
FreeBSD-stable.
</descrip>
<p>Here are the revision tags that users might be interested in:
<descrip>
<tag/tag=RELENG_2_2_1_RELEASE/
FreeBSD-2.2.1.
<tag/tag=RELENG_2_2_0_RELEASE/
FreeBSD-2.2.0.
<tag/tag=RELENG_2_1_7_RELEASE/
FreeBSD-2.1.7.
<tag/tag=RELENG_2_1_6_1_RELEASE/
FreeBSD-2.1.6.1.
<tag/tag=RELENG_2_1_6_RELEASE/
FreeBSD-2.1.6.
<tag/tag=RELENG_2_1_5_RELEASE/
FreeBSD-2.1.5.
<tag/tag=RELENG_2_1_0_RELEASE/
FreeBSD-2.1.0.
</descrip>
<p>Be very careful to type the tag name exactly as shown. CVSup cannot
distinguish between valid and invalid tags. If you misspell the tag,
CVSup will behave as though you had specified a valid tag which happens
to refer to no files at all. It will delete your existing sources in
that case.
<p>When you specify a branch tag, you normally receive the latest versions
of the files on that line of development. If you wish to receive some
past version, you can do so by specifying a date with the "date=" value
field. The cvsup(1) manual page explains how to do that.
<p>For our example, we wish to receive FreeBSD-current. We add this line
at the beginning of our supfile:
<verb>
*default tag=.
</verb>
<p>There is an important special case that comes into play if you specify
neither a "tag=" field nor a "date=" field. In that case, you receive
the actual RCS files directly from the server's CVS repository, rather
than receiving a particular version. Developers generally prefer this
mode of operation. By maintaining a copy of the repository itself on
their systems, they gain the ability to browse the revision histories
and examine past versions of files. This gain is achieved at a large
cost in terms of disk space, however.
<p><item>Where do you want to get them from?<label id="cvsup:config:where">
<p>We use the "host=" field to tell cvsup where to obtain its updates.
Any of the <ref id="mirrors-cvsup" name="CVSup mirror sites"> will do,
though you should try to select one that's near to you.
In this example, we'll use the primary FreeBSD distribution site,
"cvsup.FreeBSD.org":
<verb>
*default host=cvsup.FreeBSD.org
</verb>
<p>On any particular run of cvsup, you can override this setting on the
command line, with "-h hostname".
<p><item>Where do you want to put them on your own machine?<label id="cvsup:config:dest">
<p>The "prefix=" field tells cvsup where to put the files it receives.
In this example, we will put the source files directly into our main
source tree, "/usr/src". The "src" directory is already implicit in the
collections we have chosen to receive, so this is the correct
specification:
<verb>
*default prefix=/usr
</verb>
<p><item>Where should cvsup maintain its status files?<label id="cvsup:config:status">
<p>The cvsup client maintains certain status files in what is called
the "base" directory. These files help CVSup to work more
efficiently, by keeping track of which updates you have already
received. We will use the standard base directory,
"/usr/local/etc/cvsup":
<verb>
*default base=/usr/local/etc/cvsup
</verb>
<p>This setting is used by default if it is not specified in the
supfile, so we actually do not need the above line.
<p>If your base directory does not already exist, now would be a good
time to create it. The cvsup client will refuse to run if the base
directory does not exist.
<p><item>Miscellaneous supfile settings:
<p>There is one more line of boiler plate that normally needs to be
present in the supfile:
<verb>
*default release=cvs delete use-rel-suffix compress
</verb>
<p>"release=cvs" indicates that the server should get its information
out of the main FreeBSD CVS repository. This is virtually always the
case, but there are other possibilities which are beyond the scope of
this discussion.
<p>"delete" gives CVSup permission to delete files. You should always
specify this, so that CVSup can keep your source tree fully up to
date. CVSup is careful to delete only those files for which it is
responsible. Any extra files you happen to have will be left strictly
alone.
<p>"use-rel-suffix" is ... arcane. If you really want to know about
it, see the cvsup(1) manual page. Otherwise, just specify it and
do not worry about it.
<p>"compress" enables the use of gzip-style compression on the
communication channel. If your network link is T1 speed or faster,
you probably should not use compression. Otherwise, it helps
substantially.
<p><item>Putting it all together:
<p>Here is the entire supfile for our example:
<verb>
*default tag=.
*default host=cvsup.FreeBSD.org
*default prefix=/usr
*default base=/usr/local/etc/cvsup
*default release=cvs delete use-rel-suffix compress
src-all
cvs-crypto
</verb>
</itemize>
<sect2><heading>Running CVSup</heading>
<p>You are now ready to try an update. The command line for doing this is
quite simple:
<verb>
cvsup supfile
</verb>
<p>where "supfile" is of course the name of the supfile you have just created.
Assuming you are running under X11, cvsup will display a GUI window with
some buttons to do the usual things. Press the "go" button, and watch
it run.
<p>Since you are updating your actual "/usr/src" tree in this example, you
will need to run the program as root so that cvsup has the permissions
it needs to update your files. Having just created your configuration
file, and having never used this program before, that might
understandably make you nervous. There is an easy way to do a trial run
without touching your precious files. Just create an empty directory
somewhere convenient, and name it as an extra argument on the command
line:
<verb>
mkdir /var/tmp/dest
cvsup supfile /var/tmp/dest
</verb>
<p>The directory you specify will be used as the destination directory
for all file updates. CVSup will examine your usual files in
"/usr/src", but it will not modify or delete any of them. Any file
updates will instead land in "/var/tmp/dest/usr/src". CVSup will also
leave its base directory status files untouched when run this way.
The new versions of those files will be written into the specified
directory. As long as you have read access to "/usr/src", you do not
even need to be root to perform this kind of trial run.
<p>If you are not running X11 or if you just do not like GUIs, you
should add a couple of options to the command line when you run cvsup:
<verb>
cvsup -g -L 2 supfile
</verb>
<p>The "-g" tells cvsup not to use its GUI. This is automatic if you are
not running X11, but otherwise you have to specify it.
<p>The "-L 2" tells cvsup to print out the details of all the file updates
it is doing. There are three levels of verbosity, from "-L 0" to "-L 2".
The default is 0, which means total silence except for error messages.
<p>There are plenty of other options available. For a brief list of them,
type "cvsup -H". For more detailed descriptions, see the manual page.
<p>Once you are satisfied with the way updates are working, you can arrange
for regular runs of cvsup using cron(8). Obviously, you should not let
cvsup use its GUI when running it from cron.
<sect2><heading>CVSup File Collections<label id="cvsup:collec"></heading>
<p>The file collections available via CVSup are organized
hierarchically. There are a few large collections, and they are
divided into smaller sub-collections. Receiving a large collection
is equivalent to receiving each of its sub-collections.
The hierarchical relationships among collections are reflected by
the use of indentation in the list below.
<p> The most commonly used collections are <tt/src-all/,
<tt/cvs-crypto/, and <tt/ports-all/. The other collections are used
only by small groups of people for specialized purposes, and some mirror
sites may not carry all of them.
<descrip>
<tag><tt>cvs-all release=cvs</tt></tag>
The main FreeBSD CVS repository, excluding the export-restricted
cryptography code.
<p>
<descrip>
<tag><tt>distrib release=cvs</tt></tag>
Files related to the distribution and mirroring of FreeBSD.
<tag><tt>doc-all release=cvs</tt></tag>
Sources for the FreeBSD handbook and other documentation.
<tag><tt>ports-all release=cvs</tt></tag>
The FreeBSD ports collection.
<p>
<descrip>
<tag><tt>ports-archivers release=cvs</tt></tag>
Archiving tools.
<tag><tt>ports-astro release=cvs</tt></tag>
Astronomical ports.
<tag><tt>ports-audio release=cvs</tt></tag>
Sound support.
<tag><tt>ports-base release=cvs</tt></tag>
Miscellaneous files at the top of /usr/ports.
<tag><tt>ports-benchmarks release=cvs</tt></tag>
Benchmarks.
<tag><tt>ports-cad release=cvs</tt></tag>
Computer aided design tools.
<tag><tt>ports-chinese release=cvs</tt></tag>
Chinese language support.
<tag><tt>ports-comms release=cvs</tt></tag>
Communication software.
<tag><tt>ports-converters release=cvs</tt></tag>
character code converters.
<tag><tt>ports-databases release=cvs</tt></tag>
Databases.
<tag><tt>ports-devel release=cvs</tt></tag>
Development utilities.
<tag><tt>ports-editors release=cvs</tt></tag>
Editors.
<tag><tt>ports-emulators release=cvs</tt></tag>
Emulators for other operating systems.
<tag><tt>ports-games release=cvs</tt></tag>
Games.
<tag><tt>ports-graphics release=cvs</tt></tag>
Graphics utilities.
<tag><tt>ports-japanese release=cvs</tt></tag>
Japanese language support.
<tag><tt>ports-korean release=cvs</tt></tag>
Korean language support.
<tag><tt>ports-lang release=cvs</tt></tag>
Programming languages.
<tag><tt>ports-mail release=cvs</tt></tag>
Mail software.
<tag><tt>ports-math release=cvs</tt></tag>
Numerical computation software.
<tag><tt>ports-mbone release=cvs</tt></tag>
MBone applications.
<tag><tt>ports-misc release=cvs</tt></tag>
Miscellaneous utilities.
<tag><tt>ports-net release=cvs</tt></tag>
Networking software.
<tag><tt>ports-news release=cvs</tt></tag>
USENET news software.
<tag><tt>ports-plan9 release=cvs</tt></tag>
Various programs from Plan9.
<tag><tt>ports-print release=cvs</tt></tag>
Printing software.
<tag><tt>ports-russian release=cvs</tt></tag>
Russian language support.
<tag><tt>ports-security release=cvs</tt></tag>
Security utilities.
<tag><tt>ports-shells release=cvs</tt></tag>
Command line shells.
<tag><tt>ports-sysutils release=cvs</tt></tag>
System utilities.
<tag><tt>ports-textproc release=cvs</tt></tag>
text processing utilities (does not include desktop publishing).
<tag><tt>ports-vietnamese release=cvs</tt></tag>
Vietnamese language support.
<tag><tt>ports-www release=cvs</tt></tag>
Software related to the World Wide Web.
<tag><tt>ports-x11 release=cvs</tt></tag>
X11 software.
</descrip>
<tag><tt>src-all release=cvs</tt></tag>
The main FreeBSD sources, excluding the export-restricted cryptography
code.
<p>
<descrip>
<tag><tt>src-base release=cvs</tt></tag>
Miscellaneous files at the top of <tt>/usr/src</tt>.
<tag><tt>src-bin release=cvs</tt></tag>
User utilities that may be needed in single-user mode
(<tt>/usr/src/bin</tt>).
<tag><tt>src-contrib release=cvs</tt></tag>
Utilities and libraries from outside the FreeBSD project, used
relatively unmodified (<tt>/usr/src/contrib</tt>).
<tag><tt>src-etc release=cvs</tt></tag>
System configuration files (<tt>/usr/src/etc</tt>).
<tag><tt>src-games release=cvs</tt></tag>
Games (<tt>/usr/src/games</tt>).
<tag><tt>src-gnu release=cvs</tt></tag>
Utilities covered by the GNU Public License (<tt>/usr/src/gnu</tt>).
<tag><tt>src-include release=cvs</tt></tag>
Header files (<tt>/usr/src/include</tt>).
<tag><tt>src-lib release=cvs</tt></tag>
Libraries (<tt>/usr/src/lib</tt>).
<tag><tt>src-libexec release=cvs</tt></tag>
System programs normally executed by other programs
(<tt>/usr/src/libexec</tt>).
<tag><tt>src-release release=cvs</tt></tag>
Files required to produce a FreeBSD release (<tt>/usr/src/release</tt>).
<tag><tt>src-sbin release=cvs</tt></tag>
System utilities for single-user mode (<tt>/usr/src/sbin</tt>).
<tag><tt>src-share release=cvs</tt></tag>
Files that can be shared across multiple systems (<tt>/usr/src/share</tt>).
<tag><tt>src-sys release=cvs</tt></tag>
The kernel (<tt>/usr/src/sys</tt>).
<tag><tt>src-tools release=cvs</tt></tag>
Various tools for the maintenance of FreeBSD (<tt>/usr/src/tools</tt>).
<tag><tt>src-usrbin release=cvs</tt></tag>
User utilities (<tt>/usr/src/usr.bin</tt>).
<tag><tt>src-usrsbin release=cvs</tt></tag>
System utilities (<tt>/usr/src/usr.sbin</tt>).
</descrip>
<tag><tt>www release=cvs</tt></tag>
The sources for the World Wide Web data.
</descrip>
<tag><tt>cvs-crypto release=cvs</tt></tag>
The export-restricted cryptography code.
<p>
<descrip>
<tag><tt>src-contrib-crypto release=cvs</tt></tag>
Export-restricted utilities and libraries from outside the FreeBSD
project, used relatively unmodified (<tt>/usr/src/contrib-crypto</tt>).
<tag><tt>src-eBones release=cvs</tt></tag>
Kerberos and DES (<tt>/usr/src/eBones</tt>).
<tag><tt>src-secure release=cvs</tt></tag>
DES (<tt>/usr/src/secure</tt>).
</descrip>
<tag><tt>distrib release=self</tt></tag>
The CVSup server's own configuration files. Used by CVSup mirror sites.
<tag><tt>gnats release=current</tt></tag>
The GNATS bug-tracking database.
<tag><tt>src-sys release=lite2</tt></tag>
The CVS repository for the lite2 kernel merge.
<tag><tt>src-sys release=smp</tt></tag>
The CVS repository for the SMP project.
<tag><tt>www release=current</tt></tag>
The installed World Wide Web data. Used by WWW mirror sites.
</descrip>
<sect2><heading>Announcements, Questions, and Bug Reports</heading>
<p>Most FreeBSD-related discussion of CVSup takes place on the
&a.hackers;. New versions of the software are announced there, as
well as on the &a.announce;.
<p>Questions and bug reports should be addressed to the author of the
program at <url url="mailto:cvsup-bugs@polstra.com"
name="cvsup-bugs@polstra.com">.

View file

@ -1,57 +0,0 @@
<!-- $Id$ -->
<!-- The FreeBSD Documentation Project -->
<!--
<!DOCTYPE linuxdoc PUBLIC "-//FreeBSD//DTD linuxdoc//EN" [
<!ENTITY % authors SYSTEM "authors.sgml">
%authors;
]>
-->
<sect2><heading>Configuring the <tt>cy</tt> driver<label id="cy"></heading>
<p><em>Contributed by &a.alex;.<newline>6 June 1996.</em>
The Cyclades multiport cards are based on the <tt>cy</tt>
driver instead of the usual <tt>sio</tt> driver used by
other multiport cards. Configuration is a simple matter
of:
<enum>
<item>Add the <tt>cy</tt> device to your
<ref id="kernelconfig:config" name="kernel configuration">
(note that your irq and iomem settings may differ).
<tscreen><verb>
device cy0 at isa? tty irq 10 iomem 0xd4000 iosiz 0x2000 vector cyintr
</verb></tscreen>
<item><ref id="kernelconfig:building" name="Rebuild and install">
the new kernel.
<item>Make the <ref id="kernelconfig:nodes" name="device nodes">
by typing (the following example assumes an 8-port board):
<tscreen><verb>
# cd /dev
# for i in 0 1 2 3 4 5 6 7;do ./MAKEDEV cuac$i ttyc$i;done
</verb></tscreen>
<item>If appropriate, add <ref id="dialup" name="dialup">
entries to <ref id="dialup:ttys" name="/etc/ttys"> by
duplicating serial device (<tt>ttyd</tt>) entries and
using <tt>ttyc</tt> in place of <tt>ttyd</tt>. For
example:
<tscreen><verb>
ttyc0 "/usr/libexec/getty std.38400" unknown on insecure
ttyc1 "/usr/libexec/getty std.38400" unknown on insecure
ttyc2 "/usr/libexec/getty std.38400" unknown on insecure
[...]
ttyc7 "/usr/libexec/getty std.38400" unknown on insecure
</verb></tscreen>
<item>Reboot with the new kernel.
</enum>

View file

@ -1,106 +0,0 @@
<!-- $Id: development.sgml,v 1.11 1997/02/22 12:58:19 peter Exp $ -->
<!-- The FreeBSD Documentation Project -->
<sect><heading>The FreeBSD development model<label id="development"></heading>
<p><em>Contributed by &a.asami;</em>.
<p>The development of FreeBSD is a very open and flexible process,
FreeBSD being literally built from the contributions of hundreds of
people around the world, as can be seen from our <ref id="contrib"
name="list of contributors">. We are constantly on the lookout for
new developers and ideas, and those interested in becoming more
closely involved with the project need simply contact us at the
&a.hackers;. Those who prefer to work more independently are also
accommodated, and they are free to use our FTP facilities at <htmlurl
url="ftp://ftp.freebsd.org/pub/FreeBSD/incoming"
name="ftp.freebsd.org"> to distribute their own patches or work-in-progress
sources. The &a.announce; is also available to those wishing
to make other FreeBSD users aware of major areas of work.
Useful things to know about the FreeBSD project and its development process,
whether working independently or in close cooperation:
<descrip>
<tag><bf>The CVS repository</bf><label id="development:cvs-repository"></tag>
<p>The central source tree for FreeBSD is maintained by <htmlurl
url="http://www.cyclic.com/cyclic-pages/CVS-sheet.html" name="CVS">
(Concurrent Version System), a freely available source code control
tool which comes bundled with FreeBSD. The primary <htmlurl
url="http://www.freebsd.org/cgi/cvsweb.cgi" name="CVS repository">
resides on a machine in Concord CA, USA from where it is replicated
to numerous mirror machines throughout the world. The CVS tree, as well
as the <ref id="current" name="-current"> and <ref id="stable"
name="-stable"> trees which are checked out of it, can be easily
replicated to your own machine as well. Please refer to the
<ref id="synching" name="Synchronizing your source tree">
section for more information on doing this.</p>
<tag><bf>The committers list</bf><label id="development:committers"></tag>
<p>The <ref id="contrib:committers" name="committers"> are the people
who have <em>write</em> access to the CVS tree, and are thus
authorized to make modifications to the FreeBSD source (the term
``committer'' comes from the <tt>cvs(1)</tt> ``<tt>commit</tt>''
command, which is used to bring new changes into the CVS repository).
The best way of making submissions for review by the committers list
is to use the <htmlurl url="http://www.freebsd.org/send-pr.html"
name="send-pr(1)"> command, though if something appears to be jammed
in the system then you may also reach them by sending mail to <htmlurl
url="mailto:committers@freebsd.org" name="committers@freebsd.org">.</p>
<tag><bf>The FreeBSD core team</bf><label id="development:core"></tag>
<p>The <ref id="contrib:core" name="FreeBSD core team"> would be
equivalent to the board of directors if the FreeBSD Project were a
company. The primary task of the core team is to make sure the
project, as a whole, is in good shape and is heading in the right
directions. Inviting dedicated and responsible developers to join our
group of committers is one of the functions of the core team, as is
the recruitment of new core team members as others move on. Most
current members of the core team started as committers who's addiction
to the project got the better of them.</p>
<p>Some core team members also have specific <ref id="contrib:who"
name="areas of responsibility">, meaning that they are committed to
ensuring that some large portion of the system works as advertised.
Note that most members of the core team are volunteers when it comes
to FreeBSD development and do not benefit from the project
financially, so "commitment" should also not be misconstrued as
meaning "guaranteed support." The ``board of directors'' analogy
above is not actually very accurate, and it may be more suitable to
say that these are the people who gave up their lives in favor of
FreeBSD against their better judgement! <tt>;)</tt></p>
<tag><bf>Outside contributors</bf></tag>
<p>Last, but definitely not least, the largest group of developers are
the users themselves who provide feedback and bug-fixes to us on an
almost constant basis. The primary way of keeping in touch with FreeBSD's
more non-centralized development is to subscribe to the &a.hackers;
(see <ref id="eresources:mail" name="mailing list info">) where such
things are discussed.</p>
<p><ref id="contrib:additional" name="The list"> of those who have
contributed something which made its way into our source tree is
a long and growing one, so why not join it by contributing something
back to FreeBSD today? <tt>:-)</tt></p>
<p>Providing code is not the only way of contributing to the project;
for a more complete list of things that need doing, please refer to the <ref
id="submitters" name="how to contribute"> section in this handbook.</p>
</descrip>
In summary, our development model is organized as a loose set of
concentric circles. The centralized model is designed for the
convenience of the <em>users</em> of FreeBSD, who are thereby provided
with an easy way of tracking one central code base, not to keep
potential contributors out! Our desire is to present a stable
operating system with a large set of coherent <ref id="ports"
name="application programs"> that the users can easily install and
use, and this model works very well in accomplishing that.
All we ask of those who would join us as FreeBSD developers is some of
the same dedication its current people have to its continued success!

View file

@ -1,249 +0,0 @@
<!-- This is an SGML document in the linuxdoc DTD of the Tutorial for
Configuring a FreeBSD for Dialout Services.
$Id$
The FreeBSD Documentation Project
<!DOCTYPE linuxdoc PUBLIC "-//FreeBSD//DTD linuxdoc//EN">
<linuxdoc>
<article>
<title>Dialout
<author>FAQ
<date>24 Nov 1996, (c) 1996
<abstract> This section contains some basic information on being able to dialout from your FreeBSD box with a modem. This information is really a stepping stone into PPP.
</abstract>
<toc>
-->
<sect><heading>Dialout service<label id="dialout"></heading>
<p><em>Information integrated from FAQ.</em>
The following are tips to getting your host to be able to connect over the modem to another computer. This is appropriate for establishing a terminal session with a remote host.
<p>This is useful to log onto a BBS.
<p>This kind of connection can be extremely helpful to get a file on the Internet if you have problems with PPP. If you need to ftp something and PPP is broken, use the terminal session to ftp it. Then use zmodem to transfer it to your machine.
<sect1>
<heading>Why cannot I run <tt/tip/ or <tt/cu/?</heading>
<p>
On your system, the programs <tt/tip/ and <tt/cu/ are probably
executable only by <tt/uucp/ and group <tt/dialer/. You can use
the group <tt/dialer/ to control who has access to your modem or
remote systems. Just add yourself to group dialer.
Alternatively, you can let everyone on your system run <tt/tip/
and <tt/cu/ by typing:
<verb>
chmod 4511 /usr/bin/tip
</verb>
You do not have to run this command for <tt/cu/, since <tt/cu/ is
just a hard link to <tt/tip/.
<sect1>
<heading>My stock Hayes modem is not supported, what can I do?</heading>
<p>
Actually, the man page for <tt/tip/ is out of date. There is a
generic Hayes dialer already built in. Just use
``<tt/at=hayes/'' in your <tt>/etc/remote</tt> file.
The Hayes driver is not smart enough to recognize some of the
advanced features of newer modems&mdash;messages like <tt/BUSY/,
<tt/NO DIALTONE/, or <tt/CONNECT 115200/ will just confuse it.
You should turn those messages off when you use <tt/tip/ (using
<tt/ATX0&amp;W/).
Also, the dial timeout for <tt/tip/ is 60 seconds. Your modem
should use something less, or else tip will think there is a
communication problem. Try <tt/ATS7=45&amp;W/.
Actually, as shipped <tt/tip/ does not yet support it fully. The
solution is to edit the file <tt/tipconf.h/ in the directory
<tt>/usr/src/usr.bin/tip/tip</tt> Obviously you need the source
distribution to do this.
Edit the line ``<tt/#define HAYES 0/'' to ``<tt/#define HAYES
1/''. Then ``<tt/make/'' and ``<tt/make install/''. Everything
works nicely after that.
<sect1>
<heading>How am I expected to enter these AT commands?<label id="direct-at"></heading>
<p>
Make what is called a ``<tt/direct/'' entry in your
<tt>/etc/remote</tt> file. For example, if your modem is hooked
up to the first serial port, <tt>/dev/cuaa0</tt>, then put in the
following line:
<verb>
cuaa0:dv=/dev/cuaa0:br#19200:pa=none
</verb>
Use the highest bps rate your modem supports in the br
capability. Then, type ``<tt/tip cuaa0/'' and you will be
connected to your modem.
If there is no <tt>/dev/cuaa0</tt> on your system, do this:
<verb>
cd /dev
MAKEDEV cuaa0
</verb>
<p>
Or use cu as root with the following command:
<verb>
cu -l``line'' -s``speed''
</verb>
with line being the serial port (e.g.<tt>/dev/cuaa0</tt>)
and speed being the speed (e.g.<tt>57600</tt>).
When you are done entering the AT commands hit <tt>~.</tt> to exit.
<sect1>
<heading>The <tt/@/ sign for the pn capability does not work!</heading>
<p>
The <tt/@/ sign in the phone number capability tells tip to look in
<tt>/etc/phones</tt> for a phone number. But the <tt/@/ sign is
also a special character in capability files like
<tt>/etc/remote</tt>. Escape it with a backslash:
<verb>
pn=\@
</verb>
<sect1>
<heading>How can I dial a phone number on the command line?</heading>
<p>
Put what is called a ``<tt/generic/'' entry in your
<tt>/etc/remote</tt> file. For example:
<verb>
tip115200|Dial any phone number at 115200 bps:\
:dv=/dev/cuaa0:br#115200:at=hayes:pa=none:du:
tip57600|Dial any phone number at 57600 bps:\
:dv=/dev/cuaa0:br#57600:at=hayes:pa=none:du:
</verb>
Then you can things like ``<tt/tip -115200 5551234/''. If you
prefer <tt/cu/ over <tt/tip/, use a generic cu entry:
<verb>
cu115200|Use cu to dial any number at 115200bps:\
:dv=/dev/cuaa1:br#57600:at=hayes:pa=none:du:
</verb>
and type ``<tt/cu 5551234 -s 115200/''.
<sect1>
<heading>Do I have to type in the bps rate every time I do that?</heading>
<p>
Put in an entry for <tt/tip1200/ or <tt/cu1200/, but go ahead and
use whatever bps rate is appropriate with the br
capability. <tt/tip/ thinks a good default is 1200 bps which is
why it looks for a ``<tt/tip1200/'' entry. You do not have to use
1200 bps, though.
<sect1>
<heading>I access a number of hosts through a terminal server.</heading>
<p>
Rather than waiting until you are connected and typing
``<tt/CONNECT &lt;host&gt;/'' each time, use tip's <tt/cm/
capability. For example, these entries in
<tt>/etc/remote</tt>:
<verb>
pain|pain.deep13.com|Forrester's machine:\
:cm=CONNECT pain\n:tc=deep13:
muffin|muffin.deep13.com|Frank's machine:\
:cm=CONNECT muffin\n:tc=deep13:
deep13:Gizmonics Institute terminal server:\
:dv=/dev/cua02:br#38400:at=hayes:du:pa=none:pn=5551234:
</verb>
will let you type ``<tt/tip pain/'' or ``<tt/tip muffin/'' to
connect to the hosts pain or muffin; and ``<tt/tip deep13/'' to
get to the terminal server.
<sect1>
<heading>Can tip try more than one line for each site?</heading>
<p>
This is often a problem where a university has several modem lines
and several thousand students trying to use them...
<p>
Make an entry for your university in <tt>/etc/remote</tt>
and use <tt>@</tt> for the <tt/pn/ capability:
<verb>
big-university:\
:pn=\@:tc=dialout
dialout:\
:dv=/dev/cuaa3:br#9600:at=courier:du:pa=none:
</verb>
Then, list the phone numbers for the university in
<tt>/etc/phones</tt>:
<verb>
big-university 5551111
big-university 5551112
big-university 5551113
big-university 5551114
</verb>
<tt/tip/ will try each one in the listed order, then give up. If
you want to keep retrying, run <tt/tip/ in a while loop.
<sect1>
<heading>Why do I have to hit CTRL+P twice to send CTRL+P once?</heading>
<p>
CTRL+P is the default ``force'' character, used to tell <tt/tip/
that the next character is literal data. You can set the force
character to any other character with the <tt/~s/ escape, which
means ``set a variable.''
Type ``<tt/~sforce=&lt;single-char&gt;/'' followed by a newline.
<tt/&lt;single-char&gt;/ is any single character. If you leave
out <tt/&lt;single-char&gt;/, then the force character is the nul
character, which you can get by typing CTRL+2 or CTRL+SPACE. A
pretty good value for <tt/&lt;single-char&gt;/ is SHIFT+CTRL+6,
which I have seen only used on some terminal servers.
You can have the force character be whatever you want by
specifying the following in your <tt>&dollar;HOME/.tiprc</tt>
file:
<verb>
force=<single-char>
</verb>
<sect1>
<heading>Suddenly everything I type is in UPPER CASE??</heading>
<p>
You must have pressed CTRL+A, <tt/tip/'s ``raise character,''
specially designed for people with broken caps-lock keys. Use
<tt/~s/ as above and set the variable ``raisechar'' to something
reasonable. In fact, you can set it to the same as the force
character, if you never expect to use either of these features.
Here is a sample .tiprc file perfect for Emacs users who need to
type CTRL+2 and CTRL+A a lot:
<verb>
force=^^
raisechar=^^
</verb>
The ^^ is SHIFT+CTRL+6.
<sect1>
<heading>How can I do file transfers with <tt/tip/?</heading>
<p>
If you are talking to another UNIX system, you can send and
receive files with <tt/~p/ (put) and <tt/~t/ (take). These
commands run ``<tt/cat/'' and ``<tt/echo/'' on the remote system
to accept and send files. The syntax is:
<verb>
~p <local-file> [<remote-file>]
~t <remote-file> [<local-file>]
</verb>
There is no error checking, so you probably should use another
protocol, like zmodem.
<sect1>
<heading>How can I run zmodem with <tt/tip/?</heading>
<p>
To receive files, start the sending program on the remote end.
Then, type ``<tt/~C rz/'' to begin receiving them locally.
To send files, start the receiving program on the remote end.
Then, type ``<tt/~C sz &lt;files&gt;/'' to send them to the
remote system.
</sect>

View file

@ -1,810 +0,0 @@
<!-- This is an SGML document in the linuxdoc DTD of the Tutorial for
Configuring a FreeBSD for Dialup Services by Guy Helmer.
$Id$
<!DOCTYPE linuxdoc PUBLIC "-//Linux//DTD linuxdoc//EN">
<article>
<title>
Configuring FreeBSD for Dialup Services
<author>Guy Helmer, <tt/ghelmer@alpha.dsu.edu/
<date>v0.1, 28 March 1995
<abstract>
-->
<sect><heading>Dialin service<label id="dialup"></heading>
<p><em>Contributed by &a.ghelmer;.</em>
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.
<sect1><heading>Prerequisites<label id="dialup:prereqs"></>
<p>
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 will need certain versions of FreeBSD,
and knowledge of some terminology &amp; modem and cabling.
<sect2><heading>FreeBSD Version</heading>
<p>
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 (<tt/sio/) has improved in every release of FreeBSD, so
more recent versions of FreeBSD are assumed to have better and more
efficient drivers than earlier versions.
<sect2><heading>Terminology</heading>
<p>
A quick rundown of terminology:
<descrip>
<tag/bps/ Bits per Second - the rate at which data is transmitted
<tag/DTE/ Data Terminal Equipment - for example, your computer
<tag/DCE/ Data Communications Equipment - your modem
<tag/RS-232/ EIA standard for serial communications via hardware
</descrip>
If you need more information about these terms and data communications
in general, the author remembers reading that <em/The RS-232 Bible/
(anybody have an ISBN?) is a good reference.
When talking about communications data rates, the author does not use
the term <bf/baud/. Baud refers to the number of electrical state
transitions that may be made in a period of time, while <bf/bps/ (bits
per second) is the ``correct'' term to use (at least it does not seem
to bother the curmudgeons quite a much).
<sect2><heading>External vs. Internal Modems</heading>
<p>
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.
<sect2><heading>Modems and Cables</heading>
<p>
A background knowledge of these items is assumed
<itemize>
<item> You know how to connect your modem to your computer so that the
two can communicate (unless you have an internal modem, which does not
need such a cable)
<item> You are familiar with your modem's command set, or know where
to look up needed commands
<item> You know how to configure your modem (probably via a terminal
communications program) so you can set the non-volatile RAM
parameters
</itemize>
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:
<itemize>
<item> Transmitted Data (<tt/SD/)
<item> Received Data (<tt/RD/)
<item> Request to Send (<tt/RTS/)
<item> Clear to Send (<tt/CTS/)
<item> Data Set Ready (<tt/DSR/)
<item> Data Terminal Ready (<tt/DTR/)
<item> Carrier Detect (<tt/CD/)
<item> Signal Ground (<tt/SG/)
</itemize>
FreeBSD needs the <tt/RTS/ and <tt/CTS/ signals for flow-control at
speeds above 2400bps, the <tt/CD/ signal to detect when a call has
been answered or the line has been hung up, and the <tt/DTR/ signal to
reset the modem after a session is complete. Some cables are wired
without all of the needed signals, so if you have problems, such as
a login session not going away when the line hangs up, you may have a
problem with your cable.
The second prerequisite depends on the modem(s) you use. If you do not
know your modem's command set by heart, you will need to have the
modem's reference book or user's guide handy. Sample commands for USR
Sportster 14,400 external modems will be given, which you may be able
to use as a reference for your own modem's commands.
Lastly, you will need to know how to setup your modem so that it will
work well with FreeBSD. Like other UNIX-like operating systems,
FreeBSD uses the hardware signals to find out when a call has been
answered or a line has been hung up and to hangup and reset the modem
after a call. FreeBSD avoids sending commands to the modem or
watching for status reports from the modem. If you are familiar with
connecting modems to PC-based bulletin board systems, this may seem
awkward.
<sect2><heading>Serial Interface Considerations</heading>
<p>
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.
<sect1><heading>Quick Overview</heading>
<p>
Here is the process that FreeBSD follows to accept dialup logins. A
<tt/getty/ process, spawned by <tt/init/, patiently waits to open the
assigned serial port (<tt>/dev/ttyd0</tt>, for our example). The
command <tt/ps ax/ might show this:
<tscreen><verb>
4850 ?? I 0:00.09 /usr/libexec/getty V19200 ttyd0
</verb></tscreen>
When a user dials the modem's line and the modems connect, the <tt/CD/
line is asserted by the modem. The kernel notices that carrier has
been detected and completes <tt/getty/'s open of the port. <tt/getty/
sends a <tt/login:/ prompt at the specified initial line speed.
<tt/getty/ watches to see if legitimate characters are received, and,
in a typical configuration, if it finds junk (probably due to the
modem's connection speed being different than <tt/getty/'s speed),
<tt/getty/ tries adjusting the line speeds until it receives
reasonable characters.
We hope <tt/getty/ finds the correct speed and the user sees a
<tt/login:/ prompt. After the user enters his/her login name,
<tt/getty/ executes <tt>/usr/bin/login</tt>, which completes the login
by asking for the user's password and then starting the user's shell.
Let's dive into the configuration...
<sect1><heading>Kernel Configuration</heading>
<p>
FreeBSD kernels typically come prepared to search for four serial
ports, known in the PC-DOS world as <tt/COM1:/, <tt/COM2:/,
<tt/COM3:/, and <tt/COM4:/. FreeBSD can presently also handle
``dumb'' multiport serial interface cards, such as the Boca Board
1008 and 2016 (please see the manual page <tt/sio(4)/ for kernel
configuration information if you have a multiport serial card). The
default kernel only looks for the standard COM ports, though.
To see if your kernel recognizes any of your serial ports, watch for
messages while the kernel is booting, or use the
<tt>/sbin/dmesg</tt> command to replay the kernel's boot messages. In
particular, look for messages that start with the characters <tt/sio/.
Hint: to view just the messages that have the word <tt/sio/, use the
command:
<tscreen><verb>
/sbin/dmesg | grep 'sio'
</verb></tscreen>
For example, on a system with four serial ports, these are the
serial-port specific kernel boot messages:
<tscreen><verb>
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
</verb></tscreen>
If your kernel does not recognize all of your serial ports, you will
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'' &lsqb;the source for which is in
<tt>/usr/src/share/doc/smm</tt>&rsqb; and ``FreeBSD Configuration
Options'' &lsqb;in <tt>/sys/conf/options</tt> and in
<tt>/sys/<em>arch</em>/conf/options.<em>arch</em></tt>, with
<em>arch</em> for example being <tt>i386</tt>&rsqb; for more
information on configuring and building kernels. You may have to
unpack the kernel source distribution if have not installed the system
sources already (<tt>srcdist/srcsys.??</tt> in FreeBSD 1.1,
<tt>srcdist/sys.??</tt> 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 have not
already) by <tt/cd/ing to <tt>/sys/i386/conf</tt>. 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
<em/YOURSYS/, where <em/YOURSYS/ is the name of your system, but in
upper-case letters. Edit the file, and change the device lines:
<tscreen><verb>
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
</verb></tscreen>
You can comment-out or completely remove lines for devices you do not
have. If you have a multiport serial board, such as the Boca Board
BB2016, please see the <tt/sio(4)/ man page for complete information
on how to write configuration lines for multiport boards. Be careful
if you are using a configuration file that was previously used for a
different version of FreeBSD because the device flags have changed
between versions.
Note that <tt/port "IO_COM1"/ is a substitution for <tt/port 0x3f8/,
<tt/IO_COM2/ is <tt/0x2f8/, <tt/IO_COM3/ is <tt/0x3e8/, and
<tt/IO_COM4/ is <tt/0x2e8/, which are fairly common port addresses for
their respective serial ports; interrupts 4, 3, 5, and 9 are fairly
common interrupt request lines. Also note that regular serial ports
<bf>cannot</bf> 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 <tt/config/ as documented in ``Building Berkeley Kernels with
Config'' and the <tt/config(8)/ manual page to prepare a kernel
building directory, then build, install, and test the new kernel.
<sect1><heading>Device Special Files</heading>
<p>
Most devices in the kernel are accessed through ``device special
files'', which are located in the <tt>/dev</tt> directory. The
<tt/sio/ devices are accessed through the <tt>/dev/ttyd?</tt>
(dial-in) and <tt>/dev/cua0?</tt> (call-out) devices. On FreeBSD
version 1.1.5 and higher, there are also initialization devices
(<tt>/dev/ttyid?</tt> and <tt>/dev/cuai0?</tt>) and locking devices
(<tt>/dev/ttyld?</tt> and <tt>/dev/cual0?</tt>). The initialization
devices are used to initialize communications port parameters each
time a port is opened, such as <tt>crtscts</tt> for modems which use
<tt>CTS/RTS</tt> 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 <tt/termios(4)/, <tt/sio(4)/,
and <tt/stty(1)/ for information on the terminal settings, locking
&amp; initializing devices, and setting terminal options,
respectively.
<sect2><heading>Making Device Special Files</heading>
<p>
A shell script called <tt/MAKEDEV/ in the <tt>/dev</tt> directory
manages the device special files. (The manual page for
<tt/MAKEDEV(8)/ on FreeBSD 1.1.5 is fairly bogus in its discussion of
<tt/COM/ ports, so ignore it.) To use <tt/MAKEDEV/ to make dialup
device special files for <tt/COM1:/ (port 0), <tt/cd/ to <tt>/dev</tt>
and issue the command <tt/MAKEDEV ttyd0/. Likewise, to make dialup
device special files for <tt/COM2:/ (port 1), use <tt/MAKEDEV ttyd1/.
<tt/MAKEDEV/ not only creates the <tt>/dev/ttyd?</tt> device special
files, but also creates the <tt>/dev/cua0?</tt> (and all of the
initializing and locking special files under FreeBSD 1.1.5 and up) and
removes the hardwired terminal special file <tt>/dev/tty0?</tt>, if it
exists.
After making new device special files, be sure to check the
permissions on the files (especially the <tt>/dev/cua*</tt> files) to
make sure that only users who should have access to those device
special files can read &amp; write on them - you probably do not want
to allow your average user to use your modems to dialout. The default
permissions on the <tt>/dev/cua*</tt> files should be sufficient:
<tscreen><verb>
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
</verb></tscreen>
These permissions allow the user <tt/uucp/ and users in the group
<tt/dialer/ to use the call-out devices.
<sect1><heading>Configuration Files</heading>
<p>
There are three system configuration files in the <tt>/etc</tt>
directory that you will probably need to edit to allow dialup access to
your FreeBSD system. The first, <tt>/etc/gettytab</tt>, contains
configuration information for the <tt>/usr/libexec/getty</tt> daemon.
Second, <tt>/etc/ttys</tt> holds information that tells
<tt>/sbin/init</tt> what <tt/tty/ devices should have <tt/getty/
processes running on them. Lastly, you can place port initialization
commands in the <tt>/etc/rc.serial</tt> script if you have FreeBSD
1.1.5.1 or higher; otherwise, you can initialize ports in the
<tt>/etc/rc.local</tt> 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 does not know what a user's true data
rate is, so full-screen programs like Emacs will not 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 <tt/getty/ does not
understand any particular modem's connection speed reporting,
<tt/getty/ gives a <tt/login:/ message at an initial speed and watches
the characters that come back in response. If the user sees junk,
it is assumed that they know they should press the
<tt>&lt;Enter&gt;</tt> key until they see a recognizable prompt. If
the data rates do not match, <tt/getty/ sees anything the user types as
``junk'', tries going to the next speed and gives the <tt/login:/
prompt again. This procedure can continue ad nauseum, but normally
only takes a keystroke or two before the user sees a good prompt.
Obviously, this login sequence does not look as clean as the former
``locked-speed'' method, but a user on a low-speed connection should
receive better interactive response from full-screen programs.
The author will try to give balanced configuration information, but is
biased towards having the modem's data rate follow the connection
rate.
<sect2><heading>/etc/gettytab</heading>
<p>
<tt>/etc/gettytab</tt> is a <tt/termcap(5)/-style file of
configuration information for <tt/getty(8)/. Please see the
<tt/gettytab(4)/ manual page for complete information on the format of
the file and the list of capabilities.
<sect3><heading>Locked-Speed Config</heading>
<p>
If you are locking your modem's data communications rate at a
particular speed, you probably will not need to make any changes to
<tt>/etc/gettytab</tt>.
<sect3><heading>Matching-Speed Config</heading>
<p>
You will need to setup an entry in <tt>/etc/gettytab</tt> to give
<tt/getty/ information about the speeds you wish to use for your
modem. If you have a 2400 bps modem, you can probably use the
existing <tt/D2400/ entry. This entry already exists in the FreeBSD
1.1.5.1 <tt/gettytab/ file, so you do not need to add it unless it is
missing under your version of FreeBSD:
<tscreen><verb>
#
# 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:
</verb></tscreen>
If you have a higher speed modem, you will probably need to add an entry
in <tt>/etc/gettytab</tt>; here is an entry you could use for a 14.4
Kbps modem with a top interface speed of 19.2 Kbps:
<tscreen><verb>
#
# 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:
</verb></tscreen>
On FreeBSD 1.1.5 and later, this will result in 8-bit, no parity
connections. Under FreeBSD 1.1, add <tt/:np:/ parameters to the
<tt>std.<em/xxx/</tt> 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 <tt/nx=/ (<bf/next table/) capability.
Each of the lines uses a <tt/tc=/ (<bf/table continuation/) entry to
pick up the rest of the ``standard'' settings for a particular data
rate.
If you have a 28.8 Kbps modem and/or you want to take advantage of
compression on a 14.4 Kbps modem, you need to use a higher
communications rate than 19.2 Kbps. Here is an example of a
<tt/gettytab/ entry starting a 57.6 Kbps:
<tscreen><verb>
#
# Additions for a V.32bis or V.34 Modem
# Starting at 57.6 Kbps
#
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:
</verb></tscreen>
If you have a slow CPU or a heavily loaded system and you do not have
16550A-based serial ports, you may receive sio ``silo'' errors at 57.6
Kbps.
<sect2><heading>/etc/ttys<label id="dialup:ttys"></heading>
<p>
<tt>/etc/ttys</tt> is the list of <tt/ttys/ for <tt/init/ to monitor.
<tt>/etc/ttys</tt> also provides security information to <tt/login/
(user <tt/root/ may only login on ttys marked <tt/secure/). See the
manual page for <tt/ttys(5)/ for more information.
You will need to either modify existing lines in <tt>/etc/ttys</tt> or
add new lines to make <tt/init/ run <tt/getty/ processes automatically
on your new dialup ports. The general format of the line will be the
same, whether you are using a locked-speed or matching-speed
configuration:
<tscreen><verb>
ttyd0 "/usr/libexec/getty xxx" dialup on
</verb></tscreen>
The first item in the above line is the device special file for this
entry - <tt/ttyd0/ means <tt>/dev/ttyd0</tt> is the file that this
<tt/getty/ will be watching. The second item, <tt>"/usr/libexec/getty
<em/xxx/"</tt> (<em/xxx/ will be replaced by the initial <tt/gettytab/
capability) is the process <tt/init/ will run on the device. The
third item, <tt/dialup/, is the default terminal type. The fourth
parameter, <tt/on/, indicates to <tt/init/ that the line is
operational. There can be a fifth parameter, <tt>secure</tt>, but it
should only be used for terminals which are physically secure (such as
the system console).
The default terminal type (<tt/dialup/ in the example above) may
depend on local preferences. <tt/dialup/ is the traditional default
terminal type on dialup lines so that users may customize their login
scripts to notice when the terminal is <tt/dialup/ and automatically
adjust their terminal type. However, the author finds it easier at
his site to specify <tt/vt102/ as the default terminal type, since the
users just use VT102 emulation on their remote systems.
After you have made changes to <tt>/etc/ttys</tt>, you may send the
<tt/init/ process a <tt/HUP/ signal to re-read the file. You can use
the command
<tscreen><verb>
kill -1 1
</verb></tscreen>
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 <tt/init/.
<sect3><heading>Locked-Speed Config</heading>
<p>
For a locked-speed configuration, your <tt/ttys/ entry needs to
have a fixed-speed entry provided to <tt/getty/. For a modem whose
port speed is locked at 19.2 Kbps, the <tt/ttys/ entry might look like
this:
<tscreen><verb>
ttyd0 "/usr/libexec/getty std.19200" dialup on
</verb></tscreen>
If your modem is locked at a different data rate, substitute the
appropriate name for the <tt>std.<em/speed/</tt> entry for
<tt/std.19200/ from <tt>/etc/gettytab</tt> for your modem's data rate.
<sect3><heading>Matching-Speed Config</heading>
<p>
In a matching-speed configuration, your <tt/ttys/ entry needs to
reference the appropriate beginning ``auto-baud'' (sic) entry in
<tt>/etc/gettytab</tt>. For example, if you added the above suggested
entry for a matching-speed modem that starts at 19.2 Kbps (the
<tt/gettytab/ entry containing the <tt/V19200/ starting point), your
<tt/ttys/ entry might look like this:
<tscreen><verb>
ttyd0 "/usr/libexec/getty V19200" dialup on
</verb></tscreen>
<sect2><heading>/etc/rc.serial or /etc/rc.local</heading>
<p>
High-speed modems, like V.32, V.32bis, and V.34 modems, need to use
hardware (<tt>RTS/CTS</tt>) flow control. You can add <tt/stty/
commands to <tt>/etc/rc.serial</tt> on FreeBSD 1.1.5.1 and up, or
<tt>/etc/rc.local</tt> 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,
<tt>/etc/rc.serial</tt> reads:
<tscreen><verb>
#!/bin/sh
#
# Serial port initial configuration
stty -f /dev/ttyid1 crtscts
stty -f /dev/cuai01 crtscts
</verb></tscreen>
which sets the <tt/termios/ flag <tt/crtscts/ on serial port &num;1's
(<tt/COM2:/) dialin and dialout initialization devices.
On an old FreeBSD 1.1 system, these entries were added to
/etc/rc.local to set the <tt/crtscts/ flag on the devices:
<tscreen><verb>
# 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
</verb></tscreen>
Since there is no 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 are not cleared by a miscreant.
<sect1><heading>Modem Settings</heading>
<p>
If you have a modem whose parameters may be permanently set in
non-volatile RAM, you will need to use a terminal program (such as Telix
under PC-DOS or <tt/tip/ under FreeBSD) to set the parameters.
Connect to the modem using the same communications speed as the
initial speed <tt/getty/ will use and configure the modem's
non-volatile RAM to match these requirements:
<itemize>
<item> <tt/CD/ asserted when connected
<item> <tt/DTR/ asserted for operation; dropping DTR hangs up line
&amp; resets modem
<item> <tt/CTS/ transmitted data flow control
<item> Disable <tt>XON/XOFF</tt> flow control
<item> <tt/RTS/ received data flow control
<item> Quiet mode (no result codes)
<item> No command echo
</itemize>
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:
<tscreen><verb>
ATZ
AT&amp;C1&amp;D2&amp;H1&amp;I0&amp;R2&amp;W
</verb></tscreen>
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:
<itemize>
<item> Switch 1: UP - DTR Normal
<item> Switch 2: Do not care (Verbal Result Codes/Numeric Result Codes)
<item> Switch 3: UP - Suppress Result Codes
<item> Switch 4: DOWN - No echo, offline commands
<item> Switch 5: UP - Auto Answer
<item> Switch 6: UP - Carrier Detect Normal
<item> Switch 7: UP - Load NVRAM Defaults
<item> Switch 8: Do not care (Smart Mode/Dumb Mode)
</itemize>
Result codes should be disabled/suppressed for dialup modems to avoid
problems that can occur if <tt/getty/ mistakenly gives a <tt/login:/
prompt to a modem that is in command mode and the modem echoes the
command or returns a result code. I have heard this sequence can result
in a extended, silly conversation between <tt/getty/ and the modem.
<sect2><heading>Locked-speed Config</heading>
<p>
For a locked-speed configuration, you will 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:
<tscreen><verb>
ATZ
AT&amp;B1&amp;W
</verb></tscreen>
<sect2><heading>Matching-speed Config</heading>
<p>
For a variable-speed configuration, you will 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:
<tscreen><verb>
ATZ
AT&amp;B2&amp;W
</verb></tscreen>
<sect2><heading>Checking the Modem's Configuration</heading>
<p>
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 <tt/ATI5/ displays the
settings that are stored in the non-volatile RAM. To see the true
operating parameters of the modem (as influenced by the USR's DIP
switch settings), use the commands <tt/ATZ/ and then <tt/ATI4/.
If you have a different brand of modem, check your modem's manual to
see how to double-check your modem's configuration parameters.
<sect1><heading>Troubleshooting</heading>
<p>
Here are a few steps you can follow to check out the dialup modem on
your system.
<sect2><heading>Checking out the FreeBSD system</heading>
<p>
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 <tt/DTR/ indicator lights when the <tt/login:/ prompt appears
on the system's console - if it lights up, that should mean that
FreeBSD has started a <tt/getty/ process on the appropriate
communications port and is waiting for the modem to accept a call.
If the <tt/DTR/ indicator doesn't light, login to the FreeBSD system
through the console and issue a <tt/ps ax/ to see if FreeBSD is trying
to run a <tt/getty/ process on the correct port. You should see a
lines like this among the processes displayed:
<tscreen><verb>
114 ?? I 0:00.10 /usr/libexec/getty V19200 ttyd0
115 ?? I 0:00.10 /usr/libexec/getty V19200 ttyd1
</verb></tscreen>
If you see something different, like this:
<tscreen><verb>
114 d0 I 0:00.10 /usr/libexec/getty V19200 ttyd0
^^
</verb></tscreen>
and the modem has not accepted a call yet, this means that <tt/getty/
has completed its open on the communications port. This could
indicate a problem with the cabling or a mis-configured modem, because
<tt/getty/ should not be able to open the communications port until
<tt/CD/ (carrier detect) has been asserted by the modem.
If you do not see any <tt/getty/ processes waiting to open the desired
<tt/ttyd?/ port, double-check your entries in <tt>/etc/ttys</tt> to
see if there are any mistakes there. Also, check the log file
<tt>/var/log/messages</tt> to see if there are any log messages from
<tt/init/ or <tt/getty/ regarding any problems. If there are any
messages, triple-check the configuration files <tt>/etc/ttys</tt> and
<tt>/etc/gettytab</tt>, as well as the appropriate device special
files <tt>/dev/ttyd?</tt>, for any mistakes, missing entries, or
missing device special files.
<sect2><heading>Try Dialing In</heading>
<p>
Try dialing into the system; be sure to use 8 bits, no parity, 1 stop
bit on the remote system. If you do not get a prompt right away, or
get garbage, try pressing <tt>&lt;Enter&gt;</tt> about once per
second. If you still do not see a <tt/login:/ prompt after a while,
try sending a <tt>BREAK</tt>. If you are using a high-speed modem to
do the dialing, try dialing again after locking the dialing modem's
interface speed (via <tt>AT&amp;B1</tt> on a USR Sportster, for
example).
If you still cannot get a <tt/login:/ prompt, check
<tt>/etc/gettytab</tt> again and double-check that
<itemize>
<item> The initial capability name specified in <tt>/etc/ttys</tt> for
the line matches a name of a capability in <tt>/etc/gettytab</tt>
<item> Each <tt/nx=/ entry matches another <tt/gettytab/ capability
name
<item> Each <tt/tc=/ entry matches another <tt/gettytab/ capability
name
</itemize>
If you dial but the modem on the FreeBSD system will not answer, make
sure that the modem is configured to answer the phone when <tt/DTR/ is
asserted. If the modem seems to be configured correctly, verify that
the <tt/DTR/ line is asserted by checking the modem's indicator lights
(if it has any).
If you have gone over everything several times and it still does not work,
take a break and come back to it later. If it still does not work,
perhaps you can send an electronic mail message to the &a.questions
describing your modem and your problem, and the good folks on the list will
try to help.
<sect1><heading>Acknowledgments</heading>
<p>
Thanks to these people for comments and advice:
<descrip>
<tag>&a.kelly</tag> for a number of good suggestions
</descrip>

View file

@ -1,163 +0,0 @@
<!-- $Id$ -->
<!-- The FreeBSD Documentation Project -->
<sect><heading>Diskless operation<label id="diskless"></heading>
<p><em>Contributed by &a.martin;.</em>
<tt>netboot.com/netboot.rom</tt> allow you to boot your
FreeBSD machine over the network and run FreeBSD without
having a disk on your client. Under 2.0 it is now
possible to have local swap. Swapping over NFS is also
still supported.
Supported Ethernet cards include: Western Digital/SMC
8003, 8013, 8216 and compatibles; NE1000/NE2000 and
compatibles (requires recompile)
<sect1>
<heading>Setup Instructions</heading>
<p><enum>
<item> Find a machine that will be your server. This
machine will require enough disk space to hold the
FreeBSD 2.0 binaries and have bootp, tftp and NFS
services available.
Tested machines:
<itemize>
<item>HP9000/8xx running HP-UX 9.04 or later (pre
9.04 doesn't work)</item>
<item>Sun/Solaris 2.3. (you may need to get
bootp)</item>
</itemize>
<item>Set up a bootp server to provide the client with
IP, gateway, netmask.
<tscreen><verb>
diskless:\
:ht=ether:\
:ha=0000c01f848a:\
:sm=255.255.255.0:\
:hn:\
:ds=192.1.2.3:\
:ip=192.1.2.4:\
:gw=192.1.2.5:\
:vm=rfc1048:
</verb></tscreen></item>
<item>Set up a TFTP server (on same machine as bootp
server) to provide booting information to client.
The name of this file is <tt>cfg.X.X.X.X</tt> (or
<tt>/tftpboot/cfg.X.X.X.X</tt>, it will try both)
where <tt>X.X.X.X</tt> is the IP address of the
client. The contents of this file can be any valid
netboot commands. Under 2.0, netboot has the
following commands:
<tscreen><verb>
help - print help list
ip <X.X.X.X> - print/set client's IP address
server <X.X.X.X> - print/set bootp/tftp server address
netmask <X.X.X.X> - print/set netmask
hostname <name> - print/set hostname
kernel <name> - print/set kernel name
rootfs <ip:/fs> - print/set root filesystem
swapfs <ip:/fs> - print/set swap filesystem
swapsize <size> - set diskless swapsize in Kbytes
diskboot - boot from disk
autoboot - continue boot process
trans <on|off> - turn transceiver on|off
flags [bcdhsv] - set boot flags
</verb></tscreen>
A typical completely diskless cfg file might contain:
<tscreen><verb>
rootfs 192.1.2.3:/rootfs/myclient
swapfs 192.1.2.3:/swapfs
swapsize 20000
hostname myclient.mydomain
</verb></tscreen>
A cfg file for a machine with local swap might contain:
<tscreen><verb>
rootfs 192.1.2.3:/rootfs/myclient
hostname myclient.mydomain
</verb></tscreen>
<item>Ensure that your NFS server has exported the root
(and swap if applicable) filesystems to your client,
and that the client has root access to these
filesystems
A typical <tt>/etc/exports</tt> file on FreeBSD might
look like:
<tscreen><verb>
/rootfs/myclient -maproot=0:0 myclient.mydomain
/swapfs -maproot=0:0 myclient.mydomain
</verb></tscreen>
And on HP-UX:
<tscreen><verb>
/rootfs/myclient -root=myclient.mydomain
/swapfs -root=myclient.mydomain
</verb></tscreen>
<item>If you are swapping over NFS (completely diskless
configuration) create a swap file for your client
using <tt>dd</tt>. If your <tt>swapfs</tt> command has the
arguments <tt>/swapfs</tt> and the size 20000 as in the
example above, the swapfile for myclient will be called
<tt>/swapfs/swap.X.X.X.X</tt> where <tt>X.X.X.X</tt>
is the client's IP addr, eg:
<tscreen><verb>
# dd if=/dev/zero of=/swapfs/swap.192.1.2.4 bs=1k count=20000
</verb></tscreen>
Also, the client's swap space might contain sensitive
information once swapping starts, so make sure to
restrict read and write access to this file to prevent
unauthorized access:
<tscreen><verb>
# chmod 0600 /swapfs/swap.192.1.2.4
</verb></tscreen>
<item> Unpack the root filesystem in the directory the
client will use for its root filesystem
(<tt>/rootfs/myclient</tt> in the example above).
<itemize>
<item> On HP-UX systems: The server should be
running HP-UX 9.04 or later for HP9000/800 series
machines. Prior versions do not allow the
creation of device files over NFS.
<item> When extracting <tt>/dev</tt> in
<tt>/rootfs/myclient</tt>, beware that some
systems (HPUX) will not create device files that
FreeBSD is happy with. You may have to go to
single user mode on the first bootup (press
control-c during the bootup phase), cd
<tt>/dev</tt> and do a "<tt>sh ./MAKEDEV
all</tt>" from the client to fix this.
</itemize>
<item>Run <tt>netboot.com</tt> on the client or make an EPROM
from the <tt>netboot.rom</tt> file
</enum>
<sect1>
<heading>Using Shared <tt>/</tt> and <tt>/usr</tt> filesystems</heading>
<p>At present there isn't an officially sanctioned way of
doing this, although I have been using a shared <tt>/usr</tt>
filesystem and individual <tt>/</tt> filesystems for each client.
If anyone has any suggestions on how to do this cleanly,
please let me and/or the &a.core; know.
<sect1>
<heading>Compiling netboot for specific setups</heading>
<p>Netboot can be compiled to support NE1000/2000 cards by
changing the configuration in
<tt>/sys/i386/boot/netboot/Makefile</tt>. See the
comments at the top of this file.

View file

@ -1,535 +0,0 @@
<!-- $Id$ -->
<!-- The FreeBSD Documentation Project -->
<!--
<!DOCTYPE linuxdoc PUBLIC "-//FreeBSD//DTD linuxdoc//EN" [
<!ENTITY % authors SYSTEM "authors.sgml">
%authors;
]>
-->
<sect><heading>DMA: What it is and how it works<label id="dma"></heading>
<p><em>Copyright &copy; 1995 &a.uhclem;, All Rights Reserved.<newline>
10 December 1996.</em>
<!-- Version 1(3) -->
Direct Memory Access (DMA) is a method of allowing data to
be moved from one location to another in a computer without
intervention from the central processor (CPU).
The way that the DMA function is implemented varies between
computer architectures, so this discussion will limit
itself to the implementation and workings of the DMA
subsystem on the IBM Personal Computer (PC), the IBM PC/AT
and all of its successors and clones.
The PC DMA subsystem is based on the Intel 8237 DMA
controller. The 8237 contains four DMA channels that can
be programmed independently and any one of the channels may be
active at any moment. These channels are numbered 0, 1, 2
and 3. Starting with the PC/AT, IBM added a second 8237
chip, and numbered those channels 4, 5, 6 and 7.
The original DMA controller (0, 1, 2 and 3) moves one byte
in each transfer. The second DMA controller (4, 5, 6, and
7) moves 16-bits from two adjacent memory locations in each
transfer, with the first byte always coming from an even-numbered
address. The two controllers are identical components and the
difference in transfer size is caused by the way the second
controller is wired into the system.
The 8237 has two electrical signals for each channel, named
DRQ and -DACK. There are additional signals with the
names HRQ (Hold Request), HLDA (Hold Acknowledge), -EOP
(End of Process), and the bus control signals -MEMR (Memory
Read), -MEMW (Memory Write), -IOR (I/O Read), and -IOW (I/O
Write).
The 8237 DMA is known as a ``fly-by'' DMA controller. This
means that the data being moved from one location to
another does not pass through the DMA chip and is not
stored in the DMA chip. Subsequently, the DMA can only
transfer data between an I/O port and a memory address, but
not between two I/O ports or two memory locations.
<quote><em>Note:</em> The 8237 does allow two channels to
be connected together to allow memory-to-memory DMA
operations in a non-``fly-by'' mode, but nobody in the PC
industry uses this scarce resource this way since it is
faster to move data between memory locations using the
CPU.</quote>
In the PC architecture, each DMA channel is normally
activated only when the hardware that uses that DMA
requests a transfer by asserting the DRQ line for that
channel.
<sect1><heading>A Sample DMA transfer</heading>
<p>Here is an example of the steps that occur to cause a
DMA transfer. In this example, the floppy disk
controller (FDC) has just read a byte from a diskette and
wants the DMA to place it in memory at location
0x00123456. The process begins by the FDC asserting the
DRQ2 signal to alert the DMA controller.
The DMA controller will note that the DRQ2 signal is asserted.
The DMA controller will then make sure that DMA channel 2
has been programmed and is enabled. The DMA controller
also makes sure that none of the other DMA channels are active
or have a higher priority. Once these checks are
complete, the DMA asks the CPU to release the bus so that
the DMA may use the bus. The DMA requests the bus by
asserting the HRQ signal which goes to the CPU.
The CPU detects the HRQ signal, and will complete
executing the current instruction. Once the processor
has reached a state where it can release the bus, it
will. Now all of the signals normally generated by the
CPU (-MEMR, -MEMW, -IOR, -IOW and a few others) are
placed in a tri-stated condition (neither high or low)
and then the CPU asserts the HLDA signal which tells the
DMA controller that it is now in charge of the bus.
Depending on the processor, the CPU may be able to
execute a few additional instructions now that it no
longer has the bus, but the CPU will eventually have to
wait when it reaches an instruction that must read
something from memory that is not in the internal
processor cache or pipeline.
Now that the DMA ``is in charge'', the DMA activates its
-MEMR, -MEMW, -IOR, -IOW output signals, and the address
outputs from the DMA are set to 0x3456, which will be
used to direct the byte that is about to transferred to a
specific memory location.
The DMA will then let the device that requested the DMA
transfer know that the transfer is commencing. This is
done by asserting the -DACK signal, or in the case of the
floppy disk controller, -DACK2 is asserted.
The floppy disk controller is now responsible for placing
the byte to be transferred on the bus Data lines. Unless
the floppy controller needs more time to get the data
byte on the bus (and if the peripheral does need more time it
alerts the DMA via the READY signal), the DMA will wait
one DMA clock, and then de-assert the -MEMW and -IOR
signals so that the memory will latch and store the byte
that was on the bus, and the FDC will know that the byte
has been transferred.
Since the DMA cycle only transfers a single byte at a
time, the FDC now drops the DRQ2 signal, so that the DMA
knows it is no longer needed. The DMA will de-assert the
-DACK2 signal, so that the FDC knows it must stop placing
data on the bus.
The DMA will now check to see if any of the other DMA
channels have any work to do. If none of the channels
have their DRQ lines asserted, the DMA controller has
completed its work and will now tri-state the -MEMR,
-MEMW, -IOR, -IOW and address signals.
Finally, the DMA will de-assert the HRQ signal. The CPU
sees this, and de-asserts the HOLDA signal. Now the CPU
activates its -MEMR, -MEMW, -IOR, -IOW and address lines,
and it resumes executing instructions and accessing main
memory and the peripherals.
For a typical floppy disk sector, the above process is
repeated 512 times, once for each byte. Each time a byte
is transferred, the address register in the DMA is
incremented and the counter that shows how many bytes are
to be transferred is decremented.
When the counter reaches zero, the DMA asserts the EOP
signal, which indicates that the counter has reached zero
and no more data will be transferred until the DMA
controller is reprogrammed by the CPU. This event is
also called the Terminal Count (TC). There is only one
EOP signal, because only one DMA channel can be active at
any instant.
If a peripheral wants to generate an interrupt when the
transfer of a buffer is complete, it can test for its
-DACK signal and the EOP signal both being asserted at
the same time. When that happens, it means the DMA will not
transfer any more information for that peripheral without
intervention by the CPU. The peripheral can then assert
one of the interrupt signals to get the processors'
attention. The DMA chip itself is not capable of
generating an interrupt. The peripheral and its
associated hardware is responsible for generating any
interrupt that occurs.
It is important to understand that although the CPU
always releases the bus to the DMA when the DMA makes the
request, this action is invisible to both applications
and the operating systems, except for slight changes in
the amount of time the processor takes to execute
instructions when the DMA is active. Subsequently, the
processor must poll the peripheral, poll the registers in
the DMA chip, or receive an interrupt from the peripheral
to know for certain when a DMA transfer has completed.
<sect1><heading>DMA Page Registers and 16Meg address space limitations</heading>
<p>You may have noticed earlier that instead of the DMA
setting the address lines to 0x00123456 as we said
earlier, the DMA only set 0x3456. The reason for this
takes a bit of explaining.
When the original IBM PC was designed, IBM elected to use
both DMA and interrupt controller chips that were
designed for use with the 8085, an 8-bit processor with
an address space of 16 bits (64K). Since the IBM PC
supported more than 64K of memory, something had to be
done to allow the DMA to read or write memory locations
above the 64K mark. What IBM did to solve this problem
was to add a latch for each DMA channel that holds the
upper bits of the address to be read to or written from.
Whenever a DMA channel is active, the contents of that
latch are written to the address bus and kept there until
the DMA operation for the channel ends. These latches
are called ``Page Registers''.
So for our example above, the DMA would put the 0x3456
part of the address on the bus, and the Page Register for
DMA channel 2 would put 0x0012xxxx on the bus. Together,
these two values form the complete address in memory that
is to be accessed.
Because the Page Register latch is independent of the DMA
chip, the area of memory to be read or written must not
span a 64K physical boundary. If the DMA accesses memory
location 0xffff, after the transfer the DMA will then increment
the address register and the DMA will access the next byte at
location 0x0000, not 0x10000. The results of letting this
happen are probably not intended.
<quote><em>Note:</em> ``Physical'' 64K boundaries should
not be confused with 8086-mode 64K ``Segments'', which
are created by adding a segment register with an offset
register. Page Registers have no address overlap.</quote>
To further complicate matters, the external DMA address
latches on the PC/AT hold only eight bits, so that gives
us 8+16=24 bits, which means that the DMA can only point
at memory locations between 0 and 16Meg. For newer
computers that allow more than 16Meg of memory, the
PC-compatible DMA cannot access memory locations above 16Meg.
To get around this restriction, operating systems will
reserve a buffer in an area below 16Meg that also does not
span a physical 64K boundary. Then the DMA will be
programmed to transfer data from the peripheral and into that
buffer. Once the DMA has moved the data into this buffer,
the operating system will then copy the data from the buffer
to the address where the data is really supposed to be stored.
When writing data from an address above 16Meg to a
DMA-based peripheral, the data must be first copied from
where it resides into a buffer located below 16Meg, and
then the DMA can copy the data from the buffer to the
hardware. In FreeBSD, these reserved buffers are called
``Bounce Buffers''. In the MS-DOS world, they are
sometimes called ``Smart Buffers''.
<sect1><heading>DMA Operational Modes and Settings</heading>
<p>The 8237 DMA can be operated in several modes. The main
ones are:
<descrip>
<tag/Single/ A single byte (or word) is transferred.
The DMA must release and re-acquire the bus for each
additional byte. This is commonly-used by devices
that cannot transfer the entire block of data
immediately. The peripheral will request the DMA
each time it is ready for another transfer.
The floppy disk controller only has a one-byte
buffer, so it uses this mode.
<tag>Block/Demand</tag> Once the DMA acquires the
system bus, an entire block of data is transferred,
up to a maximum of 64K. If the peripheral needs
additional time, it can assert the READY signal to
suspend the transfer briefly. READY should not be
used excessively, and for slow peripheral transfers,
the Single Transfer Mode should be used instead.
The difference between Block and Demand is that once a
Block transfer is started, it runs until the transfer
count reaches zero. DRQ only needs to be asserted
until -DACK is asserted. Demand Mode will transfer
one more bytes until DRQ is de-asserted and the DMA
pauses the transfer and releases the bus back to the CPU.
When DRQ is asserted later, the transfer resumes where
it was suspended.
Older hard disk controllers used Demand Mode until
CPU speeds increased to the point that it was more
efficient to transfer the data using the CPU, particularly
if the memory locations used in the transfer were above the
16Meg mark.
<tag>Cascade</tag> This mechanism allows a DMA channel
to request the bus, but then the attached peripheral
device is responsible for placing the addressing
information on the bus instead of the DMA. This is also
known as ``Bus Mastering''.
When a DMA channel in Cascade Mode receives control
of the bus, the DMA does not place addresses and I/O
control signals on the bus like the DMA normally does
when it is active. Instead, the DMA only asserts the
-DACK signal for this channel.
At this point it is up to the device connected to that DMA
channel to provide address and bus control signals.
The peripheral has complete control over the system
bus, and can do reads and/or writes to any address
below 16Meg. When the peripheral is finished with
the bus, it de-asserts the DRQ line, and the DMA
controller can return control to the CPU or to some
other DMA channel.
Cascade Mode can be used to chain multiple DMA
controllers together, and this is exactly what DMA
Channel 4 is used for in the PC. When a peripheral
requests the bus on DMA channels 0, 1, 2 or 3, the
slave DMA controller asserts HLDREQ, but this wire is
actually connected to DRQ4 on the primary DMA
controller. The primary DMA controller then requests
the bus from the CPU using HLDREQ. Once the bus is
granted, -DACK4 is asserted, and that wire is
actually connected to the HLDA signal on the slave
DMA controller. The slave DMA controller then
transfers data for the DMA channel that requested it,
or the slave DMA may grant the bus to a peripheral
that wants to perform its own bus-mastering, such as
a SCSI controller.
Because of this wiring arrangement, only DMA channels
0, 1, 2, 3, 5, 6 and 7 are usable on PC/AT systems.
<quote><em>Note:</em> DMA channel 0 was reserved for
refresh operations in early IBM PC computers, but
is generally available for use by peripherals in
modern systems.</quote>
When a peripheral is performing Bus Mastering, it is
important that the peripheral transmit data to or
from memory constantly while it holds the system bus.
If the peripheral cannot do this, it must release the
bus frequently so that the system can perform refresh
operations on main memory.
The Dynamic RAM used in all PCs for main memory must be
accessed frequently to keep the bits stored in the
components "charged". Dynamic RAM essentially consists
of millions of capacitors with each one holding one bit
of data. These capacitors are charged with power to
represent a "1" or drained to represent a "0". Because
all capacitors leak, power must be added at regular intervals
to keep the "1" values intact. The RAM chips actually handle
the task of pumping power back into all of the appropriate
locations in RAM, but they must be told when to do it by
the rest of the computer so that the refresh activity won't
interfere with the computer wanting to access RAM normally.
If the computer is unable to refresh memory, the contents
of memory will become corrupted in just a few milliseconds.
Since memory read and write cycles ``count'' as refresh
cycles (a dynamic RAM refresh cycle is actually an incomplete
memory read cycle), as long as the peripheral
controller continues reading or writing data to
sequential memory locations, that action will refresh
all of memory.
Bus-mastering is found in some SCSI host interfaces and
other high-performance peripheral controllers.
<tag>Autoinitialize</tag> This mode causes the DMA to
perform Byte, Block or Demand transfers, but when the
DMA transfer counter reaches zero, the counter and
address are set back to where they were when the DMA
channel was originally programmed. This means that
as long as the peripheral requests transfers, they will
be granted. It is up to the CPU to move new data
into the fixed buffer ahead of where the DMA is about
to transfer it when doing output operations, and read new
data out of the buffer behind where the DMA is writing
when doing input operations.
This technique is frequently used on audio devices that
have small or no hardware ``sample'' buffers. There is
additional CPU overhead to manage this ``circular'' buffer,
but in some cases this may be the only way to eliminate the
latency that occurs when the DMA counter reaches zero
and the DMA stops transfers until it is reprogrammed.
</descrip>
<sect1><heading>Programming the DMA</heading>
<p>The DMA channel that is to be programmed should always
be ``masked'' before loading any settings. This is because
the hardware might unexpectedly assert DRQ, and the DMA might
respond, even though not all of the parameters have been
loaded or updated.
Once masked, the host must specify the direction of the
transfer (memory-to-I/O or I/O-to-memory), what mode of
DMA operation is to be used for the transfer (Single,
Block, Demand, Cascade, etc), and finally the address and
length of the transfer are loaded. The length that is
loaded is one less than the amount you expect the DMA to
transfer. The LSB and MSB of the address and length are
written to the same 8-bit I/O port, so another port must
be written to first to guarantee that the DMA accepts the
first byte as the LSB and the second byte as the MSB of
the length and address.
Then, be sure to update the Page Register, which is
external to the DMA and is accessed through a different
set of I/O ports.
Once all the settings are ready, the DMA channel can be
un-masked. That DMA channel is now considered to be
``armed'', and will respond when DRQ is asserted.
Refer to a hardware data book for precise programming
details for the 8237. You will also need to refer to the
I/O port map for the PC system, which describes where
the DMA and Page Register ports are located. A complete
table is located below.
<sect1><heading>DMA Port Map</heading>
<p>All systems based on the IBM-PC and PC/AT have the DMA
hardware located at the same I/O ports. The complete
list is provided below. Ports assigned to DMA Controller
&num;2 are undefined on non-AT designs.
<sect2><heading>0x00 - 0x1f DMA Controller &num;1 (Channels 0, 1, 2 and 3)</heading>
<p>DMA Address and Count Registers
<verb>
0x00 write Channel 0 starting address
0x00 read Channel 0 current address
0x02 write Channel 0 starting word count
0x02 read Channel 0 remaining word count
0x04 write Channel 1 starting address
0x04 read Channel 1 current address
0x06 write Channel 1 starting word count
0x06 read Channel 1 remaining word count
0x08 write Channel 2 starting address
0x08 read Channel 2 current address
0x0a write Channel 2 starting word count
0x0a read Channel 2 remaining word count
0x0c write Channel 3 starting address
0x0c read Channel 3 current address
0x0e write Channel 3 starting word count
0x0e read Channel 3 remaining word count
</verb>
DMA Command Registers
<verb>
0x10 write Command Register
0x10 read Status Register
0x12 write Request Register
0x12 read -
0x14 write Single Mask Register Bit
0x14 read -
0x16 write Mode Register
0x16 read -
0x18 write Clear LSB/MSB Flip-Flop
0x18 read -
0x1a write Master Clear/Reset
0x1a read Temporary Register
0x1c write Clear Mask Register
0x1c read -
0x1e write Write All Mask Register Bits
0x1e read -
</verb>
<sect2><heading>0xc0 - 0xdf DMA Controller &num;2 (Channels 4, 5, 6 and 7)</heading>
<p>DMA Address and Count Registers
<verb>
0xc0 write Channel 4 starting address
0xc0 read Channel 4 current address
0xc2 write Channel 4 starting word count
0xc2 read Channel 4 remaining word count
0xc4 write Channel 5 starting address
0xc4 read Channel 5 current address
0xc6 write Channel 5 starting word count
0xc6 read Channel 5 remaining word count
0xc8 write Channel 6 starting address
0xc8 read Channel 6 current address
0xca write Channel 6 starting word count
0xca read Channel 6 remaining word count
0xcc write Channel 7 starting address
0xcc read Channel 7 current address
0xce write Channel 7 starting word count
0xce read Channel 7 remaining word count
</verb>
DMA Command Registers
<verb>
0xd0 write Command Register
0xd0 read Status Register
0xd2 write Request Register
0xd2 read -
0xd4 write Single Mask Register Bit
0xd4 read -
0xd6 write Mode Register
0xd6 read -
0xd8 write Clear LSB/MSB Flip-Flop
0xd8 read -
0xda write Master Clear/Reset
0xda read Temporary Register
0xdc write Clear Mask Register
0xdc read -
0xde write Write All Mask Register Bits
0xde read -
</verb>
<sect2><heading>0x80 - 0x9f DMA Page Registers</heading>
<p><verb>
0x87 r/w DMA Channel 0
0x83 r/w DMA Channel 1
0x81 r/w DMA Channel 2
0x82 r/w DMA Channel 3
0x8b r/w DMA Channel 5
0x89 r/w DMA Channel 6
0x8a r/w DMA Channel 7
0x8f Refresh
</verb>

View file

@ -1,459 +0,0 @@
<!-- $Id$ -->
<!-- The FreeBSD Documentation Project -->
<chapt>
<heading>Resources on the Internet<label id="eresources"></heading>
<p><em>Contributed by &a.jkh;.</em>
<p>The rapid pace of FreeBSD progress makes print media impractical as a
means of 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 the &a.doc
so that they may also be included.
<sect>
<heading>Mailing lists<label id="eresources:mail"></heading>
<p>Though many of the FreeBSD development members read USENET, we cannot
always guarantee that we will 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.
<p>The charters for the various lists are given at the bottom of this
document. <bf>Please read the charter before joining or sending
mail to any list</bf>. Most of our list subscribers now receive many hundreds
of FreeBSD related messages every day, and by setting down charters
and rules for proper use we are striving to keep the signal-to-noise ratio
of the lists high. To do less would see the mailing lists ultimately fail
as an effective communications medium for the project.
Archives are kept for all of the mailing lists and can be searched
using the <url url="http://www.FreeBSD.ORG/search.html"
name="FreeBSD World Wide Web server">. The keyword searchable archive
offers an excellent way of finding answers to frequently asked
questions and should be consulted before posting a question.
<sect1><heading>List summary<label id="eresources:summary"></heading>
<p><bf>General lists:</bf> The following are general lists which
anyone is free to join:
<verb>
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-questions User questions
</verb>
<bf>Technical lists:</bf> The following lists are for technical discussion.
You should read the charter for each list carefully before joining or
sending mail to one as there are firm guidelines for their use and content.
<verb>
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-mobile Discussions about mobile computing
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-security-notifications
Security notifications (moderated mailing list)
freebsd-scsi The SCSI subsystem
freebsd-smp Design discussions for [A]Symmetric MultiProcessing
</verb>
<bf>Limited lists:</bf> The following lists require approval from
<url url="mailto:core@freebsd.org" name="core@FreeBSD.ORG"> to join,
though anyone is free to send messages to them which fall within the
scope of their charters. It is also a good idea establish a presence
in the technical lists before asking to join one of these limited lists.
<verb>
List Purpose
----------------------------------------------------------------------
freebsd-admin Administrative issues
freebsd-arch Architecture and design discussions
freebsd-core FreeBSD core team
freebsd-hubs People running mirror sites (infrastructural support)
freebsd-install Installation development
freebsd-user-groups User group coordination
</verb>
<bf>CVS lists:</bf> The following lists are for people interested in
seeing the log messages for changes to various areas of the source tree.
They are <bf>Read-Only</bf> lists and should not have mail sent to them.
<verb>
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
</verb>
<sect1><heading>How to subscribe<label id="eresources:subscribe"></heading>
<p>All mailing lists live on <tt>FreeBSD.ORG</tt>, so to post to a
given list you simply mail to <em>listname</em><tt>@FreeBSD.ORG</tt>. It
will then be redistributed to mailing list members world-wide.
To subscribe to a list, send mail to &a.majordomo and include
<tscreen><verb>
subscribe <listname> [<optional address>]
</verb></tscreen>
In the body of your message. For example, to subscribe yourself to
freebsd-announce, you'd do:
<tscreen><verb>
% mail majordomo@FreeBSD.ORG
subscribe freebsd-announce
^D
</verb></tscreen>
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:
<tscreen><verb>
% mail majordomo@FreeBSD.ORG
subscribe freebsd-announce local-announce@somesite.com
^D
</verb></tscreen>
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:
<tscreen><verb>
% mail majordomo@FreeBSD.ORG
help
^D
</verb></tscreen>
Again, we would like to request that you keep discussion in the technical mailing
lists on a technical track. If you are only interested in the "high points"
then it is suggested that you join freebsd-announce, which is intended only
for infrequent traffic.
<sect1><heading>List charters<label id="eresources:charters"></heading>
<p><bf>All</bf>FreeBSD mailing lists have certain basic rules
which must be adhered to by anyone using them. Failure to comply
with these guidelines will result in two (2) written warnings from the
FreeBSD <url url="mailto:postmaster@freebsd.org" name="Postmaster">,
after which, on a third offense, the poster will removed from all
FreeBSD mailing lists and filtered from further posting to them.
We regret that such rules and measures are necessary at all, but
today's Internet is a pretty harsh environment, it would seem, and
many fail to appreciate just how fragile some of its mechanisms are.
<p>Rules of the road:
<itemize>
<item>The topic of any posting should adhere to the basic charter of the list
it is posted to, e.g. if the list is about technical issues then your
posting should contain technical discussion. Ongoing irrelevant chatter
or flaming only detracts from the value of the mailing list for everyone
on it and will not be tolerated. For free-form discussion on no
particular topic, the <url url="mailto:freebsd-chat@freebsd.org"
name="freebsd-chat"> mailing list is freely available and should
be used instead.</item>
<item>No posting should be made to more than 2 mailing lists, and only
to 2 when a clear and obvious need to post to both lists exists.
For most lists, there is already a great deal of subscriber overlap
and except for the most esoteric mixes (say "-stable & -scsi"), there
really is no reason to post to more than one list at a time.
If a message is sent to you in such a way that multiple mailing lists
appear on the Cc line then the cc line should also be trimmed before
sending it out again.
<em>You are <bf>still</bf> responsible for your own cross-postings, no
matter who the originator might have been.</em></item>
<item>Personal attacks and profanity (in the context of an argument) are
not allowed, and that includes users and developers alike. Gross
breaches of netiquette, like excerpting or reposting private mail
when permission to do so was not and would not be forthcoming,
are frowned upon but not specifically enforced. <bf>However</bf>,
there are also very few cases where such content would fit within the
charter of a list and it would therefore probably rate a warning
(or ban) on that basis alone.</item>
<item>Advertising of non-FreeBSD related products or services is
strictly prohibited and will result in an immediate ban if it
is clear that the offender is advertising by spam.</item>
</itemize>
<p><bf>Individual list charters:</bf>
<p>
<descrip>
<tag/FREEBSD-ADMIN/ <em>Administrative issues</em><newline>
This list is purely for discussion of freebsd.org related issues
and to report problems or abuse of project resources. It is a closed
list, though anyone may report a problem (with our systems!) to it.
<tag/FREEBSD-ANNOUNCE/ <em>Important events / milestones</em><newline>
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, strictly moderated mailing list.
<tag/FREEBSD-ARCH/ <em>Architecture and design discussions</em><newline>
This is the mailing list for people discussing FreeBSD architectural
issues. It is a closed list, and not for general subscription.
<tag/FREEBSD-BUGS/ <em>Bug reports</em><newline>
This is the mailing list for reporting bugs in FreeBSD
Whenever possible, bugs should be submitted using the "send-pr(1)"
command or the <url url="http://www.freebsd.org/send-pr.html"
name="WEB interface"> to it.
<tag/FREEBSD-CHAT/ <em>Non technical items related to the
FreeBSD community</em><newline>
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.
<tag/FREEBSD-CORE/ <em>FreeBSD core team</em><newline>
This is an internal mailing list for use by the core members.
Messages can be sent to it when a serious FreeBSD-related matter
requires arbitration or high-level scrutiny.
<tag/FREEBSD-CURRENT/ <em>Discussions about the use of
FreeBSD-current</em><newline> 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.
This is a technical mailing list for which strictly technical
content is expected.
<tag/FREEBSD-CURRENT-DIGEST/ <em>Discussions about the use of
FreeBSD-current</em><newline> 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.
This list is <bf>Read-Only</bf> and should not be posted to.
<tag/FREEBSD-STABLE/ <em>Discussions about the use of
FreeBSD-stable</em><newline> 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.
This is a technical mailing list for which strictly technical
content is expected.
<tag/FREEBSD-DOC/ <em>Documentation project</em><newline>
This mailing list belongs to the FreeBSD Doc Project and is for
the discussion of documentation related issues and projects.
<tag/FREEBSD-FS/ <em>Filesystems</em><newline>
Discussions concerning FreeBSD filesystems.
This is a technical mailing list for which strictly technical
content is expected.
<tag/FREEBSD-HACKERS/ <em>Technical discussions</em><newline>
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.
This is a technical mailing list for which strictly technical
content is expected.
<tag/FREEBSD-HACKERS-DIGEST/ <em>Technical
discussions</em><newline> 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.
This list is <bf>Read-Only</bf> and should not be posted to.
<tag/FREEBSD-HARDWARE/ <em>General discussion of FreeBSD
hardware</em><newline> General discussion about the types of
hardware that FreeBSD runs on, various problems and suggestions
concerning what to buy or avoid.
<tag/FREEBSD-INSTALL/ <em>Installation discussion</em><newline>
This mailing list is for discussing FreeBSD installation
development for the future releases and is closed.
<tag/FREEBSD-ISP/ <em>Issues for Internet Service Providers</em><newline>
This mailing list is for discussing topics relevant to Internet
Service Providers (ISPs) using FreeBSD.
This is a technical mailing list for which strictly technical
content is expected.
<tag/FREEBSD-MULTIMEDIA/ <em>Multimedia discussions</em><newline>
This is a forum about multimedia applications using FreeBSD.
Discussion center around multimedia applications, their installation, their
development and their support within FreeBSD
This is a technical mailing list for which strictly technical
content is expected.
<tag/FREEBSD-PLATFORMS/ <em>Porting to Non-Intel
platforms</em><newline> Cross-platform freebsd issues, general
discussion and proposals for non-Intel FreeBSD ports.
This is a technical mailing list for which strictly technical
content is expected.
<tag/FREEBSD-PORTS/ <em>Discussion of "ports"</em><newline>
Discussions concerning FreeBSD's "ports collection" (/usr/ports), proposed
ports, modifications to ports collection infrastructure and general
coordination efforts.
This is a technical mailing list for which strictly technical
content is expected.
<tag/FREEBSD-QUESTIONS/ <em>User questions</em><newline>
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.
<tag/FREEBSD-QUESTIONS-DIGEST/ <em>User questions</em><newline>
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.
<tag/FREEBSD-SCSI/ <em>SCSI subsystem</em><newline>
This is the mailing list for people working on the scsi subsystem
for FreeBSD.
This is a technical mailing list for which strictly technical
content is expected.
<tag/FREEBSD-SECURITY/ <em>Security issues</em><newline>
FreeBSD computer security issues (DES, Kerberos, known security holes and
fixes, etc).
This is a technical mailing list for which strictly technical
content is expected.
<tag/FREEBSD-SECURITY-NOTIFICATIONS/ <em>Security Notifications</em><newline>
Notifications of FreeBSD security problems and fixes. This is not
a discussion list. The discussion list is FreeBSD-security.
<tag/FREEBSD-USER-GROUPS/ <em>User Group Coordination List</em><newline>
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. It is a closed list.
</descrip>
<sect>
<heading>Usenet newsgroups<label id="eresources:news"></heading>
<p>In addition to two FreeBSD specific newsgroups, there
are many others in which FreeBSD is discussed or are
otherwise relevant to FreeBSD users. <url
url="http://minnie.cs.adfa.oz.au/BSD-info/bsdnews&lowbar;search.html"
name="Keyword searchable archives"> are available for
some of these newsgroups from courtesy of Warren Toomey
<tt>&lt;wkt@cs.adfa.oz.au&gt;</tt>.
<sect1>
<heading>BSD specific newsgroups</heading>
<p><itemize>
<item><url url="news:comp.unix.bsd.freebsd.announce"
name="comp.unix.bsd.freebsd.announce"></item>
<item><url url="news:comp.unix.bsd.freebsd.misc"
name="comp.unix.bsd.freebsd.misc"></item>
</itemize>
<sect1>
<heading>Other Unix newsgroups of interest</heading>
<p><itemize>
<item><url url="news:comp.unix" name="comp.unix"></item>
<item><url url="news:comp.unix.questions" name="comp.unix.questions"></item>
<item><url url="news:comp.unix.admin" name="comp.unix.admin"></item>
<item><url url="news:comp.unix.programmer" name="comp.unix.programmer"></item>
<item><url url="news:comp.unix.shell" name="comp.unix.shell"></item>
<item><url url="news:comp.unix.user-friendly" name="comp.unix.user-friendly"></item>
<item><url url="news:comp.security.unix" name="comp.security.unix"></item>
<item><url url="news:comp.sources.unix" name="comp.sources.unix"></item>
<item><url url="news:comp.unix.advocacy" name="comp.unix.advocacy"></item>
<item><url url="news:comp.unix.misc" name="comp.unix.misc"></item>
<item><url url="news:comp.os.386bsd.announc" name="comp.os.386bsd.announc"></item>
<item><url url="news:comp.os.386bsd.app" name="comp.os.386bsd.app"></item>
<item><url url="news:comp.os.386bsd.bugs" name="comp.os.386bsd.bugs"></item>
<item><url url="news:comp.os.386bsd.development" name="comp.os.386bsd.development"></item>
<item><url url="news:comp.os.386bsd.misc" name="comp.os.386bsd.misc"></item>
<item><url url="news:comp.os.386bsd.questions" name="comp.os.386bsd.questions"></item>
<item><url url="news:comp.bugs.4bsd" name="comp.bugs.4bsd"></item>
<item><url url="news:comp.bugs.4bsd.ucb-fixes" name="comp.bugs.4bsd.ucb-fixes"></item>
<item><url url="news:comp.unix.bsd" name="comp.unix.bsd"></item>
</itemize>
<sect1>
<heading>X Window System</heading>
<p><itemize>
<item><url url="news:comp.windows.x.i386unix" name="comp.windows.x.i386unix"></item>
<item><url url="news:comp.windows.x" name="comp.windows.x"></item>
<item><url url="news:comp.windows.x.apps" name="comp.windows.x.apps"></item>
<item><url url="news:comp.windows.x.announce" name="comp.windows.x.announce"></item>
<item><url url="news:comp.windows.x.intrinsics" name="comp.windows.x.intrinsics"></item>
<item><url url="news:comp.windows.x.motif" name="comp.windows.x.motif"></item>
<item><url url="news:comp.windows.x.pex" name="comp.windows.x.pex"></item>
<item><url url="news:comp.emulators.ms-windows.wine" name="comp.emulators.ms-windows.wine"></item>
</itemize>
<sect>
<heading>World Wide Web servers<label id="eresources:web"></heading>
<p><itemize>
<item><url url="http://www.FreeBSD.ORG/"> <bf>- Central Server</bf>.</item>
<item><url url="http://www.au.freebsd.org/FreeBSD/"> <bf>- Australia</bf>.</item>
<item><url url="http://www.br.freebsd.org/"> <bf>- Brazil</bf>.</item>
<item><url url="http://www.ca.freebsd.org/"> <bf>- Canada</bf>.</item>
<item><url url="http://sunsite.mff.cuni.cz/www.freebsd.org/"><bf>- Czech Republic</bf>.</item>
<item><url url="http://sunsite.auc.dk/www.freebsd.org/"> <bf>- Denmark</bf>.</item>
<item><url url="http://www.ee.freebsd.org/"> <bf>- Estonia</bf>.</item>
<item><url url="http://www.fi.freebsd.org/"> <bf>- Finland</bf>.</item>
<item><url url="http://www.de.freebsd.org/"> <bf>- Germany</bf>.</item>
<item><url url="http://www.ie.freebsd.org/"> <bf>- Ireland</bf>.</item>
<item><url url="http://www.jp.freebsd.org/"> <bf>- Japan</bf>.</item>
<item><url url="http://www.kr.freebsd.org/"> <bf>- Korea</bf>.</item>
<item><url url="http://www.nl.freebsd.org/"> <bf>- Netherlands</bf>.</item>
<item><url url="http://www.pt.freebsd.org/"> <bf>- Portugal</bf>.</item>
<item><url url="http://www.se.freebsd.org/www.freebsd.org/"> <bf>- Sweden</bf>.</item>
<item><url url="http://www.tw.freebsd.org/freebsd.html"> <bf>- Taiwan</bf>.</item>
</itemize>
</sect>

View file

@ -1,421 +0,0 @@
<!-- $Id$ -->
<!-- The FreeBSD Documentation Project -->
<!--
<title>An introduction to ESDI hard disks and their use with FreeBSD</title>
<author>(c) 1995, Wilko Bulte, <tt/wilko@yedi.iaf.nl/
<date>Tue Sep 12 20:48:44 MET DST 1995</date>
Copyright 1995, Wilko C. Bulte, Arnhem, The Netherlands
<abstract>
This document describes the use of ESDI disks in combination
with the FreeBSD operating system. Contrary to popular
belief, this is possible and people are using ESDI based
systems successfully! This document tries to explain you
how to do this.
If you find something missing, plain wrong or have useful
comments on how to improve
the document please send mail to <tt/wilko@yedi.iaf.nl/
</abstract>
-->
<sect1><heading>Using ESDI hard disks<label id="esdi"></heading>
<p><em>Copyright &copy; 1995, &a.wilko;.<newline>24 September 1995.</em>
ESDI is an acronym that means Enhanced Small Device Interface.
It is loosely based on the good old ST506/412 interface originally
devised by Seagate Technology, the makers of the first affordable
5.25" winchester disk.
The acronym says Enhanced, and rightly so. In the first place
the speed of the interface is higher, 10 or 15 Mbits/second
instead of the 5 Mbits/second of ST412 interfaced drives.
Secondly some higher level commands are added, making the ESDI
interface somewhat 'smarter' to the operating system driver
writers. It is by no means as smart as SCSI by the way. ESDI
is standardized by ANSI.
Capacities of the drives are boosted by putting more sectors
on each track. Typical is 35 sectors per track, high capacity
drives I have seen were up to 54 sectors/track.
Although ESDI has been largely obsoleted by IDE and SCSI interfaces,
the availability of free or cheap surplus drives makes them
ideal for low (or now) budget systems.
<sect2><heading>Concepts of ESDI</heading>
<p>
<sect3><heading>Physical connections</heading>
<p>
The ESDI interface uses two cables connected to each drive.
One cable is a 34 pin flat cable edge connector that carries
the command and status signals from the controller to the
drive and vice-versa. The command cable is daisy chained
between all the drives. So, it forms a bus onto which all
drives are connected.
The second cable is a 20 pin flat cable edge connector that
carries the data to and from the drive. This cable is radially
connected, so each drive has its own direct connection to the
controller.
To the best of my knowledge PC ESDI controllers are limited
to using a maximum of 2 drives per controller. This is
compatibility feature(?) left over from the WD1003 standard
that reserves only a single bit for device addressing.
<sect3><heading>Device addressing</heading>
<p>
On each command cable a maximum of 7 devices and 1 controller
can be present. To enable the controller to uniquely
identify which drive it addresses, each ESDI device is equipped
with jumpers or switches to select the devices address.
On PC type controllers the first drive is set to address 0,
the second disk to address 1. <it>Always make sure</it> you
set each disk to an unique address! So, on a PC with its
two drives/controller maximum the first drive is drive 0, the
second is drive 1.
<sect3><heading>Termination</heading>
<p>
The daisy chained command cable (the 34 pin cable remember?)
needs to be terminated at the last drive on the chain.
For this purpose ESDI drives come with a termination resistor
network that can be removed or disabled by a jumper when it
is not used.
So, one and <it>only</it> one drive, the one at
the farthest end of the command
cable has its terminator installed/enabled. The controller
automatically terminates the other end of the cable.
Please note that this implies that the controller must be
at one end of the cable and <it>not</it> in the middle.
<sect2><heading>Using ESDI disks with FreeBSD</heading>
<p>
Why is ESDI such a pain to get working in the first place?
People who tried ESDI disks with FreeBSD are known to have
developed a profound sense of frustration. A combination of
factors works against you to produce effects that are
hard to understand when you have never seen them before.
This has also led to the popular legend ESDI and FreeBSD
is a plain NO-GO.
The following sections try to list all the pitfalls and
solutions.
<sect3><heading>ESDI speed variants</heading>
<p>
As briefly mentioned before, ESDI comes in two speed flavors.
The older drives and controllers use a 10 Mbits/second
data transfer rate. Newer stuff uses 15 Mbits/second.
It is not hard to imagine that 15 Mbits/second drive cause
problems on controllers laid out for 10 Mbits/second.
As always, consult your controller <it>and</it> drive
documentation to see if things match.
<sect3><heading>Stay on track</heading>
<p>
Mainstream ESDI drives use 34 to 36 sectors per track.
Most (older) controllers cannot handle more than this
number of sectors.
Newer, higher capacity, drives use higher numbers of sectors
per track. For instance, I own a 670 Mb drive that has
54 sectors per track.
In my case, the controller could not handle this number
of sectors. It proved to work well except that it only
used 35 sectors on each track. This meant losing a
lot of disk space.
Once again, check the documentation of your hardware for
more info. Going out-of-spec like in the example might
or might not work. Give it a try or get another more
capable controller.
<sect3><heading>Hard or soft sectoring</heading>
<p>
Most ESDI drives allow hard or soft sectoring to be
selected using a jumper. Hard sectoring means that the
drive will produce a sector pulse on the start of each
new sector. The controller uses this pulse to tell when
it should start to write or read.
Hard sectoring allows a selection of sector size (normally
256, 512 or 1024 bytes per formatted sector). FreeBSD uses
512 byte sectors. The number of sectors per track also varies
while still using the same number of bytes per formatted sector.
The number of <em>unformatted</em> bytes per sector varies,
dependent on your controller it needs more or less overhead
bytes to work correctly. Pushing more sectors on a track
of course gives you more usable space, but might give
problems if your controller needs more bytes than the
drive offers.
In case of soft sectoring, the controller itself determines
where to start/stop reading or writing. For ESDI
hard sectoring is the default (at least on everything
I came across). I never felt the urge to try soft sectoring.
In general, experiment with sector settings before you install
FreeBSD because you need to re-run the low-level format
after each change.
<sect3><heading>Low level formatting</heading>
<p>
ESDI drives need to be low level formatted before they
are usable. A reformat is needed whenever you figgle
with the number of sectors/track jumpers or the
physical orientation of the drive (horizontal, vertical).
So, first think, then format.
The format time must not be underestimated, for big
disks it can take hours.
After a low level format, a surface scan is done to
find and flag bad sectors. Most disks have a
manufacturer bad block list listed on a piece of paper
or adhesive sticker. In addition, on most disks the
list is also written onto the disk.
Please use the manufacturer's list. It is much easier
to remap a defect now than after FreeBSD is installed.
Stay away from low-level formatters that mark all
sectors of a track as bad as soon as they find one
bad sector. Not only does this waste space, it also
and more importantly causes you grief with bad144
(see the section on bad144).
<sect3><heading>Translations</heading>
<p>
Translations, although not exclusively a ESDI-only problem,
might give you real trouble.
Translations come in multiple flavors. Most of them
have in common that they attempt to work around the
limitations posed upon disk geometries by the original
IBM PC/AT design (thanks IBM!).
First of all there is the (in)famous 1024 cylinder limit.
For a system to be able to boot, the stuff (whatever
operating system) must be in the first 1024 cylinders
of a disk. Only 10 bits are available to encode the
cylinder number. For the number of sectors the limit
is 64 (0-63).
When you combine the 1024 cylinder limit with the 16 head
limit (also a design feature) you max out at fairly limited
disk sizes.
To work around this problem, the manufacturers of ESDI
PC controllers added a BIOS prom extension on their boards.
This BIOS extension handles disk I/O for booting (and for
some operating systems <it>all</it> disk I/O) by using
translation. For instance, a big drive might be presented
to the system as having 32 heads and 64 sectors/track.
The result is that the number of cylinders is reduced to
something below 1024 and is therefore usable by the system
without problems.
It is noteworthy to know that FreeBSD does not use the
BIOS after its kernel has started. More on this later.
A second reason for translations is the fact that most
older system BIOSes could only handle drives with 17 sectors
per track (the old ST412 standard). Newer system BIOSes
usually have a user-defined drive type (in most cases this is
drive type 47).
<em>Whatever you do to translations after reading this document,
keep in mind that if you have multiple operating systems on the
same disk, all must use the same translation</em>
While on the subject of translations, I have seen one controller
type (but there are probably more like this) offer the option
to logically split a drive in multiple partitions as a BIOS
option. I had select 1 drive == 1 partition because this
controller wrote this info onto the disk. On power-up it
read the info and presented itself to the system based on
the info from the disk.
<sect3><heading>Spare sectoring</heading>
<p>
Most ESDI controllers offer the possibility to remap bad sectors.
During/after the low-level format of the disk bad sectors are
marked as such, and a replacement sector is put in place
(logically of course) of the bad one.
In most cases the remapping is done by using N-1 sectors on
each track for actual data storage, and sector N itself is
the spare sector. N is the total number of sectors physically
available on the track.
The idea behind this is that the operating system sees
a 'perfect' disk without bad sectors. In the case of
FreeBSD this concept is not usable.
The problem is that the translation from <it>bad</it> to <it>good</it>
is performed by the BIOS of the ESDI controller. FreeBSD,
being a true 32 bit operating system, does not use the BIOS
after it has been booted. Instead, it has device drivers that
talk directly to the hardware.
<em>So: don't use spare sectoring, bad block remapping or
whatever it may be called by the controller manufacturer when you
want to use the disk for FreeBSD.</em>
<sect3><heading>Bad block handling</heading>
<p>
The preceding section leaves us with a problem. The controller's
bad block handling is not usable and still FreeBSD's filesystems
assume perfect media without any flaws.
To solve this problem, FreeBSD use the <it>bad144</it> tool.
Bad144 (named after a Digital Equipment standard for bad block
handling) scans a FreeBSD slice for bad blocks. Having found
these bad blocks, it writes a table with the offending block
numbers to the end of the FreeBSD slice.
When the disk is in operation, the disk accesses are checked
against the table read from the disk. Whenever a block number
is requested that is in the bad144 list, a replacement block
(also from the end of the FreeBSD slice) is used.
In this way, the bad144 replacement scheme presents 'perfect'
media to the FreeBSD filesystems.
There are a number of potential pitfalls associated with
the use of bad144.
First of all, the slice cannot have more than 126 bad sectors.
If your drive has a high number of bad sectors, you might need
to divide it into multiple FreeBSD slices each containing less
than 126 bad sectors. Stay away from low-level format programs
that mark <em>every</em> sector of a track as bad when
they find a flaw on the track. As you can imagine, the
126 limit is quickly reached when the low-level format is done
this way.
Second, if the slice contains the root filesystem, the slice
should be within the 1024 cylinder BIOS limit. During the
boot process the bad144 list is read using the BIOS and this
only succeeds when the list is within the 1024 cylinder limit.
<em>Note</em> that the restriction is not that only the root
<em>filesystem</em> must be within the 1024 cylinder limit, but
rather the entire <em>slice</em> that contains the root filesystem.
<sect3><heading>Kernel configuration</heading>
<p>
ESDI disks are handled by the same <it>wd</it>driver as
IDE and ST412 MFM disks. The <it>wd</it> driver should work
for all WD1003 compatible interfaces.
Most hardware is jumperable for one of two different I/O
address ranges and IRQ lines. This allows you to have
two wd type controllers in one system.
When your hardware allows non-standard strappings, you
can use these with FreeBSD as long as you enter the
correct info into the kernel config file.
An example from the kernel config file (they live in
<tt>/sys/i386/conf</tt> BTW).
<tscreen><verb>
# First WD compatible controller
controller wdc0 at isa? port "IO_WD1" bio irq 14 vector wdintr
disk wd0 at wdc0 drive 0
disk wd1 at wdc0 drive 1
# Second WD compatible controller
controller wdc1 at isa? port "IO_WD2" bio irq 15 vector wdintr
disk wd2 at wdc1 drive 0
disk wd3 at wdc1 drive 1
</verb></tscreen>
<!--
<sect3><heading>Tuning your ESDI kernel setup</heading>
<p>
-->
<sect2><heading>Particulars on ESDI hardware</heading>
<p>
<sect3><heading>Adaptec 2320 controllers</heading>
<p>
I successfully installed FreeBSD onto a ESDI disk controlled by a
ACB-2320. No other operating system was present on the disk.
To do so I low level formatted the disk using NEFMT.EXE
(<it>ftp</it>able from <it>www.adaptec.com</it>) and answered NO
to the question whether the disk should be formatted with a
spare sector on each track. The BIOS on the ACD-2320 was
disabled. I used the 'free configurable' option in the system
BIOS to allow the BIOS to boot it.
Before using NEFMT.EXE I tried to format the disk using the
ACB-2320 BIOS builtin formatter. This proved to be a show stopper,
because it did not give me an option to disable spare sectoring.
With spare sectoring enabled the FreeBSD installation
process broke down on the bad144 run.
Please check carefully which ACB-232xy variant you have. The
x is either 0 or 2, indicating a controller without or with
a floppy controller on board.
The y is more interesting. It can either be a blank,
a "A-8" or a "D". A blank indicates a plain 10 Mbits/second
controller. An "A-8" indicates a 15 Mbits/second controller
capable of handling 52 sectors/track.
A "D" means a 15 Mbits/second controller that can also
handle drives with > 36 sectors/track (also 52 ?).
All variations should be capable of using 1:1 interleaving. Use 1:1,
FreeBSD is fast enough to handle it.
<sect3><heading>Western Digital WD1007 controllers</heading>
<p>
I successfully installed FreeBSD onto a ESDI disk controlled by a
WD1007 controller. To be precise, it was a WD1007-WA2. Other
variations of the WD1007 do exist.
To get it to work, I had to disable the sector translation and
the WD1007's onboard BIOS. This implied I could not use
the low-level formatter built into this BIOS. Instead, I grabbed
WDFMT.EXE from www.wdc.com Running this formatted my drive
just fine.
<sect3><heading>Ultrastor U14F controllers</heading>
<p>
According to multiple reports from the net, Ultrastor ESDI
boards work OK with FreeBSD. I lack any further info on
particular settings.
<!--
<sect2><heading>Tracking down problems</heading>
<p>
-->
<sect2><heading>Further reading<label id="esdi:further-reading"></>
<p>
If you intend to do some serious ESDI hacking, you might want to
have the official standard at hand:
The latest ANSI X3T10 committee document is:
<itemize>
<item>Enhanced Small Device Interface (ESDI) &lsqb;X3.170-1990/X3.170a-1991&rsqb;
&lsqb;X3T10/792D Rev 11&rsqb;
</itemize>
On Usenet the newsgroup <htmlurl url="news:comp.periphs"
name="comp.periphs"> is a noteworthy place to look
for more info.
The World Wide Web (WWW) also proves to be a very handy info source:
For info on Adaptec ESDI controllers see <htmlurl
url="http://www.adaptec.com/">.
For info on Western Digital controllers see <htmlurl
url="http://www.wdc.com/">.
<sect2>Thanks to...
<p>
Andrew Gordon for sending me an Adaptec 2320 controller and ESDI disk
for testing.

View file

@ -1,528 +0,0 @@
<!-- $Id$ -->
<!-- The FreeBSD Documentation Project -->
<sect><heading>Firewalls<label id="firewalls"></heading>
<p><em>Contributed by &a.gpalmer; and &a.alex;.</em>
Firewalls are an area of increasing interest for people who are
connected to the Internet, and are even finding applications on
private networks to provide enhanced security. This section will
hopefully explain what firewalls are, how to use them, and how to use
the facilities provided in the FreeBSD kernel to implement them.
<quote><bf>Note</bf>: People often think that having a firewall between
your companies internal network and the ``Big Bad Internet'' will
solve all your security problems. It may help, but a poorly setup
firewall system is more of a security risk than not having one at all.
A firewall can only add another layer of security to your systems, but
they will not be able to stop a really determined hacker from
penetrating your internal network. If you let internal security lapse
because you believe your firewall to be impenetrable, you have just
made the hackers job that bit easier.</quote>
<sect1><heading>What is a firewall?</heading>
<p>There are currently two distinct types of firewalls in common
use on the Internet today. The first type is more properly called
a <bf>packet filtering router</bf>, where the kernel on a
multi-homed machine chooses whether to forward or block packets
based on a set of rules. The second type, known as <bf>proxy
servers</bf>, rely on daemons to provide authentication and to
forward packets, possibly on a multi-homed machine which has
kernel packet forwarding disabled.
<p>Sometimes sites combine the two types of firewalls, so that only a
certain machine (known as a <bf>bastion host</bf>) is allowed to send
packets through a packet filtering router onto an internal
network. Proxy services are run on the bastion host, which are
generally more secure than normal authentication mechanisms.
<p>FreeBSD comes with a kernel packet filter (known as <tt>IPFW</tt>),
which is what the rest of this section will concentrate on. Proxy
servers can be built on FreeBSD from third party software, but there
is such a variety of proxy servers available that it would be
impossible to cover them in this document.
<sect2><heading>Packet filtering routers<label id="firewalls:packet_filters"></heading>
<p>A router is a machine which forwards packets between two or more
networks. A packet filtering router has an extra piece of code in its
kernel, which compares each packet to a list of rules before deciding
if it should be forwarded or not. Most modern IP routing software has
packet filtering code in it, which defaults to forwarding all
packets. To enable the filters, you need to define a set of rules for
the filtering code, so that it can decide if the packet should be
allowed to pass or not.
<p>To decide if a packet should be passed on or not, the code looks
through its set of rules for a rule which matches the contents of
this packets headers. Once a match is found, the rule action is
obeyed. The rule action could be to drop the packet, to forward the
packet, or even to send an ICMP message back to the originator. Only
the first match counts, as the rules are searched in order. Hence, the
list of rules can be referred to as a ``rule chain''.
<p>The packet matching criteria varies depending on the software used,
but typically you can specify rules which depend on the source IP
address of the packet, the destination IP address, the source port
number, the destination port number (for protocols which support
ports), or even the packet type (UDP, TCP, ICMP, etc).
<sect2><heading>Proxy servers<label id="firewalls:proxy_servers"></heading>
<p>Proxy servers are machines which have had the normal system daemons
(telnetd, ftpd, etc) replaced with special servers. These servers are
called <bf>proxy servers</bf> as they normally only allow onward
connections to be made. This enables you to run (for example) a proxy
telnet server on your firewall host, and people can telnet in to your
firewall from the outside, go through some authentication mechanism,
and then gain access to the internal network (alternatively, proxy
servers can be used for signals coming from the internal network and
heading out).
<p>Proxy servers are normally more secure than normal servers, and
often have a wider variety of authentication mechanisms available,
including ``one-shot'' password systems so that even if someone
manages to discover what password you used, they will not be able to use
it to gain access to your systems as the password instantly
expires. As they do not actually give users access to the host machine,
it becomes a lot more difficult for someone to install backdoors
around your security system.
<p>Proxy servers often have ways of restricting access further, so
that only certain hosts can gain access to the servers, and often they
can be set up so that you can limit which users can talk to which
destination machine. Again, what facilities are available depends
largely on what proxy software you choose.
<sect1><heading>What does IPFW allow me to do?</heading>
<p><tt>IPFW</tt>, the software supplied with FreeBSD, is a packet
filtering and accounting system which resides in the kernel, and has a
user-land control utility, <tt>ipfw(8)</tt>. Together, they
allow you to define and query the rules currently used by the kernel
in its routing decisions.
<p>There are two related parts to <tt>IPFW</tt>. The firewall section
allows you to perform packet filtering. There is also an IP accounting
section which allows you to track usage of your router, based on
similar rules to the firewall section. This allows you to see (for
example) how much traffic your router is getting from a certain
machine, or how much WWW (World Wide Web) traffic it is forwarding.
<p>As a result of the way that <tt>IPFW</tt> is designed, you can use
<tt>IPFW</tt> on non-router machines to perform packet filtering on
incoming and outgoing connections. This is a special case of the more
general use of <tt>IPFW</tt>, and the same commands and techniques
should be used in this situation.
<sect1><heading>Enabling IPFW on FreeBSD</heading>
<p>As the main part of the <tt>IPFW</tt> system lives in the kernel, you will
need to add one or more options to your kernel configuration
file, depending on what facilities you want, and recompile your kernel. See
<ref id="kernelconfig" name="reconfiguring the kernel"> for more
details on how to recompile your kernel.
<p>There are currently three kernel configuration options
relevant to IPFW:
<descrip>
<tag/options IPFIREWALL/ Compiles into the kernel the code for packet
filtering.
<tag/options IPFIREWALL_VERBOSE/ Enables code to allow logging of
packets through <tt>syslogd(8)</tt>. Without this option, even if you
specify that packets should be logged in the filter rules, nothing
will happen.
<tag/options IPFIREWALL_VERBOSE_LIMIT=10/ Limits the number of
packets logged through <tt>syslogd(8)</tt> on a per entry basis.
You may wish to use this option in hostile environments in which
you want to log firewall activity, but do not want to be open to
a denial of service attack via syslog flooding.
<p>When a chain entry reaches the packet limit specified, logging
is turned off for that particular entry. To resume logging, you
will need to reset the associated counter using the <tt>ipfw(8)</tt>
utility:
<tscreen><verb>
ipfw zero 4500
</verb></tscreen>
Where 4500 is the chain entry you wish to continue logging.
</descrip>
Previous versions of FreeBSD contained an <tt>IPFIREWALL_ACCT</tt>
option. This is now obsolete as the firewall code automatically
includes accounting facilities.
<sect1><heading>Configuring IPFW</heading>
<p>The configuration of the <tt>IPFW</tt> software is done through the
<tt>ipfw(8)</tt> utility. The syntax for this command looks
quite complicated, but it is relatively simple once you understand
its structure.
<p>There are currently four different command categories used by the
utility: addition/deletion, listing, flushing, and clearing.
Addition/deletion is used to build the rules that control how packets
are accepted, rejected, and logged. Listing is used to examine the
contents of your rule set (otherwise known as the chain) and packet
counters (accounting). Flushing is used to remove all entries from
the chain. Clearing is used to zero out one or more accounting
entries.
<sect2><heading>Altering the IPFW rules</heading>
<p>The syntax for this form of the command is:
<tscreen>
ipfw &lsqb;-N&rsqb; <em>command</em> &lsqb;<em>index</em>&rsqb;
<em>action</em> &lsqb;log&rsqb; <em>protocol</em> <em>addresses</em>
&lsqb;<em>options</em>&rsqb;
</tscreen>
<p>There is one valid flag when using this form of the command:
<descrip>
<tag/-N/Resolve addresses and service names in output.
</descrip>
The <em>command</em> given can be shortened to the shortest unique
form. The valid <em>commands</em> are:
<descrip>
<tag/add/Add an entry to the firewall/accounting rule list
<tag/delete/Delete an entry from the firewall/accounting rule list
</descrip>
Previous versions of <tt>IPFW</tt> used separate firewall and
accounting entries. The present version provides packet accounting
with each firewall entry.
<p>If an <tt>index</tt> value is supplied, it used to place the entry
at a specific point in the chain. Otherwise, the entry is placed at
the end of the chain at an index 100 greater than the last chain
entry (this does not include the default policy, rule 65535, deny).
<p>The <bf>log</bf> option causes matching rules to be output to the
system console if the kernel was compiled with <bf>IPFIREWALL_VERBOSE</bf>.
<p>Valid <em>actions</em> are:
<descrip>
<tag/reject/Drop the packet, and send an ICMP host or port
unreachable (as appropriate) packet to the source.
<tag/allow/Pass the packet on as normal. (aliases: <bf>pass</bf> and
<bf>accept</bf>)
<tag/deny/Drop the packet. The source is not notified via an ICMP
message (thus it appears that the packet never arrived at the
destination).
<tag/count/Update packet counters but do not allow/deny the packet
based on this rule. The search continues with the next chain entry.
</descrip>
<p>Each <em>action</em> will be recognized by the shortest unambiguous
prefix.
The <em>protocols</em> which can be specified are:
<descrip>
<tag/all/Matches any IP packet
<tag/icmp/Matches ICMP packets
<tag/tcp/Matches TCP packets
<tag/udp/Matches UDP packets
</descrip>
<p>The <em>address</em> specification is:
<tscreen>
<bf>from</bf> &lt;<em>address/mask</em>&gt;&lsqb;<em>port</em>&rsqb; <bf>to</bf>
&lt;<em>address/mask</em>&gt;&lsqb;<em>port</em>&rsqb &lsqb;<bf>via</bf> &lt;<em>interface</em>&gt;&rsqb;
</tscreen>
<p>You can only specify <em>port</em> in conjunction with
<em>protocols</em> which support ports (UDP and TCP).
<p>The <bf>via</bf> is optional and may specify the IP address or
domain name of a local IP interface, or an interface name (e.g.
<tt>ed0</tt>) to match only packets coming through this interface.
Interface unit numbers can be specified with an optional wildcard.
For example, <tt>ppp*</tt> would match all kernel PPP interfaces.
<p>The syntax used to specify an <tt>&lt;address/mask&gt;</tt> is:
<tscreen>
&lt;address&gt;
</tscreen>
or
<tscreen>
&lt;address&gt;/mask-bits
</tscreen>
or
<tscreen>
&lt;address&gt;:mask-pattern
</tscreen>
<p>A valid hostname may be specified in place of the IP
address. <tt>mask-bits</tt> is a decimal number representing how many
bits in the address mask should be set. e.g. specifying
<tscreen>
192.216.222.1/24
</tscreen>
will create a mask which will allow any address in a class C subnet
(in this case, 192.216.222) to be matched. <tt>mask-pattern</tt> is an IP
address which will be logically AND'ed with the address given. The
keyword <tt>any</tt> may be used to specify ``any IP address''.
<p>The port numbers to be blocked are specified as:
<tscreen>
port&lsqb;,port&lsqb;,port&lsqb;...&rsqb;&rsqb;&rsqb;
</tscreen>
to specify either a single port or a list of ports, or
<tscreen><verb>
port-port
</verb></tscreen>
to specify a range of ports. You may also combine a single range with a
list, but the range must always be specified first.
<p>The <em>options</em> available are:
<descrip>
<tag/frag/Matches if the packet is not the first fragment of the datagram.
<tag/in/Matches if the packet is on the way in.
<tag/out/Matches if the packet is on the way out.
<tag/ipoptions <em>spec</em>/Matches if the IP header contains the
comma separated list of options specified in <em>spec</em>. The
supported list of IP options are: <bf>ssrr</bf> (strict source route),
<bf>lsrr</bf> (loose source route), <bf>rr</bf> (record packet route),
and <bf>ts</bf> (timestamp). The absence of a particular option may
be denoted with a leading '!'.
<tag/established/Matches if the packet is part of an already established
TCP connection (i.e. it has the RST or ACK bits set). You can optimize
the performance of the firewall by placing <em>established</em> rules
early in the chain.
<tag/setup/Matches if the packet is an attempt to establish a TCP connection
(the SYN bit set is set but the ACK bit is not).
<tag/tcpflags <em>flags</em>/Matches if the TCP header contains
the comma separated list of <em>flags</em>. The supported flags
are <bf>fin</bf>, <bf>syn</bf>, <bf>rst</bf>, <bf>psh</bf>, <bf>ack</bf>,
and <bf>urg</bf>. The absence of a particular flag may be indicated
by a leading '!'.
<tag/icmptypes <em>types</em>/Matches if the ICMP type is present in
the list <em>types</em>. The list may be specified as any combination
of ranges and/or individual types separated by commas. Commonly used
ICMP types are: <bf>0</bf> echo reply (ping reply), <bf>5</bf>
redirect, <bf>8</bf> echo request (ping request), and <bf>11</bf>
time exceeded (used to indicate TTL expiration as with
<tt>traceroute(8)</tt>).
</descrip>
<sect2><heading>Listing the IPFW rules</heading>
<p>The syntax for this form of the command is:
<tscreen>
ipfw &lsqb;-atN&rsqb; l
</tscreen>
<p>There are three valid flags when using this form of the command:
<descrip>
<tag/-a/While listing, show counter values. This option is the only
way to see accounting counters.
<tag/-t/Display the last match times for each chain entry. The time
listing is incompatible with the input syntax used by the
<tt>ipfw(8)</tt> utility.
<tag/-N/Attempt to resolve given addresses and service names.
</descrip>
<sect2><heading>Flushing the IPFW rules</heading>
<p>The syntax for flushing the chain is:
<tscreen>
ipfw flush
</tscreen>
<p>This causes all entries in the firewall chain to be removed except
the fixed default policy enforced by the kernel (index 65535). Use
caution when flushing rules, the default deny policy will leave your
system cut off from the network until allow entries are added to the
chain.
<sect2><heading>Clearing the IPFW packet counters</heading>
<p>The syntax for clearing one or more packet counters is:
<tscreen>
ipfw zero &lsqb;index&rsqb;
</tscreen>
<p>When used without an <em>index</em> argument, all packet counters
are cleared. If an <em>index</em> is supplied, the clearing operation
only affects a specific chain entry.
<sect1><heading>Example commands for ipfw</heading>
<p>This command will deny all packets from the host
<bf>evil.hacker.org</bf> to the telnet port of the host
<bf>nice.people.org</bf> by being forwarded by the router:
<tscreen><verb>
ipfw add deny tcp from evil.hacker.org to nice.people.org 23
</verb></tscreen>
<p>The next example denies and logs any TCP traffic from the entire
<bf>hacker.org</bf> network (a class C) to the <bf>nice.people.org</bf>
machine (any port).
<tscreen><verb>
ipfw add deny log tcp from evil.hacker.org/24 to nice.people.org
</verb></tscreen>
If you do not want people sending X sessions to your internal network
(a subnet of a class C), the following command will do the necessary
filtering:
<tscreen><verb>
ipfw add deny from any to my.org/28 6000 setup
</verb></tscreen>
To allow access to the SUP server on <bf>sup.FreeBSD.ORG</bf>, use the
following command:
<tscreen><verb>
ipfw add accept from any to sup.FreeBSD.ORG 871
</verb></tscreen>
To see the accounting records:
<tscreen><verb>
ipfw -a list
</verb></tscreen>
or in the short form
<tscreen><verb>
ipfw -a l
</verb></tscreen>
You can also see the last time a chain entry was matched with
<tscreen><verb>
ipfw -at l
</verb></tscreen>
<sect1><heading>Building a packet filtering firewall</heading>
<p><quote><bf>Note:</bf> The following suggestions are just that:
suggestions. The requirements of each firewall are different and I
cannot tell you how to build a firewall to meet your particular
requirements.</quote>
<p>When initially setting up your firewall, unless you have a test
bench setup where you can configure your firewall host in a controlled
environment, I strongly recommend you use the logging version of the
commands and enable logging in the kernel. This will allow you to
quickly identify problem areas and cure them without too much
disruption. Even after the initial setup phase is complete, I
recommend using the logging for of `deny' as it allows tracing of
possible attacks and also modification of the firewall rules if your
requirements alter.
<quote><bf>Note:</BF> If you use the logging versions of the
<bf>accept</bf> command, it can generate <em>large</em> amounts
of log data as one log line will be generated for every packet
that passes through the firewall, so large ftp/http transfers,
etc, will really slow the system down. It also increases the
latencies on those packets as it requires more work to be done by
the kernel before the packet can be passed on. syslogd with also
start using up a lot more processor time as it logs all the extra
data to disk, and it could quite easily fill the partition
<tt>/var/log</tt> is located on.</quote>
<p>As currently supplied, FreeBSD does not have the ability to
load firewall rules at boot time. My suggestion is to put a call
to a shell script in the <tt>/etc/netstart</tt> script. Put the
call early enough in the netstart file so that the firewall is
configured before any of the IP interfaces are configured. This
means that there is no window during which time your network is
open.
<p>The actual script used to load the rules is entirely up to
you. There is currently no support in the <tt>ipfw</tt> utility for
loading multiple rules in the one command. The system I use is to use
the command:
<tscreen><verb>
# ipfw list
</verb></tscreen>
to write a list of the current rules out to a file, and then use a
text editor to prepend ``<tt>ipfw </tt>'' before all the lines. This
will allow the script to be fed into /bin/sh and reload the rules into
the kernel. Perhaps not the most efficient way, but it works.
<p>The next problem is what your firewall should actually <bf>DO</bf>!
This is largely dependent on what access to your network you want to
allow from the outside, and how much access to the outside world you
want to allow from the inside. Some general rules are:
<itemize>
<item>Block all incoming access to ports below 1024 for TCP. This is
where most of the security sensitive services are, like finger, SMTP
(mail) and telnet.
<item>Block <bf>all</bf> incoming UDP traffic. There are very few
useful services that travel over UDP, and what useful traffic there is
is normally a security threat (e.g. Suns RPC and NFS protocols). This
has its disadvantages also, since UDP is a connectionless protocol,
denying incoming UDP traffic also blocks the replies to outgoing UDP
traffic. This can cause a problem for people (on the inside)
using external archie (prospero) servers. If you want to allow access
to archie, you'll have to allow packets coming from ports 191 and 1525
to any internal UDP port through the firewall. ntp is another service
you may consider allowing through, which comes from port 123.
<item>Block traffic to port 6000 from the outside. Port 6000 is the
port used for access to X11 servers, and can be a security threat
(especially if people are in the habit of doing <tt>xhost +</tt> on
their workstations). X11 can actually use a range of ports starting at
6000, the upper limit being how many X displays you can run on the
machine. The upper limit as defined by RFC 1700 (Assigned Numbers) is
6063.
<item>Check what ports any internal servers use (e.g. SQL servers,
etc). It is probably a good idea to block those as well, as they
normally fall outside the 1-1024 range specified above.
</itemize>
<p>Another checklist for firewall configuration is available from CERT
at <htmlurl url="ftp://ftp.cert.org/pub/tech&lowbar;tips/packet&lowbar;filtering"
name="ftp://ftp.cert.org/pub/tech&lowbar;tips/packet&lowbar;filtering">
<p>As I said above, these are only <em>guidelines</em>. You will have
to decide what filter rules you want to use on your firewall
yourself. I cannot accept ANY responsibility if someone breaks into
your network, even if you follow the advice given above.

View file

@ -1,5 +0,0 @@
<!-- $Id$ -->
<!-- The FreeBSD Documentation Project -->
<chapt><heading>* Glossary<label id="glossary"></heading>

View file

@ -1,25 +0,0 @@
<!-- $Id$ -->
<!-- The FreeBSD Documentation Project -->
<sect><heading>FreeBSD Project goals<label id="goals"></heading>
<p><em>Contributed by &a.jkh;</em>.
<p>The goals of the FreeBSD Project are to provide software that may
be used for any purpose and without strings attached. Many of us
have a significant investment in the code (and project) and would
certainly not mind a little financial renumeration now and then,
but we're definitely not prepared to insist on it. We believe
that our first and foremost "mission" is to provide code to any
and all comers, and for whatever purpose, so that the code gets
the widest possible use and provides the widest possible benefit.
This is, I believe, one of the most fundamental goals of Free
Software and one that we enthusiastically support.
<p>That code in our source tree which falls under the GNU Public License
(GPL) or GNU Library Public License (GLPL) comes with slightly more
strings attached, though at least on the side of enforced
access rather than the usual opposite. Due to the additional
complexities that can evolve in the commercial use of GPL software,
we do, however, endeavor to replace such software with submissions
under the more relaxed BSD copyright whenever possible.

View file

@ -1,181 +0,0 @@
<!-- $Id: handbook.sgml,v 1.75 1997/05/09 06:19:03 max Exp $ -->
<!-- The FreeBSD Documentation Project -->
<!DOCTYPE linuxdoc PUBLIC "-//FreeBSD//DTD linuxdoc//EN" [
<!-- Conditional flags for this version of the document -->
<!ENTITY % boothelp.only "IGNORE">
<!ENTITY % handbook.only "INCLUDE">
<!-- Entity shorthand for authors' names and email addresses -->
<!ENTITY % authors SYSTEM "authors.sgml">
%authors;
<!-- Entity shorthand for mailing list email addresses -->
<!ENTITY % lists SYSTEM "lists.sgml">
%lists;
<!-- Entity definitions for all the parts -->
<!ENTITY % sections SYSTEM "sections.sgml">
%sections;
<!-- The currently released version of FreeBSD -->
<!ENTITY rel.current CDATA "2.2.2">
]>
<linuxdoc>
<book>
<title>FreeBSD Handbook</title>
<author>
<name>The FreeBSD Documentation Project</name>
</author>
<date>May 1997</date>
<abstract>Welcome to FreeBSD! This handbook covers the
installation and day to day use of <bf>FreeBSD Release
&rel.current;</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 &a.doc; The latest version of this
document is always available from
the <url url="http://www.FreeBSD.ORG/" name="FreeBSD World Wide
Web server">. It may also be downloaded in plain text, postscript
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-ftp" name="mirror sites">. You may also want to
<url url="/search.html" name="Search the Handbook">.
</abstract>
<toc>
<!-- ************************************************************ -->
<part><heading>Getting Started</heading>
<chapt><heading>Introduction</heading>
<p>FreeBSD is a 4.4BSD-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;
&development;
&relnotes;
&install;
&basics;
&ports;
<!-- ************************************************************ -->
<part><heading>System Administration</heading>
&kernelconfig;
<chapt><heading>Security</heading>
&crypt;
&skey;
&kerberos;
&firewalls;
&printing;
&quotas;
<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;
<chapt><heading>Localization<label id="l10n"></heading>
&russian;
<!-- ************************************************************ -->
<part><heading>Network Communications</heading>
<chapt><heading>Serial Communications</heading>
&serial;
&term;
&dialup;
&dialout;
<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;
&isdn;
&mail;
<!-- ************************************************************ -->
<part><heading>Advanced topics</heading>
<chapt><heading>The Cutting Edge: FreeBSD-current and FreeBSD-stable</heading>
<p>FreeBSD is under constant development between releases. For
people who want to be on the cutting edge, there are several
easy mechanisms for keeping your system in sync with the latest
developments. Be warned: the cutting edge is not for everyone!
This chapter will help you decide if you want to track the development
system, or stick with one of the released versions.</p>
&current;
&stable;
&synching;
</chapt>
&submitters;
&policies;
&kernelopts;
&kerneldebug;
&linuxemu;
<chapt><heading>FreeBSD internals</heading>
&booting;
&memoryuse;
&dma;
<!-- ************************************************************ -->
<part><heading>Appendices</heading>
&mirrors;
&bibliography;
&eresources;
&contrib;
&pgpkeys;
<!-- &glossary; -->
</book>
</linuxdoc>

View file

@ -1,91 +0,0 @@
<!-- $Id: history.sgml,v 1.21 1997/02/22 12:58:35 peter Exp $ -->
<!-- The FreeBSD Documentation Project -->
<sect><heading>A brief history of FreeBSD<label id="history"></heading>
<p><em>Contributed by &a.jkh;</em>.
The FreeBSD project had its genesis in the early part of 1993,
partially as an outgrowth of the "Unofficial 386BSD Patchkit" by the
patchkit's last 3 coordinators: Nate Williams, Rod Grimes and myself.
Our original goal was to produce an intermediate snapshot of 386BSD in
order to fix a number of problems with it that the patchkit mechanism
just was not capable of solving. Some of you may remember the early
working title for the project being "386BSD 0.5" or "386BSD Interim"
in reference to that fact.
386BSD was Bill Jolitz's operating system, which had been up to that
point suffering rather severely from almost a year's worth of neglect.
As the patchkit swelled ever more uncomfortably with each passing day,
we were in unanimous agreement that something had to be done and
decided to try and assist Bill by providing this interim "cleanup"
snapshot. Those plans came to a rude halt when Bill Jolitz suddenly
decided to withdraw his sanction from the project and without any
clear indication of what would be done instead.
It did not take us long to decide that the goal remained worthwhile,
even without Bill's support, and so we adopted the name "FreeBSD",
coined by David Greenman. Our initial objectives were set after
consulting with the system's current users and, once it became clear
that the project was on the road to perhaps even becoming a reality,
I contacted Walnut Creek CDROM with an eye towards improving
FreeBSD's distribution channels for those many unfortunates without
easy access to the Internet. Walnut Creek CDROM not only supported
the idea of distributing FreeBSD on CD but went so far as to provide
the project with a machine to work on and a fast Internet connection.
Without Walnut Creek CDROM's almost unprecedented degree of faith in
what was, at the time, a completely unknown project, it is quite
unlikely that FreeBSD would have gotten as far, as fast, as it
has today.
The first CDROM (and general net-wide) distribution was FreeBSD 1.0,
released in December of 1993. This was based on the 4.3BSD-Lite
("Net/2") tape from U.C. Berkeley, with many components also provided by
386BSD and the Free Software Foundation. It was a fairly reasonable
success for a first offering, and we followed it with the highly successful
FreeBSD 1.1 release in May of 1994.
Around this time, some rather unexpected storm clouds formed on the
horizon as Novell and U.C. Berkeley settled their long-running lawsuit
over the legal status of the Berkeley Net/2 tape. A condition of that
settlement was U.C. Berkeley's concession that large parts of Net/2
were "encumbered" code and the property of Novell, who had in turn acquired
it from AT&amp;T some time previously. What Berkeley got in return was
Novell's "blessing" that the 4.4BSD-Lite release, when it was finally
released, would be declared unencumbered and all existing Net/2 users
would be strongly encouraged to switch. This included FreeBSD, and the
project was given until the end of July 1994 to stop shipping its own
Net/2 based product. Under the terms of that agreement, the project
was allowed one last release before the deadline, that release being
FreeBSD 1.1.5.1.
FreeBSD then set about the arduous task of literally re-inventing itself
from a completely new and rather incomplete set of 4.4BSD-Lite bits. The
"Lite" releases were light in part because Berkeley's CSRG had removed
large chunks of code required for actually constructing a bootable running
system (due to various legal requirements) and the fact that the Intel
port of 4.4 was highly incomplete. It took the project until December of 1994
to make this transition, and in January of 1995 it released FreeBSD 2.0 to
the net and on CDROM. Despite being still more than a little rough around
the edges, the release was a significant success and was followed by the more
robust and easier to install FreeBSD 2.0.5 release in June of 1995.
<em>Where to from here?</em>
We released FreeBSD 2.1.5 in August of 1996, and it appeared to be
popular enough among the ISP and commercial communities that another
release along the 2.1-stable branch was merited. This was FreeBSD 2.1.7.1,
released in February 1997 and capping the end of mainstream development
on 2.1-stable. Now in maintenance mode, only security enhancements and other
critical bug fixes will be done on this branch (RELENG_2_1_0).
FreeBSD 2.2 was branched from the development mainline ("-current") in
November 1996 as the RELENG_2_2 branch, and the first full release
(2.2.1) was released in April, 1997. Further releases along the 2.2 branch
are planned throughout the Summer and Fall of '97 and into early
Winter, at which point the first 3.0 release will appear.
Long term development projects for everything from SMP to DEC ALPHA support
will continue to take place in the 3.0-current branch and SNAPshot releases
of 3.0 on CDROM (and, of course, on the net) will begin to appear in May, 1997.

File diff suppressed because it is too large Load diff

View file

@ -1,819 +0,0 @@
<!-- $Id: install.sgml,v 1.52 1997/03/07 12:35:57 jkh 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.<P></P></item>
<item>Download the <url
url="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/&rel.current;-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 only be used with
1.44 megabyte 3.5 inch floppy disks.<P></P></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/fdimage.exe"
name="fdimage.exe">, then run it like so:
<tscreen><verb>
E:\> tools\fdimage floppies\boot.flp a:
</verb></tscreen> The
program will format the A: drive and then copy the
boot.flp image onto it (assuming that you're at the top
level of a FreeBSD distribution and the floppy images
live in the floppies subdirectory).<P></P></item>
<item>If you are using a UNIX system:
<tscreen>
% dd if=boot.flp of=<em>disk&lowbar;device</em>
</tscreen>
where <em>disk&lowbar;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.<P></P></item>
</itemize>
<P></P></item>
<item>With the installation disk in the A: drive, reboot your
computer. You should get a boot prompt something like this:
<tscreen>
&gt;&gt; FreeBSD BOOT ...<newline>
Usage: &lsqb;&lsqb;&lsqb;0:&rsqb;&lsqb;wd&rsqb;(0,a)&rsqb;/kernel&rsqb;&lsqb;-abcCdhrsv&rsqb;<newline>
Use 1:sd(0,a)kernel to boot sd0 if it is BIOS drive 1<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.<P></P></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&gt;</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&gt;</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 four 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 1505 ISA SCSI controller
<item>Adaptec 152x series ISA SCSI controllers
<item>Adaptec 1535 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/2940U/3940
(Narrow/Wide/Twin)
series EISA/VLB/PCI SCSI controllers
<item>Adaptec AIC7850 on-board 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 &amp; 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 &amp; 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>SMC EtherPower (2)
<item>Zynx ZX342
</itemize>
<item>DEC FDDI (DEFPA/DEFEA) NICs
<item>Fujitsu FMV-181 and FMV-182
<item>Fujitsu MB86960A/MB86965A
<item>Intel EtherExpress
<item>Intel EtherExpress Pro/100B 100Mbit.
<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>3Com 3C590, 3C595 Etherlink III
<item>HP PC Lan Plus (27247B and 27252A)
<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>SDL Communications RISCom/N2 and N2pci sync serial cards.
<item>Digiboard Sync/570i high-speed sync serial card.
<item>Decision-Computer Intl. "Eight-Serial" 8 port serial cards
using shared IRQ.
<item>Adlib, SoundBlaster, SoundBlaster Pro,
ProAudioSpectrum, Gravis UltraSound, Gravis UltraSound MAX
and Roland MPU-401 sound cards.
<item>Matrox Meteor video frame grabber.
<item>Creative Labs Video spigot frame grabber.
<item>Omnimedia Talisman frame grabber.
<item>X-10 power controllers.
<item>PC joystick and speaker.
</itemize>
FreeBSD does not currently support IBM's microchannel (MCA) bus.
<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, 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 are 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 are running
FreeBSD 2.1-RELEASE and have an IDE CDROM, use the
inst&lowbar;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 is necessary to first
type: <tt>umount /cdrom</tt>. Do not 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 simply because you enjoy doing
things the hard way, you must first prepare some
floppies for the install.
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 are preparing these floppies under DOS, then
THESE floppies *must* be formatted using the MS-DOS FORMAT
command. If you are 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 am taking such
special care to mention it here!
If you are creating the floppies from another FreeBSD machine,
a format is still not a bad idea though you do nott 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,
as the following sequence of commands (for a 3.5" 1.44MB floppy
disk) illustrates:
<tscreen><verb>
fdformat -f 1440 fd0.1440
disklabel -w -r fd0.1440 floppy3
newfs -t 2 -u 18 -l 1 -i 65536 /dev/rfd0
(Use "fd0.1200" and "floppy5" for 5.25" 1.2MB disks).
</verb></tscreen>
Then you can mount and write to them like any other file
system.
After you have 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:&bsol;bin&bsol;bin.aa</bf>,
<bf>a:&bsol;bin&bsol;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:&bsol;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:\BIN C:\FREEBSD\BIN\
C> XCOPY /S E:\MANPAGES C:\FREEBSD\MANPAGES\
</verb></tscreen>
assuming that <tt>C:</tt> is where you have free space
and <tt>E:</tt> is where your CDROM is mounted.
For as many `DISTS' you wish to install from MS-DOS
(and you have free space for), install each one under
<tt>C:&bsol;FREEBSD</tt> - the <tt>BIN</tt> dist is only the
minimal requirement.
<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>
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 during installation.
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
&rel.current; 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
&rel.current;. 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/&rel.current;-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 and forwarding FTP requests!</quote>
For a proxy FTP server, you should usually give name of
the server you really want as a part of the username,
after an @-sign. The proxy server then 'fakes' the real
server. An example: Say you want to install from
ftp.freebsd.org, using the proxy FTP server foo.bar.com,
listening on port 1234.
In this case, you go to the options menu, set the FTP
username to ftp@ftp.freebsd.org, and the password to your
e-mail address. As your installation media, you specify
FTP (or passive FTP, if the proxy support it), and the URL
<tscreen><verb>
ftp://foo.bar.com:1234/pub/FreeBSD
</verb></tscreen>
/pub/FreeBSD from ftp.freebsd.org is proxied under
foo.bar.com, allowing you to install from _that_ machine
(which fetch the files from ftp.freebsd.org as your
installation requests them).
<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 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 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&amp;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 Novice, Custom or Express install, depending on
whether or not you would like the installation to help
you through a typical installation, give you a high degree of
control over each step of the installation or simply whizz
through it (using reasonable defaults when possible) as fast
as possible. If you have never used FreeBSD before then the
Novice installation method is most recommended.
<item>The final configuration 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>
<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.
<bf>Can I mount my MS-DOS extended partitions?</bf>
Yes. DOS extended partitions are mapped in at the end of the other
``slices'' in FreeBSD, e.g. your D: drive might be /dev/sd0s5,
your E: drive /dev/sd0s6, and so on. This example assumes, of
course, that your extended partition is on SCSI drive 0. For IDE drives,
substitute ``wd'' for ``sd'' appropriately. You otherwise mount extended
partitions exactly like you would mount any other DOS drive, e.g.:
<tscreen><verb>
mount -t msdos /dev/sd0s5 /dos_d
</verb></tscreen>
<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. BSDI has
also donated their DOS emulator to the BSD world and this is slowly
being ported to FreeBSD-current.
Send mail to the &a.emulation if you're interested in joining
this effort!
In the interim, there is a nice application available in the
<ref id="ports" name="The Ports Collection"> called pcemu
which allows you to run many basic MS-DOS text-mode binaries
by entirely emulating an 8088 CPU.

View file

@ -1,226 +0,0 @@
<!-- $Id$-->
<!-- The FreeBSD Documentation Project -->
<sect><heading>ISDN<label id="isdn"></heading>
<p><em>Last modified by &a.wlloyd;</em>.
<p>A good resource for information on ISDN technology and hardware is
<url url="http://alumni.caltech.edu/~dank/isdn/" name="Dan Kegel's
ISDN Page">.
A quick simple roadmap to ISDN follows:
<itemize>
<item>If you live in Europe I suggest you investigate the ISDN card
section.
<item>If you are planning to use ISDN primarily to connect to the
Internet with an Internet Provider on a dialup non-dedicated basis, I
suggest you look into Terminal Adapters. This will give you the most
flexibility, with the fewest problems, if you change providers.
<item>If you are connecting two lans together, or connecting to the
Internet with a dedicated ISDN connection, I suggest you consider the
stand alone router/bridge option.
</itemize>
<p>Cost is a significant factor in determining what solution you will
choose. The following options are listed from least expensive to most
expensive.
<sect1><heading>ISDN Cards</heading>
<p><em>Original Contribution by &a.hm;.</em>
<p>This section is really only relevant to European ISDN users. The
cards supported are not yet(?) available for North American ISDN
standards.
<p>You should be aware that this code is largely under development.
Specifically, drivers have only been written for two manufacturers
cards.
<p>PC ISDN cards support the full bandwidth of ISDN, 128Kbs. These
cards are often the least expensive type of ISDN equipment.
<p>Under FreeBSD 2.1.0 and 2.1.5, there is early unfinished ISDN code
under /usr/src/gnu/isdn. This code is out of date and should not be
used. If you want to go this route, get the bisdn stuff. This code
has been removed from the main source tree starting with FreeBSD 2.2.
<p>There is the bisdn ISDN package available from
<url url="ftp://ftp.muc.ditec.de/isdn" name="ftp.muc.ditec.de">
supporting FreeBSD 2.1R, FreeBSD-current and NetBSD.
The latest source can be found on the above mentioned ftp server under
directory isdn as file bisdn-097.tar.gz.
There are drivers for the following cards:
<itemize>
<item>Currently all (passive) Teles cards and their clones are supported
for the EuroISDN (DSS1) and 1TR6 protocols.
<item>Dr. Neuhaus - Niccy 1016
</itemize>
There are several limitations with the bisdn stuff. Specifically the
following features usually associated with ISDN are not supported.
<itemize>
<item>No PPP support, only raw hdlc. This means you cannot connect to most
standalone routers.
<item>Bridging Control Protocol not supported.
<item>Multiple cards are not supported.
<item>No bandwidth on demand.
<item>No channel bundling.
</itemize>
A majordomo maintained mailing list is available, to subscribe, send the
usual majordomo requests to
<htmlurl url="mailto:isdn-request@muc.ditec.de"
name="isdn-request@muc.ditec.de">.
<sect1><heading>ISDN Terminal Adapters</heading>
<p>Terminal adapters(TA), are to ISDN what modems are to regular phone
lines.
<p>Most TA's use the standard hayes modem AT command set, and can be
used as a drop in replacement for a modem.
A TA will operate basically the same as a modem except connection and
throughput speeds will be much faster than your old modem. You will
need to configure <ref id="ppp" name="PPP"> exactly the same as for a
modem setup. Make sure you set your serial speed as high as possible.
The main advantage of using a TA to connect to an Internet Provider is
that you can do Dynamic PPP. As IP address space becomes more and more
scarce, most providers are not willing to provide you with a static IP
anymore. Most standalone routers are not able to accommodate dynamic IP
allocation.
TA's completely rely on the PPP daemon that you are running for their
features and stability of connection. This allows you to upgrade easily
from using a modem to ISDN on a FreeBSD machine, if you already have PPP
setup. However, at the same time any problems you experienced with the
PPP program and are going to persist.
If you want maximum stability, use the kernel <ref id="ppp" name="PPP">
option, not the user-land <ref id="userppp" name="iijPPP">.
<p>The following TA's are know to work with FreeBSD.
<itemize>
<item>Motorola BitSurfer and Bitsurfer Pro
<item>Adtran
</itemize>
Most other TA's will probably work as well, TA vendors try to make sure
their product can accept most of the standard modem AT command set.
The real problem with external TA's is like modems you need a good
serial card in your computer.
You should read the <ref id="uart" name="serial ports"> section in the
handbook for a detailed understanding of serial devices, and the
differences between asynchronous and synchronous serial ports.
A TA running off a standard PC serial port (asynchronous) limits you to
115.2Kbs, even though you have a 128Kbs connection. To fully utilize
the 128Kbs that ISDN is capable of, you must move the TA to a
synchronous serial card.
Do not be fooled into buying an internal TA and thinking you have
avoided the synchronous/asynchronous issue. Internal TA's simply have a
standard PC serial port chip built into them. All this will do, is save
you having to buy another serial cable, and find another empty
electrical socket.
A synchronous card with a TA is at least as fast as a standalone router,
and with a simple 386 FreeBSD box driving it, probably more flexible.
The choice of sync/TA vs standalone router is largely a religious
issue. There has been some discussion of this in the mailing lists. I
suggest you search the <url url="http://www.freebsd.org/search.html"
name="archives"> for the complete discussion.
<sect1><heading>Standalone ISDN Bridges/Routers</heading>
<p>ISDN bridges or routers are not at all specific to FreeBSD or any
other operating system. For a more complete description of routing and
bridging technology, please refer to a Networking reference book.
In the context of this page, I will use router and bridge
interchangeably.
<p>As the cost of low end ISDN routers/bridges comes down, it will
likely become a more and more popular choice. An ISDN router is a small
box that plugs directly into your local Ethernet network(or card), and
manages its own connection to the other bridge/router. It has all the
software to do PPP and other protocols built in.
A router will allow you much faster throughput that a standard TA, since
it will be using a full synchronous ISDN connection.
The main problem with ISDN routers and bridges is that interoperability
between manufacturers can still be a problem. If you are planning to
connect to an Internet provider, I recommend that you discuss your needs
with them.
<p>If you are planning to connect two lan segments together, ie: home
lan to the office lan, this is the simplest lowest maintenance
solution. Since you are buying the equipment for both sides of the
connection you can be assured that the link will work.
For example to connect a home computer or branch office network to a
head office network the following setup could be used.
<em>Branch office or Home network</em>
Network is 10 Base T Ethernet. Connect router to network cable with
AUI/10BT transceiver, if necessary.
<verb>
---Sun workstation
|
---FreeBSD box
|
---Windows 95 (Do not admit to owning it)
|
Standalone router
|
ISDN BRI line
</verb>
If your home/branch office is only one computer you can use a twisted
pair crossover cable to connect to the standalone router directly.
<em>Head office or other lan</em>
Network is Twisted Pair Ethernet.
<verb>
-------Novell Server
| H |
| ---Sun
| |
| U ---FreeBSD
| |
| ---Windows 95
| B |
|___---Standalone router
|
ISDN BRI line
</verb>
One large advantage of most routers/bridges is that they allow you to
have 2 SEPARATE INDEPENDENT PPP connections to 2 separate sites at the
SAME time. This is not supported on most TA's, except for
specific(expensive) models that have two serial ports. Do not confuse
this with channel bonding, MPP etc.
This can be very useful feature, for example if you have an dedicated
internet ISDN connection at your office and would like to tap into it,
but don't want to get another ISDN line at work. A router at the office
location can manage a dedicated B channel connection (64Kbs) to the
internet, as well as a use the other B channel for a separate data connection.
The second B channel can be used for dialin, dialout or dynamically
bond(MPP etc.) with the first B channel for more bandwidth.
<p>An Ethernet bridge will also allow you to transmit more than just
IP traffic, you can also send IPX/SPX or whatever other protocols you
use.</p>

View file

@ -1,480 +0,0 @@
<!-- $Id$ -->
<!-- The FreeBSD Documentation Project -->
<sect><heading>Kerberos<label id="kerberos"></heading>
<p><em>Contributed by &a.markm; (based on contribution by &a.md;).</em>
Kerberos is a network add-on system/protocol that allows users to
authenticate themselves through the services of a secure server.
Services such as remote login, remote copy, secure inter-system
file copying and other high-risk tasks are made considerably safer
and more controllable.
The following instructions can be used as a guide on how to
set up Kerberos as distributed for FreeBSD. However, you should refer
to the relevant manual pages for a complete description.
In FreeBSD, the Kerberos is not that from the original 4.4BSD-Lite,
distribution, but eBones, which had been previously ported to
FreeBSD 1.1.5.1, and was sourced from outside the USA/Canada,
and is thus available to system owners outside those countries.
For those needing to get a legal foreign distribution of this
software, please <em>DO NOT</em> get it from a USA or Canada site.
You will get that site in <em>big</em> trouble! A legal copy of this is
available from <tt>skeleton.mikom.csir.co.za</tt>, which is in South
Africa.
<sect1>
<heading>Creating the initial database</heading>
<p>This is done on the Kerberos server only. First make sure that your
do not have any old Kerberos databases around. You should change to the
directory <tt>/etc/kerberosIV</tt> and check that only the following
files are present:
<tscreen><verb>
grunt# cd /etc/kerberosIV
grunt# ls
README krb.conf krb.realms
</verb></tscreen>
<p>If any additional files (such as <tt>principal.*</tt> or
<tt>master_key</tt>) exist, then use the <tt>kdb_destroy</tt>
command to destroy the old Kerberos database, of if Kerberos
is not running, simply delete the extra files with <tt>rm</tt>.
You should now edit the <tt>krb.conf</tt> and <tt>krb.realms</tt>
files to define your Kerberos realm. In this case the realm will
be <it>GRONDAR.ZA</it> and the server is <it>grunt.grondar.za</it>.
We edit or create the <tt>krb.conf</tt> file:
<tscreen><verb>
grunt# cat krb.conf
GRONDAR.ZA
GRONDAR.ZA grunt.grondar.za admin server
CS.BERKELEY.EDU okeeffe.berkeley.edu
ATHENA.MIT.EDU kerberos.mit.edu
ATHENA.MIT.EDU kerberos-1.mit.edu
ATHENA.MIT.EDU kerberos-2.mit.edu
ATHENA.MIT.EDU kerberos-3.mit.edu
LCS.MIT.EDU kerberos.lcs.mit.edu
TELECOM.MIT.EDU bitsy.mit.edu
ARC.NASA.GOV trident.arc.nasa.gov
</verb></tscreen>
<p>In this case, the other realms do not need to be there.
They are here as an example of how a machine may be made aware
of multiple realms. You may wish to not include them for simplicity.
The first line names the realm in which this system works. The other
lines contain realm/host entries. The first item on a line is a realm,
and the second is a host in that realm that is acting as a ``key
distribution centre''. The words ``admin server'' following a hosts
name means that host also provides an administrative database server.
For further explanation of these terms, please consult the Kerberos
man pages.
Now we have to add <it>grunt.grondar.za</it> to the <it>GRONDAR.ZA</it>
realm and also add an entry to put all hosts in the <it>.grondar.za</it>
domain in the <it>GRONDAR.ZA</it> realm. The <tt>krb.realms</tt> file
would be updated as follows:
<tscreen><verb>
grunt# cat krb.realms
grunt.grondar.za GRONDAR.ZA
.grondar.za GRONDAR.ZA
.berkeley.edu CS.BERKELEY.EDU
.MIT.EDU ATHENA.MIT.EDU
.mit.edu ATHENA.MIT.EDU
</verb></tscreen>
<p>Again, the other realms do not need to be there.
They are here as an example of how a machine may be made aware
of multiple realms. You may wish to remove them to simplify things.
The first line puts the <it>specific</it> system into the named
realm. The rest of the lines show how to default systems of a
particular subdomain to a named realm.
Now we are ready to create the database. This only needs to run on
the Kerberos server (or Key Distribution Centre). Issue the
<tt>kdb_init</tt> command to do this:
<tscreen><verb>
grunt# kdb_init
Realm name [default ATHENA.MIT.EDU ]: GRONDAR.ZA
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.
Enter Kerberos master key:
</verb></tscreen>
<p>Now we have to save the key so that servers on the local
machine can pick it up. Use the <tt>kstash</tt> command to
do this.
<tscreen><verb>
grunt# kstash
Enter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
</verb></tscreen>
<p>This saves the encrypted master password in
<tt>/etc/kerberosIV/master_key</tt>.
<sect1>
<heading>Making it all run</heading>
<p>Two principals need to be added to the database for <it>each</it>
system that will be secured with Kerberos. Their names are
<tt>kpasswd</tt> and <tt>rcmd</tt> These two principals are
made for each system, with the instance being the name of the
individual system.
These daemons, <tt>kpasswd</tt> and <tt>rcmd</tt> allow other systems
to change Kerberos passwords and run commands like <tt>rcp</tt>,
<tt>rlogin</tt> and <tt>rsh</tt>.
Now lets add these entries:
<tscreen><verb>
grunt# kdb_edit
Opening database...
Enter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.
Principal name: passwd
Instance: grunt
<Not found>, Create [y] ? y
Principal: passwd, Instance: grunt, kdc_key_ver: 1
New Password: <---- enter RANDOM here
Verifying password
New Password: <---- enter RANDOM here
Random password [y] ? y
Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
Max ticket lifetime (*5 minutes) [ 255 ] ?
Attributes [ 0 ] ?
Edit O.K.
Principal name: rcmd
Instance: grunt
<Not found>, Create [y] ?
Principal: rcmd, Instance: grunt, kdc_key_ver: 1
New Password: <---- enter RANDOM here
Verifying password
New Password: <---- enter RANDOM here
Random password [y] ?
Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
Max ticket lifetime (*5 minutes) [ 255 ] ?
Attributes [ 0 ] ?
Edit O.K.
Principal name: <---- null entry here will cause an exit
</verb></tscreen>
<sect1>
<heading>Creating the server file</heading>
<p>We now have to extract all the instances which define the services
on each machine. For this we use the <tt>ext_srvtab</tt> command.
This will create a file which must be copied or moved <it>by secure
means</it> to each Kerberos client's /etc/kerberosIV directory. This
file must be present on each server and client, and is crucial to the
operation of Kerberos.
<tscreen><verb>
grunt# ext_srvtab grunt
Enter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Generating 'grunt-new-srvtab'....
</verb></tscreen>
<p>Now, this command only generates a temporary file
which must be renamed to <tt>srvtab</tt> so that all the
server can pick it up. Use the <tt>mv</tt> command to move it
into place on the original system:
<tscreen><verb>
grunt# mv grunt-new-srvtab srvtab
</verb></tscreen>
<p>If the file is for a client system, and the network is not
deemed safe, then copy the <tt>&lt;client&gt;-new-srvtab</tt> to
removable media and transport it by secure physical means. Be
sure to rename it to <tt>srvtab</tt> in the client's
<tt>/etc/kerberosIV</tt> directory, and make sure it is mode 600:
<tscreen><verb>
grumble# mv grumble-new-srvtab srvtab
grumble# chmod 600 srvtab
</verb></tscreen>
<sect1>
<heading>Populating the database</heading>
<p>We now have to add some user entries into the database.
First lets create an entry for the user <it>jane</it>. Use
the <tt>kdb_edit</tt> command to do this:
<tscreen><verb>
grunt# kdb_edit
Opening database...
Enter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.
Principal name: jane
Instance:
<Not found>, Create [y] ? y
Principal: jane, Instance: , kdc_key_ver: 1
New Password: <---- enter a secure password here
Verifying password
New Password: <---- re-enter the password here
Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
Max ticket lifetime (*5 minutes) [ 255 ] ?
Attributes [ 0 ] ?
Edit O.K.
Principal name: <---- null entry here will cause an exit
</verb></tscreen>
<sect1>
<heading>Testing it all out</heading>
<p>First we have to start the Kerberos daemons. NOTE that if you have
correctly edited your <tt>/etc/sysconfig</tt> then this will happen
automatically when you reboot. This is only necessary on the Kerberos
server. Kerberos clients will automagically get what they need from
the <tt>/etc/kerberosIV</tt> directory.
<tscreen><verb>
grunt# kerberos &
grunt# Kerberos server starting
Sleep forever on error
Log file is /var/log/kerberos.log
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Current Kerberos master key version is 1
Local realm: GRONDAR.ZA
grunt# kadmind -n &
grunt# KADM Server KADM0.0A initializing
Please do not use 'kill -9' to kill this job, use a
regular kill instead
Current Kerberos master key version is 1.
Master key entered. BEWARE!
</verb></tscreen>
<p>Now we can try using the <tt>kinit</tt> command to get a ticket for
the id <it>jane</it> that we created above:
<tscreen><verb>
grunt$ kinit jane
MIT Project Athena (grunt.grondar.za)
Kerberos Initialization for "jane"
Password:
</verb></tscreen>
<p>Try listing the tokens using <tt>klist</tt> to see if we really have them:
<tscreen><verb>
grunt$ klist
Ticket file: /tmp/tkt245
Principal: jane@GRONDAR.ZA
Issued Expires Principal
Apr 30 11:23:22 Apr 30 19:23:22 krbtgt.GRONDAR.ZA@GRONDAR.ZA
</verb></tscreen>
<p>Now try changing the password using <tt>passwd</tt> to check if the
kpasswd daemon can get authorization to the Kerberos database:
<tscreen><verb>
grunt$ passwd
realm GRONDAR.ZA
Old password for jane:
New Password for jane:
Verifying password
New Password for jane:
Password changed.
</verb></tscreen>
<sect1>
<heading>Adding <tt>su</tt> privileges</heading>
<p>Kerberos allows us to give <it>each</it> user who needs root
privileges their own <it>separate</it> <tt>su</tt>password. We
could now add an id which is authorized to <tt>su</tt> to <it>root</it>.
This is controlled by having an instance of <it>root</it> associated
with a principal. Using <tt>kdb_edit</tt> we can create the entry
<it>jane.root</it> in the Kerberos database:
<tscreen><verb>
grunt# kdb_edit
Opening database...
Enter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.
Principal name: jane
Instance: root
<Not found>, Create [y] ? y
Principal: jane, Instance: root, kdc_key_ver: 1
New Password: <---- enter a SECURE password here
Verifying password
New Password: <---- re-enter the password here
Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
Max ticket lifetime (*5 minutes) [ 255 ] ? 12 <--- Keep this short!
Attributes [ 0 ] ?
Edit O.K.
Principal name: <---- null entry here will cause an exit
</verb></tscreen>
<p>Now try getting tokens for it to make sure it works:
<tscreen><verb>
grunt# kinit jane.root
MIT Project Athena (grunt.grondar.za)
Kerberos Initialization for "jane.root"
Password:
</verb></tscreen>
<p>Now we need to add the user to root's <tt>.klogin</tt> file:
<tscreen><verb>
grunt# cat /root/.klogin
jane.root@GRONDAR.ZA
</verb></tscreen>
<p>Now try doing the <tt>su</tt>:
<tscreen><verb>
[jane@grunt 10407] su
Password:
grunt#
</verb></tscreen>
and take a look at what tokens we have:
<tscreen><verb>
grunt# klist
Ticket file: /tmp/tkt_root_245
Principal: jane.root@GRONDAR.ZA
Issued Expires Principal
May 2 20:43:12 May 3 04:43:12 krbtgt.GRONDAR.ZA@GRONDAR.ZA
</verb></tscreen>
<sect1>
<heading>Using other commands</heading>
<p>In an earlier example, we created a principal called <tt>jane</tt>
with an instance <tt>root</tt>. This was based on a user with the
same name as the principal, and this is a Kerberos default; that a
<em>&lt;principal&gt;.&lt;instance&gt;</em> of the form
<em>&lt;username&gt;.</em><tt>root</tt> will allow that
<em>&lt;username&gt;</em> to <tt>su</tt> to root if the necessary
entries are in the <tt>.klogin</tt> file in <tt>root</tt>'s home
directory:
<tscreen><verb>
grunt# cat /root/.klogin
jane.root@GRONDAR.ZA
</verb></tscreen>
<p>Likewise, if a user has in their own home directory lines of the
form:
<tscreen><verb>
[jane@grunt 10543] cat ~/.klogin
jane@GRONDAR.ZA
jack@GRONDAR.ZA
</verb></tscreen>
<p>This allows anyone in the <em>GRONDAR.ZA</em> realm who has
authenticated themselves to <em>jane</em> or <em>jack</em> (via
<tt>kinit</tt>, see above) access to <tt>rlogin</tt> to <em>jane</em>'s
account or files on this system (<em>grunt</em>) via <tt>rlogin</tt>,
<tt>rsh</tt> or <tt>rcp</tt>.
For example, Jane now logs into another system, using Kerberos:
<tscreen><verb>
[jane@grumble 573] kinit
MIT Project Athena (grunt.grondar.za)
Password:
[jane@grumble 574] rlogin grunt
Last login: Mon May 1 21:14:47 from grumble
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995
[jane@grunt 10567]
</verb></tscreen>
<p>Or Jack logs into Jane's account on the same machine (Jane having set up
the <tt>.klogin</tt> file as above, and the person in charge of Kerberos
having set up principal <em>jack</em> with a null instance:
<tscreen><verb>
[jack@grumble 573] kinit
[jack@grumble 574] rlogin grunt -l jane
MIT Project Athena (grunt.grondar.za)
Password:
Last login: Mon May 1 21:16:55 from grumble
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995
[jane@grunt 10578]
</verb></tscreen>

File diff suppressed because it is too large Load diff

View file

@ -1,525 +0,0 @@
<!-- $Id: kerneldebug.sgml,v 1.13 1997/03/18 00:42:36 joerg Exp $ -->
<!-- The FreeBSD Documentation Project -->
<chapt><heading>Kernel Debugging<label id="kerneldebug"></heading>
<p><em>Contributed by &a.paul; and &a.joerg;</em>
<sect><heading>Debugging a kernel crash dump with kgdb</heading>
<p>Here are some instructions for getting kernel debugging
working on a crash dump, it assumes that you have enough swap
space for a crash dump. If you have multiple swap
partitions and the first one is too small to hold the dump,
you can configure your kernel to use an alternate dump device
(in the <tt>config kernel</tt> line), or
you can specify an alternate using the dumpon(8) command.
Dumps to non-swap devices,
tapes for example, are currently not supported. Config your
kernel using <tt>config -g</tt>.
See <ref id="kernelconfig" name="Kernel Configuration"> for
details on configuring the FreeBSD kernel.
Use the <tt>dumpon(8)</tt> command to tell the kernel where to dump
to (note that this will have to be done after configuring the
partition in question as swap space via <tt>swapon(8)</tt>). This is
normally arranged via <tt>/etc/sysconfig</tt> and <tt>/etc/rc</tt>.
Alternatively, you can
hard-code the dump device via the `dump' clause in the `config' line
of your kernel config file. This is deprecated, use only if you
want a crash dump from a kernel that crashes during booting.
<em><bf>Note:</bf> In the following, the term `<tt>kgdb</tt>' refers
to <tt>gdb</tt> run in `kernel debug mode'. This can be accomplished by
either starting the <tt>gdb</tt> with the option <tt>-k</tt>, or by linking
and starting it under the name <tt>kgdb</tt>. This is not being
done by default, however, and the idea is basically deprecated since
the GNU folks do not love it if their tools behave differently when
called by another name. This feature might as well be discontinued
in further releases.</em>
When the kernel has been built make a copy of it, say
<tt>kernel.debug</tt>, and then run <tt>strip -d</tt> on the
original. Install the original as normal. You may also install
the unstripped kernel, but symbol table lookup time for some
programs will drastically increase, and since
the whole kernel is loaded entirely at boot time and cannot be
swapped out later, several megabytes of
physical memory will be wasted.
If you are testing a new kernel, for example by typing the new
kernel's name at the boot prompt, but need to boot a different
one in order to get your system up and running again, boot it
only into single user state using the <tt>-s</tt> flag at the
boot prompt, and then perform the following steps:
<tscreen><verb>
fsck -p
mount -a -t ufs # so your file system for /var/crash is writable
savecore -N /kernel.panicked /var/crash
exit # ...to multi-user
</verb></tscreen>
This instructs <tt>savecore(8)</tt> to use another kernel for symbol name
extraction. It would otherwise default to the currently running kernel
and most likely not do anything at all since the crash dump and the
kernel symbols differ.
Now, after a crash dump, go to <tt>/sys/compile/WHATEVER</tt> and run
<tt>kgdb</tt>. From <tt>kgdb</tt> do:
<tscreen><verb>
symbol-file kernel.debug
exec-file /var/crash/kernel.0
core-file /var/crash/vmcore.0
</verb></tscreen>
and voila, you can debug the crash dump using the kernel sources
just like you can for any other program.
Here is a script log of a <tt>kgdb</tt> session illustrating the
procedure. Long
lines have been folded to improve readability, and the lines are
numbered for reference. Despite this, it is a real-world error
trace taken during the development of the pcvt console driver.
<tscreen><verb>
1:Script started on Fri Dec 30 23:15:22 1994
2:uriah # cd /sys/compile/URIAH
3:uriah # kgdb kernel /var/crash/vmcore.1
4:Reading symbol data from /usr/src/sys/compile/URIAH/kernel...done.
5:IdlePTD 1f3000
6:panic: because you said to!
7:current pcb at 1e3f70
8:Reading in symbols for ../../i386/i386/machdep.c...done.
9:(kgdb) where
10:#0 boot (arghowto=256) (../../i386/i386/machdep.c line 767)
11:#1 0xf0115159 in panic ()
12:#2 0xf01955bd in diediedie () (../../i386/i386/machdep.c line 698)
13:#3 0xf010185e in db_fncall ()
14:#4 0xf0101586 in db_command (-266509132, -266509516, -267381073)
15:#5 0xf0101711 in db_command_loop ()
16:#6 0xf01040a0 in db_trap ()
17:#7 0xf0192976 in kdb_trap (12, 0, -272630436, -266743723)
18:#8 0xf019d2eb in trap_fatal (...)
19:#9 0xf019ce60 in trap_pfault (...)
20:#10 0xf019cb2f in trap (...)
21:#11 0xf01932a1 in exception:calltrap ()
22:#12 0xf0191503 in cnopen (...)
23:#13 0xf0132c34 in spec_open ()
24:#14 0xf012d014 in vn_open ()
25:#15 0xf012a183 in open ()
26:#16 0xf019d4eb in syscall (...)
27:(kgdb) up 10
28:Reading in symbols for ../../i386/i386/trap.c...done.
29:#10 0xf019cb2f in trap (frame={tf_es = -260440048, tf_ds = 16, tf_\
30:edi = 3072, tf_esi = -266445372, tf_ebp = -272630356, tf_isp = -27\
31:2630396, tf_ebx = -266427884, tf_edx = 12, tf_ecx = -266427884, tf\
32:_eax = 64772224, tf_trapno = 12, tf_err = -272695296, tf_eip = -26\
33:6672343, tf_cs = -266469368, tf_eflags = 66066, tf_esp = 3072, tf_\
34:ss = -266427884}) (../../i386/i386/trap.c line 283)
35:283 (void) trap_pfault(&amp;frame, FALSE);
36:(kgdb) frame frame->tf_ebp frame->tf_eip
37:Reading in symbols for ../../i386/isa/pcvt/pcvt_drv.c...done.
38:#0 0xf01ae729 in pcopen (dev=3072, flag=3, mode=8192, p=(struct p\
39:roc *) 0xf07c0c00) (../../i386/isa/pcvt/pcvt_drv.c line 403)
40:403 return ((*linesw[tp->t_line].l_open)(dev, tp));
41:(kgdb) list
42:398
43:399 tp->t_state |= TS_CARR_ON;
44:400 tp->t_cflag |= CLOCAL; /* cannot be a modem (:-) */
45:401
46:402 #if PCVT_NETBSD || (PCVT_FREEBSD >= 200)
47:403 return ((*linesw[tp->t_line].l_open)(dev, tp));
48:404 #else
49:405 return ((*linesw[tp->t_line].l_open)(dev, tp, flag));
50:406 #endif /* PCVT_NETBSD || (PCVT_FREEBSD >= 200) */
51:407 }
52:(kgdb) print tp
53:Reading in symbols for ../../i386/i386/cons.c...done.
54:$1 = (struct tty *) 0x1bae
55:(kgdb) print tp->t_line
56:$2 = 1767990816
57:(kgdb) up
58:#1 0xf0191503 in cnopen (dev=0x00000000, flag=3, mode=8192, p=(st\
59:ruct proc *) 0xf07c0c00) (../../i386/i386/cons.c line 126)
60: return ((*cdevsw[major(dev)].d_open)(dev, flag, mode, p));
61:(kgdb) up
62:#2 0xf0132c34 in spec_open ()
63:(kgdb) up
64:#3 0xf012d014 in vn_open ()
65:(kgdb) up
66:#4 0xf012a183 in open ()
67:(kgdb) up
68:#5 0xf019d4eb in syscall (frame={tf_es = 39, tf_ds = 39, tf_edi =\
69: 2158592, tf_esi = 0, tf_ebp = -272638436, tf_isp = -272629788, tf\
70:_ebx = 7086, tf_edx = 1, tf_ecx = 0, tf_eax = 5, tf_trapno = 582, \
71:tf_err = 582, tf_eip = 75749, tf_cs = 31, tf_eflags = 582, tf_esp \
72:= -272638456, tf_ss = 39}) (../../i386/i386/trap.c line 673)
73:673 error = (*callp->sy_call)(p, args, rval);
74:(kgdb) up
75:Initial frame selected; you cannot go up.
76:(kgdb) quit
77:uriah # exit
78:exit
79:
80:Script done on Fri Dec 30 23:18:04 1994
</verb></tscreen>
Comments to the above script:
<descrip>
<tag/line 6:/ This is a dump taken from within DDB (see below), hence the
panic comment ``because you said to!'', and a rather long
stack trace; the initial reason for going into DDB has been
a page fault trap though.
<tag/line 20:/ This is the location of function <tt>trap()</tt>
in the stack trace.
<tag/line 36:/ Force usage of a new stack frame; this is no longer
necessary now. The stack frames are supposed to point to
the right locations now, even in case of a trap.
(I do not have a new core dump handy &lt;g&gt;, my kernel
did not panic for ia rather long time.)
From looking at the code in source line 403,
there is a high probability that either the pointer
access for ``tp'' was messed up, or the array access was
out of bounds.
<tag/line 52:/ The pointer looks suspicious, but happens to be a valid
address.
<tag/line 56:/ However, it obviously points to garbage, so we have found our
error! (For those unfamiliar with that particular piece
of code: <tt>tp-&gt;t_line</tt> refers to the line discipline
of the console device here, which must be a rather small integer
number.)
</descrip>
<sect><heading>Post-mortem analysis of a dump</heading>
<p>What do you do if a kernel dumped core but you did not expect
it, and it is therefore not compiled using <tt>config -g</tt>?
Not everything is lost here. Do not panic!
Of course, you still need to enable crash dumps. See above
on the options you have to specify in order to do this.
Go to your kernel compile directory, and edit the line
containing <tt>COPTFLAGS?=-O</tt>. Add the <tt>-g</tt> option
there (but <em>do not</em> change anything on the level of
optimization). If you do already know roughly the probable
location of the failing piece of code (e.g., the <tt>pcvt</tt>
driver in the example above), remove all the object files for
this code. Rebuild the kernel. Due to the time stamp change on
the Makefile, there will be some other object files rebuild,
for example <tt>trap.o</tt>. With a bit of luck, the added
<tt>-g</tt> option will not change anything for the generated
code, so you will finally get a new kernel with similar code to
the faulting one but some debugging symbols. You should at
least verify the old and new sizes with the <tt>size(1)</tt> command. If
there is a mismatch, you probably need to give up here.
Go and examine the dump as described above. The debugging
symbols might be incomplete for some places, as can be seen in
the stack trace in the example above where some functions are
displayed without line numbers and argument lists. If you need
more debugging symbols, remove the appropriate object files and
repeat the <tt>kgdb</tt> session until you know enough.
All this is not guaranteed to work, but it will do it fine in
most cases.
<sect><heading>On-line kernel debugging using DDB</heading>
<p>While <tt>kgdb</tt> as an offline debugger provides a very
high level of user interface, there are some things it cannot do.
The most important ones being breakpointing and single-stepping
kernel code.
If you need to do low-level debugging on your kernel, there is
an on-line debugger available called DDB. It allows to
setting breakpoints, single-steping kernel functions, examining
and changing kernel variables, etc. However, it cannot not
access kernel source files, and only has access to the global
and static symbols, not to the full debug information like
<tt>kgdb</tt>.
To configure your kernel to include DDB, add the option line
<tscreen><verb>
options DDB
</verb></tscreen>
to your config file, and rebuild. (See <ref id="kernelconfig"
name="Kernel Configuration"> for details on configuring the
FreeBSD kernel. Note that if you have an older version of the
boot blocks, your debugger symbols might not be loaded at all.
Update the boot blocks, the recent ones do load the DDB symbols
automagically.)
Once your DDB kernel is running, there are several ways to
enter DDB. The first, and earliest way is to type the boot
flag <tt>-d</tt> right at the boot prompt. The kernel will
start up in debug mode and enter DDB prior to any device
probing. Hence you are able to even debug the device
probe/attach functions.
The second scenario is a hot-key on the keyboard, usually
Ctrl-Alt-ESC. For syscons, this can be remapped, and some of
the distributed maps do this, so watch out.
There is an option
available for serial consoles
that allows the use of a serial line BREAK on the console line to
enter DDB (``<tt>options BREAK_TO_DEBUGGER</tt>''
in the kernel config file). It is not the default since there are a lot of
crappy serial adapters around that gratuitously generate a
BREAK condition for example when pulling the cable.
The third way is that any panic condition will branch to DDB if
the kernel is configured to use it.
For this reason, it is not wise to
configure a kernel with DDB for a machine running unattended.
The DDB commands roughly resemble some <tt>gdb</tt> commands. The first you
probably need is to set a breakpoint:
<tscreen><verb>
b function-name
b address
</verb></tscreen>
Numbers are taken hexadecimal by default, but to make them
distinct from symbol names, hexadecimal numbers starting with the
letters <tt>a</tt>-<tt>f</tt> need to be preceded with
<tt>0x</tt> (for other numbers, this is optional). Simple
expressions are allowed, for example: <tt>function-name + 0x103</tt>.
To continue the operation of an interrupted kernel, simply type
<tscreen><verb>
c
</verb></tscreen>
To get a stack trace, use
<tscreen><verb>
trace
</verb></tscreen>
Note that when entering DDB via a hot-key, the kernel is currently
servicing an interrupt, so the stack trace might be not of much use
for you.
If you want to remove a breakpoint, use
<tscreen><verb>
del
del address-expression
</verb></tscreen>
The first form will be accepted immediately after a breakpoint hit,
and deletes the current breakpoint. The second form can remove any
breakpoint, but you need to specify the exact address, as it can be
obtained from
<tscreen><verb>
show b
</verb></tscreen>
To single-step the kernel, try
<tscreen><verb>
s
</verb></tscreen>
This will step into functions, but you can make DDB trace them until
the matching return statement is reached by
<tscreen><verb>
n
</verb></tscreen>
<bf>Note:</bf> this is different from <tt>gdb</tt>'s `next' statement, it is like
<tt>gdb</tt>'s `finish'.
To examine data from memory, use (for example):
<tscreen><verb>
x/wx 0xf0133fe0,40
x/hd db_symtab_space
x/bc termbuf,10
x/s stringbuf
</verb></tscreen>
for word/halfword/byte access, and hexadecimal/decimal/character/
string display. The number after the comma is the object count.
To display the next 0x10 items, simply use
<tscreen><verb>
x ,10
</verb></tscreen>
Similarly, use
<tscreen><verb>
x/ia foofunc,10
</verb></tscreen>
to disassemble the first 0x10 instructions of <tt>foofunc</tt>, and display
them along with their offset from the beginning of <tt>foofunc</tt>.
To modify the memory, use the write command:
<tscreen><verb>
w/b termbuf 0xa 0xb 0
w/w 0xf0010030 0 0
</verb></tscreen>
The command modifier (<tt>b</tt>/<tt>h</tt>/<tt>w</tt>)
specifies the size of the data to be written, the first
following expression is the address to write to, the remainder
is interpreted as data to write to successive memory locations.
If you need to know the current registers, use
<tscreen><verb>
show reg
</verb></tscreen>
Alternatively, you can display a single register value by e.g.
<tscreen><verb>
p $eax
</verb></tscreen>
and modify it by
<tscreen><verb>
set $eax new-value
</verb></tscreen>
Should you need to call some kernel functions from DDB, simply
say
<tscreen><verb>
call func(arg1, arg2, ...)
</verb></tscreen>
The return value will be printed.
For a <tt>ps(1)</tt> style summary of all running processes, use
<tscreen><verb>
ps
</verb></tscreen>
Now you have now examined why your kernel failed, and you wish to
reboot. Remember that, depending on the severity of previous
malfunctioning, not all parts of the kernel might still be working
as expected. Perform one of the following actions to shut down and
reboot your system:
<tscreen><verb>
call diediedie()
</verb></tscreen>
will cause your kernel to dump core and reboot, so you can
later analyze the core on a higher level with kgdb. This
command usually must be followed by another
`<tt>continue</tt>' statement.
There is now an alias for this: `<tt>panic</tt>'.
<tscreen><verb>
call boot(0)
</verb></tscreen>
might be a good way to cleanly shut down the running system, <tt>sync()</tt>
all disks, and finally reboot. As long as the disk and file system
interfaces of the kernel are not damaged, this might be a good way
for an almost clean shutdown.
<tscreen><verb>
call cpu_reset()
</verb></tscreen>
is the final way out of disaster and almost the same as hitting
the Big Red Button.
If you need a short command summary, simply type
<tscreen><verb>
help
</verb></tscreen>
However, it is highly recommended to have a printed copy of the
<tt>ddb(4)</tt> manual page ready for a debugging session.
Remember that it is hard to read the on-line manual while
single-stepping the kernel.
<sect><heading>On-line kernel debugging using remote GDB</heading>
<p>This feature is supported since FreeBSD 2.2, and it's actually
a very neat one.
GDB used to support <em/remote debugging/ for a long time
already. This is done using a very simple protocol along a
serial line. Obviously, and opposed to the other methods
described above, you need two machines for doing this. One is
the host providing the debugging environment, including all
the sources, and a copy of the kernel binary with all the
symbols in it, and the other one is the target machine that
simply runs a similar copy of the very same kernel (but stripped
off the debugging information).
You should configure the kernel in question with <tt>config -g</tt>,
include <em/DDB/ into the configuration, and compile it as usual.
This gives a large blurb of a binary, due
to the debugging information. Copy this kernel to the target
machine, strip the debugging symbols off with <tt>strip -x</tt>,
and boot it using the <tt/-d/ boot option. Connect the first
serial line of the target machine to any serial line of the
debugging host. Now, on the debugging machine, go to the compile
directory of the target kernel, and start gdb:
<tscreen><verb>
% gdb -k kernel
GDB is free software and you are welcome to distribute copies of it
under certain conditions; type "show copying" to see the conditions.
There is absolutely no warranty for GDB; type "show warranty" for details.
GDB 4.16 (i386-unknown-freebsd),
Copyright 1996 Free Software Foundation, Inc...
(kgdb)
</verb></tscreen>
Initialize the remote debugging session (assuming the first serial
port is being used) by:
<tscreen><verb>
(kgdb) target remote /dev/cuaa0
</verb></tscreen>
Now, on the target host (that entered DDB right before even starting
the device probe), type:
<tscreen><verb>
Debugger("Boot flags requested debugger")
Stopped at Debugger+0x35: movb $0, edata+0x51bc
db> gdb
</verb></tscreen>
DDB will respond with:
<tscreen><verb>
Next trap will enter GDB remote protocol mode
</verb></tscreen>
Every time you type ``gdb'', the mode will be toggled between
remote GDB and local DDB. In order to force a next trap
immediately, simply type ``s'' (step). Your hosting GDB will
now gain control over the target kernel:
<tscreen><verb>
Remote debugging using /dev/cuaa0
Debugger (msg=0xf01b0383 "Boot flags requested debugger")
at ../../i386/i386/db_interface.c:257
(kgdb)
</verb></tscreen>
You can use this session almost as any other GDB session, including
full access to the source, running it in gud-mode inside an Emacs
window (which gives you an automatic source code display in another
Emacs window) etc.
<p>Remote GDB can also be used to debug LKMs. First build the LKM
with debugging symbols:
<tscreen><verb>
# cd /usr/src/lkm/linux
# make clean; make COPTS=-g
</verb></tscreen>
Then install this version of the module on the target machine, load it
and use <tt>modstat</tt> to find out where it was loaded:
<tscreen><verb>
# linux
# modstat
Type Id Off Loadaddr Size Info Rev Module Name
EXEC 0 4 f5109000 001c f510f010 1 linux_mod
</verb></tscreen>
Take the load address of the module and add 0x20 (probably to account
for the a.out header). This is the address that the module code was
relocated to. Use the <tt>add-symbol-file</tt> command in GDB to tell the
debugger about the module:
<tscreen><verb>
(kgdb) add-symbol-file /usr/src/lkm/linux/linux_mod.o 0xf5109020
add symbol table from file "/usr/src/lkm/linux/linux_mod.o" at
text_addr = 0xf5109020?
(y or n) y
(kgdb)
</verb></tscreen>
You now have access to all the symbols in the LKM.
<sect><heading>Debugging a console driver</heading>
<p>Since you need a console driver to run DDB on, things are more
complicated if the console driver itself is failing. You might
remember the use of a serial console (either with modified boot
blocks, or by specifying <tt><bf>-h</bf></tt> at the <tt>Boot:</tt>
prompt), and hook up a standard
terminal onto your first serial port. DDB works on any configured
console driver, of course also on a serial console.

View file

@ -1,149 +0,0 @@
<!-- $Id$ -->
<!-- The FreeBSD Documentation Project -->
<!-- <!DOCTYPE linuxdoc PUBLIC '-//FreeBSD//DTD linuxdoc//EN'> -->
<chapt><heading>Adding New Kernel Configuration Options<label id="kernelopts"></heading>
<p><em>Contributed by &a.joerg;</em>
<em/Note:/ You should be familiar with the section about <ref
id="kernelconfig" name="kernel configuration"> before reading here.
<sect><heading>What's a <em>kernel option</em>, anyway?</heading>
<p>The use of kernel options is basically described in the <ref
id="kernelconfig:options" name="kernel configuration"> section.
There's also an explanation about ``historic'' and ``new-style''
options. The ultimate goal is to eventually turn all the supported
options in the kernel into new-style ones, so for people who
correctly did a <tt/make depend/ in their kernel compile directory
after running <tt/config(8)/, the build process will automatically
pick up modified options, and only recompile those files where it is
necessary. Wiping out the old compile directory on each run of
<tt/config(8)/ as it is still done now can then be eliminated again.
<p>Basically, a kernel option is nothing else than the definition of
a C preprocessor macro for the kernel compilation process. To make
the build truly optional, the corresponding part of the kernel
source (or kernel <tt/.h/ file) must be written with the option
concept in mind, i. e. the default must have been made overridable
by the config option. This is usually done with something like:
<verb>
#ifndef THIS_OPTION
#define THIS_OPTION (some_default_value)
#endif /* THIS_OPTION */
</verb>
<p>This way, an administrator mentioning another value for the
option in his config file will take the default out of effect, and
replace it with his new value. Apparently, the new value will be
substituted into the source code during the preprocessor run, so it
must be a valid C expression in whatever context the default value
would have been used.
<p>It is also possible to create value-less options that simply
enable or disable a particular piece of code by embracing it in
<verb>
#ifdef THAT_OPTION
[your code here]
#endif
</verb>
<p>Simply mentioning <tt/THAT_OPTION/ in the config file (with or
without any value) will then turn on the corresponding piece of
code.
<p>People familiar with the C language will immediately recognize
that everything could be counted as a ``config option'' where
there is at least a single <tt/#ifdef/ referencing it... Now only
few people probably would try to say
<verb>
options notyet,notdef
</verb>
<p>in their config file however, and watch the kernel compilation
fall over. :-)
<p>Apparently, using arbitrary names for the options makes it very
hard to track their usage throughout the kernel source tree. That is
the rationale behind the <em/new-style/ option scheme, where each
option goes into a separate <tt/.h/ file in the kernel compile
directory, which is by convention named <tt>opt_<em>foo</em>.h</tt>.
This way, the usual Makefile dependencies could be applied, and
<tt/make/ can determine what needs to be recompiled once an option
has been changed.
<p>The old-style option mechanism still has one advantage for local
options or maybe experimental options that have a short anticipated
lifetime: since it is easy to add a new <tt/#ifdef/ to the kernel
source, this has already made it a kernel config option.
In this case, the administrator using such an
option is responsible himself for knowing about its implications
(and maybe manually forcing the recompilation of parts of his
kernel). Once the transition of all supported options has been
done, <tt/config(8)/ will warn whenever an unsupported option
appears in the config file, but it will nevertheless include it into
the kernel Makefile.
<sect><heading>Now what do I have to do for it?</heading>
<p>First, edit <tt>sys/conf/options</tt> (or
<tt>sys/i386/conf/options.<em>&lt;arch&gt;</em></tt>, e. g.
<tt>sys/i386/conf/options.i386</tt>), and select an
<tt>opt_<em>foo</em>.h</tt> file where your new option would best go
into.
<p>If there is already something that comes close to the purpose of
the new option, pick this. For example, options modifying the
overall behaviour of the SCSI subsystem can go into <tt/opt_scsi.h/.
By default, simply mentioning an option in the appropriate option
file, say <tt/FOO/, implies its value will go into the
corresponding file <tt/opt_foo.h/. This can be overridden on the
right-hand side of a rule by specifying another filename.
<p>If there is no <tt>opt_<em>foo</em>.h</tt> already available for
the intended new option, invent a new name. Make it meaningful, and
comment the new section in the
<tt>options[<em>.&lt;arch&gt;</em>]</tt> file. <tt/config(8)/ will
automagically pick up the change, and create that file next time it
is run. Most options should go in a header file by themselves..
<p>Packing too many options into a single
<tt>opt_<em>foo</em>.h</tt> will cause too many kernel files to be
rebuilt when one of the options has been changed in the config file.
<p>Finally, find out which kernel files depend on the new option.
Unless you have just invented your option, and it does not exist
anywhere yet,
<verb>
find /usr/src/sys -name type f | xargs fgrep NEW_OPTION
</verb>
<p>is your friend in finding them. Go and edit all those files, and
add
<verb>
#include "opt_foo.h"
</verb>
<p><em>on top</em>, before all the <tt/#include &lt;xxx.h&gt;/
stuff. The sequence is most important in case the options will
override some defaults from the regular include files, where the
defaults are protected by
<verb>
#ifndef NEW_OPTION
#define NEW_OPTION (something)
#endif
</verb>
<p>in the regular header.
<p>Adding an option that overrides something in a system header file
(i. e., a file sitting in <tt>/usr/include/sys/</tt>) is almost
always a mistake. <tt>opt_<em>foo</em>.h</tt> cannot be included
into those files since it would break the headers more seriously,
but if it is not included, then places that include it may get an
inconsistent value for the option. Yes, there are precedents for
this right now, but that does not make them more correct.

View file

@ -1,700 +0,0 @@
<!-- $Id: linuxemu.sgml,v 1.18 1997/03/19 03:15:43 obrien Exp $ -->
<!-- The FreeBSD Documentation Project -->
<chapt><heading>Linux Emulation<label id="linuxemu"></heading>
<p><em>Contributed by &a.handy and &a.rich;</em>
<sect><heading>How to install the Linux emulator</heading>
<p>Linux emulation in FreeBSD has reached a point where it is possible
to run a large fraction of Linux binaries in both a.out and ELF
format. The linux emulation in the 2.1-STABLE branch is capable of
running Linux DOOM and Mathematica; the version present in
FreeBSD-2.2-RELEASE is vastly more capable and runs all these as well as
Quake, Abuse, IDL, netrek for Linux and a whole host of other
programs.
There are some Linux-specific operating system features that are not
supported on FreeBSD. Linux binaries will not work on FreeBSD if they
use the Linux /proc filesystem (which is different from the optional
FreeBSD /proc filesystem) or i386-specific calls, such as enabling
virtual 8086 mode.
<p>To tell whether your kernel is configured for Linux
compatibility simply run any Linux binary. If it
prints the error message
<tscreen>
<verb>
linux-executable: Exec format error. Wrong Architecture.
</verb>
</tscreen>
then you do not have linux compatibility support and
you need to configure and install a new kernel.
Depending on which version of FreeBSD you are running, how you get
Linux-emulation up will vary slightly:
<sect1><heading>Installing Linux Emulation in 2.1-STABLE</heading>
<p>The GENERIC kernel in 2.1-STABLE is not configured for linux
compatibility so you must reconfigure your kernel for it. There
are two ways to do this: 1. linking the emulator statically in the
kernel itself and 2. configuring your kernel to dynamically load the
linux loadable kernel module (LKM).
<p>To enable the emulator, add the following to your configuration file
(c.f. /sys/i386/conf/LINT):
<tscreen>
<verb>
options COMPAT_LINUX
</verb>
</tscreen>
If you want to run doom or other applications
that need shared memory
also add the following.
<tscreen>
<verb>
options SYSVSHM
</verb>
</tscreen>
The linux system calls require 4.3BSD system call compatibility. So
make sure you have the following.
<tscreen>
<verb>
options "COMPAT_43"
</verb>
</tscreen>
If you prefer to statically link the emulator in the kernel rather than
use the loadable kernel module (LKM), then add
<tscreen>
<verb>
options LINUX
</verb>
</tscreen>
Then run config and install the new kernel as described in the
<ref id="kernelconfig" name="kernel configuration"> section.
If you decide to use the LKM you must also install the loadable
module. A mismatch of versions between the kernel and loadable
module can cause the kernel to crash, so the safest thing to do is to
reinstall the LKM when you install the kernel.
<tscreen>
<verb>
% cd /usr/src/lkm/linux
% make all install
</verb>
</tscreen>
Once you have installed the kernel and the LKM, you can invoke
`linux' as root to load the LKM.
<tscreen>
<verb>
% linux
Linux emulator installed
Module loaded as ID 0
%
</verb>
</tscreen>
To see whether the LKM is loaded, run `modstat'.
<tscreen>
<verb>
% modstat
Type Id Off Loadaddr Size Info Rev Module Name
EXEC 0 3 f0baf000 0018 f0bb4000 1 linux_emulator
%
</verb>
</tscreen>
You can cause the LKM to be loaded when the system boots in either of
two ways. On FreeBSD 2.2-RELEASE and 2.1-STABLE enable it in
/etc/sysconfig
<tscreen>
<verb>
linux=YES
</verb>
</tscreen>
by changing it from NO to YES. FreeBSD 2.1 RELEASE and earlier do not
have such a line and on those you will need to edit /etc/rc.local to
add the following line.
<tscreen>
<verb>
linux
</verb>
</tscreen>
<sect1><heading>Installing Linux Emulation in 2.2-RELEASE and later</heading>
<p>It is no longer necessary to specify ``options LINUX''
or ``options COMPAT_LINUX''. Linux emulation is done with an LKM
(``Loadable Kernel Module'') so it can be installed on the fly without
having to reboot. You will need the following things in your startup files,
however:
<enum>
<item> In /etc/sysconfig, you need the following line:
<tscreen>
<verb>
linux=YES
</verb>
</tscreen>
<item> This, in turn, triggers the following action in /etc/rc.i386:
<tscreen>
<verb>
# Start the Linux binary emulation if requested.
if [ "X${linux}" = X"YES" ]; then
echo -n ' '; linux
# XXX BOGUS - Linux script shouldn't make any output on success
fi
</verb>
</tscreen>
</enum>
<p>If you want to verify it is running, modstat will do that:
<tscreen>
<verb>
% modstat
Type Id Off Loadaddr Size Info Rev Module Name
EXEC 0 4 f09e6000 001c f09ec010 1 linux_mod
%
</verb>
</tscreen>
However, there have been reports that this fails on some 2.2-RELEASE and
later systems. If for some reason you cannot load the linux
LKM, then statically link the emulator in the kernel by adding
<tscreen>
<verb>
options LINUX
</verb>
</tscreen>
to your kernel config file. Then run config and install the new
kernel as described in the <ref id="kernelconfig" name="kernel
configuration"> section.
<sect1><heading>Installing Linux Runtime Libraries</heading>
<sect2><heading>Installing using the linux_lib port</heading>
<p>Most linux applications use shared libraries, so you are still not
done until you install the shared libraries. It is possible to do
this by hand, however, it is vastly simpler to just grab the
linux_lib port:
<tscreen>
<verb>
% cd /usr/ports-current/emulators/linux_lib
% make all install
</verb>
</tscreen>
and you should have a working linux emulator. Legend (and the mail
archives :-) seems to hold that Linux emulation works best with
linux binaries linked against the ZMAGIC libraries; QMAGIC libraries
(such as those used in Slackware V2.0) may tend to give the
Linuxulator heartburn. As of this writing (March 1996) ELF emulation
is still in the formulative stages but seems to work pretty well. Also,
expect some programs to complain about incorrect minor versions. In
general this does not seem to be a problem.
<sect2><heading>Installing libraries manually</heading>
<p>If you do not have the ``ports'' distribution, you can install the
libraries by hand instead. You will need the Linux shared libraries
that the program depends on and the runtime linker. Also, you will
need to create a "shadow root" directory, /compat/linux, for Linux
libraries on your FreeBSD system. Any shared libraries opened by
Linux programs run under FreeBSD will look in this tree first. So, if
a Linux program loads, for example, /lib/libc.so, FreeBSD will first
try to open /compat/linux/lib/libc.so, and if that does not exist then
it will try /lib/libc.so. Shared libraries should be installed in the
shadow tree /compat/linux/lib rather than the paths that the Linux
ld.so reports.
FreeBSD-2.2-RELEASE and later works slightly differently with respect to
/compat/linux. On -CURRENT, all files, not just libraries, are
searched for from the ``shadow root'' /compat/linux.
Generally, you will need to look for the shared libraries that Linux
binaries depend on only the first few times that you install a Linux
program on your FreeBSD system. After a while, you will have a sufficient
set of Linux shared libraries on your system to be able to run newly
imported Linux binaries without any extra work.
<sect2><heading>How to install additional shared libraries</heading>
<p>What if you install the linux_lib port and your application still
complains about missing shared libraries? How do you know which
shared libraries Linux binaries need, and where to get them?
Basically, there are 2 possibilities (when following these
instructions: you will need to be root on your FreeBSD system to do
the necessary installation steps).
<p>If you have access to a Linux system, see what shared libraries
it needs, and copy them to your FreeBSD system. Example: you have
just ftp'ed the Linux binary of Doom. Put it on the Linux
system you have access to, and check which shared libraries it
needs by running `ldd linuxxdoom':
<tscreen>
<verb>
% ldd linuxxdoom
libXt.so.3 (DLL Jump 3.1) => /usr/X11/lib/libXt.so.3.1.0
libX11.so.3 (DLL Jump 3.1) => /usr/X11/lib/libX11.so.3.1.0
libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29
</verb>
</tscreen>
<p>You would need go get all the files from the last column, and
put them under /compat/linux, with the names in the first column
as symbolic links pointing to them. This means you eventually have
these files on your FreeBSD system:
<tscreen>
<verb>
/compat/linux/usr/X11/lib/libXt.so.3.1.0
/compat/linux/usr/X11/lib/libXt.so.3 -> libXt.so.3.1.0
/compat/linux/usr/X11/lib/libX11.so.3.1.0
/compat/linux/usr/X11/lib/libX11.so.3 -> libX11.so.3.1.0
/compat/linux/lib/libc.so.4.6.29
/compat/linux/lib/libc.so.4 -> libc.so.4.6.29
</verb>
</tscreen>
<p>Note that if you already have a Linux shared library with a
matching major revision number to the first column of the 'ldd'
output, you will not need to copy the file named in the last column to
your system, the one you already have should work. It is advisable to
copy the shared library anyway if it is a newer version, though. You
can remove the old one, as long as you make the symbolic link point to
the new one. So, if you have these libraries on your system:
<tscreen>
<verb>
/compat/linux/lib/libc.so.4.6.27
/compat/linux/lib/libc.so.4 -> libc.so.4.6.27
</verb>
</tscreen>
and you find a new binary that claims to require a later version
according to the output of ldd:
<tscreen>
<verb>
libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29
</verb>
</tscreen>
If it is only one or two versions out of date in the in the trailing
digit then do not worry about copying /lib/libc.so.4.6.29 too, because
the program should work fine with the slightly older version.
However, if you like you can decide to replace the libc.so anyway, and
that should leave you with:
<tscreen>
<verb>
/compat/linux/lib/libc.so.4.6.29
/compat/linux/lib/libc.so.4 -> libc.so.4.6.29
</verb>
</tscreen>
<p>Please note that the symbolic link mechanism is <em>only</em>
needed for Linux binaries, the FreeBSD runtime linker takes care of
looking for matching major revision numbers itself, you do not need to
worry about that.
<sect2><heading>Configuring the ld.so -- for FreeBSD 2.2-RELEASE only</heading>
<p>This section applies only to FreeBSD 2.2-RELEASE and later. Those running
2.1-STABLE should skip this section.
<p>Finally, if you run FreeBSD 2.2-RELEASE you must make sure that you
have the Linux runtime linker and its config files on your system. You
should copy these files from the Linux system to their appropriate
place on your FreeBSD system (to the /compat/linux tree):
<tscreen>
<verb>
/compat/linux/lib/ld.so
/compat/linux/etc/ld.so.config
</verb>
</tscreen>
<p>If you do not have access to a Linux system, you should get the
extra files you need from various ftp sites. Information on where to
look for the various files is appended below. For now, let us assume
you know where to get the files.
<p>
Retrieve the following files (all from the same ftp site to avoid any
version mismatches), and install them under /compat/linux
(i.e. /foo/bar is installed as /compat/linux/foo/bar):
<tscreen>
<verb>
/sbin/ldconfig
/usr/bin/ldd
/lib/libc.so.x.y.z
/lib/ld.so
</verb>
</tscreen>
<p>ldconfig and ldd do not necessarily need to be under /compat/linux,
you can install them elsewhere in the system too. Just make sure they
do not conflict with their FreeBSD counterparts. A good idea would be
to install them in /usr/local/bin as ldconfig-linux and ldd-linux.
<p>
Create the file /compat/linux/etc/ld.so.conf, containing the
directories in which the Linux runtime linker should look
for shared libs. It is a plain text file, containing a directory
name on each line. /lib and /usr/lib are standard, you could
add the following:
<tscreen>
<verb>
/usr/X11/lib
/usr/local/lib
</verb>
</tscreen>
<p>When a linux binary opens a library such as /lib/libc.so the
emulator maps the name to /compat/linux/lib/libc.so internally. All
linux libraries should be installed under /compat/linux (e.g.
/compat/linux/lib/libc.so, /compat/linux/usr/X11/lib/libX11.so, etc.)
in order for the emulator to find them.
<p>Those running FreeBSD 2.2-RELEASE should run the Linux ldconfig program.
<tscreen>
<verb>
% cd /compat/linux/lib
% /compat/linux/sbin/ldconfig
</verb>
</tscreen>
<p>Ldconfig is statically linked, so it does not need any shared
libraries to run. It creates the file /compat/linux/etc/ld.so.cache
which contains the names of all the shared libraries. It should rerun
to recreate this file whenever you install additional shared
libraries.
On 2.1-STABLE do not install /compat/linux/etc/ld.so.cache or run
ldconfig because in 2.1-STABLE the syscalls are implemented
differently and ldconfig is not needed or used.
<p>You should now be set up for Linux binaries which only need a
shared libc. You can test this by running the Linux ldd on
itself. Suppose that you have it installed as ldd-linux, it should
produce something like:
<tscreen>
<verb>
% ldd-linux `which ldd-linux`
libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29
</verb>
</tscreen>
<p>This being done, you are ready to install new Linux binaries.
Whenever you install a new Linux program, you should check if it needs
shared libraries, and if so, whether you have them installed in the
/compat/linux tree. To do this, you run the Linux version ldd on the
new program, and watch its output. ldd (see also the manual page for
ldd(1)) will print a list of shared libraries that the program depends
on, in the form majorname (jumpversion) => fullname.
<p>If it prints "not found" instead of fullname it means that you
need an extra library. Which library this is, is shown in majorname,
which will be of the form libXXXX.so.N You will need to find a
libXXXX.so.N.mm on a Linux ftp site, and install it on your
system. The XXXX (name) and N (major revision number) should match;
the minor number(s) mm are less important, though it is advised to
take the most recent version.
<sect1><heading>Configuring the host name resolver</heading>
<p>If DNS does not work or you get the messages
<tscreen>
<verb>
resolv+: "bind" is an invalid keyword
resolv+: "hosts" is an invalid keyword
</verb>
</tscreen>
then you need to configure a /compat/linux/etc/host.conf file
containing:
<tscreen>
<verb>
order hosts, bind
multi on
</verb>
</tscreen>
where the order here specifies that /etc/hosts is searched first and
DNS is searched second. When /compat/linux/etc/host.conf is not
installed linux applications find FreeBSD's /etc/host.conf and
complain about the incompatible FreeBSD syntax. You should remove
`bind,' if you have not configured a name-server using the
/etc/resolv.conf file.
<p>Lastly, those who run 2.1-STABLE need to set an the
RESOLV_HOST_CONF environment variable so that applications will know
how to search the host tables. If you run FreeBSD 2.2-RELEASE can
skip this. For the /bin/csh shell use:
<tscreen>
<verb>
setenv RESOLV_HOST_CONF /compat/linux/etc/host.conf
</verb>
</tscreen>
For /bin/sh use:
<tscreen>
<verb>
RESOLV_HOST_CONF=/compat/linux/etc/host.conf; export RESOLV_HOST_CONF
</verb>
</tscreen>
<sect1><heading>Finding the necessary files</heading>
<p>Note: the information below is valid as of the time this document
was written, but certain details such as names of ftp sites,
directories and distribution names may have changed by the time you
read this.
<p>Linux is distributed by several groups that make their own set
of binaries that they distribute. Each distribution has its own
name, like ``Slackware'' or ``Yggdrasil''. The distributions are
available on a lot of ftp sites. Sometimes the files are unpacked,
and you can get the individual files you need, but mostly they
are stored in distribution sets, usually consisting of subdirectories
with gzipped tar files in them. The primary ftp sites for the
distributions are:
<verb>
sunsite.unc.edu:/pub/Linux/distributions
tsx-11.mit.edu:/pub/linux/distributions
</verb>
<p>
Some European mirrors:
<verb>
ftp.luth.se:/pub/linux/distributions
ftp.demon.co.uk:/pub/linux/distributions
src.doc.ic.ac.uk:/packages/linux/distributions
</verb>
<p>For simplicity, let us concentrate on Slackware here. This
distribution consists of a number of subdirectories, containing
separate packages. Normally, they are controlled by an install
program, but you can retrieve files "by hand" too. First of all, you
will need to look in the "contents" subdir of the distribution. You
will find a lot of small text files here describing the contents of the
separate packages. The fastest way to look something up is to retrieve
all the files in the contents subdirectory, and grep through them for
the file you need. Here is an example of a list of files that you
might need, and in which contents-file you will find it by grepping
through them:
<tabular ca=ll>
Library <colsep>Package <rowsep>
ld.so <colsep>ldso <rowsep>
ldconfig <colsep>ldso <rowsep>
ldd <colsep>ldso <rowsep>
libc.so.4 <colsep>shlibs <rowsep>
libX11.so.6.0 <colsep>xf_lib <rowsep>
libXt.so.6.0 <colsep>xf_lib <rowsep>
libX11.so.3 <colsep>oldlibs <rowsep>
libXt.so.3 <colsep>oldlibs <rowsep>
</tabular>
<p>So, in this case, you will need the packages ldso, shlibs, xf_lib
and oldlibs. In each of the contents-files for these packages, look
for a line saying ``PACKAGE LOCATION'', it will tell you on which `disk'
the package is, in our case it will tell us in which subdirectory we
need to look. For our example, we would find the following locations:
<tabular ca=ll>
Package <colsep>Location <rowsep>
ldso <colsep>diska2 <rowsep>
shlibs <colsep>diska2 <rowsep>
oldlibs <colsep>diskx6 <rowsep>
xf_lib <colsep>diskx9 <rowsep>
</tabular>
<p>The locations called ``diskXX'' refer to the ``slakware/XX''
subdirectories of the distribution, others may be found in the
``contrib'' subdirectory. In this case, we could now retrieve the
packages we need by retrieving the following files (relative to
the root of the Slackware distribution tree):
<tscreen>
<verb>
slakware/a2/ldso.tgz
slakware/a2/shlibs.tgz
slakware/x6/oldlibs/tgz
slakware/x9/xf_lib.tgz
</verb>
</tscreen>
<p>Extract the files from these gzipped tarfiles in your
/compat/linux directory (possibly omitting or afterwards
removing files you do not need), and you are done.
<p><bf>See also:</bf>
<verb>
ftp.freebsd.org:pub/FreeBSD/2.0.5-RELEASE/xperimnt/linux-emu/README
/usr/src/sys/i386/ibcs2/README.iBCS2
</verb>
<sect><heading>How to Install Mathematica on FreeBSD<label id="mathematica"></heading>
<p><em>Contributed by &a.rich and &a.chuck</em>
This document shows how to install the Linux binary
distribution of Mathematica 2.2 on FreeBSD 2.1.
<p>Mathematica supports Linux but not FreeBSD as it stands. So once
you have configured your system for Linux compatibility you have most
of what you need to run Mathematica.
<p>For those who already have the student edition of
Mathematica for DOS the cost of upgrading to the Linux
version at the time this was written, March 1996, was
&dollar;45.00. It can be ordered directly from Wolfram at
(217) 398-6500 and paid for by credit card.
<sect1><heading>Unpacking the Mathematica distribution</heading>
<p>The binaries are currently distributed by Wolfram on CDROM.
The CDROM has about a dozen tar files, each of which is a binary
distribution for one of the supported architectures. The one
for Linux is named LINUX.TAR. You can, for example, unpack this
into /usr/local/Mathematica:
<tscreen>
<verb>
% cd /usr/local
% mkdir Mathematica
% cd Mathematica
% tar -xvf /cdrom/LINUX.TAR
</verb>
</tscreen>
<sect1><heading>Obtaining your Mathematica Password</heading>
<p>Before you can run Mathematica you will have to obtain
a password from Wolfram that corresponds to your
`machine ID.'
<p>Once you have installed the linux compatibility runtime
libraries and unpacked the mathematica you can obtain
the `machine ID' by running the program `mathinfo' in
the Install directory.
<tscreen>
<verb>
% cd /usr/local/Mathematica/Install
% mathinfo
LINUX: 'ioctl' fd=5, typ=0x89(), num=0x27 not implemented
richc.isdn.bcm.tmc.edu 9845-03452-90255
%
</verb>
</tscreen>
So, for example, the `machine ID' of `richc' is `9845-03452-90255'.
You can ignore the message about the ioctl that is not
implemented. It will not prevent Mathematica from running
in any way and you can safely ignore it, though you
will see the message every time you run Mathematica.
<p>When you register with Wolfram, either by email, phone
or fax, you will give them the 'machine ID' and they will
respond with a corresponding password consisting of
groups of numbers. You need to add them both along
with the machine name and license number in your
mathpass file.
You can do this by invoking:
<tscreen>
<verb>
% cd /usr/local/Mathematica/Install
% math.install
</verb>
</tscreen>
It will ask you to enter your license number and the
Wolfram supplied password. If you get them mixed up or
for some reason the math.install fails, That is OK,
because you can simply edit the file 'mathpass' in this
same directory to correct the info manually.
<p>After getting past the password, math.install will ask
you if you accept their canned install defaults, or if
you want to use your own. If you are like us and
distrust all install programs, you probably want to
specify the actual directories. Beware. Although the
math.install program asks you to specify directories,
it will not create them for you, so you should perhaps
have a second window open with another shell so that
you can create them before you give them to the install
program. Or, if it fails, you
can create the directories and then restart the
math.install program. The directories we chose to
create beforehand and specify to math.install were:
<tscreen>
<verb>
/usr/local/Mathematica/bin for binaries
/usr/local/Mathematica/man/man1 for man pages
/usr/local/Mathematica/lib/X11 for the XKeysymb file
</verb>
</tscreen>
You can also tell it to use /tmp/math.record for the
system record file, where it puts logs of sessions.
After this math.install will continue on to
unpacking things and placing everything where it should
go.
<p>The Mathematica Notebook feature is included separately,
as the X Front End, and you have to install it separately.
To get the X Front End stuff correctly installed, cd
into the /usr/local/Mathematica/FrontEnd directory and
executed the ./xfe.install shell script. You will have
to tell it where to put things, but you do not have to
create any directories because it uses all the same
directories that had been created for math.install.
When it finished, there should be a new shell script in
/usr/local/Mathematica/bin called "mathematica".
<p>Lastly, you need to modify each of the shell scripts that
Mathematica has installed. At the beginning of every shell script in
/usr/local/Mathematica/bin add the following line:
<tscreen>
<verb>
XKEYSYMDB=/usr/local/Mathematica/lib/X11/XKeysymDB; export XKEYSYMDB
</verb>
</tscreen>
This tells Mathematica were to find its own version of the key
mapping file XKeysymDB. Without this you will get pages of error
messages about missing key mappings.
On 2.1-STABLE you need to add the following as well:
<tscreen>
<verb>
RESOLV_HOST_CONF=/compat/linux/etc/host.conf; export RESOLV_HOST_CONF
</verb>
</tscreen>
This tells Mathematica to use the linux version of host.conf. This
file has a different syntax from FreeBSD's host.conf, so you will get an
error message about /etc/host.conf if you leave this out.
<p>You might want to also modify your /etc/manpath.config file
to read the new man directory, and you may need to edit your
~/.cshrc file to add /usr/local/Mathematica/bin
to your path.
<p>That is about all it takes, With this you should be able
to type "mathematica" and get a really slick looking
Mathematica Notebook screen up. Mathematica has included
the Motif user interfaces, but it is compiled in statically,
so you do not need the Motif libraries. Good luck doing this
yourself!
<sect1><heading>Bugs</heading>
<p>The Notebook front end is known to hang sometimes when reading
notebook files with an error messages similar to:
<tscreen>
<verb>
File .../Untitled-1.mb appears to be broken for OMPR.257.0
</verb>
</tscreen>
We have not found the cause for this, but it only affects the
Notebook's X Window front end, not the mathematica engine itself. So
the command line interface invoked by 'math' is unaffected by this
bug.
<sect1><heading>Acknowledgments</heading>
<p>A well-deserved thanks should go to &a.sos; and &a.peter;
who made linux emulation what it is today, and Michael Smith who
drove these two guys like dogs to get it to the point where it runs
Linux binaries better than linux! :-)

View file

@ -1,67 +0,0 @@
<!-- $Id$ -->
<!-- The FreeBSD Documentation Project -->
<!--
Names and email address of contributing authors and CVS committers
and some of the common FreeBSD mailing lists. Use these
entities when referencing people or mailing lists. Please
note the use of single
and double quotes.
-->
<!ENTITY a.announce "FreeBSD announcements mailing list
<tt><htmlurl url='mailto:freebsd-announce@FreeBSD.ORG'
name='&lt;freebsd-announce@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.cvsall "FreeBSD CVS commit message mailing list
<tt><htmlurl url='mailto:cvs-all@FreeBSD.ORG'
name='&lt;cvs-all@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.doc "FreeBSD documentation project mailing list
<tt><htmlurl url='mailto:freebsd-doc@FreeBSD.ORG'
name='&lt;freebsd-doc@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.bugs "FreeBSD problem reports mailing list
<tt><htmlurl url='mailto:freebsd-bugs@FreeBSD.ORG'
name='&lt;freebsd-bugs@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.current "FreeBSD-current mailing list
<tt><htmlurl url='mailto:freebsd-current@FreeBSD.ORG'
name='&lt;freebsd-current@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.emulation "FreeBSD-emulation mailing list
<tt><htmlurl url='mailto:freebsd-emulation@FreeBSD.ORG'
name='&lt;freebsd-emulation@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.fs "FreeBSD filesystem project mailing list
<tt><htmlurl url='mailto:freebsd-fs@FreeBSD.ORG'
name='&lt;freebsd-fs@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.hackers "FreeBSD technical discussions mailing list
<tt><htmlurl url='mailto:freebsd-hackers@FreeBSD.ORG'
name='&lt;freebsd-hackers@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.ports "FreeBSD ports mailing list
<tt><htmlurl url='mailto:freebsd-ports@FreeBSD.ORG'
name='&lt;freebsd-ports@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.questions "FreeBSD general questions mailing list
<tt><htmlurl url='mailto:freebsd-questions@FreeBSD.ORG'
name='&lt;freebsd-questions@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.scsi "FreeBSD SCSI subsystem mailing list
<tt><htmlurl url='mailto:freebsd-scsi@FreeBSD.ORG'
name='&lt;freebsd-scsi@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.stable "FreeBSD-stable mailing list
<tt><htmlurl url='mailto:freebsd-stable@FreeBSD.ORG'
name='&lt;freebsd-stable@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.majordomo "<tt><htmlurl url='mailto:majordomo@FreeBSD.ORG'
name='&lt;majordomo@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.core "FreeBSD core team
<tt><htmlurl url='mailto:freebsd-core@FreeBSD.ORG'
name='&lt;freebsd-core@FreeBSD.ORG&gt;'></tt>">

View file

@ -1,430 +0,0 @@
<!-- $Id$
The FreeBSD Documentation Project
<!DOCTYPE linuxdoc PUBLIC "-//FreeBSD//DTD linuxdoc//EN">
<linuxdoc>
<article>
<title> Mail
<author> &a.wlloyd;
<date> 24 Nov 1996, (c) 1996
<abstract> This section contains basic information on setting up Electronic Mail on your new FreeBSD box.
</abstract>
<toc>
-->
<chapt><heading>Electronic Mail<label id="mail"></heading>
<p><em>Contributed by &a.wlloyd;.</em>
<p> Electronic Mail configuration is the subject of many <ref name="System Administration" id="bibliography"> books. If you plan on doing anything beyond setting up one mailhost for your network, you need industrial strength help.
Some parts of E-Mail configuration are controlled in the Domain Name System (DNS). If you are going to run your own own DNS server check out <bf> <tt> /etc/namedb </tt></bf> and ' <bf><tt>man -k named </tt></bf> ' for more information.
<sect><heading>Basic Information</heading>
<p>
These are the major programs involved in an E-Mail exchange.
A <tt/mailhost/ is a server that is responsible for delivering and receiving all email for your host, and possibly your network.
<sect1><heading>User program</heading>
<p> This is a program like <tt /elm, pine, mail/ , or something more sophisticated like a WWW browser. This program will simply pass off all e-mail transactions to the local <tt/mailhost/ , either by calling <tt>sendmail</tt> or delivering it over TCP.
<sect1><heading>Mailhost Server Daemon</heading>
<p> Usually this program is <tt /sendmail or smail/ running in the background. Turn it off or change the command line options in <tt> /etc/sysconfig </tt>. It is best to leave it on, unless you have a specific reason to want it off. Example: You are building a <ref name="Firewall" id="firewalls">.
<p>You should be aware that <tt>sendmail</tt> is a potential weak link in a secure site. Some versions of <tt>sendmail</tt> have known security problems.
<p> <tt><bf> sendmail </bf></tt> does two jobs. It looks after delivering and receiving mail.
If <bf><tt/sendmail/ </bf> needs to delivery mail off your site it will look up in the DNS to determine the actual host that will receive mail for the destination.
<p> If it is acting as a delivery agent <tt/sendmail/ will take the message from the local queue and deliver it across the Internet to another sendmail on the receivers computer.
<sect1><heading>DNS - Name Service</heading>
<p>The Domain Name System and its daemon <tt/named/ , contain the database mapping hostname to IP address, and hostname to mailhost. The IP address is specified in an "A" record. The "MX" record specifies the mailhost that will receive mail for you. If you do not have a "MX" record mail for your hostname, the mail will be delivered to your host directly.
Unless you are running your own DNS server, you will not be able to change any information in the DNS yourself. If you are using an Internet Provider, speak to them.
<sect1><heading>POP Servers</heading>
<p> This program gets the mail from your mailbox and gives it to your browser. If you want to run a POP server on your computer, you will need to do 2 things.
<itemize>
<item>Get pop software from the <url url="../ports/mail.html" name="Ports collection"> that can be found in <tt><bf>/usr/ports </bf></tt>
or packages collection. This handbook section has a complete reference on the <ref name="Ports" id="ports"> system.
<item>Modify <bf><tt>/etc/inetd.conf</tt></bf> to load the POP server.
</itemize>
The pop program will have instructions with it. Read them.
</sect>
<sect><heading>Configuration</heading>
<sect1><heading>Basic</heading>
<p>
As your FreeBSD system comes "out of the box"[TM], you should be able to send E-mail to external hosts as long as you have <bf><tt>/etc/resolv.conf</tt> </bf> setup or are running a name server.
If you want to have mail for your host delivered to your specific host,there are two methods:
<p>
- Run a name server ( <tt><bf>man -k named</></> ) and have your own domain <tt>smallminingco.com </tt>
<p>
- Get mail delivered to the current DNS name for your host. Ie: <tt>dorm6.ahouse.school.edu </tt>
<p>
No matter what option you choose, to have mail delivered directly to your host, you must be a full Internet host. You must have a permanent IP address. IE: NO dynamic PPP. If you are behind a firewall, the firewall must be passing on smtp traffic to you. From <bf><tt> /etc/services </tt></bf>
<verb>
smtp 25/tcp mail #Simple Mail Transfer
</verb>
If you want to receive mail at your host itself, you must make sure that the DNS MX entry points to your host address, or there is no MX entry for your DNS name.
Try this
<verb>
newbsdbox# hostname
newbsdbox.freebsd.org
newbsdbox# host newbsdbox.freebsd.org
newbsdbox.freebsd.org has address 204.216.27.xx
</verb>
If that is all that comes out for your machine, mail directory to <tt><bf>root@newbsdbox.freebsd.org </bf></tt> will work no problems.
If instead, you have this
<verb>
newbsdbox# host newbsdbox.freebsd.org
newbsdbox.FreeBSD.org has address 204.216.27.xx
newbsdbox.FreeBSD.org mail is handled (pri=10) by freefall.FreeBSD.org
</verb>
All mail sent to your host directly will end up on freefall, under the same username.
This information is setup in your domain name server. This should be the same host that is listed as your primary nameserver in <bf><tt> /etc/resolv.conf</tt></bf>
The DNS record that carries mail routing information is the Mail eXchange entry. If no MX entry exists, mail will be delivered directly to the host by way of the Address record.
The MX entry for freefall.freebsd.org at one time.
<verb>
freefall MX 30 mail.crl.net
freefall MX 40 agora.rdrop.com
freefall HINFO Pentium FreeBSD
freefall MX 10 freefall.FreeBSD.org
freefall MX 20 who.cdrom.com
freefall A 204.216.27.xx
freefall CNAME www.FreeBSD.org
</verb>
Freefall has many MX entries. The lowest MX number gets the mail in the end. The others will queue mail temporarily, if freefall is busy or down.
Alternate MX sites should have separate connections to the Internet, to be most useful. An Internet Provider or other friendly site can provide this service.
<bf><tt>dig, nslookup, </tt></bf>and<bf><tt> host </tt></bf>are your friends.
<sect1><heading>Mail for your Domain (Network).<label id="mail:domain"></heading>
<p>
To setup up a network mailhost, you need to direct the mail from arriving at all the workstations. In other words, you want to hijack all mail for <tt> *.smallminingco.com </tt> and divert it to one machine, your mailhost.
The network users on their workstations will most likely pick up their mail over POP or telnet.
A user account with the SAME USERNAME should exist on both machines. Please use <tt/adduser/ to do this as required. If you set the <tt/shell/ to <tt>/nonexistent</tt> the user will not be allowed to login.
The mailhost that you will be using must be designated the Mail eXchange for each workstation. This must be arranged in DNS (ie BIND, named). Please refer to a Networking book for in-depth information.
You basically need to add these lines in your DNS server.
<verb>
pc24.smallminingco.com A xxx.xxx.xxx.xxx ; Workstation ip
MX 10 smtp.smallminingco.com ; Your mailhost
</verb>
You cannot do this yourself unless you are running a DNS server. If you do not want to run a DNS server, get somebody else like your Internet Provider to do it.
This will redirect mail for the workstation to the Mail eXchange host. It does not matter what machine the A record points to, the mail will be sent to the MX host.
<p>
This feature is used to implement Virtual E-Mail Hosting.
<p>Example
<p>
I have a customer with domain foo.bar and I want all mail for foo.bar to be sent to my machine smtp.smalliap.com. You must make an entry in your DNS server like:
<verb>
foo.bar MX 10 smtp.smalliap.com ; your mailhost
</verb>
The A record is not needed if you only want E-Mail for the domain. IE: Don't expect <bf><tt>ping foo.bar</tt></bf> to work unless an Address record for <tt>foo.bar</tt> exists as well.
On the mailhost that actually accepts mail for final delivery to a mailbox, sendmail must be told what hosts it will be accepting mail for.
<p>Add pc24.smallminingco.com to /etc/sendmail.cw (if you are using FEATURE(use_cw_file)), or add a "Cw myhost.smalliap.com" line to <bf><tt>/etc/sendmail.cf</tt></bf>
<p>
If you plan on doing anything serious with <tt/sendmail/ you should install the sendmail source. The source has plenty of documentation with it. You will find information on getting <tt/sendmail/ source from <ref name="the UUCP information" id="sendmailuucp">.
<sect1>
<heading> Setting up UUCP.<label id="sendmailuucp"></heading>
<p><em>Stolen from the FAQ.</em>
<p>
The sendmail configuration that ships with FreeBSD is
suited for sites that connect directly to the Internet.
Sites that wish to exchange their mail via UUCP must install
another sendmail configuration file.
<p>
Tweaking <tt>/etc/sendmail.cf</tt> manually is considered
something for purists. Sendmail version 8 comes with a
new approach of generating config files via some <tt>m4</tt>
preprocessing, where the actual hand-crafted configuration
is on a higher abstraction level. You should use the
configuration files under
<verb>
/usr/src/usr.sbin/sendmail/cf
</verb>
If you did not install your system with full sources,
the sendmail config stuff has been
broken out into a separate source distribution tarball just
for you. Assuming you have your CD-ROM mounted, do:
<verb>
cd /usr/src
tar -xvzf /cdrom/dists/src/ssmailcf.aa
</verb>
Do not panic, this is only a few hundred kilobytes in size.
The file <tt>README</tt> in the <tt>cf</tt> directory can
serve as a basic introduction to m4 configuration.
<p>
For UUCP delivery, you are best advised to use the
<em>mailertable</em> feature. This constitutes a database
that sendmail can use to base its routing decision upon.
<p>
First, you have to create your <tt>.mc</tt> file. The
directory <tt>/usr/src/usr.sbin/sendmail/cf/cf</tt> is the
home of these files. Look around, there are already a few
examples. Assuming you have named your file <tt>foo.mc</tt>,
all you need to do in order to convert it into a valid
<tt>sendmail.cf</tt> is:
<verb>
cd /usr/src/usr.sbin/sendmail/cf/cf
make foo.cf
cp foo.cf /etc/sendmail.cf
</verb>
A typical <tt>.mc</tt> file might look like:
<verb>
include(`../m4/cf.m4')
VERSIONID(`Your version number')
OSTYPE(bsd4.4)
FEATURE(nodns)
FEATURE(nocanonify)
FEATURE(mailertable)
define(`UUCP_RELAY', your.uucp.relay)
define(`UUCP_MAX_SIZE', 200000)
MAILER(local)
MAILER(smtp)
MAILER(uucp)
Cw your.alias.host.name
Cw youruucpnodename.UUCP
</verb>
The <em>nodns</em> and <em>nocanonify</em> features will
prevent any usage of the DNS during mail delivery. The
<em>UUCP_RELAY</em> clause is needed for bizarre reasons,
do not ask. Simply put an Internet hostname there that
is able to handle .UUCP pseudo-domain addresses; most likely,
you will enter the mail relay of your ISP there.
<p>
Once you have this, you need this file called
<tt>/etc/mailertable</tt>. A typical example of this
gender again:
<verb>
#
# makemap hash /etc/mailertable.db < /etc/mailertable
#
horus.interface-business.de uucp-dom:horus
.interface-business.de uucp-dom:if-bus
interface-business.de uucp-dom:if-bus
.heep.sax.de smtp8:%1
horus.UUCP uucp-dom:horus
if-bus.UUCP uucp-dom:if-bus
. uucp-dom:sax
</verb>
As you can see, this is part of a real-life file. The first
three lines handle special cases where domain-addressed mail
should not be sent out to the default route, but instead to
some UUCP neighbor in order to ``shortcut'' the delivery
path. The next line handles mail to the local Ethernet
domain that can be delivered using SMTP. Finally, the UUCP
neighbors are mentioned in the .UUCP pseudo-domain notation,
to allow for a ``uucp-neighbor!recipient'' override of the
default rules. The last line is always a single dot, matching
everything else, with UUCP delivery to a UUCP neighbor that
serves as your universal mail gateway to the world. All of
the node names behind the <tt>uucp-dom:</tt> keyword must
be valid UUCP neighbors, as you can verify using the
command <tt>uuname</tt>.
<p>
As a reminder that this file needs to be converted into a
DBM database file before being usable, the command line to
accomplish this is best placed as a comment at the top of
the mailertable. You always have to execute this command
each time you change your mailertable.
<p>
Final hint: if you are uncertain whether some particular
mail routing would work, remember the <tt>-bt</tt> option to
sendmail. It starts sendmail in <em>address test mode</em>;
simply enter ``0 '', followed by the address you wish to
test for the mail routing. The last line tells you the used
internal mail agent, the destination host this agent will be
called with, and the (possibly translated) address. Leave
this mode by typing Control-D.
<verb>
j@uriah 191% sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> 0 foo@interface-business.de
rewrite: ruleset 0 input: foo @ interface-business . de
...
rewrite: ruleset 0 returns: $# uucp-dom $@ if-bus $: foo \
< @ interface-business . de >
> ^D
j@uriah 192%
</verb>
</sect>
<sect><heading>FAQ<label id="mailfaq"></heading>
<p><em>Migration from FAQ.</em>
<sect1>
<heading>Why do I have to use the FQDN for hosts on my site?</heading>
<p>
You will probably find that the host is actually in a different
domain; for example, if you are in foo.bar.edu and you wish to reach
a host called ``mumble'' in the bar.edu domain, you will have to
refer to it by the fully-qualified domain name, ``mumble.bar.edu'',
instead of just ``mumble''.
<p>
Traditionally, this was allowed by BSD BIND resolvers. However
the current version of <em>BIND</em> that ships with FreeBSD
no longer provides default abbreviations for non-fully
qualified domain names other than the domain you are in.
So an unqualified host <tt>mumble</tt> must either be found
as <tt>mumble.foo.bar.edu</tt>, or it will be searched for
in the root domain.
<p>
This is different from the previous behavior, where the
search continued across <tt>mumble.bar.edu</tt>, and
<tt>mumble.edu</tt>. Have a look at RFC 1535 for why this
was considered bad practice, or even a security hole.
<p>
As a good workaround, you can place the line
<p><tt>
search foo.bar.edu bar.edu
</tt><p>
instead of the previous
<p><tt>
domain foo.bar.edu
</tt><p>
into your <tt>/etc/resolv.conf</tt>. However, make sure
that the search order does not go beyond the ``boundary
between local and public administration'', as RFC 1535
calls it.
</sect1>
<sect1><heading>Sendmail says ``mail loops back to myself''</heading>
<p>
This is answered in the sendmail FAQ as follows:-
<verb>
* I am getting "Local configuration error" messages, such as:
553 relay.domain.net config error: mail loops back to myself
554 <user@domain.net>... Local configuration error
How can I solve this problem?
You have asked mail to the domain (e.g., domain.net) to be
forwarded to a specific host (in this case, relay.domain.net)
by using an MX record, but the relay machine does not recognize
itself as domain.net. Add domain.net to /etc/sendmail.cw
(if you are using FEATURE(use_cw_file)) or add "Cw domain.net"
to /etc/sendmail.cf.
</verb>
<p>
The sendmail FAQ is in <tt>/usr/src/usr.sbin/sendmail</tt>
and is recommended reading if you want to do any
``tweaking'' of your mail setup.
<sect1><heading>How can I do E-Mail with a dialup PPP host?</heading>
<p>
You want to connect a FreeBSD box on a lan, to the Internet. The FreeBSD box will be a mail gateway for the lan. The PPP connection is non-dedicated.
There are at least two way to do this.
The other is to use UUCP.
The key is to get a Internet site to provide secondary MX services for your domain.
For example:
<verb>
bigco.com. MX 10 bigco.com.
MX 20 smalliap.com.
</verb>
Only one host should be specified as the final recipient ( add ``Cw bigco.com'' in <tt>/etc/sendmail.cf</tt> on bigco.com).
When the senders sendmail is trying to deliver the mail it will try to connect to you over the modem link. It will most likely time out because you are not online. Sendmail will automatically deliver it to the secondary MX site, ie your Internet provider. The secondary MX site will try every (<tt>sendmail_flags = "-bd -q15m"</tt> in <tt>/etc/sysconfig</tt> ) 15 minutes to connect to your host to deliver the mail to the primary MX site.
You might wat to use something like this as a login script.
<verb>
#!/bin/sh
# Put me in /usr/local/bin/pppbigco
( sleep 60 ; /usr/sbin/sendmail -q ) &
/usr/sbin/ppp -direct pppbigco
</verb>
If you are going to create a separate login script for a user you could use <tt>sendmail -qRbigco.com</tt> instead in the script above. This will force all mail in your queue for bigco.com to be processed immediately.
A further refinement of the situation is as follows.
Message stolen from the freebsd-isp mailing list.
<verb>
> we provide the secondary mx for a customer. The customer connects to
> our services several times a day automatically to get the mails to
> his primary mx (We do not call his site when a mail for his domains
> arrived). Our sendmail sends the mailqueue every 30 minutes. At the
> moment he has to stay 30 minutes online to be sure that all mail is
> gone to the primary mx.
>
> Is there a command that would initiate sendmail to send all the mails
> now? The user has not root-privileges on our machine of course.
In the 'privacy flags' section of sendmail.cf, there is a definition
Opgoaway,restrictqrun
Remove restrictqrun to allow non-root users to start the queue processing.
You might also like to rearrange the MXs. We are the 1st MX for our
customers like this, and we have defined:
# If we are the best MX for a host, try directly instead of generating
# local config error.
OwTrue
That way a remote site will deliver straight to you, without trying
the customer connection. You then send to your customer. Only works for
"hosts", so you need to get your customer to name their mail machine
"customer.com" as well as "hostname.customer.com" in the DNS. Just put
an A record in the DNS for "customer.com".
</verb>
</sect1>

View file

@ -1,50 +0,0 @@
<!-- $Id$ -->
<!-- The FreeBSD Documentation Project -->
<sect><heading>PC memory utilization<label id="memoryuse"></heading>
<p><em>Contributed by &a.joerg;.<newline>
16 Apr 1995.</em>
<em>A short description of how FreeBSD uses the memory on the i386
platform</em>
The boot sector will be loaded at <tt>0:0x7c00</tt>, and relocates itself
immediately to <tt>0x7c0:0</tt>. (This is nothing magic, just an adjustment
for the <tt>%cs</tt> selector, done by an <tt>ljmp</tt>.)
It then loads the first 15 sectors at <tt>0x10000</tt> (segment BOOTSEG in the
biosboot Makefile), and sets up the stack to work below <tt>0x1fff0</tt>.
After this, it jumps to the entry of boot2 within that code. I.e., it
jumps over itself and the (dummy) partition table, and it is going to
adjust the %cs selector---we are still in 16-bit mode there.
boot2 asks for the boot file, and examines the <tt>a.out</tt> header. It masks
the file entry point (usually <tt>0xf0100000</tt>) by <tt>0x00ffffff</tt>, and loads the
file there. Hence the usual load point is 1 MB (<tt>0x00100000</tt>). During
load, the boot code toggles back and forth between real and protected
mode, to use the BIOS in real mode.
The boot code itself uses segment selectors <tt>0x18</tt> and <tt>0x20</tt> for <tt>%cs</tt> and
<tt>%ds/%es</tt> in protected mode, and <tt>0x28</tt> to jump back into real mode. The
kernel is finally started with <tt>%cs</tt> <tt>0x08</tt> and <tt>%ds/%es/%ss</tt> <tt>0x10</tt>, which
refer to dummy descriptors covering the entire address space.
The kernel will be started at its load point. Since it has been linked
for another (high) address, it will have to execute PIC until the page
table and page directory stuff is setup properly, at which point
paging will be enabled and the kernel will finally run at the address
for which it was linked.
<em>Contributed by &a.davidg;.<newline>
16 Apr 1995.</em>
The physical pages immediately following the kernel BSS contain
proc0's page directory, page tables, and upages. Some time later
when the VM system is initialized, the physical memory between
<tt>0x1000-0x9ffff</tt> and the physical memory after the kernel
(text+data+bss+proc0 stuff+other misc) is made available in the
form of general VM pages and added to the global free page list.

View file

@ -1,702 +0,0 @@
<!-- $Id: mirrors.sgml,v 1.55 1997/04/25 20:03:48 max Exp $ -->
<!-- The FreeBSD Documentation Project -->
<!--
<!doctype linuxdoc public "-//FreeBSD//DTD linuxdoc//EN">
-->
<chapt><heading>Obtaining FreeBSD<label id="mirrors"></heading>
<sect><heading>CD-ROM Publishers</heading>
<p>FreeBSD is available 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: <url url="mailto:info@cdrom.com" name="info@cdrom.com"><newline>
WWW: <url url="http://www.cdrom.com/" name="http://www.cdrom.com/">
</quote>
<sect><heading>FTP Sites<label id="mirrors-ftp"></heading>
<p>The official sources for FreeBSD are available via anonymous FTP from:
<quote>
<url url="ftp://ftp.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp.FreeBSD.ORG/pub/FreeBSD">.
</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.
<ref id="mirrors-ar" name="Argentina">,
<ref id="mirrors-au" name="Australia">,
<ref id="mirrors-br" name="Brazil">,
<ref id="mirrors-ca" name="Canada">,
<ref id="mirrors-cz" name="Czech Republic">,
<ref id="mirrors-dk" name="Denmark">,
<ref id="mirrors-ee" name="Estonia">,
<ref id="mirrors-fi" name="Finland">,
<ref id="mirrors-fr" name="France">,
<ref id="mirrors-de" name="Germany">,
<ref id="mirrors-hk" name="Hong Kong">,
<ref id="mirrors-ie" name="Ireland">,
<ref id="mirrors-il" name="Israel">,
<ref id="mirrors-jp" name="Japan">,
<ref id="mirrors-kr" name="Korea">,
<ref id="mirrors-nl" name="Netherlands">,
<ref id="mirrors-pl" name="Poland">,
<ref id="mirrors-pt" name="Portugal">,
<ref id="mirrors-ru" name="Russia">,
<ref id="mirrors-za" name="South Africa">,
<ref id="mirrors-se" name="Sweden">,
<ref id="mirrors-tw" name="Taiwan">,
<ref id="mirrors-th" name="Thailand">,
<ref id="mirrors-us" name="USA">,
<ref id="mirrors-uk" name="UK">.
<descrip>
<tag><label id="mirrors-ar">Argentina</tag>
In case of problems, please contact the
<url url="mailto:hostmaster@ar.FreeBSD.ORG" name="hostmaster">
for this domain.
<itemize>
<item>
<url url="ftp://ftp.ar.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp.ar.FreeBSD.ORG/pub/FreeBSD"><newline>
</itemize>
<tag><label id="mirrors-au">Australia</tag>
In case of problems, please contact the
<url url="mailto:hostmaster@au.FreeBSD.ORG" name="hostmaster">
for this domain.
<itemize>
<item>
<url url="ftp://ftp.au.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp.au.FreeBSD.ORG/pub/FreeBSD"><newline>
<item>
<url url="ftp://ftp2.au.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp2.au.FreeBSD.ORG/pub/FreeBSD"><newline>
<item>
<url url="ftp://ftp3.au.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp3.au.FreeBSD.ORG/pub/FreeBSD"><newline>
<item>
<url url="ftp://ftp4.au.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp4.au.FreeBSD.ORG/pub/FreeBSD"><newline>
</itemize>
<tag><label id="mirrors-br">Brazil</tag>
In case of problems, please contact the
<url url="mailto:hostmaster@br.FreeBSD.ORG" name="hostmaster">
for this domain.
<itemize>
<item>
<url url="ftp://ftp.br.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp.br.FreeBSD.ORG/pub/FreeBSD"><newline>
<item>
<url url="ftp://ftp2.br.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp2.br.FreeBSD.ORG/pub/FreeBSD"><newline>
<item>
<url url="ftp://ftp3.br.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp3.br.FreeBSD.ORG/pub/FreeBSD"><newline>
<item>
<url url="ftp://ftp4.br.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp4.br.FreeBSD.ORG/pub/FreeBSD"><newline>
<item>
<url url="ftp://ftp5.br.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp5.br.FreeBSD.ORG/pub/FreeBSD"><newline>
<item>
<url url="ftp://ftp6.br.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp6.br.FreeBSD.ORG/pub/FreeBSD"><newline>
<item>
<url url="ftp://ftp7.br.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp7.br.FreeBSD.ORG/pub/FreeBSD"><newline>
</itemize>
<tag><label id="mirrors-ca">Canada</tag>
In case of problems, please contact the
<url url="mailto:hostmaster@ca.FreeBSD.ORG" name="hostmaster">
for this domain.
<itemize>
<item>
<url url="ftp://ftp.ca.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp.ca.FreeBSD.ORG/pub/FreeBSD"><newline>
</itemize>
<tag><label id="mirrors-cz">Czech Republic</tag>
<itemize>
<item>
<url url="ftp://sunsite.mff.cuni.cz/OS/FreeBSD"
name="ftp://sunsite.mff.cuni.cz/OS/FreeBSD"><newline>
Contact: <url url="mailto:jj@sunsite.mff.cuni.cz"
name="jj@sunsite.mff.cuni.cz">.
</itemize>
<tag><label id="mirrors-dk">Denmark</tag>
In case of problems, please contact the
<url url="mailto:hostmaster@dk.FreeBSD.ORG" name="hostmaster">
for this domain.
<itemize>
<item>
<url url="ftp://ftp.dk.freeBSD.ORG/pub/FreeBSD"
name="ftp://ftp.dk.freeBSD.ORG/pub/FreeBSD"><newline>
</itemize>
<tag><label id="mirrors-ee">Estonia</tag>
In case of problems, please contact the
<url url="mailto:hostmaster@ee.FreeBSD.ORG" name="hostmaster">
for this domain.
<itemize>
<item>
<url url="ftp://ftp.ee.freebsd.ORG/pub/FreeBSD"
name="ftp://ftp.ee.freebsd.ORG/pub/FreeBSD"><newline>
</itemize>
<tag><label id="mirrors-fi">Finland</tag>
In case of problems, please contact the
<url url="mailto:hostmaster@fi.FreeBSD.ORG" name="hostmaster">
for this domain.
<itemize>
<item>
<url url="ftp://ftp.fi.freebsd.ORG/pub/FreeBSD"
name="ftp://ftp.fi.freebsd.ORG/pub/FreeBSD"><newline>
</itemize>
<tag><label id="mirrors-fr">France</tag>
<itemize>
<item>
<url url="ftp://ftp.ibp.fr/pub/FreeBSD"
name="ftp://ftp.ibp.fr/pub/FreeBSD"><newline>
Contact: <url url="mailto:Remy.Card@ibp.fr"
name="Remy.Card@ibp.fr">.
</itemize>
<tag><label id="mirrors-de">Germany</tag>
In case of problems, please contact the
<url url="mailto:hostmaster@de.FreeBSD.ORG" name="hostmaster">
for this domain.
<itemize>
<item>
<url url="ftp://ftp.de.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp.de.FreeBSD.ORG/pub/FreeBSD"><newline>
<item>
<url url="ftp://ftp2.de.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp2.de.FreeBSD.ORG/pub/FreeBSD"><newline>
<item>
<url url="ftp://ftp3.de.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp3.de.FreeBSD.ORG/pub/FreeBSD"><newline>
<item>
<url url="ftp://ftp4.de.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp4.de.FreeBSD.ORG/pub/FreeBSD"><newline>
<item>
<url url="ftp://ftp5.de.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp5.de.FreeBSD.ORG/pub/FreeBSD"><newline>
<item>
<url url="ftp://ftp6.de.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp6.de.FreeBSD.ORG/pub/FreeBSD"><newline>
<item>
<url url="ftp://ftp7.de.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp7.de.FreeBSD.ORG/pub/FreeBSD"><newline>
</itemize>
<tag><label id="mirrors-hk">Hong Kong</tag>
<itemize>
<item>
<url url="ftp://ftp.hk.super.net/pub/FreeBSD"
name="ftp://ftp.hk.super.net/pub/FreeBSD"><newline>
Contact: <url url="mailto:ftp-admin@HK.Super.NET"
name="ftp-admin@HK.Super.NET">.
</itemize>
<tag><label id="mirrors-ie">Ireland</tag>
In case of problems, please contact the
<url url="mailto:hostmaster@ie.FreeBSD.ORG" name="hostmaster">
for this domain.
<itemize>
<item>
<url url="ftp://ftp.ie.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp.ie.FreeBSD.ORG/pub/FreeBSD"><newline>
</itemize>
<tag><label id="mirrors-il">Israel</tag>
In case of problems, please contact the
<url url="mailto:hostmaster@il.FreeBSD.ORG" name="hostmaster">
for this domain.
<itemize>
<item>
<url url="ftp://ftp.il.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp.il.FreeBSD.ORG/pub/FreeBSD"><newline>
<item>
<url url="ftp://ftp2.il.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp2.il.FreeBSD.ORG/pub/FreeBSD"><newline>
</itemize>
<tag><label id="mirrors-jp">Japan</tag>
In case of problems, please contact the
<url url="mailto:hostmaster@jp.FreeBSD.ORG" name="hostmaster">
for this domain.
<itemize>
<item>
<url url="ftp://ftp.jp.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp.jp.FreeBSD.ORG/pub/FreeBSD"><newline>
<item>
<url url="ftp://ftp2.jp.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp2.jp.FreeBSD.ORG/pub/FreeBSD"><newline>
<item>
<url url="ftp://ftp3.jp.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp3.jp.FreeBSD.ORG/pub/FreeBSD"><newline>
<item>
<url url="ftp://ftp4.jp.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp4.jp.FreeBSD.ORG/pub/FreeBSD"><newline>
<item>
<url url="ftp://ftp5.jp.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp5.jp.FreeBSD.ORG/pub/FreeBSD"><newline>
<item>
<url url="ftp://ftp6.jp.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp6.jp.FreeBSD.ORG/pub/FreeBSD"><newline>
</itemize>
<tag><label id="mirrors-kr">Korea</tag>
In case of problems, please contact the
<url url="mailto:hostmaster@kr.FreeBSD.ORG" name="hostmaster">
for this domain.
<itemize>
<item>
<url url="ftp://ftp.kr.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp.kr.FreeBSD.ORG/pub/FreeBSD"><newline>
<item>
<url url="ftp://ftp2.kr.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp2.kr.FreeBSD.ORG/pub/FreeBSD"><newline>
</itemize>
<tag><label id="mirrors-nl">Netherlands</tag>
In case of problems, please contact the
<url url="mailto:hostmaster@nl.FreeBSD.ORG" name="hostmaster">
for this domain.
<itemize>
<item>
<url url="ftp://ftp.nl.freebsd.ORG/pub/FreeBSD"
name="ftp://ftp.nl.freebsd.ORG/pub/FreeBSD"><newline>
</itemize>
<tag><label id="mirrors-pl">Poland</tag>
In case of problems, please contact the
<url url="mailto:hostmaster@pl.FreeBSD.ORG" name="hostmaster">
for this domain.
<itemize>
<item>
<url url="ftp://ftp.pl.freebsd.ORG/pub/FreeBSD"
name="ftp://ftp.pl.freebsd.ORG/pub/FreeBSD"><newline>
</itemize>
<tag><label id="mirrors-pt">Portugal</tag>
In case of problems, please contact the
<url url="mailto:hostmaster@pt.FreeBSD.ORG" name="hostmaster">
for this domain.
<itemize>
<item>
<url url="ftp://ftp.pt.freebsd.org/pub/FreeBSD"
name="ftp://ftp.pt.freebsd.org/pub/FreeBSD"><newline>
<item>
<url url="ftp://ftp2.pt.freebsd.org/pub/FreeBSD"
name="ftp://ftp2.pt.freebsd.org/pub/FreeBSD"><newline>
</itemize>
<tag><label id="mirrors-ru">Russia</tag>
In case of problems, please contact the
<url url="mailto:hostmaster@ru.FreeBSD.ORG" name="hostmaster">
for this domain.
<itemize>
<item>
<url url="ftp://ftp.ru.freebsd.org/pub/FreeBSD"
name="ftp://ftp.ru.freebsd.org/pub/FreeBSD"><newline>
<item>
<url url="ftp://ftp2.ru.freebsd.org/pub/FreeBSD"
name="ftp://ftp2.ru.freebsd.org/pub/FreeBSD"><newline>
<item>
<url url="ftp://ftp3.ru.freebsd.org/pub/FreeBSD"
name="ftp://ftp3.ru.freebsd.org/pub/FreeBSD"><newline>
</itemize>
<tag><label id="mirrors-za">South Africa</tag>
In case of problems, please contact the
<url url="mailto:hostmaster@za.FreeBSD.ORG" name="hostmaster">
for this domain.
<itemize>
<item>
<url url="ftp://ftp.za.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp.za.FreeBSD.ORG/pub/FreeBSD"><newline>
<item>
<url url="ftp://ftp2.za.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp2.za.FreeBSD.ORG/pub/FreeBSD"><newline>
<item>
<url url="ftp://ftp3.za.FreeBSD.ORG/FreeBSD"
name="ftp://ftp3.za.FreeBSD.ORG/FreeBSD"><newline>
</itemize>
<tag><label id="mirrors-se">Sweden</tag>
In case of problems, please contact the
<url url="mailto:hostmaster@se.FreeBSD.ORG" name="hostmaster">
for this domain.
<itemize>
<item>
<url url="ftp://ftp.se.freebsd.ORG/pub/FreeBSD"
name="ftp://ftp.se.freebsd.ORG/pub/FreeBSD"><newline>
</itemize>
<tag><label id="mirrors-tw">Taiwan</tag>
In case of problems, please contact the
<url url="mailto:hostmaster@tw.FreeBSD.ORG" name="hostmaster">
for this domain.
<itemize>
<item>
<url url="ftp://ftp.tw.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp.tw.FreeBSD.ORG/pub/FreeBSD"><newline>
<item>
<url url="ftp://ftp2.tw.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp2.tw.FreeBSD.ORG/pub/FreeBSD"><newline>
<item>
<url url="ftp://ftp3.tw.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp3.tw.FreeBSD.ORG/pub/FreeBSD"><newline>
</itemize>
<tag><label id="mirrors-th">Thailand</tag>
<itemize>
<item>
<url url="ftp://ftp.nectec.or.th/pub/FreeBSD"
name="ftp://ftp.nectec.or.th/pub/FreeBSD"><newline>
Contact: <url url="mailto:ftpadmin@ftp.nectec.or.th"
name="ftpadmin@ftp.nectec.or.th">.
</itemize>
<tag><label id="mirrors-us">USA</tag>
In case of problems, please contact the
<url url="mailto:hostmaster@FreeBSD.ORG" name="hostmaster">
for this domain.
<itemize>
<item>
<url url="ftp://ftp.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp.FreeBSD.ORG/pub/FreeBSD"><newline>
<item>
<url url="ftp://ftp2.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp2.FreeBSD.ORG/pub/FreeBSD"><newline>
<item>
<url url="ftp://ftp3.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp3.FreeBSD.ORG/pub/FreeBSD"><newline>
<item>
<url url="ftp://ftp4.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp4.FreeBSD.ORG/pub/FreeBSD"><newline>
<item>
<url url="ftp://ftp5.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp5.FreeBSD.ORG/pub/FreeBSD"><newline>
<item>
<url url="ftp://ftp6.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp6.FreeBSD.ORG/pub/FreeBSD"><newline>
</itemize>
<tag><label id="mirrors-uk">UK</tag>
In case of problems, please contact the
<url url="mailto:hostmaster@uk.FreeBSD.ORG" name="hostmaster">
for this domain.
<itemize>
<item>
<url url="ftp://ftp.uk.FreeBSD.ORG/packages/unix/FreeBSD"
name="ftp://ftp.uk.FreeBSD.ORG/packages/unix/FreeBSD"><newline>
<item>
<url url="ftp://ftp2.uk.FreeBSD.ORG/pub/walnut.creek/FreeBSD"
name="ftp://ftp2.uk.FreeBSD.ORG/pub/walnut.creek/FreeBSD"><newline>
<item>
<url url="ftp://ftp3.uk.FreeBSD.ORG/pub/unix/FreeBSD"
name="ftp://ftp3.uk.FreeBSD.ORG/pub/unix/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>
<url url="mailto:hostmaster@internat.FreeBSD.ORG" name="Hostmaster">
for this domain.
<itemize>
<item>
<url url="ftp://ftp.internat.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp.internat.FreeBSD.ORG/pub/FreeBSD"><newline>
<item>
<url url="ftp://ftp2.internat.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp2.internat.FreeBSD.ORG/pub/FreeBSD"><newline>
</itemize>
<tag>Brazil</tag>
<url url="mailto:hostmaster@br.FreeBSD.ORG" name="Hostmaster">
for this domain.
<itemize>
<item>
<url url="ftp://ftp.br.FreeBSD.ORG/pub/FreeBSD"
name="ftp://ftp.br.FreeBSD.ORG/pub/FreeBSD"><newline>
</itemize>
<tag>Finland</tag>
<itemize>
<item>
<url url="ftp://nic.funet.fi/pub/unix/FreeBSD/eurocrypt"
name="ftp://nic.funet.fi/pub/unix/FreeBSD/eurocrypt"><newline>
Contact: <url url="mailto:count@nic.funet.fi"
name="count@nic.funet.fi">.
</itemize>
</descrip>
<sect><heading>CTM Sites<label id="mirrors-ctm"></heading>
<p><ref id="ctm" name="CTM">/FreeBSD is available via anonymous FTP from the
following mirror sites. If you choose to obtain CTM via
anonymous FTP, please try to use a site near you.
In case of problems, please contact &a.phk;.
<descrip>
<tag>California, Bay Area, official source</tag>
<itemize>
<item>
<url url="ftp://freefall.freebsd.org/pub/CTM"
name="ftp://freefall.freebsd.org/pub/CTM"><newline>
</itemize>
<tag>Germany, Berlin</tag>
<itemize>
<item>
<url url="ftp://ftp.cs.tu-berlin.de/pub/FreeBSD/CTM"
name="ftp://ftp.cs.tu-berlin.de/pub/FreeBSD/CTM"><newline>
</itemize>
<tag>Germany, Trier</tag>
<itemize>
<item>
<url url="ftp://ftp.uni-trier.de/pub/unix/systems/BSD/FreeBSD/CTM"
name="ftp://ftp.uni-trier.de/pub/unix/systems/BSD/FreeBSD/CTM"><newline>
</itemize>
<tag>South Africa, backup server for old deltas</tag>
<itemize>
<item>
<url url="ftp://ftp.internat.freebsd.org/pub/FreeBSD/CTM"
name="ftp://ftp.internat.freebsd.org/pub/FreeBSD/CTM"><newline>
</itemize>
<tag>Taiwan/R.O.C, Chiayi</tag>
<itemize>
<item>
<url url="ftp://ftp.ccu.edu.tw/pub/freebsd/CTM"
name="ftp://ftp.ccu.edu.tw/pub/freebsd/CTM"><newline>
</itemize>
</descrip>
If you did not find a mirror near to you or the mirror is incomplete,
try
<url url="http://ftpsearch.ntnu.no/" name="FTP search"> at
<url url="http://ftpsearch.ntnu.no/ftpsearch/"
name="http://ftpsearch.ntnu.no/ftpsearch">.
FTP search is a great free archie server in Trondheim, Norway.
<sect><heading>CVSup Sites<label id="mirrors-cvsup"></heading>
<p><ref id="cvsup" name="CVSup"> servers for FreeBSD are running at
the following sites:
<descrip>
<tag>Argentina</tag>
<itemize>
<item>cvsup.ar.FreeBSD.ORG
(<url url="mailto:msagre@cactus.fi.uba.ar" name="maintainer">)
</itemize>
<tag>Australia</tag>
<itemize>
<item>cvsup.au.FreeBSD.ORG
(<url url="mailto:dawes@physics.usyd.edu.au" name="maintainer">)
</itemize>
<tag>Germany</tag>
<itemize>
<item>cvsup.de.FreeBSD.ORG
(<url url="mailto:wosch@cs.tu-berlin.de" name="maintainer">)
</itemize>
<tag>Japan</tag>
<itemize>
<item>cvsup.jp.FreeBSD.ORG
(<url url="mailto:simokawa@sat.t.u-tokyo.ac.jp" name="maintainer">)
</itemize>
<tag>Netherlands</tag>
<itemize>
<item>cvsup.nl.FreeBSD.ORG
(<url url="mailto:xaa@stack.nl" name="maintainer">)
</itemize>
<tag>Norway</tag>
<itemize>
<item>cvsup.no.FreeBSD.ORG
(<url url="mailto:Tor.Egge@idt.ntnu.no" name="maintainer">)
</itemize>
<tag>South Africa</tag>
<itemize>
<item>cvsup.za.FreeBSD.ORG
(<url url="mailto:markm@FreeBSD.ORG" name="maintainer">)
</itemize>
<tag>Taiwan</tag>
<itemize>
<item>sup.tw.FreeBSD.ORG
(<url url="mailto:jdli@freebsd.csie.nctu.edu.tw" name="maintainer">)
</itemize>
<tag>USA</tag>
<itemize>
<item>cvsup.FreeBSD.ORG
(<url url="mailto:jdp@FreeBSD.ORG" name="maintainer">)
<item>cvsup2.FreeBSD.ORG
(<url url="mailto:jdp@FreeBSD.ORG" name="maintainer">)
<item>cvsup4.FreeBSD.ORG
(<url url="mailto:jdp@FreeBSD.ORG" name="maintainer">)
<item>cvsup5.FreeBSD.ORG
(<url url="mailto:skynyrd@opus.cts.cwu.edu" name="maintainer">)
</itemize>
</descrip>
The export-restricted code for FreeBSD (eBones and secure) is
available via CVSup at the following international repository.
Please use this site to get the export-restricted code, if you are
outside the USA or Canada.
<descrip>
<tag>South Africa</tag>
<itemize>
<item>cvsup.internat.FreeBSD.ORG
(<url url="mailto:markm@FreeBSD.ORG" name="maintainer">)
</itemize>
</descrip>

View file

@ -1,86 +0,0 @@
<!-- $Id$ -->
<!-- The FreeBSD Documentation Project -->
<sect><heading>NFS<label id="nfs"></heading>
<p><em>Contributed by &a.jlind;.</em>
Certain Ethernet adapters for ISA PC systems have limitations which
can lead to serious network problems, particularly with NFS. This
difficulty is not specific to FreeBSD, but FreeBSD systems are affected
by it.
The problem nearly always occurs when (FreeBSD) PC systems are networked
with high-performance workstations, such as those made by Silicon Graphics,
Inc., and Sun Microsystems, Inc. The NFS mount will work fine, and some
operations may succeed, but suddenly the server will seem to become
unresponsive to the client, even though requests to and from other systems
continue to be processed. This happens to the client system, whether the
client is the FreeBSD system or the workstation. On many systems, there is
no way to shut down the client gracefully once this problem has manifested
itself. The only solution is often to reset the client, because the NFS
situation cannot be resolved.
Though the "correct" solution is to get a higher performance and capacity
Ethernet adapter for the FreeBSD system, there is a simple workaround that
will allow satisfactory operation. If the FreeBSD system is the SERVER,
include the option "-w=1024" on the mount from the client. If the
FreeBSD system is the CLIENT, then mount the NFS file system with the
option "-r=1024". These options may be specified using the fourth
field of the fstab entry on the client for automatic mounts, or by using
the "-o" parameter of the mount command for manual mounts.
It should be noted that there is a different problem,
sometimes mistaken for this one,
when the NFS servers and clients are on different networks.
If that is the case, make CERTAIN that your routers are routing the
necessary UDP information, or you will not get anywhere, no matter
what else you are doing.
In the following examples, "fastws" is the host (interface) name of a
high-performance workstation, and "freebox" is the host (interface) name of
a FreeBSD system with a lower-performance Ethernet adapter. Also,
"/sharedfs" will be the exported NFS filesystem (see "man exports"), and
"/project" will be the mount point on the client for the exported file
system. In all cases, note that additional options, such as "hard" or
"soft" and "bg" may be desirable in your application.
Examples for the FreeBSD system ("freebox") as the client:
in <tt>/etc/fstab</tt> on freebox:
fastws:/sharedfs /project nfs rw,-r=1024 0 0
as a manual mount command on freebox:
mount -t nfs -o -r=1024 fastws:/sharedfs /project
Examples for the FreeBSD system as the server:
in <tt>/etc/fstab</tt> on fastws:
freebox:/sharedfs /project nfs rw,-w=1024 0 0
as a manual mount command on fastws:
mount -t nfs -o -w=1024 freebox:/sharedfs /project
Nearly any 16-bit Ethernet adapter will allow operation without the above
restrictions on the read or write size.
For anyone who cares, here is what happens when the failure occurs, which
also explains why it is unrecoverable. NFS typically works with a "block"
size of 8k (though it may do fragments of smaller sizes). Since the maximum
Ethernet packet is around 1500 bytes, the NFS "block" gets split into
multiple Ethernet packets, even though it is still a single unit to the
upper-level code, and must be received, assembled, and ACKNOWLEDGED as a
unit. The high-performance workstations can pump out the packets which
comprise the NFS unit one right after the other, just as close together as
the standard allows. On the smaller, lower capacity cards, the later
packets overrun the earlier packets of the same unit before they can be
transferred to the host and the unit as a whole cannot be reconstructed or
acknowledged. As a result, the workstation will time out and try again,
but it will try again with the entire 8K unit, and the process will be
repeated, ad infinitum.
By keeping the unit size below the Ethernet packet size limitation, we
ensure that any complete Ethernet packet received can be acknowledged
individually, avoiding the deadlock situation.
Overruns may still occur when a high-performance workstations is slamming
data out to a PC system, but with the better cards, such overruns are
not guaranteed on NFS "units". When an overrun occurs, the units affected
will be retransmitted, and there will be a fair chance that they will be
received, assembled, and acknowledged.

View file

@ -1,151 +0,0 @@
<!-- $Id$ -->
<!-- The FreeBSD Documentation Project -->
<sect><heading>FreeBSD in a nutshell<label id="nutshell"></heading>
<p>FreeBSD is a state of the art operating system for
personal computers based on the Intel CPU architecture, which
includes the 386, 486 and Pentium processors (both SX and DX versions).
Intel compatible CPUs from AMD and Cyrix are supported as well.
FreeBSD provides you with many advanced features previously available
only on much more expensive computers. These features include:
<itemize>
<item><bf>Preemptive multitasking</bf> with dynamic priority
adjustment to ensure smooth and fair sharing of the
computer between applications and users.</item>
<item><bf>Multiuser</bf> access means that many people can use a
FreeBSD system simultaneously for a variety of things. System
peripherals such as printers and tape drives are also properly
SHARED BETWEEN ALL users on the system.</item>
<item>Complete <bf>TCP/IP networking</bf> including SLIP, PPP, NFS
and NIS support. This means that your FreeBSD machine can
inter-operate easily with other systems as well act as an enterprise
server, providing vital functions such as NFS (remote file access) and
e-mail services or putting your organization on the Internet
with WWW, ftp, routing and firewall (security) services.</item>
<item><bf>Memory protection</bf> ensures that applications (or
users) cannot interfere with each other. One application
crashing will not affect others in any way.</item>
<item>FreeBSD is a <bf>32-bit</bf> operating system and was designed
as such from the ground up.</item>
<item>The industry standard <bf>X Window System</bf> (X11R6)
provides a graphical user interface (GUI) for the cost of a
common VGA card and monitor and comes with full sources.</item>
<item><bf>Binary compatibility</bf> with many programs built for SCO,
BSDI, NetBSD, Linux and 386BSD.</item>
<item>Hundreds of <bf>ready-to-run</bf> applications are
available from the
FreeBSD <bf>ports</bf> and <bf>packages</bf>
collection. Why search the net when you can find it all
right here?</item>
<item>Thousands of additional and <bf>easy-to-port</bf> applications
available on the Internet. FreeBSD is source code compatible
with most popular commercial Unix systems and thus most
applications require few, if any, changes to compile.</item>
<item>Demand paged <bf>virtual memory</bf> and `merged VM/buffer cache'
design efficiently satisfies applications with large appetites
for memory while still maintaining interactive response to other
users.</item>
<item><bf>Shared libraries</bf> (the Unix equivalent of
MS-Windows DLLs) provide for efficient use of disk space
and memory.</item>
<item>A full compliment of <bf>C</bf>, <bf>C++</bf> and
<bf>Fortran</bf> development tools. Many additional
languages for advanced research and development are
also available in the ports and packages collection.</item>
<item><bf>Source code</bf> for the entire system means you have
the greatest degree of control over your environment. Why be
locked into a proprietary solution and at the mercy of your vendor
when you can have a truly Open System?</item>
<item>Extensive <bf>on-line documentation</bf>.</item>
<item><bf>And many more!</bf></item>
</itemize>
FreeBSD is based on the 4.4BSD-Lite release from Computer
Systems Research Group (CSRG) at the University of
California at Berkeley, and carries on the distinguished
tradition of BSD systems development. In addition to the
fine work provided by CSRG, the FreeBSD Project has put in
many thousands of hours in fine tuning the system for
maximum performance and reliability in real-life load
situations. As many of the commercial giants struggle to
field PC operating systems with such features, performance
and reliability, FreeBSD can offer them <bf>now</bf>!
The applications to which FreeBSD can be put are truly
limited only by your own imagination. From software
development to factory automation, inventory control to
azimuth correction of remote satellite antennae; if it can
be done with a commercial UNIX product then it is more than
likely that you can do it with FreeBSD, too! FreeBSD also
benefits significantly from the literally thousands of high
quality applications developed by research centers and
universities around the world, often available at little
to no cost. Commercial applications are also available
and appearing in greater numbers every day.
Because the source code for FreeBSD itself is generally
available, the system can also be customized to an almost
unheard of degree for special applications or projects, and
in ways not generally possible with operating systems from
most major commercial vendors. Here is just a sampling of
some of the applications in which people are currently
using FreeBSD:
<itemize>
<item><bf>Internet Services:</bf> The robust TCP/IP networking
built into FreeBSD makes it an ideal platform for a
variety of Internet services such as:
<itemize>
<item>FTP servers</item>
<item>World Wide Web servers</item>
<item>Gopher servers</item>
<item>Electronic Mail servers</item>
<item>USENET News</item>
<item>Bulletin Board Systems</item>
<item>And more...</item>
</itemize>
You can easily start out small with an inexpensive 386
class PC and upgrade as your enterprise grows.</item>
<item><bf>Education:</bf> Are you a student of computer science
or a related engineering field? There is no better way
of learning about operating systems, computer
architecture and networking than the hands on, under the
hood experience that FreeBSD can provide. A number of
freely available CAD, mathematical and graphic design
packages also make it highly useful to those who's
primary interest in a computer is to get <em>other</em>
work done!</item>
<item><bf>Research:</bf> With source code for the entire system
available, FreeBSD is an excellent platform for research
in operating systems as well as other branches of
computer science. FreeBSD's freely available nature also
makes it possible for remote groups to collaborate on
ideas or shared development without having to worry about
special licensing agreements or limitations on what
may be discussed in open forums.</item>
<item><bf>Networking:</bf> Need a new router? A name server
(DNS)? A firewall to keep people out of your internal
network? FreeBSD can easily turn that unused 386 or 486 PC
sitting in the corner into an advanced router with
sophisticated packet filtering capabilities. </item>
<item><bf>X Window workstation:</bf> FreeBSD is a fine
choice for an inexpensive X terminal solution, either
using the freely available XFree86 server or one
of the excellent commercial servers provided by X Inside.
Unlike an X
terminal, FreeBSD allows many applications to be run
locally, if desired, thus relieving the burden on a
central server. FreeBSD can even boot
"diskless", making individual workstations even cheaper
and easier to administer.</item>
<item><bf>Software Development:</bf> The basic FreeBSD system
comes with a full compliment of development tools
including the renowned GNU C/C++ compiler and
debugger. </item>
</itemize>
FreeBSD is available in both source and binary form on CDROM and
via anonymous ftp. See <ref id="mirrors" name="Obtaining FreeBSD">
for more details.

View file

@ -1,364 +0,0 @@
<!-- $Id: pgpkeys.sgml,v 1.19 1997/04/25 22:54:33 ache Exp $ -->
<!-- The FreeBSD Documentation Project -->
<chapt><heading>PGP keys<label id="pgpkeys"></heading>
<p> In case you need to verify a signature or send encrypted
email to one of the officers or core team members a
number of keys are provided here for your convenience.
<sect><heading>Officers</heading>
<sect1><heading>
FreeBSD Security Officer &lt;security-officer@freebsd.org&gt;
</heading> <p>
<tscreen><verb>
FreeBSD Security Officer &lt;security-officer@freebsd.org&gt;
Fingerprint = 41 08 4E BB DB 41 60 71 F9 E5 0E 98 73 AF 3F 11
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3i
mQCNAzF7MY4AAAEEAK7qBgPuBejER5HQbQlsOldk3ZVWXlRj54raz3IbuAUrDrQL
h3g57T9QY++f3Mot2LAf5lDJbsMfWrtwPrPwCCFRYQd6XH778a+l4ju5axyjrt/L
Ciw9RrOC+WaPv3lIdLuqYge2QRC1LvKACIPNbIcgbnLeRGLovFUuHi5z0oilAAUR
tDdGcmVlQlNEIFNlY3VyaXR5IE9mZmljZXIgPHNlY3VyaXR5LW9mZmljZXJAZnJl
ZWJzZC5vcmc+iQCVAwUQMX6yrOJgpPLZnQjrAQHyowQA1Nv2AY8vJIrdp2ttV6RU
tZBYnI7gTO3sFC2bhIHsCvfVU3JphfqWQ7AnTXcD2yPjGcchUfc/EcL1tSlqW4y7
PMP4GHZp9vHog1NAsgLC9Y1P/1cOeuhZ0pDpZZ5zxTo6TQcCBjQA6KhiBFP4TJql
3olFfPBh3B/Tu3dqmEbSWpuJAJUDBRAxez3C9RVb+45ULV0BAak8A/9JIG/jRJaz
QbKom6wMw852C/Z0qBLJy7KdN30099zMjQYeC9PnlkZ0USjQ4TSpC8UerYv6IfhV
nNY6gyF2Hx4CbEFlopnfA1c4yxtXKti1kSN6wBy/ki3SmqtfDhPQ4Q31p63cSe5A
3aoHcjvWuqPLpW4ba2uHVKGP3g7SSt6AOYkAlQMFEDF8mz0ff6kIA1j8vQEBmZcD
/REaUPDRx6qr1XRQlMs6pfgNKEwnKmcUzQLCvKBnYYGmD5ydPLxCPSFnPcPthaUb
5zVgMTjfjS2fkEiRrua4duGRgqN4xY7VRAsIQeMSITBOZeBZZf2oa9Ntidr5PumS
9uQ9bvdfWMpsemk2MaRG9BSoy5Wvy8VxROYYUwpT8Cf2iQCVAwUQMXsyqWtaZ42B
sqd5AQHKjAQAvolI30Nyu3IyTfNeCb/DvOe9tlOn/o+VUDNJiE/PuBe1s2Y94a/P
BfcohpKC2kza3NiW6lLTp00OWQsuu0QAPc02vYOyseZWy4y3Phnw60pWzLcFdemT
0GiYS5Xm1o9nAhPFciybn9j1q8UadIlIq0wbqWgdInBT8YI/l4f5sf6JAJUDBRAx
ezKXVS4eLnPSiKUBAc5OBACIXTlKqQC3B53qt7bNMV46m81fuw1PhKaJEI033mCD
ovzyEFFQeOyRXeu25Jg9Bq0Sn37ynISucHSmt2tUD5W0+p1MUGyTqnfqejMUWBzO
v4Xhp6a8RtDdUMBOTtro16iulGiRrCKxzVgEl4i+9Z0ZiE6BWlg5AetoF5n3mGk1
lw==
=ipyA
-----END PGP PUBLIC KEY BLOCK-----
</verb></tscreen>
<sect><heading>Core team members</heading>
<sect1><heading>&a.jkh</heading><p>
<tscreen><verb>
Jordan K. Hubbard &lt;jkh@FreeBSD.org&gt;
Fingerprint = 3C F2 27 7E 4A 6C 09 0A 4B C9 47 CD 4F 4D 0B 20
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2i
mQCNAzFjX0IAAAEEAML+nm9/kDNPp43ZUZGjYkm2QLtoC1Wxr8JulZXqk7qmhYcQ
jvX+fyoriJ6/7ZlnLe2oG5j9tZOnRLPvMaz0g9CpW6Dz3nkXrNPkmOFV9B8D94Mk
tyFeRJFqnkCuqBj6D+H8FtBwEeeTecSh2tJ0bZZTXnAMhxeOdvUVW/uOVC1dAAUR
tCNKb3JkYW4gSy4gSHViYmFyZCA8amtoQEZyZWVCU0Qub3JnPokAlQMFEDF75D1r
WmeNgbKneQEBXtcD+gJIv8JzZRKlDZyTCQanK8iRgE+zMhxptI0kDObaGxT1BrpY
4/EPyiUN10G4k2Jb+DOc8Lg2xDQ3xmvgipFf9NMNV/ThaEuZ3wA31I6tW/arQEqB
Tp8u6T3v20m62t7Afo9HaoE6MBpHQUk2TilxgAd5P57sporL3pgW9YojIO9ziQCV
AwUQMXyV2h9/qQgDWPy9AQEMfgP/RmbSg2WlesATUQ4WuanjcdREduKPyfQatrXD
2xt+jg9X78dTyiNN1YvLqvT6msfs04MKSC0hA2mou6ozw8Xak+1QmP0fBOZKp9pP
8szO188Do9ByzJPvHF1eXT7jFMOXVq8ZIl9iwjxcIDLzlxOz49DC7LO6AT+LKQk7
UGeP+lqJAJUDBRAxe+UG9RVb+45ULV0BAXZ9A/9F9gLpGukVNkeOjaqxQdJGTS+a
xh/Abk0c/nKhAEyxpAl5JyQ3ifYk6BHhPvlTi9LrZoXGA8sk/eU4eRTZVzvGEC4G
+xsavlE/xzku8855QTLPpkCunUpQeu1wzaIrUUE6Zjh05imFbJYyQOBgTFpuqWsC
rsUpl+2mr8IGIxG5rA==
=LW9i
-----END PGP PUBLIC KEY BLOCK-----
</verb></tscreen>
<sect1><heading>&a.phk</heading><p>
<tscreen><verb>
Poul-Henning Kamp &lt;phk@FreeBSD.org&gt;
Fingerprint = A3 F3 88 28 2F 9B 99 A2 49 F4 E2 FA 5A 78 8B 3E
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
mQCNAzAdpMIAAAEEALHDgrFUwhZtb7PbXg3upELoDVEUPFRwnmpJH1rRqyROUGcI
ooVe7u+FQlIs5OsXK8ECs/5Wpe2UrZSzHvjwBYOND5H42YtI5UULZLRCo5bFfTVA
K9Rpo5icfTsYihrzU2nmnycwFMk+jYXyT/ZDYWDP/BM9iLjj0x9/qQgDWPy9AAUR
tCNQb3VsLUhlbm5pbmcgS2FtcCA8cGhrQEZyZWVCU0Qub3JnPokAlQMFEDMGK9qz
WmLrWZ8yPQEB4iED/18bQVhV2gUYFSxIUTaUtO2HVPi7GRpSzmXoTfS+FJyRR0ED
zTqTHstoBe2PeWgTsOf9cUub5UKcJkRQp7VrJv4Kncyuq7pX69a+QMveCzuUwAur
nDbt/emOL6NU8g9Uk50QuOuipb5rULQLRRoF5TkViy/VES83ERXdYQ9Ml3fWiQCV
AwUQMX6NfWtaZ42Bsqd5AQEKsgP+L+uLz95dRdEmnZ+omrO+tYZM/0jHU7i8yC5q
H0gguKOCljI4liR7NkqKONUJWYtfsTB81d9iSosBZRrTx6i/hB8l8kOB975n/f9S
hftFwmjLYCNMFlDM4j0kySvMV20UZjAyv9BeE51VWlIZ5n/oeSuzul3Znow02tF/
zVnInJiJAJUDBRAxfJXn9RVb+45ULV0BAXJ8A/9K6NT6VLZZC5q3g7bBk5DWuzBS
3oK2Ebww6xzsD2R9edltoz1J3GPngK0CWpHh4kw5iTaRWoC2YJYRNG6icnGvlMAl
1/urqQHJVhxATINm8oljDKsj1RBJ6VKBzNbCJIHTVpX0AJoqUQX2Idi8goFr0fAm
7cD2CBb1JhoAdzEfO4kAlQMFEDFLHlwff6kIA1j8vQEBj5MD/1hA8hJdhpL7mvQj
rTAIn6Ldr08Lr1lqTaKSBMdCL3suGlW0Sw/dIBgicPDhgxLahT3DVfGiIst32FSl
xmWY7wine80X4TZkJ9Hiw3Mpqtjl92j6zHNq0ZZE+CceNubpEdYLDqokAIMPdWlo
WPHZcPxCs5PKI5udseFYF2gQAjI2iQCVAwUQMTlDoO9huekR1Y7VAQGy+AP/Rzp+
UGtJavbSiPx5EnXOXxkA/+ulXQgQG9vdkWwewkvxDNOzHW3KkUWCGtPtIMENznbF
j3QlYB+USIaf1ogvlD5EdXGPDfTINpE8CX2WXzajfgYFpYETDzduwjoWDZfEN9zZ
fQqQS62VgAReOIz3k9BL708z/+WUO0++RLGCmImJAJUDBRAw5q8kAPLZCeu7G0EB
AT3bBACwo+r9TgbiSyyU5cZpq5KgGT1c7eUHXjtxKmtrXD1nFNJ6j7x2DM2XGe6B
YOfDWbFq4UkEAyAeXviuuUP4enQu1v2g7JGXeuI8bRM519pLdPzDq/DnbA4rNStn
/SkH7awMfNSplcFuE6rc5ezVkw17eOHzDrYmwsFavL9gxZEycg==
=Q45T
-----END PGP PUBLIC KEY BLOCK-----
</verb></tscreen>
<sect1><heading>&a.joerg</heading><p>
<tscreen><verb>
J&ouml;rg Wunsch &lt;joerg_wunsch@uriah.heep.sax.de&gt;
Key fingerprint = DC 47 E6 E4 FF A6 E9 8F 93 21 E0 7D F9 12 D6 4E
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
mQCNAzGCFeAAAAEEAKmRBU2Nvc7nZy1Ouid61HunA/5hF4O91cXm71/KPaT7dskz
q5sFXvPJPpawwvqHPHfEbAK42ZaywyFp59L1GaYj87Pda+PlAYRJyY2DJl5/7JPe
ziq+7B8MdvbX6D526sdmcR+jPXPbHznASjkx9DPmK+7TgFujyXW7bjh2o/exAAUR
tC1Kb2VyZyBXdW5zY2ggPGpvZXJnX3d1bnNjaEB1cmlhaC5oZWVwLnNheC5kZT6J
AJUDBRAyCIWZdbtuOHaj97EBAVMzA/41VIph36l+yO9WGKkEB+NYbYOz2W/kyi74
kXLvLdTXcRYFaCSZORSsQKPGNMrPZUoLoAKxE25AoCgl5towqr/sCcu0A0MMvJdd
UvlQ2T+ylSpGmWchqoXCN7FdGyxrZ5zzxzLIvtcio6kaHd76XxyJpltCASupdD53
nEtxnu8sRrQxSm9lcmcgV3Vuc2NoIDxqb2VyZ193dW5zY2hAaW50ZXJmYWNlLWJ1
c2luZXNzLmRlPokAlQMFEDIIhfR1u244dqP3sQEBWoID/RhBm+qtW+hu2fqAj9d8
CVgEKJugrxZIpXuCKFvO+bCgQtogt9EX+TJh4s8UUdcFkyEIu8CT2C3Rrr1grvck
fxvrTgzSzvtYyv1072X3GkVY+SlUMBMArdl1qNW23oT7Q558ajnsaL065XJ5m7Ha
cgTTikiofYG8i1s7TrsEeq6PtCJKb2VyZyBXdW5zY2ggPGpAdXJpYWguaGVlcC5z
YXguZGU+iQCVAwUQMaS91D4gHQUlG9CZAQGYOwQAhPpiobK3d/fz+jWrbQgjkoO+
j39glYGXb22+6iuEprFRs/ufKYtjljNTNK3B4DWSkyIPawcuO4Lotijp6jke2bsj
FSSashGWcsJlpnwsv7EeFItT3oWTTTQQItPbtNyLW6M6xB+jLGtaAvJqfOlzgO9B
LfHuA2LY+WvbVW447SWJAJUDBRAxqWRsdbtuOHaj97EBAXDBA/49rzZB5akkTSbt
/gNd38OJgC+H8N5da25vV9dD3KoAvXfWfw7OxIsxvQ/Ab+rJmukrrWxPdsC+1WU1
+1rGa4PvJp/VJRDes2awGrn+iO7/cQoSIVziC27JpcbvjLvLVcBIiy1yT/RvJ+87
a3jPRHt3VFGcpFh4KykxxSNiyGygl4kAlQMFEDGCUB31FVv7jlQtXQEB5KgD/iIJ
Ze5lFkPr2B/Cr7BKMVBot1/JSu05NsHgJZ3uK15w4mVtNPZcFi/dKbn+qRM6LKDF
e/GF0HZD/ZD1FJt8yQjzF2w340B+F2GGEOwnClqZDtEAqnIBzM/ECQQqH+6Bi8gp
kFZrFgg5eON7ikqmusDnOlYStM/CBfgpSbR8kDmFtCZKb2VyZyBXdW5zY2ggPGpA
aW50ZXJmYWNlLWJ1c2luZXNzLmRlPokAlQMFEDMF5M3HZvEPv7z0SQEBAOEEAIDT
V9RxYF6zHrQ2/sOshBkA5CQgwGPW+pgNhzXii0AIbKGZeB8ANforkGgoKN5chQvt
Un9PezlE7O+M+V9bwnnalaBcPQsSN8bnLbd6SQm2zevH5TpZ6tFnWKLllhpRcC5Y
eTxMv/1bcF/ZaoLIs5Yc4rfn1+gU+AYCouW2g4a1iQCVAwUQMgir3g/XgicV+IVJ
AQHmzAP/ZkT8uiuou019kY1CkpdqeaGK1z5NdmbMOIo7pLbJcc0ITgsjEghitlBA
uFDPTF6dR9SWUMTfw3H5zO1WlLflXtMGegwvYAUhydYSlcR3uV049upiK+K3Fzct
lxAzCvULJwcSAGZwVU40ji3YaqkjKd1CyzqQZUS9kWK6otuyF6+JAJUDBRAxqW53
dbtuOHaj97EBASZ0A/0VUgM4H+LqK7936W6LCNCxNy1LnwGBgUiTSZ7JHisrnWZD
ZCOcxhg8FZ3h/3EpCk+DkaKHqnEwcSnjGjLlz1Zd9EGoYDcFo37k75eTmfKK7EBh
liJ+RYamF7CpIxBsSDgTn775VUNFG3EdDdvuRejG+Rqq12aSHrJ+4xSaZECj1A==
=ItLi
-----END PGP PUBLIC KEY BLOCK-----
</verb></tscreen>
<sect1><heading>&a.ache</heading><p>
<tscreen><verb>
Andrey A. Chernov &lt;ache@FreeBSD.org&gt;
aka &lt;ache@nagual.pp.ru&gt;
Key fingerprint = 33 03 9F 48 33 7B 4A 15 63 48 88 0A C4 97 FD 49
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
mQCNAiqUMGQAAAEEAPGhcD6A2Buey5LYz0sphDLpVgOZc/bb9UHAbaGKUAGXmafs
Dcb2HnsuYGgX/zrQXuCi/wIGtXcZWB97APtKOhFsZnPinDR5n/dde/mw9FnuhwqD
m+rKSL1HlN0z/Msa5y7g16760wHhSR6NoBSEG5wQAHIMMq7Q0uJgpPLZnQjrAAUT
tCVBbmRyZXkgQS4gQ2hlcm5vdiA8YWNoZUBuYWd1YWwucHAucnU+iQCVAwUQM2Ez
u+JgpPLZnQjrAQEyugP8DPnS8ixJ5OeuYgPFQf5sy6l+LrB6hyaS+lgsUPahWjNY
cnaDmfda/q/BV5d4+y5rlQe/pjnYG7/yQuAR3jhlXz8XDrqlBOnW9AtYjDt5rMfJ
aGFTGXAPGZ6k6zQZE0/YurT8ia3qjvuZm3Fw4NJrHRx7ETHRvVJDvxA6Ggsvmr20
IkFuZHJleSBBLiBDaGVybm92IDxhY2hlQG5hZ3VhbC5ydT6JAJUDBRAxybkd4mCk
8tmdCOsBAfC9A/0Z2YB/WB1y5rIcSA2RzXWZpw8fXVzBaNiPMDZih5wUwZXuKoor
xBiuvUyNsZd/wMAbxRt+bRBsjwuPyIbc2Coiu7RzvZS4cZKf8A98YYbQC09flQr+
TsGAjQJramjo0DmetKny0Ox0TP/iDJ5rzhFeXamu1N/kmPTuF+VtGy0ZcrQyQW5k
cmV5IEEuIENoZXJub3YsIEJsYWNrIE1hZ2UgPGFjaGVAYXN0cmFsLm1zay5zdT6J
AJUDBRAwKwCjn+savKgvyHcBAerVBACJ3I0WoD2G+uYxyOljtywlUWUa+PnvhaPg
Y9qjell65BowGaxappctidZT8CV1vqRPPr6dFxBfnTMUfRMdI98CnARbvLJtJMjl
qkmZZPeqEo3a+Ys2DbI3OGotPMcsPWUfeLWl9CrxZ6+s1+MtRyjlL9W56ROZr+iy
fMILDt9DMIkAlQMFEDAq/ChrWmeNgbKneQEBGKEEAKhevep8brmEULIokhKaM69q
gatqfFQiR4NLTJB1MfOFD53AHU6GErXkTQ3CvQwpqMsyb3Sfr5l1vnL8UiOk+uK7
x0iuUetZmV7Brzx4QMz5D83FPWJiD4dooMATXvWOYulKkIvQyIm07SLfovd6RUPs
e/y9985kc9IeKsjMk5lNiQCVAwUQMBq7rMUtR20Nv5BtAQFBfwP8DHCRh4VpjFlg
wU4Mci9KTbeECyMKZQDZSKXUV5YC6xv6jzFF88NztOeiysiJ8mpsXn59wcIblVJM
aWEGF3XxhZR5pt/+H07YGxBfnnJZG4HbHd2InXEj9VV0b6vGUwKYThlHVOX3H4y2
6f0qopWkHf1WWQIFhDeGWA239MlRjiuJAJUDBRAwEcybIlGW2WZtAFEBAVCTA/9g
LdqGzdkwyiuI6W3dnEY1RQ9MXusgRHeP5zuaoYbjp0ScMHmxSuTNpymgtfmyPW0Z
Hdu/P1ri+aTUC/coU02+tlnf8FkUamreYJOIAL3OzI1hDwvQB8YhQ7mCgIiOrA5M
1AgA6k2wnlL6cwCRAHhiaY2UjoZNvcPXzN+E9nq5yIkAlQIFEDAPSyXi5bvh+14V
GQEBawAD/01ioFEEpuaW1AOnIrj6MEBiORcEmYBEVcolhOWdOA4cylmqhXJb3rGd
prkzPESK7tlabmgvXRAMinWSuQE/Ypya99IwwdvloYIJBzb8/w2V9cC4e00bNiIj
RQAjCLyKH9LWWJV++eoX25Xd3eSgTtWxD04DhCjRkvaCBb7+ARpgiQCVAwUQMA7P
qrH8jId7euXhAQEi9gP+Mivxeqj/YjmCdyCFJ4VHTWfS8QsUi9oXhweh8bPLMGli
x8D7qmAUjUgz4tQXeRtSQBj/a5J/1TkQJxowJNYLBWAlU76gbTvlIcQzhu6GvO61
mIzV1PJNp6lo+lPJExRTH1kwxgmzuxuosh3V4PCsnFQ+GsE29//DZbaxgdJjxx2J
AJUDBRAwDOqAdx2Srolyx8EBAZPHBAC2B4sWLauFI52WWkNdTDP5JLpsSMVNaBGx
YUzL1Cc5yqvLDsvK4WZZ6KfiNqyNjTfcmw4N9ZA+I9U0DdQSddWD36fwC80w87wm
RG8KfV42DRVonL0nfry4CuKj3dqB3Zh/9Hmv5AS4+MiyxWTyF1zL+W4SFKJdZ/ps
sxUcQDQn44kAlQMFEDANSL7iYKTy2Z0I6wEBq0EEAIcH6q1bzzSx5EINkuOX9tPV
vXjmmjrRTu7prc8QGRjQ0Dva1YNC5E8X8Kf/T5V0U3FBSyCStvBolY6iLQpCy+U6
bdGuzEpuf268QovETHIofenGnvqS/P+URbAR4q8Er7zg9vWXOkbdbu7ZcN+LdVA9
OLflJkwAdzoLQK3+aM2ViQCVAwUQMAys8PvCP42xMxQ5AQElyQP+KThaxnObao7H
0XB6sartnByFz4mrVh43k/GnOpJ/gAbv7t0Uif6h7pfYVwjOBthj4h+aAkgcRWMM
cfn64BfJvqXiIpzz15BrA7e3zyl8cslZtPOae+DPZwyvG33gdG+CQd+9ykYSBvKV
2roQHfc66drMVx9kVEhxeTWx/IsO9gQ=
=YGYK
-----END PGP PUBLIC KEY BLOCK-----
</verb></tscreen>
<sect1><heading>&a.rich</heading><p>
<tscreen><verb>
Rich Murphey &lt;rich@FreeBSD.org&gt;
fingerprint = AF A0 60 C4 84 D6 0C 73 D1 EF C0 E9 9D 21 DB E4
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2
mQCNAy97V+MAAAEEALiNM3FCwm3qrCe81E20UOSlNclOWfZHNAyOyj1ahHeINvo1
FBF2Gd5Lbj0y8SLMno5yJ6P4F4r+x3jwHZrzAIwMs/lxDXRtB0VeVWnlj6a3Rezs
wbfaTeSVyh5JohEcKdoYiMG5wjATOwK/NAwIPthB1RzRjnEeer3HI3ZYNEOpAAUR
tCRSaWNoIE11cnBoZXkgPHJpY2hAbGFtcHJleS51dG1iLmVkdT6JAJUDBRAve15W
vccjdlg0Q6kBAZTZBACcNd/LiVnMFURPrO4pVRn1sVQeokVX7izeWQ7siE31Iy7g
Sb97WRLEYDi686osaGfsuKNA87Rm+q5F+jxeUV4w4szoqp60gGvCbD0KCB2hWraP
/2s2qdVAxhfcoTin/Qp1ZWvXxFF7imGA/IjYIfB42VkaRYu6BwLEm3YAGfGcSw==
=QoiM
-----END PGP PUBLIC KEY BLOCK-----
</verb></tscreen>
<sect1><heading>&a.peter</heading><p>
<tscreen><verb>
Peter Wemm &lt;peter@FreeBSD.org&gt;
aka &lt;peter@spinner.dialix.com&gt;
aka &lt;peter@haywire.dialix.com&gt;
aka &lt;peter@perth.dialix.oz.au&gt;
Key fingerprint = 47 05 04 CA 4C EE F8 93 F6 DB 02 92 6D F5 58 8A
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3ia
mQCNAy9/FJwAAAEEALxs9dE9tFd0Ru1TXdq301KfEoe5uYKKuldHRBOacG2Wny6/
W3Ill57hOi2+xmq5X/mHkapywxvy4cyLdt31i4GEKDvxpDvEzAYcy2n9dIup/eg2
kEhRBX9G5k/LKM4NQsRIieaIEGGgCZRm0lINqw495aZYrPpO4EqGN2HYnOMZAAUT
tCVQZXRlciBXZW1tIDxwZXRlckBoYXl3aXJlLmRpYWxpeC5jb20+iQCVAwUQMwWT
cXW7bjh2o/exAQEFkQP+LIx5zKlYp1uR24xGApMFNrNtjh+iDIWnxxb2M2Kb6x4G
9z6OmbUCoDTGrX9SSL2Usm2RD0BZfyv9D9QRWC2TSOPkPRqQgIycc11vgbLolJJN
eixqsxlFeKLGEx9eRQCCbo3dQIUjc2yaOe484QamhsK1nL5xpoNWI1P9zIOpDiGJ
AJUDBRAxsRPqSoY3Ydic4xkBAbWLA/9q1Fdnnk4unpGQsG31Qbtr4AzaQD5m/JHI
4gRmSmbj6luJMgNG3fpO06Gd/Z7uxyCJB8pTst2a8C/ljOYZxWT+5uSzkQXeMi5c
YcI1sZbUpkHtmqPW623hr1PB3ZLA1TIcTbQW+NzJsxQ1Pc6XG9fGkT9WXQW3Xhet
AP+juVTAhLQlUGV0ZXIgV2VtbSA8cGV0ZXJAcGVydGguZGlhbGl4Lm96LmF1PokA
lQMFEDGxFCFKhjdh2JzjGQEB6XkD/2HOwfuFrnQUtdwFPUkgtEqNeSr64jQ3Maz8
xgEtbaw/ym1PbhbCk311UWQq4+izZE2xktHTFClJfaMnxVIfboPyuiSF99KHiWnf
/Gspet0S7m/+RXIwZi1qSqvAanxMiA7kKgFSCmchzas8TQcyyXHtn/gl9v0khJkb
/fv3R20btB5QZXRlciBXZW1tIDxwZXRlckBGcmVlQlNELm9yZz6JAJUDBRAxsRJd
SoY3Ydic4xkBAZJUA/4i/NWHz5LIH/R4IF/3V3LleFyMFr5EPFY0/4mcv2v+ju9g
brOEM/xd4LlPrx1XqPeZ74JQ6K9mHR64RhKR7ZJJ9A+12yr5dVqihe911KyLKab9
4qZUHYi36WQu2VtLGnw/t8Jg44fQSzbBF5q9iTzcfNOYhRkSD3BdDrC3llywO7Ql
UGV0ZXIgV2VtbSA8cGV0ZXJAc3Bpbm5lci5kaWFsaXguY29tPokAlQMFEDGxEi1K
hjdh2JzjGQEBdA4EAKmNFlj8RF9HQsoI3UabnvYqAWN5wCwEB4u+Zf8zq6OHic23
TzoK1SPlmSdBE1dXXQGS6aiDkLT+xOdeewNs7nfUIcH/DBjSuklAOJzKliXPQW7E
kuKNwy4eq5bl+j3HB27i+WBXhn6OaNNQY674LGaR41EGq44Wo5ATcIicig/z
=gv+h
-----END PGP PUBLIC KEY BLOCK-----
</verb></tscreen>
<sect1><heading>&a.jmb</heading><p>
<tscreen><verb>
Jonathan M. Bresler &lt;jmb@FreeBSD.org&gt;
Key fingerprint = 31 57 41 56 06 C1 40 13 C5 1C E3 E5 DC 62 0E FB
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2
mQCNAzG2GToAAAEEANI6+4SJAAgBpl53XcfEr1M9wZyBqC0tzpie7Zm4vhv3hO8s
o5BizSbcJheQimQiZAY4OnlrCpPxijMFSaihshs/VMAz1qbisUYAMqwGEO/T4QIB
nWNo0Q/qOniLMxUrxS1RpeW5vbghErHBKUX9GVhxbiVfbwc4wAHbXdKX5jjdAAUR
tCVKb25hdGhhbiBNLiBCcmVzbGVyIDxqbWJARnJlZUJTRC5PUkc+iQCVAwUQMqyL
0LNaYutZnzI9AQF25QP9GFXhBrz2tiWz2+0gWbpcGNnyZbfsVjF6ojGDdmsjJMyW
CGw49XR/vPKYIJY9EYo4t49GIajRkISQNNiIz22fBAjT2uY9YlvnTJ9NJleMfHr4
dybo7oEKYMWWijQzGjqf2m8wf9OaaofEKwBX6nxcRbKsxm/BVLKczGYl3Xtjkcu0
E0pvbmF0aGFuIE0uIEJyZXNsZXKJAJUDBRAxti1hAdtd0pfmON0BAcQfA/98RpCh
OLvMoPVT/mRbZg8gFTIxOkuI71A6viy1iMm+EeHgSPB8a8wiFsWs8q3FI0fWzebi
MBcpeJAEMLPXsgjMvifx2W6fE0YTkwdyyalbOCDIiDjNs+o85yDiAsURawSSvajR
qTDMgZre1sK8L4hNpf+t2VZXWNpCNOpI3I9kEw==
=6F5u
-----END PGP PUBLIC KEY BLOCK-----
</verb></tscreen>
<sect1><heading>&a.jdp</heading><p>
<tscreen><verb>
John D. Polstra &lt;jdp@polstra.com&gt;
Fingerprint = 54 3A 90 59 6B A4 9D 61 BF 1D 03 09 35 8D F6 0D
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2
mQCNAzMElMEAAAEEALizp6ZW9QifQgWoFmG3cXhzQ1+Gt+a4S1adC/TdHdBvw1M/
I6Ok7TC0dKF8blW3VRgeHo4F3XhGn+n9MqIdboh4HJC5Iiy63m98sVLJSwyGO4oM
dkEGyyCLxqP6h/DU/tzNBdqFzetGtYvU4ftt3RO0a506cr2CHcdm8Q+/vPRJAAUR
tCFKb2huIEQuIFBvbHN0cmEgPGpkcEBwb2xzdHJhLmNvbT6JAJUDBRAzBNBE9RVb
+45ULV0BAWgiA/0WWO3+c3qlptPCHJ3DFm6gG/qNKsY94agL/mHOr0fxMP5l2qKX
O6a1bWkvGoYq0EwoKGFfn0QeHiCl6jVi3CdBX+W7bObMcoi+foqZ6zluOWBC1Jdk
WQ5/DeqQGYXqbYjqO8voCScTAPge3XlMwVpMZTv24u+nYxtLkE0ZcwtY9IkAlQMF
EDMEt/DHZvEPv7z0SQEBXh8D/2egM5ckIRpGz9kcFTDClgdWWtlgwC1iI2p9gEhq
aufy+FUJlZS4GSQLWB0BlrTmDC9HuyQ+KZqKFRbVZLyzkH7WFs4zDmwQryLV5wkN
C4BRRBXZfWy8s4+zT2WQD1aPO+ZsgRauYLkJgTvXTPU2JCN62Nsd8R7bJS5tuHEm
7HGmiQCVAwUQMwSvHB9/qQgDWPy9AQFAhAQAgJ1AlbKITrEoJ0+pLIsov3eQ348m
SVHEBGIkU3Xznjr8NzT9aYtq4TIzt8jplqP3QoV1ka1yYpZf0NjvfZ+ffYp/sIaU
wPbEpgtmHnVWJAebMbNs/Ad1w8GDvxEt9IaCbMJGZnHmfnEqOBIxF7VBDPHHoJxM
V31K/PIoYsHAy5w=
=cHFa
-----END PGP PUBLIC KEY BLOCK-----
</verb></tscreen>
<sect1><heading>&a.guido</heading><p>
<tscreen><verb>
Guido van Rooij &lt;guido@gvr.win.tue.nl&gt;
Fingerprint = 16 79 09 F3 C0 E4 28 A7 32 62 FA F6 60 31 C0 ED
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.2
mQCNAzGeO84AAAEEAKKAY91Na//DXwlUusr9GVESSlVwVP6DyH1wcZXhfN1fyZHq
SwhMCEdHYoojQds+VqD1iiZQvv1RLByBgj622PDAPN4+Z49HjGs7YbZsUNuQqPPU
wRPpP6ty69x1hPKq1sQIB5MS4radpCM+4wbZbhxv7l4rP3RWUbNaYutZnzI9AAUR
tCZHdWlkbyB2YW4gUm9vaWogPGd1aWRvQGd2ci53aW4udHVlLm5sPokAlQMFEDMG
Hcgff6kIA1j8vQEBbYgD/jm9xHuUuY+iXDkOzpCXBYACYEZDV913MjtyBAmaVqYo
Rh5HFimkGXe+rCo78Aau0hc57fFMTsJqnuWEqVt3GRq28hSK1FOZ7ni9/XibHcmN
rt2yugl3hYpClijo4nrDL1NxibbamkGW/vFGcljS0jqXz6NDVbGx5Oo7HBByxByz
iQCVAwUQMhmtVjt/x7zOdmsfAQFuVQQApsVUTigT5YWjQA9Nd5Z0+a/oVtZpyw5Z
OljLJP3vqJdMa6TidhfcatjHbFTve5x1dmjFgMX/MQTd8zf/+Xccy/PX4+lnKNpP
eSf1Y4aK+E8KHmBGd6GzX6CIboyGYLS9e3kGnN06F2AQtaLyJFgQ71wRaGuyKmQG
FwTn7jiKb1aJAJUDBRAyEOLXPt3iN6QQUSEBATwQA/9jqu0Nbk154+Pn+9mJX/YT
fYR2UqK/5FKCqgL5Nt/Deg2re0zMD1f8F9Dj6vuAAxq8hnOkIHKlWolMjkRKkzJi
mSPEWl3AuHJ31k948J8it4f8kq/o44usIA2KKVMlI63Q/rmNdfWCyiYQEVGcRbTm
GTdZIHYCOgV5dOo4ebFqgYkAlQMFEDIE1nMEJn15jgpJ0QEBW6kEAKqN8XSgzTqf
CrxFXT07MlHhfdbKUTNUoboxCGCLNW05vf1A8F5fdE5i14LiwkldWIzPxWD+Sa3L
fNPCfCZTaCiyGcLyTzVfBHA18MBAOOX6JiTpdcm22jLGUWBf/aJK3yz/nfbWntd/
LRHysIdVp29lP5BF+J9/Lzbb/9LxP1taiQCVAwUQMgRXZ44CzbsJWQz9AQFf7gP/
Qa2FS5S6RYKG3rYanWADVe/ikFV2lxuM1azlWbsmljXvKVWGe6cV693nS5lGGAjx
lbd2ADwXjlkNhv45HLWFm9PEveO9Jjr6tMuXVt8N2pxiX+1PLUN9CtphTIU7Yfjn
s6ryZZfwGHSfIxNGi5ua2SoXhg0svaYnxHxXmOtH24iJAJUDBRAyAkpV8qaAEa3W
TBkBARfQBAC+S3kbulEAN3SI7/A+A/dtl9DfZezT9C4SRBGsl2clQFMGIXmMQ/7v
7lLXrKQ7U2zVbgNfU8smw5h2vBIL6f1PyexSmc3mz9JY4er8KeZpcf6H0rSkHl+i
d7TF0GvuTdNPFO8hc9En+GG6QHOqbkB4NRZ6cwtfwUMhk2FHXBnjF4kAlQMFEDH5
FFukUJAsCdPmTQEBe74EAMBsxDnbD9cuI5MfF/QeTNEG4BIVUZtAkDme4Eg7zvsP
d3DeJKCGeNjiCWYrRTCGwaCWzMQk+/+MOmdkI6Oml+AIurJLoHceHS9jP1izdP7f
N2jkdeJSBsixunbQWtUElSgOQQ4iF5kqwBhxtOfEP/L9QsoydRMR1yB6WPD75H7V
iQCVAwUQMZ9YNGtaZ42Bsqd5AQH0PAQAhpVlAc3ZM/KOTywBSh8zWKVlSk3q/zGn
k7hJmFThnlhH1723+WmXE8aAPJi+VXOWJUFQgwELJ6R8jSU2qvk2m1VWyYSqRKvc
VRQMqT2wjss0GE1Ngg7tMrkRHT0il7E2xxIb8vMrIwmdkbTfYqBUhhGnsWPHZHq7
MoA1/b+rK7CJAJUDBRAxnvXh3IDyptUyfLkBAYTDA/4mEKlIP/EUX2Zmxgrd/JQB
hqcQlkTrBAaDOnOqe/4oewMKR7yaMpztYhJs97i03Vu3fgoLhDspE55ooEeHj0r4
cOdiWfYDsjSFUYSPNVhW4OSruMA3c29ynMqNHD7hpr3rcCPUi7J2RncocOcCjjK2
BQb/9IAUNeK4C9gPxMEZLokAlQMFEDGeO86zWmLrWZ8yPQEBEEID/2fPEUrSX3Yk
j5TJPFZ9MNX0lEo7AHYjnJgEbNI4pYm6C3PnMlsYfCSQDHuXmRQHAOWSdwOLvCkN
F8eDaF3M6u0urgeVJ+KVUnTz2+LZoZs12XSZKCte0HxjbvPpWMTTrYyimGezH79C
mgDVjsHaYOx3EXF0nnDmtXurGioEmW1J
=mSvM
-----END PGP PUBLIC KEY BLOCK-----
</verb></tscreen>

View file

@ -1,230 +0,0 @@
<!-- $Id: policies.sgml,v 1.13 1997/04/03 01:07:38 max Exp $ -->
<!-- The FreeBSD Documentation Project -->
<chapt><heading>Source Tree Guidelines and Policies
<label id="policies">
</heading>
<p><em>Contributed by &a.phk;.</em>
This chapter documents various guidelines and policies in force
for the FreeBSD source tree.
<sect><heading>MAINTAINER on Makefiles
<label id="policies:maintainer">
</heading>
<p>June 1996.
<p>If a particular portion of the FreeBSD distribution is being maintained by a
person or group of persons, they can communicate this fact to the
world by adding a
<verb>
MAINTAINER= email-addresses
</verb>
<p>line to the makefiles covering this portion of the source tree.
<p>The semantics of this are as follows:
<p>The maintainer owns and is responsible for that code. This means
that he is responsible for fixing bugs and answer problem reports
pertaining to that piece of the code, and in the case of contributed
software, for tracking new versions, as appropriate.
<p>Changes to directories which have a maintainer defined shall be
sent to the
maintainer for review before being committed. Only if the maintainer does not respond
for an unacceptable period of time, to several emails, will it be
acceptable to commit changes without review by the maintainer.
However, it is suggested that you try and have the changes reviewed
by someone else if at all possible.
<p>It is of course not acceptable to add a person or group as maintainer
unless they agree to assume this duty. On the other hand it doesn't
have to be a committer and it can easily be a group of people.
<sect><heading>Contributed software</heading>
<p>June 1996.
<p>Some parts of the FreeBSD distribution consist of software that
is actively being maintained outside the FreeBSD project. For
historical reasons, we call this <em>contributed</em> software. Some
examples are perl, gcc and patch.
<p>Over the last couple of years, various methods have been used in
dealing with this type of software and all have some number of
advantages and drawbacks. No clear winner has emerged.
<p>Since this is the case, after some debate one of these methods has
been selected as the "official" method and will be required for
future imports of software of this kind. Furthermore, it is strongly
suggested that existing contributed software converge on this model
over time, as it has significant advantages over the old method,
including the ability to easily obtain diffs relative to the
"official" versions of the source by everyone (even without cvs
access). This will make it significantly easier to return changes
to the primary developers of the contributed software.
<p>Ultimately, however, it comes down to the people actually doing
the work. If using this model is particularly unsuited to the
package being dealt with, exceptions to these rules may be granted
only with the approval of the core team and with the general
consensus of the other developers. The ability to maintain the
package in the future will be a key issue in the decisions.
<p>The <tt>Tcl</tt> embedded programming language will be used as example
of how this model works:
<p><verb>src/contrib/tcl</verb> contains the source as distributed by the maintainers
of this package. Parts that are entirely not applicable for FreeBSD
can be removed. In the case of Tcl, the "mac", "win" and "compat"
subdirectories were eliminated before the import
<p><verb>src/lib/libtcl</verb> contains only a "bmake style" Makefile that uses
the standard bsd.lib.mk makefile rules to produce the library and
install the documentation.
<p><verb>src/usr.bin/tclsh</verb> contains only a bmake style Makefile which will
produce and install the "tclsh" program and its associated man-pages
using the standard bsd.prog.mk rules.
<p><verb>src/tools/tools/tcl_bmake</verb> contains a couple of shell-scripts that can be of help
when the tcl software needs updated, these are not part of the
build or installed software.
<p>The important thing here is that the "src/contrib/tcl" directory
is created according to the rules: It is supposed to contain the
sources as distributed (on a proper CVS vendor-branch) with as few
FreeBSD-specific changes as possible. The 'easy-import' tool on
freefall will assist in doing the import, but if there are any
doubts on how to go about it, it is imperative that you ask first
and not blunder ahead and hope it "works out". CVS is not forgiving
of import accidents and a fair amount of effort is required to back
out major mistakes.
<p>Because of some unfortunate design limitations with CVS's vendor
branches, it is required that "official" patches from the vendor
be applied to the original distributed sources and the result
re-imported onto the vendor branch again. Official patches should
never be patched into the FreeBSD checked out version and
"committed", as this destroys the vendor branch coherency and makes
importing future versions rather difficult as there will be conflicts.
<p>Since many packages contain files that are meant for compatibility
with other architectures and environments that FreeBSD, it is
permissible to remove parts of the distribution tree that are of no interest
to FreeBSD in order to save space. Files containing copyright
notices and release-note kind of information applicable to the
remaining files shall <em>not</em> be removed.
<p>If it seems easier, the "bmake" makefiles can be produced from the
dist tree automatically by some utility, something which would
hopefully make it even easier to upgrade to a new version. If this
is done, be sure to check in such utilities (as necessary) in the
src/tools directory along with the port itself so that it is available
to future maintainers.
<p>In the src/contrib/tcl level directory, a file called FREEBSD-upgrade
should be added and it should states things like:
<itemize>
<item> Which files have been left out
<item> Where the original distribution was obtained from and/or the official
master site.
<item> Where to send patches back to the original authors
<item> Perhaps an overview of the FreeBSD-specific changes that have been made.
</itemize>
<p>However, please do not import FREEBSD-upgrade with the contributed source.
Rather you should ``cvs add FREEBSD-upgrade ; cvs ci'' after the
initial import. Example wording from ``src/contrib/cpio'' is below:
<verb>This directory contains virgin sources of the original distribution files
on a "vendor" branch. Do not, under any circumstances, attempt to upgrade
the files in this directory via patches and a cvs commit. New versions or
official-patch versions must be imported.
For the import of GNU cpio 2.4.2, the following files were removed:
INSTALL cpio.info mkdir.c
Makefile.in cpio.texi mkinstalldirs
To upgrade to a newer version of cpio, when it is available:
1. Unpack the new version into an empty directory.
[Do not make ANY changes to the files.]
2. Remove the files listed above and any others that don't apply to
FreeBSD.
3. Use the command:
cvs import -m 'Virgin import of GNU cpio v<version>' \
src/contrib/cpio GNU v<version>
For example, to do the import of version 2.4.2, I typed:
cvs import -m 'Virgin import of GNU v2.4.2' \
src/contrib/cpio GNU v2.4.2
4. Follow the instructions printed out in step 3 to resolve any
conflicts between local FreeBSD changes and the newer version.
Do not, under any circumstances, deviate from this procedure.
To make local changes to cpio, simply patch and commit to the main
branch (aka HEAD). Never make local changes on the GNU branch.
All local changes should be submitted to "cpio@gnu.ai.mit.edu" for
inclusion in the next vendor release.
obrien@freebsd.org - 30 March 1997</verb>
<sect><heading>Shared libraries
<label id="policies:shlib">
</heading>
<p><em>Contributed by &a.asami;, &a.peter;, and &a.obrien;.
<newline>9 December 1996.</em></p>
<p>If you are adding shared library support to a port or other piece
of software that doesn't have one, the version numbers should
follow these rules. Generally, the resulting numbers will have
nothing to do with the release version of the software.
<p>The three principles of shared library building are:
<itemize>
<item>Start from 1.0
<item>If there is a change that is backwards compatible, bump
minor number
<item>If there is an incompatible change, bump major number
</itemize>
<p>For instance, added functions and bugfixes result in the minor
version number being bumped, while deleted functions, changed
function call syntax etc. will force the major version number
to change.
<p>Stick to version numbers of the form major.minor (x.y). Our dynamic
linker does not handle version numbers of the form x.y.z well. Any
version number after the ``y'' (ie. the third digit) is totally ignored
when comparing shared lib version numbers to decide which library to
link with. Given two shared libraries that differ only in the `micro'
revision, ld.so will link with the higher one. Ie: if you link with
libfoo.so.3.3.3, the linker only records 3.3 in the headers, and will
link with anything starting with libfoo.so.3.(anything >= 3).(highest
available).
<p>Note that ld.so will always use the highest "minor" revision.
Ie: it will use libc.so.2.2 in preference to libc.so.2.0, even if the
program was initially linked with libc.so.2.0.
<p>For non-port libraries, it is also our policy to change the
shared library version number only once between releases. When
you make a change to a system library that requires the version
number to be bumped, check the Makefile's commit logs. It is the
responsibility of the committer to ensure that the first such
change since the release will result in the shared library version
number in the Makefile to be updated, and any subsequent changes
will not.

File diff suppressed because it is too large Load diff

View file

@ -1,847 +0,0 @@
<!-- $Id: ports.sgml,v 1.24 1997/03/08 11:44:08 jkh Exp $ -->
<!-- The FreeBSD Documentation Project -->
<chapt><heading>Installing Applications: The Ports collection<label id="ports"></heading>
<p><em>Contributed by &a.jraynard;.</em>
The FreeBSD Ports collection allows you to compile and install a very
wide range of applications with a minimum of effort.
<p> For all the hype about open standards, getting a program to work
on different versions of Unix in the real world can be a tedious and
tricky business, as anyone who has tried it will know. You may be lucky
enough to find that the program you want will compile cleanly on your
system, install itself in all the right places and run flawlessly
``out of the box'', but this is unfortunately rather rare. With most
programs, you will find yourself doing a fair bit of head-scratching,
and there are quite a few programs that will result in premature
greying, or even chronic alopecia...
<p> Some software distributions have attacked this problem by
providing configuration scripts. Some of these are very clever, but
they have an unfortunate tendency to triumphantly announce that your
system is something you have never heard of and then ask you lots of
questions that sound like a final exam in system-level Unix
programming (``Does your system's gethitlist function return a const
pointer to a fromboz or a pointer to a const fromboz? Do you have
Foonix style unacceptable exception handling? And if not, why not?'').
<p> Fortunately, with the Ports collection, all the hard work involved
has already been done, and you can just type 'make install' and get a
working program.
<sect><heading>Why have a Ports Collection?</heading>
<p>The base FreeBSD system comes with a very wide range of tools and
system utilities, but a lot of popular programs are not in the base
system, for good reasons:-
<enum>
<item>``I can not live without x y and z on my system'' type programs
(eg a certain Lisp-based editor, or the mtools set of programs for
dealing with DOS floppy disks), because it is too subjective (many
people can not stand Emacs and/or never use DOS floppies and seem none
the worse for it).
<item>Too specialised to put in the base system (CAD, databases).
<item>Programs which fall into the ``I would not mind having a look at
that when I get a spare minute'' category, rather than system-critical
ones (some languages, perhaps).
<item>``Wow fab this is way cool'' fun type programs that could not
possibly be supplied with a serious operating system like FreeBSD ;-)
<item>However many programs you put in the base system, people will
always want more, and a line has to be drawn somewhere (otherwise
FreeBSD distributions would become absolutely enormous).
</enum>
<p> Obviously it would be unreasonable to expect everyone to port their
favourite programs by hand (not to mention a tremendous amount of
duplicated work), so the FreeBSD Project came up with an ingenious
way of using standard tools that would automate the process.
<p> Incidentally, this is an excellent illustration of how ``the Unix way''
works in practice by combining a set of simple but very flexible tools
into something very powerful.
<sect><heading> How does the Ports collection work?</heading>
<p>
Programs are typically distributed on the Internet as a
<ref id="ports:tarball" name="tarball"> consisting of
a Makefile and the source code for the program and usually
some instructions (which are unfortunately not always as instructive
as they could be), with perhaps a configuration script.
<p>
The standard scenario is that you FTP down the tarball, extract it
somewhere, glance through the instructions, make any changes that seem
necessary, run the configure script to set things up and use the standard
`make' program to compile and install the program from the source.
<p>
FreeBSD ports still use the tarball mechanism, but use a
<ref id="ports:skeleton" name="skeleton"> to hold the &quot;knowledge&quot;
of how to get the program working on FreeBSD, rather than expecting the
user to be able to work it out. They also supply their own customised
<ref id="ports:makefile" name="Makefile">, so that almost every port
can be built in the same way.
<p>
If you look at a port skeleton (either on <htmlurl
url="file://localhost/usr/ports/shells/bash" name="your FreeBSD
system"> or <htmlurl
url="ftp://ftp.freebsd.org/pub/FreeBSD/ports/shells/bash" name="the
FTP site">) and expect to find all sorts of pointy-headed rocket
science lurking there, you may be disappointed by the one or two
rather unexciting-looking files and directories you find there.
(We will discuss in a minute how to go about <ref id="ports:getting"
name="Getting a port">).
<p>``How on earth can this do anything?'' I hear you cry. ``There
is not even any source code there!''
<p> Fear not, gentle reader, all will become clear (hopefully). Let's
see what happens if we try and install a port. I have chosen `bash', also
known as the Bourne-Again Shell, as that seems fairly typical.
<em>Note</em> if you are trying this at home, you will need to be root.
<verb>
# cd /usr/ports/shells/bash
# make install
Checksums OK.
===> Extracting for bash-1.14.5
===> Patching for bash-1.14.5
===> Applying FreeBSD patches for bash-1.14.5
===> Configuring for bash-1.14.5
===> Building for bash-1.14.5
[lots and lots of compiler output here...]
===> Installing for bash-1.14.5
make -f bash-Makefile bindir=/usr/local/bin prefix=/usr/local install
(cd ./documentation/; make )
rm -f builtins.txt
nroff -man builtins.1 > builtins.txt
install -c -o bin -g bin -m 555 bash /usr/local/bin/bash
install -c -o bin -g bin -m 555 bashbug /usr/local/bin/bashbug
( cd ./documentation/ ; make mandir=/usr/local/man/man1 man3dir=/usr/local/man/man3 infodir=/usr/local/info install )
[ -d /usr/local/man/man1 ] || mkdir /usr/local/man/man1
[ -d /usr/local/info ] || mkdir /usr/local/info
../support/install.sh -c -m 644 bash.1 /usr/local/man/man1
../support/install.sh -c -m 644 builtins.1 /usr/local/man/man1/bash_builtins.1
../support/install.sh -c -m 644 features.info /usr/local/info/bash.info
gzip -9nf /usr/local/man/man1/bash.1 /usr/local/man/man1/bash_builtins.1
===> Registering installation for bash-1.14.5
</verb>
<p> To avoid confusing the issue, I have slightly pruned the install
output, as well as completely removing the build output. If you tried
this yourself, you may well have got something like this at the start:-
<label id="ports:fetch">
<verb>
>> bash-1.14.5.tar.gz doesn't seem to exist on this system.
>> Attempting to fetch from ftp://slc2.ins.cwru.edu/pub/dist/.
</verb>
<p> The `make' program has noticed that you did not have a local copy
of the source code and tried to FTP it down so it could get the job
done (are you starting to feel impressed? 8-)). I already had the
source handy in my example, so it did not need to fetch it.
<p> Let's go through this and see what the `make' program was doing.
<enum>
<item> Locate the source code <ref id="ports:tarball"
name="tarball."> If it is not available locally, try to grab it from an
FTP site.
<item> Run a <ref id="ports:checksum" name="checksum"> test on the
tarball to make sure it has not been tampered with, accidentally
truncated, struck by neutrinos while in transit, etc.
<item> Extract the tarball into a temporary work directory.
<item> Apply any <ref id="ports:patch" name="patches"> needed to get
the source to compile and run under FreeBSD.
<item> Run any configuration script required by the build process and
correctly answer any questions it asks.
<item> (Finally!) Compile the code.
<item> Install the program executable and other supporting files, man
pages, etc. under the /usr/local hierarchy, where they will not get mixed
up with system programs. This also makes sure that all the ports you
install will go in the same place, instead of being flung all over
your system.
<item> Register the installation in a database. This means
that, if you do not like the program, you can cleanly <ref
id="ports:remove" name="remove"> all traces of it from your system.
</enum>
<p> See if you can match these steps to the make output. And if you
were not impressed before, you should be by now!
<sect><heading>Getting a FreeBSD Port<label id="ports:getting"></heading>
<p>
There are two ways of getting hold of the FreeBSD port for a
program. One requires a <ref id="ports:cd" name="FreeBSD
CDROM">, the other involves using an <ref id="ports:inet"
name="Internet Connection.">
<sect1><heading>Compiling ports from CDROM<label id="ports:cd"></heading>
<p>
If you answered yes to the question ``Do you want to link the ports
collection to your CDROM'' during the FreeBSD installation, the initial
setting up will already have been done for you.
<p>
If not, make sure the <em /FreeBSD/ CDROM is in the drive and mounted on,
say, /cdrom. Then do
<verb>
# mkdir /usr/ports
# cd /usr/ports
# ln -s /cdrom/ports/distfiles distfiles
</verb>
to enable the ports make mechanism to find the tarballs (it expects to
find them in /usr/ports/distfiles, which is why we sym-linked the
CDROM's tarball directory to there).
<p>
Now, suppose you want to install the gnats program from the databases
directory. Here is how to do it:-
<verb>
# cd /usr/ports
# mkdir databases
# cp -R /cdrom/ports/databases/gnats databases
# cd databases/gnats
# make install
</verb>
Or if you are a serious database user and you want to compare all the
ones available in the Ports collection, do
<verb>
# cd /usr/ports
# cp -R /cdrom/ports/databases .
# cd databases
# make install
</verb>
(yes, that really is a dot on its own after the cp command and not a
mistake. It is Unix-ese for ``the current directory'')
<p>
and the ports make mechanism will automatically compile and install
all the ports in the databases directory for you!
<p>
If you do not like this method, here is a completely different way of
doing it:-
<p>
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, create a directory there and then cd to it. Then
invoke the <tt>lndir(1)</tt> command with the full pathname of the ``ports''
directory on the CDROM as the first argument and . (the current directory)
as the second. This might be, for example, something like:
<verb>
lndir /cdrom/ports .
</verb>
<p>Then you can build ports directly off the CDROM by building them in the
link tree you have created.
<p>
Note that there are some ports for which we cannot provide the original
source in the CDROM due to licensing limitations. In that case,
you will need to look at the section on <ref id="ports:inet"
name="Compiling ports using an Internet connection.">
<sect1><heading>Compiling ports from the Internet<label
id="ports:inet"></heading>
<p>
If you do not have a CDROM, or you want to make sure you get the very
latest version of the port you want, you will need to download the
<ref id="ports:skeleton" name="skeleton"> for the port. Now this
might sound like rather a fiddly job
full of pitfalls, like downloading the patches into the pkg
sub-directory by mistake, but it is actually very easy.
<p>
The key to it is that the FreeBSD FTP server can create on-the-fly
<ref id="ports:tarball" name="tarballs"> for you. Here is how it works,
with the gnats program in the databases directory as an example (the
bits in square brackets are comments, do not type them in if you are
trying this yourself!):-
<verb>
# cd /usr/ports
# mkdir databases
# cd databases
# ftp ftp.freebsd.org
[log in as `ftp' and give your email address when asked for a
password. Remember to use binary (aka image) mode!]
> cd /pub/FreeBSD/ports/databases
> get gnats.tar.gz [tarballs up the gnats skeleton for us]
> quit
# tar xzf gnats.tar.gz [extract the gnats skeleton]
# cd gnats
# make install [build and install gnats]
</verb>
What happened here? We connected to the FTP server in the usual way
and went to its databases sub-directory. When we gave it the command
`get gnats.tar.gz', the FTP server <ref id="ports:tarball"
name="tarballed"> up the gnats directory for us and even went to the
trouble of compressing it before sending it so we could get our hands
on it a little quicker.
<p>
We then extracted the gnats skeleton and went into the gnats directory
to build the port. As we explained <ref id="ports:fetch"
name="earlier">, the make process noticed we did not have a copy of the
source locally, so it fetched one before extracting, patching and
building it.
<p>
Let's try something more ambitious now. Instead of getting a single
port skeleton, let's get a whole sub-directory, for example all the
database skeletons in the ports collection. It looks almost the same:-
<verb>
# cd /usr/ports
# ftp ftp.freebsd.org
[log in as `ftp' and give your email address when asked for a
password. Remember to use binary (aka image) mode!]
> cd /pub/FreeBSD/ports
> get databases.tar.gz [tarballs up the databases directory for us]
> quit
# tar xzf databases.tar.gz [extract all the database skeletons]
# cd databases
# make install [build and install all the database ports]
</verb>
With half a dozen straightforward commands, we have now got a set of
database programs on our FreeBSD machine! All we did that was
different from getting a single port skeleton and building it was that
we got a whole directory at once, and compiled everything in it at
once. Pretty impressive, no?
<p>
If you expect to be installing more than one or two ports, it is
probably worth downloading all the ports directories - this involves
downloading 2 or 3MB, when they are compressed. However, don't get
carried away and type 'get ports.tar.gz' unless you are prepared to
download the distfiles directory as well - this contains the source
code for every single port and will take a very long time to download!
<sect><heading>Skeletons<label id="ports:skeleton"></heading>
<p>
A team of compulsive hackers who have forgotten to eat in a frantic
attempt to make a deadline? Something unpleasant lurking in the FreeBSD
attic? No, a skeleton here is a minimal framework that supplies everything
needed to make the ports magic work.
<sect1><heading>Makefile<label id="ports:makefile"></heading>
<p>
The most important component of a skeleton is the Makefile. This contains
various statements that specify how the port should be compiled and
installed. Here is the Makefile for bash:-
<verb>
# New ports collection makefile for: bash
# Version required: 1.14.5
# Date created: 21 August 1994
# Whom: jkh
#
# Makefile,v 1.13 1995/10/04 14:45:01 asami Exp
#
DISTNAME= bash-1.14.5
CATEGORIES= shells
MASTER_SITES= ftp://slc2.ins.cwru.edu/pub/dist/
MAINTAINER= ache@FreeBSD.ORG
post-install:
.if !defined(NOMANCOMPRESS)
gzip -9nf ${PREFIX}/man/man1/bash.1 ${PREFIX}/man/man1/bash_builtins.1
.endif
.include &lt;bsd.port.mk>
</verb>
The lines beginning with a &quot;#&quot; sign are comments for the benefit
of human readers (as in most Unix script files).
<p>
`DISTNAME&quot; specifies the name of the <ref id="ports:tarball"
name="tarball">, but without the extension.
<p>
`CATEGORIES&quot; states what kind of program this is.
<p>
`MASTER_SITES&quot; is the URL(s) of the master FTP site, which is
used to retrieve the <ref id="ports:tarball" name="tarball"> if it is not
available on the local system. This is a site which is regarded as
reputable, and is normally the one from which the program is officially
distributed (in so far as any software is &quot;officially&quot; distributed
on the Internet).
<p>
`MAINTAINER&quot; is the email address of the person who is
responsible for updating the skeleton if, for example a new version
of the program comes out. (Note: The title of &quot;maintainer&quot;
is mainly an administrative one; it does <em /not/ mean the person
concerned is responsible for supporting the program. If you have any
<ref id="ports:kaput" name="problems with a port,"> please mail
&a.ports; and <em /not/ the maintainer. Thank you!)
<p>
Skipping over the next few lines for a minute, the line
<verb>
.include <bsd.port.mk>
</verb>
says that the other statements and commands
needed for this port are in a standard file called
`bsd.port.mk&quot;. As these are the same for all ports, there is
no point in duplicating them all over the place, so they are kept in a
single standard file.
<p>
This is probably not the place to go into a detailed examination of
how Makefiles work; suffice it to say that the lines starting with
`post-install&quot; over-ride the instructions in bsd.port.mk
about what to do after installing the program, so that the man pages
can be compressed after they have been put in their final destination.
<sect1><heading>The files directory</heading>
<p>
The file containing the <ref id="ports:checksum" name="checksum"> for
the port is called &quot;md5&quot;, after the MD5 algorithm
used for ports checksums. It lives in a directory with the slightly
confusing name of &quot;files&quot;.
<p>
This directory can also contain other miscellaneous files that are required
by the port and do not belong anywhere else.
<sect1><heading>The patches directory</heading>
<p>
This directory contains the <ref id="ports:patch" name="patches"> needed
to make everything work properly under FreeBSD.
<sect1><heading>The pkg directory</heading>
<p>
This program contains three quite useful files:-
<itemize>
<item>
COMMENT - a one-line description of the program.
<item>
DESCR - a more detailed description.
<item>
PLIST - a list of all the files that will be created when the program is installed.
</itemize>
<sect><heading>It does not work?!<label id="ports:kaput"></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 do not believe me, check
the catalogue, especially the line saying "We cannot offer tech-support
on this product")
The e-mail address is the &a.ports;. Please include
details of the port, where you got both the port source &amp;
distfile(s) from, and what the error was.
Note: At time of writing, lang/Sather does not seem to work on Pentium
machines due to the Intel Curse (aka the Floating Point Division Bug).
Please do not tell us about this - gripe to Intel instead - it is 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 on FreeBSD's FTP server in the <htmlurl
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/packages/"
name="packages directory.">
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>
dddprogram to install them to your system.
</enum>
<sect><heading>I have this program that I would like to make into a port...</heading>
<p>Great! Please see the <ref id="porting:starting" name="guidelines">
for detailed instructions on how to do this.
<sect><heading>Some Questions and Answers</heading>
<p>
<itemize>
<item>
Q. I thought this was going to be a discussion about modems??!
<p>
A. Ah. You must be thinking of the serial ports on the back of your
computer. We are using `port' here to mean the result of `porting' a
program from one version of Unix to another. (It is an unfortunate bad
habit of computer people to use the same word to refer to several
completely different things).
<item>
Q. I thought you were supposed to use packages to install extra
programs?
<p>
A. Yes, that is usually the quickest and easiest way of doing it.
<item>
Q. So why bother with ports then?
<p>
A. Several reasons:-
<enum>
<item> The licensing conditions on some software distributions
require that they be distributed as source code, not binaries.
<item> Some people do not trust binary distributions. At least with
source code you can (in theory) read through it and look for potential
problems yourself.
<item> If you have some local patches, you will need the source to add
them yourself.
<item> You might have opinions on how a program should be compiled
that differ from the person who did the package - some people have
strong views on what optimisation setting should be used, whether to
build debug versions and then strip them or not, etc. etc.
<item> Some people like having code around, so they can read it if
they get bored, hack around with it, borrow from it (licence terms
permitting, of course!) and so on.
<item> If you ain't got the source, it ain't software! ;-)
</enum>
<item><label id="ports:patch">
Q. What is a patch?
<p>
A. A patch is a small (usually) file that specifies how to go from one
version of a file to another. It contains text that says, in effect,
things like ``delete line 23'', ``add these two lines after line 468''
or ``change line 197 to this''. Also known as a `diff', since it is
generated by a program of that name.
<item><label id="ports:tarball">
Q. What is all this about tarballs?
<p>
A. It is a file ending in .tar.gz (with variations like .tar.Z, or
even .tgz if you are trying to squeeze the names into a DOS filesystem).
<p>
Basically, it is a directory tree that has been archived into a single
file (.tar) and then compressed (.gz). This technique was originally
used for <em /T/ape <em /AR/chives (hence the name `tar'), but it is a
widely used way of distributing program source code around the
Internet.
<p>
You can see what files are in them, or even extract them yourself, by
using the standard Unix tar program, which comes with the base FreeBSD
system, like this:-
<verb>
tar tvzf foobar.tar.gz # View contents of foobar.tar.gz
tar xzvf foobar.tar.gz # Extract contents into the current directory
</verb>
<item><label id="ports:checksum">
Q. And a checksum?
<p>
A. It is a number generated by adding up all the data in the file you
want to check. If any of the characters change, the checksum will no
longer be equal to the total, so a simple comparison will allow you to
spot the difference. (In practice, it is done in a more complicated way
to spot problems like position-swapping, which will not show up with a
simplistic addition).
<item>
Q. I did what you said for <ref id="ports:cd" name="compiling ports
from a CDROM"> and it worked great until I tried to install the kermit
port:-
<verb>
# make install
>> cku190.tar.gz doesn't seem to exist on this system.
>> Attempting to fetch from ftp://kermit.columbia.edu/kermit/archives/.
</verb>
Why can it not be found? Have I got a dud CDROM?
<p>
A. The licensing terms for kermit do not allow us to put the tarball
for it on the CDROM, so you will have to fetch it by hand - sorry!
The reason why you got all those error messages was because you
were not connected to the Internet at the time. Once you have downloaded
it from any of the sites above, you can re-start the process (try and
choose the nearest site to you, though, to save your time and the
Internet's bandwidth).
<item>
Q. I did that, but when I tried to put it into /usr/ports/distfiles I
got some error about not having permission.
<p>
A. The ports mechanism looks for the tarball in /usr/ports/distfiles,
but you will not be able to copy anything there because it is sym-linked
to the CDROM, which is read-only. You can tell it to look somewhere
else by doing
<verb>
DISTDIR=/where/you/put/it make install
</verb>
<item>
Q. Does the ports scheme only work if you have everything in
/usr/ports? My system administrator says I must put everything under
/u/people/guests/wurzburger, but it does not seem to work.
<p>
A. You can use the PORTSDIR and PREFIX variables to tell the ports
mechanism to use different directories. For instance,
<verb>
PORTSDIR=/u/people/guests/wurzburger/ports make install
</verb>
will compile the port in /u/people/guests/wurzburger/ports and install
everything under /usr/local.
<verb>
PREFIX=/u/people/guests/wurzburger/local make install
</verb>
will compile it in /usr/ports and install it in
/u/people/guests/wurzburger/local.
And of course
<verb>
PORTSDIR=.../ports PREFIX=.../local make install
</verb>
will combine the two (it is too long to fit on the page if I write it
in full, but I am sure you get the idea).
<p>
If you do not fancy typing all that in every time you install a port
(and to be honest, who would?), it is a good idea to put these variables
into your environment.
<item>
Q. I do not have a FreeBSD CDROM, but I would like to have all the tarballs
handy on my system so I do not have to wait for a download every time I
install a port. Is there an easy way to get them all at once?
<p>
A. To get every single tarball for the ports collection, do
<verb>
# cd /usr/ports
# make fetch
</verb>
For all the tarballs for a single ports directory, do
<verb>
# cd /usr/ports/directory
# make fetch
</verb>
and for just one port - well, I think you have guessed already.
<item>
Q. I know it is probably faster to fetch the tarballs from one of the
FreeBSD mirror sites close by. Is there any way to tell the port to
fetch them from servers other than ones listed in the MASTER_SITES?
<p>
A. Yes. If you know, for example, ftp.FreeBSD.ORG is much closer than
sites listed in MASTER_SITES, do as following example.
<verb>
# cd /usr/ports/directory
# make MASTER_SITE_OVERRIDE=ftp://ftp.FreeBSD.ORG/pub/FreeBSD/distfiles/ fetch
</verb>
<item>
Q. I want to know what files make is going to need before it tries to
pull them down.
<p>
A. 'make fetch-list' will display a list of the files needed for a port.
<item>
Q. Is there any way to stop the port from compiling? I want to do some
hacking on the source before I install it, but it is a bit tiresome having
to watch it and hit control-C every time.
<p>
A. Doing 'make extract' will stop it after it has fetched and
extracted the source code.
<item>
Q. I am trying to make my own port and I want to be able to stop it
compiling until I have had a chance to see if my patches worked properly.
Is there something like 'make extract', but for patches?
<p>
A. Yep, 'make patch' is what you want. And by the way, thank you for
your efforts!
<item>
Q. I have heard that some compiler options can cause bugs. Is this true?
How can I make sure that I compile ports with the right settings?
<p>
A. Yes, with version 2.6.3 of gcc (the version shipped with FreeBSD
2.1.0 and 2.1.5), the -O2 option could result in buggy code unless you
used the -fno-strength-reduce option as well. (Most of the ports don't
use -O2). You <em /should/ be able to specify the compiler options
used by something like
<verb>
# CFLAGS='-O2 -fno-strength-reduce' make install
</verb>
or by editing /etc/make.conf, but this does not always seem to get
picked up. The surest way is to do 'make configure', then go into the
source directory and inspect the Makefiles by hand, but this can get
tedious if the source has lots of sub-directories, each with their own
Makefiles.
<item>
Q. There are so many ports it is hard to find the one I want. Is there a
list anywhere of what ports are available?
<p>
A. Look in the INDEX file in /usr/ports.
<item>
Q. I went to install the 'foo' port but the system suddenly stopped
and starting compiling the 'bar' port. What's going on?
<p>
A. The 'foo' port needs something that is supplied with 'bar' - for
instance, if 'foo' uses graphics, 'bar' might have a library with
useful graphics processing routines. Or 'bar' might be a tool that is
needed to compile the 'foo' port.
<item><label id="ports:remove">
Q. I installed the grizzle program from the ports and frankly it is a
complete waste of disk space. I want to delete it but I do not know
where it put all the files. Any clues?
<p>
A. No problem, just do
<verb>
pkg_delete grizzle-6.5
</verb>
<item>
Q. Hang on a minute, you have to know the version number to use that
command. You do not seriously expect me to remember that, do you??
<p>
A. Not at all, you can find it out by doing
<verb>
pkg_info -a | grep grizzle
</verb>
And it will tell you:-
<verb>
Information for grizzle-6.5:
grizzle-6.5 - the combined piano tutorial, LOGO interpreter and shoot 'em up arcade game.
</verb>
<item>
Q. Talking of disk space, the ports directory seems to be taking up
an awful lot of room. Is it safe to go in there and delete things?
<p>
A. Yes, if you have installed the program and are fairly certain you
will not need the source again, there is no point in keeping it hanging
around. The best way to do this is
<verb>
# cd /usr/ports
# make clean
</verb>
which will go through all the ports subdirectories and delete
everything except the skeletons for each port.
<item>
Q. I tried that and it still left all those tarballs or whatever you
called them in the distfiles directory. Can I delete those as well?
<p>
A. Yes, if you are sure you have finished with them, those can go as
well.
<item>
Q. I like having lots and lots of programs to play with. Is there any
way of installing all the ports in one go?
<p>
A. Just do
<verb>
# cd /usr/ports
# make install
</verb>
<item>
Q. OK, I tried that, but I thought it would take a very long time so I
went to bed and left it to get on with it. When I looked at the
computer this morning, it had only done three and a half ports. Did
something go wrong?
<p>
A. No, the problem is that some of the ports need to ask you questions
that we can not answer for you (eg ``Do you want to print on A4 or US
letter sized paper?'') and they need to have someone on hand to answer
them.
<item>
Q. I really do not want to spend all day staring at the monitor. Any
better ideas?
<p>
A. OK, do this before you go to bed/work/the local park:-
<verb>
# cd /usr/ports
# make -DBATCH install
</verb>
This will install every port that does <em /not/ require user
input. Then, when you come back, do
<verb>
# cd /usr/ports
# make -DIS_INTERACTIVE install
</verb>
to finish the job.
<item>
Q. At work, we are using frobble, which is in your ports collection,
but we have altered it quite a bit to get it to do what we need. Is
there any way of making our own packages, so we can distribute it more
easily around our sites?
<p>
A. No problem, assuming you know how to make patches for your changes:-
<verb>
# cd /usr/ports/somewhere/frobble
# make extract
# cd work/frobble-2.8
[Apply your patches]
# cd ../..
# make package
</verb>
<item>
Q. This ports stuff is really clever. I am desperate to find out how
you did it. What is the secret?
<p>
A. Nothing secret about it at all, just look at the bsd.ports.mk and
bsd.ports.subdir.mk files in your <htmlurl
url="file://localhost/usr/share/mk/" name="makefiles directory.">
(Note: readers with an aversion to intricate shell-scripts are advised
not to follow this link...)
</itemize>

View file

@ -1,427 +0,0 @@
<!-- $Id$ -->
<!-- The FreeBSD Documentation Project -->
<sect><heading>Setting up kernel PPP<label id="ppp"></heading>
<p><em>Contributed by &a.gena;.</em>
Before you start setting up PPP on your machine make
sure that pppd is located in /usr/sbin and directory /etc/ppp
exists.
pppd can work in two modes:
<enum>
<item> as a "client" , i.e. you want to connect your machine to outside
world via PPP serial connection or modem line.
<item> as a "server" , i.e. your machine is located on the network and
used to connect other computers using PPP.
</enum>
In both cases you will need to set up an options file (<tt>/etc/ppp/options</tt>
or <tt>~/.ppprc</tt> if you have more then one user on your machine that uses
PPP).
You also will need some modem/serial software ( preferably kermit )
so you can dial and establish connection with remote host.
<sect1><heading>Working as a PPP client</heading>
<p>I used the following <tt>/etc/ppp/options</tt> to connect to CISCO terminal
server PPP line.
<verb>
crtscts # enable hardware flow control
modem # modem control line
noipdefault # remote PPP server must supply your IP address.
# if the remote host doesn't send your IP during IPCP
# negotiation , remove this option
passive # wait for LCP packets
domain ppp.foo.com # put your domain name here
:<remote_ip> # put the IP of remote PPP host here
# it will be used to route packets via PPP link
# if you didn't specified the noipdefault option
# change this line to <local_ip>:<remote_ip>
defaultroute # put this if you want that PPP server will be your
# default router
</verb>
To connect:
<enum>
<item> Dial to the remote host using kermit ( or other modem program )
enter your user name and password ( or whatever is needed to enable PPP
on the remote host )
<item> Exit kermit. ( without hanging up the line )
<item> enter:
<verb>
/usr/src/usr.sbin/pppd.new/pppd /dev/tty01 19200
</verb>
( put the appropriate speed and device name )
</enum>
Now your computer is connected with PPP. If the connection fails for some
reasons you can add the "debug" option to the <tt>/etc/ppp/options</tt> file
and check messages on the console to track the problem
Following <tt>/etc/ppp/pppup</tt> script will make all 3 stages automatically:
<verb>
#!/bin/sh
ps ax |grep pppd |grep -v grep
pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
if [ "X${pid}" != "X" ] ; then
echo 'killing pppd, PID=' ${pid}
kill ${pid}
fi
ps ax |grep kermit |grep -v grep
pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
if [ "X${pid}" != "X" ] ; then
echo 'killing kermit, PID=' ${pid}
kill -9 ${pid}
fi
ifconfig ppp0 down
ifconfig ppp0 delete
kermit -y /etc/ppp/kermit.dial
pppd /dev/tty01 19200
</verb>
<tt>/etc/ppp/kermit.dial</tt> is kermit script that dials and makes all
necessary authorization on the remote host.
( Example of such script is attached to the end of this document )
Use the following <tt>/etc/ppp/pppdown</tt> script to disconnect the PPP line:
<verb>
#!/bin/sh
pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
if [ X${pid} != "X" ] ; then
echo 'killing pppd, PID=' ${pid}
kill -TERM ${pid}
fi
ps ax |grep kermit |grep -v grep
pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
if [ "X${pid}" != "X" ] ; then
echo 'killing kermit, PID=' ${pid}
kill -9 ${pid}
fi
/sbin/ifconfig ppp0 down
/sbin/ifconfig ppp0 delete
kermit -y /etc/ppp/kermit.hup
/etc/ppp/ppptest
</verb>
Check if PPP is still running (<tt>/usr/etc/ppp/ppptest</tt>):
<verb>
#!/bin/sh
pid=`ps ax| grep pppd |grep -v grep|awk '{print $1;}'`
if [ X${pid} != "X" ] ; then
echo 'pppd running: PID=' ${pid-NONE}
else
echo 'No pppd running.'
fi
set -x
netstat -n -I ppp0
ifconfig ppp0
</verb>
Hangs up modem line (<tt>/etc/ppp/kermit.hup</tt>):
<verb>
set line /dev/tty01 ; put your modem device here
set speed 19200
set file type binary
set file names literal
set win 8
set rec pack 1024
set send pack 1024
set block 3
set term bytesize 8
set command bytesize 8
set flow none
pau 1
out +++
inp 5 OK
out ATH0\13
echo \13
exit
</verb>
<p>Here is an alternate method using <tt>chat</tt> instead of
<tt>kermit</tt>.
<em>Contributed by &a.rhuff;.</em>
<p>The following two files are sufficient to accomplish a pppd
connection.
<p><tt>/etc/ppp/options</tt>:
<verb>
/dev/cuaa1 115200
crtscts # enable hardware flow control
modem # modem control line
connect "/usr/bin/chat -f /etc/ppp/login.chat.script"
noipdefault # remote PPP server must supply your IP address.
# if the remote host doesn't send your IP during
# IPCP negotiation, remove this option
passive # wait for LCP packets
domain <your.domain> # put your domain name here
: # put the IP of remote PPP host here
# it will be used to route packets via PPP link
# if you didn't specified the noipdefault option
# change this line to <local_ip>:<remote_ip>
defaultroute # put this if you want that PPP server will be
# your default router
</verb>
<p><tt>/etc/ppp/login.chat.script</tt>:
(This should actually go into a single line.)
<verb>
ABORT BUSY ABORT 'NO CARRIER' "" AT OK ATDT<phone.number>
CONNECT "" TIMEOUT 10 ogin:-\\r-ogin: <login-id>
TIMEOUT 5 sword: <password>
</verb>
Once these are installed and modified correctly, all you need to
do is
<p><tt>pppd</tt>.
<em> This sample based primarily on information provided by: Trev Roydhouse
&lt;Trev.Roydhouse@f401.n711.z3.fidonet.org&gt; and used by
permission.</em>
<sect1><heading>Working as a PPP server</heading>
<p><tt>/etc/ppp/options</tt>:
<verb>
crtscts # Hardware flow control
netmask 255.255.255.0 # netmask ( not required )
192.114.208.20:192.114.208.165 # ip's of local and remote hosts
# local ip must be different from one
# you assigned to the ethernet ( or other )
# interface on your machine.
# remote IP is ip address that will be
# assigned to the remote machine
domain ppp.foo.com # your domain
passive # wait for LCP
modem # modem line
</verb>
Following <tt>/etc/ppp/pppserv</tt> script will enable ppp server on your
machine
<verb>
#!/bin/sh
ps ax |grep pppd |grep -v grep
pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
if [ "X${pid}" != "X" ] ; then
echo 'killing pppd, PID=' ${pid}
kill ${pid}
fi
ps ax |grep kermit |grep -v grep
pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
if [ "X${pid}" != "X" ] ; then
echo 'killing kermit, PID=' ${pid}
kill -9 ${pid}
fi
# reset ppp interface
ifconfig ppp0 down
ifconfig ppp0 delete
# enable autoanswer mode
kermit -y /etc/ppp/kermit.ans
# run ppp
pppd /dev/tty01 19200
</verb>
Use this <tt>/etc/ppp/pppservdown</tt> script to stop ppp server:
<verb>
#!/bin/sh
ps ax |grep pppd |grep -v grep
pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
if [ "X${pid}" != "X" ] ; then
echo 'killing pppd, PID=' ${pid}
kill ${pid}
fi
ps ax |grep kermit |grep -v grep
pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
if [ "X${pid}" != "X" ] ; then
echo 'killing kermit, PID=' ${pid}
kill -9 ${pid}
fi
ifconfig ppp0 down
ifconfig ppp0 delete
kermit -y /etc/ppp/kermit.noans
</verb>
Following kermit script will enable/disable autoanswer mode
on your modem (<tt>/etc/ppp/kermit.ans</tt>):
<verb>
set line /dev/tty01
set speed 19200
set file type binary
set file names literal
set win 8
set rec pack 1024
set send pack 1024
set block 3
set term bytesize 8
set command bytesize 8
set flow none
pau 1
out +++
inp 5 OK
out ATH0\13
inp 5 OK
echo \13
out ATS0=1\13 ; change this to out ATS0=0\13 if you want to disable
; autoanswer mod
inp 5 OK
echo \13
exit
</verb>
This <tt>/etc/ppp/kermit.dial</tt> script is used for dialing and authorizing
on remote host. You will need to customize it for your needs.
Put your login and password in this script , also you will need
to change input statement depending on responses from your modem
and remote host.
<verb>
;
; put the com line attached to the modem here:
;
set line /dev/tty01
;
; put the modem speed here:
;
set speed 19200
set file type binary ; full 8 bit file xfer
set file names literal
set win 8
set rec pack 1024
set send pack 1024
set block 3
set term bytesize 8
set command bytesize 8
set flow none
set modem hayes
set dial hangup off
set carrier auto ; Then SET CARRIER if necessary,
set dial display on ; Then SET DIAL if necessary,
set input echo on
set input timeout proceed
set input case ignore
def \%x 0 ; login prompt counter
goto slhup
:slcmd ; put the modem in command mode
echo Put the modem in command mode.
clear ; Clear unread characters from input buffer
pause 1
output +++ ; hayes escape sequence
input 1 OK\13\10 ; wait for OK
if success goto slhup
output \13
pause 1
output at\13
input 1 OK\13\10
if fail goto slcmd ; if modem doesn't answer OK, try again
:slhup ; hang up the phone
clear ; Clear unread characters from input buffer
pause 1
echo Hanging up the phone.
output ath0\13 ; hayes command for on hook
input 2 OK\13\10
if fail goto slcmd ; if no OK answer, put modem in command mode
:sldial ; dial the number
pause 1
echo Dialing.
output atdt9,550311\13\10 ; put phone number here
assign \%x 0 ; zero the time counter
:look
clear ; Clear unread characters from input buffer
increment \%x ; Count the seconds
input 1 {CONNECT }
if success goto sllogin
reinput 1 {NO CARRIER\13\10}
if success goto sldial
reinput 1 {NO DIALTONE\13\10}
if success goto slnodial
reinput 1 {\255}
if success goto slhup
reinput 1 {\127}
if success goto slhup
if < \%x 60 goto look
else goto slhup
:sllogin ; login
assign \%x 0 ; zero the time counter
pause 1
echo Looking for login prompt.
:slloop
increment \%x ; Count the seconds
clear ; Clear unread characters from input buffer
output \13
;
; put your expected login prompt here:
;
input 1 {Username: }
if success goto sluid
reinput 1 {\255}
if success goto slhup
reinput 1 {\127}
if success goto slhup
if < \%x 10 goto slloop ; try 10 times to get a login prompt
else goto slhup ; hang up and start again if 10 failures
:sluid
;
; put your userid here:
;
output ppp-login\13
input 1 {Password: }
;
; put your password here:
;
output ppp-password\13
input 1 {Entering SLIP mode.}
echo
quit
:slnodial
echo \7No dialtone. Check the telephone line!\7
exit 1
; local variables:
; mode: csh
; comment-start: "; "
; comment-start-skip: "; "
; end:
</verb>
<!--
###################################################################
Gennady B. Sorokopud ( gena@NetVision.net.il ) 24/10/94 12:00
-->

File diff suppressed because it is too large Load diff

View file

@ -1,208 +0,0 @@
<!-- This is an SGML document in the linuxdoc DTD describing
disk quotas under FreeBSD. By Mike Pritchard, 1996.
$Id: quotas.sgml,v 1.5 1997/02/22 12:59:12 peter Exp $
The FreeBSD Documentation Project
<!DOCTYPE linuxdoc PUBLIC "-//FreeBSD//DTD linuxdoc//EN">
<article>
<title> Disk quotas
<author> Mike Pritchard <tt/mpp@FreeBSD.org/
<date> 26 February 1996, (c) 1996
<abstract> This document describes configuration and administration
of disk quotas under FreeBSD. </abstract>
<toc>
-->
<chapt><heading>Disk quotas<label id="quotas"></heading>
<p><em>Contributed by &a.mpp;.<newline>26 February 1996</em>
Quotas are an optional feature of the operating system that allow
you to limit the amount of disk space and/or the number of files
a user, or members of a group, may allocate on a per-file system basis.
This is used most often on timesharing systems where it is desirable
to limit the amount of resources any one user or group of users may
allocate. This will prevent one user from consuming all of
the available disk space.
<sect><heading>Configuring your system to enable disk quotas</heading>
<p>Before attempting to use disk quotas it is
necessary to make sure that quotas are configured in your kernel.
This is done by adding the following line to your kernel configuration file:
<verb>
options QUOTA
</verb>
The stock GENERIC kernel does not have this enabled by default, so you
will have to configure, build and install a custom kernel in order to use
disk quotas. Please refer to the
<ref id="kernelconfig" name="Configuring the FreeBSD Kernel">
section for more information on kernel configuration.
<p>Next you will need to enable disk quotas in <tt>/etc/sysconfig</tt>.
This is done by changing the line:
<verb>
quotas=NO
</verb>
to:
<verb>
quotas=YES
</verb>
<p>Finally you will need to edit <tt>/etc/fstab</tt> to enable
disk quotas on a per-file system basis. This is where you can
either enable user or group quotas or both for all of your file
systems.
<p>To enable per-user quotas on a file system, add the
<tt>userquota</tt> option to the options field in the
<tt>/etc/fstab</tt> entry for the file system you want to
to enable quotas on. For example:
<verb>
/dev/sd1s2g /home ufs rw,userquota 1 2
</verb>
<p>Similarly, to enable group quotas, use the <tt>groupquota</tt>
option instead of the <tt>userquota</tt> keyword. To enable both
user and group quotas, change the entry as follows:
<verb>
/dev/sd1s2g /home ufs rw,userquota,groupquota 1 2
</verb>
<p>By default the quota files are stored in the root directory of the file
system with the names <tt>quota.user</tt> and <tt>quota.group</tt>
for user and group quotas respectively. See <tt>man fstab</tt> for more
information. Even though that man page says that you can specify an
alternate location for the quota files, this is not recommended since
all of the various quota utilities do not seem to handle this
properly.
<p>At this point you should reboot your system with your new kernel.
<tt>/etc/rc</tt> will automatically run the appropriate commands to
create the initial quota files for all of the quotas you enabled
in <tt>/etc/fstab</tt>, so there is no need to manually create any
zero length quota files.
<p>In the normal course of operations you should not be required
to run the <tt>quotacheck</tt>, <tt>quotaon</tt>, or <tt>quotaoff</tt>
commands manually. However, you may want to read their man pages
just to be familiar with their operation.
<sect><heading>Setting quota limits</heading>
<p>Once you have configured your system to enable quotas, verify that
they really are enabled. An easy way to do this is to run
<tt>quota -v</tt>. You should see a one line summary of disk
usage and current quota limits for each file system that
quotas are enabled on.
<p>You are now ready to start assigning quota limits
with the <tt>edquota</tt> command.
<p>You have several options on how to enforce limits on the amount of
disk space a user or group may allocate, and how many files they may create.
You may limit allocations based on disk space (block quotas) or
number of files (inode quotas) or a combination of both.
Each of these limits are further broken down into two categories: hard and
soft limits.
<p>A hard limit may not be exceeded. Once a user reaches their hard
limit they may not make any further allocations on the file system
in question. For example, if the user has a hard limit of 500 blocks
on a file system and is currently using 490 blocks, the user can only allocate
an additional 10 blocks. Attempting to allocate an additional 11 blocks
will fail.
<p>Soft limits on the other hand can be exceeded for a limited amount
of time. This period of time is known as the grace period, which is
one week by default. If a user stays over his or her soft limit longer
than their grace period, the soft limit will turn into a hard limit
and no further allocations will be allowed. When the user drops
back below the soft limit, the grace period will be reset.
<p>The following is an example of what you might see when
you run then <tt>edquota</tt> command. When the <tt>edquota</tt>
command is invoked, you are placed into the editor specified by the
<tt>EDITOR</tt> environment variable, or in the <tt>vi</tt> editor
if the <tt>EDITOR</tt> variable is not set, to
allow you to edit the quota limits.
<verb>
# edquota -u test
Quotas for user test:
/usr: blocks in use: 65, limits (soft = 50, hard = 75)
inodes in use: 7, limits (soft = 50, hard = 60)
/usr/var: blocks in use: 0, limits (soft = 50, hard = 75)
inodes in use: 0, limits (soft = 50, hard = 60)
</verb>
You will normally see two lines for each file system that has
quotas enabled. One line for the block limits, and one line
for inode limits. Simply change the value you want updated
to modify the quota limit. For example, to raise this users
block limit from a soft limit of 50 and a hard limit of 75
to a soft limit of 500 and a hard limit of 600, change:
<verb>
/usr: blocks in use: 65, limits (soft = 50, hard = 75)
</verb>
to:
<verb>
/usr: blocks in use: 65, limits (soft = 500, hard = 600)
</verb>
The new quota limits will be in place when you exit the editor.
<p>Sometimes it is desirable to set quota limits on a range
of uids. This can be done by use of the <tt>-p</tt> option
on the <tt>edquota</tt> command. First, assign the desired
quota limit to a user, and then run
<tt>edquota -p protouser startuid-enduid</tt>.
For example, if user <tt>test</tt> has the desired quota
limits, the following command can be used to duplicate
those quota limits for uids 10,000 through 19,999:
<verb>
edquota -p test 10000-19999
</verb>
<p>The ability to specify uid ranges was added to the system
after 2.1 was released. If you need this feature on a 2.1
system, you will need to obtain a newer copy of edquota.
<p>See <tt>man edquota</tt> for more detailed information.
<sect><heading>Checking quota limits and disk usage</heading>
<p>You can use either the <tt>quota</tt> or the <tt>repquota</tt>
commands to check quota limits and disk usage. The <tt>quota</tt>
command can be used to check individual user and group quotas and
disk usage. Only the super-user may examine quotas and usage for
other users, or for groups that they are not a member of.
The <tt>repquota</tt> command can be used to get a summary of all
quotas and disk usage for file systems with quotas enabled.
<p>The following is some sample output from the <tt>quota -v</tt>
command for a user that has quota limits on two file systems.
<verb>
Disk quotas for user test (uid 1002):
Filesystem blocks quota limit grace files quota limit grace
/usr 65* 50 75 5days 7 50 60
/usr/var 0 50 75 0 50 60
</verb>
On the /usr file system in the above example this user is
currently 15 blocks over their soft limit of 50 blocks and has 5 days of
their grace period left. Note the asterisk (*) which indicates that
the user is currently over their quota limit.
<p>Normally file systems that the user is not using any disk space
on will not show up in the output from the <tt>quota</tt> command,
even if they have a quota limit assigned for that file system.
The <tt>-v</tt> option will display those file systems, such as
the <tt>/usr/var</tt> file system in the above example.
<sect><heading>* Quotas over NFS</heading>
<p>This section is still under development.

View file

@ -1,587 +0,0 @@
<!-- $Id$ -->
<!-- The FreeBSD Documentation Project -->
<!--
<!DOCTYPE linuxdoc PUBLIC '-//FreeBSD//DTD linuxdoc//EN'>
<linuxdoc><book><chapt>foo
-->
<sect><heading>About the current release<label id="relnotes"></heading>
<p>FreeBSD is a freely available, full source 4.4BSD-Lite
based release for Intel i386/i486/Pentium/PentiumPro (or
compatible) based PC's. It is based primarily on
software from U.C. Berkeley's CSRG group, with some
enhancements from NetBSD, 386BSD, and the Free Software
Foundation.
Since our release of FreeBSD 2.0 in January of 95, the
performance, feature set, and stability of FreeBSD has
improved dramatically. The largest change is a
revamped VM system with a merged VM/file buffer cache
that not only increases performance, but reduces
FreeBSD's memory footprint, making a 5MB configuration
a more acceptable minimum. Other enhancements include
full NIS client and server support, transaction TCP
support, dial-on-demand PPP, an improved SCSI
subsystem, early ISDN support, support for FDDI and
Fast Ethernet (100Mbit) adapters, improved support for
the Adaptec 2940 (WIDE and narrow) and many hundreds of
bug fixes.
We have also taken the comments and suggestions of many
of our users to heart and have attempted to provide
what we hope is a more sane and easily understood
installation process. Your feedback on this
(constantly evolving) process is especially welcome!
In addition to the base distributions, FreeBSD offers a
new ported software collection with hundreds of commonly
sought-after programs. At the beginning of December 96 there were
more than 700 ports ! The list of ports ranges from
http (WWW) servers, to games, languages, editors and
almost everything in between. The entire ports collection
requires only 10MB of storage, all ports being expressed
as ``deltas'' to their original sources. This makes it
much easier for us to update ports, and greatly reduces
the disk space demands made by the older 1.0 ports
collection. To compile a port, you simply change to the
directory of the program you wish to install, type ``make
all'' followed by ``make install'' after successful
compilation and let the system do the rest. The full
original distribution for each port you build is retrieved
dynamically off of CDROM or a local ftp site, so you need
only enough disk space to build the ports you want.
(Almost) every port is also provided as a pre-compiled
"package" which can be installed with a simple command
(pkg_add) by those who do not wish to compile their own
ports from source.
A number of additional documents which you may find
very helpful in the process of installing and using
FreeBSD may now also be found in the
<bf>/usr/share/doc</bf> directory on any machine running
FreeBSD 2.1 or later. You may view the
manuals with any HTML capable browser with the
following URLs:
<descrip>
<tag>The FreeBSD handbook</tag>
<htmlurl url="file:/usr/share/doc/handbook/handbook.html">
<tag>The FreeBSD FAQ</tag>
<htmlurl url="file:/usr/share/doc/FAQ/FAQ.html">
</descrip>
You can also visit the master (and most frequently
updated) copies at <htmlurl
url="http://www.freebsd.org"
name="http://www.freebsd.org">.
The core of FreeBSD does not contain DES code which
would inhibit its being exported outside the United
States. There is an add-on package to the core
distribution, for use only in the United States, that
contains the programs that normally use DES. The
auxiliary packages provided separately can be used by
anyone. A freely (from outside the U.S.) exportable
European distribution of DES for our non-U.S. users
also exists and is described in the <htmlurl
url="../FAQ/FAQ.html" name="FreeBSD FAQ">.
If password security for FreeBSD is all you need, and
you have no requirement for copying encrypted passwords
from different hosts (Suns, DEC machines, etc) into
FreeBSD password entries, then FreeBSD's MD5 based
security may be all you require! We feel that our
default security model is more than a match for DES,
and without any messy export issues to deal with. If
you are outside (or even inside) the U.S., give it a
try!
<![ IGNORE [
<p>Since our first release of FreeBSD 1.0 nearly two
years ago, FreeBSD has changed dramatically. Since
release 2.0, FreeBSD has been based on the Berkeley
4.4BSD-Lite code rather than the Net2 code used for
previous versions. In addition to clearing the legal
issues that surrounded the Net2 code, the port to 4.4
has also brought in numerous new features, filesystems
and enhanced driver support.
Since our release of FreeBSD 2.0 in November of 1994,
the performance, feature set, and stability of FreeBSD
has improved dramatically. The largest change is a
revamped Virtual Memory (VM) system with a merged
virtual memory and file buffer cache. This increases
performance while reducing FreeBSD's memory footprint,
making a system with 4 megabytes of RAM a more
acceptable minimum. Other enhancements include full
NIS client and server support, transaction TCP support,
dial on demand PPP, an improved SCSI subsystem, early
support for ISDN, support for FDDI and 100Mbit Fast
Ethernet adapters, improved support for the Adaptec
2940 and hundreds of bug fixes.
We have also taken the comments and suggestions of many
of our users to heart and have attempted to provide
what we hope is a more sane and easily understood
installation process. Your feedback on this constantly
evolving process is especially welcome!
In addition to the base distributions, FreeBSD offers a
new ported software collection with some 270 commonly
sought-after programs. The list of ports ranges from
World Wide Web (http) servers, to games, languages,
editors and almost everything in between. The entire
ports collection requires only 10MB of storage because
each port contains only the changes required for the
source code to compile on FreeBSD and the information
necessary to automatically retrieve the original
sources. The original distribution for each port you
build is automatically retrieved off of CD-ROM or a via
anonymous ftp, so you need only enough disk space to
build the ports you want. Each port is also provided
as a pre-compiled package which can be installed with
the <tt>pkg_add(1)</tt> command for those who do not
wish to compile their own ports from source. See <ref
id="ports" name="The Ports Collection"> for a more
complete description.
<!-- XXX make xref
For a list of contributors and a general project
description, please see the file "CONTRIB.FreeBSD"
which should be bundled with your binary distribution.
Also see the "REGISTER.FreeBSD" file for information on
registering with the "Free BSD user counter". This
counter is for ALL freely available variants of BSD,
not just FreeBSD, and we urge you to register yourself
with it.
-->
The core of FreeBSD does not contain DES code which
would inhibit its being exported outside the United
States. An add-on package, for use only in the United
States, contains the programs that normally use DES.
The auxiliary packages provided separately can be used
by anyone. A freely exportable European distribution
of DES for our non-U.S. users also exists and is
described in the <url
url="http://www.freebsd.org/FAQ" name="FreeBSD
FAQ">. If password security for FreeBSD is all you
need, and you have no requirement for copying encrypted
passwords from other hosts using DES into FreeBSD
password entries, then FreeBSD's MD5 based security may
be all you require. We feel that our default security
model is more than a match for DES, and without any
messy export issues to deal with.
FreeBSD 2.0.5 represents the culmination of 2 years of
work and many thousands of man hours put in by an
international development team. We hope you enjoy it!
<sect1><heading>New feature highlights</heading>
<p>The following features were added or substantially
improved between the release of 2.0 and this 2.0.5
release. In order to facilitate better
communication, the person, or persons, responsible
for each enhancement is noted. Any questions
regarding the new functionality should be directed to
them first.
<sect2><heading>Kernel</heading>
<p>
<descrip>
<tag>Merged VM-File Buffer Cache</tag> A merged
VM/buffer cache design greatly enhances overall
system performance and makes it possible to do
a number of more optimal memory allocation
strategies that were not possible before.
Owner: &a.davidg; and &a.dyson;
<tag>Network PCB hash optimization</tag> For
systems with a great number of active TCP
connections (WEB and ftp servers, for example),
this greatly speeds up the lookup time required
to match an incoming packet up to its
associated connection.
Owner: &a.davidg;
<tag>Name cache optimization</tag> The name-cache
would cache all files of the same name to the
same bucket, which would put for instance all
".." entries in the same bucket. We added the
parent directory version to frustrate the hash,
and improved the management of the cache in
various other ways while we were at it.
Owner: &a.phk; and &a.davidg;
<tag>Less restrictive swap-spaces</tag> The need
to compile the names of the swap devices into
the kernel has been removed. Now
<tt>swapon(8)</tt> will accept any block
devices, up to the maximum number of swap
devices configured in the kernel.
Owner: &a.phk; and &a.davidg;
<tag>Hard Wired SCSI Devices</tag> Prior to
2.0.5, FreeBSD performed dynamic assignment of
unit numbers to SCSI devices as they were
probed, allowing a SCSI device failure to
possibly change unit number assignment. This
could cause filesystems other disks in the
system to be incorrectly mounted, or not
mounted at all. Hard wiring allows static
allocation of unit numbers (and hence device
names) to scsi devices based on SCSI ID and
bus. SCSI configuration occurs in the kernel
config file. Samples of the configuration
syntax can be found in the <tt>scsi(4)</tt> man
page or the LINT kernel config file.
Owner: &a.dufault;
Sources involved: <tt>sys/scsi/*</tt>
<tt>usr.sbin/config/*</tt>
<tag>Slice Support</tag> FreeBSD now supports a
<em>slice</em> abstraction which enhances
FreeBSD's ability to share disks with other
operating systems. This support will allow
FreeBSD to inhabit DOS extended partitions.
Owner: &a.bde;
Sources involved: <tt>sys/disklabel.h</tt>
<tt>sys/diskslice.h</tt> <tt>sys/dkbad.h</tt>
<tt>kern/subr_diskslice.c</tt> <tt>kern/subr_dkbad.c</tt>
<tt>i386/isa/diskslice_machdep.c</tt> <tt>i386/isa/wd.c</tt>
<tt>scsi/sd.c</tt> <tt>dev/vn/vn.c</tt>
<tag>Support for Ontrack Disk Manager Version 6.0</tag>
Support has been added for disks
which use Ontrack Disk Manager. The fdisk
program does <em>not</em> know about it
however, so make all changes using the install
program on the boot.flp or the Ontrack Disk
Manager tool under MS-DOS.
Owner: &a.phk;
<tag>Bad144 is back and working</tag> Bad144
works again, though the semantics are slightly
different than before in that the bad-spots are
kept relative to the slice rather than absolute
on the disk.
Owner: &a.bde; and &a.phk;
</descrip>
<sect2><heading>New device support</heading>
<sect3><heading>SCSI and CDROM devices</heading>
<p><descrip>
<tag>Matsushita/Panasonic (Creative) CD-ROM driver</tag>
The Matsushita/Panasonic CR-562 and
CR-563 drives are now supported when connected to
a Sound Blaster or 100% compatible host adapter.
Up to four host adapters are supported for a
total of 16 CD-ROM drives. The audio functions
are supported with the Karoke variable speed
playback.
Owner: &a.uhclem;
Sources involved: <tt>isa/matcd</tt>
<tag>Adaptec 2742/2842/2940 SCSI driver</tag> The
original 274x/284x driver has evolved
considerably since the 2.0 release of FreeBSD.
We now offer full support for the 2940 series as
well as the Wide models of these cards. The
arbitration bug that caused problems with fast
devices has been corrected and
<em>experimental</em> tagged queuing support has
been added (kernel option
<tt>AHC_TAGENABLE</tt>). John Aycock has also
released the sequencer code under a Berkeley
style copyright making the driver entirely clean
of the GPL.
Owner: &a.gibbs;
Sources involved: <tt>isa/aic7770.c</tt> <tt>pci/aic7870.c</tt>
<tt>i386/scsi/*</tt> <tt>sys/dev/aic7xxx/*</tt>
<tag>NCR5380/NCR53400 SCSI (ProAudio Spectrum) driver</tag>
Owner: &a.core;
Submitted by: Serge Vakulenko (vak@cronyx.ru)
Sources involved: <tt>isa/ncr5380.c</tt>
<tag>Sony CDROM driver</tag> Owner: &a.core;
Submitted by: Mikael Hybsch (micke@dynas.se)
Sources involved: <tt>isa/scd.c</tt>
</descrip>
<sect3><heading>Serial devices</heading>
<p><descrip>
<tag>SDL Communications Riscom/8 Serial Board Driver</tag>
Owner: &a.ache;
Sources involved: <tt>isa/rc.c</tt> <tt>isa/rcreg.h</tt>
<tag>Cyclades Cyclom-y Serial Board Driver</tag>
Owner: &a.bde;
Submitted by: Andrew Werple
(andrew@werple.apana.org.au) and Heikki Suonsivu
(hsu@cs.hut.fi)
Obtained from: NetBSD
Sources involved: <tt>isa/cy.c</tt>
<tag>Cronyx/Sigma sync/async serial driver</tag>
Owner: &a.core;
Submitted by: Serge Vakulenko
Sources involved: <tt>isa/cronyx.c</tt>
</descrip>
<sect2><heading>Networking</heading>
<p><descrip>
<tag>Diskless booting</tag> Diskless booting in 2.0.5
is much improved over previous releases. The boot
program is in <tt>src/sys/i386/boot/netboot</tt>,
and can be run from an MS-DOS system or burned into
an EPROM. WD, SMC, 3COM and Novell ethernet cards
are currently supported. Local swapping is also
supported.
<tag>DEC DC21140 Fast Ethernet driver</tag> This
driver supports any of the numerous NICs using the
DC21140 chipset including the 100Mb DEC DE-500-XA
and SMC 9332.
Owner: &a.core;
Submitted by: Matt Thomas (thomas@lkg.dec.com)
Sources involved: <tt>pci/if_de.c</tt> <tt>pci/dc21040.h</tt>
<tag>DEC FDDI (DEFPA/DEFEA) driver</tag> Owner: &a.core;
Submitted by: Matt Thomas (thomas@lkg.dec.com)
Sources involved: <tt>pci/if_pdq.c</tt> <tt>pci/pdq.c</tt>
<tt>pci/pdq_os.h</tt> <tt>pci/pdqreg.h</tt>
<tag>3Com 3c505 (Etherlink/+) NIC driver</tag> Owner:
&a.core;
Submitted by: Dean Huxley (dean@fsa.ca)
Obtained from: NetBSD
Sources involved: <tt>isa/if_eg.c</tt>
<tag>Fujitsu MB86960A family of NICs driver</tag>
Owner: &a.core;
Submitted by: M.S. (seki@sysrap.cs.fujitsu.co.jp)
Sources involved: <tt>isa/if_fe.c</tt>
<tag>Intel EtherExpress driver</tag> Owner: Rodney
W. Grimes (rgrimes@FreeBSD.org)
Sources involved: <tt>isa/if_ix.c</tt> <tt>isa/if_ixreg.h</tt>
<tag>3Com 3c589 driver</tag> Owner: &a.core;
Submitted by: "HOSOKAWA Tatsumi"
(hosokawa@mt.cs.keio.ac.jp), Seiji Murata
(seiji@mt.cs.keio.ac.jp) and Noriyuki Takahashi
(hor@aecl.ntt.jp)
Sources involved: <tt>isa/if_zp.c</tt>
<tag>IBM Credit Card Adapter driver</tag> Owner: &a.core;
Submitted by: "HOSOKAWA Tatsumi"
(hosokawa@mt.cs.keio.ac.jp),
Sources involved: <tt>isa/pcic.c</tt> <tt>isa/pcic.h</tt>
<tag>EDSS1 and 1TR6 ISDN interface driver</tag>
Owner: &a.core;
Submitted by: Dietmar Friede
(dfriede@drnhh.neuhaus.de) and Juergen Krause
(jkr@saarlink.de)
Sources involved: <tt>gnu/isdn/*</tt>
</descrip>
<sect2><heading>Miscellaneous drivers</heading>
<p><descrip>
<tag>Joystick driver</tag> Owner: &a.jmz;
Sources involved: <tt>isa/joy.c</tt>
<tag>National Instruments ``LabPC'' driver</tag> Owner:
&a.dufault;
Sources involved: <tt>isa/labpc.c</tt>
<tag>WD7000 driver</tag> Owner: Olof Johansson
(offe@ludd.luth.se)
<tag>Pcvt Console driver</tag> Owner: &a.joerg;
Submitted by: &a.hm;
Sources involved: <tt>isa/pcvt/*</tt>
<tag>BSD-audio emulator for VAT driver</tag> Owner:
Amancio Hasty (ahasty@FreeBSD.org) and
&a.pst;
Sources involved: <tt>isa/sound/vat_audio.c</tt>
<tt>isa/sound/vat_audioio.h</tt>
<tag>National Instruments AT-GPIB and AT-GPIB/TNT GPIB driver</tag>
Owner: &a.core;
Submitted by: Fred Cawthorne
(fcawth@delphi.umd.edu)
Sources involved: <tt>isa/gpib.c</tt> <tt>isa/gpib.h</tt>
<tt>isa/gpibreg.h</tt>
<tag>Genius GS-4500 hand scanner driver</tag> Owner:
&a.core;
Submitted by: Gunther Schadow
(gusw@fub46.zedat.fu-berlin.de)
Sources involved: <tt>isa/gsc.c</tt> <tt>isa/gscreg.h</tt>
<tag>CORTEX-I Frame Grabber</tag> Owner: &a.core;
Submitted by: Paul S. LaFollette, Jr. (
Sources involved: <tt>isa/ctx.c</tt> <tt>isa/ctxreg.h</tt>
<tag>Video Spigot video capture card</tag> Owner: Jim
Lowe
</descrip>
<sect1><heading>Experimental features</heading>
<p><descrip>
<tag>UNIONFS and LFS</tag> The unionfs and LFS file
systems are known to be severely broken in FreeBSD
2.0.5. This is in part due to old bugs that we
have not had time to resolve yet and the need to
update these file systems to deal with the new VM
system. We hope to address these issues in a later
release of FreeBSD.
<tag>iBCS2 Support</tag> FreeBSD now supports running
iBCS2 compatible binaries. Currently SCO UNIX 3.2.2
and 3.2.4, and ISC 2.2 COFF are supported. The iBCS2
emulator is in its early stages and has not been
extensively tested, but it is functional. Most of
SCO's 3.2.2 binaries work, as does an old
INFORMIX-2.10 for SCO. Further testing is necessary
to complete this project. There is also work under
way for ELF and XOUT loaders, and most of the svr4
syscall wrappers are written.
Owner: &a.sos; and &a.sef;
Sources involved: <tt>sys/i386/ibcs2/*</tt> and misc
kernel changes.
</descrip>
<!--
<sect1><heading>Reporting problems, making suggestions, submitting code</heading>
<p>Your suggestions, bug reports and contributions of code
are always valued - please do not hesitate to report any
problems you may find (preferably with a fix attached if
you can!).
The preferred method to submit bug reports from a machine
with Internet mail connectivity is to use the send-pr
command. Bug reports will be dutifully filed by our
faithful bug-filer program and you can be sure that we will
do our best to respond to all reported bugs as soon as
possible.
If, for some reason, you are unable to use the send-pr
command to submit a bug report, you can try to send it
to: <tscreen>bugs@FreeBSD.org</tscreen> Otherwise, for
any questions or suggestions, please send mail to:
<tscreen>questions@FreeBSD.org</tscreen>
Additionally, being a volunteer effort, we are always
happy to have extra hands willing to help - there are
already far more enhancements to be done than we can ever
manage to do by ourselves! To contact us on technical
matters, or with offers of help, you may send mail to:
<tscreen>hackers@FreeBSD.org</tscreen>
Since these mailing lists can experience significant
amounts of traffic, if you have slow or expensive mail
access and you are only interested in keeping up with
significant FreeBSD events, you may find it preferable to
subscribe to: <tscreen>announce@FreeBSD.org</tscreen>
All but the freebsd-bugs groups can be freely joined by
anyone wishing to do so. Send mail to &a.majordomo
and include the keyword `help' on a
line by itself somewhere in the body of the message.
This will give you more information on joining the
various lists, accessing archives, etc. There are a
number of mailing lists targeted at special interest
groups not mentioned here, so send mail to majordomo and
ask about them!
-->
]]>

View file

@ -1,279 +0,0 @@
<!-- $Id$ -->
<!-- The FreeBSD Documentation Project -->
<!-- <!DOCTYPE linuxdoc PUBLIC '-//FreeBSD//DTD linuxdoc//EN'> -->
<sect><heading>Gateways and routes<label id="routing"></heading>
<p><em>Contributed by &a.gryphon;.<newline>6 October 1995.</em>
For one machine to be able to find another, there must be a
mechanism in place to describe how to get from one to the
other. This is called Routing. A ``route'' is a defined
pair of addresses: a <bf>destination</bf> and a
<bf>gateway</bf>. The pair indicates that if you are
trying to get to this <em>destination</em>, send along
through this <em>gateway</em>. There are three types of
destinations: individual hosts, subnets, and ``default''. The
``default route'' is used if none of the other routes
apply. We will talk a little bit more about default routes
later on. There are also three types of gateways:
individual hosts, interfaces (also called ``links''), and
ethernet hardware addresses.
<sect1><heading>An example</heading>
<p>To illustrate different aspects of routing, we will use
the following example which is the output of the command
<tt>netstat -r</tt>:
<tscreen><verb>
Destination Gateway Flags Refs Use Netif Expire
default outside-gw UGSc 37 418 ppp0
localhost localhost UH 0 181 lo0
test0 0:e0:b5:36:cf:4f UHLW 5 63288 ed0 77
10.20.30.255 link#1 UHLW 1 2421
foobar.com link#1 UC 0 0
host1 0:e0:a8:37:8:1e UHLW 3 4601 lo0
host2 0:e0:a8:37:8:1e UHLW 0 5 lo0 =>
host2.foobar.com link#1 UC 0 0
224 link#1 UC 0 0
</verb></tscreen>
The first two lines specify the default route (which we
will cover in the next section) and the <tt>localhost</tt> route.
The interface (<tt>Netif</tt> column) that it specifies to use
for <tt>localhost</tt> is <tt>lo0</tt>, also known as the
loopback device. This says to keep all traffic for this
destination internal, rather than sending it out over the
LAN, since it will only end up back where it started
anyway.
The next thing that stands out are the
``<tt>0:e0:...</tt>'' addresses. These are ethernet
hardware addresses. FreeBSD will automatically identify any
hosts (<tt>test0</tt> in the example) on the local ethernet and
add a route for that host, directly to it over the ethernet
interface, <tt>ed0</tt>. There is also a timeout
(<tt>Expire</tt> column) associated with this type of route,
which is used if we fail to hear from the host in a
specific amount of time. In this case the route will be
automatically deleted. These hosts are identified using a
mechanism known as RIP (Routing Information Protocol),
which figures out routes to local hosts based upon a
shortest path determination.
FreeBSD will also add subnet routes for the local subnet
(<tt>10.20.30.255</tt> is the broadcast address for the subnet
<tt>10.20.30</tt>, and <tt>foobar.com</tt> is the domain name
associated with that subnet). The designation <tt>link&num;1</tt>
refers to the first ethernet card in the machine. You will
notice no additional interface is specified for those.
Both of these groups (local network hosts and local
subnets) have their routes automatically configured by a
daemon called <tt>routed</tt>. If this is not run, then only
routes which are statically defined (ie. entered
explicitly) will exist.
The <tt>host1</tt> line refers to our host, which it knows by
ethernet address. Since we are the sending host, FreeBSD
knows to use the loopback interface (<tt>lo0</tt>) rather than
sending it out over the ethernet interface.
The two <tt>host2</tt> lines are an example of what happens
when we use an ifconfig alias (see the section of ethernet
for reasons why we would do this). The <tt>=&gt</tt>
symbol after the <tt>lo0</tt> interface says that not only are
we using the loopback (since this is address also refers to
the local host), but specifically it is an alias. Such
routes only show up on the host that supports the alias;
all other hosts on the local network will simply have a
<tt>link&num;1</tt> line for such.
The final line (destination subnet <tt>224</tt>) deals with
MultiCasting, which will be covered in a another section.
The other column that we should talk about are the
<tt>Flags</tt>. Each route has different attributes that are
described in the column. Below is a short table of some of
these flags and their meanings:
<descrip>
<tag/U/ <bf/Up:/ The route is active.
<tag/H/ <bf/Host:/ The route destination is a single host.
<tag/G/ <bf/Gateway:/ Send anything for this destination
on to this remote system, which will figure out from
there where to send it.
<tag/S/ <bf/Static:/ This route was configured manually,
not automatically generated by the system.
<tag/C/ <bf/Clone:/ Generates a new route based upon this
route for machines we connect to. This type of route is
normally used for local networks.
<tag/W/ <bf/WasCloned/ Indicated a route that was
auto-configured based upon a local area network (Clone)
route.
<tag/L/ <bf/Link:/ Route involves references to ethernet
hardware.
</descrip>
<sect1><heading>Default routes</heading>
<p>When the local system needs to make a connection to
remote host, it checks the routing table to determine if
a known path exists. If the remote host falls into a
subnet that we know how to reach (Cloned routes), then
the system checks to see if it can connect along that
interface.
If all known paths fail, the system has one last option:
the <bf>default</bf> route. This route is a special type
of gateway route (usually the only one present in the
system), and is always marked with a ``<tt>c</tt>'' in
the flags field. For hosts on a local area network, this
gateway is set to whatever machine has a direct
connection to the outside world (whether via PPP link, or
your hardware device attached to a dedicated data line).
If you are configuring the default route for a machine
which itself is functioning as the gateway to the outside
world, then the default route will be the gateway machine
at your Internet Service Provider's (ISP) site.
Let us look at an example of default routes. This is a
common configuration:
<tscreen><verb>
[Local2] <--ether--> [Local1] <--PPP--> [ISP-Serv] <--ether--> [T1-GW]
</verb></tscreen>
The hosts <tt>Local1</tt> and <tt>Local2</tt> are at your
site, with the formed being your PPP connection to your
ISP's Terminal Server. Your ISP has a local network at
their site, which has, among other things, the server
where you connect and a hardware device (T1-GW) attached
to the ISP's Internet feed.
The default routes for each of your machines will be:
<tscreen><verb>
host default gateway interface
---- --------------- ---------
Local2 Local1 ethernet
Local1 T1-GW PPP
</verb></tscreen>
A common question is ``Why (or how) would we set the
T1-GW to be the default gateway for Local1, rather than
the ISP server it is connected to?''.
Remember, since the PPP interface is using an address on
the ISP's local network for your side of the connection,
routes for any other machines on the ISP's local network
will be automatically generated. Hence, you will already
know how to reach the T1-GW machine, so there is no need
for the intermediate step of sending traffic to the ISP
server.
As a final note, it is common to use the address ``<tt>...1</tt>''
as the gateway address for your local network. So (using
the same example), if your local class-C address space
was <tt>10.20.30</tt> and your ISP was using <tt>10.9.9</tt> then the
default routes would be:
<tscreen><verb>
Local2 (10.20.30.2) --> Local1 (10.20.30.1)
Local1 (10.20.30.1, 10.9.9.30) --> T1-GW (10.9.9.1)
</verb></tscreen>
<sect1><heading>Dual homed hosts</heading>
<p>There is one other type of configuration that we should
cover, and that is a host that sits on two different
networks. Technically, any machine functioning as a
gateway (in the example above, using a PPP connection)
counts as a dual-homed host. But the term is really only
used to refer to a machine that sits on two local-area
networks.
In one case, the machine as two ethernet cards, each
having an address on the separate subnets. Alternately,
the machine may only have one ethernet card, and be using
ifconfig aliasing. The former is used if two physically
separate ethernet networks are in use, the latter if
there is one physical network segment, but two logically
separate subnets.
Either way, routing tables are set up so that each subnet
knows that this machine is the defined gateway (inbound
route) to the other subnet. This configuration, with the
machine acting as a Bridge between the two subnets, is
often used when we need to implement packet filtering or
firewall security in either or both directions.
<sect1><heading>Routing propagation</heading>
<p>We have already talked about how we define our routes to
the outside world, but not about how the outside world
finds us.
We already know that routing tables can be set up so that
all traffic for a particular address space (in our
examples, a class-C subnet) can be sent to a particular
host on that network, which will forward the packets
inbound.
When you get an address space assigned to your site, your
service provider will set up their routing tables so that
all traffic for your subnet will be sent down your PPP
link to your site. But how do sites across the country
know to send to your ISP?
There is a system (much like the distributed DNS
information) that keeps track of all assigned
address-spaces, and defines their point of connection to
the Internet Backbone. The ``Backbone'' are the main
trunk lines that carry Internet traffic across the
country, and around the world. Each backbone machine has
a copy of a master set of tables, which direct traffic
for a particular network to a specific backbone carrier,
and from there down the chain of service providers until
it reaches your network.
It is the task of your service provider to advertise to
the backbone sites that they are the point of connection
(and thus the path inward) for your site. This is known
as route propagation.
<!--
<sect1><heading>Multicast Routing</heading>
-->
<sect1><heading>Troubleshooting</heading>
<p>Sometimes, there is a problem with routing propagation,
and some sites are unable to connect to you. Perhaps the
most useful command for trying to figure out where a
routing is breaking down is the <tt>traceroute(8)</tt>
command. It is equally useful if you cannot seem to make
a connection to a remote machine (ie. <tt>ping(8)</tt>
fails).
The <tt>traceroute(8)</tt> command is run with the name
of the remote host you are trying to connect to. It will
show the gateway hosts along the path of the attempt,
eventually either reaching the target host, or
terminating because of a lack of connection.
For more information, see the manual page for
<tt>traceroute(8)</tt>.

View file

@ -1,195 +0,0 @@
<!-- $Id: russian.sgml,v 1.3 1997/05/02 08:07:35 ache Exp $ -->
<!-- The FreeBSD Documentation Project -->
<sect><heading>Russian Language (KOI8-R encoding)<label id="russian"></heading>
<p><em>Contributed by &a.ache;<newline>
1 May 1997</em>.
<p>See more info about KOI8-R encoding at
<htmlurl url="http://www.nagual.pp.ru/~ache/koi8.html"
name="KOI8-R References (Russian Net Character Set)">.
<sect1><heading>Console Setup<label id="russian:console"></heading>
<p>
<enum>
<item>Russian console entry in <tt>/etc/rc.conf</tt> should looks like
<verb>
keymap=ru.koi8-r
keychange="61 ^[[K"
scrnmap=koi8-r2cp866
font8x16=cp866b-8x16
font8x14=cp866-8x14
font8x8=cp866-8x8
</verb>
<p>
<it>NOTE:</it> ^[ means that real ESC character must be entered into
<tt>/etc/rc.conf</tt>,
not just ^[ string.
<p>
This tuning means KOI8-R keyboard with Alternative
screen font mapped to KOI8-R encoding to
preserve pseudographics, <it>Gray Delete</it> key remapped to match Russian
<tt>termcap(5)</tt> entry for FreeBSD console.
<p>
RUS/LAT switch will be <bf>CapsLock</bf>. Old CapsLock function still
available via <bf>Shift+CapsLock</bf>. CapsLock LED will
indicate RUS mode, not CapsLock mode.
<item>For each <tt>ttyv?</tt> entry in <tt>/etc/ttys</tt>
change terminal type from <tt>cons25</tt> to
<tt>cons25r</tt>, i.e. each entry should looks like
<verb>
ttyv0 "/usr/libexec/getty Pc" cons25r on secure
</verb>
</enum>
<sect1><heading>Locale Setup<label id="russian:locale"></heading>
<p><label id="russian:env">
There is two environment variables for locale setup:
<itemize>
<item><tt>LANG</tt>
for POSIX <tt>setlocale(3)</tt> family functions;
<item><tt>MM_CHARSET</tt>
for applications MIME chararter set.
</itemize>
<p>
The best way is using <tt>/etc/login.conf</tt>
<tt>russian</tt> user's login class
in <tt>passwd(5)</tt> entry login class position.
See <tt>login.conf(5)</tt> for details.
<sect2><heading>Login Class Method<label id="russian:class"></heading>
<p>
First of all check your <tt>/etc/login.conf</tt> have
<tt>russian</tt> login class, this entry may looks like:
<verb>
russian:Russian Users Accounts:\
:charset=KOI8-R:\
:lang=ru_RU.KOI8-R:\
:tc=default:
</verb>
<sect3><heading>How to do it with vipw(8)</heading>
<p>
If you use <tt>vipw(8)</tt> for adding new users,
<tt>/etc/master.passwd</tt>
entry should looks like:
<verb>
user:password:1111:11:russian:0:0:User Name:/home/user:/bin/csh
</verb>
<sect3><heading>How to do it with adduser(8)</heading>
<p>
If you use <tt>adduser(8)</tt> for adding new users:
<itemize>
<item>Set
<verb>
defaultclass = russian
</verb>
in <tt>/etc/adduser.conf</tt>
(you must enter <tt>default</tt> class for all non-Russian
users in this case);
<newline><newline>
<item>Alternative variant will be answering <tt>russian</tt>
each time when you see
<verb>
Enter login class: default []:
</verb>
prompt from <tt>adduser(8)</tt>;
<newline><newline>
<item>Another variant: call
<verb>
# adduser -class russian
</verb>
for each Russian user you want to add.
</itemize>
<sect3><heading>How to do it with pw(8)</heading>
<p>
If you use <tt>pw(8)</tt> for adding new users, call it in this form:
<verb>
# pw useradd user_name -L russian
</verb>
<sect2><heading>Shell Startup Files Method</heading>
<p>
If you don't want to use
<ref id="russian:class" name="login class method">
for some reasons, just set
this
<ref id="russian:env" name="two environment variables">
in the following shell startup files:
<itemize>
<item><tt>/etc/profile</tt>:
<verb>
LANG=ru_RU.KOI8-R; export LANG
MM_CHARSET=KOI8-R; export MM_CHARSET
</verb>
<item><tt>/etc/csh.login</tt>:
<verb>
setenv LANG ru_RU.KOI8-R
setenv MM_CHARSET KOI8-R
</verb>
</itemize>
<p>
Alternatively you can add this instructions to
<itemize>
<item><tt>/usr/share/skel/dot.profile</tt>:
<p>
(similar to <tt>/etc/profile</tt> above);
<item><tt>/usr/share/skel/dot.login</tt>:
<p>
(similar to <tt>/etc/csh.login</tt> above).
</itemize>
<sect1><heading>X Window Setup<label id="russian:xwindow"></heading>
<p>
Step by step instructions:
<enum>
<item>Do
<ref id="russian:locale" name="locale setup"> first as described.
<p>
<it>NOTE:</it><label id="russian:note">
Russian KOI8-R locale may not work with old XFree86 versions
(lower than 3.2.1 + locale/keyboard patches).
XFree86 port from <tt>/usr/ports/x11/XFree86</tt> already have
all neccessary patches, so it will work, if you install XFree86
from this port.
Basically, XFree86 version shipped with latest FreeBSD distribution should
work too unless somebody forget to apply port patches to it.
<item>Go to <tt>/usr/ports/russian/X.language</tt> directory and say
<verb>
# make all install
</verb>
there. This port install latest version of KOI8-R fonts.
<p>
Check find <tt>"Files"</tt> section in your <tt>/etc/XF86Config</tt>,
following lines must be before any other <tt>FontPath</tt> entries:
<verb>
FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/misc"
FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/75dpi"
FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/100dpi"
</verb>
<p>
If you use high resolution video mode, swap 75 dpi and
100 dpi lines.
<item>To activate Russian keyboard add
<verb>
XkbKeymap "xfree86(ru)"
</verb>
line into <tt>"Keyboard"</tt> section in your <tt>/etc/XF86Config</tt>,
also make sure that <tt>XkbDisable</tt> is turned off (commented out)
there.
<p>
RUS/LAT switch will be <bf>CapsLock</bf>. Old CapsLock function still
available via <bf>Shift+CapsLock</bf> (in LAT mode only).
<p>
<it>NOTE:</it>
Russian XKB keyboard may not work with old XFree86 versions,
see <ref id="russian:note" name="locale note"> for more info.
</enum>

View file

@ -1,891 +0,0 @@
<!-- $Id$ -->
<!-- The FreeBSD Documentation Project -->
<!--
<title>An introduction to SCSI and its use with FreeBSD</title>
<author>(c) 1995-1996, Wilko Bulte, <tt/wilko@yedi.iaf.nl/
<date>Sat Jul 6 20:57:39 MET DST 1996</date>
Copyright 1995-1996, Wilko C. Bulte, Arnhem, The Netherlands
<abstract>
This document attempts to describe the background of SCSI, its
(mis)use with FreeBSD and some common pitfalls.
</abstract>
-->
<sect1><heading>What is SCSI?<label id="scsi"></heading>
<p><em>Copyright &copy; 1995, &a.wilko;.<newline>July 6, 1996.</em>
SCSI is an acronym for Small Computer Systems Interface. It is an
ANSI standard that has become one of the leading I/O buses in the
computer industry. The foundation of the SCSI standard was laid by
Shugart Associates (the same guys that gave the world the first
mini floppy disks) when they introduced the SASI bus (Shugart Associates
Standard Interface).
After some time an industry effort was started to come to a more strict
standard allowing devices from different vendors to work together.
This effort was recognized in the ANSI SCSI-1 standard. The SCSI-1
standard (approx 1985) is rapidly becoming obsolete. The current
standard is SCSI-2 (see <ref id="scsi:further-reading" name="Further
reading">), with SCSI-3 on the drawing boards.
In addition to a physical interconnection standard, SCSI defines a
logical (command set) standard to which disk devices must adhere.
This standard is called the Common Command Set (CCS) and was
developed more or less in parallel with ANSI SCSI-1. SCSI-2
includes the (revised) CCS as part of the standard itself. The
commands are dependent on the type of device at hand. It does not
make much sense of course to define a Write command for a
scanner.
The SCSI bus is a parallel bus, which comes in a number of
variants. The oldest and most used is an 8 bit wide bus, with
single-ended signals, carried on 50 wires. (If you do not know what
single-ended means, do not worry, that is what this document is all
about.) Modern designs also use 16 bit wide buses, with
differential signals. This allows transfer speeds of
20Mbytes/second, on cables lengths of up to 25 meters. SCSI-2
allows a maximum bus width of 32 bits, using an additional cable.
Quickly emerging are Ultra SCSI (also called Fast-20) and Ultra2
(also called Fast-40). Fast-20 is 20 mega-transfers per second
(20 Mbytes/sec on a 8 bit bus), Fast-40 is 40 mega-transfers per
second (40 Mbytes/sec on a 8 bit bus).
Of course the SCSI bus not only has data lines, but also a number
of control signals. A very elaborate protocol is part of the
standard to allow multiple devices to share the bus in an efficient
manner. In SCSI-2, the data is always checked using a separate
parity line. In pre-SCSI-2 designs parity was optional.
In SCSI-3 even faster bus types are introduced, along with a serial
SCSI busses that reduces the cabling overhead and allows a higher
maximum bus length. You might see names like SSA and Fiberchannel
in this context. None of the serial buses are currently in widespread
use (especially not in the typical FreeBSD environment). For
this reason the serial bus types are not discussed any further.
As you could have guessed from the description above, SCSI devices
are intelligent. They have to be to adhere to the SCSI standard
(which is over 2 inches thick BTW). So, for a hard disk drive for
instance you do not specify a head/cylinder/sector to address a
particular block, but simply the number of the block you want.
Elaborate caching schemes, automatic bad block replacement etc
are all made possible by this 'intelligent device' approach.
On a SCSI bus, each possible pair of devices can communicate. Whether
their function allows this is another matter, but the standard does
not restrict it. To avoid signal contention, the 2 devices have to
arbitrate for the bus before using it.
The philosophy of SCSI is to have a standard that allows
older-standard devices to work with newer-standard ones. So, an
old SCSI-1 device should normally work on a SCSI-2 bus. I say
Normally, because it is not absolutely sure that the implementation
of an old device follows the (old) standard closely enough to be
acceptable on a new bus. Modern devices are usually more
well-behaved, because the standardization has become more strict
and is better adhered to by the device manufacturers.
Generally speaking, the chances of getting a working set of
devices on a single bus is better when all the devices are SCSI-2
or newer. This implies that you do not have to dump all your old
stuff when you get that shiny 2Gb disk: I own a system on which a
pre-SCSI-1 disk, a SCSI-2 QIC tape unit, a SCSI-1 helical scan
tape unit and 2 SCSI-1 disks work together quite happily. From
a performance standpoint you might want to separate your older
and newer (=faster) devices however.
<sect2><heading>Components of SCSI</heading>
<p>
<!-- <sect3><heading>A <it>smart</it> interface</heading>
<p> -->
As said before, SCSI devices are smart. The idea is to put the
knowledge about intimate hardware details onto the SCSI device
itself. In this way, the host system does not have to worry
about things like how many heads are hard disks has, or how many
tracks there are on a specific tape device. If you are curious,
the standard specifies commands with which you can query your
devices on their hardware particulars. FreeBSD uses this
capability during boot to check out what devices are connected
and whether they need any special treatment.
The advantage of intelligent devices is obvious: the device
drivers on the host can be made in a much more generic fashion,
there is no longer a need to change (and qualify!) drivers for
every odd new device that is introduced.
<!-- <sect3><heading>Do's and don't's on interconnections</heading>
<p> -->
For cabling and connectors there is a golden rule: get good
stuff. With bus speeds going up all the time you will save
yourself a lot of grief by using good material.
So, gold plated connectors, shielded cabling, sturdy connector
hoods with strain reliefs etc are the way to go. Second golden
rule: do no use cables longer than necessary. I once spent 3 days
hunting down a problem with a flaky machine only to discover that
shortening the SCSI bus by 1 meter solved the problem. And the
original bus length was well within the SCSI specification.
<sect2><heading>SCSI bus types</heading>
<p>
From an electrical point of view, there are two incompatible bus
types: single-ended and differential. This means that there are
two different main groups of SCSI devices and controllers, which
cannot be mixed on the same bus. It is possible however to use
special converter hardware to transform a single-ended bus into a
differential one (and vice versa). The differences between the
bus types are explained in the next sections.
In lots of SCSI related documentation there is a sort of jargon
in use to abbreviate the different bus types. A small list:
<itemize>
<item>FWD: Fast Wide Differential
<item>FND: Fast Narrow Differential
<item>SE: Single Ended
<item>FN: Fast Narrow
<item>etc.
</itemize>
With a minor amount of imagination one can usually imagine what
is meant.
Wide is a bit ambiguous, it can indicate 16 or 32 bit buses. As
far as I know, the 32 bit variant is not (yet) in use, so wide
normally means 16 bit.
Fast means that the timing on the bus is somewhat different, so
that on a narrow (8 bit) bus 10 Mbytes/sec are possible instead
of 5 Mbytes/sec for 'slow' SCSI. As discussed before, bus
speeds of 20 and 40 megatransfers/second are also emerging
(Fast-20 == Ultra SCSI and Fast-40 == Ultra2 SCSI).
It should be noted that the data lines &gt; 8 are only used for
data transfers and device addressing. The transfers of commands
and status messages etc are only performed on the lowest 8
data lines. The standard allows narrow devices to operate on
a wide bus. The usable bus width is negotiated
between the devices. You have to watch your device addressing
closely when mixing wide and narrow.
<sect3><heading>Single ended buses</heading>
<p>
A single-ended SCSI bus uses signals that are either 5 Volts or
0 Volts (indeed, TTL levels) and are relative to a COMMON
ground reference. A singled ended 8 bit SCSI bus has
approximately 25 ground lines, who are all tied to a single
`rail' on all devices. A standard single ended bus has a
maximum length of 6 meters. If the same bus is used with
fast-SCSI devices, the maximum length allowed drops to 3
meters. Fast-SCSI means that instead of 5Mbytes/sec the bus
allows 10Mbytes/sec transfers.
Fast-20 (Ultra SCSI) and Fast-40 allow for 20 and 40
megatransfers/second respectively. So, F20 is 20 Mbytes/second
on a 8 bit bus, 40 Mbytes/second on a 16 bit bus etc.
For F20 the max bus length is 1.5 meters, for F40 it
becomes 0.75 meters. Be aware that F20 is pushing
the limits quite a bit, so you will quickly find out if your
SCSI bus is electrically sound.
Please note that this means that
if some devices on your bus use 'fast' to communicate your
bus must adhere to the length restrictions for fast buses!
It is obvious that with the newer fast-SCSI devices the
bus length can become a real bottleneck. This is why the
differential SCSI bus was introduced in the SCSI-2 standard.
For connector pinning and connector types please refer to the
SCSI-2 standard (see <ref id="scsi:further-reading" name="Further
reading">) itself, connectors etc are listed there in
painstaking detail.
Beware of devices using non-standard cabling. For instance
Apple uses a 25pin D-type connecter (like the one on serial
ports and parallel printers). Considering
that the official SCSI bus needs 50 pins you can imagine
the use of this connector needs some 'creative cabling'.
The reduction of the number of ground wires they used
is a bad idea, you better stick to 50 pins cabling
in accordance with the SCSI standard. For Fast-20 and 40
do not even think about buses like this.
<sect3><heading>Differential buses</heading>
<p>
A differential SCSI bus has a maximum length of 25
meters. Quite a difference from the 3 meters for a single-ended
fast-SCSI bus. The idea behind differential signals is that
each bus signal has its own return wire. So, each signal is
carried on a (preferably twisted) pair of wires. The voltage
difference between these two wires determines whether the
signal is asserted or de-asserted. To a certain extent the
voltage difference between ground and the signal wire pair is
not relevant (do not try 10 kVolts though).
It is beyond the scope of this document to explain why this
differential idea is so much better. Just accept that
electrically seen the use of differential signals gives a much
better noise margin. You will normally find differential buses
in use for inter-cabinet connections. Because of the lower cost
single ended is mostly used for shorter buses like inside
cabinets.
There is nothing that stops you from using differential stuff
with FreeBSD, as long as you use a controller that has device
driver support in FreeBSD. As an example, Adaptec marketed the
AHA1740 as a single ended board, whereas the AHA1744 was differential.
The software interface to the host is identical for both.
<sect3><heading>Terminators</heading>
<p>
Terminators in SCSI terminology are resistor networks that are
used to get a correct impedance matching. Impedance matching
is important to get clean signals on the bus, without
reflections or ringing. If you once made a long distance
telephone call on a bad line you probably know what reflections
are. With 20Mbytes/sec traveling over your SCSI bus, you
do not want signals echoing back.
Terminators come in various incarnations, with more or less
sophisticated designs. Of course, there are internal and
external variants. Almost every SCSI device comes with a
number of sockets in which a number of resistor networks can
(must be!) installed. If you remove terminators from a device,
carefully store them. You will need them when you ever decide to
reconfigure your SCSI bus. There is enough variation in even
these simple tiny things to make finding the exact replacement
a frustrating business. There are also SCSI devices that have
a single jumper to enable or disable a built-in terminator.
There are special terminators you can stick onto a flat cable
bus. Others look like external connectors, or a connector hood
without a cable. So, lots of choice as you can see.
There is much debate going on if and when you should switch
from simple resistor (passive) terminators to active
terminators. Active terminators contain slightly more elaborate
circuit to give cleaner bus signals. The general consensus
seems to be that the usefulness of active termination increases
when you have long buses and/or fast devices. If you ever have
problems with your SCSI buses you might consider trying an
active terminator. Try to borrow one first, they reputedly are
quite expensive.
Please keep in mind that terminators for differential and
single-ended buses are not identical. You should <bf>not
mix</bf> the two variants.
OK, and now where should you install your terminators? This is
by far the most misunderstood part of SCSI. And it is by far
the simplest. The rule is: <bf>every SCSI bus has 2 (two)
terminators, one at each end of the bus.</bf> So, two and not
one or three or whatever. Do yourself a favor and stick to
this rule. It will save you endless grief, because wrong
termination has the potential to introduce highly mysterious
bugs.
A common pitfall is to have an internal (flat)cable in a
machine and also an external cable attached to the
controller. It seems almost everybody forgets to remove the
terminators from the controller. The terminator must now be on
the last external device, and not on the controller! In
general, every reconfiguration of a SCSI bus must pay attention
to this.
What I did myself is remove all terminators from my SCSI
devices and controllers. I own a couple of external
terminators, for both the Centronics-type external cabling and
for the internal flat cable connectors. This makes
reconfiguration much easier.
On modern devices, sometimes integrated terminators are
used. These things are special purpose integrated circuits that
can be dis/en-abled with a control pin. It is not necessary to
physically remove them from a device. You may find them on
newer host adapters, sometimes they even are software
configurable, using some sort of setup tool. Consult you
documentation!
<sect3><heading>Terminator power</heading>
<p>
The terminators discussed in the previous chapter need power to
operate properly. On the SCSI bus, a line is dedicated to this
purpose. So, simple huh?
Not so. Each device can provide its own terminator power to
the terminator sockets it has on-device. But if you have
external terminators, or when the device supplying the
terminator power to the SCSI bus line is switched off you are
in trouble.
The idea is that initiators (these are devices that initiate
actions on the bus, a discussion follows) must supply
terminator power. All SCSI devices are allowed (but not
required) to supply terminator power.
To allow for un-powered devices on a bus, the terminator
power must be supplied to the bus via a diode. This prevents
the backflow of current to un-powered devices.
To prevent all kinds of nastiness, the terminator power is
usually fused. As you can imagine, fuses might blow. This can,
but does not have to, lead to a non functional bus. If multiple
devices supply terminator power, a single blown fuse will not
put you out of business. A single supplier with a blown fuse
certainly will. Clever external terminators sometimes have a
LED indication that shows whether terminator power is present.
In newer designs auto-restoring fuses that 'reset'
themselves after some time are sometimes used.
<sect3><heading>Device addressing</heading>
<p>
Because the SCSI bus is, ehh, a bus there must be a way to
distinguish or address the different devices connected to it.
This is done by means of the SCSI or target ID. Each device has
a unique target ID. You can select the ID to which a device
must respond using a set of jumpers, or a dip switch, or
something similar. Consult the documentation of your device for
more information.
Beware of multiple devices configured to use the same ID. Chaos
normally reigns in this case. A pitfall is that one of the
devices sharing the same ID sometimes even manages to answer
to I/O requests!
For an 8 bit bus, a maximum of 8 targets is possible. The
maximum is 8 because the selection is done bitwise using the 8
data lines on the bus. For wide buses this increases to the
number of data lines.
The higher the SCSI target ID, the higher the priority the
devices has. When it comes to arbitration between devices that
want to use the bus at the same time, the device that has the
highest SCSI ID will win. This also means that the SCSI
host adapter usually uses target ID 7 (for narrow buses).
For a further subdivision, the standard allows for Logical
Units or LUNs for short. A single target ID may have multiple
LUNs. For example, a tape device including a tape changer may
have LUN 0 for the tape device itself, and LUN 1 for the
tape changer. In this way, the host system can address each of
the functional units of the tape changer as desired.
<sect3><heading>Bus layout</heading>
<p>
SCSI buses are linear. So, not shaped like Y-junctions, star
topologies, cobwebs or whatever else people might want to
invent.
You might notice that the terminator issue discussed earlier
becomes rather hairy if your bus is not linear.
The electrical characteristics, its noise margins and
ultimately the reliability of it all are tightly related to
linear bus rule.
<bf>Stick to the linear bus rule!</bf>
<sect2><heading>Using SCSI with FreeBSD</heading>
<p>
<sect3><heading>About translations, BIOSes and magic...</heading>
<p>
As stated before, you should first make sure that you have a
electrically sound bus.
When you want to use a SCSI disk on your PC as boot disk, you
must aware of some quirks related to PC BIOSes. The PC BIOS in
its first incarnation used a low level physical interface to the
hard disk. So, you had to tell the BIOS (using a setup tool or a
BIOS built-in setup) how your disk physically looked like. This
involved stating number of heads, number of cylinders, number of
sectors per track, obscure things like precompensation and
reduced write current cylinder etc.
One might be inclined to think that since SCSI disks are smart
you can forget about this. Alas, the arcane setup issue is still
present today. The system BIOS needs to know how to access your
SCSI disk with the head/cyl/sector method in order to load the
FreeBSD kernel during boot.
The SCSI host adapter or SCSI controller you have put in your
AT/EISA/PCI/whatever bus to connect your disk therefore has its
own on-board BIOS. During system startup, the SCSI BIOS takes over
the hard disk interface routines from the system BIOS. To fool the
system BIOS, the system setup is normally set to No hard disk
present. Obvious, isn't it?
The SCSI BIOS itself presents to the system a so called
<bf>translated</bf> drive. This means that a fake drive table is
constructed that allows the PC to boot the drive. This
translation is often (but not always) done using a pseudo drive
with 64 heads and 32 sectors per track. By varying the number of
cylinders, the SCSI BIOS adapts to the actual drive size. It is
useful to note that 32 * 64 / 2 = the size of your drive in
megabytes. The division by 2 is to get from disk blocks that are
normally 512 bytes in size to Kbytes.
Right. All is well now?! No, it is not. The system BIOS has
another quirk you might run into. The number of cylinders of a
bootable hard disk cannot be greater than 1024. Using the
translation above, this is a show-stopper for disks greater than
1 Gb. With disk capacities going up all the time this is causing
problems.
Fortunately, the solution is simple: just use another
translation, e.g. with 128 heads instead of 32. In most cases new
SCSI BIOS versions are available to upgrade older SCSI host
adapters. Some newer adapters have an option, in the form of a
jumper or software setup selection, to switch the translation the
SCSI BIOS uses.
It is very important that <bf>all</bf> operating systems on the
disk use the <bf>same translation</bf> to get the right idea about
where to find the relevant partitions. So, when installing
FreeBSD you must answer any questions about heads/cylinders
etc using the translated values your host adapter uses.
Failing to observe the translation issue might lead to
un-bootable systems or operating systems overwriting each
others partitions. Using fdisk you should be able to see
all partitions.
You might have heard some talk of 'lying' devices?
Older FreeBSD kernels used to report the geometry
of SCSI disks when booting. An example from one of my systems:
<verb>
aha0 targ 0 lun 0: <MICROP 1588-15MB1057404HSP4>
sd0: 636MB (1303250 total sec), 1632 cyl, 15 head, 53 sec, bytes/sec 512
</verb>
Newer kernels usually do not report this information. e.g.
<verb>
(bt0:0:0): "SEAGATE ST41651 7574" type 0 fixed SCSI 2
sd0(bt0:0:0): Direct-Access 1350MB (2766300 512 byte sectors)
</verb>
Why has this changed?
This info is retrieved from the SCSI disk itself. Newer disks
often use a technique called zone bit recording. The idea is that
on the outer cylinders of the drive there is more space so more
sectors per track can be put on them. This results in disks that
have more tracks on outer cylinders than on the inner cylinders
and, last but not least, have more capacity. You can imagine that
the value reported by the drive when inquiring about the geometry
now becomes suspect at best, and nearly always misleading. When
asked for a geometry , it is nearly always better to supply the
geometry used by the BIOS, or <em>if the BIOS is never going to know
about this disk</em>, (e.g. it is not a booting disk) to supply a
fictitious geometry that is convenient.
<sect3><heading>SCSI subsystem design</heading>
<p>
FreeBSD uses a layered SCSI subsystem. For each different
controller card a device driver is written. This driver
knows all the intimate details about the hardware it
controls. The driver has a interface to the upper layers of the
SCSI subsystem through which it receives its commands and
reports back any status.
On top of the card drivers there are a number of more generic
drivers for a class of devices. More specific: a driver for
tape devices (abbreviation: st), magnetic disks (sd), cdroms (cd)
etc. In case you are wondering where you can find this stuff, it
all lives in <tt>/sys/scsi</tt>. See the man pages in section 4
for more details.
The multi level design allows a decoupling of low-level bit
banging and more high level stuff. Adding support for another
piece of hardware is a much more manageable problem.
<sect3><heading>Kernel configuration</heading>
<p>
Dependent on your hardware, the kernel configuration file must
contain one or more lines describing your host adapter(s).
This includes I/O addresses, interrupts etc.
Consult the man page for your
adapter driver to get more info. Apart from that, check out
/sys/i386/conf/LINT for an overview of a kernel config file.
LINT contains every possible option you can dream of. It
does <em>not</em> imply LINT will actually get you to a
working kernel at all.
Although it is probably stating the obvious: the kernel config
file should reflect your actual hardware setup. So, interrupts,
I/O addresses etc must match the kernel config file. During
system boot messages will be displayed to indicate whether
the configured hardware was actually found.
An example loosely based on the FreeBSD 2.0.5-Release kernel config
file LINT with some added comments (between &lsqb;&rsqb;):
<verb>
# SCSI host adapters: `aha', `ahb', `aic', `bt', `nca'
#
# aha: Adaptec 154x
# ahb: Adaptec 174x
# ahc: Adaptec 274x/284x/294x
# aic: Adaptec 152x and sound cards using the Adaptec AIC-6360 (slow!)
# bt: Most Buslogic controllers
# nca: ProAudioSpectrum cards using the NCR 5380 or Trantor T130
# uha: UltraStore 14F and 34F
# sea: Seagate ST01/02 8 bit controller (slow!)
# wds: Western Digital WD7000 controller (no scatter/gather!).
#
&lsqb;For an Adaptec AHA274x, 284x etc controller&rsqb;
controller ahc0 at isa? bio irq ? vector ahcintr # port??? iomem?
&lsqb;For an Adaptec AHA174x controller&rsqb;
controller ahb0 at isa? bio irq ? vector ahbintr
&lsqb;For an Ultrastor adapter&rsqb;
controller uha0 at isa? port "IO_UHA0" bio irq ? drq 5 vector uhaintr
# Map SCSI buses to specific SCSI adapters
controller scbus0 at ahc0
controller scbus2 at ahb0
controller scbus1 at uha0
# The actual SCSI devices
disk sd0 at scbus0 target 0 unit 0 [SCSI disk 0 is at scbus 0, LUN 0]
disk sd1 at scbus0 target 1 [implicit LUN 0 if omitted]
disk sd2 at scbus1 target 3 [SCSI disk on the uha0]
disk sd3 at scbus2 target 4 [SCSI disk on the ahb0]
tape st1 at scbus0 target 6 [SCSI tape at target 6]
device cd0 at scbus? [the first ever CDROM found, no wiring]
</verb>
The example above tells the kernel to look for a ahc (Adaptec 274x)
controller, then for an Adaptec 174x board, and
so on. The lines following the controller specifications
tell the kernel to configure specific devices but
<em>only</em> attach them when they match the target ID and
LUN specified on the corresponding bus.
Wired down devices get 'first shot' at the unit numbers
so the first non 'wired down' device, is allocated the unit number
one greater than the highest 'wired down' unit number
for that kind of device.
So, if you had a SCSI tape at target ID 2 it would be
configured as st2, as the tape at target ID 6 is wired down
to unit number 1. Note that <em>wired down devices need not
be found</em>
to get their unit number. The unit number for a wired down device
is reserved for that device, even if it is turned off at boot
time. This allows the device to be turned on and brought
on-line at a later time, without rebooting. Notice that a device's
unit number has <em>no</em> relationship with its target ID on
the SCSI bus.
Below is another example of a kernel config file as used by
FreeBSD version < 2.0.5. The difference with the first example is
that devices are not 'wired down'. 'Wired down' means
that you specify which SCSI target belongs to which device.
A kernel built to the config file below will attach
the first SCSI disk it finds to sd0, the second disk to sd1
etc. If you ever removed or added a disk, all other devices
of the same type (disk in this case) would 'move around'.
This implies you have to change <tt>/etc/fstab</tt> each time.
Although the old style still works, you
are <em>strongly</em> recommended to use this new feature.
It will save you a lot of grief whenever you shift your
hardware around on the SCSI buses. So, when you re-use
your old trusty config file after upgrading from a
pre-FreeBSD2.0.5.R system check this out.
<verb>
&lsqb;driver for Adaptec 174x&rsqb;
controller ahb0 at isa? bio irq 11 vector ahbintr
&lsqb;for Adaptec 154x&rsqb;
controller aha0 at isa? port "IO_AHA0" bio irq 11 drq 5 vector ahaintr
&lsqb;for Seagate ST01/02&rsqb;
controller sea0 at isa? bio irq 5 iomem 0xc8000 iosiz 0x2000 vector seaintr
controller scbus0
device sd0 &lsqb;support for 4 SCSI harddisks, sd0 up sd3&rsqb;
device st0 &lsqb;support for 2 SCSI tapes&rsqb;
&lsqb;for the cdrom&rsqb;
device cd0 #Only need one of these, the code dynamically grows
</verb>
Both examples support SCSI disks. If during boot more
devices of a specific type (e.g. sd disks) are found than are
configured in the booting kernel, the system will simply allocate
more devices, incrementing the unit number starting at the last
number 'wired down'. If there are no 'wired down' devices
then counting starts at unit 0.
Use <tt>man 4 scsi</tt> to check for the latest info on the SCSI
subsystem. For more detailed info on host adapter drivers use eg
<tt>man 4 aha</tt> for info on the Adaptec 154x driver.
<sect3><heading>Tuning your SCSI kernel setup</heading>
<p>
Experience has shown that some devices are slow to respond to INQUIRY
commands after a SCSI bus reset (which happens at boot time).
An INQUIRY command is sent by the kernel on boot to see what
kind of device (disk, tape, CDROM etc) is connected to a
specific target ID. This process is called device probing by the way.
To work around the 'slow response' problem, FreeBSD allows a
tunable delay time
before the SCSI devices are probed following a SCSI bus reset.
You can set this delay time in your kernel configuration file
using a line like:
<verb>
options SCSI_DELAY=15 #Be pessimistic about Joe SCSI device
</verb>
This line sets the delay time to 15 seconds. On my own system I had to
use 3 seconds minimum to get my trusty old CDROM drive to be recognized.
Start with a high value (say 30 seconds or so) when you have problems
with device recognition. If this helps, tune it back until it just stays
working.
<sect3><heading>Rogue SCSI devices</heading>
<p>
Although the SCSI standard tries to be complete and concise, it is
a complex standard and implementing things correctly is no easy task.
Some vendors do a better job then others.
This is exactly where the 'rogue' devices come into view. Rogues are
devices that are recognized by the FreeBSD kernel as behaving slightly
(...) non-standard. Rogue devices are reported by the kernel when
booting. An example for two of my cartridge tape units:
<verb>
Feb 25 21:03:34 yedi /kernel: ahb0 targ 5 lun 0: <TANDBERG TDC 3600 -06:>
Feb 25 21:03:34 yedi /kernel: st0: Tandberg tdc3600 is a known rogue
Mar 29 21:16:37 yedi /kernel: aha0 targ 5 lun 0: <ARCHIVE VIPER 150 21247-005>
Mar 29 21:16:37 yedi /kernel: st1: Archive Viper 150 is a known rogue
</verb>
For instance, there are devices that respond to
all LUNs on a certain target ID, even if they are actually only one
device. It is easy to see that the kernel might be fooled into
believing that there are 8 LUNs at that particular target ID. The
confusion this causes is left as an exercise to the reader.
The SCSI subsystem of FreeBSD recognizes devices with bad habits by
looking at the INQUIRY response they send when probed. Because the
INQUIRY response also includes the version number of the device
firmware, it is even possible that for different firmware versions
different workarounds are used. See e.g. /sys/scsi/st.c and
/sys/scsi/scsiconf.c for more info on how this is done.
This scheme works fine, but keep in mind that it of course only
works for devices that are KNOWN to be weird. If you are the first
to connect your bogus Mumbletech SCSI CDROM you might be the one
that has to define which workaround is needed.
After you got your Mumbletech working, please send the required
workaround to the FreeBSD development team for inclusion in the
next release of FreeBSD. Other Mumbletech owners will be grateful
to you.
<sect3><heading>Multiple LUN devices</heading>
<p>
In some cases you come across devices that use multiple
logical units (LUNs) on a single SCSI ID. In most cases
FreeBSD only probes devices for LUN 0. An example are
so called bridge boards that connect 2 non-SCSI harddisks
to a SCSI bus (e.g. an Emulex MD21 found in old Sun systems).
This means that any devices with LUNs != 0 are not normally
found during device probe on system boot. To work around this
problem you must add an appropriate entry in /sys/scsi/scsiconf.c
and rebuild your kernel.
Look for a struct that is initialised like below:
<verb>
{
T_DIRECT, T_FIXED, "MAXTOR", "XT-4170S", "B5A",
"mx1", SC_ONE_LU
}
</verb>
For you Mumbletech BRIDGE2000 that has more than one LUN,
acts as a SCSI disk
and has firmware revision 123 you would add something like:
<verb>
{
T_DIRECT, T_FIXED, "MUMBLETECH", "BRIDGE2000", "123",
"sd", SC_MORE_LUS
}
</verb>
The kernel on boot scans the inquiry data it receives against
the table and acts accordingly. See the source for more info.
<sect3><heading>Tagged command queueing</heading>
<p>
Modern SCSI devices, particularly magnetic disks, support
what is called tagged command queuing (TCQ).
In a nutshell, TCQ allows the device to have multiple I/O
requests outstanding at the same time. Because the device
is intelligent, it can optimise its operations (like
head positioning) based on its own request queue. On
SCSI devices like RAID (Redundant Array of Independent
Disks) arrays the TCQ function is indispensable to take
advantage of the device's inherent parallelism.
Each I/O request is uniquely identified by a 'tag' (hence
the name tagged command queuing) and this tag is used by
FreeBSD to see which I/O in the device drivers queue is
reported as complete by the device.
It should be noted however that TCQ requires device driver
support and that some devices implemented it 'not quite
right' in their firmware. This problem bit me once, and
it leads to highly mysterious problems. In such cases,
try to disable TCQ.
<sect3><heading>Busmaster host adapters</heading>
<p>
Most, but not all, SCSI host adapters are bus mastering controllers.
This means that they can do I/O on their own without putting load onto
the host CPU for data movement.
This is of course an advantage for a multitasking operating system like
FreeBSD. It must be noted however that there might be some rough edges.
For instance an Adaptec 1542 controller can be set to use different
transfer speeds on the host bus (ISA or AT in this case). The controller
is settable to different rates because not all motherboards can handle
the higher speeds. Problems like hangups, bad data etc might be the
result of using a higher data transfer rate then your motherboard
can stomach.
The solution is of course obvious: switch to a lower data transfer rate
and try if that works better.
In the case of a Adaptec 1542, there is an option that can be put
into the kernel config file to allow dynamic determination of the
right, read: fastest feasible, transfer rate. This option is
disabled by default:
<verb>
options "TUNE_1542" #dynamic tune of bus DMA speed
</verb>
Check the man pages for the host adapter that you use. Or better
still, use the ultimate documentation (read: driver source).
<sect2><heading>Tracking down problems</heading>
<p>
The following list is an attempt to give a guideline for the most
common SCSI problems and their solutions. It is by no means
complete.
<itemize>
<item>
Check for loose connectors and cables.
<item>
Check and double check the location and number of your terminators.
<item>
Check if your bus has at least one supplier of terminator power
(especially with external terminators.
<item>
Check if no double target IDs are used.
<item>
Check if all devices to be used are powered up.
<item>
Make a minimal bus config with as little devices as possible.
<item>
If possible, configure your host adapter to use slow bus speeds.
<item>
Disable tagged command queuing to make things as simple as
possible (for a NCR hostadapter based system see man
ncrcontrol)
<item>
If you can compile a kernel, make one with the SCSIDEBUG option,
and try accessing the device with debugging turned on for
that device. If your device does not even probe at startup,
you may have to define the address of the device that
is failing, and the desired debug level in
<tt>/sys/scsi/scsidebug.h</tt>.
If it probes but just does not work, you can use the
<tt>scsi(8)</tt> command to dynamically set a debug level to
it in a running kernel (if SCSIDEBUG is defined).
This will give you COPIOUS debugging output with which to confuse
the gurus. see <tt>man 4 scsi</tt> for more exact information.
Also look at <tt>man 8 scsi</tt>.
</itemize>
<sect2><heading>Further reading<label id="scsi:further-reading"></heading>
<p>
If you intend to do some serious SCSI hacking, you might want to
have the official standard at hand:
Approved American National Standards can be purchased from ANSI at
11 West 42nd Street, 13th Floor, New York, NY 10036, Sales Dept:
(212) 642-4900. You can also buy many ANSI standards and most
committee draft documents from Global Engineering Documents, 15
Inverness Way East, Englewood, CO 80112-5704, Phone: (800)
854-7179, Outside USA and Canada: (303) 792-2181, FAX: (303) 792-
2192.
Many X3T10 draft documents are available electronically on the SCSI
BBS (719-574-0424) and on the ncrinfo.ncr.com anonymous ftp site.
Latest X3T10 committee documents are:
<itemize>
<item>AT Attachment (ATA or IDE) &lsqb;X3.221-1994&rsqb; (<em>Approved</em>)
<item>ATA Extensions (ATA-2) &lsqb;X3T10/948D Rev 2i&rsqb;
<item>Enhanced Small Device Interface (ESDI) &lsqb;X3.170-1990/X3.170a-1991&rsqb; (<em>Approved</em>)
<item>Small Computer System Interface - 2 (SCSI-2) &lsqb;X3.131-1994&rsqb; (<em>Approved</em>)
<item>SCSI-2 Common Access Method Transport and SCSI Interface Module (CAM)
&lsqb;X3T10/792D Rev 11&rsqb;
</itemize>
Other publications that might provide you with additional information are:
<itemize>
<item>"SCSI: Understanding the Small Computer System Interface", written by NCR
Corporation. Available from: Prentice Hall, Englewood Cliffs, NJ, 07632
Phone: (201) 767-5937 ISBN 0-13-796855-8
<item>"Basics of SCSI", a SCSI tutorial written by Ancot Corporation
Contact Ancot for availability information at:
Phone: (415) 322-5322 Fax: (415) 322-0455
<item>"SCSI Interconnection Guide Book", an AMP publication (dated 4/93, Catalog
65237) that lists the various SCSI connectors and suggests cabling schemes.
Available from AMP at (800) 522-6752 or (717) 564-0100
<item>"Fast Track to SCSI", A Product Guide written by Fujitsu.
Available from: Prentice Hall, Englewood Cliffs, NJ, 07632
Phone: (201) 767-5937 ISBN 0-13-307000-X
<item>"The SCSI Bench Reference", "The SCSI Encyclopedia", and the "SCSI Tutor",
ENDL Publications, 14426 Black Walnut Court, Saratoga CA, 95070
Phone: (408) 867-6642
<item>"Zadian SCSI Navigator" (quick ref. book) and "Discover the Power of SCSI"
(First book along with a one-hour video and tutorial book), Zadian Software,
Suite 214, 1210 S. Bascom Ave., San Jose, CA 92128, (408) 293-0800
</itemize>
On Usenet the newsgroups <htmlurl
url="news:comp.periphs.scsi" name="comp.periphs.scsi">
and <htmlurl url="news:comp.periphs" name="comp.periphs">
are noteworthy places to look for more info. You can also
find the SCSI-Faq there, which is posted periodically.
Most major SCSI device and host adapter suppliers operate ftp sites
and/or BBS systems. They may be valuable sources of information
about the devices you own.

View file

@ -1,62 +0,0 @@
<!-- $Id: sections.sgml,v 1.23 1997/05/01 03:06:32 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
<!-- Entities containing all the pieces of the handbook are -->
<!-- defined here -->
<!ENTITY bibliography SYSTEM "bibliography.sgml">
<!ENTITY basics SYSTEM "basics.sgml">
<!ENTITY booting SYSTEM "booting.sgml">
<!ENTITY contrib SYSTEM "contrib.sgml">
<!ENTITY ctm SYSTEM "ctm.sgml">
<!ENTITY cvsup SYSTEM "cvsup.sgml">
<!ENTITY current SYSTEM "current.sgml">
<!ENTITY stable SYSTEM "stable.sgml">
<!ENTITY crypt SYSTEM "crypt.sgml">
<!ENTITY development SYSTEM "development.sgml">
<!ENTITY dialup SYSTEM "dialup.sgml">
<!ENTITY dialout SYSTEM "dialout.sgml">
<!ENTITY diskless SYSTEM "diskless.sgml">
<!ENTITY dma SYSTEM "dma.sgml">
<!ENTITY eresources SYSTEM "eresources.sgml">
<!ENTITY esdi SYSTEM "esdi.sgml">
<!ENTITY firewalls SYSTEM "firewalls.sgml">
<!ENTITY goals SYSTEM "goals.sgml">
<!ENTITY glossary SYSTEM "glossary.sgml">
<!ENTITY history SYSTEM "history.sgml">
<!ENTITY hw SYSTEM "hw.sgml">
<!ENTITY install SYSTEM "install.sgml">
<!ENTITY term SYSTEM "term.sgml">
<!ENTITY isdn SYSTEM "isdn.sgml">
<!ENTITY kerberos SYSTEM "kerberos.sgml">
<!ENTITY kernelconfig SYSTEM "kernelconfig.sgml">
<!ENTITY kerneldebug SYSTEM "kerneldebug.sgml">
<!ENTITY kernelopts SYSTEM "kernelopts.sgml">
<!ENTITY linuxemu SYSTEM "linuxemu.sgml">
<!ENTITY mail SYSTEM "mail.sgml">
<!ENTITY memoryuse SYSTEM "memoryuse.sgml">
<!ENTITY mirrors SYSTEM "mirrors.sgml">
<!ENTITY nfs SYSTEM "nfs.sgml">
<!ENTITY nutshell SYSTEM "nutshell.sgml">
<!ENTITY pgpkeys SYSTEM "pgpkeys.sgml">
<!ENTITY policies SYSTEM "policies.sgml">
<!ENTITY porting SYSTEM "porting.sgml">
<!ENTITY ports SYSTEM "ports.sgml">
<!ENTITY ppp SYSTEM "ppp.sgml">
<!ENTITY printing SYSTEM "printing.sgml">
<!ENTITY quotas SYSTEM "quotas.sgml">
<!ENTITY relnotes SYSTEM "relnotes.sgml">
<!ENTITY routing SYSTEM "routing.sgml">
<!ENTITY russian SYSTEM "russian.sgml">
<!ENTITY serial SYSTEM "serial.sgml">
<!ENTITY scsi SYSTEM "scsi.sgml">
<!ENTITY sio SYSTEM "sio.sgml">
<!ENTITY cy SYSTEM "cyclades.sgml">
<!ENTITY skey SYSTEM "skey.sgml">
<!ENTITY slipc SYSTEM "slipc.sgml">
<!ENTITY slips SYSTEM "slips.sgml">
<!ENTITY submitters SYSTEM "submitters.sgml">
<!ENTITY sup SYSTEM "sup.sgml">
<!ENTITY synching SYSTEM "synching.sgml">
<!ENTITY uart SYSTEM "uart.sgml">
<!ENTITY userppp SYSTEM "userppp.sgml">

View file

@ -1,64 +0,0 @@
<!-- This is an SGML document in the linuxdoc DTD of the Tutorial for
Configuring a FreeBSD for Dialup Services by Guy Helmer.
$Id$
The FreeBSD Documentation Project
<!DOCTYPE linuxdoc PUBLIC "-//FreeBSD//DTD linuxdoc//EN">
<linuxdoc>
<article>
<title> Serial Basics
<author> FAQ
<date> 24 Nov 1996, (c) 1996
<abstract> This section outlines some of the basics to get your serial ports working. This is really just a stepping stone into the section on PPP or Dialout if you are interested in modems.
</abstract>
<toc>
-->
<sect><heading>Serial Basics<label id="serial"></heading>
<p><em>Assembled from FAQ.</em>
This section should give you some general information about serial ports. If you do not find what you want here, check into the Terminal and Dialup sections of the handbook.
<p>
The <tt/ttydX/ (or <tt/cuaaX/) device is the regular device
you will want to open for your applications. When a process opens
the device, it will have a default set of terminal I/O settings.
You can see these settings with the command
<verb>
stty -a -f /dev/ttyd1
</verb>
When you change the settings to this device, the settings are in
effect until the device is closed. When it is reopened, it goes
back to the default set. To make changes to the default set, you
can open and adjust the settings of the ``initial state'' device.
For example, to turn on <tt/CLOCAL/ mode, 8 bits, and
<tt>XON/XOFF</tt> flow control by default for ttyd5, do:
<verb>
stty -f /dev/ttyid5 clocal cs8 ixon ixoff
</verb>
A good place to do this is in <tt>/etc/rc.serial</tt>. Now, an
application will have these settings by default when it opens
<tt/ttyd5/. It can still change these settings to its liking,
though.
You can also prevent certain settings from being changed by an
application by making adjustments to the ``lock state'' device.
For example, to lock the speed of <tt/ttyd5/ to 57600 bps, do
<verb>
stty -f /dev/ttyld5 57600
</verb>
Now, an application that opens <tt/ttyd5/ and tries to change the
speed of the port will be stuck with 57600 bps.
Naturally, you should make the initial state and lock state
devices writable only by <tt/root/. The <tt/MAKEDEV/ script does
<bf/NOT/ do this when it creates the device entries.

View file

@ -1,207 +0,0 @@
<!-- $Id$ -->
<!-- The FreeBSD Documentation Project -->
<!--
<!DOCTYPE linuxdoc PUBLIC "-//FreeBSD//DTD linuxdoc//EN" [
<!ENTITY % authors SYSTEM "authors.sgml">
%authors;
]>
-->
<sect2><heading>Configuring the <tt>sio</tt> driver<label id="sio"></heading>
<p>The <tt>sio</tt> driver provides support for NS8250-,
NS16450-, NS16550 and NS16550A-based EIA RS-232C (CCITT
V.24) communications interfaces. Several multiport
cards are supported as well. See the <tt>sio(4)</tt>
manual page for detailed technical documentation.
<sect3><heading>Digi International (DigiBoard) PC/8</heading>
<p><em>Contributed by &a.awebster;.<newline>26 August
1995.</em>
Here is a config snippet from a machine with
a Digi International PC/8 with 16550. It has 8 modems connected
to these 8 lines, and they work just great. Do not
forget to add <tt>options COM_MULTIPORT</tt> or it
will not work very well!
<tscreen><verb>
device sio4 at isa? port 0x100 tty flags 0xb05
device sio5 at isa? port 0x108 tty flags 0xb05
device sio6 at isa? port 0x110 tty flags 0xb05
device sio7 at isa? port 0x118 tty flags 0xb05
device sio8 at isa? port 0x120 tty flags 0xb05
device sio9 at isa? port 0x128 tty flags 0xb05
device sio10 at isa? port 0x130 tty flags 0xb05
device sio11 at isa? port 0x138 tty flags 0xb05 irq 9 vector siointr
</verb></tscreen>
The trick in setting this up is that the MSB of the
flags represent the last SIO port, in this case 11 so
flags are 0xb05.
<sect3><heading>Boca 16</heading>
<p><em>Contributed by &a.whiteside;.<newline>26 August
1995.</em>
The procedures to make a Boca 16 pord board with
FreeBSD are pretty straightforward, but you will need
a couple things to make it work:
<enum>
<item>You either need the kernel sources installed
so you can recompile the necessary options or
you will need someone else to compile it for you.
The 2.0.5 default kernel does <bf>not</bf> come with
multiport support enabled and you will need to add
a device entry for each port anyways.
</item>
<item>Two, you will need to know the interrupt and IO
setting for your Boca Board so you can set these
options properly in the kernel.</item>
</enum>
One important note - the actual UART chips for the
Boca 16 are in the connector box, not on the internal
board itself. So if you have it unplugged, probes of
those ports will fail. I have never tested booting with
the box unplugged and plugging it back in, and I
suggest you do not either.
If you do not already have a custom kernel
configuration file set up, refer to <ref
id="kernelconfig" name="Kernel Configuration"> for
general procedures. The following are the specifics
for the Boca 16 board and assume you are using the
kernel name MYKERNEL and editing with vi.
<enum>
<item>Add the line
<tscreen><verb>
options COM_MULTIPORT
</verb></tscreen>
to the config file.
</item>
<item>Where the current <tt>device sio
<em>xxx</em></tt> lines are, you will need to add
16 more devices. <em>Only the last device
includes the interrupt vector for the
board</em>. (See the <tt>sio(4)</tt> manual page
for detail as to why.)
The following example is for a Boca Board with an
interrupt of 3, and a base IO address 100h. The
IO address for Each port is +8 hexadecimal from
the previous port, thus the 100h, 108h, 110h...
addresses.
<tscreen><verb>
device sio1 at isa? port 0x100 tty flags 0x1005
device sio2 at isa? port 0x108 tty flags 0x1005
device sio3 at isa? port 0x110 tty flags 0x1005
device sio4 at isa? port 0x118 tty flags 0x1005
[...]
device sio15 at isa? port 0x170 tty flags 0x1005
device sio16 at isa? port 0x178 tty flags 0x1005 irq 3 vector siointr
</verb></tscreen>
The flags entry <em>must</em> be changed from
this example unless you are using the exact same
sio assignments. Flags are set according to
0x<em>MYY</em> where <em>M</em> indicates the
minor number of the master port (the last port on
a Boca 16) and <em>YY</em> indicates if FIFO is
enabled or disabled(enabled), IRQ sharing is
used(yes) and if there is an AST/4 compatible IRQ
control register(no).
In this example,
<tscreen><verb>
flags 0x1005
</verb></tscreen>
indicates that the master port is sio16. If I
added another board and assigned sio17 through
sio28, the flags for all 16 ports on
<em>that</em> board would be 0x1C05, where 1C
indicates the minor number of the master port.
Do not change the 05 setting.</item>
<item>Save and complete the kernel configuration,
recompile, install and reboot.
Presuming you have successfully installed the
recompiled kernel and have it set to the correct
address and IRQ, your boot message should
indicate the successful probe of the Boca ports
as follows: (obviously the sio numbers, IO and
IRQ could be different)
<tscreen><verb>
sio1 at 0x100-0x107 flags 0x1005 on isa
sio1: type 16550A (multiport)
sio2 at 0x108-0x10f flags 0x1005 on isa
sio2: type 16550A (multiport)
sio3 at 0x110-0x117 flags 0x1005 on isa
sio3: type 16550A (multiport)
sio4 at 0x118-0x11f flags 0x1005 on isa
sio4: type 16550A (multiport)
sio5 at 0x120-0x127 flags 0x1005 on isa
sio5: type 16550A (multiport)
sio6 at 0x128-0x12f flags 0x1005 on isa
sio6: type 16550A (multiport)
sio7 at 0x130-0x137 flags 0x1005 on isa
sio7: type 16550A (multiport)
sio8 at 0x138-0x13f flags 0x1005 on isa
sio8: type 16550A (multiport)
sio9 at 0x140-0x147 flags 0x1005 on isa
sio9: type 16550A (multiport)
sio10 at 0x148-0x14f flags 0x1005 on isa
sio10: type 16550A (multiport)
sio11 at 0x150-0x157 flags 0x1005 on isa
sio11: type 16550A (multiport)
sio12 at 0x158-0x15f flags 0x1005 on isa
sio12: type 16550A (multiport)
sio13 at 0x160-0x167 flags 0x1005 on isa
sio13: type 16550A (multiport)
sio14 at 0x168-0x16f flags 0x1005 on isa
sio14: type 16550A (multiport)
sio15 at 0x170-0x177 flags 0x1005 on isa
sio15: type 16550A (multiport)
sio16 at 0x178-0x17f irq 3 flags 0x1005 on isa
sio16: type 16550A (multiport master)
</verb></tscreen>
If the messages go by too fast to see, <tt>dmesg
&gt; more</tt> will show you the boot
messages.</item>
<item>Next, appropriate entries in <tt>/dev</tt> for the devices
must be made using the <tt>/dev/MAKEDEV</tt>
script. After becoming root:
<tscreen>
# cd /dev<newline>
# ./MAKEDEV tty1<newline>
# ./MAKEDEV cua1<newline>
<em>(everything in between)</em><newline>
# ./MAKEDEV ttyg<newline>
# ./MAKEDEV cuag
</tscreen>
If you do not want or need callout devices for some
reason, you can dispense with making the <tt>cua*</tt>
devices.</item>
<item>If you want a quick and sloppy way to make
sure the devices are working, you can simply plug
a modem into each port and (as root) <tt>echo at
&gt; ttyd*</tt> for each device you have
made. You <em>should</em> see the RX lights flash
for each working port.</item>
</enum>

View file

@ -1,302 +0,0 @@
<!-- $Id$ -->
<!-- The FreeBSD Documentation Project -->
<!--
Copyright 1995 Massachusetts Institute of Technology
Permission to use, copy, modify, and distribute this software and
its documentation for any purpose and without fee is hereby
granted, provided that both the above copyright notice and this
permission notice appear in all copies, that both the above
copyright notice and this permission notice appear in all
supporting documentation, and that the name of M.I.T. not be used
in advertising or publicity pertaining to distribution of the
software without specific, written prior permission. M.I.T. makes
no representations about the suitability of this software for any
purpose. It is provided "as is" without express or implied
warranty.
THIS SOFTWARE IS PROVIDED BY M.I.T. ``AS IS''. M.I.T. DISCLAIMS
ALL EXPRESS OR IMPLIED WARRANTIES WITH REGARD TO THIS SOFTWARE,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT
SHALL M.I.T. 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.
-->
<sect><heading>S/Key<label id="skey"></heading>
<p><em>Contributed by &a.wollman;<newline>25 September 1995.</em>
<p>S/Key is a one-time password scheme based on a one-way hash function
(in our version, this is MD4 for compatibility; other versions have
used MD5 and DES-MAC). S/Key has been a standard part of all FreeBSD
distributions since version 1.1.5, and is also implemented on a large
and growing number of other systems. S/Key is a registered trademark
of Bell Communications Research, Inc.
<!-- XXX - is there a better word to use than UNIX? -->
<p>There are three different sorts of passwords which we will talk about
in the discussion below. The first is your usual UNIX-style or Kerberos
password; we will call this a ``UNIX password''. The second sort is the
one-time password which is generated by the S/Key `<tt/key/' program and
accepted by the `<tt/keyinit/' program and the login prompt; we will call
this a ``one-time password''. The final sort of password is the
secret password which you give to the `<tt/key/' program (and sometimes the
`<tt/keyinit/' program) which it uses to generate one-time passwords; we will
call it a ``secret password'' or just unqualified ``password''.
<p>The secret password does not necessarily have anything to do with your
UNIX password (while they can be the same, this is not recommended).
While UNIX passwords are limited to eight characters in length, your
S/Key secret password can be as long as you like; I use seven-word
phrases. In general, the S/Key system operates completely
independently of the UNIX password system.
<p>There are in addition two other sorts of data involved in the S/Key
system; one is called the ``seed'' or (confusingly) ``key'', and
consists of two letters and five digits, and the other is the
``iteration count'' and is a number between 100 and 1. S/Key
constructs a one-time password from these components by concatenating
the seed and the secret password, then applying a one-way hash (the
RSA Data Security, Inc., MD4 secure hash function) iteration-count
times, and turning the result into six short English words. The
`<tt/login/' and `<tt/su/' programs keep track of the last one-time
password used, and the user is authenticated if the hash of the
user-provided password is equal to the previous password. Because a
one-way hash function is used, it is not possible to generate future
one-time passwords having overheard one which was successfully used;
the iteration count is decremented after each successful login to keep
the user and login program in sync. (When you get the iteration count
down to 1, it is time to reinitialize S/Key.)
<p>There are four programs involved in the S/Key system which we will
discuss below. The `<tt/key/' program accepts an iteration count, a
seed, and a secret password, and generates a one-time password. The
`<tt/keyinit/' program is used to initialized S/Key, and to change
passwords, iteration counts, or seeds; it takes either a secret
password, or an iteration count, seed, and one-time password. The
`<tt/keyinfo/' program examines the <tt>/etc/skeykeys</tt> file and
prints out the invoking user's current iteration count and seed.
Finally, the `<tt/login/' and `<tt/su/' programs contain the necessary
logic to accept S/Key one-time passwords for authentication. The
`<tt/login/' program is also capable of disallowing the use of UNIX
passwords on connections coming from specified addresses.
<p>There are four different sorts of operations we will cover. The first
is using the `<tt/keyinit/' program over a secure connection to set up
S/Key for the first time, or to change your password or seed. The
second operation is using the `<tt/keyinit/' program over an insecure
connection, in conjunction with the `<tt/key/' program over a secure
connection, to do the same. The third is using the `<tt/key/' program to
log in over an insecure connection. The fourth is using the `<tt/key/'
program to generate a number of keys which can be written down or
printed out to carry with you when going to some location without
secure connections to anywhere (like at a conference).
<sect1><heading>Secure connection initialization</heading>
<p>To initialize S/Key, change your password, or change your seed while
logged in over a secure connection (e.g., on the console of a machine),
use the `<tt/keyinit/' command without any parameters while logged in as
yourself:
<tscreen><verb>
$ keyinit
Updating wollman: ) these will not appear if you
Old key: ha73895 ) have not used S/Key before
Reminder - Only use this method if you are directly connected.
If you are using telnet or rlogin exit with no password and use keyinit -s.
Enter secret password: ) I typed my pass phrase here
Again secret password: ) I typed it again
ID wollman s/key is 99 ha73896 ) discussed below
SAG HAS FONT GOUT FATE BOOM )
</verb></tscreen>
<p>There is a lot of information here. At the `Enter secret password:'
prompt, you should enter some password or phrase (I use phrases of
minimum seven words) which will be needed to generate login keys. The
line starting `ID' gives the parameters of your particular S/Key
instance: your login name, the iteration count, and seed. When
logging in with S/Key, the system will remember these parameters and
present them back to you so you do not have to remember them. The last
line gives the particular one-time password which corresponds to those
parameters and your secret password; if you were to re-login
immediately, this one-time password is the one you would use.
<sect1><heading>Insecure connection initialization</heading>
<p>To initialize S/Key or change your password or seed over an insecure
connection, you will need to already have a secure connection to some
place where you can run the `<tt/key/' program; this might be in the form
of a desk accessory on a Macintosh, or a shell prompt on a machine you
trust (we will show the latter). You will also need to make up an
iteration count (100 is probably a good value), and you may make up
your own seed or use a randomly-generated one. Over on the insecure
connection (to the machine you are initializing), use the `<tt/keyinit -s/'
command:
<tscreen><verb>
$ keyinit -s
Updating wollman:
Old key: kh94741
Reminder you need the 6 English words from the skey command.
Enter sequence count from 1 to 9999: 100 ) I typed this
Enter new key [default kh94742]:
s/key 100 kh94742
</verb></tscreen>
To accept the default seed (which the `keyinit' program confusingly
calls a `key'), press return. Then move over to your secure
connection or S/Key desk accessory, and give it the same parameters:
<tscreen><verb>
$ key 100 kh94742
Reminder - Do not use this program while logged in via telnet or rlogin.
Enter secret password: ) I typed my secret password
HULL NAY YANG TREE TOUT VETO
</verb></tscreen>
Now switch back over to the insecure connection, and copy the one-time
password generated by `<tt/key/' over to the `<tt/keyinit/' program:
<tscreen><verb>
s/key access password: HULL NAY YANG TREE TOUT VETO
ID wollman s/key is 100 kh94742
HULL NAY YANG TREE TOUT VETO
</verb></tscreen>
The rest of the description from the previous section applies here as
well.
<sect1><heading>Diversion: a login prompt</heading>
<p>Before explaining how to generate one-time passwords, we should go
over an S/Key login prompt:
<tscreen><verb>
$ telnet himalia
Trying 18.26.0.186...
Connected to himalia.lcs.mit.edu.
Escape character is '^]'.
s/key 92 hi52030
Password:
</verb></tscreen>
Note that, before prompting for a password, the login program
prints out the iteration number and seed which you will need in order
to generate the appropriate key. You will also find a useful feature
(not shown here): if you press return at the password prompt, the
login program will turn echo on, so you can see what you are typing.
This can be extremely useful if you are attempting to type in an S/Key
by hand, such as from a printout.
<p>If this machine were configured to disallow UNIX passwords over a
connection from my machine, the prompt would have also included the
annotation `<tt>(s/key required)</tt>', indicating that only S/Key one-time
passwords will be accepted.
<sect1><heading>Generating a single one-time password</heading>
<p>Now, to generate the one-time password needed to answer this login
prompt, we use a trusted machine and the `<tt/key/' program. (There are
versions of the `<tt/key/' program from DOS and Windows machines, and there
is an S/Key desk accessory for Macintosh computers as well.) The
command-line `<tt/key/' program takes as its parameters the iteration count
and seed; you can cut-and-paste right from the login prompt starting
at ``<tt/key/'' to the end of the line. Thus:
<tscreen><verb>
$ key 92 hi52030 ) pasted from previous section
Reminder - Do not use this program while logged in via telnet or rlogin.
Enter secret password: ) I typed my secret password
ADEN BED WOLF HAW HOT STUN
</verb></tscreen>
And in the other window:
<tscreen><verb>
s/key 92 hi52030 ) from previous section
Password:
(turning echo on)
Password:ADEN BED WOLF HAW HOT STUN
Last login: Wed Jun 28 15:31:00 from halloran-eldar.l
[etc.]
</verb></tscreen>
This is the easiest mechanism <em/if/ you have a trusted machine.
<sect1><heading>Generating multiple one-time passwords</heading>
<p>Sometimes we have to go places where no trusted machines or
connections are available. In this case, it is possible to use the
`<tt/key/' command to generate a number of one-time passwords in the same
command; these can then be printed out. For example:
<tscreen><verb>
$ key -n 25 57 zz99999
Reminder - Do not use this program while logged in via telnet or rlogin.
Enter secret password:
33: WALT THY MALI DARN NIT HEAD
34: ASK RICE BEAU GINA DOUR STAG
[...]
56: AMOS BOWL LUG FAT CAIN INCH
57: GROW HAYS TUN DISH CAR BALM
</verb></tscreen>
The `<tt/-n 25/' requests twenty-five keys in sequence; the `<tt/57/' indicates
the <em/ending/ iteration number; and the rest is as before. Note that
these are printed out in <em/reverse/ order of eventual use. If you are
really paranoid, you might want to write the results down by hand;
otherwise you can cut-and-paste into `<tt/lpr/'. Note that each line shows
both the iteration count and the one-time password; you may still find
it handy to scratch off passwords as you use them.
<sect1><heading>Restricting use of UNIX passwords</heading>
<p>The configuration file <tt>/etc/skey.access</tt> can be used to
configure restrictions on the use of UNIX passwords based on the host
name, user name, terminal port, or IP address of a login session. The
complete format of the file is documented in the <em/skey.access/(5)
manual page; there are also some security cautions there which should
be read before depending on this file for security.
<p>If there is no <tt>/etc/skey.access</tt> file (which is the default
state as FreeBSD is shipped), then all users will be allowed to use
UNIX passwords. If the file exists, however, then all users will be
required to use S/Key unless explicitly permitted to do otherwise by
configuration statements in the <tt/skey.access/ file. In all cases,
UNIX passwords are permitted on the console.
<p>Here is a sample configuration file which illustrates the three most
common sorts of configuration statements:
<tscreen><verb>
permit internet 18.26.0.0 255.255.0.0
permit user jrl
permit port ttyd0
</verb></tscreen>
The first line (`<tt/permit internet/') allows users whose IP source
address (which is vulnerable to spoofing) matches the specified value
and mask, to use UNIX passwords. This should not be considered a
security mechanism, but rather, a means to remind authorized users
that they are using an insecure network and need to use S/Key for
authentication.
<p>The second line (`<tt/permit user/') allows the specified user to
use UNIX passwords at any time. Generally speaking, this should only
be used for people who are either unable to use the `<tt/key/'
program, like those with dumb terminals, or those who are uneducable.
<p>The third line (`<tt/permit port/') allows all users logging in on
the specified terminal line to use UNIX passwords; this would be used
for dial-ups.

View file

@ -1,193 +0,0 @@
<!-- $Id$ -->
<!-- The FreeBSD Documentation Project -->
<sect><heading>Setting up a SLIP client<label id="slipc"></heading>
<p><em>Contributed by &a.asami;<newline>8 Aug 1995.</em>
The following is one way to set up a FreeBSD machine for SLIP on a
static host network. For dynamic hostname assignments (i.e., your
address changes each time you dial up), you probably need to do
something much fancier.
<!--
This is just "what I did, and it worked for me". I am sharing this
just for your reference, I am no expert in SLIP nor networking so your
mileage may vary.
-->
First, determine which serial port your modem is connected to. I have
a symbolic link <tt>/dev/modem -&gt; cuaa1</tt>, and only use the modem name in my
configuration files. It can become quite cumbersome when you need to
fix a bunch of files in <tt>/etc</tt> and <tt>.kermrc</tt>'s all over the system! (Note
that <tt>/dev/cuaa0</tt> is COM1, <tt>cuaa1</tt> is COM2, etc.)
Make sure you have
<verb>
pseudo-device sl 1
</verb>
in your kernel's config file. It is included in the GENERIC kernel,
so this will not be a problem unless you deleted it.
<sect1><heading>Things you have to do only once</heading>
<p><enum>
<item>Add your home machine, the gateway and nameservers to your
<tt>/etc/hosts</tt> file. Mine looks like this:
<verb>
127.0.0.1 localhost loghost
136.152.64.181 silvia.HIP.Berkeley.EDU silvia.HIP silvia
136.152.64.1 inr-3.Berkeley.EDU inr-3 slip-gateway
128.32.136.9 ns1.Berkeley.edu ns1
128.32.136.12 ns2.Berkeley.edu ns2
</verb>
By the way, silvia is the name of the car that I had when I was
back in Japan (it is called 2?0SX here in U.S.).
<item>Make sure you have "hosts" before "bind" in your <tt>/etc/host.conf</tt>.
Otherwise, funny things may happen.
<item>Edit the file <tt>/etc/sysconfig</tt>.
<enum>
<item>Set your hostname by editing the line that says:
<verb>
hostname=myname.my.domain
</verb>
You should give it your full Internet hostname.
<item>Add sl0 to the list of network interfaces by changing the line
that says:
<verb>
network_interfaces="lo0"
</verb>
to:
<verb>
network_interfaces="lo0 sl0"
</verb>
<item>Set the startup flags of sl0 by adding a line:
<verb>
ifconfig_sl0="inet ${hostname} slip-gateway netmask 0xffffff00 up"
</verb>
<item>Designate the default router by changing the line:
<verb>
defaultrouter=NO
</verb>
to:
<verb>
defaultrouter=slip-gateway
</verb>
</enum>
<item>Make a file <tt>/etc/resolv.conf</tt> which contains:
<verb>
domain HIP.Berkeley.EDU
nameserver 128.32.136.9
nameserver 128.32.136.12
</verb>
As you can see, these set up the nameserver hosts. Of course, the
actual domain names and addresses depend on your environment.
<item>Set the password for root and toor (and any other accounts that
does not have a password). Use passwd, do not edit the <tt>/etc/passwd</tt>
or <tt>/etc/master.passwd</tt> files!
<item>Reboot your machine and make sure it comes up with the correct
hostname.
</enum>
<sect1><heading>Making a SLIP connection</heading>
<p><enum>
<item>Dial up, type "slip" at the prompt, enter your machine name and
password. The things you need to enter depends on your
environment. I use kermit, with a script like this:
<verb>
# kermit setup
set modem hayes
set line /dev/modem
set speed 115200
set parity none
set flow rts/cts
set terminal bytesize 8
set file type binary
# The next macro will dial up and login
define slip dial 643-9600, input 10 =>, if failure stop, -
output slip\x0d, input 10 Username:, if failure stop, -
output silvia\x0d, input 10 Password:, if failure stop, -
output ***\x0d, echo \x0aCONNECTED\x0a
</verb>
(of course, you have to change the hostname and password to fit
yours). Then you can just type "slip" from the kermit prompt to
get connected.
<bf>Note</bf>: leaving your password in plain text anywhere in the
filesystem is generally a BAD idea. Do it at your own risk. I am
just too lazy.
<item>Leave the kermit there (you can suspend it by "z") and as root,
type
<verb>
slattach -h -c -s 115200 /dev/modem
</verb>
if you are able to "ping" hosts on the other side of the router,
you are connected! If it does not work, you might want to try "-a"
instead of "-c" as an argument to slattach.
</enum>
<sect1><heading>How to shutdown the connection</heading>
<p>Type "kill -INT `cat /var/run/slattach.modem.pid`" (as root) to
kill slattach. Then go back to kermit ("fg" if you suspended it)
and exit from it ("q").
The slattach man page says you have to use "ifconfig sl0 down" to
mark the interface down, but this does not seem to make any
difference for me. ("ifconfig sl0" reports the same thing.)
Some times, your modem might refuse to drop the carrier (mine
often does). In that case, simply start kermit and quit it again.
It usually goes out on the second try.
<sect1><heading>Troubleshooting</heading>
<p>If it does not work, feel free to ask me. The things that people
tripped over so far:
<itemize>
<item>Not using "-c" or "-a" in slattach (I have no idea why this can be
fatal, but adding this flag solved the problem for at least one
person)
<item>Using "s10" instead of "sl0" (might be hard to see the difference on
some fonts).
<item>Try "ifconfig sl0" to see your interface status. I get:
<verb>
silvia# ifconfig sl0
sl0: flags=10<POINTOPOINT>
inet 136.152.64.181 --> 136.152.64.1 netmask ffffff00
</verb>
<item>Also, <tt>netstat -r</tt> will give the routing table, in case you get
the "no route to host" messages from ping. Mine looks like:
<verb>
silvia# netstat -r
Routing tables
Destination Gateway Flags Refs Use IfaceMTU Rtt
Netmasks:
(root node)
(root node)
Route Tree for Protocol Family inet:
(root node) =>
default inr-3.Berkeley.EDU UG 8 224515 sl0 - -
localhost.Berkel localhost.Berkeley UH 5 42127 lo0 - 0.438
inr-3.Berkeley.E silvia.HIP.Berkele UH 1 0 sl0 - -
silvia.HIP.Berke localhost.Berkeley UGH 34 47641234 lo0 - 0.438
(root node)
</verb>
(this is after transferring a bunch of files, your numbers should be
smaller).
</itemize>

View file

@ -1,509 +0,0 @@
<!-- $Id$
This is an SGML version in the linuxdoc DTD of the SLIP Server
FAQ by Guy Helmer.
This guide provides instruction in configuring and preparing
a FreeBSD system to be a dialup SLIP server.
<title>
Setting up FreeBSD as a SLIP Server
<author>Guy Helmer, <tt/ghelmer@alpha.dsu.edu/
<date>v1.0, 15 May 1995
-->
<sect><heading>Setting up a SLIP server<label id="slips"></heading>
<p><em>Contributed by &a.ghelmer;.<newline>
v1.0, 15 May 1995.</em>
This document provides suggestions for setting up SLIP Server services
on a FreeBSD system, which typically means configuring your system to
automatically startup connections upon login for remote SLIP clients.
The author has written this document based on his experience;
however, as your system and needs may be different, this document may
not answer all of your questions, and the author cannot be responsible
if you damage your system or lose data due to attempting to follow the
suggestions here.
This guide was originally written for SLIP Server services on a
FreeBSD 1.x system. It has been modified to reflect changes in the
pathnames and the removal of the SLIP interface compression flags in
early versions of FreeBSD 2.X, which appear to be the only major
changes between FreeBSD versions. If you do encounter mistakes in
this document, please email the author with enough information to
help correct the problem.
<sect1><heading>Prerequisites<label id="slips:prereqs"></>
<p>
This document is very technical in nature, so background knowledge is
required. It is assumed that you are familiar with the TCP/IP network
protocol, and in particular, network and node addressing, network
address masks, subnetting, routing, and routing protocols, such as
RIP. Configuring SLIP services on a dial-up server requires a
knowledge of these concepts, and if you are not familiar with them,
please read a copy of either Craig Hunt's <em>TCP/IP Network
Administration</em> published by O'Reilly &amp; Associates, Inc. (ISBN
Number 0-937175-82-X), or Douglas Comer's books on the TCP/IP
protocol.
It is further assumed that you have already setup your modem(s) and
configured the appropriate system files to allow logins through your
modems. If you have not prepared your system for this yet, please see
the tutorial for configuring dialup services; if you have a World-Wide
Web browser available, browse the list of tutorials at
<tt>http://www.freebsd.org/</tt>; otherwise, check the place
where you found this document for a document named <tt/dialup.txt/ or
something similar. You may also want to check the manual pages for
<tt/sio(4)/ for information on the serial port device driver and
<tt/ttys(5)/, <tt/gettytab(5)/, <tt/getty(8)/, &amp; <tt/init(8)/ for
information relevant to configuring the system to accept logins on
modems, and perhaps <tt/stty(1)/ for information on setting serial
port parameters &lsqb;such as <tt/clocal/ for directly-connected
serial interfaces&rsqb;.
<sect1><heading>Quick Overview</heading>
<p>
In its typical configuration, using FreeBSD as a SLIP server works as
follows: a SLIP user dials up your FreeBSD SLIP Server system and logs
in with a special SLIP login ID that uses <tt>/usr/sbin/sliplogin</tt>
as the special user's shell. The <tt/sliplogin/ program browses the
file <tt>/etc/sliphome/slip.hosts</tt> to find a matching line for
the special user, and if it finds a match, connects the serial line to
an available SLIP interface and then runs the shell script
<tt>/etc/sliphome/slip.login</tt> to configure the SLIP interface.
<sect2><heading>An Example of a SLIP Server Login</heading>
<p>
For example, if a SLIP user ID were <tt>Shelmerg</tt>, <tt/Shelmerg/'s
entry in <tt>/etc/master.passwd</tt> would look something like this
(except it would be all on one line):
<tscreen><verb>
Shelmerg:password:1964:89::0:0:Guy Helmer - SLIP:
/usr/users/Shelmerg:/usr/sbin/sliplogin
</verb></tscreen>
and, when <tt/Shelmerg/ logs in, <tt>sliplogin</tt> will search
<tt>/etc/sliphome/slip.hosts</tt> for a line that had a matching user
ID; for example, there may be a line in
<tt>/etc/sliphome/slip.hosts</tt> that reads:
<tscreen><verb>
Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp
</verb></tscreen>
<tt/sliplogin/ will find that matching line, hook the serial line into
the next available SLIP interface, and then execute
<tt>/etc/sliphome/slip.login</tt> like this:
<tscreen><verb>
/etc/sliphome/slip.login 0 19200 Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp
</verb></tscreen>
If all goes well, <tt>/etc/sliphome/slip.login</tt> will issue an
<tt>ifconfig</tt> for the SLIP interface to which <tt/sliplogin/
attached itself (slip interface 0, in the above example, which was the
first parameter in the list given to <tt>slip.login</tt>) to set the
local IP address (<tt>dc-slip</tt>), remote IP address
(<tt>sl-helmer</tt>), network mask for the SLIP interface
(<tt>0xfffffc00</tt>), and any additional flags (<tt>autocomp</tt>).
If something goes wrong, <tt/sliplogin/ usually logs good
informational messages via the daemon syslog facility, which usually
goes into <tt>/var/log/messages</tt> (see the manual pages for
<tt>syslogd(8)</tt> and <tt>syslog.conf(5)</tt>, and perhaps check
<tt>/etc/syslog.conf</tt> to see to which files <tt>syslogd</tt> is
logging).
OK, enough of the examples -- let us dive into setting up the system.
<sect1><heading>Kernel Configuration</heading>
<p>
FreeBSD's default kernels usually come with two SLIP interfaces
defined (<tt>sl0</tt> and <tt>sl1</tt>); you can use <tt>netstat
-i</tt> to see whether these interfaces are defined in your kernel.
Sample output from <tt>netstat -i</tt>:
<tscreen><verb>
Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll
ed0 1500 <Link>0.0.c0.2c.5f.4a 291311 0 174209 0 133
ed0 1500 138.247.224 ivory 291311 0 174209 0 133
lo0 65535 <Link> 79 0 79 0 0
lo0 65535 loop localhost 79 0 79 0 0
sl0* 296 <Link> 0 0 0 0 0
sl1* 296 <Link> 0 0 0 0 0
</verb></tscreen>
The <tt>sl0</tt> and <tt>sl1</tt> interfaces shown in <tt>netstat
-i</tt>'s output indicate that there are two SLIP interfaces built
into the kernel. (The asterisks after the <tt>sl0</tt> and
<tt>sl1</tt> indicate that the interfaces are ``down''.)
However, FreeBSD's default kernels do not come configured to forward
packets (ie, your FreeBSD machine will not act as a router) due to
Internet RFC requirements for Internet hosts (see RFC's 1009
&lsqb;Requirements for Internet Gateways&rsqb;, 1122
&lsqb;Requirements for Internet Hosts -- Communication Layers&rsqb;,
and perhaps 1127 &lsqb;A Perspective on the Host Requirements
RFCs&rsqb;), so if you want your FreeBSD SLIP Server to act as a
router, you will have to edit the <tt>/etc/sysconfig</tt> file and change
the setting of the <bf>gateway</bf> variable to <tt>YES</tt>. If you
have an older system which does not have the <tt>/etc/sysconfig</tt>
file, then add the following command:
<verb>
sysctl -w net.inet.ip.forwarding = 1
</verb>
to your <tt>/etc/rc.local</tt> file.
<p>You will then need to reboot for the new settings to take effect.
<p>You will notice that near the end of the default kernel configuration
file (<tt>/sys/i386/conf/GENERIC</tt>) is a line that reads:
<tscreen><verb>
pseudo-device sl 2
</verb></tscreen>
which is the line that defines the number of SLIP devices available in
the kernel; the number at the end of the line is the maximum number of
SLIP connections that may be operating simultaneously.
Please refer to <ref id="kernelconfig" name="Configuring the FreeBSD Kernel">
for help in reconfiguring your kernel.
<sect1><heading>Sliplogin Configuration</heading>
<p>
As mentioned earlier, there are three files in the
<tt>/etc/sliphome</tt> directory that are part of the configuration
for <tt>/usr/sbin/sliplogin</tt> (see <tt>sliplogin(8)</tt> for the
actual manual page for <tt>sliplogin</tt>): <tt>slip.hosts</tt>, which
defines the SLIP users &amp; their associated IP addresses;
<tt>slip.login</tt>, which usually just configures the SLIP interface;
and (optionally) <tt>slip.logout</tt>, which undoes
<tt>slip.login</tt>'s effects when the serial connection is
terminated.
<sect2><heading>slip.hosts Configuration</heading>
<p>
<tt>/etc/sliphome/slip.hosts</tt> contains lines which have at least
four items, separated by whitespace:
<itemize>
<item> SLIP user's login ID
<item> Local address (local to the SLIP server) of the SLIP link
<item> Remote address of the SLIP link
<item> Network mask
</itemize>
The local and remote addresses may be host names (resolved to IP
addresses by <tt>/etc/hosts</tt> or by the domain name service,
depending on your specifications in <tt>/etc/host.conf</tt>), and I
believe the network mask may be a name that can be resolved by a
lookup into <tt>/etc/networks</tt>. On a sample system,
<tt>/etc/sliphome/slip.hosts</tt> looks like this:
<tscreen><verb>
----- begin /etc/sliphome/slip.hosts -----
#
# login local-addr remote-addr mask opt1 opt2
# (normal,compress,noicmp)
#
Shelmerg dc-slip sl-helmerg 0xfffffc00 autocomp
----- end /etc/sliphome/slip.hosts ------
</verb></tscreen>
At the end of the line is one or more of the options.
<itemize>
<item> <tt>normal</tt> - no header compression
<item> <tt>compress</tt> - compress headers
<item> <tt>autocomp</tt> - compress headers if the remote end allows it
<item> <tt>noicmp</tt> - disable ICMP packets (so any ``ping'' packets will be
dropped instead of using up your bandwidth)
</itemize>
Note that <tt/sliplogin/ under early releases of FreeBSD 2 ignored
the options that FreeBSD 1.x recognized, so the options
<tt/normal/, <tt/compress/, <tt/autocomp/, and <tt/noicmp/ had no effect
until support was added in FreeBSD 2.2 (unless your <tt/slip.login/ script
included code to make use of the flags).
Your choice of local and remote addresses for your SLIP links depends
on whether you are going to dedicate a TCP/IP subnet or if you are
going to use ``proxy ARP'' on your SLIP server (it is not ``true''
proxy ARP, but that is the terminology used in this document to
describe it). If you are not sure which method to select or how to
assign IP addresses, please refer to the TCP/IP books referenced in
the <ref id="slips:prereqs"> section and/or consult your IP network manager.
If you are going to use a separate subnet for your SLIP clients, you
will need to allocate the subnet number out of your assigned IP
network number and assign each of your SLIP client's IP numbers out of
that subnet. Then, you will probably either need to configure a
static route to the SLIP subnet via your SLIP server on your nearest
IP router, or install <tt>gated</tt> on your FreeBSD SLIP server and
configure it to talk the appropriate routing protocols to your other
routers to inform them about your SLIP server's route to the SLIP
subnet.
Otherwise, if you will use the ``proxy ARP'' method, you will need to
assign your SLIP client's IP addresses out of your SLIP server's
Ethernet subnet, and you will also need to adjust your
<tt>/etc/sliphome/slip.login</tt> and
<tt>/etc/sliphome/slip.logout</tt> scripts to use <tt>arp(8)</tt> to
manage the proxy-ARP entries in the SLIP server's ARP table.
<sect2><heading>slip.login Configuration</heading>
<p>
The typical <tt>/etc/sliphome/slip.login</tt> file looks like this:
<tscreen><verb>
----- begin /etc/sliphome/slip.login -----
#!/bin/sh -
#
# @(#)slip.login 5.1 (Berkeley) 7/1/90
#
# generic login file for a slip line. sliplogin invokes this with
# the parameters:
# 1 2 3 4 5 6 7-n
# slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 inet $4 $5 netmask $6
----- end /etc/sliphome/slip.login -----
</verb></tscreen>
This <tt>slip.login</tt> file merely ifconfig's the appropriate SLIP
interface with the local and remote addresses and network mask of the
SLIP interface.
If you have decided to use the ``proxy ARP'' method (instead of using
a separate subnet for your SLIP clients), your
<tt>/etc/sliphome/slip.login</tt> file will need to look something
like this:
<tscreen><verb>
----- begin /etc/sliphome/slip.login for "proxy ARP" -----
#!/bin/sh -
#
# @(#)slip.login 5.1 (Berkeley) 7/1/90
#
# generic login file for a slip line. sliplogin invokes this with
# the parameters:
# 1 2 3 4 5 6 7-n
# slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 inet $4 $5 netmask $6
# Answer ARP requests for the SLIP client with our Ethernet addr
/usr/sbin/arp -s $5 00:11:22:33:44:55 pub
----- end /etc/sliphome/slip.login for "proxy ARP" -----
</verb></tscreen>
The additional line in this <tt>slip.login</tt>, <tt>arp -s &dollar;5
00:11:22:33:44:55 pub</tt>, creates an ARP entry in the SLIP server's
ARP table. This ARP entry causes the SLIP server to respond with the
SLIP server's Ethernet MAC address whenever a another IP node on the
Ethernet asks to speak to the SLIP client's IP address.
When using the example above, be sure to replace the Ethernet MAC
address (<tt>00:11:22:33:44:55</tt>) with the MAC address of your
system's Ethernet card, or your ``proxy ARP'' will definitely not work!
You can discover your SLIP server's Ethernet MAC address by looking at
the results of running <tt>netstat -i</tt>; the second line of the output
should look something like:
<tscreen><verb>
ed0 1500 <Link>0.2.c1.28.5f.4a 191923 0 129457 0 116
^^^^^^^^^^^^^^^
</verb></tscreen>
which indicates that this particular system's Ethernet MAC address is
<tt>00:02:c1:28:5f:4a</tt> -- the periods in the Ethernet MAC address
given by <tt>netstat -i</tt> must be changed to colons and leading zeros
should be added to each single-digit hexadecimal number to convert the
address into the form that <tt>arp(8)</tt> desires; see the manual page on
<tt>arp(8)</tt> for complete information on usage.
Note that when you create <tt>/etc/sliphome/slip.login</tt> and
<tt>/etc/sliphome/slip.logout</tt>, the ``execute'' bit (ie,
<tt>chmod 755 /etc/sliphome/slip.login
/etc/sliphome/slip.logout</tt>) must be set, or <tt>sliplogin</tt>
will be unable to execute it.
<sect2><heading>slip.logout Configuration</heading>
<p>
<tt>/etc/sliphome/slip.logout</tt> is not strictly needed (unless you
are implementing ``proxy ARP''), but if you decide to create it, this
is an example of a basic <tt>slip.logout</tt> script:
<tscreen><verb>
----- begin /etc/sliphome/slip.logout -----
#!/bin/sh -
#
# slip.logout
#
# logout file for a slip line. sliplogin invokes this with
# the parameters:
# 1 2 3 4 5 6 7-n
# slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 down
----- end /etc/sliphome/slip.logout -----
</verb></tscreen>
If you are using ``proxy ARP'', you will want to have
<tt>/etc/sliphome/slip.logout</tt> remove the ARP entry for the SLIP
client:
<tscreen><verb>
----- begin /etc/sliphome/slip.logout for "proxy ARP" -----
#!/bin/sh -
#
# @(#)slip.logout
#
# logout file for a slip line. sliplogin invokes this with
# the parameters:
# 1 2 3 4 5 6 7-n
# slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 down
# Quit answering ARP requests for the SLIP client
/usr/sbin/arp -d $5
----- end /etc/sliphome/slip.logout for "proxy ARP" -----
</verb></tscreen>
The <tt>arp -d &dollar;5</tt> removes the ARP entry that the ``proxy ARP''
<tt>slip.login</tt> added when the SLIP client logged in.
It bears repeating: make sure <tt>/etc/sliphome/slip.logout</tt> has
the execute bit set for after you create it (ie, <tt>chmod 755
/etc/sliphome/slip.logout</tt>).
<sect1><heading>Routing Considerations</heading>
<p>
If you are not using the ``proxy ARP'' method for routing packets
between your SLIP clients and the rest of your network (and perhaps
the Internet), you will probably either have to add static routes to
your closest default router(s) to route your SLIP client subnet via
your SLIP server, or you will probably need to install and configure
<tt>gated</tt> on your FreeBSD SLIP server so that it will tell your
routers via appropriate routing protocols about your SLIP subnet.
<sect2><heading>Static Routes</heading>
<p>
Adding static routes to your nearest default routers can be
troublesome (or impossible, if you do not have authority to do so...).
If you have a multiple-router network in your organization, some
routers, such as Cisco and Proteon, may not only need to be configured
with the static route to the SLIP subnet, but also need to be told
which static routes to tell other routers about, so some expertise and
troubleshooting/tweaking may be necessary to get static-route-based
routing to work.
<sect2><heading>Running gated</heading>
<p>
An alternative to the headaches of static routes is to install
<tt>gated</tt> on your FreeBSD SLIP server and configure it to use the
appropriate routing protocols (RIP/OSPF/BGP/EGP) to tell other routers
about your SLIP subnet. <tt/gated/ is available via anonymous ftp
from <tt>ftp.gated.cornell.edu</tt> in the directory
<tt>/pub/gated</tt>; I believe the current version as of this writing
is <tt>gated-R3_5Alpha_8.tar.Z</tt>, which includes support for
FreeBSD ``out-of-the-box''. Complete information and documentation on
<tt>gated</tt> is available on the Web starting at
<tt>http://www.gated.cornell.edu/</tt>. Compile and install it, and
then write a <tt>/etc/gated.conf</tt> file to configure your gated;
here is a sample, similar to what the author used on a FreeBSD SLIP
server:
<tscreen><verb>
----- begin sample /etc/gated.conf for gated version 3.5Alpha5 -----
#
# gated configuration file for dc.dsu.edu; for gated version 3.5alpha5
# Only broadcast RIP information for xxx.xxx.yy out the ed Ethernet interface
#
#
# tracing options
#
traceoptions "/var/tmp/gated.output" replace size 100k files 2 general ;
rip yes {
interface sl noripout noripin ;
interface ed ripin ripout version 1 ;
traceoptions route ;
} ;
#
# Turn on a bunch of tracing info for the interface to the kernel:
kernel {
traceoptions remnants request routes info interface ;
} ;
#
# Propagate the route to xxx.xxx.yy out the Ethernet interface via RIP
#
export proto rip interface ed {
proto direct {
xxx.xxx.yy mask 255.255.252.0 metric 1; # SLIP connections
} ;
} ;
#
# Accept routes from RIP via ed Ethernet interfaces
import proto rip interface ed {
all ;
} ;
----- end sample /etc/gated.conf -----
</verb></tscreen>
The above sample <tt>gated.conf</tt> file broadcasts routing
information regarding the SLIP subnet <tt>xxx.xxx.yy</tt> via RIP onto
the Ethernet; if you are using a different Ethernet driver than the
<tt/ed/ driver, you will need to change the references to the <tt/ed/
interface appropriately. This sample file also sets up tracing to
<tt>/var/tmp/gated.output</tt> for debugging <tt>gated</tt>'s
activity; you can certainly turn off the tracing options if
<tt>gated</tt> works OK for you. You will need to change the
<tt>xxx.xxx.yy</tt>'s into the network address of your own SLIP subnet
(be sure to change the net mask in the <tt>proto direct</tt> clause as
well).
When you get <tt>gated</tt> built and installed and create a
configuration file for it, you will need to run <tt>gated</tt> in place
of <tt>routed</tt> on your FreeBSD system; change the
<tt>routed/gated</tt> startup parameters in <tt>/etc/netstart</tt> as
appropriate for your system. Please see the manual page for
<tt>gated</tt> for information on <tt>gated</tt>'s command-line
parameters.
<sect1><heading>Acknowledgments</heading>
<p>
Thanks to these people for comments and advice regarding this tutorial:
<descrip>
<tag/&a.wilko;/
<tag/Piero Serini/ &lt;Piero@Strider.Inet.IT&gt;
</descrip>
<!-- </article> -->

View file

@ -1,108 +0,0 @@
<!-- $Id: stable.sgml,v 1.11 1997/05/02 14:15:34 jfieber Exp $ -->
<!-- The FreeBSD Documentation Project -->
<sect><heading>Staying stable with FreeBSD<label id="stable"></heading>
<p><em>Contributed by &a.jkh;.</em>
<!--
THE FREEBSD STABLE POLICY
Last updated: $Date: 1997/05/02 14:15:34 $
This document attempts to explain the rationale behind
FreeBSD-stable, what you should expect should you decide to run it,
and states some prerequisites for making sure the process goes as
smoothly as possible.
-->
<sect1><heading>What is FreeBSD-stable?</heading>
<p>FreeBSD-stable is our development branch for a more low-key and
conservative set of changes intended for our next mainstream release.
Changes of an experimental or untested nature do not go into this
branch (see <ref id="current" name="FreeBSD-current">).
<sect1><heading>Who needs FreeBSD-stable?</heading>
<p>If you are a commercial user or someone who puts maximum stability of
their FreeBSD system before all other concerns, you should consider tracking
<em>stable</em>. This is especially true if you have installed the most
recent release (<url url="ftp://ftp.freebsd.org/pub/FreeBSD/2.1.7-RELEASE"
name="2.1.7-RELEASE"> at the time of this writing) since the <em>stable</em>
branch is effectively a bug-fix stream relative to the previous release.
<p>Please note that the <em>stable</em> tree endeavors, above all, to
be fully compilable and stable at all times, but we do occasionally
make mistakes (these are still active sources with quickly-transmitted
updates, after all). We also do our best to thoroughly test fixes in
<em>current</em> before bringing them into <em>stable</em>, but sometimes
our tests fail to catch every case. If something breaks for you in
<em>stable</em>, please let us know <em>immediately!</em> (see
next section).
<sect1><heading>Using FreeBSD-stable</heading>
<p><enum><item> Join the &a.stable . This will
keep you informed of build-dependencies that may appear in
<em>stable</em> or any other issues requiring special attention.
Developers will also make announcements in this mailing list when
they are contemplating some contraversal fix or update, giving
the users a chance to respond if they have any issues to raise concerning
the proposed change.
To join this list, send mail to &a.majordomo and say:
<verb>
subscribe freebsd-stable
</verb>
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.
<item> Grab the sources from ftp.FreeBSD.ORG. You can do this in
three ways:
<enum>
<item> Use the <ref id="ctm" name="CTM"> facility. Unless you
have a good TCP/IP connection at a flat rate, this is
the way to do it.
<item> Use the <ref id="cvsup" name="cvsup"> program with
<url url="ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current/src/share/examples/cvsup/stable-supfile" name="this supfile">.
This is the second most recommended method, since it allows
you to grab the entire collection once and then only what has
changed from then on. Many people run cvsup from cron
to keep their sources up-to-date automatically.
<item> Use ftp. The source tree for FreeBSD-stable is always
"exported" on:
<htmlurl url="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/FreeBSD-stable"
name="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/FreeBSD-stable">
<p>We also use `wu-ftpd' which allows compressed/tar'd grabbing
of whole trees. e.g. you see:
<verb>
usr.bin/lex
</verb>
You can do:
<verb>
ftp> cd usr.bin
ftp> get lex.tar.Z
</verb>
And it will get the whole directory for you as a compressed
tar file.
</enum>
<item> Essentially, if you need rapid on-demand access to the source and
communications bandwidth is not a consideration, use cvsup or ftp.
Otherwise, use CTM.
<item> Before compiling stable, 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 the &a.stable will keep you up-to-date on other bootstrapping
procedures that sometimes become necessary as we move towards the next
release.
</enum>

View file

@ -1,619 +0,0 @@
<!-- $Id: submitters.sgml,v 1.52 1997/04/23 18:36:37 jkh 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 is 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 are
vital to FreeBSD's continued growth!
<p>Contrary to what some people might also have you believe, you do not
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 is 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 will find us receptive to your requests, given that
they are not 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 is 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 have collected over the last couple of months. Where possible, tasks
have been ranked by degree of urgency. If you are 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 would 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:
&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:
&a.fs
<itemize>
<item>Fix the MSDOS file system.
<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: &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 queuing, 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:
&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: &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: &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><url
url="mailto:jr@jrw.org" name="J.R. Westmoreland"></tt>
<item>Port AFS (Andrew File System) to FreeBSD Coordinator: <tt><url
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. Coordinators: &a.nate and &a.phk
<itemize>
<item>Documentation!
<item>Reliable operation of the pcic driver (needs testing).
<item>Recognizer and handler for sio.c (mostly done).
<item>Recognizer and handler for ed.c (mostly done).
<item>Recognizer and handler for ep.c (mostly done).
<item>User-mode recognizer and handler (partially done).
</itemize>
<item>Advanced Power Management. Coordinators: &a.nate and &a.phk
<itemize>
<item>APM sub-driver (mostly done).
<item>IDE/ATA disk sub-driver (partially done).
<item>syscons/pcvt sub-driver.
<item>Integration with the PCMCIA/PCCARD drivers (suspend/resume).
</itemize>
</enum>
<sect1><heading>Low priority tasks</heading>
<p>The following tasks are purely cosmetic or represent such an
investment of work that it is not likely that anyone will get them done
anytime soon:
<p>The first 20 items are from Terry Lambert &lt;terry@lambert.org&gt
<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 does not
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 is 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 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
&a.majordomo;.
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 send-pr(1)
program or its <url url="http://www.freebsd.org/send-pr.html"
name="WEB based equivalent">. This will prompt you for various
fields to fill in. In the send-pr(1) case, simply go to the
fields surrounded by <tt>&lt;&gt;</tt>'s and fill in your own
information in place of what is suggested there. With the
WEB based interface, you simply select the appropriate items from
various option menus and fill in the various fields shown there.
<p>You should receive confirmation of your bug report along with
a tracking number. Please keep this tracking number and refer to
it in any subsequent correspondence so that people can find the
details of your problem quickly. You may also send mail to
<url url="mailto:bug-followup@freebsd.org"
name="bug-followup@freebsd.org"> with your PR# in the subject
line to append further information to an existing bug report.
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 the &a.bugs;.
</itemize>
<sect1><heading>Changes to the documentation</heading>
<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
&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 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 do not express themselves well as diffs alone
(e.g. you have 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 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 are unsure of copyright issues governing its further distribution
or you are simply not ready to release it without a tighter review first,
then you should send it to &a.core; 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.
Please refer to <tt>man 9 intro</tt> and <tt>man 9 style</tt>
for some information on coding style. We would appreciate
it if you were at least aware of this information before
submitting code.
<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
uuencode'd tar files or upload them to our ftp site <url
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 is not 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.
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.
&dollar;Id&dollar;
</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 are 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.
c/o Jordan Hubbard
4041 Pike Lane, suite #D.
Concord CA, 94520
[temporarily using the Walnut Creek CDROM address until a PO box can be
opened]
</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 would 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 would like to
see such support added. Please contact the &a.core; before sending
such items as we will need to find a developer willing to take on the task
before we can accept delivery of new hardware.
</itemize>
<sect2><heading>Donating Internet access</heading>
<p>We can always use new mirror sites for FTP, WWW or cvsup.
If you would like to be such a mirror, please contact
<url 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><bf>Contributors to the central server project:</bf>
<p>The following individuals and businesses made it possible for
the FreeBSD Project to build a new central server machine to eventually
replace <em>freefall.freebsd.org</em> by donating the following items:
<itemize>
<item><url url="mailto:mbarkah@freebsd.org" name="Ade Barkah">
and his employer, <url url="http://www.hemi.com"
name="Hemisphere Online">, donated a <bf>Pentium Pro (P6) 200Mhz CPU
</bf>
<item><url url="http://www.asacomputers.com" name="ASA Computers">
donated a <bf>Tyan 1662 motherboard</bf>.
<item><url url="mailto:joe@via.net" name="Joe McGuckin"> of
<url url="http://www.via.net" name="ViaNet Communications">
donated a <bf>Kingston ethernet controller.</bf>
<item><url url="mailto:jack@diamond.xtalwind.net"
name="Jack O'Neill"> donated an <bf>NCR 53C875 SCSI
controller card</bf>.
<item><url url="mailto:ulf@Alameda.net" name="Ulf Zimmermann">
of <url url="http://www.Alameda.net" name="Alameda Networks">
donated <bf>128MB of memory</bf>, a <bf>4 Gb disk drive
and the case.</bf>
</itemize>
<item><bf>Direct funding:</bf>
<p>The following individuals and businesses have generously contributed
direct funding to the project:
<itemize>
<item><url url="mailto:ANDRSN@HOOVER.STANFORD.EDU"
name="Annelise Anderson">
<item><url url="http://www.epilogue.com/" name="Epilogue
Technology Corporation">
<item>Sean Eric Fagan
<item><url url="mailto:gmarco@masternet.it"
name="Gianmarco Giovannelli">
<item><url url="mailto:joeg@truenorth.org" name="Josef C. Grosch">
<item><url url="mailto:chuckr@freebsd.org" name="Chuck Robey">
<item><url url="mailto:ken@stox.sa.enteract.com"
name="Kenneth P. Stox"> of <url url="http://www.imagescape.com"
name="Imaginary Landscape, LLC.">
<item><url url="mailto:dk@dog.farm.org"
name="Dmitry S. Kohmanyuk">
<item><url url="http://www.iijnet.or.jp/laser5/" name="Laser5">
of Japan (a portion of the profits from sales of their
<em>FreeBSD for PC98'ers</em> CD, a port of FreeBSD to
the NEC PC98).
</itemize>
<item><bf>Hardware contributors:</bf>
<p>
The following individuals and businesses have generously contributed
hardware for testing and device driver development/support:
<itemize>
<item>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.
<item>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!
<item>Dermot McDonnell donated the Toshiba XM3401B CDROM drive
currently used in freefall.
<item>&a.chuck; contributed his floppy tape streamer for experimental
work.
<item>Larry Altneu &lt;larry@ALR.COM&gt;, and &a.wilko;,
provided Wangtek and Archive QIC-02 tape drives in order to
improve the <tt>wt</tt> driver.
<item>Ernst Winter &lt;ewinter@lobo.muc.de&gt; contributed a 2.88 MB
floppy drive to the project. This will hopefully increase the
pressure for rewriting the floppy disk driver. ;-)
<item><url url="mailto:kuku@freebsd.org" name="Christoph Kukulies">
donated an FX120 12 speed Mitsumi CDROM drive for IDE CDROM driver
development.
</itemize>
<item><bf>Special contributors:</bf>
<p>
<itemize>
<item><url 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 would like to thank them for the original hardware
used for <em>freefall.FreeBSD.ORG</em>, our primary development
machine, and for <em>thud.FreeBSD.ORG</em>, a 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>The <url url="http://www.interface-business.de"
name="interface business GmbH, Dresden"> has been patiently
supporting &a.joerg; who has often preferred FreeBSD work over
paywork, and used to fall back to their (quite expensive) EUnet
Internet connection whenever his private connection became too
slow or flakey to work with it...</item>
</itemize>
</itemize>

View file

@ -1,163 +0,0 @@
<!-- $Id: sup.sgml,v 1.28 1997/04/27 00:32:37 asami Exp $ -->
<!-- The FreeBSD Documentation Project -->
<sect1><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.
<sect2><heading>Configuration<label id="sup:setup"></heading>
<p>SUP gets the information it needs to run from a configuration file
called a supfile. There are different example supfiles provided
for different source releases of FreeBSD. The
<url url="file:/usr/share/examples/sup/standard-supfile"
name="/usr/share/examples/sup/standard-supfile"> file, for example,
contains sup information for the latest standard FreeBSD source
distributions - it tells sup what collections it will be updating
and/or installing and where they go. Someone using this particular
supfile is said to be supping <ref id="current" name="-current">.
<p>For ports, please have a look at
<url url="file:/usr/share/examples/sup/ports-supfile"
name="/usr/share/examples/sup/ports-supfile">.<p>
If you are interested in obtaining the
<url url="http://www.freebsd.org/cgi/cvsweb.cgi" name="CVS"> files
that make up the source tree, refer to
<url url="file:/usr/share/examples/sup/cvs-supfile"
name="/usr/share/examples/sup/cvs-supfile">.<p>
If you would rather track changes to the -stable branch, refer to
<url url="file:/usr/share/examples/sup/stable-supfile"
name="/usr/share/examples/sup/stable-supfile"> instead.
If you are inside the United States, you may also uncomment
the `secure' and `eBones' collection lines to grab the DES code.
If you are 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
<url url="file:/usr/share/examples/sup/secure-supfile"
name="secure-supfile"> in the sup examples 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 &num; at the beginning of the distribution line.
Please consult the file
<url url="file:/usr/share/examples/sup/README"
name="/usr/share/examples/sup/README">
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 are 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 are running current,
which is what you will have if you sup with the standard-supfile, please
join the &a.current . 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 &a.stable and read
<ref id="stable" name="Staying stable with FreeBSD">.
<sect2><heading>Distributions<label id="sup:dists">
</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-contrib: /usr/src/contrib contributed software
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-release: /usr/src/release sources required to build a release
src-share: /usr/src/share various shared resources
src-sbin: /usr/src/sbin single user system binaries
src-tools: /usr/src/tools various management tools
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>There is also a collection including all of the above, except for
either (domestic or international) versions of the export-restricted
software (i.e., <tt>src-secure</tt> and <tt>src-eBones</tt>
collections):
<verb>
src-all: /usr/src the whole operating system (almost)
</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-astro: /usr/ports/astro astronomical ports
ports-audio: /usr/ports/audio sound support
ports-benchmarks: /usr/ports/benchmarks benchmarks
ports-cad: /usr/ports/cad CAD tools
ports-chinese: /usr/ports/chinese Chinese support
ports-comms: /usr/ports/comms communication software
ports-converters: /usr/ports/converters character code converters
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 support
ports-korean: /usr/ports/korean Korean support
ports-lang: /usr/ports/lang programming languages
ports-mail: /usr/ports/mail mail software
ports-math: /usr/ports/math numerical computation software
ports-mbone: /usr/ports/mbone MBone applications
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 support
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-textproc: /usr/ports/textproc text processing utilities (does not include desktop publishing)
ports-vietnamese: /usr/ports/vietnamese Vietnamese support
ports-www: /usr/ports/www software related to the world wide web
ports-x11: /usr/ports/x11 X11 software
</verb>
<p>There is also a collection including all of the above:
<verb>
ports-all: /usr/ports the whole ports tree
</verb>
<!-- The following is currently not available (and probably will never return)
<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 cannot 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>
-->

View file

@ -1,50 +0,0 @@
<!-- $Id: synching.sgml,v 1.9 1997/02/22 12:59:32 peter Exp $ -->
<!-- The FreeBSD Documentation Project -->
<sect><heading>Synchronizing source trees over the Internet<label id="synching"></heading>
<p><em>Contributed by &a.jkh;.</em>
<!--
Last updated: $Date: 1997/02/22 12:59:32 $
This document tries to describe the various ways in which a user may
use the internet to keep development sources in synch.
-->
<p>There are various ways of using an Internet (or email) connection
to stay up-to-date with any given area of the FreeBSD project sources,
or all areas, depending on what interests you. The primary
services we offer are CVSup and CTM.
<p><bf>CVSup</bf> is the new kid on the block, it does everything that sup
did and more, doing it also far more efficiently in terms of its demands
on server disk space and network resources. Because of this, CVSup has
largely replaced <ref id="sup"> in the FreeBSD Project. Like sup, it also
operates on a <em>pull</em> synchronization model.
<p><bf>CTM</bf>, on the other hand, does not interactively compare
the sources you have with those on the master archive. Instead, a script
which identifies changes in files since its previous run is executed several
times a day on the master archive, any detected changes being compressed,
stamped with a sequence-number and encoded for transmission over email
(printable ASCII only). Once received, these "CTM deltas" can then be
handed to the ctm_rmail(1) utility which will automatically decode, verify
and apply the changes to the user's copy of the sources. This process is
far more efficient than CVSup, and places less strain on our server resources
since it is a <em>push</em> rather than a <em>pull</em> model.
<p>There are other trade-offs, of course. With CVSup, you can also
inadvertently wipe out portions of your archive and CVSup will detect
and rebuild the damaged portions for you. CTM won't do this, and if
you wipe some portion of your source tree out (and don't have it backed
up) then you will have to start from scratch (from the most recent CVS
"base delta") and rebuild it all.
For more information on CTM, CVSup or the now largely-obsolete sup, please
see one of the following sections:
&ctm;
&cvsup;
&sup;

View file

@ -1,539 +0,0 @@
<!-- This is an SGML document in the linuxdoc DTD describing
hardwired terminals with FreeBSD. By Sean Kelly, (c) 1996.
$Id$
The FreeBSD Documentation Project
<!DOCTYPE linuxdoc PUBLIC "-//FreeBSD//DTD linuxdoc//EN">
<linuxdoc>
<article>
<title> Hardwired Terminals
<author> Sean Kelly <tt/kelly@fsl.noaa.gov/
<date> 24 June 1996, (c) 1996
<abstract> This document describes using hardwired terminals
attached to computers running FreeBSD. It describes how to
set up the terminal hardware (including cabling), how to
configure FreeBSD to provide login sessions to those
terminals, and how to troubleshoot problems with terminals.
</abstract>
<toc>
-->
<sect><heading>Terminals<label id="term"></heading>
<p><em>Contributed by &a.kelly;<newline>28 July 1996</em>
Terminals provide a convenient and low-cost way to access the
power of your FreeBSD system when you are not at the computer's
console or on a connected network. This section describes how
to use terminals with FreeBSD.
<sect1><heading>Uses and Types of Terminals<label
id="term:uses"></heading>
<p>The original Unix systems did not have consoles. Instead,
people logged in and ran programs through terminals that were
connected to the computer's serial ports. It is quite similar
to using a modem and some terminal software to dial into a
remote system to do text-only work.
Today's PCs have consoles capable of high quality graphics,
but the ability to establish a login session on a serial port
still exists in nearly every Unix-style operating system
today; FreeBSD is no exception. By using a terminal attached
to a unused serial port, you can log in and run any text
program that you would normally run on the console or in an
<tt/xterm/ window in the X Window System.
For the business user, you can attach many terminals to a
FreeBSD system and place them on your employees' desktops.
For a home user, a spare computer such as an older IBM PC or a
Macintosh can be a terminal wired into a more powerful
computer running FreeBSD. You can turn what might otherwise
be a single-user computer into a powerful multiple user
system.
For FreeBSD, there are three kinds of terminals:
<itemize>
<item><ref name="Dumb terminals" id="term:dumb">
<item><ref name="PCs acting as terminals" id="term:pcs">
<item><ref name="X terminals" id="term:x">
</itemize>
The remaining subsections describe each kind.
<sect2><heading>Dumb Terminals<label id="term:dumb"></heading>
<p>Dumb terminals are specialized pieces of hardware that let
you connect to computers over serial lines. They are called
``dumb'' because they have only enough computational power
to display, send, and receive text. You cannot run any
programs on them. It is the computer to which you connect
them that has all the power to run text editors, compilers,
email, games, and so forth.
There are hundreds of kinds of dumb terminals made by
many manufacturers, including Digital Equipment
Corporation's VT-100 and Wyse's WY-75. Just about any kind
will work with FreeBSD. Some high-end terminals can even
display graphics, but only certain software packages can
take advantage of these advanced features.
Dumb terminals are popular in work environments where
workers do not need access to graphic applications such as
those provided by the X Window System.
<sect2><heading>PCs Acting As Terminals<label
id="term:pcs"></heading>
<p>If a <ref name="dumb terminal" id="term:dumb"> has just
enough ability to display, send, and receive text, then
certainly any spare personal computer can be a dumb
terminal. All you need is the proper cable and some
<em/terminal emulation/ software to run on the computer.
Such a configuration is popular in homes. For example, if
your spouse is busy working on your FreeBSD system's
console, you can do some text-only work at the same time
from a less powerful personal computer hooked up as a
terminal to the FreeBSD system.
<sect2><heading>X Terminals<label id="term:x"></heading>
<p>X terminals are the most sophisticated kind of terminal
available. Instead of connecting to a serial port, they
usually connect to a network like Ethernet. Instead of
being relegated to text-only applications, they can display
any X application.
We introduce X terminals just for the sake of completeness.
However, this chapter does <em/not/ cover setup,
configuration, or use of X terminals.
<sect1><heading>Cables and Ports<label
id="term:cables-ports"></heading>
<p>To connect a terminal to your FreeBSD system, you need the
right kind of cable and a serial port to which to connect it.
This section tells you what to do. If you are already
familiar with your terminal and the cable it requires, skip to
<ref name="Configuration" id="term:config">.
<sect2><heading>Cables<label id="term:cables"></heading>
<p>Because terminals use serial ports, you need to use
serial---also known as RS-232C---cables to connect the
terminal to the FreeBSD system.
There are a couple of kinds of serial cables. Which one
you'll use depends on the terminal you want to connect:
<itemize>
<item>If you are connecting a personal computer to act as
a terminal, use a <ref name="null-modem" id="term:null">
cable. A null-modem cable connects two computers or
terminals together.
<item>If you have an actual terminal, your best source of
information on what cable to use is the documentation
that accompanied the terminal. If you do not have the
documentation, then try a <ref name="null-modem"
id="term:null"> cable. If that does not work, then try
a <ref name="standard" id="term:std"> cable.
</itemize>
Also, the serial port on <em/both/ the terminal and your
FreeBSD system must have connectors that will fit the cable
you are using.
<sect3><heading>Null-modem cables<label id="term:null"></heading>
<p>A null-modem cable passes some signals straight through,
like ``signal ground,'' but switches other signals. For
example, the ``send data'' pin on one end goes to the
``receive data'' pin on the other end.
If you like making your own cables, here is a table
showing a recommended way to construct a null-modem cable
for use with terminals. This table shows the RS-232C
signal names and the pin numbers on a DB-25 connector.
<tscreen><verb>
Signal Pin# Pin# Signal
TxD 2 ----------------------- 3 RxD
RxD 3 ----------------------- 2 TxD
DTR 20 ----------------------- 6 DSR
DSR 6 ----------------------- 20 DTR
SG 7 ----------------------- 7 SG
DCD 8 ----------------------+ 4 RTS*
*RTS 4 + + 5 CTS*
*CTS 5 +---------------------- 8 DCD
* Connect pins 4 to 5 internally in the connector hood, and then to
pin 8 in the remote hood.
</verb></tscreen>
<sect3><heading>Standard RS-232C Cables<label
id="term:std"></heading>
<p>A standard serial cable passes all the RS-232C signals
straight-through. That is, the ``send data'' pin on one
end of the cable goes to the ``send data'' pin on the
other end. This is the type of cable to connect a modem
to your FreeBSD system, and the type of cable needed for
some terminals.
<sect2><heading>Ports<label id="term:ports"></heading>
<p>Serial ports are the devices through which data is
transferred between the FreeBSD host computer and the
terminal. This section describes the kinds of ports that
exist and how they are addressed in FreeBSD.
<sect3><heading>Kinds of Ports<label
id="term:portkinds"></heading>
<p>Several kinds of serial ports exist. Before you purchase
or construct a cable, you need to make sure it will fit
the ports on your terminal and on the FreeBSD system.
Most terminals will have DB25 ports. Personal computers,
including PCs running FreeBSD, will have DB25 or DB9
ports. If you have a multiport serial card for your PC,
you may have RJ-12 or RJ-45 ports.
See the documentation that accompanied the hardware for
specifications on the kind of port in use. A visual
inspection of the port often works, too.
<sect3><heading>Port Names<label
id="term:portnames"></heading>
<p>In FreeBSD, you access each serial port through an entry
in the <tt>/dev</tt> directory. There are two different
kinds of entries:
<itemize>
<item>Callin ports are named <tt>/dev/ttyd<it/X/</tt>
where <it/X/ is the port number, starting from zero.
Generally, you use the callin port for terminals.
Callin ports require that the serial line assert the
data carrier detect (DCD) signal to work.
<item>Callout ports are named <tt>/dev/cuaa<it/X/</tt>.
You usually do not use the callout port for terminals,
just for modems. You may use the callout port if the
serial cable or the terminal does not support the
carrier detect signal.
</itemize>
See the sio(4) manual page for more information.
If you have connected a terminal to the first serial port
(COM1 in DOS parlance), then you want to use
<tt>/dev/ttyd0</tt> to refer to the terminal. If it is on
the second serial port (also known as COM2), it is
<tt>/dev/ttyd1</tt>, and so forth.
Note that you may have to configure your kernel to support
each serial port, especially if you have a multiport
serial card. See <ref name="Configuring the FreeBSD
Kernel" id="kernelconfig"> for more information.
<sect1><heading>Configuration<label id="term:config"></heading>
<p>This section describes what you need to configure on your
FreeBSD system to enable a login session on a terminal. It
assumes you have already configured your kernel to support the
serial port to which the terminal is connected---and that you
have connected it.
In a nutshell, you need to tell the <tt/init/ process, which is
responsible for process control and initialization, to start a
<tt/getty/ process, which is responsible for reading a login
name and starting the <tt/login/ program.
To do so, you have to edit the <tt>/etc/ttys</tt> file.
First, use the <tt/su/ command to become root. Then, make the
following changes to <tt>/etc/ttys</tt>:
<enum>
<item>Add an line to <tt>/etc/ttys</tt> for the entry in the
<tt>/dev</tt> directory for the serial port if it is not
already there.
<item>Specify that <tt>/usr/libexec/getty</tt> be run on the
port, and specify the appropriate <tt/getty/ type from the
<tt>/etc/gettytab</tt> file.
<item>Specify the default terminal type.
<item>Set the port to ``on.''
<item>Specify whether the port should be ``secure.''
<item>Force <tt/init/ to reread the <tt>/etc/ttys</tt> file.
</enum>
As an optional step, you may wish to create a custom
<tt/getty/ type for use in step 2 by making an entry in
<tt>/etc/gettytab</tt>. This document does not explain how to
do so; you are encouraged to see the gettytab(5) and the
getty(8) manual pages for more information.
The remaining sections detail how to do these steps. We will
use a running example throughout these sections to illustrate
what we need to do. In our example, we will connect two
terminals to the system: a Wyse-50 and a old 286 IBM PC
running Procomm terminal software emulating a VT-100 terminal.
We connect the Wyse to the second serial port and the 286 to
the sixth serial port (a port on a multiport serial card).
For more information on the <tt>/etc/ttys</tt> file, see the
ttys(5) manual page.
<sect2><heading>Adding an Entry to <tt>/etc/ttys</tt><label
id="term:etcttys"></heading>
<p>First, you need to add an entry to the <tt>/etc/ttys</tt>
file, unless one is already there.
The <tt>/etc/ttys</tt> file lists all of the ports on your
FreeBSD system where you want to allow logins. For example,
the first virtual console <tt>ttyv0</tt> has an entry in
this file. You can log in on the console using this entry.
This file contains entries for the other virtual consoles,
serial ports, and pseudo-ttys. For a hardwired terminal,
just list the serial port's <tt>/dev</tt> entry without the
<tt>/dev</tt> part.
When you installed your FreeBSD system, the
<tt>/etc/ttys</tt> file included entries for the first four
serial ports: <tt/ttyd0/ through <tt/ttyd3/. If you are
attaching a terminal on one of those ports, you do not need
to add an entry.
In our example, we attached a Wyse-50 to the second serial
port, <tt/ttyd1/, which is already in the file. We need to
add an entry for the 286 PC connected to the sixth serial
port. Here is an excerpt of the <tt>/etc/ttys</tt> file
after we add the new entry:
<tscreen><verb>
ttyd1 "/usr/libexec/getty std.9600" unknown off secure
ttyd5
</verb></tscreen>
<sect2><heading>Specifying the <tt/getty/ Type<label
id="term:getty"></heading>
<p>Next, we need to specify what program will be run to handle
the logins on a terminal. For FreeBSD, the standard program
to do that is <tt>/usr/libexec/getty</tt>. It is what
provides the <tt>login:</tt> prompt.
The program <tt/getty/ takes one (optional) parameter on its
command line, the <em/<tt/getty/ type/. A <tt/getty/ type
tells about characteristics on the terminal line, like bps
rate and parity. The <tt/getty/ program reads these
characteristics from the file <tt>/etc/gettytab</tt>.
The file <tt>/etc/gettytab</tt> contains lots of entries for
terminal lines both old and new. In almost all cases, the
entries that start with the text <tt/std/ will work for
hardwired terminals. These entries ignore parity. There is
a <tt/std/ entry for each bps rate from 110 to 115200. Of
course, you can add your own entries to this file. The
manual page gettytab(5) provides more information.
When setting the <tt/getty/ type in the <tt>/etc/ttys</tt>
file, make sure that the communications settings on the
terminal match.
For our example, the Wyse-50 uses no parity and connects at
38400 bps. The 286 PC uses no parity and connects at 19200
bps. Here is the <tt>/etc/ttys</tt> file so far (showing
just the two terminals in which we are interested):
<tscreen><verb>
ttyd1 "/usr/libexec/getty std.38400" unknown off secure
ttyd5 "/usr/libexec/getty std.19200"
</verb></tscreen>
Note that the second field---where we specify what program
to run---appears in quotes. This is important, otherwise
the type argument to <tt/getty/ might be interpreted as the
next field.
<sect2><heading>Specifying the Default Terminal Type<label
id="term:deftermtype"></heading>
<p>The third field in the <tt>/etc/ttys</tt> file lists the
default terminal type for the port. For dialup ports, you
typically put <tt/unknown/ or <tt/dialup/ in this field
because users may dial up with practically any kind of
terminal or software. For hardwired terminals, the terminal
type does not change, so you can put a real terminal type in
this field.
Users will usually use the <tt/tset/ program in
their <tt/.login/ or <tt/.profile/ files to check the terminal
type and prompt for one if necessary. By setting a terminal
type in the <tt>/etc/ttys</tt> file, users can forego such
prompting.
To find out what terminal types FreeBSD supports, see the
file <tt>/usr/share/misc/termcap</tt>. It lists about 600
terminal types. You can add more if you wish. See the
termcap(5) manual page for information.
In our example, the Wyse-50 is a Wyse-50 type of terminal
(although it can emulate others, we will leave it in Wyse-50
mode). The 286 PC is running Procomm which will be set to
emulate a VT-100. Here are the pertinent yet unfinished
entries from the <tt>/etc/ttys</tt> file:
<tscreen><verb>
ttyd1 "/usr/libexec/getty std.38400" wy50 off secure
ttyd5 "/usr/libexec/getty std.19200" vt100
</verb></tscreen>
<sect2><heading>Enabling the Port<label
id="term:enable"></heading>
<p>The next field in <tt>/etc/ttys</tt>, the fourth field,
tells whether to enable the port. Putting <tt/on/ here will
have the <tt/init/ process start the program in the second
field, <tt/getty/, which will prompt for a login. If you
put <tt/off/ in the fourth field, there will be no
<tt/getty/, and hence no logins on the port.
So, naturally, you want an <tt/on/ in this field. Here
again is the <tt>/etc/ttys</tt> file. We have turned each
port <tt/on/.
<tscreen><verb>
ttyd1 "/usr/libexec/getty std.38400" wy50 on secure
ttyd5 "/usr/libexec/getty std.19200" vt100 on
</verb></tscreen>
<sect2><heading>Specifying Secure Ports<label
id="term:secure"></heading>
<p>We have arrived at the last field (well, almost: there is
an optional <tt/window/ specifier, but we will ignore that).
The last field tells whether the port is secure.
What does ``secure'' mean?
It means that the root account (or any account with a user
ID of 0) may login on the port. Insecure ports do not
allow root to login.
How do you use secure and insecure ports?
By marking a port as insecure, the terminal to which it is
connected will not allow root to login. People who know
the root password to your FreeBSD system will first have to
login using a regular user account. To gain superuser
privileges, they will then have to use the <tt/su/ command.
Because of this, you will have two records to help track
down possible compromises of root privileges: both the login
and the <tt/su/ command make records in the system log (and
logins are also recorded in the <tt/wtmp/ file).
By marking a port as secure, the terminal will allow root
in. People who know the root password will just login as
root. You will not have the potentially useful login and
<tt/su/ command records.
Which should you use?
Just use ``insecure.'' Use ``insecure'' <em/even/ for
terminals <em/not/ in public user areas or behind locked
doors. It is quite easy to login and use <tt/su/ if you
need superuser privileges.
Here finally are the completed entries in the
<tt>/etc/ttys</tt> file, with comments added to describe
where the terminals are:
<tscreen><verb>
ttyd1 "/usr/libexec/getty std.38400" wy50 on insecure # Kitchen
ttyd5 "/usr/libexec/getty std.19200" vt100 on insecure # Guest bathroom
</verb></tscreen>
<sect2><heading>Force <tt/init/ to Reread
<tt>/etc/ttys</tt><label id="term:hup"></heading>
<p>When you boot FreeBSD, the first process, <tt/init/, will
read the <tt>/etc/ttys</tt> file and start the programs
listed for each enabled port to prompt for logins.
After you edit <tt>/etc/ttys</tt>, you do not want to have
to reboot your system to get <tt/init/ to see the changes.
So, <tt/init/ will reread <tt>/etc/ttys</tt> if it receives
a SIGHUP (hangup) signal.
So, after you have saved your changes to <tt>/etc/ttys</tt>,
send SIGHUP to <tt/init/ by typing:
<tscreen><verb>
kill -HUP 1
</verb></tscreen>
(The <tt/init/ process <em/always/ has process ID 1.)
If everything is set up correctly, all cables are in place,
and the terminals are powered up, you should see login
prompts. Your terminals are ready for their first logins!
<sect1><heading>Debugging your connection<label
id="term:debug"></heading>
<p>Even with the most meticulous attention to detail, something
could still go wrong while setting up a terminal. Here is a
list of symptoms and some suggested fixes.
<descrip>
<tag/No login prompt appears/
Make sure the terminal is plugged in and powered up. If
it is a personal computer acting as a terminal, make sure
it is running terminal emulation software on the correct
serial port.
Make sure the cable is connected firmly to both the
terminal and the FreeBSD computer. Make sure it is the
right kind of cable.
Make sure the terminal and FreeBSD agree on the bps rate
and parity settings. If you have a video display
terminal, make sure the contrast and brightness controls
are turned up. If it is a printing terminal, make sure
paper and ink are in good supply.
Make sure that a <tt/getty/ process is running and serving
the terminal. Type
<tscreen><verb>
ps -axww|grep getty
</verb></tscreen>
to get a list of running <tt/getty/ processes. You should
see an entry for the terminal. For example, the display
<tscreen><verb>
22189 d1 Is+ 0:00.03 /usr/libexec/getty std.38400 ttyd1
</verb></tscreen>
shows that a <tt/getty/ is running on the second serial
port <tt/ttyd1/ and is using the <tt/std.38400/ entry in
<tt>/etc/gettytab</tt>.
If no <tt/getty/ process is running, make sure you have
enabled the port in <tt>/etc/ttys</tt>. Make sure you
have run <tt/kill -HUP 1/.
<tag/Garbage appears instead of a login prompt/
Make sure the terminal and FreeBSD agree on the bps rate
and parity settings. Check the getty processes to make
sure the correct <tt/getty/ type is in use. If not, edit
<tt>/etc/ttys</tt> and run <tt/kill -HUP 1/.
<tag/Characters appear doubled; the password appears when typed/
Switch the terminal (or the terminal emulation software)
from ``half duplex'' or ``local echo'' to ``full duplex.''
</descrip>

File diff suppressed because it is too large Load diff

View file

@ -1,751 +0,0 @@
<!-- $Id: userppp.sgml,v 1.16 1997/05/12 16:29:48 brian Exp $ -->
<!-- The FreeBSD Documentation Project -->
<sect>Setting up user PPP<label id="userppp">
<!-- This FAQ/HowTo is intended to get you up and running with
iijppp, also known as <em>user level ppp</em> or just
simply <em>ppp</em> for FreeBSD 2.0.5 and above.
<p>It also outlines how to use iijppp as a ppp server.
<p>This document has originally written by Nik Clayton, and has
turned into a collaborative effort over the years.
-->
<p>User PPP was introduced to FreeBSD in release 2.0.5 as an
addition to the existing kernel implementation of PPP. So,
what is different about this new PPP that warrants its
addition? To quote from the manual page:
<quote>
This is a user process PPP software package. Normally, PPP is
implemented as a part of the kernel (e.g. as managed by pppd) and
it is thus somewhat hard to debug and/or modify its behavior. However,
in this implementation PPP is done as a user process with the help of
the tunnel device driver (tun).
</quote>
In essence, this means that rather than running a PPP daemon, the ppp
program can be run as and when desired. No PPP interface needs to be
compiled into the kernel, as the program can use the generic tunnel
device to get data into and out of the kernel.
From here on out, user ppp will be referred to simply as ppp unless a
distinction needs to be made between it and any other PPP client/server
software. Unless otherwise stated, all commands in this section should
be executed as root.
<sect1><heading>Before you start</heading>
<p>This document assumes you are in roughly this position:
You have an account with an Internet Service Provider (ISP) which lets you
use PPP. Further, you have a modem (or other device) connected and
configured correctly which allows you to connect to your ISP.
You are going to need the following information to hand:
<itemize>
<item>The IP address of your ISP's gateway. The gateway is the
machine to which you will connect and will
be set up as your <tt>default route</tt>.
<item>Your ISP's netmask setting. If you can't determine this,
assume a netmask of 0xffffff00.
<item>The IP addresses of one or more nameservers. Normally, you
will be given two IP numbers.
<item>If your ISP allocates you a static IP address and/or hostname
then you will need that as well. If not, you will need to know
from what range of IP addresses your allocated IP address will
belong. If you havn't been given this range, you can accept
any IP number (as explained later).
</itemize>
If you do not have any of this information then contact your ISP and make
sure they provide it to you.
In addition, it is assumed that because your connection to the
Internet is not full time you are not running a name server
(<tt>named(8)</tt>). If this is not the case, ignore any
information on setting up the <tt>/etc/resolv.conf</tt> file.
<sect1><heading>Building a ppp ready kernel</heading>
<p>As the description states, ``ppp'' uses the kernel ``tun'' device.
It is necessary to make sure that your kernel has support for this
device compiled in.
To check this, go to your kernel compile directory (probably
/sys/i386/conf) and examine your kernel configuration file.
It needs to have the line
<tscreen><verb>
pseudo-device tun 1
</verb></tscreen>
in it somewhere. The stock GENERIC kernel has this as standard, so
if you have not installed a custom kernel or you do not have a /sys
directory, you do not have to change anything.
If your kernel configuration file does not have this line in it, or
you need to configure more than one tun device (for example, if
you are setting up a server and could have 16 dialup ppp connections
at any one time then you will need to use ``16'' instead of ``1''),
then you should add the line, re-compile, re-install and boot the new
kernel. Please refer to the
<ref id="kernelconfig" name="Configuring the FreeBSD Kernel">
section for more information on kernel configuration.
<p>You can check how many tunnel devices your current kernel has by
typing the following:
<tscreen><verb>
# ifconfig -a
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
inet 200.10.100.1 --> 203.10.100.24 netmask 0xffffffff
tun1: flags=8050<POINTOPOINT,RUNNING,MULTICAST> mtu 576
tun2: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
inet 203.10.100.1 --> 203.10.100.20 netmask 0xffffffff
tun3: flags=8050<POINTOPOINT,RUNNING,MULTICAST> mtu 1500
</verb></tscreen>
which in this case shows four tunnel devices, two of which are
currently configured and being used.
<p>If you have a kernel without the tun device, and you can not
rebuild it for some reason, all is not lost. You should be
able to dynamically load the code. Refer to the appropriate
modload(8) and lkm(4) pages for further details.
<p>You may also wish to take this opportunity to configure a firewall.
Details can be found in the <ref id="firewalls" name="Firewalls">
section.
<sect1><heading>Check the tun device</heading>
<p>Most users will only require one ``tun'' device (tun0). If you have
used more (i.e., a number other than `1' in the pseudo-device line
in the kernel configuration file) then alter all references to ``tun0''
below to reflect whichever device number you are using.
The easiest way to make sure that the tun0 device is configured correctly
is to re-make it. To this end, execute the following commands:
<tscreen><verb>
# cd /dev
# ./MAKEDEV tun0
</verb></tscreen>
<p>If you require 16 tunnel devices in your kernel, you will need to
create more than just tun0:
<tscreen><verb>
# cd /dev
# ./MAKEDEV tun0 tun1 tun2 tun3 tun4 tun5 tun6 tun7 tun8 tun9
# ./MAKEDEV tun10 tun11 tun12 tun13 tun14 tun15
</verb></tscreen>
<p>Also, to confirm that the kernel is configured correctly,
the following command should give the indicated output:
<tscreen><verb>
$ ifconfig tun0
tun0: flags=8050<POINTOPOINT,RUNNING,MULTICAST> mtu 1500
$
</verb></tscreen>
<sect1><heading>PPP Name Resolution Configuration</heading>
<p>The resolver is the part of the networking system that turns IP
addresses into hostnames and vice versa. It can be configured
to look for maps that describe IP to hostname mappings in one
of two places. The first is a file called <tt>/etc/hosts</tt>
(<tt>man 5 hosts</tt>). The second is the Internet Domain Name
Service (DNS), a distributed data base, the discussion of which
is beyond the scope of this document.
<p>This section describes briefly how to configure your resolver. If
you are already running a DNS, this section may be skipped.
<p>The resolver is a set of system calls that do the name mappings, but
you have to tell them where to get their information from. You do
this by first editing the file <tt>/etc/host.conf</tt>. Do
<bf>not</bf> call this file <tt>/etc/hosts.conf</tt> (note the extra
``s'') as the results can be confusing.
<sect2><heading>Edit the /etc/host.conf file</heading>
<p>This file should contain the following two lines:
<tscreen><verb>
hosts
bind
</verb></tscreen>
which instructs the resolver to first look in the file
<tt>/etc/hosts</tt>, and then to consult the DNS if the
name was not found.
<sect2><heading>Edit the /etc/hosts(5) file</heading>
<p>This file should contain the IP addresses and names of machines on your
network. At a bare minimum it should contain entries for the machine
which will be running ppp. Assuming that your machine is called
foo.bar.com with the IP address 10.0.0.1, <tt>/etc/hosts</tt> should
contain:
<tscreen><verb>
127.0.0.1 localhost
10.0.0.1 foo.bar.com foo
</verb></tscreen>
The first line defines the alias ``localhost'' as a synonym for the
current machine. Regardless of your own IP address, the IP address for
this line should always be 127.0.0.1. The second line maps the name
``foo.bar.com'' (and the shorthand ``foo'') to the IP address 10.0.0.1.
If your provider allocates you a static IP address then use this in place
of 10.0.0.1.
<sect2><heading>Edit the /etc/resolv.conf file</heading>
<p><tt>/etc/resolv.conf</tt> contains some extra information required when
you are not running a nameserver. It points the resolver routines at real
nameservers, and specifies some other information.
At the very least, <tt>/etc/resolv.conf</tt> should contain one line with
a nameserver which can be queried, but two nameservers are preferable.
You should enter these as IP addresses, for example:
<tscreen><verb>
nameserver 1.2.3.4
nameserver 1.2.3.5
</verb></tscreen>
Add as many ``nameserver'' lines as your ISP provides nameservers.
Refer to the resolv.conf manual page for further details of entries
in this file.
<sect1><heading>PPP Configuration</heading>
<p>Both user ppp and pppd (the kernel level implementation of PPP)
use configuration files located in the <tt>/etc/ppp</tt> directory.
The sample configuration files provided are a good reference for
user ppp, so don't delete them.
<p>Configuring ppp requires that you edit up to three files, depending
on your requirements. What you put in them depends to some extent
on whether your ISP allocates IP addresses statically (i.e., you get
given one IP address, and always use that one) or dynamically (i.e.,
your IP address can be different during different PPP sessions).
<sect2><heading>PPP and static IP addresses</heading>
<p>You will need to create three files in the <tt>/etc/ppp</tt>
directory.
<p>The first of these files is <tt>ppp.conf</tt>. It should look
similar to the example below. Note that lines that end in a
``:'' start in column 1, all other lines should be indented as
shown using spaces or tabs.
<tt>/etc/ppp/ppp.conf</tt>
<tscreen><verb>
1 default:
2 set device /dev/cuaa0
3 set speed 38400
4 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" ATE1Q0 OK-AT-OK
\\dATDT\\T TIMEOUT 40 CONNECT"
5 provider:
6 set phone 01234567890
7 set login "TIMEOUT 10 gin:-BREAK-gin: foo word: bar col: ppp"
8 set timeout 120
9 set ifaddr x.x.x.x y.y.y.y
10 delete ALL
11 add 0 0 y.y.y.y
12 set openmode active
</verb></tscreen>
Do not include the line numbers, they are just for reference in
this discussion.
<descrip>
<tag/Line 1:/ Identifies the default entry. Commands in this entry are
executed automatically when ppp is run.
<tag/Line 2:/ Identifies the device to which the modem is connected.
COM1: is <tt>/dev/cuaa0</tt> and COM2: is <tt>/dev/cuaa1</tt>.
<tag/Line 3:/ Sets the speed you want to connect at.
<tag/Line 4:/ The dial string. User ppp uses an expect-send syntax similar
to the <tt>chat(8)</tt> program. Refer to the manual page
for information on the features of this language.
<tag/Line 5:/ Identifies an entry for a provider called ``provider''.
<tag/Line 6:/ Sets the phone number for this provider. Multiple phone
numbers may be specified using the `:' character as a
seperator.
<tag/Line 7:/ The login string. The login string is of the same
syntax as the dial string. In this example, the string is
for a service who's login session looks like
<tscreen><verb>
J. Random Provider
login: foo
password: bar
protocol: ppp
</verb></tscreen>
You will need to alter this script to suit your own needs.
<tag/Line 8:/ Sets the default timeout (in seconds) for the connection.
Here, the connection will be closed automatically after
120 seconds of inactivity.
<tag/Line 9:/ Sets the interface addresses. The string x.x.x.x should be
replaced by the IP address that your provider allocates you.
The string y.y.y.y should be replaced by the IP address that
your ISP indicated for their gateway (the machine to which
you connect).
<tag/Line 10:/ Deletes all existing routing table entries for the
acquired tun device.
<tag/Line 11:/ Adds a default route to your ISPs IP number. The IP
number should always be that of your ISPs gateway.
<tag/Line 12:/ Tells our side to begin negotiation. This is not always
necessary, but it does no harm to have both sides initiating
the Line Control Protocol (LCP).
</descrip>
<p>The second of these files is <tt>/etc/ppp/ppp.linkup</tt>:
<tscreen><verb>
x.x.x.x:
delete ALL
add 0 0 HISADDR
</verb></tscreen>
<p>Replace x.x.x.x with your IP address as before. This file is used to
automatically delete all existing routes for the acquired line and
add a default route from your ISP (who's address is automatically
inserted with the HISADDR macro) to you.
<p>With a static IP number assigned by your ISP, you don't actually
need an entry in <tt>/etc/ppp.linkup</tt>, but again, it doesn't
do any harm to have it.
<p>Finally, the third of these files is <tt>/etc/ppp/ppp.secret</tt>.
This file allows you to set some passwords to control access to
your ppp server. You may or may not want to configure this file,
depending on how many people have access to your ppp system.
<p>Examples can be found in the <tt>/etc/ppp</tt> directory.
<sect2><heading>PPP and Dynamic IP addresses</heading>
<p>If your service provider does not assign static IP numbers,
<tt>ppp</tt> can be configured to negotiate the local and
remote addresses. This is done by "guessing" an IP number
and allowing ppp to set it up correctly using the LCP at
connection time. Otherwise, the configuration is the same as
that of a static IP configuration.
<p>Put the following lines in your <tt>ppp.conf</tt> file:
<tscreen><verb>
ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0
delete ALL
add 0 0 10.0.0.2
</verb></tscreen>
<p>You should NOT use 0 as either IP address. If you do, ppp will not be
able to set up the correct initial entries in the routing table.
<p>The number after the ``/'' character is the number of bits of
the address that ppp will insist on.
<p>Note also that the HISADDR macro is not yet available in
<tt>ppp.conf</tt>, only in <tt>ppp.linkup</tt>.
<p>See the pmdemand entry in the files <tt>/etc/ppp/ppp.conf.sample</tt> and
<tt>/etc/ppp/ppp.linkup.sample</tt> for a detailed example.
<sect2><heading>Receiving incoming calls with PPP</heading>
<p>This section describes setting up iijppp in a server role.
<p>When you configure <tt>ppp</tt> to receive incoming calls, you
must decide whether you wish to forward packets for just
<tt>ppp</tt> connections, for all interfaces, or not at all.
To forward for just ppp connections, include the line
<tscreen><verb>
enable proxy
</verb></tscreen>
in your <tt>ppp.conf</tt> file. If you wish to forward packets on all
interfaces, use the
<tscreen><verb>
gateway=YES
</verb></tscreen>
option in <tt>/etc/rc.conf</tt> (this file used to be called
<tt>/etc/sysconfig</tt>).
<sect3><heading>Which getty?</heading>
<p><ref id="dialup" name="Configuring FreeBSD for Dialup Services">
provides a good description on enabling dialup services using getty.
<p>An alternative to getty is
<url url="http://www.leo.org/~doering/mgetty/index.html" name="mgetty">,
a smarter version of getty designed with dialup lines in mind.
<p>The advantages of using mgetty is that it actively <em>talks</em> to
modems, meaning if port is turned off in <tt>/etc/ttys</tt> then
your modem won't answer the phone.
<p>Later versions of mgetty (from 0.99beta onwards) also support the
automatic detection of PPP streams, allowing your clients script-less
access to your server.
<p>Obtaining and configuring mgetty correctly is beyond the scope of
this document.
<sect3><heading>Setting up a PPP shell for dynamic-IP users</heading>
<p>Create a file called <tt>/etc/ppp/ppp-shell</tt> containing the
following:
<tscreen><verb>
#!/bin/sh
IDENT=`echo $0 | sed -e 's/^.*-\(.*\)$/\1/'`
CALLEDAS="$IDENT"
TTY=`tty`
if [ x$IDENT = xdialup ]; then
IDENT=`basename $TTY`
fi
echo "PPP for $CALLEDAS on $TTY"
echo "Starting PPP for $IDENT"
exec /usr/sbin/ppp -direct $IDENT
</verb></tscreen>
<p>This script should be executable. Now make a symbolic link called
<tt>ppp-dialup</tt> to this script using the following commands:
<tscreen><verb>
# ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-dialup
</verb></tscreen>
<p>You should use this script as the <em>shell</em> for all your dialup
ppp users. This is an example from <tt>/etc/password</tt>
for a dialup PPP user with username pchilds. (remember don't directly
edit the password file, use <tt>vipw</tt>)
<tscreen><verb>
pchilds:*:1011:300:Peter Childs PPP:/home/ppp:/etc/ppp/ppp-dialup
</verb></tscreen>
<p>Create a <tt>/home/ppp</tt> directory that is world readable
containing the following 0 byte files
<tscreen><verb>
-r--r--r-- 1 root wheel 0 May 27 02:23 .hushlogin
-r--r--r-- 1 root wheel 0 May 27 02:22 .rhosts
</verb></tscreen>
which prevents <tt>/etc/motd</tt> from being displayed.
<sect3><heading>Setting up a PPP shell for static-IP users</heading>
<p>Create the <tt>ppp-shell</tt> file as above and for each account with
statically assigned IPs create a symbolic link to <tt>ppp-shell</tt>.
<p>For example, if you have three dialup customers fred, sam, and mary,
that you route class C networks for, you would type the following:
<tscreen><verb>
# ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-fred
# ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-sam
# ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-mary
</verb></tscreen>
<p>Each of these users dialup accounts should have their shell set
to the symbolic link created above. (ie. mary's shell should be
<tt>/etc/ppp/ppp-mary</tt>).
<sect3><heading>Setting up ppp.conf for dynamic-IP users</heading>
<p>The <tt>/etc/ppp/ppp.conf</tt> file should contain something along
the lines of
<tscreen><verb>
default:
set debug phase lcp chat
set timeout 0
ttyd0:
set ifaddr 203.14.100.1 203.14.100.20 255.255.255.255
enable proxy
ttyd1:
set ifaddr 203.14.100.1 203.14.100.21 255.255.255.255
enable proxy
</verb></tscreen>
<p>Note the indenting is important.
<p>The <tt>default:</tt> section is loaded for each session. For each
dialup line enabled in <tt>/etc/ttys</tt> create an entry similar
to the one for <tt>ttyd0:</tt> above. Each line should get a unique
IP from your pool of ip address for dynamic users.
<sect3><heading>Setting up ppp.conf for static-IP users</heading>
<p>Along with the contents of the sample <tt>/etc/ppp/ppp.conf</tt>
above you should add a section for each of the statically assigned
dialup users. We will continue with our fred, sam, and mary example.
<tscreen><verb>
fred:
set ifaddr 203.14.100.1 203.14.101.1 255.255.255.255
sam:
set ifaddr 203.14.100.1 203.14.102.1 255.255.255.255
mary:
set ifaddr 203.14.100.1 203.14.103.1 255.255.255.255
</verb></tscreen>
<p>The file <tt>/etc/ppp/ppp.linkup</tt> should also contain routing
information for each static IP user if required. The line below
would add a route for the <tt>203.14.101.0</tt> class C via
the client's ppp link.
<tscreen><verb>
fred:
add 203.14.101.0 netmask 255.255.255.0 HISADDR
sam:
add 203.14.102.0 netmask 255.255.255.0 HISADDR
mary:
add 203.14.103.0 netmask 255.255.255.0 HISADDR
</verb></tscreen>
<sect3><heading>More on mgetty, AutoPPP, and MS extensions</heading>
<sect4><heading>Mgetty and AutoPPP</heading>
<p>Configuring and compiling mgetty with the AUTO_PPP option enabled
allows mgetty to detect the LCP phase of PPP connections and automatically
spawn off a ppp shell. However, since the default login/password sequence
does not occur it is necessary to authenticate users using either PAP
or CHAP.
<p>This section assumes the user has successfully configured, compiled, and
installed a version of mgetty with the AUTO_PPP option (v0.99beta or later)
<p>Make sure your <tt>/usr/local/etc/mgetty+sendfax/login.config</tt> file
has the following in it:
<tscreen><verb>
/AutoPPP/ - - /etc/ppp/ppp-pap-dialup
</verb></tscreen>
<p>This will tell mgetty to run the <tt>ppp-pap-dialup</tt> script for
detected PPP connections.
<p>Create a file called <tt>/etc/ppp/ppp-pap-dialup</tt> containing the
following (the file should be executable):
<tscreen><verb>
#!/bin/sh
TTY=`tty`
IDENT=`basename $TTY`
exec /usr/sbin/ppp -direct pap$IDENT
</verb></tscreen>
<p>For each dialup line enabled in <tt>/etc/ttys</tt> create a corresponding
entry in <tt>/etc/ppp/ppp.conf</tt>. This will happily co-exist with
the definitions we created above.
<tscreen><verb>
papttyd0:
enable pap
set ifaddr 203.14.100.1 203.14.100.20 255.255.255.255
enable proxy
papttyd1:
enable pap
set ifaddr 203.14.100.1 203.14.100.21 255.255.255.255
enable proxy
</verb></tscreen>
<p>Each user logging in with this method will need to have a username/password
in <tt>/etc/ppp/ppp.secret</tt> file, or alternatively add the
<tscreen><verb>
enable passwdauth
</verb></tscreen>
option to authenticate users via pap from the <tt>/etc/password</tt>d
file. (*)
<p>(*) Note this option only available in 2.2-961014-SNAP or later, or by
getting the updated ppp code for 2.1.x. (see MS extensions below for details)
<sect4><heading>MS extentions</heading>
<p>From 2.2-961014-SNAP onwards it is possible to allow the automatic
negotiation of DNS and NetBIOS name servers with clients supporting
this feature (namely Win95/NT clients). See RFC1877 for more details
on the protocol.
<p>An example of enabling these extensions in your
<tt>/etc/ppp/ppp.conf</tt> file is illustrated below.
<tscreen><verb>
default:
set debug phase lcp chat
set timeout 0
enable msext
set ns 203.14.100.1 203.14.100.2
set nbns 203.14.100.5
</verb></tscreen>
<p>This will tell the clients the primary and secondary
name server addresses, and a netbios nameserver host.
<sect1><heading>Final system configuration</heading>
<p>You now have PPP configured, but there are a few more things to
do before it is ready to work. They all involve editing the
<tt>/etc/rc.conf</tt> file (was <tt>/etc/sysconfig</tt>).
Working from the top down in this file, make sure the ``hostname='' line
is set, e.g.:
<tscreen><verb>
hostname=foo.bar.com
</verb></tscreen>
<p>Look for the network_interfaces variable. If you want to configure
your system to dial your ISP on demand, make sure the tun0 device is
added to the list, otherwise remove it.
<tscreen><verb>
network_interfaces="lo0 tun0"
ifconfig_tun0=
</verb></tscreen>
Note, the <tt>ifconfig_tun0</tt> variable should be empty, and
a file called /etc/start_if.tun0 should be created. This file
should contain the line
<tscreen><verb>
ppp -auto mysystem
</verb></tscreen>
This script is executed at network configuration time, starting
your ppp daemon in automatic mode.
<p>Set the router program to ``NO'' with the line
<tscreen><verb>
router_enable=NO (/etc/rc.conf)
router=NO (/etc/sysconfig)
</verb></tscreen>
It is important that the <tt>routed</tt> daemon is not started
(the default) as <tt>routed</tt> tends to delete the default
routing table entries created by ppp.
<p>It is probably worth your while ensuring that the ``sendmail_flags'' line
does not include the ``-q'' option, otherwise sendmail will attempt to do
a network lookup every now and then, possibly causing your machine to dial
out. You may try:
<tscreen><verb>
sendmail_flags="-bd"
</verb></tscreen>
The upshot of this is that you must force sendmail to re-examine the
mail queue whenever the ppp link is up by typing:
<tscreen><verb>
# /usr/sbin/sendmail -q
</verb></tscreen>
If you don't like this, it is possible to set up a "dfilter" to block
SMTP traffic. Refer to the sample files for further details. You
can also use a script in the <tt>ppp.linkup</tt> file to execute this
command.
All that is left is to reboot the machine.
You can now either type
<tscreen><verb>
# ppp
</verb></tscreen>
and then ``dial provider'' to start the PPP session, or, if you
want ppp to establish sessions automatically when there is outbound
traffic (and you havn't created the start_if.tun0 script) , type
<tscreen><verb>
# ppp -auto provider
</verb></tscreen>
<sect1><heading>Summary</heading>
<p>To recap, the following steps are necessary when setting up ppp
for the first time:
<p>Client side:
<itemize>
<item>Ensure that the tun device is built into your kernel.
<item>Ensure that the tunX device file is available in the
<tt>/dev</tt> directory.
<item>Create an entry in <tt>/etc/ppp.conf</tt>. The
<tt>pmdemand</tt> example should suffice for most
ISPs.
<item>Create an entry in <tt>/etc/ppp.linkup</tt>.
<item>Update your rc.conf (or sysconfig) file.
<item>Create a start_if.tun0 script if you require demand
dialing.
</itemize>
<p>Server side:
<itemize>
<item>Ensure that the tun device is built into your kernel.
<item>Ensure that the tunX device file is available in the
<tt>/dev</tt> directory.
<item>Create an entry in /etc/passwd (using the vipw(8)
program).
<item>Create a profile in this users home directory that
runs ``ppp -direct direct-server'' or similar.
<item>Create an entry in <tt>/etc/ppp.conf</tt>. The
<tt>direct-server</tt> example should suffice.
<item>Create an entry in <tt>/etc/ppp.linkup</tt>.
<item>Update your rc.conf (or sysconfig) file.
</itemize>
<sect1><heading>Acknowledgments</heading>
<p>Thanks to the following for their comments & suggestions:
<p>&a.nik
<p>&a.dirkvangulik
<p>&a.pjc

View file

@ -1,6 +0,0 @@
# From: @(#)Makefile 8.1 (Berkeley) 6/5/93
# $Id$
SUBDIR= handbook
.include <bsd.subdir.mk>

View file

@ -1,26 +0,0 @@
# $Id: Makefile,v 1.9 1997/05/09 23:09:56 max Exp $
# Original revision: 1.22
# The FreeBSD Japanese Documentation Project
DOC= handbook
DOCDIR=${SHAREDIR}/doc/ja_JP.EUC
FORMATS= html roff
SGMLOPTS+=-e EUC-JP
SRCS= authors.sgml basics.sgml bibliography.sgml boothelp.sgml
SRCS+= booting.sgml contrib.sgml crypt.sgml ctm.sgml current.sgml cvsup.sgml
SRCS+= cyclades.sgml development.sgml dialup.sgml dialout.sgml
SRCS+= diskless.sgml dma.sgml eresources.sgml esdi.sgml
SRCS+= firewalls.sgml glossary.sgml goals.sgml
SRCS+= handbook.sgml history.sgml hw.sgml install.sgml isdn.sgml
SRCS+= kerberos.sgml kernelconfig.sgml kerneldebug.sgml kernelopts.sgml
SRCS+= lists.sgml mail.sgml memoryuse.sgml
SRCS+= mirrors.sgml nfs.sgml nutshell.sgml pgpkeys.sgml policies.sgml
SRCS+= porting.sgml ports.sgml ppp.sgml printing.sgml
SRCS+= quotas.sgml relnotes.sgml routing.sgml russian.sgml
SRCS+= serial.sgml scsi.sgml sections.sgml sio.sgml skey.sgml slipc.sgml
SRCS+= slips.sgml stable.sgml submitters.sgml sup.sgml synching.sgml
SRCS+= term.sgml userppp.sgml uart.sgml linuxemu.sgml
SRCS+= jcontrib.sgml jmembers.sgml
.include <bsd.sgml.mk>

View file

@ -1,490 +0,0 @@
<!-- $Id: authors.sgml,v 1.22 1997/05/13 22:57:43 max Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.69 -->
<!--
Names and email address of contributing authors and CVS committers.
Use these entities when referencing people. Please note the use of single
and double quotes.
Please keep this list in alphabetical order by entity names.
-->
<!ENTITY a.ache "Andrey A. Chernov
<tt><htmlurl url='mailto:ache@FreeBSD.ORG'
name='&lt;ache@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.adam "Adam David
<tt><htmlurl url='mailto:adam@FreeBSD.ORG'
name='&lt;adam@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.alex "Alex Nash
<tt><htmlurl url='mailto:alex@freebsd.org'
name='&lt;alex@freebsd.org&gt;'></tt>">
<!ENTITY a.amurai "Atsushi Murai
<tt><htmlurl url='mailto:amurai@FreeBSD.ORG'
name='&lt;amurai@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.andreas "Andreas Klemm
<tt><htmlurl url='mailto:andreas@FreeBSD.ORG'
name='&lt;andreas@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.asami "浅見 賢
<tt><htmlurl url='mailto:asami@FreeBSD.ORG'
name='&lt;asami@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.ats "Andreas Schulz
<tt><htmlurl url='mailto:ats@FreeBSD.ORG'
name='&lt;ats@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.awebster "Andrew Webster
<tt><htmlurl url='mailto:awebster@pubnix.net'
name='&lt;awebster@pubnix.net&gt;'></tt>">
<!ENTITY a.bde "Bruce Evans
<tt><htmlurl url='mailto:bde@FreeBSD.ORG'
name='&lt;bde@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.brian "Brian Somers
<tt><htmlurl url='mailto:brian@awfulhak.org'
name='&lt;brian@awfulhak.org&gt;'></tt>">
<!ENTITY a.cawimm "Charles A. Wimmer
<tt><htmlurl url='mailto:cawimm@FreeBSD.ORG'
name='&lt;cawimm@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.charnier "Philippe Charnier
<tt><htmlurl url='mailto:charnier@FreeBSD.ORG'
name='&lt;charnier@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.chuck "Chuck Robey
<tt><htmlurl url='mailto:chuckr@glue.umd.edu'
name='&lt;chuckr@glue.umd.edu&gt;'></tt>">
<!ENTITY a.chuckr "Chuck Robey
<tt><htmlurl url='mailto:chuckr@FreeBSD.ORG'
name='&lt;chuckr@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.cracauer "Martin Cracauer
<tt><htmlurl url='mailto:cracauer@FreeBSD.ORG'
name='&lt;cracauer@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.csgr "Geoff Rehmet
<tt><htmlurl url='mailto:csgr@FreeBSD.ORG'
name='&lt;csgr@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.danny "Daniel O'Callaghan
<tt><htmlurl url='mailto:danny@FreeBSD.ORG'
name='&lt;danny@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.darrenr "Darren Reed
<tt><htmlurl url='mailto:darrenr@FreeBSD.ORG'
name='&lt;darrenr@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.dave "Dave Cornejo
<tt><htmlurl url='mailto:dave@FreeBSD.ORG'
name='&lt;dave@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.davidg "David Greenman
<tt><htmlurl url='mailto:davidg@FreeBSD.ORG'
name='&lt;davidg@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.davidn "David Nugent
<tt><htmlurl url='mailto:davidn@blaze.net.au'
name='&lt;davidn@blaze.net.au&gt;'></tt>">
<!ENTITY a.dfr "Doug Rabson
<tt><htmlurl url='mailto:dfr@FreeBSD.ORG'
name='&lt;dfr@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.dima "Dima Ruban
<tt><htmlurl url='mailto:dima@FreeBSD.ORG'
name='&lt;dima@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.dirkvangulik "Dirk-Willem van Gulik
<tt><htmlurl url='mailto:Dirk.vanGulik@jrc.it'
name='&lt;Dirk.vanGulik@jrc.it&gt;'></tt>">
<!ENTITY a.dufault "Peter Dufault
<tt><htmlurl url='mailto:dufault@FreeBSD.ORG'
name='&lt;dufault@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.dyson "John Dyson
<tt><htmlurl url='mailto:dyson@FreeBSD.ORG'
name='&lt;dyson@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.eivind "Eivind Eklund
<tt><htmlurl url='mailto:perhaps@yes.no'
name='&lt;perhaps@yes.no&gt;'></tt>">
<!ENTITY a.erich "Eric L. Hernes
<tt><htmlurl url='mailto:erich@FreeBSD.ORG'
name='&lt;erich@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.fenner "Bill Fenner
<tt><htmlurl url='mailto:fenner@FreeBSD.ORG'
name='&lt;fenner@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.fsmp "Steve Passe
<tt><htmlurl url='mailto:fsmp@FreeBSD.ORG'
name='&lt;fsmp@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.gclarkii "Gary Clark II
<tt><htmlurl url='mailto:gclarkii@FreeBSD.ORG'
name='&lt;gclarkii@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.gena "Gennady B. Sorokopud
<tt><htmlurl url='mailto:gena@NetVision.net.il'
name='&lt;gena@NetVision.net.il&gt;'></tt>">
<!ENTITY a.ghelmer "Guy Helmer
<tt><htmlurl url='mailto:ghelmer@alpha.dsu.edu'
name='&lt;ghelmer@alpha.dsu.edu&gt;'></tt>">
<!ENTITY a.gibbs "Justin T. Gibbs
<tt><htmlurl url='mailto:gibbs@FreeBSD.ORG'
name='&lt;gibbs@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.gj "Gary Jennejohn
<tt><htmlurl url='mailto:gj@FreeBSD.ORG'
name='&lt;gj@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.gpalmer "Gary Palmer
<tt><htmlurl url='mailto:gpalmer@FreeBSD.ORG'
name='&lt;gpalmer@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.graichen "Thomas Graichen
<tt><htmlurl url='mailto:graichen@FreeBSD.ORG'
name='&lt;graichen@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.gryphon "Coranth Gryphon
<tt><htmlurl url='mailto:gryphon@healer.com'
name='&lt;gryphon@healer.com&gt;'></tt>">
<!ENTITY a.guido "Guido van Rooij
<tt><htmlurl url='mailto:guido@FreeBSD.ORG'
name='&lt;guido@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.hanai "花井浩之
<tt><htmlurl url='mailto:hanai@FreeBSD.ORG'
name='&lt;hanai@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.handy "Brian N. Handy
<tt><htmlurl url='mailto:handy@sxt4.physics.montana.edu'
name='&lt;handy@sxt4.physics.montana.edu&gt;'></tt>">
<!ENTITY a.hm "Hellmuth Michaelis
<tt><htmlurl url='mailto:hm@kts.org'
name='&lt;hm@kts.org&gt;'></tt>">
<!ENTITY a.hsu "Jeffrey Hsu
<tt><htmlurl url='mailto:hsu@FreeBSD.ORG'
name='&lt;hsu@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.imp "Warner Losh
<tt><htmlurl url='mailto:imp@FreeBSD.ORG'
name='&lt;imp@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.jb "John Birrell
<tt><htmlurl url='mailto:jb@cimlogic.com.au'
name='&lt;jb@cimlogic.com.au&gt;'></tt>">
<!ENTITY a.jdp "John Polstra
<tt><htmlurl url='mailto:jdp@FreeBSD.ORG'
name='&lt;jdp@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.jehamby "Jake Hamby
<tt><htmlurl url='mailto:jehamby@lightside.com'
name='&lt;jehamby@lightside.com&gt;'></tt>">
<!ENTITY a.jfieber "John Fieber
<tt><htmlurl url='mailto:jfieber@FreeBSD.ORG'
name='&lt;jfieber@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.jfitz "James FitzGibbon
<tt><htmlurl url='mailto:james@nexis.net'
name='&lt;james@nexis.net&gt;'></tt>">
<!ENTITY a.jgreco "Joe Greco
<tt><htmlurl url='mailto:jgreco@FreeBSD.ORG'
name='&lt;jgreco@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.jhay "John Hay
<tt><htmlurl url='mailto:jhay@FreeBSD.ORG'
name='&lt;jhay@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.jkh "Jordan K. Hubbard
<tt><htmlurl url='mailto:jkh@FreeBSD.ORG'
name='&lt;jkh@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.jlind "John Lind
<tt><htmlurl url='mailto:john@starfire.MN.ORG'
name='&lt;john@starfire.MN.ORG&gt;'></tt>">
<!ENTITY a.jlrobin "James L. Robinson
<tt><htmlurl url='mailto:jlrobin@FreeBSD.ORG'
name='&lt;jlrobin@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.jmacd "Joshua Peck Macdonald
<tt><htmlurl url='mailto:jmacd@FreeBSD.ORG'
name='&lt;jmacd@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.jmb "Jonathan M. Bresler
<tt><htmlurl url='mailto:jmb@FreeBSD.ORG'
name='&lt;jmb@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.jmg "John-Mark Gurney
<tt><htmlurl url='mailto:jmg@FreeBSD.ORG'
name='&lt;jmg@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.jmz "Jean-Marc Zucconi
<tt><htmlurl url='mailto:jmz@FreeBSD.ORG'
name='&lt;jmz@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.joerg "J&ouml;rg Wunsch
<tt><htmlurl url='mailto:joerg@FreeBSD.ORG'
name='&lt;joerg@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.john "John Cavanaugh
<tt><htmlurl url='mailto:john@FreeBSD.ORG'
name='&lt;john@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.jraynard "James Raynard
<tt><htmlurl url='mailto:jraynard@freebsd.org'
name='&lt;jraynard@freebsd.org&gt;'></tt>">
<!ENTITY a.julian "Julian Elischer
<tt><htmlurl url='mailto:julian@FreeBSD.ORG'
name='&lt;julian@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.jvh "Johannes Helander
<tt><htmlurl url='mailto:jvh@FreeBSD.ORG'
name='&lt;jvh@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.karl "Karl Strickland
<tt><htmlurl url='mailto:karl@FreeBSD.ORG'
name='&lt;karl@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.kato "Takenori KATO
<tt><htmlurl url='mailto:kato@FreeBSD.ORG'
name='&lt;kato@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.kelly "Sean Kelly
<tt><htmlurl url='mailto:kelly@fsl.noaa.gov'
name='&lt;kelly@fsl.noaa.gov&gt;'></tt>">
<!ENTITY a.kjc "Kenjiro Cho
<tt><htmlurl url='mailto:kjc@FreeBSD.ORG'
name='&lt;kjc@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.lars "Lars Fredriksen
<tt><htmlurl url='mailto:lars@FreeBSD.ORG'
name='&lt;lars@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.ljo "L Jonas Olsson
<tt><htmlurl url='mailto:ljo@FreeBSD.ORG'
name='&lt;ljo@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.markm "Mark Murray
<tt><htmlurl url='mailto:markm@FreeBSD.ORG'
name='&lt;markm@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.martin "Martin Renters
<tt><htmlurl url='mailto:martin@FreeBSD.ORG'
name='&lt;martin@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.max "中根 雅文
<tt><htmlurl url='mailto:max@FreeBSD.ORG'
name='&lt;max@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.mayo "Mark Mayo
<tt><htmlurl url='mailto:mayo@quickweb.com'
name='&lt;mayo@quickweb.com&gt;'></tt>">
<!ENTITY a.mbarkah "Ade Barkah
<tt><htmlurl url='mailto:mbarkah@FreeBSD.ORG'
name='&lt;mbarkah@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.mckay "Stephen McKay
<tt><htmlurl url='mailto:mckay@FreeBSD.ORG'
name='&lt;mckay@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.md "Mark Dapoz
<tt><htmlurl url='mailto:md@bsc.no'
name='&lt;md@bsc.no&gt;'></tt>">
<!ENTITY a.mpp "Mike Pritchard
<tt><htmlurl url='mailto:mpp@FreeBSD.ORG'
name='&lt;mpp@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.msmith "Michael Smith
<tt><htmlurl url='mailto:msmith@FreeBSD.ORG'
name='&lt;msmith@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.nate "Nate Williams
<tt><htmlurl url='mailto:nate@FreeBSD.ORG'
name='&lt;nate@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.nik "Nik Clayton
<tt><htmlurl url='mailto:nik@blueberry.co.uk'
name='&lt;nik@blueberry.co.uk&gt;'></tt>">
<!ENTITY a.nsj "Nate Johnson
<tt><htmlurl url='mailto:nsj@FreeBSD.ORG'
name='&lt;nsj@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.obrien "David O'Brien
<tt><htmlurl url='mailto:obrien@cs.ucdavis.edu'
name='&lt;obrien@cs.ucdavis.edu&gt;'></tt>">
<!ENTITY a.olah "Andras Olah
<tt><htmlurl url='mailto:olah@FreeBSD.ORG'
name='&lt;olah@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.opsys "Chris Watson
<tt><htmlurl url='mailto:opsys@open-systems.net'
name='&lt;opsys@open-systems.net&gt;'></tt>">
<!ENTITY a.paul "Paul Richards
<tt><htmlurl url='mailto:paul@FreeBSD.ORG'
name='&lt;paul@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.pds "Peter da Silva
<tt><htmlurl url='mailto:pds@FreeBSD.ORG'
name='&lt;pds@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.peter "Peter Wemm
<tt><htmlurl url='mailto:peter@FreeBSD.ORG'
name='&lt;peter@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.phk "Poul-Henning Kamp
<tt><htmlurl url='mailto:phk@FreeBSD.ORG'
name='&lt;phk@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.pjc "Peter Childs
<tt><htmlurl url='mailto:pjchilds@imforei.apana.org.au'
name='&lt;pjchilds@imforei.apana.org.au&gt;'></tt>">
<!ENTITY a.proven "Chris Provenzano
<tt><htmlurl url='mailto:proven@FreeBSD.ORG'
name='&lt;proven@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.pst "Paul Traina
<tt><htmlurl url='mailto:pst@FreeBSD.ORG'
name='&lt;pst@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.rgrimes "Rodney Grimes
<tt><htmlurl url='mailto:rgrimes@FreeBSD.ORG'
name='&lt;rgrimes@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.rhuff "Robert Huff
<tt><htmlurl url='mailto:rhuff@cybercom.net'
name='&lt;rhuff@cybercom.net&gt;'></tt>">
<!ENTITY a.ricardag "Ricardo AG
<tt><htmlurl url='mailto:ricardag@ag.com.br'
name='&lt;ricardag@ag.com.br&gt;'></tt>">
<!ENTITY a.rich "Rich Murphey
<tt><htmlurl url='mailto:rich@FreeBSD.ORG'
name='&lt;rich@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.roberto "Ollivier Robert
<tt><htmlurl url='mailto:roberto@FreeBSD.ORG'
name='&lt;roberto@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.scrappy "Marc G. Fournier
<tt><htmlurl url='mailto:scrappy@FreeBSD.ORG'
name='&lt;scrappy@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.se "Stefan Esser
<tt><htmlurl url='mailto:se@FreeBSD.ORG'
name='&lt;se@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.sef "Sean Eric Fagan
<tt><htmlurl url='mailto:sef@FreeBSD.ORG'
name='&lt;sef@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.smace "Scott Mace
<tt><htmlurl url='mailto:smace@FreeBSD.ORG'
name='&lt;smace@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.smpatel "Sujal Patel
<tt><htmlurl url='mailto:smpatel@FreeBSD.ORG'
name='&lt;smpatel@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.sos "S&oslash;ren Schmidt
<tt><htmlurl url='mailto:sos@FreeBSD.ORG'
name='&lt;sos@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.stark "Gene Stark
<tt><htmlurl url='mailto:stark@FreeBSD.ORG'
name='&lt;stark@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.stb "Stefan Bethke
<tt><htmlurl url='mailto:stb@FreeBSD.ORG'
name='&lt;stb@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.steve "Steve Price
<tt><htmlurl url='mailto:steve@FreeBSD.ORG'
name='&lt;steve@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.swallace "Steven Wallace
<tt><htmlurl url='mailto:swallace@FreeBSD.ORG'
name='&lt;swallace@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.tedm "Ted Mittelstaedt
<tt><htmlurl url='mailto:tedm@FreeBSD.ORG'
name='&lt;tedm@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.tegge "Tor Egge
<tt><htmlurl url='mailto:tegge@FreeBSD.ORG'
name='&lt;tegge@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.tg "Thomas Gellekum
<tt><htmlurl url='mailto:tg@FreeBSD.ORG'
name='&lt;tg@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.torstenb "Torsten Blum
<tt><htmlurl url='mailto:torstenb@FreeBSD.ORG'
name='&lt;torstenb@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.ugen "Ugen J.S.Antsilevich
<tt><htmlurl url='mailto:ugen@FreeBSD.ORG'
name='&lt;ugen@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.uhclem "Frank Durda IV
<tt><htmlurl url='mailto:uhclem@FreeBSD.ORG'
name='&lt;uhclem@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.ulf "Ulf Zimmermann
<tt><htmlurl url='mailto:ulf@FreeBSD.ORG'
name='&lt;ulf@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.whiteside "Don Whiteside
<tt><htmlurl url='mailto:whiteside@acm.org'
name='&lt;whiteside@acm.org&gt;'></tt>">
<!ENTITY a.wilko "Wilko Bulte
<tt><htmlurl url='mailto:wilko@yedi.iaf.nl'
name='&lt;wilko@yedi.iaf.nl&gt;'></tt>">
<!ENTITY a.wlloyd "Bill Lloyd
<tt><htmlurl url='mailto:wlloyd@mpd.ca'
name='&lt;wlloyd@mpd.ca&gt;'></tt>">
<!ENTITY a.wollman "Garrett Wollman
<tt><htmlurl url='mailto:wollman@FreeBSD.ORG'
name='&lt;wollman@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.wosch "Wolfram Schneider
<tt><htmlurl url='mailto:wosch@FreeBSD.ORG'
name='&lt;wosch@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.wpaul "Bill Paul
<tt><htmlurl url='mailto:wpaul@FreeBSD.ORG'
name='&lt;wpaul@FreeBSD.ORG&gt;'></tt>">
<!ENTITY a.yokota "Kazutaka YOKOTA
<tt><htmlurl url='mailto:yokota@FreeBSD.ORG'
name='&lt;yokota@FreeBSD.ORG&gt;'></tt>">

View file

@ -1,93 +0,0 @@
<!-- $Id: basics.sgml,v 1.4 1997/02/22 13:00:36 peter Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.9 -->
<chapt><heading>Unix の基礎知識<label id="basics"></heading>
<p><em>訳: &a.nakai;<newline>12 October 1996.</em>
<sect>
<heading>オンラインマニュアル<label id="basics:man"></heading>
<p>FreeBSD についてのもっとも包括的なドキュメントは
<em>マニュアルページ</em>の形式になっているものです.
FreeBSD システム上のほとんどすべてのプログラムには基本的な
操作方法とさまざまな引数を説明しているリファレンスマニュアル
がついています。これらのマニュアルは
<tt><bf>man</bf></tt> コマンドで見ることができます。
<tt><bf>man</bf></tt> コマンドの使い方は簡単です :
<tscreen>
<bf>man</bf> <it>コマンド名</it>
</tscreen>
<it>コマンド名</it>のところには知りたいコマンドの名前を入れます。
たとえば、<tt><bf>ls</bf></tt> コマンドについて知りたい場合には
次のように入力します :
<tscreen>
% <bf>man ls</bf>
</tscreen>
<p>オンラインマニュアルは数字のついたセクションに分けられています :
<enum>
<item>ユーザコマンド</item>
<item>システムコールとエラー番号</item>
<item>C のライブラリ関数</item>
<item>デバイスドライバ</item>
<item>ファイル形式</item>
<item>ゲームとほかのお楽しみ</item>
<item>そのほかの情報</item>
<item>システムの管理と操作のためのコマンド</item>
</enum>
場合によっては, 同じことがらでもオンラインマニュアルでは
複数のセクションに記載されていることがあります。たとえば、
<tt><bf>chmod</bf></tt> ユーザコマンドと <tt><bf>chmod()</bf></tt>
システムコールがあります。この場合、<tt><bf>man</bf></tt>
コマンドでどちらを参照したいかをセクションで指定することが
できます :
<tscreen>
% <bf>man 1 chmod</bf>
</tscreen>
とすればユーザコマンドとしての <tt><bf>chmod</bf></tt>
のマニュアルページが表示されます。オンラインマニュアル上の特定の
セクションへの参照は通常、書かれているドキュメントの
括弧の中に示されています。ですから、<tt><bf>chmod(1)</bf></tt> は
<tt><bf>chmod</bf></tt> ユーザコマンドを、
<tt><bf>chmod(2)</bf></tt> はシステムコールの方を示しています。
<p>コマンドの名前を知っていて, 単純にその使い方が分かる場合は
よいのですが、もしコマンドの名前を思い出せない場合には
どうしたらいいのでしょう? <tt><bf>man</bf></tt> に
<tt><bf>-k</bf></tt> スイッチをつければ,
コマンドデスクリプション中のキーワードから検索することができます :
<tscreen>
% <bf>man -k mail</bf>
</tscreen>
このコマンドを使うことで, 「mail」というキーワードを含むコマンドの
一覧を参照することができます。実を言うと <tt><bf>apropos</bf></tt>
コマンドを使うのと機能的には同じです。
<p>それから、<tt>/usr/bin</tt> にある優れたコマンドすべてを目にしても、
それらの大半がどういった働きをするのかまったく見当もつかないときは
どうしたらよいでしょう。単純に、
<tscreen>
% <bf>cd /usr/bin; man -f *</bf>
</tscreen>
あるいは同じ働きをする
<tscreen>
% <bf>cd /usr/bin; whatis *</bf>
</tscreen>
としましょう。
<sect>
<heading>GNU の Info ファイル<label id="basics:info"></heading>
<p>FreeBSD には Free Software Foundation (FSF) によるアプリケーションや
ユーティリティがたくさんあります。こうしたプログラムには
manページに加えて、<em>info</em> ファイルと呼ばれる
ハイパーテキスト形式のドキュメントが付属になっていて、<tt>info</tt>
コマンドや、<tt>emacs</tt> をインストールしているなら
<tt>emacs</tt> の info モードで見ることができます。
<tt>info(1)</tt> コマンドを使うには, 単にこう入力します。
<tscreen>% <bf>info</bf></tscreen> おおまかなイントロダクションを
見るには、<tt><bf>h</bf></tt> と入力します。
クイックコマンドリファレンスは <tt><bf>?</bf></tt> とします。

View file

@ -1,429 +0,0 @@
<!-- $Id: bibliography.sgml,v 1.7 1997/03/21 09:46:34 hanai Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.26 -->
<chapt>
<heading>参考図書<label id="bibliography"></heading>
<p><em>訳: &a.nakai;<newline>12 October 1996.</em>
<p>FreeBSD オペレーティングシステムの個々の部分については
マニュアルページで定義のような説明がなされていますが,
それらにはどうやってその部分どうしをつなぎあわせて
オペレーティングシステム全体を円滑に動作させるかを
説明していないという欠点がよく指摘されます.
それを補うためには UNIX システム管理についてのよい本や,
すぐれた利用者向けのマニュアルが欠かせません.
<sect>
<heading>FreeBSDのためだけの書籍 & 雑誌</heading>
<p><bf>非英語文化圏の 書籍 & 雑誌:</bf>
<p><itemize>
<item><htmlurl url="http://freebsd.csie.nctu.edu.tw/~jdli/book.html"
name="FreeBSD 入門與應用"> (in Chinese).
<item>FreeBSD入門キット 98版第二版. 宮嵜忠臣 著.
秀和システム. ISBN4-87966-535-5 C3055 2900円.
<item>FreeBSD入門キット AT互換機版 第二版. 宮嵜忠臣 著.
秀和システム. ISBN4-87966-535-5 C3055 2900円.
<item>ここまでできる FreeBSD パワーガイド.
霜山 滋 仲道 嘉夫 山中右次 著. 秀和システム.
ISBN 4-87966-637-8 2600円.
</itemize>
<p><bf>英語の書籍 & 雑誌:</bf>
<p><itemize>
<item><htmlurl url="http://www.cdrom.com/titles/os/bsdbook2.htm"
name="The Complete FreeBSD">, published by <htmlurl
url="http://www.cdrom.com" name="Walnut Creek CDROM">.
</itemize>
<sect>
<heading>利用者向けのガイド</heading>
<p><itemize>
<item>Computer Systems Research Group, UC Berkeley.
<sl>4.4BSD User's Reference Manual</sl>.
O'Reilly &amp; Associates, Inc., 1994.
<newline>ISBN 1-56592-075-9</item>
<item>Computer Systems Research Group, UC Berkeley.
<sl>4.4BSD User's Supplementary Documents</sl>.
O'Reilly &amp; Associates, Inc., 1994.
<newline>ISBN 1-56592-076-7</item>
<item><sl>UNIX in a Nutshell</sl>.
O'Reilly &amp; Associates, Inc., 1990.
<newline>ISBN 093717520X</item>
<item>Mui, Linda.
<em>What You Need To Know When You Can't Find Your UNIX
System Administrator</em>.
O'Reilly &amp; Associates, Inc., 1995.
<newline>ISBN 1-56592-104-6 </item>
<item><htmlurl url="http://www-wks.acs.ohio-state.edu/"
name="Ohio State University"> has written
a <htmlurl
url="http://www-wks.acs.ohio-state.edu/unix_course/unix.html"
name="UNIX Introductory Course"> which is available online
in HTML and postscript format.</item>
</itemize>
<sect>
<heading>管理者向けのガイド</heading>
<p><itemize>
<item>Albitz, Paul and Liu, Cricket. <em>DNS and
BIND</em>, 2nd Ed.
O'Reilly &amp; Associates, Inc., 1997.
<newline>ISBN ISBN 1-56592-236-0
<newline>(訳注: 第一版の邦訳は以下のものが出版されています.
<newline>浅羽登志也 / 上水流由香 監訳. <em>DNS & BIND</em>.
アスキー, 1995.
<newline>ISBN 4-7561-0314-6)
</item>
<item>Computer Systems Research Group, UC Berkeley.
<sl>4.4BSD System Manager's Manual</sl>.
O'Reilly &amp; Associates, Inc., 1994.
<newline>ISBN 1-56592-080-5</item>
<item>Costales, Brian, et al.
<em>Sendmail</em>, 2nd Ed. O'Reilly &amp;
Associates, Inc., 1997.
<newline>ISBN 1-56592-222-0
<newline>(訳注: 第一版の邦訳は以下のものが出版されています.
<newline>村井純 監訳. <em>sendmail 解説</em>.
インターナショナル・トムソン・パブリッシング・ジャパン, 1994.
<newline>ISBN 4-900718-07-6)
</item>
<item>Frisch, &AElig;leen. <em>Essential System
Administration</em>, 2nd Ed. O'Reilly &amp;
Associates, Inc., 1995. <newline>ISBN 1-56592-127-5
<newline>(訳注: 第一版の邦訳は以下のものが出版されています.
<newline>榊正憲 訳. <em>UNIX システム管理入門</em>.
アスキー, 1995.
<newline>ISBN 4-7561-0313-8)
</item>
<item>Hunt, Craig. <em>TCP/IP Network Administration</em>.
O'Reilly &amp; Associates, Inc., 1992.
<newline>ISBN 0-937175-82-X
<newline>(訳注: 邦訳は以下のものが出版されています.
<newline>村井純 監訳. <em>TCP/IP ネットワーク管理</em>.
インターナショナル・トムソン・パブリッシング・ジャパン, 1994.
<newline>ISBN 4-900718-01-7)
</item>
<item>Nemeth, Evi. <em>UNIX System Administration
Handbook</em>. 2nd ed. Prentice Hall, 1995.
<newline>ISBN 0131510517
<newline>(訳注: 邦訳は以下のものが出版されています.
<newline>井上尚司監訳. <em>UNIX システム管理入門</em>.
ソフトバンク, 1992.
<newline>ISBN 4-89052-362-6
<newline>原本は第2版だが、訳出は第1版のみ)
</item>
<item>Stern, Hal <em>Managing NFS and NIS</em>
O'Reilly &amp; Associates, Inc., 1991.
<newline>ISBN 1-937175-75-7 </item>
</itemize>
<sect>
<heading>プログラマ向けのガイド</heading>
<p><itemize>
<item>Asente, Paul. <em>X Window System
Toolkit</em>. Digital Press.
<newline>ISBN 1-55558-051-3</item>
<item>Computer Systems Research Group, UC Berkeley.
<sl>4.4BSD Programmer's Reference Manual</sl>.
O'Reilly &amp; Associates, Inc., 1994.
<newline>ISBN 1-56592-078-3</item>
<item>Computer Systems Research Group, UC Berkeley.
<sl>4.4BSD Programmer's Supplementary Documents</sl>.
O'Reilly &amp; Associates, Inc., 1994.
<newline>ISBN 1-56592-079-1</item>
<item>Ellis, Margaret A. and Stroustrup,
Bjarne. <em>The Annotated C++ Reference
Manual</em>. Addison-Wesley, 1990.
<newline>ISBN 0-201-51459-1
<newline>(訳注: 邦訳は以下のものが出版されています.
<newline>足立高徳 / 小山裕司 訳.
<em>注解 C++ リファレンスマニュアル</em>.
トッパン, 1992.
<newline>ISBN 4-8101-8027-1)
</item>
<item>Harbison, Samuel P. and Steele, Guy
L. Jr. <em>C: A Reference Manual</em>. 4rd ed. Prentice
Hall, 1995. <newline>ISBN 0-13-326224-3
<newline>(訳注: 邦訳は以下のものが出版されています.
<newline>斎藤信男監訳.
<em>新・詳説C言語リファレンス[H&amp;Sリファレンス]</em>.
ソフトバンク, 1994.
<newline>ISBN 4-89052-506-8
<newline>原本は第4版だが、訳出は第3版のみ。)
</item>
<item>Kernighan, Brian and Dennis M. Ritchie.
<em>The C Programming Language.</em>.
PTR Prentice Hall, 1988.
<newline>ISBN 0-13-110362-9
<newline>(訳注: 邦訳は以下のものが出版されています.
<newline>石田晴久 訳.
<em>プログラミング言語 C 第2版(訳書訂正版)</em>
共立出版, 1989.
<newline>ISBN 4-320-02692-6)
</item>
<item>Lehey, Greg.
<em>Port UNIX Software</em>.
O'Reilly &amp; Associates, Inc., 1995.
<newline>ISBN 1-56592-126-7</item>
<item>Plauger, P. J. <em>The Standard C
Library</em>. Prentice Hall, 1992.
<newline>ISBN 0-13-131509-9
<newline>(訳注: 邦訳は以下のものが出版されています.
<newline>福富寛 / 門倉明彦 / 清水恵介 訳.
<em>標準 C ライブラリ ANSI/ISO/JIS C規格</em>.
トッパン, 1995.
<newline>ISBN 4-8101-8541-9)
</item>
<item>Stevens, W. Richard. <em>Advanced
Programming in the UNIX Environment</em>.
Reading, Mass. : Addison-Wesley, 1992
<newline>ISBN 0-201-56317-7
<newline>(訳注: 邦訳は以下のものが出版されています.
<newline>大木敦雄 訳.
<em>詳解 UNIX プログラミング</em>. トッパン, 1994.
<newline>ISBN 4-89052-524-6)
</item>
<item>Stevens, W. Richard. <em>UNIX Network
Programming</em>. PTR Prentice Hall, 1990.
<newline>ISBN 0-13-949876-1
<newline>(訳注: 邦訳は以下のものが出版されています.
<newline>篠田陽一 訳.
<em>UNIX ネットワークプログラミング</em>.
トッパン,1992.
<newline>ISBN 4-8101-8509-5)
</item>
<item>Wells, Bill. "Writing Serial Drivers for UNIX".
<em>Dr. Dobb's Journal</em>. 19(15), December
1994. pp68-71, 97-99.</item>
</itemize>
<sect>
<heading>オペレーティングシステム内部</heading>
<p><itemize>
<item>Andleigh, Prabhat K. <em>UNIX System Architecture</em>.
Prentice-Hall, Inc., 1990.
<newline>ISBN 0-13-949843-5</item>
<item>Jolitz, William. "Porting UNIX to the
386". <em>Dr. Dobb's Journal</em>. January
1991-July 1992.
</item>
<item>Leffler, Samuel J., Marshall Kirk McKusick,
Michael J Karels and John Quarterman <em>The Design and
Implementation of the 4.3BSD UNIX Operating
System</em>. Reading, Mass. : Addison-Wesley, 1989.
<newline>ISBN 0-201-06196-1
<newline>(訳注: 邦訳は以下のものが出版されています.
<newline>中村明 / 相田仁 / 計宇生 / 小池汎平 訳.
<em>UNIX 4.3BSDの設計と実装</em>. 丸善, 1991.
<newline>ISBN 4-621-03607-6)
</item>
<item>Leffler, Samuel J., Marshall Kirk McKusick,
<em>The Design and Implementation of the 4.3BSD
UNIX Operating System: Answer Book</em>.
Reading, Mass. : Addison-Wesley, 1991.
<newline>ISBN 0-201-54629-9
<newline>(訳注: 邦訳は以下のものが出版されています.
<newline>相田仁 / 計宇生 / 小池汎平 訳.
<em>UNIX 4.3BSDの設計と実装</em>.
アンサーブック, トッパン, 1991.
<newline>ISBN 4-8101-8039-5)
</item>
<item>McKusick, Marshall Kirk, Keith Bostic, Michael J Karels,
and John Quarterman. <em>The Design and
Implementation of the 4.4BSD Operating
System</em>. Reading, Mass. : Addison-Wesley, 1996.
<newline>ISBN 0-201-54979-4</item>
<item>Stevens, W. Richard. <em>TCP/IP Illustrated,
Volume 1: The Protocols</em>.
Reading, Mass. : Addison-Wesley, 1996.
<newline>ISBN 0-201-63346-9</item>
<item>Stevens, W. Richard. <em>TCP/IP Illustrated,
Volume 3: TCP for Transactions, HTTP, NNTP
and the UNIX Domain Protocols</em>.
Reading, Mass. : Addison-Wesley, 1996.
<newline>ISBN 0-201-63495-3</item>
<item>Vahalia, Uresh. <em>UNIX Internals -- The New Frontiers</em>.
Prentice Hall, 1996.
<newline>ISBN 0-13-101908-2</item>
<item>Wright, Gary R. and W. Richard Stevens.
<em>TCP/IP Illustrated, Volume 2:
The Implementation</em>.
Reading, Mass. : Addison-Wesley, 1995.
<newline>ISBN 0-201-63354-X</item>
</itemize>
<sect>
<heading>セキュリティの参考資料</heading>
<p><itemize>
<item>Cheswick, William R. and Steven M. Bellovin.
<em>Firewalls and Internal Security:
Repelling the Wily Hacker</em>.
Reading, Mass. : Addison-Wesley, 1995.
<newline>ISBN 1-201-63357-4
<newline>(訳注: 邦訳は以下のものが出版されています.
<newline>川副博 監訳. <em>ファイアウォール</em>.
ソフトバンク, 1995.
<newline>ISBN 4-89052-672-2)
</item>
<item>Garfinkel, Simson and Gene Spafford.
<em>Practical UNIX Security</em>. 2nd Ed.
O'Reilly &amp; Associates, Inc., 1996.
<newline>ISBN 1-56592-148-8
<newline>(訳注: 邦訳は以下のものが出版されています.
<newline>山口英監訳. <em>UNIX セキュリティ</em>.
アスキー, 1993.
<newline>ISBN 4-7561-0274-3
<newline>原本は第2版だが、訳出は第1版のみ)
</item>
<item>Garfinkel, Simson.
<em>PGP Pretty Good Privacy</em>
O'Reilly &amp; Associates, Inc., 1995.
<newline>ISBN 1-56592-098-8 </item>
</itemize>
<sect>
<heading>ハードウェアの参考資料</heading>
<p><itemize>
<item>Anderson, Don and Tom Shanley.
<em>Pentium Processor System Architecture</em>.
2nd ed. Reading, Mass. : Addison-Wesley, 1995.
<newline>ISBN 0-201-40992-5</item>
<item>Ferraro, Richard F. <em>Programmer's Guide
to the EGA, VGA, and Super VGA Cards</em>.
3rd ed. Reading, Mass. : Addison-Wesley, 1995.
<newline>ISBN 0-201-62490-7</item>
<item>Shanley, Tom. <em>80486 System
Architecture</em>. 3rd ed. Reading, Mass. :
Addison-Wesley, 1995. <newline>ISBN
0-201-40994-1</item>
<item>Shanley, Tom. <em>ISA System
Architecture</em>. 3rd ed. Reading, Mass. :
Addison-Wesley, 1995.
<newline>ISBN 0-201-40996-8</item>
<item>Shanley, Tom. <em>PCI System
Architecture</em>. 3rd ed. Reading, Mass. :
Addison-Wesley, 1995. <newline>ISBN
0-201-40993-3</item>
<item>Van Gilluwe, Frank. <em>The Undocumented PC</em>.
Reading, Mass: Addison-Wesley Pub. Co., 1994.
<newline>ISBN 0-201-62277-7</item>
</itemize>
<sect>
<heading>UNIX の歴史</heading>
<p><itemize>
<item>Lion, John <em>Lion's Commentary on UNIX, 6th Ed.
With Source Code</em>.
ITP Media Group, 1996.
<newline>ISBN 1573980137</item>
<item>Raymond, Eric s. <em>The New Hacker's Dictonary,
3rd edition</em>. MIT Press, 1996.
<newline>ISBN 0-262-68092-0
<newline>Also known as the
<htmlurl url="http://www.ccil.org/jargon/jargon.html"
name="Jargon File"></item>
<item>Saulus, Peter H. <em>A quarter century of UNIX</em>.
Addison-Wesley Publishing Company, Inc., 1994.
<newline>ISBN 0-201-54777-5</item>
<item>Simon Garfinkel, Daniel Weise, Steven Strassmann.
<em>The UNIX-HATERS Handbook</em>.
IDG Books Worldwide, Inc., 1994.
<newline>ISBN 1-56884-203-1</item>
<item>Don Libes, Sandy Ressler <em>Life with UNIX</em> - special
edition. Prentice-Hall, Inc., 1989.
<newline>ISBN 0-13-536657-7
<newline>(訳注: 邦訳は以下のものが出版されています.
<newline>坂本文 監訳. <em>Life with UNIX</em>.
アスキー, 1990.
<newline>ISBN 4-7561-0783-4
<newline>邦訳がSpecial 版の訳出か否かは不明)
</item>
<item><em>BSD 系 OS の系譜図</em>. 1997年.
<newline>
<htmlurl url="http://www.de.freebsd.org/de/ftp/unix-stammbaum"
name="http://www.de.freebsd.org/de/ftp/unix-stammbaum">
または, FreeBSD-current マシンの<url
url="file:/usr/share/misc/bsd-family-tree" name="ローカルファイル">.
</item>
</itemize>
<sect>
<heading>雑誌とジャーナル</heading>
<p><itemize>
<item><em>The C/C++ Users Journal</em>. R&amp;D Publications
Inc. ISSN 1075-2838</item>
<item><em>Sys Admin - The Journal for UNIX System
Administrators</em> Miller Freeman, Inc., ISSN 1061-2688</item>
</itemize>
</sect>

View file

@ -1,51 +0,0 @@
<!-- $Id: boothelp.sgml,v 1.4 1997/02/22 13:00:38 peter Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.4 -->
<!DOCTYPE linuxdoc PUBLIC "-//FreeBSD//DTD linuxdoc//EN" [
<!-- Conditional flags for this version of the document -->
<!ENTITY % boothelp.only "INCLUDE">
<!ENTITY % handbook.only "IGNORE">
<!-- Entity shorthand for authors' names and email addresses -->
<!ENTITY % authors SYSTEM "authors.sgml">
%authors;
<!-- Entity definitions for all the parts -->
<!ENTITY % sections SYSTEM "sections.sgml">
%sections;
]>
<linuxdoc>
<book>
<title>FreeBSD のインストール
<author>
<name></name>
</author>
<abstract>FreeBSD の世界へようこそ! このガイドは FreeBSD の
インストール方法について説明しています.
矢印キーの<bf>上</bf>と<bf>下</bf>を使って
このガイドの読みたいセクションに移動し,
<bf>右矢印キー</bf>か<bf>リターンキー</bf>を使ってお読みください.
一度読んだことのあるセクションは<bf>左矢印キー</bf>で
戻って読みなおすことができます.
</abstract>
<chapt><heading>一般的な情報</heading>
&nutshell;
&history;
&relnotes;
&install;
&troubleshooting;
&bibliography;
&eresources;
&hw;
&contrib;
</book>
</linuxdoc>

View file

@ -1,183 +0,0 @@
<!-- $Id: booting.sgml,v 1.4 1997/02/22 13:00:39 peter Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.13 -->
<!-- This is a SGML version of the text on FreeBSD boot procedures
made by Poul-Henning Kamp <phk@FreeBSD.ORG>
This conversion has been made by Ollivier Robert.
<!DOCTYPE linuxdoc PUBLIC "-//FreeBSD//DTD linuxdoc//EN">
<article>
<title>ブートの概要</title>
<author>Poul-Henning Kamp, <tt/&lt;phk@login.dknet.dk&gt;/</author>
<date>v1.1, April 26th</date>
<abstract>
FreeBSDのブートには基本的に3つの段階があります:
カーネルの読み込み、ルートのファイルシステムの決定、そして
ユーザ領域にあるものの初期化です。このことは下に述べる
いくつかの興味深い可能性につながっているのです...
</abstract>
<toc>
-->
<sect><heading>FreeBSDのブート処理の流れ<label id="booting"></heading>
<p><em>原作: &a.phk;. v1.1, April 26th.</em>
<p><em>訳: &a.nakai; September 6 1996.</em>
FreeBSDのブートには基本的に3つの段階があります:
カーネルの読み込み, ルートのファイルシステムの決定, そして
ユーザ領域にあるものの初期化です. このことは下に述べる
いくつかの興味深い可能性につながっています。
<sect1><heading>カーネルの読み込み</heading>
<p>
現在, カーネルの読み込みには基本的に下に挙げる3つの方法が
あります:
これらはカーネルが次に何をしたらいいのかという情報をカーネルに
与えます.
<descrip>
<tag>Biosboot</tag>
Biosbootは「ブートブロック」に相当するもので, 2つのファイル
から構成されており, フロッピーディスクやハードディスクのブートを
開始する側の 8K バイトにインストールされています。
Biosboot は FreeBSD のファイルシステムからカーネルを
読み込むことができます.
<tag>Dosboot</tag>
Dosbootは DI. Christian Gusenbauerによって書かれましたが,
不幸にしてこの場合には、コードのある一部分がマイクロソフトの
コンパイラ向けに書かれているため、FreeBSD 単体ではコンパイル
することはできません.
Dosboot は MS-DOS のファイルから、またはディスクの
FreeBSD ファイルシステムのパーティションからカーネルをブートします。
これは MS-DOS システムのハイメモリ領域に潜んでいるメモリマネージャ等の
さまざまな怪しい代物とメモリの取り合いをして、なんとかブートしています.
<tag>Netboot</tag>
Netboot はサポートされているイーサネットカードを検出し、
BOOTP や TFTP、NFS を使ってブートするカーネルを探そうとします。
</descrip>
<sect1><heading>ルートファイルシステムの決定</heading>
<p>
カーネルが読み込まれ、ブートプログラムがカーネルに移行したら,
カーネルは自身の初期化をし, どんなハードウェアが組み込まれいるか
を決定し、それからルートファイルシステムを探さなくてはなりません。
現在サポートされているルートファイルシステムは次の通りです :
<descrip>
<tag>UFS</tag>
UFS は, もっとも一般的なタイプのルートシステムです。
フロッピーディスクやハードディスク上に存在します。
<tag>MSDOS</tag>
技術的に可能ですが、あまり有用ではありません。なぜならば、
``FAT''ファイルシステムではリンクやデバイスノードなどの
``UNIX 主義''を実現できないからです。
<tag>MFS</tag>
MFS はカーネル内部に組み込みになっている UFS
ファイルシステムです。つまり MFS を機能させるのに
ディスクやフロッピーディスクなどのハードウェアは
必要ではありません.
<tag>CD9660</tag>
CD9660 は CD-ROM をルートファイルシステムに使用したものです。
<tag>NFS</tag>
これはルートシステムにファイルサーバを使用していて、基本的に
ディスクレスのマシンのためにあります。
</descrip>
<sect1><heading>ユーザ領域にあるものの初期化</heading>
<p>
ユーザ領域で動作させるようにするために、カーネルが初期化を終えると、
カーネルは``<tt/pid == 1/''のプロセスを生成し、ルートファイルシステム
上のプログラムを実行します。このプログラムは通常``<tt>/sbin/init</tt>''
です。
/sbin/init を別なプログラム置き換えてしまうことは可能ですが、そのプロセス
には以下のような制約があります:
pid が 1 のプロセスには stdin/stdout/stderr は割り当てられていませんので、
プログラムは自分でこれらをオープンしないとなりません。
このプロセスが終了するとカーネルはパニックメッセージを表示して
停止します。
また、このプロセスに対するシグナル処理は特殊です。
この例として、インストール用のフロッピーディスクにある
``<tt>/stand/sysinstall</tt>''があります。
<sect1><heading>興味深い連係</heading>
<p>
カーネルを MFS でブートするのには次のような特別の<tt>/sbin/init</tt>
を使います。
<descrip>
<tag/A -- DOS を使う場合/
<itemize>
<item><tt/C:/ を <tt>/C:</tt> にマウントします。
<item><tt>C:/freebsd.fs</tt> を <tt>/dev/vn0</tt> にアタッチします。
<item><tt>/dev/vn0</tt> を <tt>/rootfs</tt> にマウントします。
<item>シンボリックリンクを作ります。<newline>
<tt>/rootfs/bin -&gt; /bin</tt><newline>
<tt>/rootfs/etc -&gt; /etc</tt><newline>
<tt>/rootfs/sbin -&gt; /sbin</tt><newline>
(etc...)<newline>
</itemize>
これでハードディスクのパーティションを切り直さずに FreeBSD を
使うことができます。
<tag/B -- NFS を使う場合/
NFS は<tt>サーバ:&tilde;you/FreeBSD</tt> を
<tt>/nfs</tt>にマウントし、ルートディレクトリを <tt>/nfs</tt> に変更して,
そこで<tt>/sbin/init</tt>を実行します。
これで FreeBSD をディスクレスで実行できますが、NFS サーバを
コントロールできないままです...
<tag/C -- X-server を起動する場合/
これで Xターミナルが手に入りました. これは, これでハードウェア
に費用を割いたりするよりはいい, と上司が主張した, Windows で
動作する遅くて何がおこなわれているのか見ることができるような
すすけた X Window エミュレータなんかよりよいものです.
<tag/D -- テープを使う場合/
<tt>/dev/rwd0</tt> のコピーを取って、リモートにあるテープ
ステーションやファイルサーバに書き込んでください。
これで一年前に取っておくべきだったバックアップをやっと
取ることができました。
<tag>E -- ファイアウォール/Web サーバとして動作させる場合 (私の知っている範囲で...)</tag>
これは特に面白いもので、書き込み禁止のフロッピーディスクから
ブートができて、ルートのファイルシステムに書き込むことができる
というものです。
</descrip>

View file

@ -1,499 +0,0 @@
<!-- $Id: contrib.sgml,v 1.57 1997/05/20 14:25:19 max Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.249 -->
<!-- Please try to keep the file 'avail' (from CVSROOT)
in sync with the list of FreeBSD Developers -->
<chapt><heading>FreeBSDプロジェクトスタッフ<label id="staff"></heading>
<p><em>訳: &a.hanai;<newline>28 August 1996.</em>
<p>FreeBSDプロジェクトは, 以下の人々によって管理運営されています.
<sect><heading>FreeBSD コアチーム<label id="contrib:core"></heading>
<p>FreeBSD コアチームは, プロジェクトの運用委員会を形成し, FreeBSD
プロジェクトの全般的な目的や方針の決定を行います. さらに,
FreeBSDプロジェクトの<ref id="contrib:who" name="特定の分野">の
運用も行っています.
<p>(姓でアルファベット順):
<itemize>
<item>&a.asami;
<item>&a.jmb;
<item>&a.ache;
<item>&a.dyson;
<item>&a.bde;
<item>&a.gibbs;
<item>&a.davidg;
<item>&a.jkh;
<item>&a.phk;
<item>&a.rich;
<item>&a.gpalmer;
<item>&a.jdp;
<item>&a.guido;
<item>&a.sos;
<item>&a.peter;
<item>&a.wollman;
<item>&a.joerg;
</itemize>
<sect><heading>FreeBSD の開発者たち<label id="contrib:committers"></heading>
<p>(CVSの)commitする権利を持っていて, FreeBSD のソースツリーについて
作業をおこなっている人々がいます. すべてのコアチームのメンバと
ほとんどの FreeBSDドキュメンテーションプロジェクトのスタッフはま
た 開発者でもあります.
<itemize>
<item>&a.mbarkah;
<item>&a.stb;
<item>&a.jb;
<item>&a.torstenb;
<item>&a.danny;
<item>&a.charnier;
<item>&a.kjc;
<item>&a.gclarkii;
<item>&a.cracauer;
<item>&a.adam;
<item>&a.dufault;
<item>&a.uhclem;
<item>&a.tegge;
<item>&a.eivind;
<item>&a.sef;
<item>&a.julian;
<item>&a.se;
<item>&a.fenner;
<item>&a.jfieber;
<item>&a.jfitz;
<item>&a.lars;
<item>&a.scrappy;
<item>&a.tg;
<item>&a.graichen;
<item>&a.jgreco;
<item>&a.rgrimes;
<item>&a.jmg;
<item>&a.jhay;
<item>&a.hsu;
<item>&a.ugen;
<item>&a.gj;
<item>&a.nsj;
<item>&a.ljo;
<item>&a.darrenr;
<item>&a.kato;
<item>&a.andreas;
<item>&a.erich;
<item>&a.imp;
<item>&a.smace;
<item>&a.mckay;
<item>&a.tedm;
<item>&a.amurai;
<item>&a.markm;
<item>&a.max;
<item>&a.alex;
<item>&a.davidn;
<item>&a.obrien;
<item>&a.fsmp;
<item>&a.smpatel;
<item>&a.wpaul;
<item>&a.jmacd;
<item>&a.steve;
<item>&a.mpp;
<item>&a.dfr;
<item>&a.jraynard;
<item>&a.csgr;
<item>&a.martin;
<item>&a.paul;
<item>&a.roberto;
<item>&a.chuckr;
<item>&a.dima;
<item>&a.wosch;
<item>&a.ats;
<item>&a.msmith;
<item>&a.brian;
<item>&a.stark;
<item>&a.karl;
<item>&a.pst;
<item>&a.swallace;
<item>&a.nate;
<item>&a.yokota;
<item>&a.jmz;
<item>&a.hanai;
</itemize>
<sect><heading>FreeBSD ドキュメンテーションプロジェクト<label
id="contrib:doc"></heading>
<p>FreeBSD ドキュメンテーションプロジェクトは複数のサービスを提供
しています. それぞれのサービスは, 以下の担当者とその
<em>副担当者</em>によって運用されています.
<p><descrip>
<tag/ドキュメンテーションプロジェクト担当/ &a.jfieber
<tag/Web 管理責任者/ &a.mbarkah; <p><em>副責任者:</em> &a.paul
<tag/ハンドブックおよび FAQ 編集担当/ &a.pds
<tag/ドキュメント構築環境の技術責任者/ &a.paul; <p><em>副責任者:</em> &a.dave
<tag/Mirror 担当/ &a.ulf; <p><em>副担当</em>&a.john
<tag/ニュースフラッシュ編集担当/ &a.nsj; <p><em>副担当:</em>&a.john;
<tag/FreeBSD ギャラリーおよび商用ベンダ情報ページ担当/ &a.nsj; <p><em>副担当</em>&a.cawimm
<tag/WEB ページデザイン等の美術担当/ &a.dave; <p><em>副担当:</em>&a.opsys
<tag/データベース技術担当/ &a.mayo; <p><em>副担当:</em>&a.cracauer
<tag/CGI 技術担当/ &a.cracauer;<p><em>副担当:</em> &a.stb
<tag/雑務担当/ &a.nsj
</descrip>
<sect><heading>担当者<label id="contrib:who"></heading>
<p><descrip>
<tag/最高技術責任者/ &a.davidg
<tag/ドキュメンテーションプロジェクト担当/ &a.jfieber
<tag/国際化/ &a.ache
<tag/ネットワーク/ &a.wollman
<tag/ポストマスタ/ &a.jmb;
<tag/リリースコーディネータ/ &a.jkh
<tag/広報および渉外担当/ &a.jkh
<tag/セキュリティ担当/ &a.guido
<tag/CVS ツリー管理者/ &a.peter
<tag/ports コレクション担当/ &a.asami
<tag/XFree86 Project, Inc. との渉外担当/ &a.rich
<tag/Usenet サポート/ &a.joerg;
</descrip>
<chapt><heading>FreeBSDへのコントリビュータ<label id="contrib"></heading>
<sect><heading>BSD派生ソフトウェアへのコントリビュータ</heading>
<p>このソフトウェアは最初は William F. Jolitz の 386BSD release 0.1
から派生しましたが, オリジナルの 386BSD に固有のコードはほとんど
残っていません. このソフトウェアは基本的にはカリフォルニア大学
バークレイ校の Computer Science Research Group (CSRG) とその共同研究者
たちによる 4.4BSD-Lite リリースから再実装されました.
また, NetBSD の一部も FreeBSD に取り込まれています. したがって私たちは
NetBSD へ貢献した人々すべてに感謝します.二つのグループの関係が
ギクシャクすることも時にはありますが, 私たちは基本的には共に同じ目的
を持っています. すなわち, 人々のコンピュータにもっと BSD をベースに
したオペレーティングシステムを! ということです. 私たちは NetBSD
の努力が常に成功してほしいと思っています.
<sect><heading>その他の FreeBSD へのコントリビュータ<label
id="contrib:additional"></heading>
<p>(名前でアルファベット順に):
<itemize>
<item>A JOSEPH KOSHY &lt;koshy@india.hp.com&gt;
<item>ABURAYA Ryushirou &lt;pcs51674@asciinet.or.jp&gt;
<item>Adam Glass &lt;glass@postgres.berkeley.edu&gt;
<item>Adrian T. Filipi-Martin &lt;atf3r@agate.cs.virginia.edu&gt;
<item>Akito Fujita &lt;fujita@zoo.ncl.omron.co.jp&gt;
<item>Alain Kalker &lt;A.C.P.M.Kalker@student.utwente.nl&gt;
<item>Alan Cox &lt;alc@cs.rice.edu&gt;
<item>Andreas Kohout &lt;shanee@rabbit.augusta.de&gt;
<item>Andreas Lohr &lt;andreas@marvin.RoBIN.de&gt;
<item>Andrew Gordon &lt;andrew.gordon@net-tel.co.uk&gt;
<item>Andrew Herbert &lt;andrew@werple.apana.org.au&gt;
<item>Andrew McRae &lt;amcrae@cisco.com&gt;
<item>Andrew Moore &lt;alm@FreeBSD.org&gt;
<item>Andrew Stevenson &lt;andrew@ugh.net.au&gt;
<item>Andrew V. Stesin &lt;stesin@elvisti.kiev.ua&gt;
<item>Andrey Zakhvatov &lt;andy@cgu.chel.su&gt;
<item>Andy Whitcroft &lt;andy@sarc.city.ac.uk&gt;
<item>Anthony Yee-Hang Chan &lt;yeehang@netcom.com&gt;
<item>Brent J. Nordquist &lt;bjn@visi.com&gt;
<item>Bernd Rosauer &lt;br@schiele-ct.de&gt;
<item>Bill Kish &lt;kish@osf.org&gt;
<item>&a.wlloyd
<item>Bob Wilcox &lt;bob@obiwan.uucp&gt;
<item>Boyd Faulkner &lt;faulkner@mpd.tandem.com&gt;
<item>Brent J. Nordquist &lt;bjn@visi.com&gt;
<item>Brian Clapper &lt;bmc@willscreek.com&gt;
<item>Brian Handy &lt;handy@lambic.space.lockheed.com&gt;
<item>Brian Tao &lt;taob@risc.org&gt;
<item>Carey Jones &lt;mcj@acquiesce.org&gt;
<item>Charles Hannum &lt;mycroft@ai.mit.edu&gt;
<item>Charles Mott &lt;cmott@srv.net&gt;
<item>Chet Ramey &lt;chet@odin.INS.CWRU.Edu&gt;
<item>Chris Dabrowski &lt; chris@vader.org&gt;
<item>Chris G. Demetriou &lt;cgd@postgres.berkeley.edu&gt;
<item>Chris Stenton &lt;jacs@gnome.co.uk&gt;
<item>Chris Timmons &lt;skynyrd@opus.cts.cwu.edu&gt;
<item>Chris Torek &lt;torek@ee.lbl.gov&gt;
<item>Christian Gusenbauer &lt;cg@fimp01.fim.uni-linz.ac.at&gt;
<item>Christian Haury &lt;Christian.Haury@sagem.fr&gt;
<item>Christoph Robitschko &lt;chmr@edvz.tu-graz.ac.at&gt;
<item>Choi Jun Ho &lt;junker@jazz.snu.ac.kr&gt;
<item>Chuck Hein &lt;chein@cisco.com&gt;
<item>Conrad Sabatier &lt;conrads@neosoft.com&gt;
<item>Cornelis van der Laan &lt;nils@guru.ims.uni-stuttgart.de&gt;
<item>Craig Struble &lt;cstruble@vt.edu&gt;
<item>Cristian Ferretti &lt;cfs@riemann.mat.puc.cl&gt;
<item>Curt Mayer &lt;curt@toad.com&gt;
<item>Dan Cross &lt;tenser@spitfire.ecsel.psu.edu&gt;
<item>Daniel Baker &lt;dbaker@crash.ops.neosoft.com&gt;
<item>Daniel M. Eischen &lt;deischen@iworks.InterWorks.org&gt;
<item>Danny J. Zerkel &lt;dzerkel@feephi.phofarm.com&gt;
<item>Dave Bodenstab &lt;imdave@synet.net&gt;
<item>Dave Burgess &lt;burgess@hrd769.brooks.af.mil&gt;
<item>Dave Chapeskie &lt;dchapes@zeus.leitch.com&gt;
<item>Dave Edmondson &lt;davided@sco.com&gt;
<item>Dave Rivers &lt;rivers@ponds.uucp&gt;
<item>David Dawes &lt;dawes@physics.su.OZ.AU&gt;
<item>David Leonard &lt;d@scry.dstc.edu.au&gt;
<item>Dean Huxley &lt;dean@fsa.ca&gt;
<item>Dirk Froemberg &lt;dirk@hal.in-berlin.de&gt;
<item>Dmitrij Tejblum &lt;dima@tejblum.dnttm.rssi.ru&gt;
<item>Dmitry Kohmanyuk &lt;dk@farm.org&gt;
<item>&a.whiteside;
<item>Don Yuniskis &lt;dgy@rtd.com&gt;
<item>Donald Burr &lt;d_burr@ix.netcom.com&gt;
<item>Doug Ambrisko &lt;ambrisko@ambrisko.roble.com&gt;
<item>Eric Blood &lt;eblood@cs.unr.edu&gt;
<item>Frank Bartels &lt;knarf@camelot.de&gt;
<item>Frank Maclachlan &lt;fpm@crash.cts.com&gt;
<item>Frank Nobis &lt;fn@trinity.radio-do.de&gt;
<item>FURUSAWA Kazuhisa &lt;furusawa@com.cs.osakafu-u.ac.jp&gt;
<item>Gary A. Browning &lt;gab10@griffcd.amdahl.com&gt;
<item>Greg Ungerer &lt;gerg@stallion.oz.au&gt;
<item>Harlan Stenn &lt;Harlan.Stenn@pfcs.com&gt;
<item>Havard Eidnes &lt;Havard.Eidnes@runit.sintef.no&gt;
<item>Hideaki Ohmon &lt;ohmon@tom.sfc.keio.ac.jp&gt;
<item>Hidekazu Kuroki &lt;hidekazu@cs.titech.ac.jp&gt;
<item>Hidetoshi Shimokawa &lt;simokawa@sat.t.u-tokyo.ac.jp&gt;
<item>Holger Veit &lt;Holger.Veit@gmd.de&gt;
<item>Hung-Chi Chu &lt;hcchu@r350.ee.ntu.edu.tw&gt;
<item>Igor Vinokurov &lt;igor@zynaps.ru&gt;
<item>Ikuo Nakagawa &lt;ikuo@isl.intec.co.jp&gt;
<item>IMAMURA Tomoaki &lt;tomoak-i@is.aist-nara.ac.jp&gt;
<item>Ishii Masahiro &lt;?&gt;
<item>Itsuro Saito &lt;saito@miv.t.u-tokyo.ac.jp&gt;
<item>J. David Lowe &lt;lowe@saturn5.com&gt;
<item>J.T. Conklin &lt;jtc@cygnus.com&gt;
<item>James Clark &lt;jjc@jclark.com&gt;
<item>James da Silva &lt;jds@cs.umd.edu&gt; et al
<item>Janusz Kokot &lt;janek@gaja.ipan.lublin.pl&gt;
<item>Jason Thorpe &lt;thorpej@nas.nasa.gov&gt;
<item>Javier Martin Rueda &lt;jmrueda@diatel.upm.es&gt;
<item>Jeffrey Wheat &lt;jeff@cetlink.net&gt;
<item>Jian-Da Li &lt;jdli@csie.NCTU.edu.tw&gt;
<item>Jim Lowe &lt;james@cs.uwm.edu&gt;
<item>Jim Wilson &lt;wilson@moria.cygnus.com&gt;
<item>Johann Tonsing &lt;jtonsing@mikom.csir.co.za&gt;
<item>Joel Sutton &lt;suttonj@interconnect.com.au&gt;
<item>John Capo &lt;jc@irbs.com&gt;
<item>John Perry &lt;perry@vishnu.alias.net&gt;
<item>Juergen Lock &lt;nox@jelal.hb.north.de&gt;
<item>Juha Inkari &lt;inkari@cc.hut.fi&gt;
<item>Julian Assange &lt;proff@suburbia.net&gt;
<item>Julian Jenkins &lt;kaveman@magna.com.au&gt;
<item>Julian Stacey &lt;jhs@freebsd.org&gt;
<item>Jun-ichiro Itoh &lt;itojun@csl.sony.co.jp&gt;
<item>Justin M. Seger &lt;jseger@scds.ziplink.net&gt;
<item>Kazuhiko Kiriyama &lt;kiri@kiri.toba-cmt.ac.jp&gt;
<item>Kazutaka YOKOTA &lt;yokota@zodiac.mech.utsunomiya-u.ac.jp&gt;
<item>Keith Bostic &lt;bostic@bostic.com&gt;
<item>Keith Moore &lt;?&gt;
<item>Kenneth Monville &lt;desmo@bandwidth.org&gt;
<item>Kent Vander Velden &lt;graphix@iastate.edu&gt;
<item>Kirk McKusick &lt;mckusick@mckusick.com&gt;
<item>Kiroh HARADA &lt;kiroh@kh.rim.or.jp&gt;
<item>Koichi Sato &lt;copan@ppp.fastnet.or.jp&gt;
<item>Kostya Lukin &lt;lukin@okbmei.msk.su&gt;
<item>Kurt Olsen &lt;kurto@tiny.mcs.usu.edu&gt;
<item>Lars Koeller &lt;Lars_Koeller@odie.physik2.uni-rostock.de&gt;
<item>Lucas James &lt;Lucas.James@ldjpc.apana.org.au&gt;
<item>Luigi Rizzo &lt;luigi@iet.unipi.it&gt;
<item>Makoto Matsushita &lt;matusita@ics.es.osaka-u.ac.jp&gt;
<item>Manu Iyengar &lt;iyengar@grunthos.pscwa.psca.com&gt;
<item>Marc Frajola &lt;marc@dev.com&gt;
<item>Marc Ramirez &lt;mrami@mramirez.sy.yale.edu&gt;
<item>Marc Slemko &lt;marcs@znep.com&gt;
<item>Marc van Kempen &lt;wmbfmk@urc.tue.nl&gt;
<item>Mark Huizer &lt;xaa@stack.nl&gt;
<item>Mark J. Taylor &lt;mtaylor@cybernet.com&gt;
<item>Mark Tinguely &lt;tinguely@plains.nodak.edu&gt;
&lt;tinguely@hookie.cs.ndsu.NoDak.edu&gt;
<item>Martin Birgmeier
<item>Masachika ISHIZUKA &lt;ishizuka@isis.min.ntt.jp&gt;
<item>Mats Lofkvist &lt;mal@algonet.se&gt;
<item>Matt Bartley &lt;mbartley@lear35.cytex.com&gt;
<item>Matt Thomas &lt;thomas@lkg.dec.com&gt;
<item>Matt White &lt;mwhite+@CMU.EDU&gt;
<item>Matthew Hunt &lt;mph@pobox.com&gt;
<item>Matthew N. Dodd &lt;winter@jurai.net&gt;
<item>Matthew Stein &lt;matt@bdd.net&gt;
<item>Michael Butschky &lt;butsch@computi.erols.com&gt;
<item>Michael Elbel &lt;me@FreeBSD.ORG&gt;
<item>Michael Searle &lt;searle@longacre.demon.co.uk&gt;
<item>Miguel Angel Sagreras &lt;msagre@cactus.fi.uba.ar&gt;
<item>Mikael Hybsch &lt;micke@dynas.se&gt;
<item>Mikhail Teterin &lt;mi@aldan.ziplink.net&gt;
<item>Mike McGaughey &lt;mmcg@cs.monash.edu.au&gt;
<item>Mike Peck &lt;mike@binghamton.edu&gt;
<item>MITA Yoshio &lt;mita@jp.FreeBSD.ORG&gt;
<item>MOROHOSHI Akihiko &lt;moro@race.u-tokyo.ac.jp&gt;
<item>Naoki Hamada &lt;nao@tom-yam.or.jp&gt;
<item>Narvi &lt;narvi@haldjas.folklore.ee&gt;
<item>NIIMI Satoshi &lt;sa2c@and.or.jp&gt;
<item>Nick Sayer &lt;nsayer@quack.kfu.com&gt;
<item>Nisha Talagala &lt;nisha@cs.berkeley.edu&gt;
<item>Nobuhiro Yasutomi &lt;nobu@psrc.isac.co.jp&gt;
<item>Nobuyuki Koganemaru &lt;kogane@kces.koganemaru.co.jp&gt;
<item>Noritaka Ishizumi &lt;graphite@jp.FreeBSD.ORG&gt;
<item>Oliver Laumann &lt;net@informatik.uni-bremen.de&gt;
<item>Oliver Oberdorf &lt;oly@world.std.com&gt;
<item>Paul Fox &lt;pgf@foxharp.boston.ma.us&gt;
<item>Paul Kranenburg &lt;pk@cs.few.eur.nl&gt;
<item>Paul Mackerras &lt;paulus@cs.anu.edu.au&gt;
<item>Paulo Menezes &lt;paulo@isr.uc.pt&gt;
<item>Pedro Giffuni &lt;pgiffuni@fps.biblos.unal.edu.co&gt;
<item>Pedro A M Vazquez &lt;vazquez@IQM.Unicamp.BR&gt;
<item>Peter Stubbs &lt;PETERS@staidan.qld.edu.au&gt;
<item>R. Kym Horsell &lt;?&gt;
<item>Ralf S. Engelschall &lt;rse@engelschall.com&gt;
<item>Randall Hopper &lt;rhh@stealth.ct.picker.com&gt;
<item>Richard Stallman &lt;rms@gnu.ai.mit.edu&gt;
<item>Richard Wiwatowski &lt;rjwiwat@adelaide.on.neti&gt;
<item>Rob Mallory &lt;rmallory@csusb.edu&gt;
<item>Rob Shady &lt;rls@id.net&gt;
<item>Rob Snow &lt;rsnow@txdirect.net&gt;
<item>Robert Sanders &lt;rsanders@mindspring.com&gt;
<item>Robert Withrow &lt;witr@rwwa.com&gt;
<item>Ronald Kuehn &lt;kuehn@rz.tu-clausthal.de&gt;
<item>Samuel Lam &lt;skl@ScalableNetwork.com&gt;
<item>Sander Vesik &lt;sander@haldjas.folklore.ee&gt;
<item>Sandro Sigala &lt;ssigala@globalnet.it&gt;
<item>Sascha Blank &lt;blank@fox.uni-trier.de&gt;
<item>Sascha Wildner &lt;swildner@channelz.GUN.de&gt;
<item>Scott Blachowicz &lt;scott@sabami.seaslug.org&gt;
<item>Serge V. Vakulenko &lt;vak@zebub.msk.su&gt;
<item>Simon Marlow &lt;simonm@dcs.gla.ac.uk&gt;
<item>Slaven Rezic (Tomic) &lt;eserte@cs.tu-berlin.de&gt;
<item>Soren Dayton &lt;csdayton@midway.uchicago.edu&gt;
<item>Stefan Moeding &lt;moeding@bn.DeTeMobil.de&gt;
<item>Steve Gerakines &lt;steve2@genesis.tiac.net&gt;
<item>Suzuki Yoshiaki &lt;zensyo@ann.tama.kawasaki.jp&gt;
<item>Tadashi Kumano &lt;kumano@strl.nhk.or.jp&gt;
<item>Taguchi Takeshi &lt;taguchi@tohoku.iij.ad.jp&gt;
<item>Tatsumi Hosokawa &lt;hosokawa@mt.cs.keio.ac.jp&gt;
<item>Terry Lambert &lt;terry@lambert.org&gt;
<item>Terry Lee &lt;terry@uivlsi.csl.uiuc.edu&gt;
<item>Theo Deraadt &lt;deraadt@fsa.ca&gt;
<item>Thomas K&ouml;nig &lt;Thomas.Koenig@ciw.uni-karlsruhe.de&gt;
<item>Tim Kientzle &lt;kientzle@netcom.com&gt;
<item>Tim Vanderhoek &lt;ac199@freenet.hamilton.on.ca&gt;
<item>Tom Samplonius &lt;tom@misery.sdf.com&gt;
<item>Torbjorn Granlund &lt;tege@matematik.su.se&gt;
<item>Toshihiro Kanda &lt;candy@fct.kgc.co.jp&gt;
<item>Vanill Ice &lt;vanilla@Minje.Com.TW&gt;
<item>Ville Eerola &lt;ve@sci.fi&gt;
<item>Werner Griessl &lt;werner@btp1da.phy.uni-bayreuth.de&gt;
<item>Wes Santee &lt;wsantee@wsantee.oz.net&gt;
<item>Wolfgang Stanglmeier &lt;wolf@kintaro.cologne.de&gt;
<item>Yoshiro Mihira &lt;sanpei@yy.cs.keio.ac.jp&gt;
<item>Yukihiro Nakai &lt;nakai@mlab.t.u-tokyo.ac.jp&gt;
<item>Yuval Yarom &lt;yval@cs.huji.ac.il&gt;
<item>Yves Fonk &lt;yves@cpcoup5.tn.tudelft.nl&gt;
</itemize>
<sect><heading>386BSD パッチキットへのパッチ提供者</heading>
<p>(名前でアルファベット順):
<itemize>
<item>Adam Glass &lt;glass@postgres.berkeley.edu&gt;
<item>Adrian Hall &lt;adrian@ibmpcug.co.uk&gt;
<item>Andrey A. Chernov &lt;ache@astral.msk.su&gt;
<item>Andrew Herbert &lt;andrew@werple.apana.org.au&gt;
<item>Andrew Moore &lt;alm@netcom.com&gt;
<item>Andy Valencia &lt;ajv@csd.mot.com&gt; &lt;jtk@netcom.com&gt;
<item>Arne Henrik Juul &lt;arnej@Lise.Unit.NO&gt;
<item>Bakul Shah &lt;bvs@bitblocks.com&gt;
<item>Barry Lustig &lt;barry@ictv.com&gt;
<item>Bob Wilcox &lt;bob@obiwan.uucp&gt;
<item>Branko Lankester
<item>Brett Lymn &lt;blymn@mulga.awadi.com.AU&gt;
<item>Charles Hannum &lt;mycroft@ai.mit.edu&gt;
<item>Chris G. Demetriou &lt;cgd@postgres.berkeley.edu&gt;
<item>Chris Torek &lt;torek@ee.lbl.gov&gt;
<item>Christoph Robitschko &lt;chmr@edvz.tu-graz.ac.at&gt;
<item>Daniel Poirot &lt;poirot@aio.jsc.nasa.gov&gt;
<item>Dave Burgess &lt;burgess@hrd769.brooks.af.mil&gt;
<item>Dave Rivers &lt;rivers@ponds.uucp&gt;
<item>David Dawes &lt;dawes@physics.su.OZ.AU&gt;
<item>David Greenman &lt;davidg@Root.COM&gt;
<item>Eric J. Haug &lt;ejh@slustl.slu.edu&gt;
<item>Felix Gaehtgens &lt;felix@escape.vsse.in-berlin.de&gt;
<item>Frank Maclachlan &lt;fpm@crash.cts.com&gt;
<item>Gary A. Browning &lt;gab10@griffcd.amdahl.com&gt;
<item>Geoff Rehmet &lt;csgr@alpha.ru.ac.za&gt;
<item>Goran Hammarback &lt;goran@astro.uu.se&gt;
<item>Guido van Rooij &lt;guido@gvr.win.tue.nl&gt;
<item>Guy Harris &lt;guy@auspex.com&gt;
<item>Havard Eidnes &lt;Havard.Eidnes@runit.sintef.no&gt;
<item>Herb Peyerl &lt;hpeyerl@novatel.cuc.ab.ca
<item>Holger Veit &lt;Holger.Veit@gmd.de&gt;
<item>Ishii Masahiro, R. Kym Horsell
<item>J.T. Conklin &lt;jtc@cygnus.com&gt;
<item>Jagane D Sundar &lt; jagane@netcom.com &gt;
<item>James Clark &lt;jjc@jclark.com&gt;
<item>James Jegers &lt;jimj@miller.cs.uwm.edu&gt;
<item>James W. Dolter
<item>James da Silva &lt;jds@cs.umd.edu&gt; et al
<item>Jay Fenlason &lt;hack@datacube.com&gt;
<item>Jim Wilson &lt;wilson@moria.cygnus.com&gt;
<item>J&ouml;rg Lohse &lt;lohse@tech7.informatik.uni-hamburg.de&gt;
<item>J&ouml;rg Wunsch &lt;joerg_wunsch@uriah.heep.sax.de&gt;
<item>John Dyson - &lt;formerly dyson@ref.tfs.com&gt;
<item>John Polstra &lt;jdp@polstra.com&gt;
<item>John Woods &lt;jfw@eddie.mit.edu&gt;
<item>Jordan K. Hubbard &lt;jkh@whisker.hubbard.ie&gt;
<item>Julian Elischer &lt;julian@dialix.oz.au&gt;
<item>Julian Stacey &lt;jhs@freebsd.org&gt;
<item>Karl Lehenbauer &lt;karl@NeoSoft.com&gt;
&lt;karl@one.neosoft.com&gt;
<item>Keith Bostic &lt;bostic@toe.CS.Berkeley.EDU&gt;
<item>Ken Hughes
<item>Kent Talarico &lt;kent@shipwreck.tsoft.net&gt;
<item>Kevin Lahey &lt;kml%rokkaku.UUCP@mathcs.emory.edu&gt;
&lt;kml@mosquito.cis.ufl.edu&gt;
<item>Marc Frajola &lt;marc@dev.com&gt;
<item>Mark Tinguely &lt;tinguely@plains.nodak.edu&gt;
&lt;tinguely@hookie.cs.ndsu.NoDak.edu&gt;
<item>Martin Renters &lt;martin@tdc.on.ca&gt;
<item>Michael Clay &lt;mclay@weareb.org&gt;
<item>Michael Galassi &lt;nerd@percival.rain.com&gt;
<item>Mike Durkin &lt;mdurkin@tsoft.sf-bay.org&gt;
<item>Naoki Hamada &lt;nao@tom-yam.or.jp&gt;
<item>Nate Williams &lt;nate@bsd.coe.montana.edu&gt;
<item>Nick Handel &lt;nhandel@NeoSoft.com&gt;
&lt;nick@madhouse.neosoft.com&gt;
<item>Pace Willisson &lt;pace@blitz.com&gt;
<item>Paul Kranenburg &lt;pk@cs.few.eur.nl&gt;
<item>Paul Mackerras &lt;paulus@cs.anu.edu.au&gt;
<item>Paul Popelka &lt;paulp@uts.amdahl.com&gt;
<item>Peter da Silva &lt;peter@NeoSoft.com&gt;
<item>Phil Sutherland &lt;philsuth@mycroft.dialix.oz.au&gt;
<item>Poul-Henning Kamp&lt;phk@FreeBSD.ORG&gt;
<item>Ralf Friedl &lt;friedl@informatik.uni-kl.de&gt;
<item>Rick Macklem &lt;root@snowhite.cis.uoguelph.ca&gt;
<item>Robert D. Thrush &lt;rd@phoenix.aii.com&gt;
<item>Rodney W. Grimes &lt;rgrimes@cdrom.com&gt;
<item>Sascha Wildner &lt;swildner@channelz.GUN.de&gt;
<item>Scott Burris &lt;scott@pita.cns.ucla.edu&gt;
<item>Scott Reynolds &lt;scott@clmqt.marquette.mi.us&gt;
<item>Sean Eric Fagan &lt;sef@kithrup.com&gt;
<item>Simon J Gerraty &lt;sjg@melb.bull.oz.au&gt;
&lt;sjg@zen.void.oz.au&gt;
<item>Stephen McKay &lt;syssgm@devetir.qld.gov.au&gt;
<item>Terry Lambert &lt;terry@icarus.weber.edu&gt;
<item>Terry Lee &lt;terry@uivlsi.csl.uiuc.edu&gt;
<item>Tor Egge &lt;Tor.Egge@idi.ntnu.no&gt;
<item>Warren Toomey &lt;wkt@csadfa.cs.adfa.oz.au&gt;
<item>Wiljo Heinen &lt;wiljo@freeside.ki.open.de&gt;
<item>William Jolitz &lt;withheld&gt;
<item>Wolfgang Solfrank &lt;ws@tools.de&gt;
<item>Wolfgang Stanglmeier &lt;wolf@dentaro.GUN.de&gt;
<item>Yuval Yarom &lt;yval@cs.huji.ac.il&gt;
</itemize>

View file

@ -1,79 +0,0 @@
<!-- $Id: crypt.sgml,v 1.6 1997/02/25 04:54:28 hanai Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.4 -->
<sect><heading>DES, MD5, と Crypt<label id="crypt"></heading>
<p><em>原作: &a.wollman;<newline>24 September 1995.</em>
<p><em>訳: &a.hanai;<newline>12 September 1996.</em>
<p>UN*X システムにおいてパスワードを保護し, 簡単に覗かれるのを防
ぐために, 従来パスワードはある方法によりスクランブルされてきました.
ベル研の Unix 第7版に始まって以来, パスワードはセキュリティの専門家がい
うところの「一方向ハッシュ関数」というものを用いることにより暗号化されるようになりました.
つまり, 可能な限りのパスワード空間を検索するという強引な
方法以外にそのオリジナルを得ることができない, といった方法でパスワードは変換
されるのです. 不幸なことに, その当時 AT&amp;T の研究者たちが手に入れることができ
た唯一の暗号化方法は DES(Data Encryption Standard) に基づいたものでし
た. これは営利企業にとっては大して問題ではありませんが, FreeBSDのよ
うにすべてのソースコードが自由に手に入るオペレーティングシステムにとっ
ては重大な問題となります. なぜなら, 多くの政府は DES やその他の暗号化ソフ
トウェアが国境を越えることに制限をつけようとしているからです.
<p>ここで, FreeBSD チームは一つのジレンマに直面しました. つまり, どうす
れば法に触れることなく国外にあるそれらの UNIX システムのすべてに互換性を持
たせることができるか, ということです. 私たちは ``dual track approach'' を
取ることに決めました. 規制されていないパスワードスクランブラのみを含む
配布用物件を作り, DES に基づいたパスワードハッシュを付加ライブラリ
として分けて供給するのです. パスワードをスクランブルさせる関数は, C ライブラリから
`<tt>libcrypt</tt>' と呼ばれる(それを実行する C 関数が `<tt>crypt</tt>' と
いう名前だからです)別のライブラリへ移されました. FreeBSD 1.x 及び
2.0 のリリース前のスナップショットでは, その規制されていないスクランブラは
Nate Williams によって書かれた安全でない関数を使っていますが, 次の
リリースでは RSA Data Security 社の一方向ハッシュ関数の MD5 を使う方法
に置き換えられました. これらの関数はどれも暗号化を含んでいないため,
合衆国から持ち出し, 他の多くの国へ持ち込めるものであるとされています.
<p>一方, DES に基づいたパスワードハッシュ関数に関する作業もまた進行中
でした, まず, 合衆国及び他の国で書かれたコードの同期をとりながら,
合衆国の外で書かれた `<tt>crypt</tt>' のあるバージョンが持ち込まれました.
そしてライブラリは修正され, 二つにわけられました. すなわち
DES `<tt>libcrypt</tt>' は一方向パスワードハッシュをおこなうのに必要なコード
のみを含み, それとは別の `<tt>libcipher</tt>' は実際に暗号化をおこなう
ためのエントリポイントとして生成されました. コンパイルされたライブラリに対
して国外に持ち出す許可を得るのを簡単にするために, コードはこのように分け
られたのです.
<sect1><heading>`<tt>crypt</tt>' メカニズムを理解する</heading>
<p>あるパスワード文字列を作るのに, DES に基づいたハッシュ関数を使っ
たのか, MD5に基づいたハッシュ関数を使ったのかは非常に簡単にわかります.
MD5 を使ったパスワード文字列は必ず `<tt>&dollar;1&dollar;</tt>' という文字
で始まります. DESを使ったパスワード文字列はどんな特定の文字も持っていま
せんが, MD5を使ったパスワードよりも短く, `<tt>&dollar;</tt>' という文字
を持たない64文字のアルファベットで構成されています. したがって, ドル記号で
始まっていない比較的短い文字列は DES を使ったパスワードである可能性が非常
に高いです.
<p>あなたのシステムで, どちらのライブラリが使われているかを決めるの
は, スタティックにリンクされている `<tt>init</tt>' のようなもの(その
ようなプログラムに対する唯一の方法はわかっているパスワードを試してみ
て動くかどうかを確認することです.)を除いたほとんどのプログラムについ
ては非常に簡単なことです. `<tt>crypt</tt>' を使うようなプログラムは
`<tt>libcrypt</tt>' にリンクされています. そしてそれぞれのライブラリに
対する `<tt>libcrypt</tt>' は適切な実装へのシンボリックリンクとなってい
ます. 例えば, DES 版を使っているようなシステムにおいては次のようになって
います:
<tscreen><verb>
$ cd /usr/lib
$ ls -l /usr/lib/libcrypt*
lrwxr-xr-x 1 bin bin 13 Sep 5 12:50 libcrypt.a -> libdescrypt.a
lrwxr-xr-x 1 bin bin 18 Sep 5 12:50 libcrypt.so.2.0 -> libdescrypt.so.2.0
lrwxr-xr-x 1 bin bin 15 Sep 5 12:50 libcrypt_p.a -> libdescrypt_p.a
</verb></tscreen>
MD5 に基づいたライブラリを使っているシステムにおいては, 同じようなリンクが
見られるでしょうが, そのターゲットは `<tt>libdescrypt</tt>' ではなく
`<tt>libscrypt</tt>' になっているでしょう.

View file

@ -1,217 +0,0 @@
<!-- $Id: ctm.sgml,v 1.7 1997/04/25 07:24:02 hanai Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.17 -->
<!--
# This is the sgml version of the ctm.FAQ file.
#
# Converted by Ollivier Robert <roberto@FreeBSD.ORG>
#
#
# ----------------------------------------------------------------------------
# "THE BEER-WARE LICENSE" (Revision 42):
# <phk@login.dknet.dk> wrote this file. As long as you retain this notice you
# can do whatever you want with this stuff. If we meet some day, and you think
# this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
# ----------------------------------------------------------------------------
#
-->
<sect1><heading>CTM<label id="ctm"></heading>
<p><em>原作: &a.phk;. 更新: 16-Mar-1995.</em>
<p><em>訳: &a.hanai;<newline>5 November 1996.</em>
<tt/CTM/ はリモートのディレクトリツリーを中央のツリーに同期させるための
手段です. これはFreeBSDのソースツリーの配布を行なうために開発されまし
たが, 時が経つにつれて別の目的にも有用であることがわかるかも
しれません. デルタを作り出す処理に関するドキュメントは現在ほとんど
ありません。従って, もしあなたが<tt/CTM/ を他のことに使いたいなら
&a.phk;にさらなる情報を問い合わせてください.
<sect2><heading>なぜ<tt/CTM/を使うの?</heading>
<p><tt/CTM/ を使うことにより``FreeBSD-current''のローカルコピーを得ることが
できます. もしあなたがFreeBSDのアクティブな開発者であるにもかかわらず
お粗末なTCP/IP接続しか持っていなかったり, またはTCP/IP接続が
行なえないとしたら, <tt/CTM/はそんなあなたのために作られたのです.
あなたは一日あたり四つまでのデルタを転送する必要があるでしょう
(またはそれを自動的にメールで受けとることができます).
デルタのサイズは常にできるだけ小さく保たれています.
大抵の場合5KBよりも小さく,
たまに(10回に1回程度)10-50KBになり, ときおり100KBかもっと大きくなる
でしょう.
``current''のソースを追いかけるのに,
様々な注意に気を付けておく必要もあるでしょう. そのためには
<ref id="current" name="最新のカレントを追いかける">を読むことを
お勧めします.
<sect2><heading><tt/CTM/を使うには何が必要?</heading>
<p>二つのものが必要でしょう: ``<tt/CTM/'' プログラムとそれに与える
(``current''レベルを得るための)最初のデルタです.
<tt/CTM/ プログラムはバージョン2.0のリリース以来FreeBSDの一部にな
りました. もしソースのコピーを持っているなら
<tt>/usr/src/usr.sbin/<tt/CTM/</tt>にあります.
もしFreeBSDの2.0以前のバージョンなら, 最新の<tt/CTM/のソースを直接
<url
url="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/FreeBSD-current/src/usr.sbin/ctm">
から入手できます.
<tt/CTM/に与える「デルタ」は二つの方法, FTPまたはe-mail, で得ること
ができます.
もしインターネットにFTPアクセスできるなら, 次のFTPサイト:
<url url="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/CTM">
または、その<ref id="mirrors-ctm" name="ミラーサイト">が<tt/CTM/
へのアクセスをサポートします.
適切なディレクトリにFTPして<tt/README/ファイルを入手し, そこから
スタートしてください.
もし電子メールにしかアクセスできない もしくはFTPの使用が制限され
ているなら, e-mailでデルタを入手したいと思うかもしれません.
メーリングリスト``ctm-src-cur''に参加するために&a.majordomo
へメールを送ってください. (もしmajordomoを使って参加する方法を知らない
のであれば, 最初に``help''という語を含むメッセージを送ってください.
- 使い方の説明が送られてくるでしょう.)
メールで<tt/CTM/による更新ファイルを受け取り始めると, 中身を取り出して使用
するために<tt/ctm_rmail/プログラムを使うかもしれません. それを完全
に自動で行ないたいなら, <tt>/etc/aliases</tt>から<tt/ctm_rmail/プロ
グラムを直接使うこともできます.
さらに詳しいことは<tt/ctm_rmail/ manページを御覧ください.
<bf/注/: <tt/CTM/デルタを得るためにどの方法を使うのであっても,
<tt/ctm-announce@FreeBSD.ORG/メーリングリストに参加するべきです.
このメーリングリストは将来的には<tt/CTM/システムの操作に関する
アナウンスがポストされる唯一の場になるでしょう.
メーリングリストに加わるためには``<tt/subscribe ctm-announce/''
と書いた一行だけのメールを &a.majordomo へ送ってください.
<sect2><heading>はじめて<tt/CTM/を使い始める</heading>
<p><tt/CTM/ デルタを使い始めるためには, 特別な「ベース」デルタを
入手する必要があるでしょう. これは以降作られる全てのデルタの
出発点となるものです.
ベースデルタは数字に付け加えられた``<tt/A/''によって認識することが
出来ます(例えば, <tt/src-cur.0341A.gz/).
規則としてベースデルタは100デルタ毎に作られるので, 次のベースデルタ
は<tt/src-cur.0400A.gz/となるでしょう. ところで, ベースデルタは
とても大きいです! 25MBから30 MB の<tt/gzip/されたデータ, というのが
ベースデルタとしては普通です.
もし2.0-RELEASEの<tt/srcdist/を持っているのなら, 代わりに
<tt/src-cur.0372R20.gz/ファイルを見つけることができるでしょう. これは
たったの4MBしかなく, これにより2.0-RELEASEのソースからcurrentを
得ることができます.
一度スタートするためのベースデルタを得ると, それに続く多数の
全てのデルタも必要になるでしょう.
<sect2><heading><tt/CTM/を日常で使う</heading>
<p>デルタを適用するためには, 単に
<verb>
cd /where/ever/you/want/the/stuff??
ctm -v -v /where/you/store/your/deltas/src-cur.*??
</verb>
とします.
<tt/CTM/ はどれが<tt/gzip/されているか理解します. 従って最初に
gunzipしておく必要はありません. ディスクの節約にもなります.
全体の処理に関して確信するまでは<tt/CTM/は(ソース)ツリーに対して
何もしません.
また, デルタを確かめるためには``<tt/-c/''フラグを使うことができます.
このフラグがあると<tt/CTM/はツリーに対して実際には何も行ないません.
単にデルタの完全性を確認し, 現在のツリーに問題なく使用できるかを確認
するだけです.
<tt/CTM/には他にもオプションがあります. 詳細に関してはソースを
見てください.
もし誰かが「ユーザ インターフェース」の部分に関して助けてくれるなら
私はとても嬉しいです. なぜならどういうオプションが何を, どのよう
に, いつ行なうようにするべきか決めかねているからです.
以上でやることは本当に全部です. 新しいデルタを入手した時には,
ソースを最新のものにするためにそれを<tt/CTM/に通すだけです.
もしデルタを再ダウンロードするのが骨の折れる作業であれば, デルタを
消さないでおいてください.
なにかおかしなことが起こった場合には置いておけば良かった
と思うかもしれません. もしフロッピーディスクしか持っていない状況
であってもコピーを取るのに<tt/fdwrite/を使うことを考えてください.
<sect2><heading><tt/CTM/の将来計画</heading>
<p>
重要なもの
<itemize>
<item>
ソースツリーへのローカルな修正を可能にすること. これを実現
する一つの方法は次のようなものでしょう:
<p> <tt/CTM/が``<tt>foo/bar.c</tt>''というファイルを変更しようと
する時, 最初に<tt>foo/bar.c&num;CTM</tt>というファイルがあるか
どうかチェックします. もしこのファイルがあれば, それに
デルタを適用します. このようにして<tt>foo/bar.c</tt>
ファイルをローカルな要求に合うように変更しておくことができます.
<item>
「ファイル復活」のオプションを<tt/CTM/に付ける. これは
次のようなものです.
<verb>
ctm -r src/sys/i386/wd.c /here/are/my/deltas/src-cur.*
</verb>
これは src-cur ファイルから<tt/wd.c/を復旧して現在の状態に戻します.
<item>
<tt/CTM/へのオプションを整理する. さもないと混乱し, 直観に反したもの
になります.
</itemize>
残念なことに私は非常に忙しいです. 従ってこれを行なうどんな手助け
でも歓迎します. その際, 自分が何をやりたいかを私に
言うのを忘れずに.
<sect2><heading>その他</heading>
<p>
「DESに染まった」(例えば, 国外への持ち出しが規制された)ソースは
まったく含まれません. 手に入るのは「国際」バージョンだけです.
もし興味のある人が多いようであれば, 我々は``<tt/sec-cur/''シーケンスも
セットアップするつもりです.
もしあなたがFreeBSDに対して頻繁なまたは価値のある貢献をしている
のであれば, 私は特別なサービス, 一つには<tt/ftp/か<tt/rcp/によるあなた
の近くのマシンへの配布, をしたいと思うでしょう.
これには時間がかかるので, あなたがこれを受けるに値する必要があります.
しかし, あなたにその価値があるなら, 私は喜んでそうするでしょう.
<tt/ports/コレクションに対するデルタのシーケンスもあります. しかし,
まだあまり興味は持たれていないようです. もしこれに対するメーリング
リストが欲しい時も私に言ってください. 我々はセットアップすることを
考えます.
もしあなたがコミット特権を持っているか, または同様にFreeBSDコアチーム
からその必要ありと認められていれば, CVSリポジトリツリーへの
アクセスも同じ手段で得ることができます. 詳細は&a.phk;へ聞いてください.
<sect2><heading>ありがとう!</heading>
<p>
<descrip>
<tag/&a.bde;/
辛辣なペンと価値のないコメントに対して.
<tag/&a.sos;/
よく辛抱してくれました.
<tag/Stephen McKay/
<tt/ctm_&lsqb;rs&rsqb;mail/を書いてくれました. とても感謝して
います.
<tag/&a.jkh/
彼が頑固として譲らなかったため, 私もこの <tt/CTM/ をもっと良いものに
しないわけにはいきませんでした. 彼の頑固さに感謝します.
<tag/ユーザの人みんな/
気に入ってくれることを願っています...
</descrip>

View file

@ -1,161 +0,0 @@
<!-- $Id: current.sgml,v 1.6 1997/02/25 04:54:41 hanai Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.21 -->
<sect><heading>最新のFreeBSDを追いかける<label id="current"></heading>
<p><em>原作: &a.jkh;.</em>
<p><em>訳: &a.hanai;<newline>6 November 1996.</em>
<!--
THE FREEBSD CURRENT POLICY
Last updated: $Date: 1997/02/25 04:54:41 $
This document attempts to explain the rationale behind
FreeBSD-current, what you should expect should you decide to run it,
and states some prerequisites for making sure the process goes as
smoothly as possible.
-->
<sect1><heading>FreeBSD-currentってなに?</heading>
<p>FreeBSD-currentとは文字通りに日々変更されているFreeBSDのソース
のスナップショット以外の何ものでもありません.中には現在開発途上の
ソフトウェア, 実験的な変更、あるいは過渡的な機能などが含まれています.
また, この中に入っている機能がすべて次の公式リリースに入るとはかぎりません.
FreeBSD-currentをソースからほとんど毎日コンパイルしている人はたくさん
いますが, 時期によってはFreeBSD-currentはコンパイルさえできない状態に
なっていることもあります. これらの問題は一般的には可能な限り素早く解決
されますが, FreeBSD-currentのソースが不幸をもたらすか, それとも非常に
素晴らしい機能をもたらすかというのは文字通り, ある与えられた24時間の間
のどの部分であなたがソースを手に入れたか, による場合もあります.
必要があるときには, 時折 FreeBSD-current の一部をバイナリとして提供する
こともありますが, それはただ何かをテストしてほしいためであって,
我々が current をバイナリリリースとして提供することにしたわけではありません.
我々が提供していないならば, 要求しないで下さい!
これは普段から行なうにはあまりにも時間がかかり過ぎるのです.
<sect1><heading>誰がFreeBSD-currentを必要としてるの?</heading>
<p>FreeBSD-currentは次の3つのどれかにあてはまる人のために一般に公開してい
ます.
<enum>
<item> ソースツリーの,ある部分または別の部分に関して活発に作業して
いるFreeBSDグループのメンバ彼らにとっては`最新のもの'に維持して
おくことは絶対的な要求なのです.
<item> FreeBSD-currentが出来るだけ健全である時間の割合を増やすために
様々な問題と戦うのに時間を費やすのを厭わず活発にテストを行なっている
FreeBSDグループのメンバ彼らはまた様々な変更に関する提案やFreeBSD
の大まかな方向付けを行ないたいと思っている人々でもあります.
<item> 単に,様々な事に目を向け,参考のために(例えば,動かすためではなく
<em>読むため</em>に)最新のソースを使いたいと思っているFreeBSD(または
他の)グループのまわりにいるメンバ.これらの人々はまた時によってコメ
ントをしたりコードを寄稿したりします.
</enum>
<sect1><heading>FreeBSD-currentに期待しては<em>いけない</em>ことは?</heading>
<p><enum>
<item> あなたが何か新しいカッコイイモノがあると聞き, あなたの
周りで最初にそれを持ちたいためにリリース前のコードの断片を
追いかけること.
<item> バグを修正するための素早い方法.
<item> いずれにしても我々によって``公式にサポートされている''.
私たちは3つの「公式な」FreeBSD-currentのグループの一つに実際に属する
人々を助けるのにベストを尽くしますが, 技術的なサポートを行なうには
単に「時間が足りない」のです.
これは我々が外の人を助けるのが好きではないケチで意地悪い人間だと
いうことではなく(もしそうなら FreeBSD なんかやっていません), 文字通り
我々は一日に400ものメッセージに答え<em>かつ</em> FreeBSD の作業をする
ことなど出来ない! ということなのです. もし, たくさんの質問に答えるか
それとも FreeBSD を良くする作業を続けるかという選択が与えられた場合,
あなた方のほとんどは後者を支持する, と私は確信しています.
</enum>
<sect1><heading>FreeBSD-currentを使う</heading>
<p><enum> <item> &a.current;と&a.cvsall;に加わって下さい.
これは単に良い考えであるというだけでなく, <em>必須の</em>ことなのです.
もし<em>FreeBSD-current</em>メーリングリストに入っていなければ,
様々な人がシステムの現在の状態について述べているコメントを決して見ることは
ありませんし, 従って他の人が既に見つけて解決している多くの問題に戸惑っ
てあきらめてしまうでしょう. さらに言うと, 非常に不可欠な情報
(例えば, 「やぁ, みんな! <tt>/usr/src</tt>を作り直す前にカーネルの
再構築を<em>やらないといけないよ</em>, さもないととんでもないクラッシュが起きるぜ!」)を見逃してしまうでしょう.
<em>cvs-all</em>メーリングリストはそれぞれの変更についてそれに関して起
こり得る情報を見ることが出来ます.
これらのメーリングリストに入るには, &a.majordomo;へ
<verb>
subscribe freebsd-current
subscribe cvs-all
</verb>
と書いたメールを送って下さい.
オプションとして本文に`help'と書けば Majordomo はあなたへ我々がサポ
ートする様々なメーリングリストに参加/脱退する方法に関する詳しい
ヘルプを送ります.
<item> ftp.FreeBSD.ORGからのソースの入手. 以下の3つの方法で行なうこと
が出来ます.
<enum>
<item> 下に述べられている<ref id="ctm" name="CTM">を用いる.
均一なレートの, 良質の TCP/IP 接続を持っていない人には,
これが一番いい方法でしょう.
<item> <ref id="cvsup" name="cvsup"> を
<url url="ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current/src/share/examples/cvsup/standard-supfile" name="この supfile">
を用いて使用する.
これは2番目に推薦される方法です. なぜなら, cvssupによって一度全体
を入手し, 後は変更されたところだけを入手することが出来るからです.
たくさんの人がvsupをcronから起動し, 自動的にソースを最新のもの
に保っています.
<item> ftpを使う. FreeBSD-currentのソースツリーは常に
<htmlurl url="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/FreeBSD-current"
name="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/FreeBSD-current">
に公開されています.
我々はまた全体をcompress/tarして入手できる `wu-ftpd' を使ってい
ます. 例えば,
<verb>
usr.bin/lex
</verb>
があったとすると,
<verb>
ftp> cd usr.bin
ftp> get lex.tar.Z
</verb>
とすることにより, ディレクトリ全体(この場合, usr.bin/lex以下全体)
をcompressされたtarファイルとして入手することができます.
</enum>
<item> 以上のことをまとめると, 必要に応じて迅速なアクセスをする必要があり,
接続のバンド幅が問題ではなければcvsupかftpを使いましょう. そうではなければ
CTMを使いましょう.
<item> もしソースを, 眺めるだけでなく走らせるために入手しているので
あれば, 一部だけ選ぶのではなく,
current の<em>全体</em>を手に入れてください.
なぜなら, ソースの様々な部分が他の部分の更新に依存しており, 一部のみを
コンパイルしようとすると, ほぼ間違いなくトラブルを起こすからです.
<item> current をコンパイルする前に /usr/src にある Makefile
をよく読んでください. アップグレードの処理の一部として,
少なくとも一回は最初に `make world' を行なうべきでしょう.
&a.current;を読めば, 次のリリースへ向けて, 時々必要になる
他のブートストラップの方法に関して常に最新情報を得ることが出来ます.
<item> アクティブになって下さい! もしFreeBSD-currentを走らせているなら
我々はそれに関するコメント, 特に拡張やバグ潰しに関する提案, を欲して
います. コードを伴う提案はもっとも歓迎されるものです!
</enum>

View file

@ -1,576 +0,0 @@
<!-- $Id: cvsup.sgml,v 1.18 1997/05/20 01:53:11 max Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.19 -->
<sect1><heading>CVSup<label id="cvsup"></heading>
<p><em>原作: &a.jdp;</em>.
<p><em>訳: &a.iwasaki;.<newline>27 February 1997.</em>
<sect2><heading>CVSup の紹介<label id="cvsup:intro"></heading>
<p>CVSup は, リモートのサーバホストにあるマスタ CVS リポジトリから
ソースツリーを配布し更新するためのソフトウェアパッケージです. FreeBSD
のソースは, カリフォルニアにある中心的な開発マシンの CVS リポジトリの
中でメンテナンスしています. CVSup を使用することで, FreeBSD ユーザは
簡単に自分のソースツリーを最新の状態にしておくことができます.
<p>CVSup は "pull" モデルとよばれる更新のモデルを採用しています.
pull モデルでは, 各クライアントが更新したい場合に更新したい時点で,
サーバに更新の問い合わせをおこないます. サーバはクライアントからの
更新の要求を受け身の状態で待ちます. したがって, すべての更新は
クライアント主導でおこなわれます. サーバは頼まれもしない更新情報を
送るようなことはしません. ユーザは CVSup クライアントを手動で実行して
更新をおこなうか, cron ジョブを設定して定期的に自動実行する必要があります.
<p>用語 "CVSup" のように大文字で表記しているものは, ソフトウェアパッケージ
全体を指します. 主な構成物は, 各ユーザマシンで実行するクライアントである
"cvsup", FreeBSD の各ミラーサイトで実行するサーバ "cvsupd" です.
<p>FreeBSD の文書やメーリングリストを読んだ際に, sup についての言及を
見かけたかもしれません. sup は CVSup の前に存在していたもので, 同様の
目的で使われていました. CVSup は sup と同じように使用されており, 実際,
sup と互換性のあるコンフィグレーションファイルを使用します. しかし,
CVSup の方がより高速で柔軟性もあるので, もはや sup は FreeBSD
プロジェクトでは使用されていません.
<sect2><heading>CVSup のインストール<label id="cvsup:install"></heading>
<p>FreeBSD 2.2 以降を使用している場合, CVSup をインストールするもっとも
簡単な方法は, FreeBSD <ref id="ports" name="ports コレクション"> の
<url
url="ftp://ftp.freebsd.org/pub/FreeBSD/ports-current/net/cvsup.tar.gz"
name="port"> または対応する <url
url="ftp://ftp.freebsd.org/pub/FreeBSD/packages-current/net/cvsup-14.1.1.tgz"
name="バイナリ package"> を使うことです. どちらを使うかは,
CVSupを自分で作りたいかどうかによります.
<p>FreeBSD-2.1.6 または 2.1.7 を使用している場合は, 残念ながら
FreeBSD-2.1.{6,7} には存在しないバージョンの C ライブラリが必要となるため
バイナリ package は使用できません.
しかし, <url
url="ftp://ftp.freebsd.org/pub/FreeBSD/ports-current/net/cvsup.tar.gz"
name="port"> は FreeBSD 2.2 とまったく同じように簡単に使うことができます.
単に tar ファイルを展開し, cvsup ディレクトリへ cd して "make install"
とタイプするだけです.
<p>CVSup は <url
url="http://www.research.digital.com/SRC/modula-3/html/home.html"
name="Modula-3"> で書かれているため, package と port 両方とも Modula-3
ランタイムライブラリがインストールされていることが必要です. これらは
port の <url
url="ftp://ftp.freebsd.org/pub/FreeBSD/ports-current/lang/modula-3-lib.tar.gz"
name="lang/modula-3-lib"> および package の <url
url="ftp://ftp.freebsd.org/pub/FreeBSD/packages-current/lang/modula-3-lib-3.6.tgz"
name="lang/modula-3-lib-3.6"> にあります. これらのライブラリの port
や package に対して cvsup と同じ管理方法を取っていれば, CVSup の
port や package をインストールする際に, これらのライブラリも自動的に
コンパイルそして/またはインストールされます.
<p>Modula-3 ライブラリはかなり大きく, これらの転送やコンパイルはすぐに
終わるものではありません. この理由から, 三つめの選択肢が提供されています.
以下のアメリカ合衆国にある配布サイトのどちらからでも, FreeBSD 用の
<em>スタティックリンクされた</em> CVSup 実行形式が入手可能です:
<itemize>
<item><url url="ftp://hub.freebsd.org/pub/CVSup/cvsup-bin-14.1.1.tar.gz"
name="ftp://hub.freebsd.org/pub/CVSup/cvsup-bin-14.1.1.tar.gz">
(クライアント).
<item><url url="ftp://hub.freebsd.org/pub/CVSup/cvsupd-bin-14.1.1.tar.gz"
name="ftp://hub.freebsd.org/pub/CVSup/cvsupd-bin-14.1.1.tar.gz">
(サーバ).
</itemize>
また, ドイツのミラーサイトは以下の通りです:
<itemize>
<item><url url="ftp://ftp.cs.tu-berlin.de/pub/FreeBSD/CVSup/cvsup-bin-14.1.1.tar.gz"
name="ftp://ftp.cs.tu-berlin.de/pub/FreeBSD/CVSup/cvsup-bin-14.1.1.tar.gz">
(クライアント).
<item><url url="ftp://ftp.cs.tu-berlin.de/pub/FreeBSD/CVSup/cvsupd-bin-14.1.1.tar.gz"
name="ftp://ftp.cs.tu-berlin.de/pub/FreeBSD/CVSup/cvsupd-bin-14.1.1.tar.gz">
(サーバ).
</itemize>
訳注: 日本国内のミラーサイトは以下の通りです:
<itemize>
<item><url url="ftp://jaz.jp.freebsd.org/pub/FreeBSD-freefall/CVSup/cvsup-bin-14.1.1.tar.gz"
name="ftp://jaz.jp.freebsd.org/pub/FreeBSD-freefall/CVSup/cvsup-bin-14.1.1.tar.gz">
(クライアント).
<item><url url="ftp://jaz.jp.freebsd.org/pub/FreeBSD-freefall/CVSup/cvsupd-bin-14.1.1.tar.gz"
name="ftp://jaz.jp.freebsd.org/pub/FreeBSD-freefall/CVSup/cvsupd-bin-14.1.1.tar.gz">
(サーバ).
</itemize>
<p>ほとんどのユーザはクライアントのみが必要になるでしょう. これらの
実行形式は完全に自己完結しており, FreeBSD-2.1.0 から FreeBSD-current
までの, どのバージョンでも動作します.
<p>まとめると, CVSup をインストールするための選択肢は以下の通りです:
<itemize>
<item>FreeBSD-2.2以降: スタティックバイナリ, port, package
<item>FreeBSD-2.1.6, 2.1.7: スタティックバイナリ, port
<item>FreeBSD-2.1.5 以前: スタティックバイナリ
</itemize>
<sect2><heading>CVSup のコンフィグレーション<label id="cvsup:config"></heading>
<p>CVSup の動作は, "supfile" と呼ばれるコンフィグレーションファイルで
制御します. FreeBSD-2.2 からは, supfile のサンプルがディレクトリ <url
url="file:/usr/share/examples/cvsup" name="/usr/share/examples/cvsup">
の下にあります. 2.2 以前のシステムを使用している場合は, これらの
サンプルを <url
url="ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current/src/share/examples/cvsup/"
name="ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current/src/share/examples/cvsup/">
から入手することができます.
<p>supfile には以下の cvsup に関する質問への答えを記述します:
<itemize>
<item><ref id="cvsup:config:files" name="どのファイルを受け取りたいのか?">
<item><ref id="cvsup:config:vers" name="どのバージョンのものが欲しいのか?">
<item><ref id="cvsup:config:where" name="どこから入手したいのか?">
<item><ref id="cvsup:config:dest" name="自分のマシンのどこに置きたいのか?">
<item><ref id="cvsup:config:status" name="どこに status ファイルを置きたいのか?">
</itemize>
<p>次のセクションで, これらの質問に順番に答えながら典型的な supfile
を組み立てていきます. 最初に supfile の全体構造を説明します.
<p>supfile はテキストファイルです. コメントは "#" から行末までです.
空行とコメントだけの行は無視します.
<p>残りの各行には, ユーザが受け取りたいファイル群について記述します.
行の始めは, サーバ側で定義した論理的なファイルのグループである
「コレクション」の名称です. コレクションの名称を指定して, 欲しいファイル群を
サーバに伝えます. コレクション名の後には, ホワイトスペースで区切られた
0個以上のフィールドが続きます. これらのフィールドが上記の質問に対する
答えになります. フィールドには 2種類あります: flag フィールドと value
フィールドです. flag フィールドは "delete" や "compress" のような
単独のキーワードから成ります. また, value フィールドもキーワードで
始まりますが, キーワードの後にはホワイトスペースは入らず, "=" と
二つめの単語が続きます. 例えば, "release=cvs" は value フィールドです.
<p>通常, supfile には受け取りたいコレクションを一つ以上指定します.
supfile を組み立てる一つの方法として, コレクション毎にすべての関係の
あるフィールドを明示的に指定する方法があります. しかし, これでは supfile
のすべてのコレクションに対してほとんどのフィールドが同じになるため,
行が非常に長くなってしまい不便になります. これらの問題を避けるため,
CVSup ではデフォルトを指定することのできるメカニズムが提供されています.
特殊な擬似コレクション名 "*default" で始まる行は, supfile 中の後続の
コレクションに対して使用する flag フィールドと value フィールドの
デフォルトを設定するために利用できます. 個々のコレクションで固有の値を
指定すると, デフォルト値を無効にできます. また "*default" 行を追加すると,
supfile の途中からデフォルト値の変更や追加が可能になります.
<p>これまでの予備知識を基に, <ref id="current" name="FreeBSD-current">
のメインのソースツリーを受け取って更新するための supfile を
組み立ててみましょう.
<itemize>
<item>どのファイルを受け取りたいのか?<label id="cvsup:config:files">
<p>sup の場合と同様に, CVSup を通して入手できるファイルは
「コレクション」と呼ばれる名前の付けられたグループにまとめられています.
利用可能なコレクションについては<ref id="cvsup:collec" name="ここ">
で説明しています. ここでは, FreeBSD システムのメインのソースツリー全体
を受け取るための設定例を紹介します.
輸出規制されている暗号化サポートのコード以外のすべてを含む "src-all" という
単一の大きなコレクションがあります. この例では私たちがアメリカ合衆国か
カナダにいるものと仮定します. その場合, "cvs-crypto" という一つの付化的な
コレクションで暗号化コードを入手することができます. supfile
を組み立てる最初のステップとして, これらのコレクションを一行に一つづつ
記述します:
<verb>
src-all
cvs-crypto
</verb>
<p><item>どのバージョンのものが欲しいのか?<label id="cvsup:config:vers">
<p>CVSup を使用すると, かつて存在していたことのある, 事実上どのバージョンの
ソースでも受け取ることができます. これは cvsupd サーバがすべてのバージョンを含む
CVS リポジトリに基づいて動作することにより, 実現されています.
"tag=" および "date=" の value フィールドを使用して, 欲しいバージョンの
一つを指定します.
<p>"tag=" フィールドはリポジトリ中のシンボリックタグを指定します.
tag には revision tag と branch tag の二種類があります. revision tag
は特定のリビジョンを指します. これは, 毎日同じ状態に保つことになります.
一方 branch tag は, ある時点での開発分流の最新のリビジョンを指します.
branch tag は特定のリビジョンを指定している訳ではないので, 今日と明日では
異なるリビジョンを参照することになるかもしれません.
<p>以下はユーザが興味を持っていると思われる branch tag です:
<descrip>
<tag/tag=./
メインの開発分流であり, FreeBSD-current として知られています.
注意: "." は句読点ではありません. tag の名称です.
<tag/tag=RELENG_2_2/
FreeBSD-2.2 の先頭の開発分流です.
<tag/tag=RELENG_2_1_0/
FreeBSD-2.1.x 用の開発分流であり, FreeBSD-stable として知られています.
</descrip>
<p>以下はユーザが興味を持っていると思われる revision tag です:
<descrip>
<tag/tag=RELENG_2_2_1_RELEASE/
FreeBSD-2.2.1.
<tag/tag=RELENG_2_2_0_RELEASE/
FreeBSD-2.2.0.
<tag/tag=RELENG_2_1_7_RELEASE/
FreeBSD-2.1.7.
<tag/tag=RELENG_2_1_6_1_RELEASE/
FreeBSD-2.1.6.1.
<tag/tag=RELENG_2_1_6_RELEASE/
FreeBSD-2.1.6.
<tag/tag=RELENG_2_1_5_RELEASE/
FreeBSD-2.1.5.
<tag/tag=RELENG_2_1_0_RELEASE/
FreeBSD-2.1.0.
</descrip>
<p>tag 名を示した通りにタイプされているか十分注意してください. CVSup
は tag 名が正しいかどうかを見分けることはできません.
tag が間違っていた場合, たまたまファイルがまったく存在しない正しい tag
が指定されたものとしてCVSup は動作します. その場合は, 現在あるソースが
削除されるでしょう.
<p>branch tag を指定した際には, 通常はその開発分流の最新バージョンの
ファイルを受け取ります. いくらか前のバージョンを受け取りたい場合は,
"date=" の value フィールドを使って日付を指定することで, これを実現することが
できます. cvsup(1) のマニュアルページで, その方法を説明しています.
<p>例として, FreeBSD-current を受け取りたいとします. 次の行を supfile
の始めに追加します:
<verb>
*default tag=.
</verb>
<p>"tag=" フィールドも "date=" フィールドも指定しなかった場合に
動き出す重要な特殊なケースがあります. そのケースでは, 特定のバージョンの
ファイルを受け取るのではなく, サーバの CVS リポジトリから実際の RCS
ファイルを直接受け取ります. 一般的に開発者はこの処理のモードが
好きなようです. 彼らのシステム上にリポジトリそのもののコピーを維持することで,
リビジョン履歴を閲覧し過去のバージョンのファイルを検査できるようになります.
しかし, これには大きなディスクスペースが必要になります.
<p><item>どこから入手したいのか?<label id="cvsup:config:where">
<p>更新情報をどこから入手するかを cvsup に伝えるために "host="
フィールドを使用します。<ref id="mirrors-cvsup" name="CVSup ミラーサイト">
のどこからでも入手できますが、最寄りのサイトを選ぶべきでしょう。
この例では、第一の FreeBSD 配布サイト "cvsup.FreeBSD.org" を使用します:
<verb>
*default host=cvsup.FreeBSD.org
</verb>
<p>どのように cvsup を実行しても, この設定は "-h hostname" を
使用してコマンドラインで変更することができます.
<p><item>自分のマシンのどこに置きたいのか?<label id="cvsup:config:dest">
<p>"prefix=" フィールドは, cvsup に受け取ったファイルをどこに置くかを
伝えます. この例では, ソースファイルを直接メインのソースツリー
"/usr/src" に置きます. "src" ディレクトリはすでにファイルを受け取るために
選択したコレクションで暗黙に指定しているので, これは正しい仕様となります:
<verb>
*default prefix=/usr
</verb>
<p><item>どこに status ファイルを置きたいのか?<label id="cvsup:config:status">
<p>cvsup クライアントは "base" ディレクトリと呼ばれる場所に, ある
status ファイルを維持しています. すでに受け取った更新情報を追従し続け
ることで, これらのファイルは CVSup がより効果的に動作することを支援し
ます. 標準の base ディレクトリ "/usr/local/etc/cvsup" を使用します:
<verb>
*default base=/usr/local/etc/cvsup
</verb>
<p>supfile に指定がない場合は, この設定をデフォルトで使用しますので,
実際には上の行は必要ありません.
<p>base ディレクトリが存在しない場合は作成しておきましょう. base
ディレクトリが存在しない場合, cvsup クライアントは実行を拒否します.
<p><item>その他もろもろの supfileの設定:
<p>通常 supfile に入れておくべき行がもう一つあります:
<verb>
*default release=cvs delete use-rel-suffix compress
</verb>
<p>"release=cvs" は, サーバがメインの FreeBSD CVS リポジトリから
その情報を取得するように指示します. ほとんどの場合はこのようにしておきますが,
ここでの説明の範疇をこえるような状況では他の指定をすることも可能です.
<p>"delete" は CVSup にファイルを削除することを許可します. CVSup が
ソースツリーを完全に最新の状態に保てるようにするためには, これは常に
指定しておくべきでしょう. CVSup は, これらの責任範囲のファイルだけを
慎重に削除します. たまたま存在する他の余分なファイルについては,
まったく手をつけずに残しておきます.
<p>"use-rel-suffix" は ... 神秘的なものです. これについて本当に
知りたい人は, cvsup(1) のマニュアルページをご覧ください. でなければ,
何も考えずに指定してみてください.
<p>"compress" は通信チャネルで gzip 形式の圧縮の使用を有効にします.
ご使用のネットワーク接続が T1 speed 以上である場合, この圧縮を
使用しない方がよいかもしれません. そうでない場合は十分に役に立ちます.
<p><item>supfile の例のまとめ:
<p>以下は supfile の例の全体です:
<verb>
*default tag=.
*default host=cvsup.FreeBSD.org
*default prefix=/usr
*default base=/usr/local/etc/cvsup
*default release=cvs delete use-rel-suffix compress
src-all
cvs-crypto
</verb>
</itemize>
<sect2><heading>CVSup の実行</heading>
<p>さて, 更新の準備ができました. これを実行するコマンドラインは
実に簡単です:
<verb>
cvsup supfile
</verb>
<p>もちろん, ここでの "supfile" は作成したばかりの supfile
のファイル名です. X11 環境で実行するものと仮定して, cvsup は
通常の操作に必要なボタンを持つ GUI ウィンドウを表示します.
"go" ボタンを押して, 実行を監視してください.
<p>この例では実際の "/usr/src" ツリーを更新しているので, cvsup
にファイルを更新するのに必要なパーミッションを与えるために, ユーザ root
で実行する必要があります. コンフィグレーションファイルを作ったばかりで,
しかも以前にこのプログラムを実行したことがないので, 神経質になるのは
無理もない話だと思います. 大切なファイルに触らずに試しに実行する簡単な
方法があります. どこか適当な場所に空のディレクトリを作成して,
コマンドラインの引数で指定するだけです:
<verb>
mkdir /var/tmp/dest
cvsup supfile /var/tmp/dest
</verb>
<p>指定したディレクトリは, すべての更新されるファイルの
更新先ディレクトリとして使用します. CVSup は "/usr/src" の下の
ファイルを検査しますが, 変更や削除はまったくおこないません.
かわりに "/var/tmp/dest/usr/src" に更新されたすべてのファイルが
置かれるようになります. この方法で実行した場合は, CVSup は base
ディレクトリの status ファイルを更新せずにそのままにします.
これらのファイルの新しいバージョンは指定されたディレクトリ
に書き込まれます. "/usr/src" の読み取り許可がある限り, このような
試し実行のためにユーザ root になる必要はありません.
<p>X11 を利用していないとか単に GUI が気に入らない場合は, cvsup
起動時にコマンドラインに二つほどオプションを追加する必要があります:
<verb>
cvsup -g -L 2 supfile
</verb>
<p>"-g" オプションは cvsup に GUI を使用しないように伝えます. X11
を利用していない場合には自動的に指定されますが, そうでない場合は
明示的に指定します.
<p>"-L 2" オプションは cvsup にファイル更新中の詳細情報をプリントアウト
するように伝えます. 冗長性には "-L 0" から "-L 2" までの三つのレベル
があります. デフォルトは 0 であり, エラーメッセージ以外はまったく出力
しません.
<p>たくさんの他のオプション変数があります. それらの簡単な一覧は
"cvsup -H" で表示されます. より詳しい説明はマニュアルページをご覧ください.
<p>動作している更新の方法に満足したら, cron(8) を使って cvsup を定期的に
実行させる準備をすることができます. cron から起動する際には, 明示的に
cvsup が GUI を使わないようにする必要があります.
<sect2><heading>CVSup ファイルコレクション<label id="cvsup:collec"></heading>
<p>CVSup 経由で入手できるファイルコレクションは階層的に組織化されています.
いくつか大きなコレクションがあり, それらは小さなサブコレクションに
分割されています. 大きなコレクションは, そのサブコレクション毎に
受信することと同じことになります. 下の一覧ではコレクション間の階層関係を
字下げして表現します.
<p> 最も一般的に使用するコレクションは <tt/src-all/, <tt/cvs-crypto/,
そして <tt/ports-all/ です. 他のコレクションは特別な目的を持つ人達だけが
使用しており, ミラーサイトはそれらのすべてを持っていないかもしれません.
<descrip>
<tag><tt>cvs-all release=cvs</tt></tag>
メインの FreeBSD CVS リポジトリであり, 輸出規制された暗号化コードは含まれていません.
<p>
<descrip>
<tag><tt>distrib release=cvs</tt></tag>
FreeBSD の配布とミラーに関連するファイルです.
<tag><tt>doc-all release=cvs</tt></tag>
FreeBSD ハンドブックおよびその他のドキュメントのソースです.
<tag><tt>ports-all release=cvs</tt></tag>
FreeBSD の ports コレクションです.
<p>
<descrip>
<tag><tt>ports-archivers release=cvs</tt></tag>
アーカイビングのツール.
<tag><tt>ports-astro release=cvs</tt></tag>
天文学関連の ports.
<tag><tt>ports-audio release=cvs</tt></tag>
サウンドサポート.
<tag><tt>ports-base release=cvs</tt></tag>
<tt>/usr/ports</tt> のトップにあるその他のファイル.
<tag><tt>ports-benchmarks release=cvs</tt></tag>
ベンチマークプログラム.
<tag><tt>ports-cad release=cvs</tt></tag>
CAD ツール.
<tag><tt>ports-chinese release=cvs</tt></tag>
中国語サポート.
<tag><tt>ports-comms release=cvs</tt></tag>
通信ソフトウェア.
<tag><tt>ports-converters release=cvs</tt></tag>
文字コードコンバータ.
<tag><tt>ports-databases release=cvs</tt></tag>
データベース.
<tag><tt>ports-devel release=cvs</tt></tag>
開発ユーティリティ.
<tag><tt>ports-editors release=cvs</tt></tag>
エディタ.
<tag><tt>ports-emulators release=cvs</tt></tag>
他の OS のエミュレータ.
<tag><tt>ports-games release=cvs</tt></tag>
ゲーム.
<tag><tt>ports-graphics release=cvs</tt></tag>
グラフィックユーティリティ.
<tag><tt>ports-japanese release=cvs</tt></tag>
日本語サポート.
<tag><tt>ports-korean release=cvs</tt></tag>
韓国語サポート.
<tag><tt>ports-lang release=cvs</tt></tag>
プログラミング言語.
<tag><tt>ports-mail release=cvs</tt></tag>
メールソフトウェア.
<tag><tt>ports-math release=cvs</tt></tag>
数値計算ソフトウェア.
<tag><tt>ports-mbone release=cvs</tt></tag>
MBone アプリケーション.
<tag><tt>ports-misc release=cvs</tt></tag>
色々なユーティリティ.
<tag><tt>ports-net release=cvs</tt></tag>
ネットワーキングソフトウェア.
<tag><tt>ports-news release=cvs</tt></tag>
USENET ニュースのソフトウェア.
<tag><tt>ports-plan9 release=cvs</tt></tag>
Plan9 からの色々なプログラム.
<tag><tt>ports-print release=cvs</tt></tag>
印刷ソフトウェア.
<tag><tt>ports-russian release=cvs</tt></tag>
ロシア語サポート.
<tag><tt>ports-security release=cvs</tt></tag>
セキュリティユーティリティ.
<tag><tt>ports-shells release=cvs</tt></tag>
コマンドラインシェル.
<tag><tt>ports-sysutils release=cvs</tt></tag>
システムユーティリティ.
<tag><tt>ports-textproc release=cvs</tt></tag>
文書処理ユーティリティ(デスクトップパブリッシングは含まない).
<tag><tt>ports-vietnamese release=cvs</tt></tag>
ベトナム語サポート.
<tag><tt>ports-www release=cvs</tt></tag>
World Wide Web 関連のソフトウェア.
<tag><tt>ports-x11 release=cvs</tt></tag>
X11 のソフトウェア.
</descrip>
<tag><tt>src-all release=cvs</tt></tag>
メインの FreeBSD ソース群であり, 輸出規制された暗号化コードは含まれていません.
<p>
<descrip>
<tag><tt>src-base release=cvs</tt></tag>
<tt>/usr/src</tt> のトップにあるその他のファイル.
<tag><tt>src-bin release=cvs</tt></tag>
シングルユーザモードで必要なユーザユーティリティ
(<tt>/usr/src/bin</tt>).
<tag><tt>src-contrib release=cvs</tt></tag>
FreeBSD プロジェクト外部からのユーティリティおよびライブラリ,
比較的無修正 (<tt>/usr/src/contrib</tt>).
<tag><tt>src-etc release=cvs</tt></tag>
システムコンフィグレーションファイル (<tt>/usr/src/etc</tt>).
<tag><tt>src-games release=cvs</tt></tag>
ゲーム(<tt>/usr/src/games</tt>).
<tag><tt>src-gnu release=cvs</tt></tag>
GNU Public License 下にあるユーティリティ (<tt>/usr/src/gnu</tt>).
<tag><tt>src-include release=cvs</tt></tag>
ヘッダファイル (<tt>/usr/src/include</tt>).
<tag><tt>src-lib release=cvs</tt></tag>
ライブラリ (<tt>/usr/src/lib</tt>).
<tag><tt>src-libexec release=cvs</tt></tag>
システムプログラムであり, 通常は他のプログラムから実行される
(<tt>/usr/src/libexec</tt>).
<tag><tt>src-release release=cvs</tt></tag>
FreeBSD の release を構築するために必要なファイル (<tt>/usr/src/release</tt>).
<tag><tt>src-sbin release=cvs</tt></tag>
シングルユーザモード用のシステムユーティリティ(<tt>/usr/src/sbin</tt>).
<tag><tt>src-share release=cvs</tt></tag>
多様なシステム間で共有可能なファイル (<tt>/usr/src/share</tt>).
<tag><tt>src-sys release=cvs</tt></tag>
カーネル (<tt>/usr/src/sys</tt>).
<tag><tt>src-tools release=cvs</tt></tag>
FreeBSD の保守用の色々なツール (<tt>/usr/src/tools</tt>).
<tag><tt>src-usrbin release=cvs</tt></tag>
ユーザユーティリティ (<tt>/usr/src/usr.bin</tt>).
<tag><tt>src-usrsbin release=cvs</tt></tag>
システムユーティリティ (<tt>/usr/src/usr.sbin</tt>).
</descrip>
<tag><tt>www release=cvs</tt></tag>
World Wide Web のデータ用のソースです.
</descrip>
<tag><tt>cvs-crypto release=cvs</tt></tag>
輸出規制された暗号化コードです.
<p>
<descrip>
<tag><tt>src-contrib-crypto release=cvs</tt></tag>
輸出規制された FreeBSD プロジェクト外部からのユーティリティおよび
ライブラリ, 比較的無修正 (<tt>/usr/src/contrib-crypto</tt>).
<tag><tt>src-eBones release=cvs</tt></tag>
Kerberos および DES (<tt>/usr/src/eBones</tt>).
<tag><tt>src-secure release=cvs</tt></tag>
DES (<tt>/usr/src/secure</tt>).
</descrip>
<tag><tt>distrib release=self</tt></tag>
CVSup サーバ自身のコンフィグレーションファイルです. CVSup ミラーサイトが使用します.
<tag><tt>gnats release=current</tt></tag>
GNATS バグトラッキングデータベースです.
<tag><tt>src-sys release=lite2</tt></tag>
lite2 kernel のマージ用の CVS リポジトリです.
<tag><tt>src-sys release=smp</tt></tag>
SMP プロジェクト用の CVS リポジトリです.
<tag><tt>www release=current</tt></tag>
インストールされた World Wide Web のデータです. WWW ミラーサイトが使用します.
</descrip>
<sect2><heading>CVSup のアナウンス, 質問およびバグ報告</heading>
<p>CVSup のほとんどの FreeBSD 関連の議論は &a.hackers; で
おこなわれています. ソフトウェアの新しいバージョンは &a.announce; で
アナウンスされます.
<p>質問とバグ報告はプログラムの作者, <url
url="mailto:cvsup-bugs@polstra.com" name="cvsup-bugs@polstra.com"> へ
送ってください.

View file

@ -1,58 +0,0 @@
<!-- $Id: cyclades.sgml,v 1.4 1997/02/22 13:00:49 peter Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.3 -->
<!--
<!DOCTYPE linuxdoc PUBLIC "-//FreeBSD//DTD linuxdoc//EN" [
<!ENTITY % authors SYSTEM "authors.sgml">
%authors;
]>
-->
<sect2><heading><tt>cy</tt> ドライバのコンフィグ<label id="cy"></heading>
<p><em>原作: &a.alex;.<newline>6 June 1996.</em>
<p><em>訳: &a.yuki;.<newline>6 September 1996.</em>
Cyclades社のマルチポートカードは, 他のマルチポートカードが
使う<tt>sio</tt>の代わりに<tt>cy</tt>ドライバを使います.
コンフィグレーションは非常に簡単で,
<enum>
<item><tt>cy</tt> デバイスをあなたの
<ref id="kernelconfig:config"
name="カーネルのコンフィグレーション">に足します.
(注意. あなたのirqやiomemの設定がが違っているかもしれません)
<tscreen><verb>
device cy0 at isa? tty irq 10 iomem 0xd4000 iosiz 0x2000 vector cyintr
</verb></tscreen>
<item>新しいカーネルの<ref id="kernelconfig:building"
name="再構成とインストール"> をします.
<item><ref id="kernelconfig:nodes" name="デバイスノード">
を次(8ポートと仮定しています.)のように打って作ります:
<tscreen><verb>
# cd /dev
# for i in 0 1 2 3 4 5 6 7;do ./MAKEDEV cuac$i ttyc$i;done
</verb></tscreen>
<item>もし, 必要なら
シリアルデバイス(<tt>ttyd</tt>)とそっくりにコピーして
<ref id="dialup" name="dialup">エントリを作り, <tt>ttyd</tt>
<tt>ttyd</tt>の代わりに<tt>ttyc</tt>を使います. 例:
<tscreen><verb>
ttyc0 "/usr/libexec/getty std.38400" unknown on insecure
ttyc1 "/usr/libexec/getty std.38400" unknown on insecure
ttyc2 "/usr/libexec/getty std.38400" unknown on insecure
[...]
ttyc7 "/usr/libexec/getty std.38400" unknown on insecure
</verb></tscreen>
<item>新しいカーネルで立ち上げます.
</enum>

View file

@ -1,103 +0,0 @@
<!-- $Id: development.sgml,v 1.7 1997/02/25 04:54:57 hanai Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.12 -->
<sect><heading>FreeBSDの開発モデル<label id="development"></heading>
<p><em>原作: &a.asami;.
<newline>18 October 1996.</em>
<p><em>訳: &a.asami;.
<newline>31 October 1996.</em>
<p>FreeBSDの開発は非常に開かれた, 柔軟性のあるプロセスです. <ref
id="contrib" name="コントリビュータのリスト">を見ていただければわかる
とおり, FreeBSDは文字通り世界中の何百という人々の努力によって開発され
ています. 新しい開発者はいつでも大歓迎ですので, &a.hackers; にメールを
送ってください. また, 大勢で議論するよりは一人で静かに開発にふけりた
いという人は私たちのFTPサイト<htmlurl
url="ftp://ftp.freebsd.org/pub/FreeBSD/incoming"
name="ftp.freebsd.org">を使ってパッチや開発中のソースを公開してくださっ
て結構です. &a.announce; もありますので, 他のFreeBSDユーザに自分のやっ
ていることを宣伝したい時にはどうぞ使ってください.
あと, FreeBSDプロジェクトとその開発プロセスについて, どなたにも知って
いていただきたいのは以下のようなことです.
<descrip>
<tag><bf>CVSリポジトリ</bf><label id="development:cvs-repository"></tag>
<p>FreeBSDのソースツリーは<htmlurl
url="http://www.cyclic.com/cyclic-pages/CVS-sheet.html" name="CVS">
(Concurrent Version System)によってメンテナンスされています. CVSはソー
スコード管理用のフリーソフトウェアで, FreeBSDのリリースにも含まれてい
ます. FreeBSDの<htmlurl url="http://www.freebsd.org/cgi/cvsweb"
name="メインのCVSリポジトリ">は米国カリフォルニア州のコンコルド市に存在
し, そこから世界中のたくさんのミラーサイトにコピーされています. CVSツ
リーそのもの, そしてそのチェックアウトされたバージョンである<ref
id="current" name="-current">と<ref id="stable" name="-stable">はあな
たのマシンにも簡単に取ってくることができます. これについては<ref
id="synching" name="ソースツリーの同期">の章をご覧ください.</p>
<tag><bf>ソースツリー管理者</bf><label id="development:committers"></tag>
<p><ref id="contrib:committers" name="ソースツリー管理者">はCVSツリー
への書き込み権限を持っている人, つまりFreeBSDのソースに変更を加えるこ
とができる人です. (CVSでリポジトリに変更を加えるには<tt>cvs(1)</tt>
``<tt>commit</tt>'' というコマンドを使うので, これらの人々は英語では
``committers'' と呼ばれます.) 開発者にコードを送って見てもらうのに一
番いい方法は<htmlurl url="http://www.freebsd.org/send-pr.html"
name="send-pr(1)">コマンドを使うことです. もし, 何か問題があって
<tt>send-pr</tt>が使えないなら<htmlurl
url="mailto:committers@freebsd.org" name="committers@freebsd.org">にメー
ルを送っていただいても結構です.</p>
<tag><bf>FreeBSDコアチーム</bf><label id="development:core"></tag>
<p><ref id="contrib:core" name="FreeBSDコアチーム">はFreeBSDプロジェク
トが会社だとすると取締役会にあたるものです. コアチームとして一番重要
な役割はFreeBSDプロジェクトが全体としてよい方向に向かっていることを確
認することです. 責任感あふれる開発者を上記のソースツリー管理者として
招くこと, また仕事上の都合などでコアチームをやめた人たちの後任を見つけ
ることもコアチームの役割です. 現在のコアチームのほとんどは最初は単な
る一開発者としてプロジェクトに関わりはじめ, ずるずるといつのまにか深み
にはまってしまった人です.</p>
<p>コアチームのうち何人かは特定の<ref id="contrib:who" name="担当分野">
を持っており, システムのうち一部に特に重点をおいて面倒を見ています.
また, 忘れてほしくないのはコアチームのほとんどはFreeBSDについてはボラ
ンティアであり, FreeBSDプロジェクトからは何ら金銭的な支援を受けていな
いということです. ですから, ここでの「責任」は「保証されたサポート」
ではありません. そういう意味で, 上記の取締役会という例えはあまりよく
ないかもしれません. むしろ, FreeBSDのために人生を棒に振ってしまった人
の集まりといった方が正しいかも.... <tt>;)</tt></p>
<tag><bf>その他のコントリビュータ</bf></tag>
<p>最後になりますが, もっとも重要で多数をしめる開発者はフィードバック
やバグフィクスをどんどん送ってくれるユーザ自身です. FreeBSDの開発に外
郭から関わっていきたいという人は &a.hackers; (<ref id="eresources:mail"
name="メーリングリスト情報">を見てください) に参加するといいでしょう.</p>
<p>FreeBSDのソースツリーに入っている何かを書いた人の<ref
id="contrib:additional" name="リスト">は日に日に長くなっています. あ
なたも今日, 何か送ることからはじめてみませんか? <tt>:-)</tt></p>
<p>もちろんFreeBSDに貢献するにはコードを書くほかにもいろいろな方法があ
ります. 助けが求められている分野については, このハンドブックの<ref
id="submitters" name="貢献の仕方">の節を見てください.</p>
</descrip>
ひとことで言うと, FreeBSDの開発組織はゆるやかな同心円状になっています.
ともすると中央集権的に見えがちなこの組織は, FreeBSDの<em>ユーザ</em>が
きちんと管理されたコードベースを容易に追いかけられるようにデザインされ
ているもので, 貢献したいという人を締め出す意図は全くありません! 私た
ちの目標は安定したオペレーティングシステムと簡単にインストールして使う
ことのできる<ref id="ports" name="アプリケーション">を提供することであ
り, この方法は結構うまくはたらくのです.
これからFreeBSDの開発にたずさわろうという人に, 私たちが望むことはただ
一つです: FreeBSDの成功を継続的なものにするために, 現在の開発者と同じ
ような情熱を持って接してください!

View file

@ -1,264 +0,0 @@
<!-- $Id: dialout.sgml,v 1.4 1997/02/22 13:00:51 peter Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.5 -->
<!-- This is an SGML document in the Linuxdoc DTD of the Tutorial for
Configuring a FreeBSD for Dialout Services.
<!DOCTYPE linuxdoc PUBLIC "-//FreeBSD//DTD linuxdoc//EN">
<linuxdoc>
<article>
<title>Dialout
<author>FAQ
<date>24 NOV 1996, (c) 1996
<abstract>この章は FreeBSD に接続しているモデムからダイアルアウトするための
基本的な情報について説明しています. この情報は将来 PPP 接続をおこなう場合の
第一のステップとなります.
</abstract>
<toc>
-->
<sect><heading>ダイアルアウトサービス<label id="dialout"></heading>
<p><em>原作: FAQ からの情報</em>
<p><em>訳: 丸山剛司 <url url="mailto:tmaruya@nnc.or.jp"
name="<tmaruya@nnc.or.jp>">.
<newline>31 December 1996.</em>
以下はモデムを利用して他のコンピュータと接続する方法を説明しています.
これはリモートホストとターミナル接続を確立するための適切な方法です.
<p>これは BBS に接続するときによく使います.
<p>この種の接続は PPP 接続に問題がある場合, Internet 上にあるファイルを
転送するのに非常に役に立ちます. FTP で何らかのファイルを転送したいのに
PPP 接続を確立できない場合は, ファイルを FTP 転送するためにターミナルセッション
を利用します. そして ZMODEM を利用してファイルを転送します.
<sect1>
<heading><tt/tip/ や <tt/cu/ が実行できないはなぜ?</heading>
<p>
あなたのシステムで <tt/tip/ や <tt/cu/ というプログラムは
<tt/uucp/ や <tt/dialer/ というグループに所属しているユーザのみが
実行できるようになっているのでしょう. リモートホストやモデムを
利用できる <tt/dialer/ のグループにあなたのアカウントを
加えましょう.
もしくは下記のコマンドを使うことによって, そのシステムで
<tt/tip/ や <tt/cu/ を誰でも使えるようになります:
<verb>
chmod 4511 /usr/bin/tip
</verb>
このコマンドは <tt/cu/ に対しておこなう必要はありません, それは
<tt/cu/ は <tt/tip/ に対するハードリンクだからです.
<sect1>
<heading>私の Hayes モデムはサポートされていません, どうしよう?
</heading>
<p>
実際, <tt/tip/ の マニュアルページは古くなっています. 既に Hayes
ダイアラが組み込まれています. <tt>/etc/remote</tt> ファイル中で
``<tt/at=hayes/'' を使ってください.
Hayes ドライバは, 最近のモデムの新しい機能である
<tt/BUSY/, <tt/NO DIALTONE/, <tt/CONNECT 115200/などのメッセージを
認識できるほど賢くはなく, 単に混乱を起こすだけです.
<tt/tip/を使う場合には, (<tt/ATX0&amp;W/ とするなどして) これらの
メッセージを表示させないようにしなくてはいけません.
また, <tt/tip/ のダイアルのタイムアウトは 60秒です. モデムの
タイムアウト設定はそれより短くすべきであり, そうしないと
<tt/tip/ は通信に問題があると判断するでしょう. <tt/ATS7=45&amp;W/
を実行してください.
実際, デフォルトの <tt/tip/ は Hayes の完全なサポートを
しているわけではありません. 解決方法は
<tt>/usr/src/usr.bin/tip/tip</tt> の下の <tt/tipconf.h/
を変更することです. もちろんこれにはソース配布ファイルが必要です.
``<tt/#define HAYES 0/'' と記述されている行を ``<tt/#define HAYES 1/''
と変更し, そして ``<tt/make/'', ``<tt/make install/'' を実行します.
これでうまく動作するでしょう.
<sect1>
<heading>これらの AT コマンドを入力するには?<label id="direct-at">
</heading>
<p>
<tt>/etc/remote</tt> ファイルの中で ``<tt/direct/'' エントリを作ります.
たとえばモデムが 1番目のシリアルポートである <tt>/dev/cuaa0</tt>
に接続されている場合, 次のようにします:
<verb>
cuaa0:dv=/dev/cuaa0:br#19200:pa=none
</verb>
モデムがサポートする最大の bps レートを br フィールドに使います.
そして ``<tt/tip cuaa0/'' を実行すると, モデムが利用できるようになります.
<tt>/dev/cuaa0</tt>がシステムに存在しない場合は, 次のようにします:
<verb>
cd /dev
./MAKEDEV cuaa0
</verb>
<p>
または root になって以下のように cu コマンドを実行します:
<verb>
cu -l ``line'' -s ``speed''
</verb>
line にはシリアルポートを指定します (例えば <tt>/dev/cuaa0</tt>).
そして speed には接続する速度を指定します (例えば <tt>57600</tt>).
その後 AT コマンドを実行したら, <tt>~.</tt> と入力すれば終了します.
<sect1>
<heading>pn 機能の <tt/@/ 記号が使えません!</heading>
<p>
電話番号 (pn) 機能の中での <tt/@/ 記号は, tip に
<tt>/etc/phone</tt> にある電話番号を参照するように伝えます.
しかし <tt/@/ の文字は <tt>/etc/remote</tt> のような
設定ファイルの中では特殊文字となります.
バックスラッシュを使ってエスケープをおこないます:
<verb>
pn=\@
</verb>
<sect1>
<heading>コマンドラインから電話番号を指定するには?</heading>
<p>
``<tt/generic/'' エントリと呼ばれるものを <tt>/etc/remote</tt>
に追加します. 例えば次のようにします:
<verb>
tip115200|Dial any phone number at 115200 bps:\
:dv=/dev/cuaa0:br#115200:at=hayes:pa=none:du:
tip57600|Dial any phone number at 57600bps:\
:dv=/dev/cuaa0:br#57600:at=hayes:pa=none:du:
</verb>
そして ``<tt/tip -115200 5551234/'' のように利用できます.
<tt/tip/ より <tt/cu/ を使いたい場合,
<tt/cu/ の generic エントリを使います:
<verb>
cu115200|Use cu to dial any number at 115200bps:\
:dv=/dev/cuaa1:br#57600:at=hayes:pa=none:du:
</verb>
そして ``<tt/cu 5551234 -s 115200/'' と実行します.
<sect1>
<heading>毎回 bps レートを入力しなければいけませんか?</heading>
<p>
<tt/tip1200/ や <tt/cu1200/ 用のエントリを記述し,
適切な通信速度を br フィールドに設定します.
<tt/tip/ は 1200 bps が正しいデフォルト値であるとみなすので,
``<tt/tip1200/'' エントリを参照します. もちろん 1200 bps
を使わなければならないわけではありません.
<sect1>
<heading>ターミナルサーバを経由して複数のホストへアクセスしたいんです.
</heading>
<p>
毎回接続されるのを待って ``<tt/CONNECT &lt;host&gt;/'' と入力する
かわりに, tip の <tt/cm/ 機能を使います.
例えば, <tt>/etc/remote</tt> に次のようなエントリを追加します:
<verb>
pain|pain.deep13.com|Forrester's machine:\
:cm=CONNECT pain\n:tc=deep13:
muffin|muffin.deep13.com|Frank's machine:\
:cm=CONNECT muffin\n:tc=deep13:
deep13:Gizmonics Institute terminal server:\
:dv=/dev/cua02:br#38400:at=hayes:du:pa=none:pn=5551234:
</verb>
これで, ``<tt/tip pain/'' や ``<tt/tip muffin/'' と実行すると
pain や muffin のホストに接続することができ,
<tt/tip deep13/ を実行するとターミナルサーバに接続します.
<sect1>
<heading>tip を使ってそれぞれのサイトの複数の回線に接続できますか?
</heading>
<p>
これは大学に電話回線がいくつかあって数千人の学生が接続しようとする
場合によくある問題です.
<p>
あなたの大学のエントリを <tt>/etc/remote</tt> ファイルに作成して,
<tt/pn/ のフィールドには <tt>@</tt> を使います:
<verb>
big-university:\
:pn=\@:tc=dialout
dialout:\
:dv=/dev/cuaa3:br#9600:at=courier:du:pa=none:
</verb>
そして <tt>/etc/phone</tt> ファイルに大学の電話番号の一覧を書きます:
<verb>
big-university 5551111
big-university 5551112
big-university 5551113
big-university 5551114
</verb>
<tt/tip/ は一連の電話番号を試みて, 最終的に接続できなければあきらめます.
リトライを続けさせたい場合は, <tt/tip/ を while ループに入れて
実行します.
<sect1>
<heading>CTRL+P を 1回送るために 2度押す必要があるのはなぜ?
</heading>
<p>
CTRL+P は通常 ``force (強制)'' 文字であり, <tt/tip/ に次の文字が
リテラルデータであることを伝えます. force 文字は「変数の設定」
を意味する <tt/~s/ エスケープによって他の文字にすることができます.
``<tt/~sforce=&lt;single-char&gt;/'' と入力して改行します.
<tt/&lt;single-char&gt;/ は, 任意の 1バイト文字です.
<tt/&lt;single-char&gt;/ を省略すると NUL 文字になり,
これは CTRL+2 や CTRL+SPACE を押しても入力できます.
いくつかのターミナルサーバで使われているのを
見ただけですが, <tt/&lt;single-char&gt;/ に SHIFT+CTRL+6
に割り当てるのもよいでしょう.
<tt>&dollar;HOME/.tiprc</tt> に次のように定義することで,
任意の文字を force 文字として利用できます:
<verb>
force=<single-char>
</verb>
<sect1>
<heading>打ち込んだ文字が突然すべて大文字になりました??</heading>
<p>
CTRL+A を押してしまい、caps-lock キーが壊れている場合のために設計された
tip の ``raise character'' モードに入ったのでしょう.
既に述べたように <tt/~s/ を使って, ``raisechar'' をより適切な値に
変更してください. もしこれら両方の機能を使用しないのであれば,
force 文字と同じ設定にすることもできます.
以下は CTRL+2 や CTRL+A などを頻繁に使う必要のある Emacs
ユーザにうってつけの. tiprc ファイルのサンプルです:
<verb>
force=^^
raisechar=^^
</verb>
^^ は SHIFT+CTRL+6 です.
<sect1>
<heading><tt/tip/ でファイルを転送するには?</heading>
<p>
もし他の UNIX のシステムと接続しているなら, <tt/~p/(put) や
<tt/~t/(take) でファイルの送受信ができます. これらのコマンドは
相手のシステムの上で ``<tt/cat/'' や ``<tt/echo/'' を実行することで
送受信をします. 書式は以下のようになります:
<verb>
~p <ローカルのファイル名> [<リモートのファイル名>]
~t <リモートのファイル名> [<ローカルのファイル名>]
</verb>
この方法ではエラーチェックをおこないませんので, zmodem
などの他のプロトコルを使った方がよいでしょう.
<sect1>
<heading><tt/tip/ から zmodem を実行するには?</heading>
<p>
ファイルを受信するには, リモート側で送信プログラムを起動します.
そして ``<tt/~C rz/'' と入力すると, ローカル側へのファイルの受信が
始まります.
ファイルを送信するには, リモート側で受信プログラムを起動します.
そして ``<tt/~C sz &lt;files&gt;/'' と入力すると, リモート側への
ファイルの送信が始まります.
</sect>

View file

@ -1,821 +0,0 @@
<!-- $Id: dialup.sgml,v 1.6 1997/02/22 13:00:53 peter Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.17 -->
<!-- This is an SGML document in the linuxdoc DTD of the Tutorial for
Configuring a FreeBSD for Dialup Services by Guy Helmer.
<!DOCTYPE linuxdoc PUBLIC "-//Linux//DTD linuxdoc//EN">
<article>
<title>
FreeBSD でダイアルアップ サービスを行うための設定
<author>Guy Helmer, <tt/ghelmer@alpha.dsu.edu/
<date>v0.1, 28 March 1995
<abstract>
-->
<sect><heading>ダイアルインサービス<label id="dialup"></heading>
<p><em>原作: &a.ghelmer;.</em>
<p><em>訳: &a.max;.<newline>6 September 1996.</em>
このドキュメントでは, FreeBSD で外部からのモデムによるアクセスを受け付
けるための設定に関してまとめてあります. このドキュメントは筆者が
FreeBSD 1.0, 1.1 および 1.1.5.1 での経験と, 他の UNIX 系 OS での経験を
基に書いたものですが, 必ずしも十分な内容でないかもしれませんし, 掲載し
た実例もあなたが今お使いの環境とは一致しないかもしれません. また, 筆者
はこのドキュメントに従って行われた作業でデータが失われたりシステムが破
壊されるようなことがあっても, 一切責任をとれません.
<sect1><heading>設定を始める前に<label id="dialup:prereqs"></>
<p>
筆者は, 読者が FreeBSD に関する基本的な知識をもっていることを仮定して
このドキュメントをまとめました. まず, FreeBSD が既にインストールされ
ていて, UNIX 系環境においてファイルの編集の方法やシステムに付属のマニュ
アルを参照する方法を知っている必要があります. また, 以下に示すように,
FreeBSD の特定のバージョンが必要となりますし, いくつかの用語に関する
知識, そしてモデムや多少の配線に関する知識も必要となります.
<sect2><heading>FreeBSD のバージョン</heading>
<p>
まず, FreeBSD のバージョンは 1.1 以上を使用してください (バージョン
2.x でもかまいません. ). FreeBSD 1.0 には, 2種類のシリアル ドライバ
が含まれているので, 混乱の元となり得ます. また, FreeBSD のシリアル
ディバイス ドライバ (<tt/sio/) は, バージョンを追う毎に改善されてき
ていますので, より新しいバージョンの FreeBSD を使用することで, よりよ
い, より効率の高いドライバを利用することができるはずです.
<sect2><heading>用語解説</heading>
<p>
以下, 簡単にいくつかの用語について解説しておきます.
<descrip>
<tag/bps/ Bits per Second の略で, データの転送速度を表す単位.
<tag/DTE/ Data Terminal Equipment の略. たとえばコンピュータ本体のこと.
<tag/DCE/ Data Communications Equipment の略で, 具体的にはモデムのこと.
<tag/RS-232/ EIA (米電気産業協会) のハードウェア間シリアル通信の標準規
格.
</descrip>
これらの用語やデータ通信一般に関して, より詳しい情報が必要な場合は,
<em/The RS-232 Bible/ という本 (誰か ISBN 分かる方いませんか?) が参考
になると思います.
通信においてのデータ転送速度に関して, このドキュメントでは <bf/ボーレー
ト/ (baud rate) ではなく, <bf/bps/ (bits per second) をその単位として
使うことにします. これは, ボーというのは一定時間に生じる電気的状態の変
化の数を表す単位にすぎず, <bf/bps/ という単位の方が実体に即しているか
らです. (少なくとも, こういう表現をしておけば, 意地の悪い人に怒られる
こともないのではないかと思います. )
<sect2><heading>外づけモデムと内蔵モデムについて</heading>
<p>
ダイアルアップのサービスに関していえば, 外づけのモデムの方が適している
ようです. これは, 多くの外づけのモデムは設定を不揮発ラムに書き込んで半
永久的に保存することができますし, また RS-232 に関する重要な情報を知る
ための点滅するライトによるインディケータが搭載されているからです. 点滅
するライトは, システムを見に来た訪問者に強い印象を与えるという効果だけ
でなく, モデムが適切に動作しているかどうかを知るためにも有効です.
一方, たいていの内蔵型のモデムには不揮発性ラムが搭載されていないため,
ディップ スイッチの変更以外に設定を保存する方法がありません. また, も
しインディケータがついていても, おそらくコンピュータのケース カバーが
外されていなければその状態を確認するのは難しいでしょう.
<sect2><heading>モデムとケーブル</heading>
<p>
以下のことに関して, 予め知っておく必要があります.
<itemize>
<item> コンピュータとモデムの間での通信が行えるようにするための接続方
法. (内蔵型の場合は接続の必要はありません)
<item> お使いのモデムのコマンドについての知識, あるいはコマンドの解説
の在処
<item> (通信ソフトを使っての) モデムの不揮発ラムに保存可能な設定の変更
方法
</itemize>
1番目のモデムの接続はたいてい簡単に行えるはずです. ほとんどのストレー
ト シリアル ケーブルが使えるでしょう. 使用すべきケーブルは, 両端に適
切なコネクタ (DB-25 または DB-9 の雄または雌) のついた, DCE-DTE 間接
続用のもので, 以下の信号線が接続されていなければなりません.
<itemize>
<item> Transmitted Data (<tt/SD/)
<item> Received Data (<tt/RD/)
<item> Request to Send (<tt/RTS/)
<item> Clear to Send (<tt/CTS/)
<item> Data Set Ready (<tt/DSR/)
<item> Data Terminal Ready (<tt/DTR/)
<item> Carrier Detect (<tt/CD/)
<item> Signal Ground (<tt/SG/)
</itemize>
FreeBSD で 2400bps 以上の転送速度を利用する場合には, フロー制御のため
に <tt/RTS/ 信号と <tt/CTS/ 信号が必要です. また, 接続の確立と回線の切
断を検出するために <tt/CD/ 信号を利用します. さらに, <tt/DTR/ 信号を使っ
て回線切断後のモデムのリセットを行います. ケーブルの中には, 総ての必要
な信号線が接続されていないものもありますので, たとえば, 回線切断後でも
ログイン セッションが残ってしまうといった問題が発生した場合などには,
ケーブルに問題がある可能性もあります.
次に, お使いのモデムにもよりますが, もしモデムのコマンドをよく覚えてい
ない場合は, モデムのマニュアルをすぐに参照できるようにしておいてくださ
い. このドキュメントでは例として USR Sportstar の 14,400 bps の外づけ型
モデムのコマンドを示しておきます. 他の種類のモデムをお使いの場合も, 参
考になるかもしれません.
最後に, FreeBSDで快適にモデムを使うためにも, モデムの設定方法を知って
おく必要があります. FreeBSD も他の UNIX 系 OS と同様, 回線の接続およ
び切断の検出や回線の切断および回線切断後のモデムの初期化にハードウェア
シグナルを利用します. FreeBSD は, モデムに対するコマンドの送信やモデ
ムの状態の監視を行いません. パソコンで運用されている BBS への接続に慣
れている方にとっては, ちょっとめんどうかもしれませんね.
<sect2><heading>シリアル インタフェースについて</heading>
<p>
FreeBSD では, NS8250-, NS16450-, NS16550- および NS16550A- に基づ
いた EIA RS-232C (CCITT V.24) 規格のシリアル インタフェースをサポート
しています. 8250 および 16450 ベースのディバイスには1文字のキャラクタ
バッファが搭載されています. また, 16550 系のディバイスには, 16文字分
のバッファが搭載されていて, はるかによいパフォーマンスを得られます.
(ただし, 無印の 16550 では, バグがあって 16 文字バッファが利用できませ
んので, 可能であれば 16550A 系のディバイスを利用してください. ) 1文字
のバッファの物は, 16550 系のものと比べて OS にかける負荷が大きいので,
16550A 系ディバイスの利用を強く推奨します. 多数のシリアル ポートを利
用する場合や, 負荷の高いシステムにおいては, 16550A 系ディバイスを使う
ことで, エラー発生率を低く押さえることができます.
<sect1><heading>概要</heading>
<p>
FreeBSD は以下の手順でモデムからのログインを受付ます. <tt/init/ から起
動された <tt/getty/ のプロセスが, 割り当てられたシリアル ポート (この
例では <tt>/dev/ttyd0</tt>) がオープンされるのを辛抱強く待ちます.
<tt/ps ax/ コマンドを実行すると, 以下のような出力が得られるはずです.
<tscreen><verb>
4850 ?? I 0:00.09 /usr/libexec/getty V19200 ttyd0
</verb></tscreen>
ユーザがモデムに電話をかけ, モデム同士が接続されると, モデムの <tt/CD/
が検出されます. その結果, kernel がキャリア信号を検出して,
<tt/getty/ によるポートのオープンの処理が終了します. <tt/getty/ は,
<tt/login:/ プロンプトを指定されている初期回線速度で送信します.
<tt/getty/ は, 正常に文字列を受信できるかどうか監視し, 通常の設定では,
もし以上な文字列を検出した場合 (理由としては, <tt/getty/ の速度とモデ
ムの接続速度が異なっているような場合が考えられます. ), 正常に文字列が
受信できるまで, <tt/getty/ は速度を変え続けます.
<tt/getty/ が正しい速度を検出すれば, ユーザに対して <tt/login:/ プロン
プトが表示されるはずです. ユーザがログイン名を入力すると, <tt/getty/
は <tt>/usr/bin/login</tt> を起動して, パスワードの入力を要求し, その
後ユーザのシェルを起動します.
それでは, 続いて設定についての解説です.
<sect1><heading>Kernel の設定</heading>
<p>
通常, FreeBSD の kernel は, PC-DOS の世界で <tt/COM1:/, <tt/COM2:/
, <tt/COM3:/ および <tt/COM4:/ と呼ばれる四つのシリアル ポートを探す
ように設定されています. また, FreeBSD では, 現在のところ Boca の 1008
や 2016 のような, 単純なマルチポートのシリアル インタフェースもサポー
トしています. (マルチポートのシリアル ボードに関しての kernel の設定
については, <tt/sio(4)/ のマニュアルを参照してください. ) デフォルト
の kernel は, COM ポートだけを探します.
搭載されているシリアル ポートのいずれかを, kernel が認識しているかどう
か確認したい場合は, kernel 起動時のメッセージを注意深く見ているか, あ
るいは <tt>/sbin/dmesg</tt> コマンドを使って, ブート時の出力メッセージ
を確認してください. 特に, <tt/sio/ で始まるメッセージをよく見てくださ
い. 参考までに, 以下のコマンドで <tt/sio/ という文字列を含むメッセージ
だけを表示することができます.
<tscreen><verb>
/sbin/dmesg | grep 'sio'
</verb></tscreen>
たとえば, シリアル ポートを四つ持つシステムの場合は, 以下のようなシリ
アル ポートに関するメッセージが kernel によって表示されます.
<tscreen><verb>
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
</verb></tscreen>
もし, kernel に正常に認識されないポートがある場合は, おそらくカスタマ
イズした kernel を構築する必要があるでしょう.
kernel 構築と構築のための設定に関しては, BSD System Manager's Manual
の ``Building Berkeley Kernels with Config (config コマンドによる BSD
kernel の構築) '' &lsqb;ソース ファイルは
<tt>/usr/src/share/doc/smm</tt> にあります&rsqb;と ``FreeBSD
Configuration Options'' &lsqb; <tt>/sys/conf/options</tt> および
<tt>/sys/<em>arch</em>/conf/options.<em>arch</em></tt> の
<em>arch</em>の部分をたとえば<tt>i386</tt>としたファイル &rsqb; を参照
してください.
kernel の設定と構築をするためには, kernel のソース
(FreeBSD 1.1 では <tt>srcdist/srcsys.??</tt>, FreeBSD 1.1.5.1 では
<tt>srcdist/sys.??</tt>, またFreeBSD 2.0 では総てのソース)を展開
する必要があります.
まだ自分のシステムの kernel 用のコンフィギュレーション ファイルを作っ
ていない場合は, <tt>/sys/i386/conf</tt> に <tt/cd/ して作成してくださ
い. 初めてコンフィギュレーション ファイルを作る場合は, まず GENRICAH
(FreeBSD 1.x で BusTek の SCSI コントローラを使っている場合は
GENERICBT) というファイルを, <em/YOURSYS/ にコピーしてください. ここ
で, <em/YOURSYS/ はあなたのシステム名で, 大文字である必要があります.
このファイルを編集して, ディバイスに関する記述を変更します.
<tscreen><verb>
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
</verb></tscreen>
システムに搭載されていないディバイスに関する記述は, コメントアウトまた
は削除してしまってかまいません. Boca の BB2016 のようなマルチポートの
シリアル ボードをお持ちの場合は, <tt/sio(4)/ のマニュアルを見て, マ
ルチポートのボードのためのコンフィギュレーション ファイルの記述のし方
に関して確認してください. ディバイスのフラグの指定方法がバージョンによっ
て異なりますので, 別のバージョンの FreeBSD で利用していたコンフィギュ
レーション ファイルを流用する場合には十分注意してください.
なお, <tt/port "IO_COM1"/, <tt/"IO_COM2"/, <tt/"IO_COM3"/ および
<tt/"IO_COM4"/ は, それぞれのポートの一般的なアドレスである <tt/0x3f8/,
<tt/0x2f8/, <tt/0x3e8/ および <tt/0x2e8/ を表します. また, 割り込
み番号 4, 3, 5 と 9 は, それぞれ <tt/COM1:/ から <tt/COM4:/ のポー
トで一般的に使用される IRQ です. また, ISA バスのコンピュータの場合,
一般的なシリアルポートは複数のポートで一つの IRQ を共有することが <bf>
できません</bf>ので注意が必要です. (マルチポートのシリアル ボードの
場合は, 複数の 16550A ベースのポートで一つまたは二つの IRQ を共有する
ための機構を備えています. )
コンフィギュレーション ファイルの編集が終わったら, ``Building
Berkeley Kernels with Config (config コマンドによる BSD kernel の構築)''
および <tt/config(8)/ のマニュアルにしたがって, <tt/config/ コマンド
を使って kernel 構築のためのディレクトリを作成した後, kernel の構築,
インストールおよびテストを行ってください.
<sect1><heading>ディバイス スペシャル ファイル</heading>
<p>
kernel に組み込まれているほとんどのディバイスは, <tt>/dev</tt> ディレ
クトリにある, 「ディバイス スペシャル ファイル」を介してアクセスされ
ます. <tt/sio/ ディバイスの場合は, 着信用の <tt>/dev/ttyd?</tt> およ
び, 発信用の <tt>/dev/cua0?</tt> が利用されます. さらに, FreeBSD の
1.1.5 以降では, 初期化ディバイス (<tt>/dev/ttyi?</tt> と
<tt>/dev/cuai0?</tt>)およびロッキング ディバイス (<tt>/dev/ttyld?</tt> と
<tt>/dev/cual0?</tt>) も合わせて利用されます. 初期化ディバイスは, 通信
ポートがオープンされる度に, そのポートの初期設定を行うために使われます.
たとえば, <tt>CTS/RTS</tt> によるフロー制御を行うモデムが接続されてい
る場合の <tt/crtscts/ などのパラメータの初期化が行われます. ロッキング
ディバイスは, ポートの設定をロックし, 他のユーザやプログラムにこれらを
変更されることのないようにするために利用されます. 通信ポートの設定, 初
期化とロックおよび設定の変更に関しては, それぞれ <tt/termios(4)/,
<tt/sio(4)/ と <tt/stty(1)/ のマニュアルをご覧ください.
<sect2><heading>ディバイス スペシャル ファイルの作成</heading>
<p>
ディバイス スペシャル ファイルの管理は, ディレクトリ <tt>/dev</tt>
にあるシェル スクリプト <tt/MAKEDEV/ によって行います. (FreeBSD
1.1.5 の <tt/MAKEDEV(8)/ のマニュアルの <tt/COM/ ポートに関する記述は,
かなりいい加減なので無視してください. ) <tt/MAKEDEV/ を使って,
<tt/COM1:/ (ポート 0) をダイアルアップのポートとして利用するためのディ
バイス スペシャル ファイルを作るには, <tt>/dev</tt> に <tt/cd/ して
から, <tt/MAKEDEV ttyd0/ と実行してください. 同様に, <tt/MAKEDEV
ttyd1/ とすることで, <tt/COM2:/ (ポート 1) 用のディバイス スペシャル ファイル
を作成することができます.
<tt/MAKEDEV/ は, <tt>/dev/ttyd?</tt> のディバイス ファイルだけでなく,
<tt>/dev/cua0?</tt> (および FreeBSD 1.1.5 以降では総ての初期化ディバイ
スとロッキング ディバイスのスペシャル ファイル) も作成します. さらに,
もしシリアル端末用のスペシャル ファイル<tt>/dev/tty0?</tt> が存在すれ
ば, それらの削除も行います.
ディバイス スペシャル ファイルの作成後, これらのファイルのパーミション
が適切に設定されていて, これらのディバイスを利用してもよいユーザのみが
読み書きできるようになっていることを確認してください. (特に
<tt>/dev/cua*</tt> のパーミションには注意を払ってください. ) この確認
を怠ると, 一般のユーザがあなたのモデムを使うことができるようなことにな
りかねません. デフォルトの <tt>/dev/cua*</tt> のパーミションは, 以下の
ようになっていて, たいていの場合適切なものだと思います.
<tscreen><verb>
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
</verb></tscreen>
上の設定では, ユーザ <tt/uucp/ と, グループ <tt/dialer/ に属するユーザ
が発信用のディバイスを利用できます.
<sect1><heading>設定ファイル</heading>
<p>
FreeBSD のシステムへのダイアル アップによるアクセスを実現するために編
集が必要と思われる設定ファイルが, <tt>/etc</tt> ディレクトリに三つあ
ります. まず, <tt>/etc/gettytab</tt> には,
<tt>/usr/libexec/getty</tt> デーモンの設定を記述します. つぎに,
<tt>/etc/ttys</tt> に保存されている情報から, <tt>/sbin/init</tt> はど
の <tt/tty/ ディバイスに対して <tt/getty/ のプロセスを実行するべきか判
断します. 最後に, お使いの FreeBSD が 1.1.5.1 以降のものならば
<tt>/etc/rc.serial</tt> スクリプトに, それ以前のものならば
<tt>/etc/rc.local</tt> スクリプトにシリアル ポートの初期化のためのコマ
ンドを記述することができます.
UNIX にダイアル アップ モデムを接続する方法には, 二つの考え方がありま
す. 一つの方法は, ダイアル インしてくるユーザの接続速度に関係なく, 常
にモデムとローカルのコンピュータの RS-232 インタフェースの接続速度を一
定に保つように設定する方法です. この設定の長所は, ユーザがダイアル イ
ンして接続されると, 即座にシステムからのログイン プロンプトが送信され
るということです. 短所は, システムが実際のモデム間の速度を知ることがで
きないために, Emacs のようなフル スクリーンのプログラムが, 端末との接
続速度が遅い場合でも, そのような場合に効果的な方法で画面出力を行わない
点です.
もう一つは, モデムの RS-232 インタフェースとコンピュータの接続速度を,
モデム間の接続速度に応じて変化させるような設定です. たとえば, モデム間
の接続が V.32bis (14.4 Kbps) ならば, モデムとコンピュータの間の接続を
19.2 Kbps とし, モデム間の接続が 2400 bps の時には, モデムとコンピュー
タ間も 2400 bps で接続するような設定をします. この場合, <tt/getty/ は,
モデムが返すリザルト コードからモデムとコンピュータの接続速度を認識す
ることができませんので, <tt/getty/ は, まず初期速度で <tt/login:/ とい
う文字列を送信して, それに対する応答の文字列を監視します. ここで, ユー
ザ側の端末に無意味な文字列が表示された場合, ユーザは意味のある文字列を
受信するまで <tt>&lt;Enter&gt;</tt> キーを繰り返し押さなければならない
ということを知っていると仮定しています. もし接続速度が間違っている場合,
<tt/getty/ は, ユーザから送られた文字を無意味な文字列として扱い, 次の
速度を試します. そして, ここで再度 <tt/login:/ プロンプトを送信します.
この一連の動作が異常な回数繰り返されることも考えられますが, 普通は1度
か2度のキー入力があれば, ユーザはまともなプロンプトを受信できます. こ
のログインの動作が前者の固定速度による方法に比べて美しくないのは明らか
ですが, この方法では, 低速度で接続しているユーザに対するフル スクリー
ンのプログラムからのレスポンスが改善されます.
このドキュメントでは, 両方の設定方法について解説しますが, どちらかとい
うとモデム間の速度に応じて RS-232 インタフェースの速度が変化するような
設定の方に偏った説明になってしまうと思います.
<sect2><heading>/etc/gettytab</heading>
<p>
<tt>/etc/gettytab</tt> は, <tt/getty(8)/ の設定ファイルで,
<tt/termcap(5)/ と同様の形式で記述されます. ファイルのフォーマットや定
義できる機能についての詳細については, <tt/gettytab(4)/ のマニュアルを
ご覧ください.
<sect3><heading>固定速度の設定</heading>
<p>
モデムとコンピュータ間の通信速度を固定して使う場合, おそらく
<tt>/etc/gettytab</tt> に特に変更を加える必要はないはずです.
<sect3><heading>可変速度の設定</heading>
<p>
<tt/getty/ が利用するモデムとコンピュータの接続速度に関する情報を
<tt>/etc/gettytab</tt> に記述する必要があります. もし, 2400 bps のモ
デムをお使いになるのであれば, 既存の <tt/D2400/ のエントリがそのまま利
用できるでしょう. このエントリは FreeBSD の 1.1.5.1 の <tt/gettytab/
には既に含まれていますので, あなたの FreeBSD のバージョンでこのエント
リが存在しているのであれば, 新たに追加する必要はありません.
<tscreen><verb>
#
# 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:
</verb></tscreen>
高速モデムをお使いの場合は, おそらく <tt>/etc/gettytab</tt> に新たなエ
ントリを追加する必要があります. 以下の例は, 14.4 Kbps のモデムを, 最
大インタフェース速度を 19.2 Kbps として利用するためのエントリです.
<tscreen><verb>
#
# 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:
</verb></tscreen>
上記の例を利用した場合, FreeBSD 1.1.5 以降ではパリティなし, 8ビットの
接続が行われます. FreeBSD 1.1 では, <tt/:np:/ パラメータをファイルの
先頭の <tt/std.<em/xxx/</tt> のエントリに追加することで, パリティなし,
8ビットの接続が行われますが, このパラメータを追加しなければ接続は偶数
パリティ, 7ビットになります.
上記の例では, まず 19.2 Kbps (V.32bis) によるモデムとコンピュータ間の
接続を試み, 続いて 9600 bps (V.32), 2400 bps, 1200 bps, 300 bpsと順に
試み, 再び 19.2 Kbps による接続を試みるという循環に入ります. この接続
速度の循環は, <tt/nx=/(<bf/next table/) の機能で実現されています. ま
た, 各行はそれぞれ <tt/tc=/(<bf/table continuation/) の機能を使って,
その他の接続速度に依存した「標準的な」設定を取り込んでいます.
もし, お使いのモデムが 28.8 Kbps であったり, 14.4 Kbps の圧縮転送の機
能を有効に利用したい場合は, 19.2 Kbps よりも速い速度を利用するように
設定する必要があります. 以下に 57.6 Kbps から接続を試みる
<tt/gettytab/ の設定例を示しておきます.
<tscreen><verb>
#
# Additions for a V.32bis or V.34 Modem
# Starting at 57.6 Kbps
#
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:
</verb></tscreen>
もし, お使いの CPU が低速のものであったり, CPU に対する負荷が高い場合
で, 16650A 系のシリアル ポートをお使いでない場合, 57.6 Kbps の接続に
おいて, sio の ``slio'' エラーが発生するかもしれません.
<sect2><heading>/etc/ttys<label id="dialup:ttys"></heading>
<p>
<tt>/etc/ttys</tt> には, <tt/init/ が監視すべき <tt/tty/ のリストを記
述します. さらに, <tt>/etc/ttys</tt> は, <tt/login/ に対してセキュリ
ティに関する情報を提供します. (ユーザ <tt/root/ は, <tt/secure/ とマー
クされている <tt/tty/ のみからログインできます. ) 詳しくは
<tt/ttys(5)/ のマニュアルをご覧ください.
<tt>/etc/ttys</tt> の既存の行を変更するか, あるいは新しい行を追加して,
<tt/init/ が自動的に新しいダイアル アップ サービス用のポートに対して
<tt/getty/ プロセスを起動するようにしてください. 書式は, 固定速度の設
定か可変速度の設定かに関わらず, 以下のとおりです.
<tscreen><verb>
ttyd0 "/usr/libexec/getty xxx" dialup on
</verb></tscreen>
1番目の項目は, このエントリで対象とするディバイス スペシャル ファイル
です. 上の例では <tt/ttyd0/ として, <tt>/dev/ttyd0</tt> を <tt/getty/
に監視させることを表しています. 2番目の項目 <tt>"/usr/libexec/getty
<em/xxx/"</tt> (<em/xxx/ は初期段階で使われる <tt/gettytab/ のエントリ
に置き換えてください. ) が, <tt/init/ がこのディバイスに対して起動する
プロセスです. 3番目の <tt/dialup/ は, デフォルトのターミナル タイプで
す. 4番目の <tt/on/ は, この行が有効であることを <tt/init/ に対して示
しています. 5番目の項目に <tt/secure/ を指定することもできますが, これ
は, たとえばシステムのコンソールのように, 物理的に安全な端末に対しての
み指定するようにしてください.
デフォルトのターミナル タイプ (上記の例では <tt/dialup/) は, ローカル
のユーザの好みによって異なってきます. ユーザがログイン スクリプトをカ
スタマイズして, ターミナル タイプが <tt/dialup/ の時には自動的に他のター
ミナル タイプを設定できるように, ダイアル アップのポートのデフォルトの
ターミナル タイプには <tt/dialup/ が伝統的に用いられています. しかし,
筆者のサイトでは, ほとんどのユーザが VT102 エミュレイションを使ってい
るので, ダイアル アップのポートのデフォルト ターミナル タイプとして
<tt/vt102/ を指定しています.
<tt>/etc/ttys</tt> の修正がすんだら, 以下のようなコマンドを使って
<tt/init/ プロセスに <tt/HUP/ シグナルを送り, <tt>/etc/ttys</tt> を
読み込み直させてください.
<tscreen><verb>
kill -1 1
</verb></tscreen>
ただ, もし初めてシステムを設定しているのであれば, モデムが適切に設定さ
れて接続されるまでは, <tt/init/ に対してシグナルを送らない方がいいか
もしれません.
<sect3><heading>固定速度の設定</heading>
<p>
速度を固定する設定では, <tt>/etc/ttys</tt> の中で, <tt/getty/ に対し
て固定速度のエントリを指定する必要があります. たとえば, 以下の例はポー
トのスピードが 19.2 Kbps に固定されたモデムのための <tt/ttys/ のエント
リです.
<tscreen><verb>
ttyd0 "/usr/libexec/getty std.19200" dialup on
</verb></tscreen>
別の速度でモデムのポートのスピードを固定したい場合は,
<tt>/etc/gettytab</tt> から適切なエントリを選んで, 上の例の
<tt/std.19200/ の部分を <tt>std.<em/speed/</tt> として, 適切な速度のも
のに置き換えてください.
<sect3><heading>可変速度の設定</heading>
<p>
可変速度の設定では, <tt/ttys/ のエントリが, <tt>/etc/gettytab</tt>
の中の適切な「自動速度調整」の初期設定のエントリを参照していなければな
りません. たとえば, もし前述の 19.2 Kbps から接続を試みる可変速度の設
定例 (<tt/V19200/ の <tt/gettytab/ エントリ)をそのまま <tt/ttys/ に追
加したのであれば, <tt/ttys/ エントリは以下のようになります.
<tscreen><verb>
ttyd0 "/usr/libexec/getty V19200" dialup on
</verb></tscreen>
<sect2><heading>/etc/rc.serial または /etc/rc.local</heading>
<p>
V.32, V.32bis または V.34 モデムのような高速モデムを利用する場合, ハー
ドウェア (<tt>RTS/CTS</tt>) フロー制御を行う必要があります. FreeBSD
kernel のモデム ポートにハードウェア フロー制御のフラグを設定するため
の <tt/stty/ コマンドを, FreeBSD 1.1.5.1 以降では
<tt>/etc/rc.serial</tt> に, FreeBSD 1.1 では <tt>/etc/rc.local</tt> に
記述できます.
たとえば, FreeBSD 1.1.5.1 の <tt>/etc/rc.serial</tt> のサンプルは以下
のとおりです.
<tscreen><verb>
#!/bin/sh
#
# Serial port initial configuration
stty -f /dev/ttyid1 crtscts
stty -f /dev/cuai01 crtscts
</verb></tscreen>
この例では, <tt/termio/ のフラグ <tt/crtscts/ をシリアル ポート &num;1
(<tt/com2:/) のダイアル インおよびダイアル アウトの初期化ディバイスに
設定しています.
古い FreeBSD 1.1 では, 以下のエントリが <tt/crtscts/ フラグを設定する
ために <tt>/etc/rc.local</tt> に追加されていました.
<tscreen><verb>
# 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
</verb></tscreen>
FreeBSD 1.1 には初期化のためのディバイス スペシャル ファイルがないので,
ディバイス ファイルそのものにフラグを設定して, その後はフラグをクリア
してしまうような極悪人が現れないことを願うしかありません.
<sect1><heading>モデムの設定</heading>
<p>
もし, あなたのモデムがパラメータを不揮発ラムに保存できるタイプならば,
PC-DOS 上の Telix や FreeBSD 上の <tt/tip/ などのような通信プログラム
を使って, パラメータを設定してください.
<tt/getty/ が利用する初期速度でモデムに接続して, 以下の条件を満たすよ
うに不揮発ラムの設定を変更してください.
<itemize>
<item> 接続時に <tt/CD/ 信号がオンになる
<item> 接続時に <tt/DTR/ がオンになり, <tt/DTR/ オフで回線を切断しモ
デムをリセットする.
<item> 送信時フロー制御には <tt/CTS/ を利用.
<item> <tt>XON/XOFF</tt> によるフロー制御を行わない.
<item> 受信時のフロー制御は <tt/RTS/ を使用.
<item> Quiet mode (リザルト コードを返さない)
<item> コマンド エコーを返さない.
</itemize>
これらを実現するためのコマンドやディップ スイッチの設定に関しては, モ
デムのマニュアルを参照してください.
以下に, USRobotics Sportster の 14,400 bps の外づけモデムの設定例を示
しておきます.
<tscreen><verb>
ATZ
AT&amp;C1&amp;D2&amp;H1&amp;I0&amp;R2&amp;W
</verb></tscreen>
ことのついでに, たとえば, V42.bis や MNP5 のデータ圧縮を使用するかど
うかなどのモデムの他の設定について確認, 調整しておくのもよいかもしれま
せん.
さらに, USRobotics Sportster の 14,400 bps の外づけモデムでは, 以下の
ようなディップ スイッチの設定も必要です. 他のモデムをお使いの方も, 以
下の例を設定の参考にしてください.
<itemize>
<item> スイッチ1: UP - DTR 標準
<item> スイッチ2: 無視 (リザルト コードを単語形式にするか数値形式にす
るか)
<item> スイッチ3: UP - リザルト コードを返さない
<item> スイッチ4: DOWN - コマンド エコーを返さない
<item> スイッチ5: UP - 自動着信
<item> スイッチ6: UP - CD 標準
<item> スイッチ7: UP - 不揮発ラムからデフォルト値をロードする
<item> スイッチ8: 無視 (Smart Mode/Dumb Mode)
</itemize>
リザルト コードを返さないように設定しておかないと, <tt/getty/ が誤っ
て <tt/login:/ プロンプトをコマンド モードのモデムに送信してしまった場
合に, モデムがこの入力をエコーしたり, この入力に対するリザルト コード
を返してしまったりすることになります. この結果として, モデムと
<tt/getty/ の間で延々と無意味なやりとりが続いたというケースを聞いたこ
とがあります.
<sect2><heading>固定速度の設定</heading>
<p>
固定速度の設定では, モデムとコンピュータ間の通信速度をモデムとモデム間
の接続速度に関係なく, 常に一定に保つように, モデムを設定する必要があり
ます. USRobotics Sportster の 14,400 bps 外づけモデムの場合, 以下のコ
マンドで, モデムとコンピュータ間の速度が, コマンド送信時の速度に固定さ
れます.
<tscreen><verb>
ATZ
AT&amp;B1&amp;W
</verb></tscreen>
<sect2><heading>可変速度の設定</heading>
<p>
可変速度の設定では, シリアル ポートの速度が, 着信速度に応じて変化する
ように設定しなければいけません. USRobotics Sporster の 14,400 bps 外
づけモデムの場合, 以下のコマンドで, エラー訂正機能を利用した通信の場合
は, コマンドを送信した時の通信速度にシリアル ポートの速度を固定し, エ
ラー訂正機能を利用しない接続では, シリアル ポートの速度が変化するよう
に設定されます.
<tscreen><verb>
ATZ
AT&amp;B2&amp;W
</verb></tscreen>
<sect2><heading>モデムの設定の確認</heading>
<p>
ほとんどの高速モデムには, 現在の設定をある程度人間にも理解できる形式に
して表示させるコマンドがあります. USRobotics Sporster の 14,400 bps
外づけモデムの場合は, <tt/ATI5/ コマンドで, 現在の不揮発ラムの設定を
表示することができます. さらに, ディップ スイッチの設定も含めた現在の
設定を確認するためには, <tt/ATZ/ コマンドを送信してから, <tt/ATI4/
コマンドを送信してください.
他のメーカーのモデムをお使いの場合は, モデムのマニュアルで設定値の確認
方法を確認してください.
<sect1><heading>トラブルシューティング</heading>
<p>
以下の手順でダイアル アップ モデムの動作を確認することができます.
<sect2><heading> FreeBSD システムの動作確認</heading>
<p>
モデムを FreeBSD システムに接続し, システムをブートします. あなたのモ
デムにモデムの状態を確認するためのインジケータがあれば, <tt/DTR/ のイ
ンジケータの状態に注目してください. もし, システムのコンソールに
<tt/login:/ プロンプトが表示された時に, <tt/DTR/ のインジケータが点灯
すれば, FreeBSD が適切なポートに対して <tt/getty/ を起動し, モデムへ
の着信を待っている状態であることを意味しています.
もし <tt/DTR/ のインジケータが点灯しない場合は, システムのコンソールか
ら FreeBSD にログインして, <tt/ps ax/ を実行し, FreeBSD が 適切なポー
トに対して<tt/getty/ プロセスを起動しようとしているのかどうか確認して
ください. プロセスに関する情報の中に, 以下のような行が表示されるはずで
す.
<tscreen><verb>
114 ?? I 0:00.10 /usr/libexec/getty V19200 ttyd0
115 ?? I 0:00.10 /usr/libexec/getty V19200 ttyd1
</verb></tscreen>
モデムにまだ着信がない状態の時に, 以下のように上とは異なる出力があった
場合, <tt/getty/ は既にモデム ポートのオープンを終了したということに
なります.
<tscreen><verb>
114 d0 I 0:00.10 /usr/libexec/getty V19200 ttyd0
^^
</verb></tscreen>
<tt/getty/ は, <tt/CD/ (carrier detect) 信号がオンの状態になるまで,
ポートのオープンを完了することはできませんので, この場合は接続に問題が
あるか, あるいはモデムの設定に問題があることが考えられます.
もし, 適切なポートをオープンしようとしている <tt/getty/ が見あたらない
場合は, 再度 <tt>/etc/ttys</tt> の内容を確認し, 書式などに誤りがないか
調べてみてください. また, ログ ファイル <tt>/var/log/messages</tt> に
<tt/init/ および <tt/getty/ から何か出力がないかどうかも確認してみてく
ださい. もし何かメッセージが記録されていたら, 再度 <tt>/etc/ttys</tt> ,
<tt>/etc/gettytab</tt> の二つの設定ファイルと, ディバイス スペシャル
ファイル <tt>/dev/ttyd?</tt> を確認し, 記述に誤りがないか, 足りないエ
ントリがないか, 足りないディバイス スペシャルファイルがないかといった
点について調べてみてください.
<sect2><heading>モデムで接続してみる</heading>
<p>
実際にモデムを使って別のコンピュータから接続してみてください. この時,
8ビット, パリティなし, 1ストップ ビットで接続するようにしてください.
接続後すぐにプロンプトが返ってこない場合や, 無意味な文字列が表示される
場合は, 1秒に1回くらいの割合で <tt>&lt;Enter&gt;</tt> キーを押してみて
ください. しばらくたって, なおも <tt/login:/ プロンプトが現れない場合
は, <tt>BREAK</tt> 信号を送信してみてください. この時, 端末側で使って
いるモデムが高速モデムならば, このモデムのインタフェースの接続速度を固
定してから, 再度ダイアル インしてみてください. (たとえば, USRobotics
Sportster の場合は, <tt>AT&amp;B1</tt>)
それでもまだ <tt/login:/ プロンプトが表示されない場合は,
<tt>/etc/gettytab</tt> の以下の点について再度確認してみてください.
<itemize>
<item> <tt>/etc/ttys</tt> の対応する行の 2番目の項目で,
<tt>/etc/gettytab</tt> の中で定義されているエントリが指定されているか
<item> 各 <tt/nx=/ で <tt>/etc/gettytab</tt> の中で定義されているもの
が指定されているか
<item> 各 <tt/tc=/ で <tt>/etc/gettytab</tt> の中で定義されているもの
が指定されているか
</itemize>
もしダイアル インしても, FreeBSD システム側のモデムが応答しない場合は,
FreeBSD 側のモデムが <tt/DTR/ がオンになった時に電話にでるように設定さ
れているかを確認してください. もしモデムの設定に問題がなさそうならば,
モデムのインジケータ (がもしあれば) で, <tt/DTR/ がオンになっているか
を確認してください.
この確認のステップを数回繰り返してもうまくいかない場合は, 一度休憩して,
しばらくたってから挑戦してみましょう. それでもだめなら, おそらく
&a.questions にあなたのモデムについての情報と問題を書いたメールを送れ
ば, メーリング リストのメンバーが問題の解決を助けるべく努力してくれる
でしょう.
<sect1><heading>謝辞</heading>
<p>
以下の方々から, 多くのコメントやアドバイスをいただきました. ここに謝意
を表します.
<descrip>
<tag/Sean Kelly/ &lt;kelly@fsl.noaa.gov&gt; 多くのすばらしい助言をいた
だきました
</descrip>

View file

@ -1,164 +0,0 @@
<!-- $Id: diskless.sgml,v 1.5 1997/02/22 13:00:54 peter Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.9 -->
<!-- 日本語訳 Y.Suzuki(yasu@hike.te.chiba-u.ac.jp)-->
<sect><heading>Diskless operation<label id="diskless"></heading>
<p><em>原作: &a.martin;</em>
<p><em>訳: &a.yasu;</em>
<tt>netboot.com/netboot.rom</tt>によって、
ディスクのないクライアントで
ネットワーク経由でFreeBSDマシンのブートを行い
FreeBSDを走らせることができます。
2.0ではローカルなスワップを持つことができます。
NFS経由のスワッピングもサポートされています。
サポートされているイーサネットカード:
Western Digital/SMC 8003, 8013, 8216 とその互換ボード,
NE1000/NE2000 とその互換カード (再コンパイルが必要)
<sect1>
<heading>セットアップの手順</heading>
<p><enum>
<item>サーバにするマシンを見つけます。
このマシンには、FreeBSD 2.0のバイナリとbootpを
記憶するだけの十分なディスクスペースが必要です。
tftp と NFS も使えます。
テストしたマシン:
<itemize>
<item>HP9000/8xx / HP-UX 9.04以降
(9.04以前では動きません)</item>
<item>Sun/Solaris 2.3. (bootpが必要)</item>
</itemize>
<item>クライアントにIP,gateway,netmaskを提供する
bootpサーバをセットアップします。
<tscreen><verb>
diskless:\
:ht=ether:\
:ha=0000c01f848a:\
:sm=255.255.255.0:\
:hn:\
:ds=192.1.2.3:\
:ip=192.1.2.4:\
:gw=192.1.2.5:\
:vm=rfc1048:
</verb></tscreen></item>
<item>クライアントにブート情報を提供するTFTPサーバを
(bootpサーバと同じマシンに)セットアップします。
このファイルの名前は、<tt>cfg.X.X.X.X</tt> (もしくは
<tt>/tftpboot/cfg.X.X.X.X</tt>)で、
ここで<tt>X.X.X.X</tt> はクライアントのIPアドレスです。
このファイルの内容は netbootコマンドで有効です。
2.0では、netboot は以下のようなコマンドを持ちます:
<tscreen><verb>
help - helpリストの表示
ip <X.X.X.X> - クライアントのIPアドレスの表示/セット
server <X.X.X.X> - bootp/tftp サーバのアドレスの表示/セット
netmask <X.X.X.X> - netmaskの表示/セット
hostname <name> - hostnameの表示/セット
kernel <name> - カーネル名の表示/セット
rootfs <ip:/fs> - root ファイルシステムの表示/セット
swapfs <ip:/fs> - swap ファイルシステムの表示/セット
swapsize <size> - diskless swapsize を Kbytes単位でセット
diskboot - ディスクからのブート
autoboot - ブートプロセスの続行
trans <on|off> - トランシーバのオン|オフ
flags [bcdhsv] - ブートフラグの設定
</verb></tscreen>
完全にディスクレスな場合の一般的なcfgファイルは以下のようになります:
<tscreen><verb>
rootfs 192.1.2.3:/rootfs/myclient
swapfs 192.1.2.3:/swapfs
swapsize 20000
hostname myclient.mydomain
</verb></tscreen>
ローカルにswapを持つマシンについては以下のようになります:
<tscreen><verb>
rootfs 192.1.2.3:/rootfs/myclient
hostname myclient.mydomain
</verb></tscreen>
<item>NFS サーバがクライアントにroot(必要ならswapも)
ファイルシステムをexportしているか、また、
クライアントがこれらのファイルシステムに
ルートアクセスできるか確認します。
FreeBSDにおける一般的な <tt>/etc/exports</tt> ファイルは
以下のようになります:
<tscreen><verb>
/rootfs/myclient -maproot=0:0 myclient.mydomain
/swapfs -maproot=0:0 myclient.mydomain
</verb></tscreen>
そして、HP-UX側では以下のようになります:
<tscreen><verb>
/rootfs/myclient -root=myclient.mydomain
/swapfs -root=myclient.mydomain
</verb></tscreen>
<item>NFS経由でスワッピングを行う場合
(完全にディスクレスな場合の設定)、
クライアントが <tt>dd</tt> で使用する swap ファイルを作成します。
もし、<tt>swapfs</tt> コマンドが上記の例のように
引数 <tt>/swapfs</tt>を持ちそのサイズが 20000 である場合、
myclientに対するスワップファイルは
<tt>/swapfs/swap.X.X.X.X</tt> で呼び出されます。
ここで <tt>X.X.X.X</tt> はクライアントのIPアドレスです。
例:
<tscreen><verb>
# dd if=/dev/zero of=/swapfs/swap.192.1.2.4 bs=1k count=20000
</verb></tscreen>
また、スワッピングが開始されるとクライアントのスワップスペースは
センシティブな情報を含むようになるので、不正なアクセスを防止するため、
このファイルへの読み書きのアクセス制限がなされていることを確認して下さい:
<tscreen><verb>
# chmod 0600 /swapfs/swap.192.1.2.4
</verb></tscreen>
<item>クライアントがそれぞれのrootファイルシステムとして使う
ディレクトリにrootファイルシステムを展開します。
(上記の例では<tt>/rootfs/myclient</tt>).
<itemize>
<item> HP-UX システム: サーバはHP9000/800 シリーズのマシンで、
HP-UX 9.04 以降が必要です。
これ以前のバージョンではNFSを経由するデバイスファイルが
作成ができません。
<item> <tt>/rootfs/myclient</tt> に <tt>/dev</tt> を
展開する際に、いくつかのシステム(HPUX)ではFreeBSDに合った
デバイスファイルが作成されないので注意してください。
その際には最初の起動時にシングルユーザモードに移行して
(ブートの段階でCtrl-Cを押す)、<tt>/dev</tt> に移って
"<tt>sh ./MAKEDEV all</tt>" として、クライアントからこれを
修正してください。
</itemize>
<item>クライアントで <tt>netboot.com</tt> を実行するか、
<tt>netboot.rom</tt> ファイルから EPROMを作成します。
</enum>
<sect1>
<heading><tt>/</tt> および <tt>/usr</tt> ファイルシステムを共有して使用する</heading>
<p>今のところ、これを行う公式に認められた方法はありませんが、
私はそれぞれのクライアントで <tt>/usr</tt> ファイルシステムと
個々の <tt>/</tt> ファイルシステム を共有して使っています。
どなたかこれをきちんと行うやり方の提案がありましたら、
私に、もしくは &a.core; グループに知らせてください。
<sect1>
<heading>特定の設定についてnetbootをコンパイルする</heading>
<p><tt>/sys/i386/boot/netboot/Makefile</tt> の中の設定を変更して
コンパイルすることで、netbootでNE1000/2000 カードをサポートします。
このファイルの先頭にあるコメントを見てください。

View file

@ -1,501 +0,0 @@
<!-- $Id: dma.sgml,v 1.5 1997/02/22 13:00:55 peter Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.7 -->
<!-- 日本語訳 鈴木康修 (yasu@hike.te.chiba-u.ac.jp) -->
<!--
<!DOCTYPE linuxdoc PUBLIC "-//FreeBSD//DTD linuxdoc//EN" [
<!ENTITY % authors SYSTEM "authors.sgml">
%authors;
]>
-->
<sect><heading>DMAとはどういったものでどういう働きをするのか <label id="dma"></heading>
<p><em>原作: &a.uhclem;<newline>
<newline>訳: &a.yasu;<newline>
10 December 1996.</em>
<!-- Version 1(3) -->
Direct Memory Access (DMA)は, 中央演算処理装置 (CPU)からの干渉なく
データを計算機中である場所から別の場所に動かすための手法です.
DMA機能の実装の方法はそれぞれの計算機アーキテクチャ間で異なるもので
あるため, ここでの議論はIBMパーソナルコンピュータ(PC),
PC/ATとその互換機におけるDMAサブシステムの実装と働きに限定します.
PCの DMAサブシステムは, Intelの 8237 DMAコントローラをベースにして
います. 8237はそれぞれ独立にプログラムできる4つのDMAチャネルを持ち,
それぞれどのチャネルもいつでもアクティブにできます.
これらのチャネルは順に 0, 1, 2, 3となっています.
PC/ATからは, セカンド 8237 チップが追加され,それらは 4, 5, 6, 7と
なっています.
オリジナルの DMAコントローラ(0, 1, 2, 3)は, 1回の転送で1バイト
転送します.
セカンドDMAコントローラ(4, 5, 6, 7)は1回で 隣接する2つのメモリ番地から
16ビット転送します.
ここで, 最初のバイトは通常偶数のアドレスになります.
2つのコントローラは全く同じものであり, 転送量が異なるのは
セカンドコントローラがシステムに直結しているためです.
8237 は個々のチャネルについて, DRQと-DACKという2つの電気信号を
持っています. その他に, HRQ (Hold Request), HLDA (Hold Acknowledge),
-EOP (End of Process)があり, バス制御信号として -MEMR (Memory Read),
-MEMW (Memory Write), -IOR (I/O Read), and -IOW (I/O Write)があります.
8237 DMACは, いわゆる``fly-by'' DMAコントローラです.
これは, データの移動を行う際に, データは DMACチップを通過せず,
DMACチップに格納されないことを意味します.
また, DMACはI/Oポートとメモリアドレス間でのみデータを
転送することができますが, 2つのI/Oポートもしくは2つのメモリアドレス
間ではできません.
<quote><em>注:</em> 8237は, 非``fly-by''モードでは, 互いに接続された
2つのチャネルでのメモリ-メモリ間でのDMA操作を許可します.
しかし, PCメーカは, ただでさえ乏しいこのリソースをこんなふうに
使ったりしません。
なぜなら, CPUを使用してメモリ間のデータを動かす方が早いからです.
</quote>
PCアーキテクチャでは, それぞれのDMAチャネルは, 通常そのDMAを
使用するハードウェアがそのチャネルについてDRQを使って
転送を要求した時のみ動作します.
<sect1><heading>DMA転送の例</heading>
<p>これはDMA転送の手順の例です.
この例では, フロッピーディスクコントローラ (FDC)が
ディスケットから1バイト読み込んで, DMAを使って,メモリの0x00123456番地に
格納したいとします. 処理は, FDCによって, DRQ2信号を有効にして
DMAコントローラに要求を伝えることで開始します.
DMAコントローラはDRQ2シグナルが有効になったことを記録します.
するとDMAコントローラはDMAチャネル2がプログラムされ, 有効に
なっていることを確認します.
DMAコントローラはまた, 他のDMAチャネルがアクティブでないか, または
より高い優先度を持っていないかを確認します.
一旦これらのチェックが完了すると, DMACはDMACがバスを使うために
バスを開放するようにCPUに要求します.
DMACはCPUにHRQ信号を送ってバスを要求します.
CPUはHRQ信号を検出し, 現在の指示の実行を完了します.
一旦プロセッサがバスを開放することができる状態になると, 解放を
行います.
通常は CPU により駆動される信号 (-MEMR, -MEMW, -IOR, -IOW, その他)を
すべてハイインピーダンス (ハイともローとも指定しない)状態にした後,
CPUは HLDA信号を有効にして DMAコントローラにバスを明け渡したことを
伝えます.
プロセッサによっては, CPUはバスを使用しないいくつかの
命令を追加して実行することもできますが,
しかし,プロセッサの内部キャッシュやパイプライン以外のメモリから
何か読み出すといった指示に到達したら結局CPUは待たなくてはなりません.
ここで,DMACが バスを「託される」と,
DMACはその -MEMR, -MEMW, -IOR, -IOW 出力信号をアクティブにし,
DMACから出力されるアドレスは 0x3456にセットされます.これは
転送しようとする特定のメモリ番地をバイトで指示するのに使われます.
するとDMACはDMA転送をリクエストしたデバイスに転送が始まることを
知らせます.これは -DACK信号をアクティブにすることで行われます.
フロッピーディスクコントローラの場合は, -DACK2を
アクティブにすることで行われます.
バスのデータ線に転送されるバイトにを出力することについては
フロッピーディスクコントローラが責任をもつことになります.
もし,フロッピーディスクコントローラがバス上にバイトデータを
出力するのに余計な時間を必要としなければ
(もし周辺装置がもっと時間を必要とする場合には, READY信号を
経由してDMACに通知します), DMAは 1 DMAクロック待ち,
メモリにバス上のバイトデータを格納するために
-MEMW および -IOR 信号を解除します. そして
FDCはバイトデータが転送されたことを認識します.
DMAサイクルは1度に1バイトしか転送しないので,
FDCはDRQ2信号を止めて, DMACに転送の終了を知らせます.
DMACは-DACK2信号を解除して, FDCはバス上へのデータ出力を
停止しなくてはならないことを知らせます.
次にDMACは他のDMAチャネルのいずれかに要求がきていないか
チェックを行います. もしどのチャネルのDRQも有効になっていなければ,
DMAコントローラは処理を完了して, -MEMR, -MEMW, -IOR, -IOW および
アドレス信号をハイインピーダンス状態にします.
最後に, DMAはHRQ信号を解除します. CPUはこれを見ると,HOLDA信号を
解除します. そしてCPUは自らの -MEMR, -MEMW, -IOR, -IOW 信号および
アドレス線を有効にし, 命令の実行やメインメモリや周辺機器へのアクセスを
再開します.
典型的なフロッピーディスクの1セクタについては, 上記のプロセスが
それぞれのバイトについて1回行われ, 全部で512回繰り返されます.
1バイト転送される毎に,DMAC内のアドレスレジスタはインクリメントされ,
何バイト転送すればよいかを示すカウンタがデクリメントされます.
カウンタが0になると, DMAはカウンタが0になったことを示すEOP信号を
送り, DMAコントローラがCPUによって再びプログラムされるまで
これ以上データは転送されなくなります.
このイベントはターミナルカウント(TC)とも呼ばれます.
EOP信号は1本しかありません. なぜならどんな時もただ1つのDMAチャネル
のみをアクティブにすることができるためです.
もし, バッファの転送が完了した時に周辺機器から割り込みを発生させたい
とき, 周辺機器は -DACK信号およびEOP信号の両方が同時に発信されたか
どうかをテストします. それが生じると, DMACはCPUの介在がなければ
これ以上はその周辺機器についての情報を転送しないことを意味します.
すると周辺機器はプロセッサの注意を得るために割り込み信号のうちの1つを
発信します. DMAチップ自身は割り込みを生じさせる能力は持っていません.
周辺機器とそれに関連するハードウェアが割り込みを生成する責任を
持ちます.
DMACが要求を出したときにはCPUは常にバスをDMACに開放しますが,
この動作は, DMACがアクティブになった時にプロセッサが命令を実行するのに
かかる時間がわずかに変化することを除いては, アプリケーション,
オペレーティングシステムの両方からはわからないということを
理解することが重要です.
そのため, プロセッサが確かにDMA転送が完了したことを知るためには,
周辺装置やDMAチップ中のレジスタを調べたり,周辺装置からの割り込みを
受け取る必要があります.
<sect1><heading>DMA ページレジスタ および 16メガ アドレス空間制限</heading>
<p>これまで述べたのとは異なり, DMACはアドレス線を 0x0123456 にセットする
代わりに 0x3456 だけをセットすることにあなたは気づいたかも
しれません. この理由について少し説明します.
オリジナルのIBM PCがデザインされた時, IBMは, DMACと割込み制御チップの
両方を, 8085(8ビットプロセッサで, 16ビットのアドレス空間(64k)を持つ)と
組み合わせて使うように設計されたチップを使うことを選びました.
IBM PCが64k以上のメモリをサポートしていたため,
DMACが64kを越えるメモリ番地に読み込み又は書き込みを行うために
変更を行う必要が生じました.
この問題を解決するためにIBMが行ったのは, それぞれのDMAチャネルに
ついてラッチを追加することでした. つまり, 読み込む又は書き込む先の
アドレスの上位ビットに保持するためのものです.
DMAチャネルがアクティブな時はいつでも,
このラッチの内容はアドレスバスに書かれて, そのチャネルのDMA操作が
終了するまでそこに保持されます.
これらのラッチは「ページレジスタ」と呼ばれます.
そのため上記に示した例では, DMACはアドレスの0x3456の部分をバス上に
置き, DMAチャネル2に対するページレジスタは, 0x0012xxxxをバス上に
置きます. これらの2つの値が組み合わされてアクセスされるメモリ中の完全な
アドレスを形成します.
ページレジスタのラッチはDMAチップとは独立であるので,
読み込まれる又は書き込まれるメモリ領域は, 64kの物理的境界を
またいではなりません.
DMACがメモリの0xffff番地をアクセスすると, データの転送後,
DMACはアドレスレジスタをインクリメントし, 0x0000番地にある次のバイトを
アクセスします. 0x10000番地ではありません.
これはおそらく意図されたものとは異なっているでしょう.
<quote><em>注:</em> 「物理的な」 64Kの境界を 8086モードの
64k「セグメント」と混同してはいけません. セグメントは, セグメント
レジスタにオフセットレジスタを加算して作られるものです.
ページレジスタにはアドレスのオーバーラップはありません. </quote>
さらに複雑なことには, PC/ATでは外部のDMAアドレスのラッチは
8ビットしか保持しません. よって8+16で24ビットになり, これは
DMAが0から16メガの間のメモリ番地しか指し示せないことを
意味します. 16メガ以上のメモリを持ったより新しいマシンにおいても,
PCコンパチブルなDMAでは16メガ以上のメモリ番地にはアクセスできません.
この制限を避けるために, オペレーティングシステムは
16メガ以下にある物理的な64kの境界をまたがない領域にバッファを
予約します. そして, DMACはデータを周辺機器からそのバッファに
転送するようにプログラムされます. 一旦DMACがこのバッファに
データを動かすと, オペレーティングシステムは本当にデータを
格納したいアドレスにバッファからデータをコピーします.
16メガを越えるアドレスからDMAベースの周辺機器にデータを
書き込む際には, データは16メガ以下に位置したバッファから最初に
コピーされなくてはならず, その後, DMACはバッファからハードウェアに
データをコピーすることができます. FreeBSDでは, これらの予約バッファは
「バウンスバッファ」と呼ばれます. MS-DOSの世界では,
これらは「スマートバッファ」などと呼ばれます.
<sect1><heading>DMA操作モードとその設定</heading>
<p>8237 DMA はいくつかのモードで動作します. 主なモードは,
以下のとおりです.
<descrip>
<tag>シングル転送モード</tag>
シングルバイト(もしくはワード)が転送されます.
DMAは1バイト毎にバスを開放し,
再び要求しなくてはなくてはなりません.
これは一般に, すぐにはデータのブロック全てを転送できないデバイスに
よって使用されます.
周辺装置は次の転送の準備ができる毎にDMAを要求します.
フロッピーディスクコントローラは1バイトのバッファしか持たないので,
このモードを使用します.
<tag>ブロック/デマンド転送モード</tag>
一旦DMACがシステムバスを取得すると, 最大64kまでのデータブロック
全体が転送されます.
もし周辺装置が余分に時間を必要とするときは,
転送を一時中断するためにREADY信号を有効にします.
READY信号は過度に使われるべきではなく, 遅い周辺装置の転送の場合は
シングル転送モードを代わりに使うべきです.
ブロック転送モードとデマンド転送モードの違いは, 一旦ブロック転送が
始まると,転送カウンタか0になるまでそれが行われるところです.
1バイト転送するにはDRQが -DACK が有効になるまでの間だけ
有効であれば充分です.
デマンドモードはDRQが有効な間は転送が続けられます.
DMACが転送を一時中止した場合はバスを解放してCPUに返します.
その後、DRQが有効になると, 転送は中断したところから再開されます.
データの転送, 特に転送に使われるメモリ番地が16Mを越える場合に,
CPUを使った方が効率がよくなるまでCPUの速度が向上する以前の
古いハードディスクコントローラはデマンドモードを使っていました.
<tag>カスケード転送モード</tag>
このメカニズムはDMAチャネルがバスを要求することを許可する
ものですが, 接続されたデバイスはバス上のアドレス情報の配置に
ついてDMACに代わって責任を持ちます.
これはいわゆる「バスマスタ」というものです.
カスケードモードのDMAチャネルがバスのコントロールを受け取ると,
DMAは通常行われるようなバス上のアドレスとI/Oコントロール信号の
出力を行いません. 代わりに, DMAはこのチャネルの -DACK信号を
有効にします.
この時点で, アドレスとバスコントロール信号の供給は
DMAチャネルに接続されたデバイスが担当します.
周辺機器はシステムバスの完全なコントロールを行い,
16メガ以下の任意のアドレスの読み込みおよび書き込みを行うことが
できます. 周辺機器はバスの使用を終えると, DRQ線を無効にして,
DMAコントローラはCPUもしくは他のDMAチャネルに制御を返します.
カスケードモードは複数のDMAコントローラを相互接続するのに
使われます. PC内ではDMAチャネル4がまさにこの用途に使われています.
周辺機器がDMAチャネル0, 1, 2, 3でバスを要求すると,
スレーブDMAコントローラは HLDREQ を有効にしますが,
この線は実際にはプライマリDMAコントローラのDRQ4に接続されています.
プライマリのDMAコントローラはその後 HLDREQ を使ってCPUにバスを
要求します. バスが与えられると, -DACK4が有効になり,
この線は実際にはスレーブDMAコントローラの HLDA信号に
接続されています.
スレーブDMAコントローラはその後要求したDMAチャネルに対して
データを転送するか, SCSIコントローラのような
バスマスタリングを要求する周辺機器にバスを許可します.
このような配線がおこなわれているため, PC/ATシステムでは
DMAチャネルは
0, 1, 2, 3, 5, 6, 7のみが使用できます.
<quote><em>注:</em>
初期のIBM PCコンピュータでは, DMAチャネル0は操作の
リフレッシュのために予約されていますが,
最近のシステムでは通常, 周辺機器によって使用することができます.
</quote>
周辺機器がバスマスタリングを行っている時は,
システムバスを保持している間絶えずメモリにもしくはメモリから
データを転送することが重要です.もし, 周辺機器がこのように
できないときは, システムがメインメモリのリフレッシュを
行なえるようにしばしばバスを開放しなくてはなりません.
全てのPCでメインメモリとして使われるダイナミックRAMは,
中身が「満たされている」ビットを保持するため
頻繁にアクセスされなくてはなりません.
ダイナミックRAMは, それぞれが1ビットのデータを記憶するコンデンサが
たくさん集まって構成されています. これらのコンデンサは充電された
状態で"1", 充電されていない状態で"0"を表します.
全てのコンデンサは放電するため, "1"の値を保持するために,
一定の間隔で電力を加える必要があります.
実際にRAMチップはRAMの適切な場所に電力を送る作業を行ないますが,
メモリのリフレッシュ作業がRAMを普通にアクセスする時と
衝突しないように, それをいつ行なうかを
コンピュータが休止状態の時に知らせなくてはなりません.
もしコンピュータがメモリのリフレッシュを行なえない場合は,
メモリの中身はわずか数ミリ秒で壊れてしまいます。
メモリの読み込みと書き込みのサイクルはリフレッシュサイクルとして
カウントされる(ダイナミックRAMのリフレッシュサイクルは
実際には不完全なメモリ読み込みサイクルになります)ので,
周辺機器のコントローラが連続するメモリ番地からデータの読み込み
または書き込みを行う間は, メモリの全てがリフレッシュされます.
バスマスタリングはいくつかのSCSIホストインターフェースやその他の
ハイパフォーマンスな周辺機器コントローラに見られます.
<tag>自動初期化転送モード</tag>
このモードにおいてDMAはバイト, ブロック, デマンド転送を行いますが,
DMA転送カウンタが0になると, カウンタとアドレスはDMAチャネルが
もともとプログラムされた時のものに戻されます.
これは, 周辺機器が転送を要求している間は転送が続けられることを
意味します.
転送領域としてDMACにプログラムされた固定バッファの中で,
出力操作でDMACがデータを読み出す前もって新しいデータを
書き込んだり入力操作でDMACが書き込んだあとに,
そこから新しいデータを読み出す作業はCPUが受け持ちます.
このテクニックは, サンプリング用のバッファが小さいもしくは
それを持たないオーディオデバイスによく使われます.
この「環状」バッファの管理は更なるCPUオーバーヘッドになりますが,
DMAカウンタが0になり, 再プログラムされるまでDMAが停止してしまう
ことによって起きる遅延は, この方法でしかなくす事ができない
場合もあります.
</descrip>
<sect1><heading>DMAのプログラミング</heading>
<p>プログラムされるDMAチャネルは, 通常, 設定を行う前に
「マスクする」べきです.
これはハードウェアが予期せずDRQを有効にすると, たとえ全てのパラメータが
満たされてない場合や更新されていない場合でも, DMACは
それに応答してしまうからです.
マスクを行ってから,ホストは転送の方向(メモリからI/O,
もしくはI/Oからメモリ)と, 転送に使用するDMA操作のモード
(シングル, ブロック, デマンド, カスケードなど)を設定し, 最後に
アドレスや転送の長さを設定します.
設定される長さはDMACに転送させたい量よりも1少なくなります.
アドレスや転送長のLSBとMSBは同じ8ビットI/Oポートに書き込まれます.
そのためDMACが最初のバイトをLSBとして, 2番目のバイトをMSBとして
受け取ることを保証するために, 最初に別のポートに書き込みを行なって
LSBとMSBの判別を行なうフリップフロップをクリアしておく必要があります.
そして,DMAのページレジスタを更新します. これはDMACの外部にあり
I/Oポートの別のセットを通してアクセスされます.
すべての設定ができると, DMAチャネルはマスクを解除することができます.
そのDMAチャネルは「準備ができた」とみなされ, DRQが有効になると
応答します.
8237のプログラミングの正確な詳細については,
ハードウェアデータブックを参照してください.
PCシステムにおけるI/Oマップについても参照する必要があるでしょう.
このマップにはDMAおよびページレジスタのポートがどこに位置するのかを
書いてあります. 以下に完全な表を示します.
<sect1><heading>DMAポートのマップ</heading>
<p>IBM-PCとPC/ATに基づくすべてのシステムでは, 同じI/Oポートに配置された
DMAハードウェアを持っています. その完全なリストを以下に示します.
DMAコントローラ2に割り当てられたポートは, AT以外のデザインでは
未定義になっています.
<sect2><heading>0x00 - 0x1f DMA コントローラ &num;1 (Channels 0, 1, 2 and 3)</heading>
<p>DMA アドレス および カウントレジスタ
<verb>
0x00 write Channel 0 starting address
0x00 read Channel 0 current address
0x02 write Channel 0 starting word count
0x02 read Channel 0 remaining word count
0x04 write Channel 1 starting address
0x04 read Channel 1 current address
0x06 write Channel 1 starting word count
0x06 read Channel 1 remaining word count
0x08 write Channel 2 starting address
0x08 read Channel 2 current address
0x0a write Channel 2 starting word count
0x0a read Channel 2 remaining word count
0x0c write Channel 3 starting address
0x0c read Channel 3 current address
0x0e write Channel 3 starting word count
0x0e read Channel 3 remaining word count
</verb>
DMA コマンドレジスタ
<verb>
0x10 write Command Register
0x10 read Status Register
0x12 write Request Register
0x12 read -
0x14 write Single Mask Register Bit
0x14 read -
0x16 write Mode Register
0x16 read -
0x18 write Clear LSB/MSB Flip-Flop
0x18 read -
0x1a write Master Clear/Reset
0x1a read Temporary Register
0x1c write Clear Mask Register
0x1c read -
0x1e write Write All Mask Register Bits
0x1e read -
</verb>
<sect2><heading>0xc0 - 0xdf DMA コントローラ &num;2 (Channels 4, 5, 6 and 7)</heading>
<p>DMA アドレス および カウントレジスタ
<verb>
0xc0 write Channel 4 starting address
0xc0 read Channel 4 current address
0xc2 write Channel 4 starting word count
0xc2 read Channel 4 remaining word count
0xc4 write Channel 5 starting address
0xc4 read Channel 5 current address
0xc6 write Channel 5 starting word count
0xc6 read Channel 5 remaining word count
0xc8 write Channel 6 starting address
0xc8 read Channel 6 current address
0xca write Channel 6 starting word count
0xca read Channel 6 remaining word count
0xcc write Channel 7 starting address
0xcc read Channel 7 current address
0xce write Channel 7 starting word count
0xce read Channel 7 remaining word count
</verb>
DMA コマンドレジスタ
<verb>
0xd0 write Command Register
0xd0 read Status Register
0xd2 write Request Register
0xd2 read -
0xd4 write Single Mask Register Bit
0xd4 read -
0xd6 write Mode Register
0xd6 read -
0xd8 write Clear LSB/MSB Flip-Flop
0xd8 read -
0xda write Master Clear/Reset
0xda read Temporary Register
0xdc write Clear Mask Register
0xdc read -
0xde write Write All Mask Register Bits
0xde read -
</verb>
<sect2><heading>0x80 - 0x9f DMA ページレジスタ</heading>
<p><verb>
0x87 r/w DMA Channel 0
0x83 r/w DMA Channel 1
0x81 r/w DMA Channel 2
0x82 r/w DMA Channel 3
0x8b r/w DMA Channel 5
0x89 r/w DMA Channel 6
0x8a r/w DMA Channel 7
0x8f Refresh
</verb>

View file

@ -1,454 +0,0 @@
<!-- $Id: eresources.sgml,v 1.5 1997/02/22 13:00:56 peter Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.34 -->
<chapt>
<heading>インターネット上のリソース<label id="eresources"></heading>
<p><em>原作: &a.jkh;.</em>
<p><em>訳: &a.yuki;.<newline>28 August 1996</em>
<p>FreeBSDの進歩が急速であるため, 最新の開発をフォローするためには,
印刷したメディアは実用的でなくなっています.
大抵の場合, 最新情報を入手する方法としては, 電子的なリソースが
ベストです. FreeBSDはボランティアの努力によって,
ユーザコミュニティ自体が, 一種の「テクニカルサポート部門」としての
役割も通常果たしており, 電子メールやUsenetのニュースがこれらのコミュ
ニティにたどり着く最も効果的な方法になっています.
以下に, FreeBSD ユーザコミュニティに連絡を取る場合の最も重要な点についての
概略を示します. もしここに書かれていない他のリソースに気がついた場合は,
それらを &a.doc に送って頂ければ, それらをここに含めるかもしれません.
<sect>
<heading>メーリングリスト<label id="eresources:mail"></heading>
<p>多くのFreeBSDの開発メンバはUSENETを読むことができますが,
もし, comp.unix.bsd.freebsd.*のグループの一つに質問を投稿したとしても
タイムリにその質問を受け取るということは保証できません.
質問を適切なメーリングリストに投稿すれば, 私たちかFreeBSDの関係者から,
よりよい (そして少なくともより早い) 反応がいつでも得られることでしょう.
<P>さまざまなメーリングリストの憲章をこのドキュメントの最後に記載しま
す. <bf>私たちは, メーリングリストの質, 特に技術面に関する質を高く保つ
ために努力しているので, メーリングリストに参加する前にその憲章を読んで
ください. </bf>私たちのメーリングリストの参加者のほとんどは, 現在非常
にたくさんのFreeBSDに関連したメッセージを毎日受け取っており, メーリン
グリストに対するふさわしい用いられ方をするための憲章やルールを決めるこ
とによって, メーリングリストのS/N比を高くする保つように励んでいます.
そうしないと, 結果的に, メーリングリストがプロジェクトにとって
事実上のコミュニケーションの手段になってしまうでしょう.
メーリングリストはいずれもアーカイブされており, それらは
<url url="http://www.FreeBSD.ORG/search.html"
name="FreeBSD World Wide Web server"> で検索することができます.
キーワード検索可能なアーカイブの提供は,
良くある質問に対する回答を見つけるすぐれた方法ですから,
質問を投稿する前に調べてみるべきでしょう.
<sect1><heading>メーリングリストの概説<label id="eresources:summary"></heading>
<p><bf>一般的なメーリングリスト:</bf> 以下のものは誰でも自由に参加できる
一般的なものです:
<verb>
リスト 目的
----------------------------------------------------------------------
freebsd-announce 重要なイベントやプロジェクトのマイルストン
freebsd-bugs バグレポート
freebsd-chat FreeBSDコミュニティに関連する技術的ではない話題
freebsd-current FreeBSD-currentの使用に関連する議論
freebsd-stable FreeBSD-stableの使用に関連する議論
freebsd-isp FreeBSDを用いているインターネットサービスプロバイダの話題
freebsd-questions ユーザからの質問
</verb>
<bf>技術的なメーリングリスト:</bf> 以下のメーリングリストは, 技術的な
議論のためのものです. それらの利用や内容のためにしっかりとしたガイドラ
インがあるので, これらのメーリングリストに入ったり, どれか一つにメール
を送ったりする前には, それらのメーリングリストの憲章を注意深く読むべきで
す.
<verb>
リスト 目的
----------------------------------------------------------------------
freebsd-doc FreeBSDのドキュメンテーションプロジェクト
freebsd-emulation Linux/DOS/Windowsのような他のシステムのエミュレーション
freebsd-fs ファイルシステム
freebsd-hackers 一般的な技術の議論
freebsd-hardware FreeBSDの走るハードウェアの一般的な議論
freebsd-mobile モーバイルコンピューティングについての議論
freebsd-multimedia マルチメディアの議論
freebsd-platforms Intel以外のアーキテクチャのプラットフォームへの移植
freebsd-ports portsコレクションに関する議論
freebsd-security セキュリティに関する話題
freebsd-security-notifications
セキュリティに関する通知 (モデレーテッドメーリングリスト)
freebsd-scsi SCSIサブシステム
freebsd-smp 対称/非対称のマルチプロセッシングの設計に関する議論
</verb>
<bf>制限されているメーリングリスト:</bf> 以下のメーリングリストは参加
するには<url url="mailto:core@freebsd.org" name="core@FreeBSD.ORG">の
認可が必要ですが, それぞれの憲章の範囲内であれば, 提案やコメントは誰で
も自由に投稿することができます.
<verb>
メーリングリスト 目的
----------------------------------------------------------------------
freebsd-admin 管理に関する話題
freebsd-arch アーキテクチャや設計の議論
freebsd-core FreeBSDコアチーム
freebsd-hubs ミラーサイトを運営している人達 (基盤のサポート)
freebsd-install インストール関係の開発
freebsd-user-groups ユーザグループの調整
</verb>
<bf>CVSメーリングリスト:</bf> 以下のメーリングリストはソースツリーの
さまざまな場所の変更のログメッセージを見ることに興味のある人向けです.
これらは<bf>読み専用</bf>のリストで, これらにメールを送る事は出来ません.
<verb>
メーリングリスト ソースの範囲 (ソースの) 範囲の説明
----------------------------------------------------------------------
cvs-CVSROOT /usr/src/[A-Z]* /usr/src/ 以下のトップレベルのファイルの変更
cvs-all /usr/src ツリーのすべての変更 (スーパーセット)
cvs-bin /usr/src/bin システムバイナリ
cvs-etc /usr/src/etc システムファイル
cvs-games /usr/src/games ゲーム
cvs-gnu /usr/src/gnu GPLにしたがったユーティリティ
cvs-include /usr/src/include インクルードファイル
cvs-kerberosIV /usr/src/kerberosIV Kerberos暗号化コード
cvs-lib /usr/src/lib システムライブラリ
cvs-libexec /usr/src/libexec システムバイナリ
cvs-ports /usr/ports 移植済みソフトウェア
cvs-sbin /usr/src/sbin システムバイナリ
cvs-share /usr/src/share システム共有ファイル
cvs-sys /usr/src/sys カーネル
cvs-usrbin /usr/src/usr.bin ユーザバイナリ
cvs-usrsbin /usr/src/usr.sbin システムバイナリ
</verb>
<sect1><heading>参加方法<label id="eresources:subscribe"></heading>
<p>どのメーリングリストも<tt>FreeBSD.ORG</tt>にあるので,
メーリングリストにメールを送るには, ただ
<em>listname</em><tt>@FreeBSD.ORG</tt> にメールを送るだけです.
すると, メーリングリストに登録されている世界中のメンバに再配布されます.
メーリングリストに参加するには,
<tscreen><verb>
subscribe <listname> [<optional address>]
</verb></tscreen>
という内容をメッセージの本文に含むメールを &a.majordomo に送ります.
例えば, freebsd-announce に参加したい場合は次のようにします:
<tscreen><verb>
% mail majordomo@FreeBSD.ORG
subscribe freebsd-announce
^D
</verb></tscreen>
もし, あなたが, 自分自身を違う名前 (メールアドレス) で登録したい場合,
あるいは, ローカルなメーリングリスト (注意:もしあなたのサイトに,
興味を持った仲間がいるなら, これはより有効ですし,
私たちにとっても非常に嬉しいことです.)
を登録する申し込みをおこないたいのであれば, 次のようにします:
<tscreen><verb>
% mail majordomo@FreeBSD.ORG
subscribe freebsd-announce local-announce@somesite.com
^D
</verb></tscreen>
最後に, majordomoに対して
他のタイプのコントロールメッセージを送ることで
メーリングリストから脱退したり, メーリングリストの他のメンバのリストを
得たり, 再びメーリングリストのリストを見たりすることも可能です.
利用できるコマンドの完全なリストを入手するには, 次のようにします:
<tscreen><verb>
% mail majordomo@FreeBSD.ORG
help
^D
</verb></tscreen>
再度言いますが, 私たちは技術的なメーリングリストでは技術的な議論を保つよう
要求します. もし, 「高いレベル」にのみ興味があるなら, freebsd-announce
に参加するように勧めます. これは少ないトラフィックの予定です.
<sect1><heading>メーリングリストの憲章<label id="eresources:charters"></heading>
<p><bf>全て</bf>FreeBSDメーリングリストは誰でもそれらを利用することに
固守しなければいけないという一定の簡単なルールがあります. これらのルー
ルに従わないと, 結果としてFreeBSDの<url
url="mailto:postmaster@freebsd.org" name="Postmaster">から2回までは警
告を受けます. 3回違反すると, 投稿者は全てのFreeBSDのメーリングリストか
ら削除され, そのメーリングリストへのさらなる投稿から締め出されるでしょ
う. これらのルールや対策が必要なのは残念です. しかし,今日のインターネッ
トはずいぶんいやらしい環境になっており, 一般の人々は, その(対策の)メカ
ニズムがいかにもろいかという事すら認識する事が出来ていないと思われます.
<p>道標
<itemize>
<item>いかなる投稿記事もそのメーリングリストの基本的な憲章を守るべきで
す. 例えば, そのメーリングリストが技受的な問題に関するものであ
れば, 技術的な議論を含む投稿でなければなりません. 現在継続中の
不適切な憲章やフレイムは, 所属している全ての人に対してメーリングリスト
の価値を下げてしまうだけですし, 許される行為ではないでしょう.
とくに話題のない自由形式の議論に対しては<url
url="mailto:freebsd-chat@freebsd.org" name="freebsd-chat">メーリ
ングリストが自由に認可されているので, かわりに使うべきでしょう.</item>
<item>2つのメーリングリストに送るはっきりとした明確な必要性が存在する
時, 2つ以上のメーリングリストに投稿すべきではありません. どのリ
ストに対しても, (メーリングリストの)参加者は(複数のメーリングリ
ストに)重複して参加しており, 関連する部分が少ない(例えば,
"-stable と - scsi")メーリングリストを除いては, 一度に複数のメー
リングリストに投稿する理由は全くありません. もし, Ccに複数の
メーリングリストがそのような形で現れて, あなたに届いたのであれば,
再びそのメールに返事を出す前に, ccの部分もまた編集するべきです.
<em>元記事を書いたのが誰であっても, あなた自身のクロスポストに
<bf>まだ</bf>責任があります. </em>
<item>ユーザであれ開発者であれ, (議論の中で) 個人を攻撃したり冒涜した
りすることは許されません. 個人的なメールを引用したり再投稿したり
する許可をもらえなかったり, もらえそうにない時に, それをおこなう
ようなネチケット (訳注: ネットワークにおけるエチケット) に対する
ひどい違反は好まれませんが, してはならないと特別に定められている
わけではありません. <bf>しかしながら</bf>, そのような内容がメー
リングリストの憲章に沿う場合はほとんどありません。このため、メー
リングリストの憲章に違反しているということだけで警告(または禁止)
に値するものと考えていいでしょう。
<item>FreeBSD以外の関連する製品やサービスの広告は, 絶対に禁止し, spam
による違反者が宣伝していることが明確であったら, すぐに禁止しま
す. </item>
</itemize>
<p><bf>個々のメーリングリストの憲章:</bf>
<p>
<descrip>
<tag/FREEBSD-ADMIN/ <em>管理上の話題</em><newline>
このリストは, 純粋にfreebsd.org関係の議論のためのメーリングリストで,プ
ロジェクトの資源の問題や乱用の報告を行ないます. これはクローズドなリ
ストですが, 誰でも問題(私達のシステムを含みます!)を報告できます.
<tag/FREEBSD-ANNOUNCE/ <em>重要なイベント/マイルストン</em><newline>
これは, 単にたまに発表される重要なfreebsdのイベントに関心がある人のた
めのメーリングリストです. これは, スナップショットやその他のリリースに
ついてのアナウンスを含みます. そのアナウンスは新しいFreeBSDの機能のア
ナウンスを含んでいます. ボランティア等の呼びかけがあるかもしれませ
ん. これは流通量の少ないメーリングリストで, 完全なのモデレートメーリン
グリストです.
<tag/FREEBSD-ARCH/ <em>アーキテクチャと設計の議論</em><newline>
これは, FreeBSDの設計に関する議論をする人向けのメーリングリストです.
これは, クローズドなリストで, 一般的には参加できません.
<tag/FREEBSD-BUGS/ <em>バグレポート</em><newline>
これは, FreeBSDのバグレポートのためのメーリングリストです. 可能である
場合はいつでも, バグは ``send-pr(1)'' を使うか, <url
url="http://www.freebsd.org/send-pr.html" name="WEB interface">を用い
て送られる必要があります.
<tag/FREEBSD-CHAT/ <em>FreeBSDのコミュニティに関する
技術的ではない話題</em><newline>
このメーリングリストは技術的ではなく, 社会的な情報について,
他のメーリングリストでは取り扱わない話題を含みます.
これは, Jordanがシロイタチに似ているかどうか,
大文字で打つかどうか, 誰がたくさんコーヒーを飲むか,
どこのビールが一番うまいか, 誰が地下室でビールを作っているか,
などについての議論を含みます. 時々重要なイベント (将来開催されるパーティーや,
結婚式, 誕生日, 新しい仕事など) のお知らせが, 技術的なメーリングリストから
でてきます. しかし, フォローは直接 -chatメーリングリストにするべきです.
<tag/FREEBSD-CORE/ <em>FreeBSDコアチーム</em><newline>
これは, コアメンバが使う内部メーリングリストです. FreeBSDに関連する深
刻なやっかい事の裁定やハイレベルな綿密な調査を要求するときに, このメー
リングリストにメッセージを送る事が出来ます.
<tag/FREEBSD-CURRENT/ <em>FreeBSD-currentの使用に関する議論
</em><newline>これは freebsd-current のユーザのためのメーリングリストです.
メーリングリストでの話題は, -current で登場した新しい機能について,
その新機能によってユーザに影響することについての注意, および -current
のままでいるために必要な手順についての説明を含みます.
"current" を走らせている人はこのメーリングリストに登録しなくてはなりません.
これは技術的なメーリングリストなので, 完全に技術的な内容を要求します.
<tag/FREEBSD-CURRENT-DIGEST/ <em>FreeBSD-currentの使用に関する議論
</em><newline> freebsd-currentメーリングリストのダイジェスト版です. こ
のダイジェストはfreebsd-currentに送られたすべてのメッセージをまとめた
ものを, 1つのメールにして送り出します. 平均のサイズは約40kbyteです. こ
のメーリングリストは<bf>読み専用</bf>で, メールを送るような事はしない
で下さい.
<tag/FREEBSD-STABLE/ <em>FreeBSD-stableの使用に関する議論
</em><newline>これは freebsd-stable のユーザ用のメーリングリストです.
メーリングリストでの話題は, -stable で登場した新しい機能について, そ
の新機能によってユーザに影響することについての注意, および -stable
のままでいるために必要な手順についての説明を含みます.
"stable" を走らせている人はこのメーリングリストに登録すべきです.
これは技術的なメーリングリストなので, 完全に技術的な内容を要求します.
<tag/FREEBSD-DOC/ <em>ドキュメンテーションプロジェクト</em><newline>
このメーリングリストはFreeBSD Doc Projectに属し,
ドキュメンテーションに関連する問題やプロジェクトの議論のためのものです.
<tag/FREEBSD-FS/ <em>ファイルシステム</em><newline>
FreeBSDのファイルシステムに関する議論
これは技術的なメーリングリストなので, 完全に技術的な内容を要求します.
<tag/FREEBSD-HACKERS/ <em>技術的な議論</em><newline>
これはFreeBSDに関する技術的な議論のためのフォーラムです.
これは最もテクニカルなメーリングリストです.
このメーリングリストは, FreeBSD 上でアクティブに活動をしている人のためのもので,
問題を持ち出したり, 代わりの解決法を議論します.
技術的な議論をフォローするのに興味がある人も歓迎します.
これは技術的なメーリングリストなので, 完全に技術的な内容を要求します.
<tag/FREEBSD-HACKERS-DIGEST/ <em>技術的な議論</em><newline>
freebsd-hackersメーリングリストのダイジェスト版です. このダイジェスト
はfreebsd-hackersに送られたすべてのメッセージをまとめたものを, 1つのメー
ルにして送り出します. 平均のサイズは約40kbyteです. このメーリングリス
トは<bf>読み専用</bf>で, メールを送るような事はしないで下さい.
<tag/FREEBSD-HARDWARE/ <em>FreeBSDのハードウェアの一般的な議論
</em><newline> FreeBSDが走っているハードウェアのタイプや,
何を買ったり避けたりするかに関する様々な問題や, 提案に関する議論.
<tag/FREEBSD-INSTALL/ <em>インストールに関する議論</em><newline>
このメーリングリストは将来のリリースのインストールに関する開発の
議論のためのもので, クローズドなメーリングリストです.
<tag/FREEBSD-ISP/ <em>インターネットサービスプロバイダのについての話題
</em><newline>このメーリングリストは, FreeBSDを用いたインターネット
サービスプロバイダ (ISP) に関する話題の議論のためのものです.
これは技術的なメーリングリストなので, 完全に技術的な内容を要求します.
<tag/FREEBSD-MULTIMEDIA/ <em>マルチメディアについての議論</em><newline>
このメーリングリストはFreeBSD上を用いたマルチメディアアプリケーションについてのフォーラムです.
マルチメディアアプリケーションをとりまく議論の中心は, それらのインストール,
開発, そしてFreeBSDにおけるサポートについてです.
これは技術的なメーリングリストなので, 完全に技術的な内容を要求します.
<tag/FREEBSD-PLATFORMS/ <em>Intel以外のプラットフォームへの移植
</em><newline>クロスプラットフォームのFreeBSDの問題.
Intel以外のプラットフォームへのFreeBSDの移植についての一般的な議論や提案.
これは技術的なメーリングリストなので, 完全に技術的な内容を要求します.
<tag/FREEBSD-PORTS/ <em>``ports'' の議論</em><newline>
FreeBSD の ``ports コレクション'' (/usr/ports) や, 移植の提案,
ports コレクションの基盤の変更, 一般的な整合化活動についての議論.
これは技術的なメーリングリストなので, 完全に技術的な内容を要求します.
<tag/FREEBSD-QUESTIONS/ <em>ユーザからの質問</em><newline>
FreeBSDに関する質問のためののメーリングリストです.
その質問がかなり技術的だと思わないのであれば,
「どのようにして」という質問を技術的なメーリングリストに送るべきではありません.
<tag/FREEBSD-QUESTIONS-DIGEST/ <em>ユーザからの質問</em><newline>
freebsd-questionsメーリングリストのダイジェスト版です.
このダイジェストはfreebsd-questionsに送られたすべてのメッセージをまとめたものを,
1つのメールにして送り出します. 平均のサイズは約40kbyteです.
<tag/FREEBSD-SCSI/ <em>SCSIサブシステム</em><newline>
これはFreeBSDのためのscsiサブシステムについて作業している人向けです.
これは技術的なメーリングリストなので, 完全に技術的な内容を要求します.
<tag/FREEBSD-SECURITY/ <em>セキュリティの関連の話題</em><newline>
FreeBSDコンピュータのセキュリティの話題 (DES, Kerberos, よく知られている
セキュリティホールや, それらのふさぎ方など)
これは技術的なメーリングリストなので, 完全に技術的な内容を要求します.
<tag/FREEBSD-SECURITY-NOTIFICATIONS/ <em>セキュリティ関連の通知</em><newline>
FreeBSD のセキュリティ問題や, 修正に関する通知を行ないます.
このメーリングリストは議論を行なうためのメーリングリストではありません.
議論は FreeBSD-security で行ないます.
<tag/FREEBSD-USER-GROUPS/ <em>ユーザグループの調整のメーリングリスト</em><newline>
これは, ローカルなユーザグループがお互いに, または,
コアチームが指定した個人と問題を議論する,
それぞれのローカルエリアのユーザグループからの調整人向けの
メーリングリストです.
このメーリングリストはユーザグループ間の
ミーティングの概要やプロジェクトの調整に制限されるべきです.
これはクローズドなメーリングリストです.
</descrip>
<sect>
<heading>Usenet ニュースグループ<label id="eresources:news"></heading>
<p>2つのFreeBSD用のニュースグループがあります. ここでは
FreeBSDの議論をするたくさんの様々な人がおり,
他にもFreeBSD関連するユーザがいます.
これらのいくつかのニュースグループは Warren Toomey
<tt>&lt;wkt@cs.adfa.oz.au&gt;</tt> によって <url
url="http://minnie.cs.adfa.oz.au/BSD-info/bsdnews&lowbar;search.html"
name="Keyword searchable archives"> で,
検索できるようになっています.
<sect1>
<heading>BSD用のニュースグループ</heading>
<p><itemize>
<item><url url="news:comp.unix.bsd.freebsd.announce"
name="comp.unix.bsd.freebsd.announce"></item>
<item><url url="news:comp.unix.bsd.freebsd.misc"
name="comp.unix.bsd.freebsd.misc"></item>
</itemize>
<sect1>
<heading>関連する他のUnixのニュースグループ</heading>
<p><itemize>
<item><url url="news:comp.unix" name="comp.unix"></item>
<item><url url="news:comp.unix.questions" name="comp.unix.questions"></item>
<item><url url="news:comp.unix.admin" name="comp.unix.admin"></item>
<item><url url="news:comp.unix.programmer" name="comp.unix.programmer"></item>
<item><url url="news:comp.unix.shell" name="comp.unix.shell"></item>
<item><url url="news:comp.unix.user-friendly" name="comp.unix.user-friendly"></item>
<item><url url="news:comp.security.unix" name="comp.security.unix"></item>
<item><url url="news:comp.sources.unix" name="comp.sources.unix"></item>
<item><url url="news:comp.unix.advocacy" name="comp.unix.advocacy"></item>
<item><url url="news:comp.unix.misc" name="comp.unix.misc"></item>
<item><url url="news:comp.os.386bsd.announc" name="comp.os.386bsd.announc"></item>
<item><url url="news:comp.os.386bsd.app" name="comp.os.386bsd.app"></item>
<item><url url="news:comp.os.386bsd.bugs" name="comp.os.386bsd.bugs"></item>
<item><url url="news:comp.os.386bsd.development" name="comp.os.386bsd.development"></item>
<item><url url="news:comp.os.386bsd.misc" name="comp.os.386bsd.misc"></item>
<item><url url="news:comp.os.386bsd.questions" name="comp.os.386bsd.questions"></item>
<item><url url="news:comp.bugs.4bsd" name="comp.bugs.4bsd"></item>
<item><url url="news:comp.bugs.4bsd.ucb-fixes" name="comp.bugs.4bsd.ucb-fixes"></item>
<item><url url="news:comp.unix.bsd" name="comp.unix.bsd"></item>
</itemize>
<sect1>
<heading>X Window システム</heading>
<p><itemize>
<item><url url="news:comp.windows.x.i386unix" name="comp.windows.x.i386unix"></item>
<item><url url="news:comp.windows.x" name="comp.windows.x"></item>
<item><url url="news:comp.windows.x.apps" name="comp.windows.x.apps"></item>
<item><url url="news:comp.windows.x.announce" name="comp.windows.x.announce"></item>
<item><url url="news:comp.windows.x.intrinsics" name="comp.windows.x.intrinsics"></item>
<item><url url="news:comp.windows.x.motif" name="comp.windows.x.motif"></item>
<item><url url="news:comp.windows.x.pex" name="comp.windows.x.pex"></item>
<item><url url="news:comp.emulators.ms-windows.wine" name="comp.emulators.ms-windows.wine"></item>
</itemize>
<sect>
<heading>World Wide Web サイト<label id="eresources:web"></heading>
<p><itemize>
<item><url url="http://www.FreeBSD.ORG/"> <bf>- 本家のサーバ</bf>.</item>
<item><url url="http://www.au.freebsd.org/FreeBSD/"> <bf>- オーストラリア</bf>.</item>
<item><url url="http://www.br.freebsd.org/"> <bf>- ブラジル</bf>.</item>
<item><url url="http://www.ca.freebsd.org/"> <bf>- カナダ</bf>.</item>
<item><url url="http://sunsite.mff.cuni.cz/www.freebsd.org/"><bf>- チェコ</bf>.</item>
<item><url url="http://sunsite.auc.dk/www.freebsd.org/"> <bf>- デンマーク</bf>.</item>
<item><url url="http://www.ee.freebsd.org/"> <bf>- エストニア</bf>.</item>
<item><url url="http://www.fi.freebsd.org/"> <bf>- フィンランド</bf>.</item>
<item><url url="http://www.de.freebsd.org/"> <bf>- ドイツ</bf>.</item>
<item><url url="http://www.ie.freebsd.org/"> <bf>- アイルランド</bf>.</item>
<item><url url="http://www.jp.freebsd.org/"> <bf>- 日本</bf>.</item>
<item><url url="http://www.kr.freebsd.org/"> <bf>- 韓国</bf>.</item>
<item><url url="http://www.nl.freebsd.org/"> <bf>- ニュージーランド</bf>.</item>
<item><url url="http://www.pt.freebsd.org/"> <bf>- ポルトガル</bf>.</item>
<item><url url="http://www.se.freebsd.org/www.freebsd.org/"> <bf>- スウェーデン</bf>.</item>
<item><url url="http://www.tw.freebsd.org/freebsd.html"> <bf>- 台湾</bf>.</item>
</itemize>
</sect>

View file

@ -1,418 +0,0 @@
<!-- $Id: esdi.sgml,v 1.4 1997/02/22 13:00:58 peter Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.10 -->
<!--
<title>ESDIハードディスクの紹介と FreeBSDでの利用</title>
<author>(c) 1995, Wilko Bulte, <tt/wilko@yedi.iaf.nl/
<date>Tue Sep 12 20:48:44 MET DST 1995</date>
Copyright 1995, Wilko C. Bulte, Arnhem, The Netherlands
<abstract>
この文書で解説するのは, ESDIハードディスクを FreeBSDオペレーティングシ
ステムとの組み合わせで利用することについてです. 一般的に信じられている
こととは違い, ESDIハードディスクを FreeBSDで利用することは可能です. 実
際, ESDIを利用したシステムをうまく使っている人たちが存在します! この
文書をとおして, ESDIハードディスクをいかに使うのかを紹介していきたいと
思います.
この文書のなかで, もし欠落しているものや単純な間違い, あるいは文書をよ
りよいものにするための有効なご意見がございましたら, ぜひ
<tt/wilko@yedi.iaf.nl/ までメールにてお知らせください.
</abstract>
-->
<sect1><heading>ESDIハードディスクの使い方<label id="esdi"></heading>
<p><em>原作および Copyright &copy; 1995, &a.wilko;.<newline>24 September 1995.</em>
<p><em>訳: &a.ts;<newline>2 September 1996.</em>
ESDIとは Enhanced Small Device Interfaceの略語です. この技術は, 馴染み
深い ST506や ST412といったインタフェースに基づくものであり, 世界初の普
及型 5.25インチのウィンチェスタディスクを造ったSeagate Technology社に
よって最初に作られました.
ESDIの Eは拡張 (Enhanced) を表しており, 実際そのとおりです. まず, イン
タフェースの速度は速く, 10 ないし 15Mビット/秒であり, ST412インタフェー
スに接続したドライブの 5Mビット/秒よりも高速です. また, 上位レベルのコ
マンドがいくつか追加されて, オペレーティングシステムレベルのドライバ作
成者にとって, ESDIインタフェースはある程度インテリジェントなものとなり
ました. ただし SCSIほどにインテリジェントではありません. ESDIは ANSIが
標準化をおこなっています.
トラックごとのセクタ数を増やすことで, ESDIドライブの記憶容量は引き上げ
られました. 通常, トラックあたり 35セクタですが, 今までに筆者がみたド
ライブの中で大容量のものは, トラックあたり 54セクタもありました.
ESDIは IDEや SCSIといったインタフェースの普及によって消えつつあります
が, 無料あるいは在庫処分の格安なドライブが入手可能であることを考えると,
少ない (もしくは現状の) 予算で縛られたシステムにとって, ESDIドライブは
理想的です.
<sect2><heading>ESDIのコンセプト</heading>
<p>
<sect3><heading>物理的な接続</heading>
<p>
ESDIインタフェースでは, ドライブごとに2つのケーブルを接続します. 第 1
のケーブルは34ピンのフラットケーブルエッジコネクタで, コントローラとド
ライブ間のコマンドおよびステータスの両信号のやりとりのためのものです.
コマンド用ケーブルは, すべての ESDIドライブをデイジーチェーンで結び
ますから, すべてのドライブを接続したバスを構成することになります.
第2のケーブルは20ピンのフラットケーブルエッジコネクタで, ドライブへの
データ入出力に使います. このケーブルは放射状に接続しますから, ドライブ
ごとにコントローラへの専用接続を持つことになるわけです.
筆者の経験によれば, PC向け ESDIコントローラには, コントローラあたり最
大 2 台までのデバイス接続が可能という制限がありました. これは, ドライ
ブのアドレス割り当てのために, 単一ビットだけを用意したという WD1003か
ら持ち越された互換 (?) 機能なのだと思われます.
<sect3><heading>デバイスのアドレス指定</heading>
<p>
1本のコマンドケーブルには最大で 7つのデバイスと 1つのコントローラを接
続することができます. どのドライブをコントローラがアドレスしているのか
を個別に認識できるようにするために, ESDIデバイスは, デバイスアドレスを
設定するためのジャンパかスイッチを備えています.
PC向けコントローラでは, 最初のドライブにはアドレス0を設定し, 第2番目の
ディスクへはアドレス1を設定します. <it>いつも留意すべきことは, </it>
ディスクごとに固有のアドレスを必ず設定するということです! つまり, コン
トローラあたり最大2台のドライブというような PC向けのものでは, 第1 ドラ
イブは第0番ドライブで, 第2ドライブは第1番ドライブだということです.
<sect3><heading>ターミネート処理 (termination)</heading>
<p>
デイジーチェーン接続用コマンドケーブル (34ピンのケーブルであることを覚
えていますか? ) では, 最後のチェーン接続ドライブでターミネートしなけれ
ばなりません. このために, ESDIドライブにはターミネート用抵抗ネットワー
クが付属しており, ターミネートする必要がないときにはその抵抗をドライブ
から外したり, またはジャンパで無効 (disable) にすることができるようになっ
ています.
したがって, ひとつのドライブ, すなわちコマンドケーブルの最終端に位置す
るドライブだけが, そのターミネート用抵抗を有効 (installまたは enable)
にすることができます. コントローラは自動的にコマンドケーブルのもう一方
の端のターミネート用抵抗を有効にします. ご注意いただきたいのは, コント
ローラは必ずコマンドケーブルのいずれかの端に位置しなければならず, けっ
して途中に位置するようにしては <it>いけない</it> ということです.
<sect2><heading>ESDIディスクの FreeBSDでの使い方</heading>
<p>
ESDIを初めて動かすようにすることが, どうしてこうも大変なことなのでしょ
うか ?
ESDIディスクを FreeBSDで動かそうと試みた人たちが激烈なイライラを募らせ
たことは知られています. 今までまったく ESDIを知らない場合には, 複数の
要因の組み合わせが悪く働いて, ESDIへの理解を妨げることになるかもしれま
せん.
このことは, ESDIと FreeBSDの組み合わせは選んではいけないという俗説も生
み出しました. 以下の節において, 落し穴のすべてとその解決策を
述べてみようと思います.
<sect3><heading>ESDI速度の違い</heading>
<p>
すでに簡単に紹介したように, ESDIは2種類の速度を持っています. 旧式のド
ライブとコントローラは 10Mビット/秒のデータ転送速度ですが, 新しいもの
では 15Mビット/秒が利用できます.
仮に 10Mビット/秒のコントローラへ 15Mビット/秒のドライブを接続したよ
うな場合に問題が生じることを予想することは簡単です. したがって必ず, コ
ントローラ <it>および</it> ドライブのマニュアルを参照して, それぞれの
転送速度が一致しているかどうかを調べるようにしてください.
<sect3><heading>トラックについて</heading>
<p>
主流の ESDIドライブは, トラックあたり34ないし36個のセクタを持ちます.
しかし大部分の (古い) コントローラは36個以上のセクタを扱うことができま
せん.
新しい大容量のドライブでは, トラックごとにさらに多くの数のセクタを持つ
ことができます. たとえば筆者の 670MBのドライブは, トラックあたり 54セ
クタも持たせることができます.
筆者のコントローラは54セクタ数をサポートしていませんでしたが, トラック
あたり35セクタという設定で, 問題なく動作しました. しかし, これが意味す
るのは大量のディスク容量を失うということです.
もう一度, 詳しい情報についてハードウェアのドキュメントを調べてください.
この例のような仕様からはずれた設定をしたときには, うまく動くかもしれま
せんが, 動かないこともあります. そのようなときには, 別のより多くの機能
をもつコントローラで試してみるようにしてください.
<sect3><heading>ハードセクタとソフトセクタ</heading>
<p>
多くの ESDIドライブでは, ハードセクタまたはソフトセクタによる処理を,
ジャンパ設定で指定することができます. ハードセクタとは, 新しいセクタの
開始位置において, ESDIドライブにセクタパルス (sector pulse) を発生させ
ることです. コントローラはこのパルスを利用して, 書き込みや読み取りのタ
イミングを指示します.
ハードセクタではセクタのサイズを選ぶことができます (通常はフォーマット
後セクタあたり256, 512, および1024バイト). FreeBSDは512バイトのセクタ
サイズを使います. トラックあたりのセクタ数は, 同じように選択に幅があり
ますが, フォーマット後のセクタのバイト数はすべて同じです. セクタごとの
<em>未フォーマット</em> のバイト数は, コントローラがどの程度の調整用の
バイト数を必要とするかによって異なります. トラックあたりのセクタ数を多
くすれば記憶容量は増えますが, もしドライブから与えられるバイト数よりも
多くのものをコントローラが必要とするのであれば, 問題を生じることがあり
ます.
ソフトセクタでは, コントローラ自身が読み書きの始まりと終りの位置を決め
ます. なお, ESDI (筆者が知り得たものすべて) では, ハードセクタがデフォ
ルトのようです. ソフトセクタを試みる必要性は感じたことがありません.
通常, FreeBSDをインストールする以前に, まずセクタ処理の設定を試される
ことをおすすめします. というのも, セクタ処理の設定を変えるたびに, 物理
フォーマット (low-level format) をしなければならないからです.
<sect3><heading>物理フォーマット処理</heading>
<p>
ESDIドライブは, 使い始める前に, 物理フォーマットをおこなう必要があります.
もしトラックあたりのセクタ数を変えたり, ドライブの物理的な設置方法 (水
平や垂直方向) を変えたときには, ふたたびフォーマットする必要があります
から, よく検討した後でフォーマットしてください. フォーマット処理の所要
時間を短く予想してはいけません. 大容量のディスクでは数時間を要します.
物理フォーマットが終わったならば, サーフィススキャン (surface scan) を
おこない, バッドセクタの検出とフラグの処理をします. ほとんどのディスクには,
メーカが作成したバッドブロックリストを記録した用紙またはステッカーが付
いています. さらに, ほとんどのディスク内にもバッドブロックリストが記録
されています. メーカが作成したリストを利用するようにしてください. この
時点で不良部分をマップし直す方が, FreeBSDのインストール後におこなうよりも,
はるかに簡単です.
物理フォーマットプログラムのなかでも, トラックの中にひとつでもバッドセ
クタがあれば, 同じトラック内の残りのすべてのセクタを不良とするようなプ
ログラムがありますから, そのようなものは利用しないようにしてください.
ディスクスペースの浪費だけでなく, より重大な bad144と関連した悲劇の原
因にもなるからです (bad144の節を参照のこと).
<sect3><heading>トランスレーション</heading>
<p>
トランスレーションが, ESDIだけに限定された問題ではないにもかかわらず,
重大な困難になることがあります. トランスレーションにはいくつかの側面が
あります. 多くに共通なものは, IBM PC/ATのオリジナルの設計に起因するディ
スクジオメトリに関する制限を, うまく回避するような調整を試みるものです
(IBM に感謝 ! ).
まずはじめに, 1024シリンダに関する (悪) 名高い制限があります. すなわ
ち, ブート可能なシステムについて, システム関連ファイルは (オペレーティ
ングシステムがどのようなものであっても) , ディスクの先頭部分の 1024シ
リンダ内になければいけない, という制限です. シリンダ番号を表すためには
10ビットしか与えられていません. セクタの総数については, 上限は 64 (0か
ら 63) です. この1024シリンダの制限を, 16ヘッドの制限 (これも ATの仕様
による) と組み合わせると, かなり限定されたディスク容量しか利用できませ
ん.
この難点を解消するために, PC 向け ESDIコントローラのメーカは, 自社のコ
ントローラボードへ BIOS PROM拡張を施しました. この BIOS拡張の内容は,
ブート時のディスクI/Oを (OSによっては <it>すべて</it> のディスクI/Oも)
, トランスレーションを用いておこなうというものです. すなわち, 大容量のディ
スクを, あたかも32ヘッドかつトラックあたり64セクタであるようなデバイス
として OSへ知らせるのです. この結果, 総シリンダー数は 1024よりも少なく
なりますから, 上記の難点などなかったものとして大容量ディスクを使うこと
ができるようになります. なお, 注目いただきたいことは, FreeBSDカーネル
の起動以降, FreeBSDはこの BIOS拡張機能を使わないということです. 詳しく
は後ほどご説明いたします.
トランスレーションの第2の存在理由は, 多くの旧いシステムBIOSが, トラッ
クあたり17セクタのドライブだけしか扱えない (ST412という古い仕様) から,
というものです. 比較的新しい BIOSは通常, 自由な値を設定できるドライブ
タイプ (多くの場合ドライブタイプ47) を持っています.
<em>この文書を読み終えられた後で, どのようにトランスレーションを利用す
るにせよ, ぜひご留意いただきたいことがあります. もし複数の OSをひとつ
のディスクにインストールするときには, 必ず同じトランスレーションを使わ
なければなりません. </em>
トランスレーションに関して, 筆者が使用したコントローラは, ひとつのドラ
イブを複数のパーティションに論理的に分けることができる機能を BIOSのオ
プションとして持っていました (このような製品はいくつかあると思われる).
しかし, ひとつのドライブにはひとつのパーティションに限定しました. なぜ
なら, このコントローラはパーティション情報をディスクへ書き出すからです.
つまり, 電源を入れると, コントローラはこの情報を読み取り, OSに対してディ
スクから読みとった情報に基づくデバイスとして知らせるからです.
<sect3><heading>代替セクタ処理</heading>
<p>
多くの ESDIコントローラはバッドセクタを取り替える機能を備えています.
ディスクの物理フォーマット処理の途中もしくは終了時に, バッドセクタであ
ることを記録して, 代わりのセクタを壊れたセクタの位置へ (論理的に) 置き
ます.
通常この置き換え処理は, トラック内のN-1個のセクタを実際のデータ記録に
使い, 第N番目のセクタだけを代替セクタとすることで実現します. ここでNと
いう値はトラック内の物理的セクタの総数です. このアイデアが生まれた背景
は, オペレーティングシステムが壊れたセクタを持たない「完全」なディスク
を想定している, というものです. しかし FreeBSDではこのアイデアを使うこ
とはできません.
理由は, <it>使用不可 (bad)</it> から <it>使用可能</it> への変換をおこなう
のが ESDIコントローラ上の BIOSだからなのです. FreeBSDは, 真の 32ビット
のオペレーティングシステムであるために, ブート後には BIOSを使いません.
代わりに FreeBSDが使うのは, ハードウェアと直接「対話」するデバイスドラ
イバというものです.
<em>結論: 代替セクタ処理やバッドブロックマッピングなど, コントローラ・
メーカがなんと呼ぶかは判りませんが, それらに似た機能を FreeBSDのディス
クへは使わないでください. </em>
<sect3><heading>バッドブロックの取り扱い</heading>
<p>
前節から残された問題があります. すなわち, コントローラによるバッドブロッ
ク処理は利用できない状況であるにもかかわらず, FreeBSDのファイルシステ
ムが想定しているのはあくまで完全無欠なディスクである, という問題で
す. これを解消するために, FreeBSDは <it>bad144</it> というツールを採用
しています. この bad144 (この名前は DEC社の標準となったバッドブロック
処理に由来している) は, FreeBSDのスライスごとにバッドブロックを調べま
す. バッドブロックを見つけ出すと, bad144は傷ついたブロック番号によるテー
ブルを FreeBSDスライスの末尾へ書き込みます.
ディスクが動作し始めると, ディスクから読みとられたテーブルを基に, ディ
スクアクセスを調べます. この bad144リストに記録されたブロック番号への
要求が起こると, 代わりのブロック (同じく FreeBSDスライスの末尾に位置す
る) を使います. このように, bad144による置換手続きによって「完全」なディ
スクを FreeBSDファイルシステムへ提供しているのです.
Bad144の使用により陥るかもしれない落し穴があります. まず, ひとつのス
ライスには126個以上のバッドセクタを持てません. もしドライブに126個以上
のバッドセクタがあったときには, 複数の FreeBSDのスライスに分けて, 各ス
ライスのバッドセクタが126個以下となるようにする必要があります. くれぐ
れも, ひとつのトラック内にたったひとつの欠陥セクタが見つかっただけで,
そのトラック内セクタ <em>すべて</em> を傷ついたものとして記録するよう
な物理フォーマットプログラムを使わないようにしてください. 簡単にお解り
いただけると思いますが, このような物理フォーマットをおこなえば, 126個の制
限は短時間で達成してしまいます.
次に, もしスライスが rootファイルシステムを含んでいるときには, 1024シ
リンダ以内という BIOSの制限を守っていなければなりません. ブート処理の
ときですから, bad144リストは BIOSを使って読み取りますので, このリスト
が1024シリンダ限界以内に位置していなければ読みとれません. <em>注意
</em> いただきたいのは, この制限は root <em>ファイルシステム</em> だけ
が1024シリンダ限界以内にあれば十分ということではなく, rootシステムを含
んだ <em>スライス</em> 全体が1024シリンダ限界以内におさまっている必要
があります.
<sect3><heading>カーネルのコンフィグレーション</heading>
<p>
ESDIディスクを扱うドライバは, IDEや ST412 MFMディスクなどと同じ
<it>wd</it> ドライバです. この <it>wd</it> ドライバは, すべての WD1003
互換インタフェースにも利用できるはずです.
大部分のハードウェアは, ジャンパの設定によって, ふたつの I/Oアドレス範
囲と IRQ値のうちから, それぞれひとつを選ぶことができます. したがって,
wdタイプのふたつのコントローラをひとつのシステムで使うことができます.
もし設定しようとしているハードウェアが標準以外の割り当てをサポートして
いれば, 適切な設定情報をカーネルのコンフィグレーションファイルに記述す
ることで, この非標準割り当てを利用できます. 次にカーネルのコンフィグレー
ションファイルの例を示します (このファイルがあるディレクトリは
<tt>/sys/i386/conf</tt> である).
<tscreen><verb>
# First WD compatible controller
controller wdc0 at isa? port "IO_WD1" bio irq 14 vector wdintr
disk wd0 at wdc0 drive 0
disk wd1 at wdc0 drive 1
# Second WD compatible controller
controller wdc1 at isa? port "IO_WD2" bio irq 15 vector wdintr
disk wd2 at wdc1 drive 0
disk wd3 at wdc1 drive 1
</verb></tscreen>
<!--
<sect3><heading>Tuning your ESDI kernel setup</heading>
<p>
-->
<sect2><heading>ESDIハードウェアの例</heading>
<p>
<sect3><heading>Adaptec 2320コントローラ</heading>
<p>
筆者は, ACB-2320でコントロールされた ESDIディスクへ, FreeBSDをインストー
ルすることができました. なお, このディスクには他のオペレーティングシス
テムをインストールしていません.
インストールするために, まず, NEFMT.EXE (<it>www.adaptec.com</it> から
<it>ftp</it>可能) でディスクを物理フォーマットし, かつトラックを代替セ
クタとともにフォーマットするかどうかの設問に NOと答えました. また
ACB-2320の BIOSは使わないように設定しました. そしてシステム BIOSがブー
トできるように, システム BIOSの「自由に設定可能」オプションを使いまし
た.
実は, NEFMT.EXEを使う以前に, まず ACB-2320 の BIOSに組み込まれているフォー
マットプログラムでディスクをフォーマットしてみましたが, 使えないことが
判りました. なぜなら, 代替セクタの処理をおこなわないようにするオプションが
用意されていないからです. 代替セクタ処理をおこなうようにすると, FreeBSDの
インストール作業は bad144の実行の段階で失敗しました.
もし ACB-232xyをお持ちであれば, そのバージョン番号に注意してください.
文字 xには0か2が入りまして, ボード上にフロッピーコントローラがあるかど
うかを見分けることができます.
文字 yはさらに興味深いもので, ブランクか, A-8か, または Dのいずれかで
す. ブランクは, 単純な10Mビット/秒のコントローラであることを表します.
A-8は, 15Mビット/秒のコントローラで, かつ 52セクタ/トラックをサポート
しているものであることを表します. Dは, 15Mビット/秒のコントローラで,
かつ 36セクタ/トラック以上 (52セクタも可能か?) のドライブをサポートし
ているものであることを表します.
このコントローラのすべてのバージョンはインターリーブ比 1:1に対応してい
るはずです. FreeBSDは充分高速なので, ぜひ 1:1と指定してください.
<sect3><heading>Western Digital WD1007コントローラ</heading>
<p>
筆者は, WD1007でコントロールされた ESDIディスクへ, FreeBSDをインストー
ルすることができました. 正確には WD1007-WA2というコントローラでした.
これ以外の複数のバージョンも WD1007にあります.
利用できるようにするために, セクタトランスレーションとWD1007の BIOSと
を使わないように設定しました. この設定の意味は, BIOSに組み込まれた物理
フォーマットプログラムを使えないようにしたということです. 代わりに,
<it>www.wdc.com</it>から WDFMT.EXEを入手して, ディスクをフォーマットし
ました. 以後, 順調に動いています.
<sect3><heading>Ultrastor U14Fコントローラ</heading>
<p>
ネットに流れたいくつかの報告によれば, Ultrastorの ESDIボードも FreeBSD
で動作するようです. 実際の設定についての詳しい情報はありません.
<!--
<sect2><heading>Tracking down problems</heading>
<p>
-->
<sect2><heading>追加資料<label id="esdi:further-reading"></>
<p>
本格的に ESDIのプログラミングを計画している方は, 次の公式規格仕様書を
入手なさることをおすすめします.
最新の ANSI X3T10 委員会の文書は次のものです:
<itemize>
<item>Enhanced Small Device Interface (ESDI) &lsqb;X3.170-1990/X3.170a-1991&rsqb;
&lsqb;X3T10/792D Rev 11&rsqb;
</itemize>
USENETのニュースグループ <htmlurl url="news:comp.periphs"
name="comp.periphs"> は, 詳しい情報を得ることができる注目すべきもので
す.
World Wide Web (WWW) もまた便利な情報源です. Adaptec社の ESDIコントロー
ラについては <htmlurl url="http://www.adaptec.com/">を参照ください.
Western Digital社のコントローラについては <htmlurl
url="http://www.wdc.com/"> を参照ください.
<sect2>感謝
<p>
Andrew Gordon氏より, テスト用の Adaptec 2320コントローラと ESDIディス
クを送っていただきました.

View file

@ -1,579 +0,0 @@
<!-- $Id: firewalls.sgml,v 1.5 1997/02/22 13:00:59 peter Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.17 -->
<sect><heading> ファイアウォール <label id="firewalls"></heading>
<p><em>原作: &a.gpalmer;, &a.alex;.</em>
<p><em>訳: &a.saeki;.<newline>
11 November 1996.</em>
ファイアウォールは, インターネットに参加している人はもちろんのこと,
プライベートネットワークのセキュリティ向上のためのアプリケーションを
探している人にとっても, ますます興味深くなりつつある分野です.
このセクションではファイアウォールとは何か, ファイアウォールの使用法,
そしてファイアウォールを構築するために FreeBSD のカーネルで
提供されているファシリティ (機能) の使用法について説明したいと思います.
<quote><bf> 注: </bf> 社内のネットワークと「巨大かつ信頼のおけない
インターネット」との間にファイアウォールを構築することで
セキュリティ上のすべての問題が解決できると考える人がいます.
ファイアウォールはセキュリティ上の問題を解決する助けになる場合もありますが,
充分な設定がなされていないファイアウォールは, まったくファイアウォールを
持たない場合よりもセキュリティ上の危険を増大させてしまいます.
<!-- (訳注: 増大させてしまう可能性がある程度だと思いますが、十分に理解した
上でファイアウォールを構築することが非常に重要です). -->
ファイアウォールにできることは, あなたのシステムにもう一つのセキュリティ層を
追加することだけで, 本気でアタックをしかけてくるクラッカーが内部ネットワークに
侵入するのを妨げることはできません.
ファイアウォールを侵入不可能と過信して
内部のセキュリティをおろそかにすることは,
単にクラッカーの仕事を少し簡単にするだけでしかありません. </quote>
<sect1><heading> ファイアウォールとは何か ? </heading>
<p> 現在インターネットで普通に使用されているファイアウォールには
二つの異なるタイプがあります.
一つは, 厳密には <bf> パケットフィルタリングルータ </bf> と
呼ばれるタイプのものです. これはマルチホームのホストマシン (複数の
ネットワークに接続されているマシン) のカーネルが, ある規則にしたがって
パケットを転送したりブロックしたりするものです.
もう一つは, <bf> proxy (代理) サーバ </bf> として知られているタイプのものです.
これは, おそらくはマルチホームのホストマシン上で, カーネルによるパケット転送を
禁止して, デーモンにより認証の提供とパケットの転送とをおこなうものです.
<p> 二つのタイプのファイアウォールを組み合わせて使用して,
特定のマシン (<bf> 要塞ホスト </bf> と呼ばれる) だけが
パケットフィルタリングルータを通して内部ネットワークへ
パケットを送ることができるよう設定しているサイトがしばしば存在します.
proxy (代理) サービスは通常の認証メカニズムよりもセキュリティを強化してある
要塞ホストで動作させます.
<!-- (訳注: proxy サービスをおこなうアプリケーションなど,
おそらくはあまり実績のないアプリケーションプログラムを利用したサービスを
要塞ホスト上で提供するのは避けた方がよいでしょう.
proxy サービスを提供する場合には, 要塞ホストとは別の, バリアセグメント上の
ホストで proxy サービスを提供し, パケットフィルタリングを利用して
サービスの利用を制限するようにした方が安全です.) -->
<p>FreeBSD は (<tt>IPFW</tt> として知られる) カーネルパケットフィルタ込みで
提供されています. このセクションの後の方では, このフィルタについての
説明を集中しておこないます.
サードパーティから提供されるソフトウェアを使用することにより, Proxy サーバを
FreeBSD 上に構築することができます. しかし, 現在入手可能な proxy サーバは
たいへんバラエティに富んでいるので, このドキュメントでそれらすべてを
カバーすることは不可能です.
<sect2><heading> パケットフィルタリングルータ <label id="firewalls:packet_filters"></heading>
<p> ルータとは, 二つまたはそれ以上のネットワークの間でパケットの転送をおこなう
マシンのことです. パケットフィルタリングルータは, そのカーネルの内部に,
一つ一つのパケットをルールリストと比較して転送するかしないかを決める
特別なコードを持っています.
最近の IP ルーティングソフトウェアのほとんどは, 内部に
パケットのフィルタリングをおこなうためのコードを持っていて, デフォルトでは
すべてのパケットを転送するようになっています.
このフィルタを有効にするためには, パケットの通過を許すべきかどうかを決める
ルールを自分で定義する必要があります.
<p> パケットを通すべきか通すべきでないかを決めるために,
パケットヘッダの内容にマッチするものがルールリストから探されます.
マッチするルールが見つかると, ルールアクションが実行されます.
ルールアクションには, パケットを捨てる, パケットを転送する,
またはパケットの発信元に ICMP メッセージを送り返すというものがあります.
ルールの検索は先頭から順番におこなわれ, 通常は最初にマッチしたものだけが
適用されます.
そのため, このルールリストは「ルールチェーン」と呼ばれることもあります.
<p> パケットマッチングの基準は使用するソフトウェアによって異なりますが,
通常はパケットの発信元 IP アドレス, 宛先 IP アドレス, 発信元ポート番号,
宛先ポート番号 (ポート番号はポートをサポートするプロトコルの場合のみ),
パケットタイプ (UDP, TCP, ICMP など) に基づくルールを指定することができます.
<sect2><heading>Proxy サーバ <label id="firewalls:proxy_servers"></heading>
<p>Proxy サーバとは通常のシステムデーモン (telnetd, ftpd など) を
特別なサーバで置き換えたマシンのことです.
これらのサーバは, 通常は中継をおこなって特定方向への接続だけを許すため,
<bf>proxy サーバ </bf> と呼ばれます.
(例えば) proxy telnet サーバをファイアウォールホストで走らせておきます.
外部からユーザがファイアウォールに対して telnet を実行すると,
proxy telnet サーバが応答して, 何らかの認証メカニズムを実行します.
これを通過した後で, 内部ネットワークへのアクセスがおこなえるように
なるのです. (内部ネットワークからの信号は proxy サーバがかわりに受け取り,
外へ向けて送り出します.)
<p>Proxy サーバは通常, 普通のサーバより堅固に構築されていて,
しばしば「使い捨て」パスワードシステムなどを含む,
多様な認証メカニズムを持っています.
「使い捨て」パスワードシステムとは, どういうものなのでしょうか.
仮に誰かが何らかの方法で, あなたが使用したパスワードを手に入れたとします.
しかし, 一度使用したことで, そのパスワードは既に無効になっているのです.
ですから, そのパスワードをもう一度使用したとしても, あなたのシステムへ
アクセスすることはできないというわけです.
これらのサーバは中継をおこなうだけで, 実際のところサーバホスト自身への
アクセスをユーザに許してはいません. そのため, 何者かがセキュリティシステムに
侵入用の裏口を取り付けることは, より困難になっています.
<p>proxy サーバはアクセス制限の方法をいくつも持っていて, 特定のホスト
だけがサーバへのアクセス権を得ることができるようになっていることがあり
ます. そして目的のマシンと通信できるユーザを制限するように
設定することもできます.
もう一度言いますが, どんなファシリティ (機能) が使えるかは,
どんな proxy サービスをおこなうソフトウェアを選ぶかに大きく依存します.
<sect1><heading> IPFW で何ができるか </heading>
<p>FreeBSD とともに配布されている <tt>IPFW</tt> は, カーネル内部にあって
パケットのフィルタリングとアカウンティングをおこなうシステムであり,
ユーザ側のコントロールユーティリティである <tt>ipfw(8)</tt> を
含んでいます. ルーティングの決定をおこなう際に, これらは互いに協力して,
カーネルで使用されるルールを定義したり, 現在使用されているルールを
問い合わせたりすることができます.
<p><tt>IPFW</tt> は互いに関連する二つの部分からなっています.
ファイアウォールセクションはパケットフィルタリングをおこないます.
また, IP アカウンティングセクションはファイアウォールセクションのものと
似たルールに基づいてルータの使用を追跡します.
これにより, (例えば) 特定のマシンからルータへのトラフィックがどのくらい
発生しているか調べたり, どれだけの WWW (World Wide Web) トラフィックが
フォワードされているかを知ることができます.
<p><tt>IPFW</tt> は, ルータではないマシンにおいても入出力コネクションの
パケットフィルタリングのために使用することができるように設計されています.
これは一般的な <tt>IPFW</tt> の使用法とは異なる特別な使い方ですが,
こういった状況でも同じコマンドとテクニックが使用されます.
<sect1><heading>FreeBSD で IPFW を有効にする </heading>
<p><tt>IPFW</tt> システムの中心となる部分はカーネル内部にあります.
そのため, どのファシリティ (機能) を必要とするかによって, 一つまたは
それ以上のオプションをカーネルコンフィグレーションファイルに追加し,
カーネルを再コンパイルする必要があるでしょう.
カーネルの再コンパイル方法の詳細については,
<ref id="kernelconfig" name="カーネルコンフィグレーション"> を参照してください.
<p>現在, IPFW に関係するカーネルコンフィグレーションオプションは
三つあります:
<descrip>
<tag/options IPFIREWALL/ パケットフィルタリングのためのコードを
カーネルに組み込みます.
<tag/options IPFIREWALL_VERBOSE/<tt>syslogd(8)</tt> を通じて
パケットのログを取るためのコードを有効にします.
フィルタルールでパケットのログを取るように指定しても,
このオプションが指定されていなければ, ログを取ることはできません.
<tag/options IPFIREWALL_VERBOSE_LIMIT=10/<tt>syslogd(8)</tt> を通じて
ログを取るパケットの数をエントリ毎に制限します.
敵対的な環境においてファイアウォールの動作のログを取りたいけれど,
syslog の洪水によるサービス拒絶攻撃に対し無防備でありたくないという場合に,
このオプションを使用したいと思うことがあるかもしれません.
<p> チェーンエントリのログが指定された制限数に達すると,
そのエントリに関するログ取りは停止されます.
ログ取りを再開するには, <tt>ipfw(8)</tt> ユーティリティを使用して
関連するカウンタをリセットする必要があります:
<tscreen><verb>
ipfw zero 4500
</verb></tscreen>
4500 とは, ログ取りを続行したいチェーンエントリの番号です.
</descrip>
以前のバージョンの FreeBSD は <tt>IPFIREWALL_ACCT</tt> というオプションを
持っていました.
しかし, ファイアウォールコードがアカウンティングファシリティ (機能) を
自動的に含むようになったため, 現在では使用されることはなくなっています.
<sect1><heading>IPFW の設定 </heading>
<p><tt>IPFW</tt> ソフトウェアの設定は <tt>ipfw(8)</tt> ユーティリティを
通じておこないます. このコマンドの構文は非常に複雑に見えますが,
一旦その構造を理解すれば比較的単純です.
<p> このユーティリティでは今のところ四つの異なるコマンドカテゴリが
使用されています: それは追加 / 削除, 表示, フラッシュ, およびクリアです.
追加 / 削除はパケットの受け入れ, 拒絶, ログ取りをどのようにおこなうか
というルールを構築するのに使用します.
表示はルールリスト (またはチェーン) と (アカウンティング用) パケットカウンタの
内容を調べるのに使用します.
フラッシュはチェーンからすべてのエントリを取り除くのに使用します.
クリアは一つまたはそれ以上のアカウンティングエントリをゼロにするのに
使用します.
<sect2><heading>IPFW ルールの変更 </heading>
<p> この形式での使用法は:
<tscreen>
ipfw &lsqb;-N&rsqb; <em> コマンド </em> &lsqb;<em>index</em>&rsqb;
<em> アクション </em> &lsqb;log&rsqb; <em> プロトコル </em><em> アドレス </em>
&lsqb;<em> オプション </em>&rsqb;
</tscreen>
<p> この形式で使用する際に有効なフラグは一つだけです:
<descrip>
<tag/-N/ アドレスやサービス名を文字列に変換して表示します.
</descrip>
<em> コマンド </em> は一意である限り短縮可能です.
有効な <em> コマンド </em> は:
<descrip>
<tag/add/ ファイアウォール / アカウンティングルールリストに
エントリを追加します.
<tag/delete/ ファイアウォール / アカウンティングルールリストから
エントリを削除します.
</descrip>
以前のバージョンの <tt>IPFW</tt> では, ファイアウォールエントリと
パケットアカウンティングエントリが別々に利用されていました.
現在のバージョンでは, それぞれのファイアウォールエントリ毎に
パケットアカウンティングエントリが備えられています.
<p><tt>index</tt> が指定されていると, エントリはチェーン中の
<tt>index</tt> で示される位置に置かれます. <tt>index</tt> が指定されて
いなければ, エントリは (65535 番のデフォルトルールである
パケット拒絶を別にして) 最後のチェーンエントリの index に 100 を足した
位置 (チェーンの最後) に置かれます.
<p> カーネルが <bf>IPFIREWALL_VERBOSE</bf> つきでコンパイルされている場合,
<bf>log</bf> オプションはマッチしたルールをシステムコンソールに出力させます.
<p>有効な <em> アクション </em> は:
<descrip>
<tag/reject/ パケットを捨てます, ICMP ホスト / ポート到達不能パケットを
(適切な方を) 発信元へ送ります.
<tag/allow/ 通常通りパケットを通過させます. (別名: <bf>pass</bf> および
<bf>accept</bf>)
<tag/deny/ パケットを捨てます. 発信元は ICMP メッセージによる
通知を受けません (そのためパケットが宛先に到達しなかったように見えます).
<tag/count/ このルールはパケットカウンタを更新するだけで, パケットを
通過させたり拒絶したりしません. 検索は次のチェーンエントリから続けられます.
</descrip>
<p> それぞれの <em> アクション </em> は一意な先頭部分だけでも認識されます.
指定可能な <em> プロトコル </em> は以下の通り:
<descrip>
<tag/all/ 任意の IP パケットにマッチします.
<tag/icmp/ICMP パケットにマッチします.
<tag/tcp/TCP パケットにマッチします.
<tag/udp/UDP パケットにマッチします.
</descrip>
<p><em> アドレス </em> の指定は:
<tscreen>
<bf>from</bf> &lt;<em>address/mask</em>&gt;&lsqb;<em>port</em>&rsqb; <bf>to</bf>
&lt;<em>address/mask</em>&gt;&lsqb;<em>port</em>&rsqb &lsqb;<bf>via</bf> &lt;<em>interface</em>&gt;&rsqb;
</tscreen>
<p><em>port</em> はポートをサポートする <em> プロトコル </em> (UDP と TCP) の
場合にだけ指定可能です.
<p><bf>via</bf> は必須ではなく, 特定のインターフェースを通ってきたパケット
だけにマッチするように, IP アドレスまたはローカル IP インターフェースの
ドメイン名, またはインターフェース名 (例えば <tt>ed0</tt>) を
指定することができます.
インターフェースユニット番号はオプションで, ワイルドカードで指定することが
できます. 例えば, <tt>ppp*</tt> はすべてのカーネル PPP インターフェースに
マッチします.
<p><tt>&lt;address/mask&gt;</tt> の指定は:
<tscreen>
&lt;address&gt;
</tscreen>
または
<tscreen>
&lt;address&gt;/mask-bits
</tscreen>
または
<tscreen>
&lt;address&gt;:mask-pattern
</tscreen>
<p>IP アドレスのかわりに有効なホスト名を指定することも可能です.
<tt>mask-bits</tt> はアドレスマスクで上位何ビットを1にするべきかを
示す十進数値です. 例えば次の指定,
<tscreen>
192.216.222.1/24
</tscreen>
はクラス C のサブネット (この場合 192.216.222) の任意のアドレスにマッチする
マスクを作成します. <tt>mask-pattern</tt> は与えられたアドレスと
論理 AND される IP アドレスです.
キーワード <tt>any</tt> は「任意の IP アドレス」を指定するために
使用することができます.
<p> ブロックするポート番号は以下のように指定します:
<tscreen>
port&lsqb;,port&lsqb;,port&lsqb;...&rsqb;&rsqb;&rsqb;
</tscreen>
のように単独のポートまたはポートのリストを指定します. または
<tscreen><verb>
port-port
</verb></tscreen>
のようにポートの範囲を指定します. 単独のポートとポートのリストを
組み合わせて指定することも可能ですが, その場合は常に範囲の方を
最初に指定しなければなりません.
<p> 使用可能な <em> オプション </em> は:
<descrip>
<tag/frag/ データグラムの最初のフラグメントでなければマッチします.
<tag/in/ 入力途中のパケットであればマッチします.
<tag/out/ 出力途中のパケットであればマッチします.
<tag/ipoptions <em>spec</em>/IP ヘッダが <em>spec</em> に指定された
カンマで区切られたオプションのリストを含んでいればマッチします.
サポートされている IP オプションのリストは:
<bf>ssrr</bf> (ストリクトソースルート),
<bf>lsrr</bf> (ルーズソースルート), <bf>rr</bf> (レコードパケットルート),
そして <bf>ts</bf> (タイムスタンプ) です.
特定のオプションを含まないことを指定するには '!' を先頭につけます.
<tag/established/ パケットが既に確立されている TCP コネクションの一部であれば
(つまり RST または ACK ビットがセットされていれば) マッチします.
<em>established</em> ルールをチェーンの最初の方に置くことで,
ファイアウォールのパフォーマンスを向上させることができます.
<tag/setup/ パケットが TCP コネクションを確立しようとするものであれば
(SYN ビットがセットされ ACK ビットはセットされていなければ) マッチします.
<tag/tcpflags <em>flags</em>/TCP ヘッダが <em>flags</em> に指定された
カンマで区切られたフラグのリストを含んでいればマッチします.
サポートされているフラグは, <bf>fin</bf>, <bf>syn</bf>, <bf>rst</bf>,
<bf>psh</bf>, <bf>ack</bf> と <bf>urg</bf> です.
特定のフラグを含まないことを指定するには '!' を先頭につけます.
<tag/icmptypes <em>types</em>/ICMP タイプが <em>types</em> リストに
存在していればマッチします. リストはタイプの範囲または個々のタイプを
カンマで区切った任意の組合せで指定できます.
一般的に使用されている ICMP タイプは:
<bf>0</bf> エコーリプライ (ping リプライ),
<bf>5</bf> リダイレクト, <bf>8</bf> エコーリクエスト (ping リクエスト),
そして <bf>11</bf> 時間超過 (<tt>traceroute(8)</tt> で使用されているように,
TTL 満了を示すのに使用されます) です.
</descrip>
<sect2><heading> IPFW ルールリストの表示 </heading>
<p> この形式での使用法は:
<tscreen>
ipfw &lsqb;-atN&rsqb; l
</tscreen>
<p>この形式で使用する際に有効なフラグは三つあります:
<descrip>
<tag/-a/ リスト表示の際にカウンタの値も表示します. このオプションは
アカウンティングカウンタの内容を見る唯一の手段です.
<tag/-t/ 各チェーンエントリが最後にマッチした時刻を表示します.
この時刻表示は <tt>ipfw(8)</tt> ユーティリティで使用される入力形式と
互換性がありません.
<tag/-N/ (可能であれば) アドレスやサービス名を文字列に変換して表示します.
</descrip>
<sect2><heading>IPFW ルールのフラッシュ </heading>
<p> チェーンをフラッシュするには:
<tscreen>
ipfw flush
</tscreen>
<p> カーネルに固定されているデフォルトルール (インデックス 65535 番)
以外の, ファイアウォールチェーンの中のすべてのエントリを削除します.
デフォルトではすべてのパケットが拒絶されるので, 一旦これを実行すると,
パケットを許可するエントリがチェーンに追加されるまで,
あなたのシステムがネットワークから切り放されてしまいます.
そのため, ルールのフラッシュをおこなうときは注意が必要です.
<sect2><heading> IPFW パケットカウンタのクリア </heading>
<p> 一つまたはそれ以上のパケットカウンタをクリアするためには:
<tscreen>
ipfw zero &lsqb;index&rsqb;
</tscreen>
<p><em>index</em> が指定されていなければ, すべてのパケットカウンタが
クリアされます.
<em>index</em> が指定されていれば, 特定のチェーンエントリだけが
クリアされます.
<sect1><heading> ipfw に対するコマンドの例 </heading>
<p> このコマンドはルータを介して転送される,
ホスト <bf>evil.hacker.org</bf> から
ホスト <bf>nice.people.org</bf> の telnet ポートへの
すべてのパケットを拒絶します:
<tscreen><verb>
ipfw add deny tcp from evil.hacker.org to nice.people.org 23
</verb></tscreen>
<p> 次の例は, ネットワーク <bf>hacker.org</bf> (クラス C) 全体から
マシン <bf>nice.people.org</bf> (の任意のポート) への
任意の TCP トラフィックを拒絶し, ログを取ります.
<tscreen><verb>
ipfw add deny log tcp from evil.hacker.org/24 to nice.people.org
</verb></tscreen>
あなたの内部ネットワーク (クラス C のサブネット) に対する X セッションを
張れないようにする場合, 以下のコマンドで必要なフィルタリングがおこなえます:
<tscreen><verb>
ipfw add deny from any to my.org/28 6000 setup
</verb></tscreen>
<bf>sup.FreeBSD.ORG</bf> の SUP サーバへのアクセスを許可するためには,
以下のコマンドを使用します:
<tscreen><verb>
ipfw add accept from any to sup.FreeBSD.ORG 871
</verb></tscreen>
アカウンティングレコードを見るには:
<tscreen><verb>
ipfw -a list
</verb></tscreen>
または短縮形式で
<tscreen><verb>
ipfw -a l
</verb></tscreen>
最後にチェーンエントリがマッチした時刻を見ることもできます.
<tscreen><verb>
ipfw -at l
</verb></tscreen>
<sect1><heading> パケットフィルタリングファイアウォールの構築 </heading>
<p><quote><bf> 注: </bf> 以下の提案は, ただの提案にすぎません:
必要な処理はそれぞれのファイアウォールで異なるため,
あなた独自の要求にあったファイアウォールを構築する方法を
ここで述べることはできないのです. </quote>
<p> 最初にファイアウォールをセットアップするとき,
コントロールされた環境でファイアウォールホストの設定がおこなえるような
テストベンチセットアップが用意できない場合には, カーネルのログ取りを
有効にしてログ取り版のコマンドを使用することを強くおすすめします.
そうすることで, 大した混乱や中断なしに問題となる範囲の特定と処置を
素早くおこなうことができます.
初期セットアップフェーズが完了してからであっても,
アタックの可能性のあるアクセスをトレースしたり,
要求の変化に応じてファイアウォールルールを変更したりできるので,
`deny' に対するログ取りをおこなうことをおすすめします.
<quote><bf> 注: </BF><bf>accept</bf> コマンドのログ取りをおこなっていると,
ファイアウォールをパケットが一つ通過する毎に 1 行のログが生成されるため
<em>大量の</em> ログデータが発生します.
そのため, 大規模な ftp/http 転送などをおこなうと, システムが非常に
遅くなってしまいます.
また, パケットが通過するまでにカーネルにより多くの仕事を要求するため,
パケットのレイテンシ (latency) を増加させてしまいます.
syslogd もログをディスクに記録するなど, より多くの CPU タイムを
使用し始め, 実に容易に <tt>/var/log</tt> が置かれているパーティションを
パンクさせてしまう可能性があります. </quote>
<p> 現状では, FreeBSD はブート時にファイアウォールルールをロードする
能力を持っていません.
私は <tt>/etc/netstart</tt> スクリプトにロードをおこなうスクリプトを
追加することをおすすめします. IP インターフェースの設定がおこなわれる前に
ファイアウォールの設定がおこなわれるように, netstart ファイル中の
充分に早い位置にルールをロードするスクリプトを配置してください.
こうすることで, ネットワークがオープンな間は常に抜け道が塞がれている
ことになります.
<p> ルールをロードするために使用するスクリプトは,
あなたが作成しなければなりません.
現在のところ <tt>ipfw</tt> は 1 コマンドで複数のルールを
ロードするユーティリティをサポートしていません.
私が使用しているシステムでは以下のようにしています:
<tscreen><verb>
# ipfw list
</verb></tscreen>
ファイルに現在のルールリストを出力し, テキストエディタを使用して
すべての行の前に ``<tt>ipfw </tt>'' と書き足します.
こうすることで, このスクリプトを /bin/sh に与えてルールをカーネルに再読み込み
させることができます. これは最も効率的な方法とはいえないかもしれませんが,
きちんと動作しています.
<p> 次の問題は, ファイアウォールが実際には何を <bf> する </bf> べきかです !
これは外部からそのネットワークへのどんなアクセスを許したいか,
また内部から外界へのアクセスをどのくらい許したいかに大きく依存します.
いくつか一般的なルールを挙げると:
<itemize>
<item> 1024 番以下のポートへのすべての TCP 入力アクセスをブロックします.
ここは finger, SMTP (mail) そして telnet など, 最もセキュリティに敏感な
サービスが存在する場所だからです.
<item><bf> すべての </bf> 入力 UDP トラフィックをブロックします.
これは UDP を使用しているサービスで有用なものは極めて少ないうえ,
有用なトラフィック (例えば Sun の RPC と NFS プロトコル) は,
通常セキュリティに対する脅威となるためです.
UDP はコネクションレスプロトコルであるため,
入力 UDP トラフィックを拒絶することは
すなわち出力 UDP トラフィックに対する返答をも
ブロックすることになるので, このことはそれなりの不利益をもたらします.
たとえば外部の archie (prospero) サーバを使用している (内部の) ユーザに
とって問題となる可能性があります.
もし archie へのアクセスを許したければ, 191 番と 1525 番のポートから
任意の UDP ポートへ来るパケットがファイアウォールを通過することを
許可しなければなりません.
123 番のポートから来るパケットは ntp パケットで,
これも通過の許可を考慮する必要があるもう一つのサービスです.
<item> 外部から 6000 番のポートへのトラフィックをブロックします.
6000 番のポートは X11 サーバへのアクセスに使用されるポートで,
セキュリティに対する脅威となりえます. (特に自分のワークステーションで
<tt>xhost +</tt> をおこなう癖を持っている人がいればなおさらです).
X11 は実際に 6000 番以降のポートを使用する可能性があるため, 通過許可に
上限を定めると, そのマシンで走らせることのできる X ディスプレイの
個数が制限されます.
RFC 1700 (Assigned Numbers) で定義されているように, 上限は 6063 です.
<item> 内部のサーバ (例えば SQL サーバなど) がどのポートを使用するかを
チェックします.
それらのポートは通常, 上で指定した 1-1024 番の範囲から外れていますので,
これらも同様にブロックしておくことはおそらく良い考えです.
</itemize>
<p> これとは別のファイアウォール設定に関するチェックリストが CERT から
入手可能です.
<htmlurl url="ftp://ftp.cert.org/pub/tech&lowbar;tips/packet&lowbar;filtering"
name="ftp://ftp.cert.org/pub/tech&lowbar;tips/packet&lowbar;filtering">
<p> 前にも述べたように, これはただの <em> ガイドライン </em> にすぎません.
ファイアウォールでどのようなフィルタルールを使用するかは, あなた自身が
決めなければなりません.
これまでのアドバイスにしたがったにも関わらず, 誰かがあなたのネットワークに
侵入してきたとしても, 私は「いかなる」責任もとることはできません.

View file

@ -1,6 +0,0 @@
<!-- $Id: glossary.sgml,v 1.4 1997/02/22 13:01:03 peter Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.5 -->
<chapt><heading>* Glossary<label id="glossary"></heading>

View file

@ -1,33 +0,0 @@
<!-- $Id: goals.sgml,v 1.4 1997/02/22 13:01:05 peter Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.4 -->
<sect><heading>FreeBSDプロジェクトの目的<label id="goals"></heading>
<p><em>原作: &a.jkh;</em>
<p><em>訳: &a.kiroh;<newline>24 September 1996.</em>
<p>
FreeBSDプロジェクトの目的は、いかなる用途にも使用でき、何ら制限のない
ソフトウェアを供給することです。私たちの多くは、コード(そしてプロジェ
クト)に対してかなりの投資をしてきており、これからも多少の無駄はあって
も投資を続けて行くつもりです。ただ、他の人達にも同じような負担をするよ
うに主張しているわけではありません。FreeBSD に興味を持っている一人の残
らず全ての人々に、目的を限定しないでコードを提供すること。これが、私た
ちの最初のそして最大の``任務''であると信じています。そうすれば、コード
は可能な限り広く使われ、最大の恩恵をもたらすことができるでしょう。これ
が、私たちが熱烈に支持しているフリーソフトウェアの最も基本的な目的であ
ると、私は信じています。
<p>
私たちのソースツリーに含まれるソースのうち、GNU一般公有使用許諾(GPL)ま
たはGNUライブラリ一般公有使用許諾(GLPL)に従っているものについては、多
少制限が科されています。ただし、ソースコードへのアクセスの保証という、
一般の制限とはいわば逆の制限(訳注1)です。ただしGPLソフトウェアを商用で
利用する場合、さらに複雑になるのは避けられません。そのため、それらのソ
フトウェアを、より制限の少ないBSD著作権に従ったソフトウェアで置き換え
る努力を、可能な限り日々続けています。
<p>
(訳注1) GPL では、「ソースコードを実際に受け取るか、あるいは、希望しさ
えすればそれを入手することが可能であること」を求めています。

View file

@ -1,195 +0,0 @@
<!-- $Id: handbook.sgml,v 1.17 1997/05/18 02:30:50 hanai Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.76 -->
<!DOCTYPE linuxdoc PUBLIC "-//FreeBSD//DTD linuxdoc//EN" [
<!-- Conditional flags for this version of the document -->
<!ENTITY % boothelp.only "IGNORE">
<!ENTITY % handbook.only "INCLUDE">
<!-- Entity shorthand for authors' names and email addresses -->
<!ENTITY % authors SYSTEM "authors.sgml">
%authors;
<!-- Entity shorthand for translator's names and email addresses -->
<!ENTITY % jmembers SYSTEM "jmembers.sgml">
%jmembers;
<!-- Entity shorthand for mailing list email addresses -->
<!ENTITY % lists SYSTEM "lists.sgml">
%lists;
<!-- Entity definitions for all the parts -->
<!ENTITY % sections SYSTEM "sections.sgml">
%sections;
<!-- The currently released version of FreeBSD -->
<!ENTITY rel.current CDATA "2.2.2">
]>
<linuxdoc>
<book>
<title>FreeBSD ハンドブック</title>
<author>
<name>FreeBSD ドキュメンテーションプロジェクト</name>
</author>
<date>1997年5月</date>
<abstract>FreeBSD へようこそ! このハンドブックは<bf>FreeBSD Release
&rel.current;</bf>のインストールおよび, 日常での使い方について記述したもので,
FreeBSD ドキュメンテーションプロジェクトによって編集されています.
日本語版の作成は FreeBSD 日本語ドキュメンテーションプロジェクトがおこなって
います. 本書は<bf>現在進行中の作業</bf>であって, 多くの個人の手からなる
仕事です. 多くのセクションはまだ存在しませんし, いま存在するセクションの
いくつかはアップデートが必要です. この FreeBSD ドキュメンテーション
プロジェクトに協力したいと思ったら, &a.doc; まで (英語で) 電子メールを
送ってください. ハンドブックそのものに関する議論は, こちらで
おこなわれています. (もちろん英語でです.)
日本語訳および, 日本語版のみに関することは &a.doc-jp; において日本語で
議論されています. 必要に応じて日本語ドキュメンテーションプロジェクトから
本家ドキュメンテーションプロジェクトに対してフィードバックをおこないますので,
英語が得意でない方は &a.doc-jp; まで日本語でコメントをお寄せください.
このドキュメントの最新バージョンは, いつでも
<url url="http://www.jp.FreeBSD.ORG/"
name="日本国内版 FreeBSD World Wide Web サーバ">や
<url url="http://www.FreeBSD.ORG/" name="FreeBSD World Wide Web サーバ">
から入手できますし,
<url url="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/docs" name="FreeBSD FTP サーバ">
や, たくさんある<ref id="mirrors" name="ミラーサイト">からプレインテキスト,
postscript, HTML などの形式でダウンロードすることもできます.
また, <url url="/search.html" name="ハンドブックの検索">も可能です.
</abstract>
<toc>
<!-- ************************************************************ -->
<part><heading>導入</heading>
<chapt><heading>はじめに</heading>
<p>FreeBSD は, Intel アーキテクチャ (x86) ベースの PC のための
4.4BSD-Lite をベースとしたオペレーティングシステムです.
FreeBSD の概要については,
<ref id="nutshell" name="FreeBSD とは">をご覧ください.
このプロジェクトの歴史については, <ref id="history" name="FreeBSD 小史">
をご覧ください. 最新のリリースについての記述は,
<ref id="relnotes" name="現在のリリースについて">をご覧ください.
FreeBSD プロジェクトへの何らかの貢献 (ソースコード, 機器, 資金の提供など)
について興味があれば, <ref id="submitters" name="FreeBSD への貢献">
の章をご覧ください.
&nutshell;
&history;
&goals;
&development;
&relnotes;
&install;
&basics;
&ports;
<!-- ************************************************************ -->
<part><heading>システム管理</heading>
&kernelconfig;
<chapt><heading>セキュリティ</heading>
&crypt;
&skey;
&kerberos;
&firewalls;
&printing;
&quotas;
<chapt><heading>X ウィンドウシステム</heading>
<p>この節の完成は保留にしてあります.
<url url="http://www.xfree86.org/" name="The XFree86 Project, Inc">
から提供されるドキュメントを参考にしてください.
&hw;
<chapt><heading>ローカル化<label id="l10n"></heading>
&russian;
<!-- ************************************************************ -->
<part><heading>ネットワーク通信</heading>
<chapt><heading>シリアル通信</heading>
&serial;
&term;
&dialup;
&dialout;
<chapt><heading>PPP と SLIP</heading>
<p>もしあなたがモデムを使ってインターネットに接続したり,
他の人々に FreeBSD によるインターネットへのダイヤルアップ接続を
提供しようとしているのでしたら, PPP または SLIP 接続を選択することができます.
PPP 接続には, 2 種類の方法が提供されています:
<em>ユーザ</em>PPP (iijppp とも呼ばれます) と<em>カーネル</em>PPP です.
両方の PPP の設定手順と, SLIP の設定方法については以下の章に書かれています.
&userppp;
&ppp;
&slipc;
&slips;
<chapt><heading>高度なネットワーク</heading>
&routing;
&nfs;
&diskless;
&isdn;
&mail;
<!-- ************************************************************ -->
<part><heading>さらに進んだ話題</heading>
<chapt><heading>開発の最前線: FreeBSD-current と FreeBSD-stable</heading>
<p>あるリリースから次のリリースまでの期間にも, FreeBSD の開発は
休みなく続けられています. この開発の最前線に興味を持っている人のために,
手元のシステムを最新の開発ツリーに同期させておくための,
とても使いやすい仕掛けが何種類も用意されています.
注意: 開発の最前線は, 誰でもが扱えるという性質のものではありません!
もしもあなたが, 開発途中のシステムを追いかけようか, それともリリース
バージョンのどれかを使い続けようかと迷っているのなら,
きっとこの章が参考になるでしょう. </p>
&current;
&stable;
&synching;
</chapt>
&submitters;
&policies;
&kernelopts;
&kerneldebug;
&linuxemu;
<chapt><heading>FreeBSD の内部</heading>
&booting;
&memoryuse;
&dma;
<!-- ************************************************************ -->
<part><heading>付録</heading>
&mirrors;
&bibliography;
&eresources;
&contrib;
&pgpkeys;
&jcontrib;
<!-- &glossary; -->
</book>
</linuxdoc>

View file

@ -1,114 +0,0 @@
<!-- $Id: history.sgml,v 1.6 1997/02/25 04:55:50 hanai Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.22 -->
<!-- 和訳: masaki@po.iijnet.or.jp + hino@nwk.cl.nec.co.jp 1997/5/13 -->
<sect><heading>FreeBSD 小史<label id="history"></heading>
<p><em>原作: &a.jkh;</em>.
<p><em>訳: &a.masaki;, &a.hino;.<newline>19 December 1996.</em>
FreeBSD プロジェクトは 1993年の始めに ``Unofficial 386BSD Patchkit''
の最後の 3人のまとめ役によって, 部分的に patchkit から派生する形で開始
されました. ここでの 3人のまとめ役というのは, Nate Williams と, Rod
Grimes と, 私 (Jordan K. Hubbard) です.
私たちのもともとの目標は, patchkit という仕組みではもう十分に解
決できなくなってしまった 386BSD の数多くの問題を修正するための, 386BSD
の暫定的なスナップショットを作成することでした. こういった経緯を経てい
るので, このプロジェクトの初期の頃の名前が ``386BSD 0.5'' や ``386BSD
暫定版 (Interim)'' であったということを覚えている人もいるでしょう.
386BSD は, Bill Jolitz が (訳注: バークレイ Net/2 テープを基に) 作成し
たオペレーティングシステムです. 当時の 386BSD は, ほぼ一年にわたって放っ
ておかれていた (訳注: 作者がバグの報告を受けても何もしなかった) という
ひどい状況に苦しんでいました. 作者の代わりに問題を修正し続けていた
patchkit は日を追うごとに不快なまでに膨張してしまっていました. このよ
うな状況に対して, このままではいけない, 何か行動を起こさなければ, とい
うことで異議を唱えるものは私たちのなかにはいませんでした. そして私たち
は挑戦することを決断し, 暫定的な「クリーンアップ」スナップショットを作
成することで Bill を手助けしようと決めたのです. しかし, この計画は唐突
に終了してしまいました. Bill Jolitz が, このプロジェクトに対する受け
入れ支持を取り下げることを突然決意し, なおかつこのプロジェクトの代わり
に何をするのかを一切言明しなかったのです.
たとえ Bill が支持してくれないとしても, われわれの目標には依然としてや
る価値があると決心するのにさしたる時間はかかりませんでした. そこで
David Greenman が考案した名称 ``FreeBSD'' を私たちのプロジェクトの名前
に採用し, 新たなスタートを切りました. この時点でのプロジェクトの初期目
標は, すでにこのシステム (訳注: 386BSD + Patchkit) を使っていた利用者
たちと相談して決められました. プロジェクトが実現に向けて軌道に乗ってき
たことが明確になった時点で, 私は Walnut Creek CDROM 社に連絡してみまし
た. CDROM を使って FreeBSD を配布することによって, インターネットに容
易に接続できない多くの人々が FreeBSD を簡単に入手できるようになると考
えたからです. Walnut Creek CDROM 社は FreeBSD を CD で配布するというア
イデアを採用してくれたばかりか, 作業するためのマシンと高速なインターネッ
ト回線を私たちのプロジェクトに提供してくれました. 当時は海のものとも山
のものともわからなかった私たちのプロジェクトに対して, Walnut Creek
CDROM 社が信じられないほどの信頼を寄せてくれたおかげで, FreeBSD は短期
間のうちにここまで大きく成長したのです.
CDROM による最初の配布 (そしてネットでの, ベータ版ではない最初の一般向
け配布) は FreeBSD 1.0 で, 1993年 12月に公開されました. これは カリフォ
ルニア大学バークレイ校の 4.3BSD-Lite (``Net/2'') を基とし, 386BSD や
Free Software Foundation からも多くの部分を取り入れたものです. これは
初めて公開したものとしては十分に成功しました. 続けて 1994年 5月に
FreeBSD 1.1 を公開し, 非常に大きな成功を収めました.
この時期, あまり予想していなかった嵐が遠くから接近してきていました. バー
クレイ Net/2 テープの法的な位置づけについて, Novell 社と カリフォルニ
ア大学バークレイ校との間の長期にわたる法廷論争において和解が成立したの
です. 和解の内容は, Net/2 のかなりの部分が「権利つき (encumbered)」コー
ドであり, それは Novell 社の所有物である, というバークレイ校側が譲歩し
たものでした. なお, Novell 社はこれらの権利を裁判が始まる少し前に
AT&amp;T 社から買収していました. 和解における譲歩の見返りにバークレイ
校が得たのは, 4.4BSD-Lite が最終的に発表された時点で, 4.4BSD-Lite は権
利つきではないと公式に宣言されること, そしてすべての既存の Net/2 の利
用者が 4.4BSD-Lite の利用へと移行することが強く奨励されること, という
Novell 社からの「ありがたき天からの恵み」でした. (訳注: 4.4BSD-Lite は
その後 Novell 社のチェックを受けてから公開された.) FreeBSD も Net/2 を利
用していましたから, 1994年の 7月の終わりまでに Net/2 ベースの FreeBSD
の出荷を停止するように言われました. ただし, このときの合意によって, 私
たちは締め切りまでに一回だけ最後の公開をすることを許されました. そして
それは FreeBSD 1.1.5.1 となりました.
それから FreeBSD プロジェクトは, まっさらでかなり不完全な 4.4BSD-Lite
を基に, 文字どおり一から再度作り直すという, 難しくて大変な作業の準備を始めまし
た. ``Lite'' バージョンは, 部分的には本当に軽くて, 中身がなかったので
す. 起動し, 動作できるシステムを実際に作り上げるために必要となるプログ
ラムコードのかなりの部分がバークレイ校 の CSRG (訳注: BSDを作っている
グループ) によって (いろいろな法的要求のせいで) 削除されてしまっていた
ということと, 4.4BSD の Intel アーキテクチャ対応が元々かなり不完全であっ
たということがその理由です. この移行作業は結局 1994年の 12月までかかり
ました. そして 1995年の 1月に FreeBSD 2.0 をネットと CDROM を通じて公
開しました. これは, かなり粗削りなところが残っていたにもかかわらず, か
なりの成功を収めました. そしてその後に, より信頼性が高く, そしてインス
トールが簡単になった FreeBSD 2.0.5 が 1995年の 6月に公開されました.
<em>これからのことについて</em>
私たちは 1996年の 8月に FreeBSD 2.1.5 を公開しました. この出来が非常に
良く, 特に業務で運用しているサイトや ISP での人気が高かったので, 私た
ちは 2.1-STABLE 開発分流から更に公開をおこなうことにメリットがあると考
えました. それが FreeBSD 2.1.7.1 で, 2.1-STABLE 開発分流の最後を締めく
くるものとして, 1997年の 2月に公開されました. 2.1-STABLE 開発分流
(RELENG_2_1_0) は現在, 保守のみをおこなう状態になっており, 今後は, セ
キュリティの改善や他の何か重要なバグフィックスのみがおこなわれるでしょ
う.
FreeBSD 2.2 の開発は, RELENG_2_2 開発分流として, 開発の本流
(``-current'') から 1996年 11月に分岐し, そして 1997年 4月に最初の公開
(2.2.1) がおこなわれました. RELENG_2_2 開発分流に関する今後の計画では,
97年の夏から秋の間に数回の公開をおこなうことが予定されています. そして
97年の冬のはじめ頃には, FreeBSD 3.0 の最初の公開をおこなう予定です.
<!-- 訳者覚書:Jordan氏は最後の文に関する質問に対し以下の回答をくれた. -->
<!-- What I meant to say was: -->
<!-- o Several releases of 2.2.x during Summer and Fall of 1997. -->
<!-- o The first official release of 3.0.x in Winter of 1997. -->
SMP のサポートから DEC ALPHA のサポートまでのすべての長期的な開発プロ
ジェクトは, 3.0-CURRENT 開発分流において継続しています. CDROM (もちろ
ん, ネットワーク上でも) による 3.0 のスナップショット公開は, 1997年
5月頃から開始される予定です.

File diff suppressed because it is too large Load diff

View file

@ -1,846 +0,0 @@
<!-- $Id: install.sgml,v 1.14 1997/04/01 02:38:01 hanai Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.53 -->
<!--
<!DOCTYPE linuxdoc PUBLIC '-//FreeBSD//DTD linuxdoc//EN'>
-->
<chapt><heading>FreeBSDのインストール<label id="install"></heading>
<p><em>原作: 不明</em>
<p><em>訳: &a.mita;, <newline>&a.hanai;, <newline>&a.iwasaki;.
<newline>26 January 1997.</em>
<p>それでは, FreeBSD のインストールに挑戦してみましょう.
この章には, あなたが何をする必要があるかの簡単なガイドが
書いてあります. FreeBSD は, CD-ROM, フロッピーディスク, 磁気テープ,
MS-DOSのパーティション, ネットワーク接続しているところでは
anonymous FTP や NFS を通じてインストールすることができます.
どのインストールメディアを利用する場合も, まず<bf>インストールディスク</bf>
をダウンロードするところから始まります. このディスクであなたの
コンピュータを立ち上げることで, FreeBSD とあなたのハードウェアとの
相性に関する重要な情報を手に入れることができ, このハードウェアでは
どんなインストールオプションが使えるかを指定することができます.
もしもあなたが anonymous FTP を使用してインストールする予定なら,
インストールディスクだけをダウンロードすればOKです.
FreeBSDの配布に関する情報は, 付録の <ref id="mirrors" name="FreeBSD の入手方法">
をご覧ください.
仕事にとりかかるには, 以下のような手順を踏みます.
<enum>
<item>このインストールガイドの <ref id="install:hw"
name="サポートされている設定一覧"> の節を読んで, あなたのハードウェアが
FreeBSD でサポートされていることを確認します. SCSI コントローラだとか,
イーサネットアダプタだとか, サウンドカードだとかの, あなたのマシンが
装備している特別なカードのリストを作っておくと便利です. この
リストには, 割り込み番号 (IRQ) とか, IO ポートのアドレスとかの, カードに
関係する設定も書いておきましょう.<P></P></item>
<item><url
url="ftp://ftp.freebsd.org/pub/FreeBSD/&rel.current;-RELEASE/floppies/boot.flp"
name="ブートディスクのイメージ"> ファイルをあなたの
ハードディスクにダウンロードしてきます. ブラウザのコマンドでは,
<em>display</em> ではなくて <em>save</em> を選ぶことに注意してください.
<bf>注意:</bf> このディスクイメージは, 1.44 メガバイトの 3.5 インチフロッピーディスクのみで使用可能です.<P></P></item>
<item>このイメージファイルからブートディスクを作成します,
<itemize>
<item>MS-DOSを使っている場合:
<url
url="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/tools/fdimage.exe"
name="fdimage.exe"> をダウンロードして, これを実行します.
<tscreen><verb>
E:\> tools\fdimage floppies\boot.flp a:
</verb></tscreen>
このプログラムは, A: ドライブをフォーマットした後 boot.flp の内容を書き込みます
(ここでは FreeBSD の配布物のトップレベルディレクトリにおり, フロッピーイメージ
は floppies ディレクトリにあると仮定しています).<P></P></item>
<item>UNIX システムを使っている場合:
<tscreen>
% dd if=boot.flp of=<em>disk&lowbar;device</em>
</tscreen>
を実行します. ここで, <em>disk&lowbar;device</em> はフロッピードライブに
対応する <tt>/dev</tt>の中のエントリです. FreeBSD では,
<tt>/dev/fd0</tt> が A:ドライブに, <tt>/dev/fd1</tt> が B:ドライブに
対応しています.<P></P></item>
</itemize>
<P></P></item>
<item>インストールディスクを A:ドライブに入れて, コンピュータを
立ち上げ直します. そうすると次のようなプロンプトが出てくるはずです.
<tscreen>
&gt;&gt; FreeBSD BOOT ...<newline>
Usage: &lsqb;&lsqb;&lsqb;0:&rsqb;&lsqb;wd&rsqb;(0,a)&rsqb;/kernel&rsqb;&lsqb;-abcCdhrsv&rsqb;<newline>
Use 1:sd(0,a)kernel to boot sd0 if it is BIOS drive 1<newline>
Use ? for file list or press Enter for defaults<newline>
Boot:
</tscreen>
ここで何もタイプしない場合, 5秒間の待ち時間の後に FreeBSD は
自動的にデフォルトの設定で立ち上がります. 立ち上げの際, どんな
ハードウェアが装備されているかを検出 (プローブ) します. この結果は
スクリーン上に表示されます.<P></P></item>
<item>立ち上げプロセスが終了したら, FreeBSD インストールメニューが
表示されます.
</item>
</enum>
<p><bf>もしも問題が起こった場合</bf>
<p>PC アーキテクチャの制限のため, 100パーセントの信頼をもって検出する
ことは不可能です. もしもあなたのハードウェアが間違って認識されたり,
検出途中でコンピュータが固まってしまうようなことが起こった場合,
まずこのガイドの <ref id="install:hw" name="サポートされている設定一覧">
の節を読んで, あなたのハードウェアが本当に
FreeBSD でサポートされているかどうかを確かめてください.
<p>ハードウェアがサポートされていた場合, リセットして
<tt>Boot:</tt> プロンプトが出てきたところで, <bf>-c</bf> と打ち込んで
ください. こうすると, FreeBSD はコンフィグレーションモードになり,
ハードウェアに関する情報を FreeBSD に与えることができるようになります.
インストールディスクの FreeBSD カーネルは, 多くのデバイスの IRQ,
IO アドレスが工場出荷時の値に設定されているものと仮定して作られています.
もしもあなたのハードウェアの設定を変更したなら, <bf> -c</bf>
オプションで立ち上げて, 設定がどうなっているかを指定してあげること
が必要になるでしょう.
<p>存在しないデバイスを検出すると, 実際に存在している他のデバイスの
検出に失敗することが考えられます. そのような場合は, 衝突している
デバイスを無効にしなくてはなりません.
<p>コンフィグレーションモードでは,
<itemize>
<item>カーネルに組み込まれているデバイスドライバの一覧を表示する</item>
<item>あなたのシステムにないハードウェアのデバイスドライバを無効にする</item>
<item>デバイスドライバの IRQ, DRQ, IO ポートアドレスなどの変更する</item>
</itemize>
などができます.
<p> <tt>config&gt;</tt> プロンプトが出ているところで, <tt>help</tt>
と打ち込むと, 使用可能なコマンドについての詳しい説明が出てきます.
あなたのマシンのハードウェア設定に合うようにカーネルを変更したら,
<tt>config&gt;</tt> プロンプトが出たところで <tt>quit</tt> と打ち込んで,
新しい設定でマシンを立ち上げます.
FreeBSD のインストールがひとたび終了した後は, コンフィグレーションモード
での変更はずっと保持されますので, 立ち上げのたびに設定変更をする必要は
なくなりますが, あなたのシステムの性能を高めるために,
カスタムカーネルを作るのが好ましいでしょう. カスタムカーネルの作成に関しては,
<ref id="kernelconfig" name="FreeBSD カーネルのコンフィグレーション">
の章をご覧ください.
<sect><heading>サポートされている設定一覧<label id="install:hw"></heading>
<p>現在 FreeBSD は, ISA, VL, EISA, PCI バスや, 386SX から Pentium クラス
までのさまざまな種類の PC で動作します (386SXはおすすめではありません).
IDE, ESDIドライブや, さまざまな SCSI コントローラ, ネットワークカードや
シリアルカードにも対応しています.
FreeBSD を走らせるには, 最低 4メガバイトの RAM が必要です. X Window System を
走らせるには最低でも 8メガバイトの RAM が推奨されます.
以下のリストでは, FreeBSD で動作が確認されているディスクコントローラ
やイーサネットカードです. 他の設定でもうまく動いてくれると
思いますが, 私たちのところには情報は入ってきていません.
<sect1><heading>ディスクコントローラ</heading>
<p>
<itemize>
<item>WD1003 (あらゆる MFM/RLL)
<item>WD1007 (あらゆる IDE/ESDI)
<item>IDE
<item>ATA
<item>Adaptec 1505 ISA SCSI コントローラ
<item>Adaptec 152x シリーズ ISA SCSI コントローラ
<item>Adaptec 1535 ISA SCSI コントローラ
<item>Adaptec 154x シリーズ ISA SCSI コントローラ
<item>Adaptec 174x シリーズ EISA SCSI コントローラ
(スタンダード, エンハンスドモード)
<item>Adaptec 274x/284x/2940/2940U/3940
(Narrow/Wide/Twin)
シリーズ EISA/VLB/PCI SCSI コントローラ
<item>Adaptec AIC7850 オンボード SCSI コントローラ
<item>Adaptec
<!-- AIC-6260 and - 実際のところ動いていません, joerg -->
AIC-6360系のボード
AHA-152x や SoundBlaster SCSI などがこれにあたります.
<bf>注意:</bf> Soundblaster カードには, オンボード BIOS
が載っていないので, このカードからは FreeBSD を起動できません.
オンボード BIOS とは, システム BIOS の I/O ベクタにブートデバイスを
登録するときに必要なものです. このカードは外部テープであるとか,
CD-ROM であるとかその他の場合には十分利用可能です.
同じことは, ブート ROM の載っていない AIC-6x60 系のカードにもいえます.
いくつかのシステムでは実際にブート ROM を持っています.
それは電源を入れるかリセットしたとき, 最初に表示されます.
詳しくはあなたのシステムやボードの解説書をご覧ください.
<item>Buslogic 545S &amp; 545c
<bf>注意:</bf> Buslogic社は古くは Bustek社といっていました.
<item>Buslogic 445S/445c VLバス SCSI コントローラ
<item>Buslogic 742A, 747S, 747c EISA SCSI コントローラ.
<item>Buslogic 946c PCI SCSI コントローラ
<item>Buslogic 956c PCI SCSI コントローラ
<item>NCR 53C810 , 53C825 PCI SCSI コントローラ.
<item>NCR5380/NCR53400 (``ProAudio Spectrum'') SCSI コントローラ.
<item>DTC 3290 EISA SCSI コントローラ (1542 エミュレーション)
<item>UltraStor 14F, 24F, 34F SCSI コントローラ.
<item>Seagate ST01/02 SCSI コントローラ.
<item>Future Domain 8xx/950 シリーズ SCSI コントローラ.
<item>WD7000 SCSI コントローラ.
</itemize>
サポートされている SCSI コントローラのすべてで, ディスク, テープドライブ
(含む DAT), CD-ROM ドライブなどの周辺機器との通信に SCSI-I,
SCSI-II が利用可能です.
現在, 次にあげるタイプの CD-ROM ドライブがサポートされてます.
<itemize>
<item>Soundblaster SCSI , ProAudio Spectrum SCSI (<tt>cd</tt>)
<item>ミツミ (全モデル) 独自のインタフェース (<tt>mcd</tt>)
<item>松下 / Panasonic (Creative)
CR-562/CR-563 インタフェース (<tt>matcd</tt>)
<item>ソニー インタフェース (<tt>scd</tt>)
<item>ATAPI IDE インタフェース
(まだまだお試し段階で, クオリティは低いです)
(<tt>wcd</tt>)
</itemize>
<sect1><heading>イーサネットカード</heading>
<p>
<itemize>
<item>Allied-Telesis AT1700, RE2000 カード
<item>SMC Elite 16 WD8013 Ethernet インタフェース,
その他多くの WD8003E, WD8003EBT, WD8003W, WD8013W,
WD8003S, WD8003SBT や WD8013EBTなどの互換品.
SMC Elite Ultra もサポートされています.
<item>DEC EtherWORKS III ネットワークインタフェースカード (DE203, DE204, DE205)
<item>DEC EtherWORKS II ネットワークインタフェースカード (DE200, DE201, DE202, DE422)
<item>DEC DC21040/DC21041/DC21140 ベースのネットワークインタフェースカード:
<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>SMC EtherPower (2)
<item>Zynx ZX342
</itemize>
<item>DEC FDDI (DEFPA/DEFEA) ネットワークインタフェースカード
<item>富士通 FMV-181, FMV-182
<item>富士通 MB86960A/MB86965A
<item>Intel EtherExpress
<item>Intel EtherExpress Pro/100B 100Mbit.
<item>Isolan AT 4141-0 (16 bit)
<item>Isolink 4110 (8 bit)
<item>Novell NE1000, NE2000, NE2100 イーサネットインタフェース
<item>3Com 3C501 カード
<item>3Com 3C503 Etherlink II
<item>3Com 3c505 Etherlink/+
<item>3Com 3C507 Etherlink 16/TP
<item>3Com 3C509, 3C579, 3C589 (PCMCIA) Etherlink III
<item>3Com 3C590, 3C595 Etherlink III
<item>HP PC Lan Plus (27247B と 27252A)
<item>東芝 イーサネットカード
<item>IBM , National Semiconductor社 PCMCIA
イーサネットカードもサポートされています.
</itemize>
<p><em>注意:</em> FreeBSD は今のところ, いくつかのイーサネットカードの
PnP (プラグ&amp;プレイ) 機能には対応していません. もし PnP で問題が起こる
ようでしたら, PnP 機能を無効にしてください.
<sect1><heading>その他のデバイス</heading>
<p>
<itemize>
<item> AST 4 ポート シリアルカード (シェアード IRQ 使用)
<item> ARNET 8 ポート シリアルカード (シェアード IRQ 使用)
<item> BOCA IOAT66 6 ポート シリアルカード (シェアード IRQ 使用)
<item> BOCA 2016 16 ポート シリアルカード (シェアード IRQ 使用)
<item> Cyclades Cyclom-y シリアルボード
<item> STB 4 ポート カード (シェアード IRQ 使用)
<item> SDL Communications Riscom/8 シリアルボード
<item> SDL Communications RISCom/N2 と N2pci 同期シリアルカード
<item> Digiboard Sync/570i high-speed 同期シリアルカード
<item>Decision-Computer Intl. "Eight-Serial" 8 ポートシリアルカード
(シェアード IRQ 使用)
<item> Adlib, SoundBlaster, SoundBlaster Pro,
ProAudioSpectrum, Gravis UltraSound, Gravis UltraSound MAX
Roland MPU-401 などのサウンドカード
<item>Matrox Meteor video フレームグラバー
<item>Creative Labs Video spigot フレームグラバー
<item>Omnimedia Talisman フレームグラバー
<item>X-10 power コントローラ
<item>PC ジョイスティックおよびスピーカ
</itemize>
FreeBSD は今のところ, IBM社のマイクロチャネルアーキテクチャ (MCA) バスには
対応していません.
<sect><heading>インストールの下準備</heading>
<p>FreeBSD のインストール方法はさまざまあります. それぞれの
インストール方法に対して, どのような下準備が必要かをこれから説明します.
<sect1><heading>CD-ROM からインストールする前に</heading>
<p>あなたの CD-ROM ドライブがサポートされていないタイプの場合は,
<ref id="install:msdos"
name="ハードディスクの MS-DOS パーティションからインストールする前に">
に飛んでください.
Walnut Creek の FreeBSD CD-ROM からインストールする場合は, 大した下準備
をしないでもうまくインストールできることでしょう (その他の CD-ROM
でもうまくいくでしょうが, その CD-ROM がどうやって作られているか, 私たち
はわかりませんので確実なことは言えません).
Walnut Creek の CD-ROM に収録されている, ``install.bat'' で直接 FreeBSD
を立ち上げることもできますし, ``makeflp.bat'' でブートフロッピーディスクを
つくることもできます. [注意: もし FreeBSD 2.1-RELEASE を使っていて
IDE CD-ROM ドライブを持っている場合, install.bat のかわりに
inst&lowbar;ide.bat もしくは atapiflp.bat を使ってください. ]
DOS から最も楽なインタフェースを使いたい場合は ``view'' と打ち込みます.
そうすると DOS でのメニューが立ち上がって, 可能なオプション
すべてを選択できます.
あなたが UNIX マシンでブートフロッピーディスクを作成している場合は,
<ref id="install" name="FreeBSD のインストール"> を参考にしてください.
DOS から, もしくはフロッピーディスクから起動をおこなうと,
メニュー ``Media'' から, インストールメディアとして CDROM を
選択することで, 配布ファイルをロードすることができるようになります.
他の種類のインストールメディアは不要なはずです.
システムインストールがすべて終了して, ハードディスクから起動
しなおしてからは, <tt>mount /cdrom</tt> とタイプする
ことでいつでも CD-ROM のマウントをすることができるようになります.
CD-ROM を取り出す前には <tt>umount /cdrom</tt> と打ち込まなくてはならない
ことを覚えておいてください. 単純にドライブから取り出さないように!
<quote><bf>特別な注意:</bf> インストールに入る前に,
CD-ROM をドライブに入れておいて, インストールフロッピーディスクが立ち上がる
ときに CD-ROM を見つけられるようにしておくようにしましょう. CD-ROM を
デフォルトでシステムにつけ加えたい場合も CD-ROM を入れておきます
(インストールメディアとして実際に CDROM を選択しない場合も同様).
</quote>
おわりに, あなたのマシンの CD-ROM を直接使って, FTP 経由で別のマシンに
FreeBSD をインストールさせたいとします. やり方は簡単です.
あなたのマシンのインストールが終了した後に, vipw コマンドを使って,
passwd ファイルに以下の行を追加します.
<tscreen><verb>
ftp:*:99:99::0:0:FTP:/cdrom:/nonexistent
</verb></tscreen>
こうするとあなたのマシンにネットワーク接続できる人 (そして,
login 許可を持っている人) は, メディアタイプとして FTP を選択できるように
なります. 具体的には, FTP サイトの選択メニューから ``Other'' を選択して,
<tt>ftp://<em>あなたのマシンのアドレス</em></tt>
を入力します.
<sect1><heading>フロッピーディスクからのインストールの前に</heading>
<p>あなたがフロッピーディスクからのインストールをしなくては
ならない場合, その理由はハードウェアがサポートされてなかったためか,
単にいばらの道を通ることを楽しんでいるからでしょうが, インストール用の
フロッピーディスクを用意する必要があります.
最低でも bin (基本配布ファイル) ディレクトリ内のすべてのファイル
を入れられるだけの 1.44 メガバイトか 1.2 メガバイトのフロッピーディスク
が必要です. これらのフロッピーディスクを DOS で作成している場合は,
フロッピーディスクは「MS-DOS の FORMAT コマンドでフォーマット」
されなくてはなりません. Windows をお使いの場合は, Windowsの
ファイルマネージャの初期化コマンドを使用してください.
工場での初期化済みディスクを「信用しないでください」. 念のためにあなた
自身でフォーマットし直してください. ユーザからのトラブル報告の多くは
ちゃんと初期化されていないディスクを使用していたことが原因となっています.
私が特にフォーマットし直してくださいと述べているのも, この理由からです.
他の FreeBSD マシンでフロッピーディスクを作成している場合,
フォーマットすることは悪いことではありません. いちいち DOS
ファイルシステムのフロッピーディスクを作成する必要はありませんので,
`disklabel' コマンドと `newfs' コマンドを使って, 次のような手順で
(3.5 インチ 1.44 メガバイトディスク用の) UFS ファイルシステムを
作成することもできます.
<tscreen><verb>
fdformat -f 1440 fd0.1440
disklabel -w -r fd0.1440 floppy3
newfs -t 2 -u 18 -l 1 -i 65536 /dev/rfd0
(5.25 インチの 1.2 メガバイトディスクの場合は "fd0.1200" と "floppy5" にしてください)
</verb></tscreen>
これで他のファイルシステムと同様に mount して書き込むことができます.
フォーマットされたフロッピーディスクを用意したら, それらにファイル
をコピーしなくてはなりません. 配布ファイルはいくつかのかたまり
にわかれていて, これらのかたまり五つで一般的な 1.44 メガバイトの
フロッピーディスクに収まるようになっています. フロッピーディスクに
入るだけファイルを入れていって, 配布ファイルをすべてコピーしてください.
それぞれの配布ファイルはサブディレクトリにコピーする必要があります. 例えば,
<bf>a:&bsol;bin&bsol;bin.aa</bf>とか,
<bf>a:&bsol;bin&bsol;bin.ab</bf>といった感じです.
インストールメディアの選択場面になったら, ``Floppy'' を選択して,
残りの指定をやってください.
<sect1><heading>ハードディスクの MS-DOS パーティションからインストールする前に
<label id="install:msdos"></heading>
<p>
ハードディスクの MS-DOS パーティションからインストールするときは,
まずファイルを <tt>C:&bsol;FREEBSD</tt> にコピーします.
CD-ROM にあるディレクトリ構造を反映してコピーしなくてはなりません.
DOS の <tt>xcopy</tt> コマンドの使用をおすすめします.
例えば, FreeBSD の最低限のインストールをするには, このような手順で
コピーします.
<tscreen><verb>
C> MD C:\FREEBSD
C> XCOPY /S E:\BIN C:\FREEBSD\BIN\
C> XCOPY /S E:\MANPAGES C:\FREEBSD\MANPAGES\
</verb></tscreen>
ここで, <tt>C:</tt>ドライブには十分なディスクスペースが残っており,
CD-ROM は <tt> E:</tt>ドライブに接続されているものとします.
MS-DOS からたくさんの `配布ファイル (DISTS)' をインストールしたい
(そしてディスクの余裕がある) 場合は, それぞれ <tt>C:&bsol;FREEBSD</tt>
ディレクトリにコピーします - <tt>BIN</tt> 配布ファイルは,
最低限必要なものです.
<sect1><heading>QIC/SCSI テープからのインストールの前に</heading>
<p>テープからのインストールは, おそらく FTP を利用したオンライン
インストールか, CD-ROM を利用したインストールができない場合の,
もっとも簡単な方法でしょう. インストールプログラムは, 以下のような
コマンドを使用して, 単純に配布ファイルがテープ上に tar されていることを
期待しています.
<tscreen>
cd /freebsd/distdir<newline>
tar cvf /dev/rwt0 (または /dev/rst0) dist1 .. dist2
</tscreen>
インストールに入る前に, テンポラリ (一時使用) ディレクトリに
十分なディスクスペースを確保して, 作成したテープの<bf>すべての</bf>
ファイルを格納できることを確認してください (テンポラリディレクトリは
自分で選ぶことができます). テープの特性上, ランダムにアクセスするこ
とができませんので, 一時的に極めて大量の容量を必要とします.
テープに準備しただけの量のディスクスペースを一時的に使用することに
留意してください.
<quote><bf>注意:</bf> インストールに入るときは, ブートフロッピーディスク
から立ち上げる<bf>前</bf>にテープをドライブに入れておかなくてはなりません.
さもないとインストール時のデバイス検出のときにテープを見つけられません. </quote>
<sect1><heading>ネットワーク経由のインストールの前に</heading>
<p>三つの物理的な接続形態で, ネットワーク経由のインストールを
おこなうことができます.
<descrip>
<tag>シリアルポート</tag> SLIP もしくは PPP 方式.
<tag>パラレルポート</tag> PLIP (laplink ケーブル使用)
<tag>イーサネット</tag> 標準的なイーサネットコントローラ
(いくつかの PCMCIA カードにも対応)
</descrip>
SLIP のサポートはまだまだ原始的とも呼べる方法なので, ラップトップと
他のコンピュータをシリアルケーブルで接続するといった具合いに,
直接接続してなくてはいけません. SLIP インストールは, ダイヤル機能を
持っていませんので, インストールするためには直接接続しなくてはなりません.
PPP インストールではダイヤルアップ接続が可能ですので, できれば PPP 接続の
方を選択しましょう.
もしもあなたがモデムを使用しているなら, あなたに残された選択肢は
ほぼ間違いなく PPP インストールでしょう. インストール時に必要になりますので,
サービスプロバイダ (ISP) に関する情報を用意しておきましょう.
少なくともプロバイダと, 可能ならあなたの IP アドレスを知っておかなくては
なりません (IP アドレスの欄を空白にしておいて, PPP に IP アドレスの
割り当て処理をさせてもかまいません). PPP ダイヤルの際は, とても
シンプルな端末エミュレータで作業することになりますので, お手持ちのモデムで
ISP にダイヤルするために, ``ATコマンド'' の使い方を知っておく必要があります.
FreeBSD (2.0R 以降) の動いている別のマシンと直接接続が可能でしたら,
``laplink'' パラレルポートケーブルで接続することを考えてみましょう.
パラレルポート経由のデータ転送スピードは, シリアルラインでの
一般的なスピード (最高 50kbit/sec) よりもずっと高速ですので,
高速にインストールすることができます.
最後になりますが, ネットワークインストールのうちでもっとも高速なものとしては
イーサネットアダプタを使用するのがあげられます. FreeBSD ではきわめて多くの
PC イーサネットカードをサポートしています. サポートされている
カードの表 (と, 必要な設定) は,
<ref id="install:hw" name="サポートされている設定一覧"> に書いてあります.
サポートされている PCMCIA カードを使っている場合には, ラップトップの電源を
入れる「前」に差し込んでおくことにも注意してください. 残念ながら今の
FreeBSD は, インストール時の活線挿抜には対応していません.
ネットワークでの IP アドレス, あなたのアドレスクラスに対応した
ネットマスク, マシン名を知っておくことも必要です. ネットワーク管理者の方に
たずねればどんな値を使ったらよいかを教えてくれるでしょう. もしも他のホストを
IP アドレスではなくて名前で引きたい場合, ネームサーバとゲートウェイ
のアドレスも知らなくてはなりません (PPP をご使用の場合は, プロバイダの
IP アドレスになります). これらのうちのすべて, またはいくつかを
知らない場合は, イーサネット経由でのインストールを始める前に「まず」
ネットワーク管理者に相談してください.
何らかのネットワーク接続ができたら, 続けてインストールを NFS か
FTP 経由でおこないます.
<sect2><heading>NFS インストールのための下準備</heading>
<p>NFS インストールはまったく単純明解です. FreeBSD の配布ファイルを
サーバの好きな場所にコピーしておいて, メディア選択で NFS を選択します.
もしサーバが ``privileged (特権) ポート'' へのアクセスのみをサポート
している場合, (Sun ワークステーションの標準ではこうなっています)
インストールを進める前に Options メニューを選択して, ``privileged
port'' オプションを選択してください.
イーサネットカードの性能が悪くて, 転送速度が遅くて困っている場合も,
適当な Options を選択するとよいでしょう.
NFS 経由でインストールするためには, サブディレクトリも
含めたマウントにサーバが対応している必要があります. 例えば,
FreeBSD &rel.current; の配布ファイルが
<bf>ziggy:/usr/archive/stuff/FreeBSD</bf>
にあるとすると, マシン ziggy では <bf>/usr</bf> や
<bf>/usr/archive/stuff</bf> だけではなく,
<bf>/usr/archive/stuff/FreeBSD</bf> の直接マウントが可能に
なっていなければなりません.
FreeBSD の <bf>/etc/exports</bf> ファイルでは, このことは
``<tt>-alldirs</tt>'' オプションによって制御されています.
他の NFS サーバの場合だとまた話が違ってくるかもしれません.
もしもサーバから `Permission Denied' というメッセージが
返ってくるようでしたら, サブディレクトリマウントをちゃんと
有効にできていないことが考えられます.
<sect2><heading>FTP インストールのための下準備</heading>
<p>FTP 経由のインストールは, FreeBSD &rel.current; の最新バージョンを
ミラーしているどのサイトからでも可能です. 世界中の妥当な FTP サイトの
選択肢をメニューに並べておきました.
このメニューに出ていない他の FTP サイトからインストール
する場合や, ネームサーバの設定に問題が生じた場合は,
メニューでサイト ``Other'' を選ぶところで, お好みの
URL でサイトを指定することができます. URL として直接 IP
アドレスで指定してもよく, 直接指定した場合はネームサーバ
がなくても FTP インストールが可能になります. 例えば,
<tscreen><verb>
ftp://192.216.222.4/pub/FreeBSD/&rel.current;-RELEASE
</verb></tscreen>
のような感じですね.
FTP 経由のインストールモードとして, このようなものが
使用可能です:
<descrip>
<tag>FTP Active</tag>
すべての FTP 転送の際に ``Active'' モードを使用します.
ファイアウォール内部のマシンではうまく動きませんが,
passive モードをサポートしていない古い FTP サーバでも
動作します. passive モードでの FTP 転送 (こちらが
デフォルトです) が失敗した場合は, active を使ってください.
<tag>FTP Passive</tag>
すべての FTP 転送の際に ``Passive'' モードを使用します.
このモードを使用することで, ランダムポートアクセスインを
許さないファイアウォールを越えることができるようになります.
</descrip>
<quote><bf>注意:</bf> Active, passive モードは `proxy'
接続と同じではありません! proxy FTP サーバは FTP 要求
を受け付け実際の FTP サーバへ転送します. </quote>
通常 proxy FTP サーバ に対しては, ユーザ名の一部として
@ 記号に続いて実際に接続したいサーバの名称を与える必要が
あります. そうすると proxy サーバは本当のサーバの「ふり」
をするようになります. 例えば: ftp.freebsd.org から ポート番号
1234 で要求を待つ proxy FTP サーバ foo.bar.com を使って
インストールしたいとします.
この場合では, 「オプション」メニューで FTP username を
ftp@ftp.freebsd.org, パスワードとして自分の電子メールアドレス
を指定します. インストールメディアとして FTP (または proxy
サーバがサポートしていれば passive FTP), URL を以下のようにします:
<tscreen><verb>
ftp://foo.bar.com:1234/pub/FreeBSD
</verb></tscreen>
ftp.freebsd.org の /pub/FreeBSD に対する FTP 要求については
foo.bar.com が代理で処理をおこなうことになり, 「むこう」
のマシンからインストールすることができます (インストール時
の要求により ftp.freebsd.org からファイルをもってきます).
<sect><heading>FreeBSD のインストール</heading>
<p>インストールの下準備を適切に書き留めておけば, なんの
問題もなく FreeBSD のインストールができることと思います.
何かうまくいかなかった場合は, あなたが使おうとしている
インストールメディアのことが書いてある箇所まで戻って
もう一度読むとよいでしょう. おそらく最初読んだときに
見落していた, 有効なヒントがあるものと思います.
ハードウェアの問題が出てきたとか, FreeBSD がまったく
立ち上がらない場合は, boot フロッピーディスクに提供されている
Hardware Guide を読んで, 何か解決方法はないか探してください.
FreeBSD のブートフロッピーディスクには, インストールをおこなうために
必要と思われるすべてのオンラインドキュメントを用意してあります.
もしもそのドキュメントがお望みのものでないようでしたら,
私たちはあなたが何にもっとも困っているのかを知りたいと思います.
コメントを &a.doc; にお送りください. FreeBSD のインストールプログラム
(sysinstall) を, うっとうしい ``step-by-step'' ガイドなしに,
プログラム自身で使用方法がわかるようにするのが最終目標です.
目標達成までには時間がかかりそうですが, ともかくそれが
目標なのであります.
閑話休題. ここに, 「典型的なインストールの手順」を
まとめてみましたので, お役にたてるものと思います.
<enum>
<item>ブートフロッピーディスクから起動します. ハードウェアの性能に
よりますが, 起動には 30秒から 3分かかります. 起動したら
初期選択画面が出てくるでしょう, もしもフロッピーディスクから
まったく起動しなかったり, どこかの段階で起動が止まってしまった
場合は, ハードウェアガイドの Q&amp;A を読んで, 理由を
探ってみます.
<item>F1 キーを叩きます. メニューシステムとインストールプログラム
全般に対しての使い方が表示されます. このメニューシステムを
使ったことがない場合は, 「徹底的に」読んでください.
<item>Options を選択し, 他に必要な特別な選択を
おこないます.
<item>典型的なインストールでおまかせしたい方は Novice を,
インストールのそれぞれの段階をいちいちコントロールしたい方は Custom を,
(可能であれば適切なデフォルトを使用して) 簡単にさっさと済ませたい方は
Express を, それぞれ好みに応じて選んでください.
FreeBSD を初めて使う方には, Novice を一番におすすめします.
<item>final configuration メニューからは, メニュー形式のさらに
進んだ設定をおこなうことができます. ネットワーク周りの
設定は, 特に CD-ROM / テープ / フロッピーディスクから
インストールして, まだネットワーク設定をおこなっていない
人にとっては特に重要でしょう. インストールの時点できちんと
設定しておけば, ハードディスクからシステムを立ち上げ直した
時点でネットワーク接続ができるようになっていることでしょう.
</enum>
<!-- なぜか最近の install.sgml では, 削除されてます. もったいない... -->
<!--
<sect1><heading>Express インストール</heading>
<p>Express インストールは Custom インストールとそんなに変わる
ところはないのですが, 必要な作業を流れに沿って順番に提示
してくれて, それぞれの段階で便利なガイドが表示されるところが
ことなっています.
<enum>
<item>インストールは `Partition Editor' から始まります.
ここでどのドライブを FreeBSD で使うかを指定します.
もしもドライブ全体を使いたい場合は, `A' コマンド
だけを打ち込めばよいはずです.
<item>次に `Label Editor' に進みます. 確保した FreeBSD の
パーティションをどのように使うか, または DOS のような
FreeBSD 以外のパーティションをどこにマウントするかなどを
指定します. 標準のままの使い方でよければ単に `A' と
打ち込みます.
<item>次は `Distributions' メニューに進みます.
ここでは何をインストールしたいかを選択します.
小規模システムにしたい場合は ``User'' を選択しますし,
FreeBSD からの何らかの拡張をしようと思っている場合は
``Developer'' を選択します.
どの選択肢も気に入らない場合は Custom を選んでください.
<item>次に, `Media' メニューで, どのメディアから
インストールしたいかを指定します. もしも望みのメディアが
選ばれており, 自動的に設定されていた場合は, ただメニュー
から戻ってくるだけで OK です. そうでない場合はメディアタイプ
の細かい指定をおこないます.
<item>おわりに, これまでのすべての指定で GO サインを出すか
どうか求められてきます (これまでの段階ではまだ
ディスクに書き込まれていませんし, GO サインを
出すまで書き込まれません). GO サインを出すと
いよいよインストールが始まります. 新しく
作ったパーティションや, 変更したパーティションの
情報が書き出され, 新しいファイルシステムが
作られたり, ファイルシステムはそのままでラベル
されたりします (新しいファイルシステムを作るか,
既存のものにラベルするかは, Label Editor の
newfs オプションをどう設定したかで決まります).
ファイルシステムができると選択した配布ファイルが
すべて展開されます.
</enum>
ここまでくれば, sysinstall プログラムでの作業は大体おしまいです.
`Quit' を選択できます. sysinstall プログラムを
インストーラとして使用している場合 (システムのインストール
が完了する直前) は, 最後の行でリターンキーを打って
`Quit' を選択すると, システムは再起動します (訳注:再起動した
ときにはブートフロッピーディスクを抜きとります). インストールの
際にブートマネージャオプションを選択していたなら, `F?'
プロンプトのついたブートメニューが現れるでしょう. 表示され
ているとおりにファンクションキーを押して FreeBSD を選択する
と, ハードディスクから FreeBSD が立ち上がることでしょう.
何らかの理由でうまくいかなかった場合は, ハードウェアガイドの
Q&amp;Aを読んで, 問題解決の手がかりを探してください.
<sect1><heading>Custom インストール</heading>
<p>このメニューを使えば, ``Commit'' しない限り, あなたの
システムを変更することなくすべての設定ができます. ``Commit''
することですでに指定しておいた, システム変更の要求を実際に
おこないます. メニューのなかの, いくつかのオプションでは,
変更点をその場で書き込めるように `Write' コマンドが用意
されていますが, 本当に必要があると確信を持っている場合のみ
使用するべきでしょう. 変更点を最後まで実際に書き込まないで
おいて, 最後の瞬間まで気が変わったときにオプションを変更
できるようにしておくべきでしょう.
もしも混乱したときは大抵, F1 キーを押すと表示される
スクリーンに関する正しい情報が得られると思います.
-->
<!-- ここまでコメントアウトしてます -->
<sect><heading>MS-DOS ユーザのためのQ&amp;A</heading>
<p>多くのFreeBSD ユーザは, MS-DOS が入っている PC に FreeBSD を
インストールしたいと考えます. そのようなシステムに
FreeBSD をインストールする際によく聞かれる質問を集めて
あります.
<p><bf>助けて! ディスクスペースが余ってないのです.
最初に MS-DOS のファイルを全部削除しないといけませんか? </bf>
もしあなたのマシンですでに MS-DOS が走っていて, FreeBSD の
インストール用の空きスペースが少ないか, まったくない場合でも
大丈夫です. FreeBSD の CD-ROM や, FTP サイトの <tt>tools</tt>
ディレクトリに FIPS プログラムというのがありますが,
これが非常に役立ちます.
FIPS を使えば, すでに存在している MS-DOS のパーティションを
二つに分けることができ, さらにもともとのパーティションは
残してくれて, 二つめのパーティションを FreeBSD の
インストールに使用することができるようになります.
まず DOS6.xx についてくる DEFRAG か, Norton Disk ツールを使って,
MS-DOS パーティションからフラグメント情報を取り去って, その後に
FIPS を走らせます. FIPS ユーティリティから必要な情報が
手に入ります. その後マシンを立ち上げ直して, 空いた場所に
FreeBSD をインストールします. どのくらいの空きスペースが
インストールに必要かは, <em>Distributions</em> メニューを
参考にしてください.
<bf>FreeBSD で MS-DOS の圧縮ファイルシステムにアクセス
できますか? </bf>
いいえ. もし Stacker(tm) や DoubleSpace(tm) のような
ユーティリティをお使いの場合, FreeBSD は非圧縮の部分にしか
アクセスできません. 残りの場所は一つの大きなファイルとして
(stack された, もしくは doublespace されたファイルとして)
見えます. <bf>そのファイルを削除しないでください!!</bf>
削除してしまうと後できっと後悔します.
非圧縮の MS-DOS の基本区画を作って, そちらを MS-DOS と
FreeBSD とのやり取りに使うのがよろしいでしょう.
<bf>MS-DOS 拡張フォーマットをマウントできますか?</bf>
はい. DOS 拡張パーティションは FreeBSD の他の「スライス」の最後に
マップされます. 例えば D:ドライブ が /dev/sd0s5, E:ドライブが
/dev/sd0s6, といった具合いです. もちろん, この例では拡張
パーティションが SCSI ドライブ 0 にあることを仮定しています.
IDE ドライブでは当然, ``sd'' が ``wd'' となります. 他の DOS ドライブを
マウントするのと同様に, 次のようにして拡張パーティションもちゃんと
マウントできます:
<tscreen><verb>
mount -t msdos /dev/sd0s5 /dos_d
</verb></tscreen>
<bf>MS-DOS のバイナリを FreeBSD で実行できますか?</bf>
まだです. この機能を実現するためのサポートを期待しているのですが,
いまのところ実際にこの作業をしている人間はいません. BSDI には
寄贈された BSD 用の DOS エミュレータがあり, 徐々に FreeBSD-current
に移植されつつあります.
もしあなたがこの作業に加わりたいと思いましたら &a.emulation
にご連絡ください.
それまでの間, <ref id="ports" name="ports コレクション"> には, pcemu
という素晴らしいアプリケーションがあり, これをつかうことで多くの
MS-DOS のテキストモードで動くプログラムを完全な 8088CPU の
エミュレーション環境で走らせることができます.

View file

@ -1,231 +0,0 @@
<!-- $Id: isdn.sgml,v 1.7 1997/02/22 13:01:15 peter Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.11 -->
<sect><heading>ISDN<label id="isdn"></heading>
<p><em>最終更新: &a.wlloyd;</em>.
<p><em>訳: &a.kiroh;.<newline>11 December 1996.</em>
<p>ISDN 技術とハードウェアに関しては,
<url url="http://alumni.caltech.edu/~dank/isdn/" name="Dan Kegel's
ISDN Page"> がよい参考になるでしょう.
ISDN の導入手順は, 簡単にいって以下のようになります.
<itemize>
<item>ヨーロッパ在住の方は, ISDN カードの節に進んでください.
<item>ISDN を使って, インターネットプロバイダに(専用線は使用せず), ダ
イアルアップ接続しようとしている場合は, ターミナルアダプタの使用を考え
てみてください. この方法はもっとも柔軟性があり, プロバイダを変更した場
合の問題も少ないでしょう.
<item>2つの LAN の間を接続しようする場合や, ISDN 専用線を使用する場合
には, スタンドアローンルータ/ブリッジの使用を勧めます.
</itemize>
<p>どの方法を用いるかを決定するには, 費用が重要な要素になってきます.
以下に, 最も安価な方法から, 高価な方法まで順に説明していきます.
<sect1><heading>ISDN カード</heading>
<p><em>原著者:&a.hm;.</em>
<p>このセクションの記述は, ヨーロッパの ISDN ユーザにのみ有効です.
サポートされているカードは, まだ北米の ISDN 標準には適合していないかもしれ
ません(?).
<p>このコードは, まだ大部分が開発段階にあります. とくにドライバに関し
ては, 二つのメーカーのカードしかサポートしていません.
<p>PC ISDN カードは, ISDN の最大のバンド幅 128Kbs をサポートします. こ
れらのカードは, ISDN 機器のうちもっとも安価な部類に入ります.
<p>FreeBSD 2.1.0 および 2.1.5 では, 初期の未完成の ISDN のためのコード
が /usr/src/gnu/isdn に含まれていますが, 古いバージョンのものですの
で使用しないでください. カーネルから ISDN をサポートしたい場合は,
bisdn パッケージを入手してください. このコードは, FreeBSD 2.2 からメイ
ンソースツリーから削除されています.
<p>bisdn という ISDN パッケージが以下のURLから入手できます.
<htmlurl url="ftp://ftp.muc.ditec.de/isdn" name="ftp.muc.ditec.de">
FreeBSD 2.1R, FreeBSD-current, NetBSDがサポートされています.
最新のソースは, 上記のftpサーバの isdn ディレクトリから,
bisdn-097.tar.gz という名前で入手できます.
以下のカードのドライバが存在します:
<itemize>
<item>EuroISDN (DSS1)および1TR6プロトコル用には, 現在すべての(passive) Teles
カードおよびそのクローンがサポートされています.
<item>Dr. Nauhaus - Niccy 1016
</itemize>
bisdn には, いくつかの制限があります.
特に ISDN に関連する機能のうち, 以下の機能はサポートされません.
<itemize>
<item>PPP はサポートされません. raw hdlc のみです. すなわち, Cisco 製
など, ほとんどのスタンドアロンーンルータ等とは接続できません.
<item>ブリッジングコントロールプロトコルはサポートされません.
<item>複数のカードは同時に使用できません.
<item>動的なバンド幅の変更はできません.
<item>チャンネルのバンドリングはできません.
</itemize>
majordomoによるメーリングリストが利用できます. 参加するには, 通常の
majordomo リクエストを以下のメールアドレスまで送ってください.
<htmlurl url="mailto:isdn-request@muc.ditec.de"
name="isdn-request@muc.ditec.de">.
<sect1><heading>ISDN ターミナルアダプタ</heading>
<p>ターミナルアダプタ (TA) はISDN に対して, 通常の電話線に対するモデ
ムに相当するものです.
<p>ほとんどの TA は, 標準のヘイズ AT コマンドセットを使用しているので,
単にモデムと置き換えて使うことができます.
TA は, 基本的にはモデムと同じように動作しますが, 接続方法は異なり, 通
信速度も古いモデムよりはるかに速くなります. <ref id="ppp" name="PPP">
の設定を, モデムの場合と同じように行ってください. とくにシリアル速度を
使用できる最高速度に設定するのを忘れないでください.
プロバイダへの接続に TA を使用する最大のメリットは, 動的 PPP を行える
ことです. 最近 IP アドレスが不足してきているため, ほとんどのプロバイダ
は, 専用の IP アドレスを割り当てないようになっています. ほとんどのスタ
ンドアローンルータは, 動的 IP アドレスに対応していません.
訳注: 最近の ISDN ルータでは, IP アドレスの動的割り当てに対応している
ものも多いようです. ただし制限がある場合もありますので, 詳しくはメーカ
に問い合わせてください.
TA を使用した場合の機能や接続の安定性は, 使用している PPP デーモンに完
全に依存します. そのため, FreeBSD で PPP の設定が完了していれば, 使用
している既存のモデムを ISDN の TA に簡単にアップグレードすることができ
ます. ただし, それまでの PPP のプログラムに問題があった場合, その問題
は TA に置き換えてもそのまま残ります.
最高の安定性を求めるのであれば, ユーザープロセス<ref id="userppp"
name="iijPPP"> ではなく, カーネル<ref id="ppp" name="PPP">を使用してく
ださい.
<p>以下の TA は, FreeBSD で動作確認ずみです.
<itemize>
<item>Motorola BitSurfer および Bitsurfer Pro
<item>Adtran
</itemize>
他の TA もほとんどの場合うまく動作するでしょう. TA のメーカーでは, TA
がほとんどの標準モデム AT コマンドセットを受け付けるようにするよう, 努
力しているようです.
外部 TA を使う際の最大の問題点は, モデムの場合と同じく良いシリアルカー
ドが必要であるということです.
シリアルデバイスの詳細, そして非同期シリアルポートと同期シリアルポート
の差については, ハンドブックの<ref id="uart" name="シリアルポート"> の
節を参照してください.
標準の PC シリアルポート(非同期)に接続された TA は, 128Kbs の接続を行っ
ていても, 最大通信速度が 115.2Kbs に制限されてしまいます. 128Kbs の
ISDN の性能を最大限に生かすためには, TA を同期シリアルカードに接続しな
ければなりません.
内蔵 TA を購入して, 同期/非同期問題を片付けてしまおうとは思わないでく
ださい. 内蔵 TA には, 単に標準 PC シリアルポートのチップが内蔵されてい
るだけです. 内蔵 TA の利点といえば, シリアルケーブルを買わなくていいと
いうことと, 電源コンセントが一つ少なくて済むということくらいでしょう.
同期カードと TA の組合せは 386 の FreeBSD マシンの場合でも, スタンドア
ローンのルータと同程度の速度は確保できます. またこの組合せでは, ルータ
より柔軟な設定が可能です.
同期カード/TA を選ぶか, スタンドアローンルータを選ぶかは, 多分に宗教的
な問題です. メーリングリストでもいくつか議論がありました. 議論の内容に
ついては, <url url="http://www.freebsd.org/search.html" name="archives">
を参照してください.
<sect1><heading>スタンドアローン ISDN ブリッジ/ルータ</heading>
<p>ISDN ブリッジやルータは, OS 特有のものではありません. もちろん
FreeBSD 特有のものでもありません. ルーティングやブリッジング技術に関す
る詳細は, ネットワークの参考書をご覧ください.
このページでは, ルータとブリッジにどちらでもあてはまるように記述します.
<p>ISDN ルータ/ブリッジは, ローエンドの製品のコストが下がってきている
こともあり, より一般的に使用されるようになるでしょう. ISDN ルータは,
外見は小さな箱で, ローカルのイーサネットネットワーク(もしくはカード)と
直接, 接続します. また, 自身で他のブリッジ/ルータとの接続を制御します.
PPP や他のプロトコルを使用するためのソフトウェアは, すべて組み込まれて
います.
ルータは, 完全な同期 ISDN 接続を使用するため, 通常の TA と比較してスルー
プットが大幅に向上します.
ISDN ルータ/ブリッジを使用する場合の最大の問題点は, 各メーカーの製品間
に相性の問題がまだ存在することです. インターネットプロバイダとの接続を
考えている場合には, プロバイダと相談することをお勧めします.
<p>事務所の LAN と家庭の LAN の間など, 二つの LAN セグメントの間を接続
しようとしている場合は, ブリッジ/ルータの使用がもっともメンテナンスが
簡単で, 努力が少なくてすむ方法です. 両側の機材を購入するのであれば, メー
カー間の接続性の問題もないでしょう.
たとえば家庭の LAN や出張所の LAN を本社のネットワークに接続するために
は, 以下のような設定が使用できます.
<em>出張所 LAN または 家庭 LAN</em>
ネットワークは, 10 Base T イーサネットです. ルータとネットワークの間は,
必要に応じて AUI/10BT トランシーバを使って接続します.
<verb>
---Sun ワークステーション
|
---FreeBSD マシン
|
---Windows 95 (別に勧めているわけじゃありません)
|
スタンドアローンルータ
|
ISDN BRI ライン
</verb>
家庭/出張所 LAN で, 一台しかコンピュータを接続しないのであれば, クロス
のツイストペアケーブルを使用して, スタンドアローンルータと直結も可能で
す.
<em>本社 LAN や他の LAN</em>
ネットワークは, ツイストペアイーサネットです.
<verb>
-------Novell サーバ
| |
|ハ ---Sun
| |
| ---FreeBSD
| |
|ブ ---Windows 95
| |
|___---スタンドアローンルータ
|
ISDN BRI ライン
</verb>
ほとんどのルータ/ブリッジでは, 別々の二つのサイトに対して, 同時にそれ
ぞれ独立した二つの PPP 接続が可能です. これは, 通常の TA ではサポート
されない機能で, ルータ/ブリッジ接続の大きな利点です (シリアルポートを
二つもつ特殊(そして高価な) TA では可能です). チャンネル割り当てや MPP
などと混同しないでください.
これは, 大変便利な機能です. たとえば事務所で専用線インターネット ISDN
接続を使用していて, 別の ISDN ラインを購入したくないとします. この場合,
事務所のルータは, 一つの専用線 B チャンネル接続(64Kbs)を維持しつつ, 別
の B チャンネルを他の用途に使用することができます. たとえば, 他の場所
とのダイアルイン, ダイアルアウトに使用したり, バンド幅を増やすために,
インターネットとの接続への動的に割り当て(MPP など)に使用したりすること
が可能です.
<p>またイーサネットブリッジは, IP パケットだけでなく IPX/SPX などすべての
プロトコルのパケットを中継することが可能です. </p>

View file

@ -1,74 +0,0 @@
<!-- $Id: jcontrib.sgml,v 1.6 1997/03/03 04:56:30 hanai Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<chapt><heading>FreeBSD Handbook 日本語化について<label id="jcontrib"></heading>
<p>FreeBSD 日本語ドキュメンテーションプロジェクトは, FreeBSD 関係の日本語
ドキュメントが少ないことを嘆いた数人の FreeBSD ユーザの提唱によって
1996年2月26日にスタートし, その最初の作業として, FreeBSD Handbook
の日本語への翻訳を始めました.
当初の予定から大幅に遅れながらもなんとか完成することができましたが,
これで終りではありません.
オリジナルの FreeBSD Handbook は日毎に更新されており, 私たちもまた
これに追い付くために作業を続けていきます. もちろん, 新しいメンバも大歓迎
です.
日本語翻訳版について, 何かお気づきの点がありましたら, &a.doc-jp;
までご連絡ください.
また, もし私たちの作業を手伝ってくれるなら,
<url url="http://www.astec.co.jp/~hanai/FreeBSD/" name="FreeBSD 日本語ドキュメンテーションプロジェクトのページ">をご覧の上, 是非参加してください.
<sect><heading>翻訳者 (五十音順)</heading>
<p>
<itemize>
<item>&a.asami
<item>&a.arimura
<item>&a.graphite
<item>&a.iwasaki
<item>&a.yoshiaki
<item>&a.candy
<item>&a.kimura
<item>&a.masaki
<item>&a.motoyuki
<item>&a.saeki
<item>&a.simokawa
<item>&a.yasu
<item>&a.mihoko
<item>&a.ts
<item>&a.nakai
<item>&a.ikuo
<item>&a.max
<item>&a.hanai
<item>&a.kiroh
<item>&a.hino
<item>&a.yuki
<item>&a.maruyama
<item>&a.mita
<item>&a.kmiyakoda
<item>&a.tomo
</itemize>
<sect><heading>査読者 (五十音順)</heading>
<p>
<itemize>
<item>&a.asami
<item>&a.iwasaki
<item>&a.yoshiaki
<item>&a.kanou
<item>&a.koga
<item>&a.saeki
<item>&a.hanai
<item>&a.nao
<item>&a.kiroh
<item>&a.hino
<item>&a.yuki
</itemize>
<sect><heading>ツール作成者</heading>
<p>
<itemize>
<item>&a.katsu
<item>&a.iwasaki
</itemize>

View file

@ -1,132 +0,0 @@
<!-- $Id: jmembers.sgml,v 1.7 1997/03/03 04:56:31 hanai Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!--
翻訳者及び査読者の名前及び電子メールアドレス
-->
<!ENTITY a.doc-jp "FreeBSD 日本語ドキュメンテーションプロジェクト
<tt><htmlurl url='mailto:doc-jp@jp.FreeBSD.ORG'
name='&lt;doc-jp@jp.FreeBSD.ORG&gt;'></tt>">
<!--
<!ENTITY a.asami "浅見 賢
<tt><htmlurl url='mailto:asami@FreeBSD.ORG'
name='&lt;asami@FreeBSD.ORG&gt;'></tt>">
浅見さんは既に authors.sgml に入っているのでコメントアウト ;-)
-->
<!ENTITY a.nakai "中井 幸博
<tt><htmlurl url='mailto:nakai@mlab.t.u-tokyo.ac.jp'
name='&lt;nakai@mlab.t.u-tokyo.ac.jp&gt;'></tt>">
<!ENTITY a.koga "こがよういちろう
<tt><htmlurl url='mailto:y-koga@ccs.mt.nec.co.jp'
name='&lt;y-koga@ccs.mt.nec.co.jp&gt;'></tt>">
<!ENTITY a.iwasaki "岩崎 満
<tt><htmlurl url='mailto:iwasaki@jp.FreeBSD.org'
name='&lt;iwasaki@jp.FreeBSD.org&gt;'></tt>">
<!ENTITY a.yuki "前田 幸範
<tt><htmlurl url='mailto:yuki@jp.FreeBSD.org'
name='&lt;yuki@jp.FreeBSD.org&gt;'></tt>">
<!--
<!ENTITY a.max "中根 雅文
<tt><htmlurl url='mailto:max@FreeBSD.ORG'
name='&lt;max@FreeBSD.ORG&gt;'></tt>">
中根さんは既に authors.sgml に入っているのでコメントアウト ;-)
-->
<!ENTITY a.yasu "鈴木 康修
<tt><htmlurl url='mailto:yasu@hike.te.chiba-u.ac.jp'
name='&lt;yasu@hike.te.chiba-u.ac.jp&gt;'></tt>">
<!ENTITY a.katsu "勝間田 淳
<tt><htmlurl url='mailto:katsu@baum.kiyose.tokyo.jp'
name='&lt;katsu@baum.kiyose.tokyo.jp&gt;'></tt>">
<!ENTITY a.ts "冨田 重成
<tt><htmlurl url='mailto:ts@icu.ac.jp'
name='&lt;ts@icu.ac.jp&gt;'></tt>">
<!ENTITY a.saeki "佐伯 隆司
<tt><htmlurl url='mailto:saeki@jp.FreeBSD.org'
name='&lt;saeki@jp.FreeBSD.org&gt;'></tt>">
<!ENTITY a.kiroh "はらだ きろう
<tt><htmlurl url='mailto:kiroh@kh.rim.or.jp'
name='&lt;kiroh@kh.rim.or.jp&gt;'></tt>">
<!ENTITY a.masaki "櫛田 昌希
<tt><htmlurl url='mailto:masaki@po.iijnet.or.jp'
name='&lt;masaki@po.iijnet.or.jp&gt;'></tt>">
<!ENTITY a.hino "日野 浩志
<tt><htmlurl url='mailto:hino@nwk.cl.nec.co.jp'
name='&lt;hino@nwk.cl.nec.co.jp&gt;'></tt>">
<!ENTITY a.mita "三田 吉郎
<tt><htmlurl url='mailto:mita@jp.FreeBSD.org'
name='&lt;mita@jp.FreeBSD.org&gt;'></tt>">
<!ENTITY a.yoshiaki "内川 喜章
<tt><htmlurl url='mailto:yoshiaki@kt.rim.or.jp'
name='&lt;yoshiaki@kt.rim.or.jp&gt;'></tt>">
<!ENTITY a.arimura "有村 光晴
<tt><htmlurl url='mailto:arimura@jp.FreeBSD.org'
name='&lt;arimura@jp.FreeBSD.org&gt;'></tt>">
<!ENTITY a.hanai "花井 浩之
<tt><htmlurl url='mailto:hanai@jp.FreeBSD.org'
name='&lt;hanai@jp.FreeBSD.org&gt;'></tt>">
<!ENTITY a.tomo "渡辺 智雄
<tt><htmlurl url='mailto:tomo@jp.FreeBSD.org'
name='&lt;tomo@jp.FreeBSD.org&gt;'></tt>">
<!ENTITY a.mihoko "田中 美穂子
<tt><htmlurl url='mailto:mihoko@pa.yokogawa.co.jp'
name='&lt;mihoko@pa.yokogawa.co.jp&gt;'></tt>">
<!ENTITY a.simokawa "下川 英敏
<tt><htmlurl url='mailto:simokawa@jp.FreeBSD.org'
name='&lt;simokawa@jp.FreeBSD.org&gt;'></tt>">
<!ENTITY a.graphite "石墨 紀孝
<tt><htmlurl url='mailto:graphite@jp.FreeBSD.org'
name='&lt;graphite@jp.FreeBSD.org&gt;'></tt>">
<!ENTITY a.kimura "木村 成伴
<tt><htmlurl url='mailto:kimura@netlab.is.tsukuba.ac.jp'
name='&lt;kimura@netlab.is.tsukuba.ac.jp&gt;'></tt>">
<!ENTITY a.ikuo "中川 郁夫
<tt><htmlurl url='mailto:ikuo@jp.FreeBSD.org'
name='&lt;ikuo@jp.FreeBSD.org&gt;'></tt>">
<!ENTITY a.kmiyakoda "都田 克郎
<tt><htmlurl url='mailto:kmiyakoda@ctn.co.jp'
name='&lt;kmiyakoda@ctn.co.jp&gt;'></tt>">
<!ENTITY a.kanou "狩野 宏樹
<tt><htmlurl url='mailto:g92k0323@cfi.waseda.ac.jp'
name='&lt;g92k0323@cfi.waseda.ac.jp&gt;'></tt>">
<!ENTITY a.nao "浜田 直樹
<tt><htmlurl url='mailto:nao@tom-yam.or.jp'
name='&lt;nao@tom-yam.or.jp&gt;'></tt>">
<!ENTITY a.maruyama "丸山 剛司
<tt><htmlurl url='mailto:tmaruya@nnc.or.jp'
name='&lt;tmaruya@nnc.or.jp&gt;'></tt>">
<!ENTITY a.candy "神田敏広
<tt><htmlurl url='mailto:candy@fct.kgc.co.jp'
name='&lt;candy@fct.kgc.co.jp&gt;'></tt>">
<!ENTITY a.motoyuki "今野 元之
<tt><htmlurl url='mailto:motoyuki@st.rim.or.jp'
name='&lt;motoyuki@st.rim.or.jp&gt;'></tt>">

View file

@ -1,492 +0,0 @@
<!-- $Id: kerberos.sgml,v 1.4 1997/02/22 13:01:19 peter Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.10 -->
<sect><heading>Kerberos<label id="kerberos"></heading>
<p><em>原作: &a.markm; (&a.md; からの寄稿に基づいています).</em>
<em>訳: &a.arimura;.</em>
Kerberosは, サーバのサービスによってユーザが安全に認証を受けられる
ようにするための, ネットワークの付加システム及びプロトコルです.
リモートログイン, リモートコピー, システム間での安全なファイルのコピ
ーやその他のリスクの高い仕事がかなり安全に, そしてこれまでより制御
できるようになります.
以下の文章は, FreeBSD用として配布されているKerberosをセットアップ
する際のガイドとして読むことができます.
しかし, 完全な説明が必要な場合には, マニュアルページを読んだ方がよい
でしょう.
FreeBSDのKerberosは, オリジナルの4.4BSD-Liteの配布に含まれている
ものではなく, FreeBSD 1.1.5.1のときに移植されたeBonesです.
これはアメリカ/カナダの外で作成されており, これら以外の国の人々にも
手に入れられるものです.
このソフトウェアを合法的な配布物として得るために, アメリカも
しくはカナダのサイトから<em>持ってこないでください</em>.
でないと, そのサイトが<em>大変な</em>問題に巻き込まれます.
合法的な配布は, 南アフリカの<tt>skeleton.mikom.csir.co.za</tt>から
入手することができます.
<sect1>
<heading>初期データベースの作成</heading>
<p>この作業はKerberosサーバだけでおこないます. まず, 古いKerberosの
データベースが存在しないことを確認してください.
ディレクトリ<tt>/etc/kerberosIV</tt>に移って, 次のファイルだけが
存在することをチェックします:
<tscreen><verb>
grunt# cd /etc/kerberosIV
grunt# ls
README krb.conf krb.realms
</verb></tscreen>
<p>もし他のファイル (<tt>principal.*</tt>や<tt>master_key</tt>) が
存在する場合には, <tt>kdb_destroy</tt>というコマンドで古い
Kerberosデータベースを消してください.
Kerberosが走っていなければ, 単に<tt>rm</tt>で余計なファイルを消せ
ばよいです.
まず, <tt>krb.conf</tt>と<tt>krb.realms</tt>を編集してKerberosの
管理領域 (realm) を定義してください. ここでは管理領域が<it>GRONDAR.ZA</it>
で, サーバ名が<it>grunt.grondar.za</it>であるとします.
<tt>krb.conf</tt>というファイルを次のように編集してください:
<tscreen><verb>
grunt# cat krb.conf
GRONDAR.ZA
GRONDAR.ZA grunt.grondar.za admin server
CS.BERKELEY.EDU okeeffe.berkeley.edu
ATHENA.MIT.EDU kerberos.mit.edu
ATHENA.MIT.EDU kerberos-1.mit.edu
ATHENA.MIT.EDU kerberos-2.mit.edu
ATHENA.MIT.EDU kerberos-3.mit.edu
LCS.MIT.EDU kerberos.lcs.mit.edu
TELECOM.MIT.EDU bitsy.mit.edu
ARC.NASA.GOV trident.arc.nasa.gov
</verb></tscreen>
<p>この例にあるような他の管理領域は, 実際には必要ありません.
この例は複数の管理領域を認識する方法を示したものですので,
これらの行は含めなくても結構です.
1行目はこのシステムが動いている管理領域の名前です.
他の行は管理領域とホスト名のエントリです.
行の1つめの単語が管理領域で, 2つめがその管理領域の中で
``鍵配布センター''(Key Distribution Center) として働くホスト名です.
ホスト名の次に ``admin server'' と書いてある場合には, そのホストが
``管理データベースサーバ''(Administrative Database Server) も提供
することを意味します.
これらの単語について詳しく知りたい場合にはKerberosのマニュアル
ページをご覧ください.
ここで, <it>GRONDAR.ZA</it>という管理領域に<it>grunt.grondar.za</it>
およびその他の<it>.grondar.za</it>ドメインのすべてのホストを追加し
なければなりません. <tt>krb.realms</tt>は次のようになります:
<tscreen><verb>
grunt# cat krb.realms
grunt.grondar.za GRONDAR.ZA
.grondar.za GRONDAR.ZA
.berkeley.edu CS.BERKELEY.EDU
.MIT.EDU ATHENA.MIT.EDU
.mit.edu ATHENA.MIT.EDU
</verb></tscreen>
<p>もう一度注意しますが, 他の管理領域を書く必要はありません.
これらは複数の管理領域を認識できるようにマシンを設定する方法を
示した例ですので, これらの行は消して構いません.
1行目は名前をつけた管理領域に<it>特定の</it>システムを含めるための
ものです. 残りの行は名前をつけた管理領域にサブドメインのデフォルトの
システムを含めるためのものです.
これでデータベースを作成する準備ができました. この操作はKerberos
サーバ (鍵配布センター) を起動するだけです. <tt>kdb_init</tt>コ
マンドを次のように実行してください:
<tscreen><verb>
grunt# kdb_init
Realm name [default ATHENA.MIT.EDU ]: GRONDAR.ZA
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.
Enter Kerberos master key:
</verb></tscreen>
<p>ここで鍵を保存して, ローカルのマシンにあるサーバが取り出せるように
します. それには<tt>kstash</tt>コマンドを使用します.
<tscreen><verb>
grunt# kstash
Enter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
</verb></tscreen>
<p>これで暗号化されたマスタパスワードが
<tt>/etc/kerberosIV/master_key</tt>に保存されました.
<sect1>
<heading>すべてが動くようにするための設定</heading>
<p>Kerberosを導入する<it>それぞれの</it>システムのデータベースに, 2つ
のprincipal (主体名) を追加する必要があります. その名前は
<tt>kpasswd</tt>と<tt>rcmd</tt>です. これら2つのprincipalは, 個々
のシステムにおいて, システム名と同じ名前のインスタンスと組にして作成
されます.
これらの<tt>kpasswd</tt>と<tt>rcmd</tt>というデーモンによって, 他の
システムからKerberosのパスワードを変更したり, <tt>rcp</tt>や
<tt>rlogin</tt>, <tt>rsh</tt>といったコマンドを実行したりできるよ
うになります.
それでは実際にこれらのエントリを追加しましょう:
<tscreen><verb>
grunt# kdb_edit
Opening database...
Enter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.
Principal name: passwd
Instance: grunt
<Not found>, Create [y] ? y
Principal: passwd, Instance: grunt, kdc_key_ver: 1
New Password: <---- ここは「RANDOM」と入力してください
Verifying password
New Password: <---- ここは「RANDOM」と入力してください
Random password [y] ? y
Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
Max ticket lifetime (*5 minutes) [ 255 ] ?
Attributes [ 0 ] ?
Edit O.K.
Principal name: rcmd
Instance: grunt
<Not found>, Create [y] ?
Principal: rcmd, Instance: grunt, kdc_key_ver: 1
New Password: <---- ここは「RANDOM」と入力してください
Verifying password
New Password: <---- ここは「RANDOM」と入力してください
Random password [y] ?
Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
Max ticket lifetime (*5 minutes) [ 255 ] ?
Attributes [ 0 ] ?
Edit O.K.
Principal name: <---- 何も入力しないと終了します
</verb></tscreen>
<sect1>
<heading>サーバファイルの作成</heading>
<p>次に, 各マシンにおけるサービスを定義している, すべてのインスタンス
を展開します. これには<tt>ext_srvtab</tt>というコマンドを使用しま
す. このコマンドで作成されるファイルは, Kerberosの各クライアン
トの/etc/kerberosIVディレクトリに<it>安全な方法で</it>コピーまたは
移動する必要があります. このファイルはそれぞれのサーバとクラ
イアントに存在しなければならず, またKerberosの運用において重要なも
のです.
<tscreen><verb>
grunt# ext_srvtab grunt
Enter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Generating 'grunt-new-srvtab'....
</verb></tscreen>
<p>このコマンドは一時的なファイルを作成するだけです. ファイル名をすべ
てのサーバが読めるような<tt>srvtab</tt>という名前に変更しな
ければなりません. <tt>mv</tt>コマンドを用いてシステムの場所に移動
してください.
<tscreen><verb>
grunt# mv grunt-new-srvtab srvtab
</verb></tscreen>
<p>そのファイルがクライアントに配るためのもので, ネットワークが安全で
はないと思われる場合には, <tt>&lt;client&gt;-new-srvtab</tt>を移動
可能なメディアにコピーして物理的に安全な方法で運んでください. クラ
イアントの<tt>/etc/kerberosIV</tt>ディレクトリで, 名前を
<tt>srvtab</tt>に変更し, modeを600にするのを忘れないでください:
<tscreen><verb>
grumble# mv grumble-new-srvtab srvtab
grumble# chmod 600 srvtab
</verb></tscreen>
<sect1>
<heading>データベースへのユーザの追加</heading>
<p>ここで, ユーザのエントリをデータベースに追加する必要があります.
始めに, ユーザ<it>jane</it>のエントリを作成してみましょう.
<tt>kdb_edit</tt>を用いて次のように作成してください:
<tscreen><verb>
grunt# kdb_edit
Opening database...
Enter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.
Principal name: jane
Instance:
<Not found>, Create [y] ? y
Principal: jane, Instance: , kdc_key_ver: 1
New Password: <---- 安全なパスワードを入れてください
Verifying password
New Password: <---- もう一度パスワードを入れてください
Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
Max ticket lifetime (*5 minutes) [ 255 ] ?
Attributes [ 0 ] ?
Edit O.K.
Principal name: <---- 何も入力しないと終了します
</verb></tscreen>
<sect1>
<heading>すべてのテスト</heading>
<p>まず始めにKerberosデーモンを起動する必要があります.
<tt>/etc/sysconfig</tt>ファイルを正しく編集してあれば, マシンを再
起動することでに自動的にデーモンが起動します. これはKerberosサー
バでのみ必要です. Kerberosクライアントは<tt>/etc/kerberosIV</tt>か
ら必要なものを自動的に入手します.
<tscreen><verb>
grunt# kerberos &
grunt# Kerberos server starting
Sleep forever on error
Log file is /var/log/kerberos.log
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Current Kerberos master key version is 1
Local realm: GRONDAR.ZA
grunt# kadmind -n &
grunt# KADM Server KADM0.0A initializing
Please do not use 'kill -9' to kill this job, use a
regular kill instead
Current Kerberos master key version is 1.
Master key entered. BEWARE!
</verb></tscreen>
<p>さあ, これで上で作成した<it>jane</it>というIDのチケットを
<tt>kinit</tt>コマンドで得ることができます:
<tscreen><verb>
grunt$ kinit jane
MIT Project Athena (grunt.grondar.za)
Kerberos Initialization for "jane"
Password:
</verb></tscreen>
<p><tt>klist</tt>コマンドを用いてトークンを見て, きちんとチケットを持って
いるかどうか確認してください:
<tscreen><verb>
grunt$ klist
Ticket file: /tmp/tkt245
Principal: jane@GRONDAR.ZA
Issued Expires Principal
Apr 30 11:23:22 Apr 30 19:23:22 krbtgt.GRONDAR.ZA@GRONDAR.ZA
</verb></tscreen>
<p><tt>passwd</tt>コマンドを用いてパスワードを変更して, kpasswdデーモ
ンがKerberosデータベースに対して認証されるかどうかチェックして
ください:
<tscreen><verb>
grunt$ passwd
realm GRONDAR.ZA
Old password for jane:
New Password for jane:
Verifying password
New Password for jane:
Password changed.
</verb></tscreen>
<sect1>
<heading><tt>su</tt>特権の追加</heading>
<p>root権限が必要なユーザは<it>誰でも</it>, <tt>su</tt>コマンドのパス
ワードをユーザ毎に<it>別のもの</it>として持つことができます.
<it>root</it>に<tt>su</tt>できる権利を与えられたidを追加します.
これは, principalに付いている<it>root</it>というインスタンスに
よって制御されています. <tt>kdb_edit</tt>を用いて
<it>jane.root</it>というエントリをKerberosデータベースに作成します:
<tscreen><verb>
grunt# kdb_edit
Opening database...
Enter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.
Principal name: jane
Instance: root
<Not found>, Create [y] ? y
Principal: jane, Instance: root, kdc_key_ver: 1
New Password: <---- 安全なパスワードを入れます
Verifying password
New Password: <---- もう一回パスワードを入れます
Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
Max ticket lifetime (*5 minutes) [ 255 ] ? 12 <--- ここは短くしてください
Attributes [ 0 ] ?
Edit O.K.
Principal name: <---- 何も入力しないと終了します
</verb></tscreen>
<p>実際にトークンをもらって, ちゃんと働いているかどうか確認しましょう:
<tscreen><verb>
grunt# kinit jane.root
MIT Project Athena (grunt.grondar.za)
Kerberos Initialization for "jane.root"
Password:
</verb></tscreen>
<p>ここでrootユーザの<tt>.klogin</tt>ファイルにユーザを追加する必要が
あります.
<tscreen><verb>
grunt# cat /root/.klogin
jane.root@GRONDAR.ZA
</verb></tscreen>
<p><tt>su</tt>してみましょう:
<tscreen><verb>
[jane@grunt 10407] su
Password:
grunt#
</verb></tscreen>
どのトークンを持っているか見てみましょう:
<tscreen><verb>
grunt# klist
Ticket file: /tmp/tkt_root_245
Principal: jane.root@GRONDAR.ZA
Issued Expires Principal
May 2 20:43:12 May 3 04:43:12 krbtgt.GRONDAR.ZA@GRONDAR.ZA
</verb></tscreen>
<sect1>
<heading>他のコマンドの使用</heading>
<p>ここまでの例では, <tt>jane</tt>というprincipalを<tt>root</tt>とい
うインスタンス付きで作成しました. これはユーザと同じ名前をprincipalと
しており, Kerberosのデフォルトの値です;
<em>&lt;username&gt;.</em><tt>root</tt>という形式の
<em>&lt;principal&gt;.&lt;instance&gt;</em>で, 必要なエント
リが<tt>root</tt>のホームディレクトリの<tt>.klogin</tt>ファイルに
あれば, <em>&lt;username&gt;</em>がrootに<tt>su</tt>することができま
す.
<tscreen><verb>
grunt# cat /root/.klogin
jane.root@GRONDAR.ZA
</verb></tscreen>
<p>同様に, ユーザのホームディレクトリの<tt>.klogin</tt>ファイルに次の
ような行がある場合には:
<tscreen><verb>
[jane@grunt 10543] cat ~/.klogin
jane@GRONDAR.ZA
jack@GRONDAR.ZA
</verb></tscreen>
<p><em>jane</em>または<em>jack</em>という名前で (前述の<tt>kinit</tt>
によって) 認証されている<em>GRONDAR.ZA</em>という管理領域のユーザ
なら誰でも<tt>rlogin</tt>や<tt>rsh</tt>, <tt>rcp</tt>等によってこ
のシステム (<em>grunt</em>) の<em>jane</em>のアカウントまたはファ
イルにアクセスできます.
例えば, Janeが他のシステムにKerberosを用いてloginします:
<tscreen><verb>
[jane@grumble 573] kinit
MIT Project Athena (grunt.grondar.za)
Password:
[jane@grumble 574] rlogin grunt
Last login: Mon May 1 21:14:47 from grumble
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995
[jane@grunt 10567]
</verb></tscreen>
<p>次の例では, Jackが同じマシンのJaneのアカウントにloginします. Janeは
<tt>.klogin</tt>ファイルを前述のように設定しており,
Kerberosでは<em>jack</em>というprincipalをインスタンスなしで設定してあ
ります.
<tscreen><verb>
[jack@grumble 573] kinit
[jack@grumble 574] rlogin grunt -l jane
MIT Project Athena (grunt.grondar.za)
Password:
Last login: Mon May 1 21:16:55 from grumble
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995
[jane@grunt 10578]
</verb></tscreen>

File diff suppressed because it is too large Load diff

View file

@ -1,523 +0,0 @@
<!-- $Id: kerneldebug.sgml,v 1.6 1997/03/25 06:31:27 hanai Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.14 -->
<chapt><heading>カーネルデバッグ<label id="kerneldebug"></heading>
<p><em>原作 &a.paul; and &a.joerg;</em>
<p><em>訳: &a.yoshiaki;. <newline>
18 March 1997. </em>
<sect><heading>kgdbによるカーネルのクラッシュダンプのデバッグ</heading>
<p>ここではクラッシュダンプ (crash dump : 訳注 この文脈では kernel 自身
の異常によって停止した場合に出力されるイメージを指します) によるカー
ネルデバッグの方法を示します.
ここではダンプするための十分なスワップ (swap) の容量があるものとし
ます.
もし複数のスワップパーティションを持ち, 最初のパーティションがダンプ
を保持するのに十分な大きさを持たない場合は別のダンプデバイスを使うよ
うに (<tt>config kernel</tt> 行で) カーネルのコンフィグをおこなうか,
dumpon(8)コマンドを使って別のデバイスを示すことができます. スワップ
をおこなわないデバイスへのダンプ, 例えばテープへのダンプは現在サポートさ
れていません. カーネルのコンフィグは <tt>config -g</tt> によって行っ
てください.
<ref id="kernelconfig" name="FreeBSDカーネルのコンフィグレーション">
には FreeBSDのカーネルの設定の詳細がありますので参照してください.
<tt>dumpon(8)</tt>コマンドを使ってどこへダンプするかカーネルに伝えて
ください(swapon(8)によってそのパーティションがスワップとして設定された
後でなければならないことに注意してください). これは普通は
<tt>/etc/sysconfig</tt> や <tt>/etc/rc</tt>で設定されます. あるいは
別の方法としてカーネルコンフィグレーションファイルの `config'行の `dump'節 で
ダンプデバイスをハードコードすることができます. この方法はあまりよくは
ありません. カーネルがブート時に crash する場合のクラッシュダンプを取り
たい時だけ使うべきです.
<em><bf>Note:</bf> 以下では `<tt>kgdb</tt>'という用語は <tt>gdb</tt>を
カーネルデバッグモードで動かしていることを意味します. <tt>gdb</tt>を
<tt>-k</tt>オプションをつけて起動するか <tt>kgdb</tt>という名前でリン
クして起動することでこのモードになります. デフォルトでは このリンク
は作られていません. また, このアイデアは GNU関係者たちが彼らのツール
を別の名前で呼び出した時に異なった動作をするということを好まない, と
いう点で不評です. あるいは将来この機能を廃止することになるかもしれません. </em>
カーネルを作った時にそのコピーを <tt>kernel.debug</tt>という名前で作
りましょう. また, オリジナルに対して <tt>strip -d</tt>を実行します.
オリジナルを普通にインストールします. また strip していないカーネル
も同様にインストールすることができますが, シンボルテーブルの参照時間
がいくつかのプログラムでは劇的に増加するでしょう. また, カーネル全体
はブート時に読み込まれスワップアウトされないため数メガバイトの物理メ
モリが無駄になります.
例えばブートプロンプトで新しいカーネルの名前をタイプすることによって,
新しいカーネルをテストした場合で, 再びシステムを動かすのに別のカーネ
ルで立ち上げることが必要な場合はブートプロンプトで <tt>-s</tt>フラグ
を使いシングルユーザの状態にしてください. そして以下のような操作をおこな
います.
<tscreen><verb>
fsck -p
mount -a -t ufs # /var/crash 用のファイルシステムを書き込み可能にする
savecore -N /kernel.panicked /var/crash
exit # ...マルチユーザモードへ移行
</verb></tscreen>
ここに示した <tt>savecore(8)</tt>は (現在動いているものとは別の) カー
ネルのシンボル名の抽出をおこなうために使っています. 抽出はデフォルトで
は現在動いているカーネルに対しておこなわれ, クラッシュダンプとカーネルシンボ
ルのくい違いのためにまったく何もしません (訳注:そのためにオプション
で実際にダンプをおこしたカーネルを指定します).
クラッシュダンプの起きた後に <tt>/sys/compile/WHATEVER</tt>へ行き
<tt>kgdb</tt>を動かします. <tt>kgdb</tt> より次のようにします.
<tscreen><verb>
symbol-file kernel.debug
exec-file /var/crash/kernel.0
core-file /var/crash/vmcore.0
</verb></tscreen>
こうすると, クラッシュダンプを使ってカーネルソースを他のプログラムと同様に
デバッグすることができます.
次に <tt>kgdb</tt> での手順のセッションのログを示します. 長い行は読
みやすくするために改行しました. また, 参照のために行番号を入れてあり
ます. ただし, これは実際の pcvtコンソールドライバの開発中の実際のエ
ラーのトレースです.
<tscreen><verb>
1:Script started on Fri Dec 30 23:15:22 1994
2:uriah # cd /sys/compile/URIAH
3:uriah # kgdb kernel /var/crash/vmcore.1
4:Reading symbol data from /usr/src/sys/compile/URIAH/kernel...done.
5:IdlePTD 1f3000
6:panic: because you said to!
7:current pcb at 1e3f70
8:Reading in symbols for ../../i386/i386/machdep.c...done.
9:(kgdb) where
10:#0 boot (arghowto=256) (../../i386/i386/machdep.c line 767)
11:#1 0xf0115159 in panic ()
12:#2 0xf01955bd in diediedie () (../../i386/i386/machdep.c line 698)
13:#3 0xf010185e in db_fncall ()
14:#4 0xf0101586 in db_command (-266509132, -266509516, -267381073)
15:#5 0xf0101711 in db_command_loop ()
16:#6 0xf01040a0 in db_trap ()
17:#7 0xf0192976 in kdb_trap (12, 0, -272630436, -266743723)
18:#8 0xf019d2eb in trap_fatal (...)
19:#9 0xf019ce60 in trap_pfault (...)
20:#10 0xf019cb2f in trap (...)
21:#11 0xf01932a1 in exception:calltrap ()
22:#12 0xf0191503 in cnopen (...)
23:#13 0xf0132c34 in spec_open ()
24:#14 0xf012d014 in vn_open ()
25:#15 0xf012a183 in open ()
26:#16 0xf019d4eb in syscall (...)
27:(kgdb) up 10
28:Reading in symbols for ../../i386/i386/trap.c...done.
29:#10 0xf019cb2f in trap (frame={tf_es = -260440048, tf_ds = 16, tf_\
30:edi = 3072, tf_esi = -266445372, tf_ebp = -272630356, tf_isp = -27\
31:2630396, tf_ebx = -266427884, tf_edx = 12, tf_ecx = -266427884, tf\
32:_eax = 64772224, tf_trapno = 12, tf_err = -272695296, tf_eip = -26\
33:6672343, tf_cs = -266469368, tf_eflags = 66066, tf_esp = 3072, tf_\
34:ss = -266427884}) (../../i386/i386/trap.c line 283)
35:283 (void) trap_pfault(&amp;frame, FALSE);
36:(kgdb) frame frame->tf_ebp frame->tf_eip
37:Reading in symbols for ../../i386/isa/pcvt/pcvt_drv.c...done.
38:#0 0xf01ae729 in pcopen (dev=3072, flag=3, mode=8192, p=(struct p\
39:roc *) 0xf07c0c00) (../../i386/isa/pcvt/pcvt_drv.c line 403)
40:403 return ((*linesw[tp->t_line].l_open)(dev, tp));
41:(kgdb) list
42:398
43:399 tp->t_state |= TS_CARR_ON;
44:400 tp->t_cflag |= CLOCAL; /* cannot be a modem (:-) */
45:401
46:402 #if PCVT_NETBSD || (PCVT_FREEBSD >= 200)
47:403 return ((*linesw[tp->t_line].l_open)(dev, tp));
48:404 #else
49:405 return ((*linesw[tp->t_line].l_open)(dev, tp, flag));
50:406 #endif /* PCVT_NETBSD || (PCVT_FREEBSD >= 200) */
51:407 }
52:(kgdb) print tp
53:Reading in symbols for ../../i386/i386/cons.c...done.
54:$1 = (struct tty *) 0x1bae
55:(kgdb) print tp->t_line
56:$2 = 1767990816
57:(kgdb) up
58:#1 0xf0191503 in cnopen (dev=0x00000000, flag=3, mode=8192, p=(st\
59:ruct proc *) 0xf07c0c00) (../../i386/i386/cons.c line 126)
60: return ((*cdevsw[major(dev)].d_open)(dev, flag, mode, p));
61:(kgdb) up
62:#2 0xf0132c34 in spec_open ()
63:(kgdb) up
64:#3 0xf012d014 in vn_open ()
65:(kgdb) up
66:#4 0xf012a183 in open ()
67:(kgdb) up
68:#5 0xf019d4eb in syscall (frame={tf_es = 39, tf_ds = 39, tf_edi =\
69: 2158592, tf_esi = 0, tf_ebp = -272638436, tf_isp = -272629788, tf\
70:_ebx = 7086, tf_edx = 1, tf_ecx = 0, tf_eax = 5, tf_trapno = 582, \
71:tf_err = 582, tf_eip = 75749, tf_cs = 31, tf_eflags = 582, tf_esp \
72:= -272638456, tf_ss = 39}) (../../i386/i386/trap.c line 673)
73:673 error = (*callp->sy_call)(p, args, rval);
74:(kgdb) up
75:Initial frame selected; you cannot go up.
76:(kgdb) quit
77:uriah # exit
78:exit
79:
80:Script done on Fri Dec 30 23:18:04 1994
</verb></tscreen>
上の出力についてのコメントをします.
<descrip>
<tag/line 6:/ これは DDB (後述) からのダンプです. このため ``because you
said to!'' という panicコメントがつき, ページフォルトのト
ラップによって DDBに入ったことが原因の, やや長いスタックトレー
スがあります.
<tag/line 20:/ スタックトレースでのこれは <tt>trap()</tt>関数の位置で
す.
<tag/line 36:/ 新しいスタックフレームの使用を指定しています. これは現
在は必要ありません. trapの場合ではスタックフレームは正
しい場所を指していると考えられます. (私は新しいコアダンプ
を持っていません. 私のカーネルは長い間 panicを起こしていま
せん.) ソースコードの 403行を見ると,``tp''ポインタのアク
セスが失敗しているか配列のアクセスが範囲外である可能性が高
いことがわかります.
<tag/line 52:/ 怪しいポインタですが, アクセスは正常におこなえました.
<tag/line 56:/ ところが, 明らかにポインタはゴミを指しています. これで
エラーを見つけました! (ここのコードの部分からはよくわかり
ませんが, <tt>tp-&gt;t_line</tt>はコンソールデバイスの規定
する行を参照しているので, もっと小さな整数でなければなりませ
ん. )
</descrip>
<sect><heading>突然ダンプした場合の解析</heading>
<p>カーネルが予想もしない時にコアダンプして <tt>config -g</tt>
を行ってコンパイルされていなかった場合にはどうしたらよいでしょう.
すべてが失われるわけではありません. パニックを起こさないでください.
もちろん, クラッシュダンプを使えるようにする必要があります.
使い方は前述の部分を見てください.
カーネルのコンパイルディレクトリで, (Makefileの)
<tt>COPTFLAGS?=-O</tt>とある行を編集します. <tt>-g</tt>オプショ
ンをここに加えます(オプティマイズオプションのレベルは <em>変更しな
いでください</em> ). もし大まかにコードのどこで問題が起きているか (例
えば, 上の例では <tt>pcvt</tt>ドライバ) わかっているのでしたら, その部
分のコードについてのすべてのオブジェクトファイルを消してください. カーネ
ルを再構築しましょう. Makefileのタイムスタンプの変更により, 例えば
<tt> trap.o </tt>などのいくつかの他のオブジェクトファイルも作り直さ
れます. 少しの幸運があれば, <tt>-g</tt>オプションが追加されても作ら
れるコードは変更されず, いくらかのデバッグシンボル以外には問題を
起こしたコードとそっくりな新しいカーネルを手に入れることができます.
少なくとも <tt>size</tt>コマンドで古い方と新しい方のサイズを比較すべ
きです. これが食い違っていれば, 多分あきらめなければならないでしょう.
ダンプを使って前述のように動かして調べます. デバッグシンボルは
必ずしも十分ではありません. 上の例ではスタックトレースでいくつかの関
数の行番号や引数リストが表示されないかもしれません. もしより多くのデ
バッグシンボルが必要であれば,十分になるまで適切なオブジェクトファイ
ルを消して (makeして) <tt>kgdb</tt>セッションを繰り返してください.
これは必ずしもうまく動くと保証はできません. しかしほとんどの場合でう
まくいくでしょう.
<sect><heading>DDBを使ったオンラインカーネルデバッグ</heading>
<p> <tt>kgdb</tt> は非常に高レベルのユーザインタフェースを提
供するオフラインデバッガですが, いくつかのことはできません.
(できないことの中で)極めて重要なことはカーネルコードへのブレークポイ
ントの設定とシングルステップ実行です.
カーネルの低レベルデバッグが必要であれば, DDBと呼ばれる on-lineデバッ
ガが使えます. ブレークポイントの設定, シングルステップのカーネルの実
行, 変数の検査と変更などができます. ただし,これはカーネルのソースファ
イルにアクセスすることはできません. <tt>kgdb</tt>のようにすべてのデ
バッグ情報にはアクセスできず, globalと staticのシンボルにアクセス
することができるだけです.
カーネルに DDBを含めるためにはコンフィグファイルに次のようなオプショ
ンを加えて,
<tscreen><verb>
options DDB
</verb></tscreen>
再構築をおこないます. ( FreeBSDのカーネルの設定の詳細については<ref
id="kernelconfig" name="FreeBSDカーネルのコンフィグレーション">を参照してくださ
い. もしブートブロックが古いバージョンですと, デバッガのシンボルが完
全にはロードされないかもしれませんので注意してください. DDBシンボル
がロードされるようにブートブロックを最新の物にアップデートしてくださ
い)
DDB カーネルの実行において, DDBに入るいくつかの方法があります. 最初
の, 最も早い方法はブートプロンプトが出ている時に<tt>-d</tt>のブート
フラグをタイプすることです. カーネルはデバッグモードで起動し, デバ
イスのプローブ以前に DDBに入ります. したがって, デバイスのプローブ/初期
設定ファンクションのデバッグができます.
2つ目のシナリオはキーボードのホットキーで, 通常は Ctrl-Alt-ESCです.
syscons ではホットキーは再設定することができ, 配付されているいくつかの
キーマッピングでは別のキーに再設定されていますので確認しておいてください.
シリアルラインの BREAKを使って シリアルコンソールから DDBへ入ることを可
能にするオプションもあります (カーネルコンフィグレーションファイルの
``<tt>options BREAK_TO_DEBUGGER</tt>''). これは 多くのつまらないシリ
アルアダプタが, 例えばケーブルを引き抜いた時に BREAK状態を意味もなく
作り出してしまうのでデフォルトでは無効になっています.
3つ目は, DDBを使うようになっているカーネルがパニック状態になると DDB
へ入るというものです. このため, 無人運転するマシンのカーネルにDDBを
入れるのは賢明ではありません.
DDBのコマンドはおおまかには <tt>gdb</tt> のいくつかのコマンドと似て
います。おそらく最初にブレークポイントを設定する必要があるでしょう。
<tscreen><verb>
b function-name
b address
</verb></tscreen>
数値はデフォルトでは16進数で, シンボル名とはまったく異ります. 16進数で
<tt>a</tt>-<tt>f</tt> の文字で始まる場合は, 先頭に
<tt>0x</tt>をつける必要があります(それ以外の数字の場合はどちらでもか
まいません). <tt>function-name + 0x103</tt>のような単純な式を使うこ
とができます.
割り込みされたカーネルから処理を続行するためには,
<tscreen><verb>
c
</verb></tscreen>
とタイプするだけです.
スタックのトレースには
<tscreen><verb>
trace
</verb></tscreen>
とします.
DDB にホットキーで入った場合は, カーネルはその (ホットキーの) 割り込み
の処理を行っていますのでスタックトレースはあまり役にたたないことに注
意してください.
ブレークポイントを削除したい場合は,
<tscreen><verb>
del
del address-expression
</verb></tscreen>
とします. 最初の形式はブレークポイントにヒットしたすぐ後で使うことが
でき, 現在のブレークポイントを削除します. 2番目の形式では任意のブレー
クポイントを削除することができますが, 次の形式で得られるような正確な
アドレスを与えることが必要です.
<tscreen><verb>
show b
</verb></tscreen>
カーネルをシングルステップ実行させるには
<tscreen><verb>
s
</verb></tscreen>
としてみてください. これは関数呼出し先までステップ実行 (step into
function) するでしょう. 次のステートメントが終了するまでのDDBトレースは
<tscreen><verb>
n
</verb></tscreen>
によっておこなうことができます.
<bf>Note:</bf> これは <tt>gdb</tt> の `next' 命令とは異ります.
<tt>gdb</tt>の `finish'命令と似ています.
メモリ上のデータを調べるには (例として) 次のようにします.
<tscreen><verb>
x/wx 0xf0133fe0,40
x/hd db_symtab_space
x/bc termbuf,10
x/s stringbuf
</verb></tscreen>
word/halfword/byte 単位でアクセスをおこない, hex (16進) /dec (10進) /
char (文字) /string (文字列) で表示します. カンマの後ろの数字はオブジェク
トカウントです. 次の 0x10個の要素を表示するには, 単純に
<tscreen><verb>
x ,10
</verb></tscreen>
とします. 同様に次のように使うことができます.
<tscreen><verb>
x/ia foofunc,10
</verb></tscreen>
<tt>foofunc</tt>の最初の 0x10個の命令語をディスアセンブルし,
<tt>foofunc</tt>の先頭からのオフセットとともに表示します.
メモリの内容を変更するには writeコマンドを使います.
<tscreen><verb>
w/b termbuf 0xa 0xb 0
w/w 0xf0010030 0 0
</verb></tscreen>
コマンドモディファイアの (<tt>b</tt>/<tt>h</tt>/<tt>w</tt>) はデータを
書くサイズを定義し, これに続く最初の式は書き込むアドレス, 残りがこれ
に続く連続するメモリアドレスに書き込まれるデータになります.
現在のレジスタ群の内容を知りたい場合は
<tscreen><verb>
show reg
</verb></tscreen>
とします. また, 単一のレジスタの値を表示するには, 例えば
<tscreen><verb>
p $eax
</verb></tscreen>
とします. また値の変更は
<tscreen><verb>
set $eax new-value
</verb></tscreen>
とします.
DDBからカーネルの関数を呼び出す必要がある場合は, 単に
<tscreen><verb>
call func(arg1, arg2, ...)
</verb></tscreen>
とします. return 値が出力されます.
動いているプロセスの <tt>ps(1)</tt>スタイルの概要は
<tscreen><verb>
ps
</verb></tscreen>
です.
カーネルの失敗の原因の調査が終わったらリブートすべきです. それまでの
不具合によりカーネルのすべての部分が期待するような動作をしているわけ
ではないということを忘れないでください. 以下のうちいずれかの方法でシ
ステムのシャットダウンおよびリブートを行ってください.
<tscreen><verb>
call diediedie()
</verb></tscreen>
カーネルをコアダンプしてリブートしますので, 後で kgdbによってコアの高
レベル解析をすることができます. このコマンドは通常
`<tt>continue</tt>'命令にエイリアスされています.
`<tt>panic</tt>'にエイリアスされている
<tscreen><verb>
call boot(0)
</verb></tscreen>
は動いているシステムを `clean' に shut downするよい方法です. すべて
のディスクを <tt>sync()</tt>して最後にリブートします. ディスクとカー
ネルのファイルシステムインタフェースが破損していない限り, ほぼ完全
に `clean'にシャットダウンするよい方法でしょう.
<tscreen><verb>
call cpu_reset()
</verb></tscreen>
は大惨事を防ぐための最後の手段で「赤い大きなボタン」を押すのとほとんど
同じです.(訳注: リセットボタンを押すのとほぼ同じであるという意味です)
短いコマンドの要約は
<tscreen><verb>
help
</verb></tscreen>
をタイプします. ただし, デバッグセッションのために <tt>ddb(4)</tt> の
マニュアルページのプリントアウトを用意しておくことを強くお奨めします.
カーネルのシングルステップ中にオンラインマニュアルを読むことは難しい
ということを覚えておいてください.
<sect><heading>リモート GDB を使ったオンラインカーネルデバッグ</heading>
<p>この機能は FreeBSD 2.2 からサポートされました. これは本当にすばらし
い機能です.
GDB はすでにかなり以前より <em/リモートデバッグ/ をサポートしてい
ます. これはシリアル回線を使い非常に単純なプロトコルで行ないます.
もちろん, この方法では今までに示した方法とは違い, 2台のマシンが必
要になります. 1台はデバッグ環境のためのホストで, すべてのソースとす
べてのシンボルを含んだバイナリのコピーを持っています. もう 1台は
ターゲットマシンで, 同一のカーネルのコピー (ただしデバッグ情報は
取り除いてあるもの) を単に実行するためのものです.
この場合, カーネルのコンフィグレーションは <tt>config -g</tt> で行な
い, <em/DDB/ を含めなくてはなりません. そうして通常通りコンパイルし
ます. こうして作ったバイナリファイルはデバッグ情報のために非常に大き
くなります. このカーネルをターゲットマシンにコピーして
<tt>strip -x</tt> でデバッグシンボルを取り除きます. そして <tt/-d/
ブートオプションを使いブートします. ターゲットマシンの 1番目の
シリアル回線をデバッグホストのいずれかのシリアル回線につないでおきま
しょう. それからデバッグ(訳注:ホスト)マシン上で, ターゲットとなって
いるカーネルのコンパイルディレクトリで gdb を起動します:
<tscreen><verb>
% gdb -k kernel
GDB is free software and you are welcome to distribute copies of it
under certain conditions; type "show copying" to see the conditions.
There is absolutely no warranty for GDB; type "show warranty" for details.
GDB 4.16 (i386-unknown-freebsd),
Copyright 1996 Free Software Foundation, Inc...
(kgdb)
</verb></tscreen>
リモートデバッグセッションの初期化 (1番目のシリアルポートを使用する
ことの設定) を以下のように行ないます.
<tscreen><verb>
(kgdb) target remote /dev/cuaa0
</verb></tscreen>
次にターゲットマシン (デバイスのプローブ直前で DDB に入っています)
で次のように入力します:
<tscreen><verb>
Debugger("Boot flags requested debugger")
Stopped at Debugger+0x35: movb $0, edata+0x51bc
db> gdb
</verb></tscreen>
DDB は次のような出力を返すでしょう.
<tscreen><verb>
Next trap will enter GDB remote protocol mode
</verb></tscreen>
``gdb''と入力するたびに リモート GDB とローカル DDB が交互に切り替わ
ります. トラップをすぐに起こすために単に ``s'' (step) と入力して下
さい. そうするとホストの GDB はターゲットのカーネルの制御を行なうよ
うになります.
<tscreen><verb>
Remote debugging using /dev/cuaa0
Debugger (msg=0xf01b0383 "Boot flags requested debugger")
at ../../i386/i386/db_interface.c:257
(kgdb)
</verb></tscreen>
このセッションではソースコードへのフルアクセスや Emacs の window 上
の gud-mode (これは別の Emacs window に自動的にソースコードを表示し
ます) で動かすなど, 通常の GDB セッションでできることのほとんどのこ
とができます.
<p>リモート GDB は LKM のデバッグも行なうことができます. 最初に LKM を
デバッグシンボルを含めた形で作ります.
<tscreen><verb>
# cd /usr/src/lkm/linux
# make clean; make COPTS=-g
</verb></tscreen>
そしてターゲットマシン上でモジュールのこのバージョンをインストールし
ます. これをロードしてから, <tt>modstat</tt> を使ってロードされている
ことを確認してください:
<tscreen><verb>
# linux
# modstat
Type Id Off Loadaddr Size Info Rev Module Name
EXEC 0 4 f5109000 001c f510f010 1 linux_mod
</verb></tscreen>
示されたロードアドレスに 0x20 (a.outのヘッダはおそらくこの大きさでしょ
う) を加えます. それがモジュールコードの再配置されるアドレスです.
GDB の <tt>add-symbol-file</tt> コマンドを使ってデバッガにモジュールの
情報をつたえます.
<tscreen><verb>
(kgdb) add-symbol-file /usr/src/lkm/linux/linux_mod.o 0xf5109020
add symbol table from file "/usr/src/lkm/linux/linux_mod.o" at
text_addr = 0xf5109020?
(y or n) y
(kgdb)
</verb></tscreen>
これで LKM のすべてのシンボルにアクセスできるようになります.
<sect><heading>コンソールドライバのデバッグ</heading>
<p>DDBを動かすためにはコンソールドライバが必要ですから, コンソールドラ
イバ自身に不具合のある場合は複雑になります. シリアルコンソールを利
用する方法 (ブートブロックを変更するか <tt>Boot:</tt>プロンプトで
<tt><bf>-h</bf></tt>と入力する) を思い出してください. そして標準ター
ミナルを最初のシリアルポートに設定します. DDBは, もちろんシリアルコ
ンソールを含むいずれのコンソールドライバの設定でも動作します.

View file

@ -1,153 +0,0 @@
<!-- $Id: kernelopts.sgml,v 1.9 1997/02/22 13:01:22 peter Exp $ -->
<!-- The FreeBSD Documentation Project -->
<!-- Original revision: 1.7 -->
<!-- <!DOCTYPE linuxdoc PUBLIC '-//FreeBSD//DTD linuxdoc//EN'> -->
<chapt><heading>カーネルコンフィグレーションの新しいオプションを追加する
<label id="kernelopts"></heading>
<p><em>原作: &a.joerg;</em>
<p><em>訳: &a.yoshiaki; . <newline> 29 December 1996.</em>
<em/注:/ この章をお読みになる前に <ref id="kernelconfig"
name="FreeBSDカーネルのコンフィグレーション"> の章の内容を
理解しておいてください.
<sect><heading>そもそも<em>カーネル オプション</em>って何?</heading>
<p>カーネルオプションの使い方は基本的には <ref
id="kernelconfig:options" name="FreeBSDカーネルのコンフィグレーション">
の章に書いてあります.
そこには「伝統的な形式」と「新しい形式」のオプションの説明があります.
すべてのカーネルのオプションを新しい形式のものに置き換え, コンフィグファイル
を修正して <tt/config(8)/ を実行した後にカーネルのコンパイルディレクトリで
<tt/make depend/ を実行すれば, ビルドプロセスが自動的に変更された
オプションを検出し, 必要なファイルだけを再コンパイルするようにすることが
最終的な目的です. <tt/config(8)/ を実行するたびに古いコンパイルディレクトリ
を消してしまう現在のやりかたは, やがておこなわれなくなるでしょう.
<p>基本的に, カーネルオプションはカーネルのコンパイルプロセスの
C プリプロセッサのマクロの定義にすぎません. 実際に選択的に make できる
ようにするためには, 対応する部分のカーネルソース (またはカーネルの
<tt/.h/ ファイル) がオプションを使えるようにあらかじめ書かれていなければ
なりません. つまりデフォルト値をコンフィグファイルのオプションで置き換え
られるようになっていなければなりません. これは普通は次のようになっています.
<verb>
#ifndef THIS_OPTION
#define THIS_OPTION (some_default_value)
#endif /* THIS_OPTION */
</verb>
<p>この場合, 管理者がコンフィグファイルのオプションに別の値を記述すれば,
デフォルトの設定を打ち消して新しい値に置き換えられます. 当然,
新しい値はプリプロセッサによってソースコード中で置き換えられるため,
デフォルトの値が使われていた場所において C の式として有効な値でなければ
なりません.
<p>また, 単に特定のコードを有効にするか無効にするかを設定するための
値を持たないオプションも作ることができます.
<verb>
#ifdef THAT_OPTION
[あなたのコードが入ります]
#endif
</verb>
<p>コンフィグファイルに <tt/THAT_OPTION/ と記述するだけで (値の有無
にかかわらず) 対応する部分のコードが組み込まれます.
<p>C 言語にくわしい人であれば「コンフィグオプション」とされているもの
は少なくとも一つの <tt/#ifdef/ で参照されているということはすぐに理解
できるでしょう. ところで, ごく一部の人たちは次のようなものを試して
みようとするかもしれません.
<verb>
options notyet,notdef
</verb>
<p>このようにコンフィグファイルをしておくと, カーネルのコンパイルは
うまく行きません. :-)
<p> (訳注: たとえば MATH_EMULATE のように 有効/無効のためのパラメタを
持たないオプションの場合, 無効とするためのパラメタをつけて, オプション
で「無効とする」と明示することはできないという意味です)
<p>明らかに, 任意のオプション名がカーネルソースツリー全体でどのように
使われているかを追いかけることは非常に難しいことです. このことが
<em/新しい形式/ のオプションの機構を採り入れる理由の背景です.
ここではそれぞれのオプションはカーネルコンパイルディレクトリにある別々の
<tt/.h/ ファイルとなり, <tt>opt_<em>foo</em>.h</tt> という名前に
されます. この方法では, 通常の Makefile の依存関係が適用され,
<tt/make/ プログラムはオプションが変更された時に再コンパイルが必要な
ものを見つけることができます.
<p>古い形式のオプションの機構は, 局部的なオプションや実験的なオプション
のような一時的に利用されると考えられるオプションにおいては有効です.
つまり <tt/#ifdef/ をカーネルのソースに追加するのは簡単であり,
それがそのままカーネルコンフィグオプションになります.
この場合, 管理者はオプションの利用において
依存関係を把握しておく責任があります (また, 手動でカーネルの一部分を
強制的に再コンパイルする必要があるかもしれません). サポートされている
オプションのすべてについて一つでも変更があると, <tt/config(8)/ は
サポートされていないオプションがコンフィグファイルの中にあるという警告
を出しますが, カーネルの Makefile 内にはそれを含めます.
<sect><heading>ではどのようにして追加するのでしょう?</heading>
<p>最初に <tt>sys/conf/options</tt> (または
<tt>sys/i386/conf/options.<em>&lt;arch&gt;</em></tt>, たとえば
<tt>sys/i386/conf/options.i386</tt>) を編集し, 新しいオプション
を含めるのに最適な <tt>opt_<em>foo</em>.h</tt> ファイルを選びます.
<p>新しいオプションの必要がなくなったとしたら, これを取り除きます.
たとえば, SCSI サブシステムに関するすべてのふるまいについてのオプション
の変更は <tt/opt_scsi.h/ に入れられます. デフォルトでは, 適切
なオプションファイルに単に記述されます. たとえば <tt/FOO/ であれば
値は対応するファイルの <tt/opt_foo.h/ に格納されます. これは右端に別
のファイル名を書いて置き換えることができます.
<p>新しいオプションを加えるのに使えそうな
<tt>opt_<em>foo</em>.h</tt> がない場合は新しい名前を作ってください.
意味のある名前を作り <tt>options[<em>.&lt;arch&gt;</em>]</tt> ファイル
に新しいセクションのコメントをつけてください. <tt/config(8)/ は自動的
に変更を検出して, 次の実行からは (訳注: 新しい <tt/.h/) ファイル
を作ります. ほとんどのオプションはヘッダファイルに入れられます.
<p>大量のオプションを一つの <tt>opt_<em>foo</em>.h</tt> にまとめると
コンフィグファイルの一つのオプションを変更したときに多くのファイルが
再コンパイルされる原因になります.
<p>新しいオプションに依存するカーネルファイルは最終的には見つけ出
されます. ただし, オプションを作っただけで対応するソースがどこにも
ない場合は別です.
<verb>
find /usr/src/sys -name type f | xargs fgrep NEW_OPTION
</verb>
<p>オプションに対応するソースを見つけるのに上記のコマンドは便利です.
見つけたすべてのファイルで編集, 追加をおこないます.
<verb>
#include "opt_foo.h"
</verb>
<p><em>ファイルの先頭の</em>, すべての <tt/#include &lt;xxx.h&gt;/
より前に入れます. この場合, オプションによって次のようにしてデフォルト値
を持たせている標準のヘッダファイル内の値を置き換えるため, 順番は非常に
重要です.
<verb>
#ifndef NEW_OPTION
#define NEW_OPTION (something)
#endif
</verb>
<p>システムヘッダファイル (たとえば <tt>/usr/include/sys/</tt> にある
ファイル) をオプションで置き換えることは, ほとんどの場合で失敗します.
そうすると, ヘッダファイルを深刻な状態に破壊してしまうので, include
しないとオプションの値によって不整合が起きてしまう場合を除き, それらの
ファイルに <tt>opt_<em>foo</em>.h</tt> を include しないでください.
そう, 現在このような例がいくつか存在していますが, 必ずしも正しい方法
ではありません.

View file

@ -1,714 +0,0 @@
<!-- $Id: linuxemu.sgml,v 1.7 1997/02/25 04:56:46 hanai Exp $ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.19 -->
<chapt><heading>Linux エミュレーション<label id="linuxemu"></heading>
<p><em>原作: &a.handy and &a.rich;</em>
<p><em>訳: &a.kiroh;.<newline>24 September 1996.</em>
<sect><heading>Linux エミュレータのインストール</heading>
<p>
FreeBSD での Linux エミュレーションは, 大部分の Linux バイナリ(a.out
および ELF フォーマット)を実行できる状態になっています. 2.1-STABLE ブラン
チでのエミュレーションでは, Linux DOOM や Mathematica が実行できます.
FreeBSD 2.2-RELEASE でのエミュレーションは, さらに強化されており, Linux 用
の Quake, Abuse, IDL, netrek など, 多数のソフトウェアが実行できます.
Linux オペレーティングシステムには、特有の機能がいくつかあり, FreeBSD
でサポートされていないものもあります. Linux の /proc ファイルシステム
を使ったバイナリは, FreeBSD では実行できません (FreeBSD で使用可能な
/proc ファイルシステムとは仕様が異なっているためです). また仮想8086モー
ドを有効にするなど, i386 に特有なシステムコールを使っている場合も実行
できません.
<p>
カーネルが Linux エミュレーションを使用するように構築されているかを調
べるには, Linux のバイナリを実行してみるのが簡単です.
<tscreen>
<verb>
linux-executable: Exec format error. Wrong Architecture.
</verb>
</tscreen>
このようなエラーメッセージが表示されるようであれば, Linux との互換性は
サポートされていません. カーネルを再構築してインストールする必要があり
ます.
Linux エミュレーションの設定方法は, 使用している FreeBSD のバージョン
によって多少異なっています.
<sect1><heading>2.1-STABLE への Linux エミュレーションのインストール</heading>
<p>2.1-STABLE の GENERIC カーネルは, Linux との互換性を保つように構築
されていません. カーネルの再構築が必要です. 再構築をおこなうには, 2つの方
法があります. 1つは, エミュレータをカーネル自体にスタティックリンクす
る方法. もう1つは, 動的に Linux ローダブルカーネルモジュール(LKM)をロー
ドするようにする方法です.
<p>エミュレータを有効にするには, 以下をコンフィグレーションファイル
(/sys/i386/conf/LINT など) に追加します.
<tscreen>
<verb>
options COMPAT_LINUX
</verb>
</tscreen>
Linux DOOM などのアプリケーションを実行したい場合は, 共有メモリも有効
にしておかなければなりません. 以下を追加します.
<tscreen>
<verb>
options SYSVSHM
</verb>
</tscreen>
Linux のシステムコールを使用するには, 4.3BSD のシステムコールとの互換
性が保たれていることが必要です. 以下の行が含まれていることを確認してく
ださい.
<tscreen>
<verb>
options "COMPAT_43"
</verb>
</tscreen>
LKM を使用せずエミュレータをカーネルにスタティックにリンクしたい場合は,
以下の行を追加します.
<tscreen>
<verb>
options LINUX
</verb>
</tscreen>
<ref id="kernelconfig" name="FreeBSDカーネルのコンフィグレーション">の節の記述に
したがって config と, 新しいカーネルのインストールをおこなってください.
LKM を使用する場合は, ローダブルモジュールをインストールしなければなり
ません. カーネルとローダブルモジュールのバージョンが異なると, カーネル
がクラッシュする場合がありますので, 安全を期すためには, カーネルをイン
ストールするごとに, LKM も再インストールしてください.
<tscreen>
<verb>
% cd /usr/src/lkm/linux
% make all install
</verb>
</tscreen>
カーネルと LKM のインストールが終了したら, root で `linux' コマンドを
実行することで LKM をロードできます.
<tscreen>
<verb>
% linux
Linux emulator installed
Module loaded as ID 0
%
</verb>
</tscreen>
LKM がロードされたかどうかを確認するには, `modstat' を実行します.
<tscreen>
<verb>
% modstat
Type Id Off Loadaddr Size Info Rev Module Name
EXEC 0 3 f0baf000 0018 f0bb4000 1 linux_emulator
%
</verb>
</tscreen>
システムブート時に, LKM をロードするようにするには, 2つの方法がありま
す. FreeBSD 2.2-RELEASE または 2.1-STABLE では, /etc/sysconfig を,
<tscreen>
<verb>
linux=YES
</verb>
</tscreen>
のように, NO を YES に変更してください. FreeBSD 2.1 RELEASE およびそれ以
前のバージョンでは, そのような行はありませんので, /etc/rc.local に以下
の行を追加する必要があります.
<tscreen>
<verb>
linux
</verb>
</tscreen>
<sect1><heading>2.2-RELEASE への Linux エミュレーションのインストール
</heading>
<p>``options LINUX'' や ``options COMPAT_LINUX'' を指定する必要
はなくなりました. Linux エミュレーションは LKM(「ローダブルカーネルモジュール」)
を使用して, リブートせず簡単にインストールできます. スタートアッ
プファイルで以下のように指定します.
<enum>
<item>/etc/sysconfig に以下の行が必要です.
<tscreen>
<verb>
linux=YES
</verb>
</tscreen>
<item> これは結果的に, /etc/rc.i386 の以下の指定を有効にします.
<tscreen>
<verb>
# Start the Linux binary emulation if requested.
if [ "X${linux}" = X"YES" ]; then
echo -n ' '; linux
# XXX BOGUS - Linux script shouldn't make any output on success
fi
</verb>
</tscreen>
</enum>
<p>実行されたかどうかを確認するには, modstat を使用します.
<tscreen>
<verb>
% modstat
Type Id Off Loadaddr Size Info Rev Module Name
EXEC 0 4 f09e6000 001c f09ec010 1 linux_mod
%
</verb>
</tscreen>
2.2-RELEASE とそれ以降のシステムの中には, modstat の実行がうまくいかない
ものがあるという報告もあります. 何らかの理由で, Linux LKM がロードできな
い場合は,
<tscreen>
<verb>
options LINUX
</verb>
</tscreen>
をカーネルの設定ファイルに指定して, エミュレータをスタティックにリンク
してください. <ref id="kernelconfig" name="FreeBSDカーネルのコンフィグレーション">
の節の記述にしたがって config と, 新しいカーネルのインストールをおこ
なってください.
<sect1><heading>Linux ランタイムライブラリのインストール</heading>
<sect2><heading>linux_lib port を使用してのインストール</heading>
<p>多くの Linux アプリケーションはシェアードライブラリを使用しますので,
シェアードライブラリのインストールが終了しなければ, エミュレータのイン
ストールは終わったことになりません. 手動でもインストールできますが,
linux_lib port を使用するのが簡単です.
<tscreen>
<verb>
% cd /usr/ports-current/emulators/linux_lib
% make all install
</verb>
</tscreen>
これで, Linux エミュレータが動作するようになったはずです. 伝説(とメー
ルのアーカイブ :-) によれば, Linux エミュレーションは, ZMAGIC ライブラ
リとリンクされている Linux バイナリに対して, 最もうまく動作するようで
す. Slackware V2.0 などに使われている QMAGIC ライブラリだと, エミュレー
タが胸やけするかもしれません. これを書いている時点(1996年5月)で, ELF
エミュレーションは依然実験段階ですが, かなりうまく動作しているようです.
マイナーバージョンの不一致などを報告するプログラムもありますが, 普通は
問題にならないようです.
<sect2><heading>手動でのライブラリのインストール</heading>
<p>``ports'' ディストリビューションが手元にない場合は, 手動でライブラ
リをインストールする必要があります. プログラムが必要とする Linux のシェ
アードライブラリとラインタイムリンカが必要です. また Linux ライブラリ
の用の``shadow root'' ディレクトリ, /compat/linux, を作成する必要があ
ります. FreeBSD で動作する Linux のプログラムが使用するシェアードライ
ブラリは,まずこのファイルツリーから検索されます. 例えば, Linux のプロ
グラムが/lib/libc.so をロードしようとした場合には, FreeBSD は, まず
/compat/linux/lib/libc.so を開こうとします. 存在にしなかった場合には,
次に /lib/libc.so を試します. シェアードライブラリは, Linux の ld.so
が参照するライブラリではなく, /compat/linux/lib 以下にインストールする
必要があります.
FreeBSD 2.2-RELEASE 以降では, /compat/linux にかかわる動作が多少異なりま
す. -CURRENT では, ライブラリだけでなくすべてのファイルが, ``shadow
root'' /compat/linux から検索されます.
Linux のプログラムが必要とするシェアードライブラリを探す必要があるのは,
FreeBSD のシステムに Linux のプログラムをインストールする最初の数回だ
けでしょう. それが過ぎれば, 十分な Linux のシェアードライブラリがシス
テムにインストールされ, 新しくインストールした Linux のバイナリも, 余
計な作業をせずに動作させることができるようになります.
<sect2><heading>シェアードライブラリの追加</heading>
<p>
linux_port をインストールした後に, アプリケーションが必要なライブラリ
が存在しないというエラーを出したらどうしたらよいでしょうか? Linux のバ
イナリがどのシェアードライブラリを必要とし, そしてどこで入手できるか,
どのように探したらよいでしょうか? 基本的には, 以下の2種類の方法があり
ます(以下の手順にしたがう場合には, 必要なインストール作業をおこなう FreeBSD シ
ステム上で root として作業をおこなう必要があります).
<p>Linux システムを使用でき, 必要なシェアードライブラリが調べられる場
合には, 単に FreeBSD のシステムにそのライブラリをコピーするだけで
す. 例えば, DOOM の Linux バイナリを ftp で持ってきたとします. 使用で
きる Linux システムの上に転送して, `ldd linuxxdoom' とやれば, 必要とす
るシェアードライブラリがチェックできます.
<tscreen>
<verb>
% ldd linuxxdoom
libXt.so.3 (DLL Jump 3.1) => /usr/X11/lib/libXt.so.3.1.0
libX11.so.3 (DLL Jump 3.1) => /usr/X11/lib/libX11.so.3.1.0
libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29
</verb>
</tscreen>
<p>
最後のカラムに表示されているすべてのファイルを持って来て, /compat/linux の下
に置き, 最初のカラムに示されるファイル名からシンボリックリンクを張る必
要があります. すなわち, FreeBSD のシステムで, 以下のようなファイルが必
要となります.
<tscreen>
<verb>
/compat/linux/usr/X11/lib/libXt.so.3.1.0
/compat/linux/usr/X11/lib/libXt.so.3 -> libXt.so.3.1.0
/compat/linux/usr/X11/lib/libX11.so.3.1.0
/compat/linux/usr/X11/lib/libX11.so.3 -> libX11.so.3.1.0
/compat/linux/lib/libc.so.4.6.29
/compat/linux/lib/libc.so.4 -> libc.so.4.6.29
</verb>
</tscreen>
<p>
最初のカラムに表示されているファイルと, メジャーバージョンの同じ Linux
シェアードライブラリを既にインストールしている場合は, 新たにコピーする
必要はありません. 既にあるライブラリで動作するはずです. ただ, 新しいバー
ジョンのシェアードライブラリがある場合は, 新しいものをコピーすることを
お奨めします. 新しいライブラリにシンボリックリンクを変更したら, 古いラ
イブラリは削除してかまいません.
<tscreen>
<verb>
/compat/linux/lib/libc.so.4.6.27
/compat/linux/lib/libc.so.4 -> libc.so.4.6.27
</verb>
</tscreen>
以上のようなライブラリがインストールされており, 新しいバイナリに対する
ldd の出力が以下のようになる場合を考えます。
<tscreen>
<verb>
libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29
</verb>
</tscreen>
このように最後の番号が1つか2つ古いだけならば, 普通は
/lib/libc.so.4.6.29 をコピーする必要はありません. わずかに古いライブラ
リでも, プログラムは動作するはずだからです. もちろん, 新しいライブラリ
と置き換えて, 以下のようにしても構いません.
<tscreen>
<verb>
/compat/linux/lib/libc.so.4.6.29
/compat/linux/lib/libc.so.4 -> libc.so.4.6.29
</verb>
</tscreen>
<p>シンボリックリンクのメカニズムは, Linux バイナリに<em>のみ</em>必要
なことに注意してください. FreeBSD のランタイムリンカは, メジャーリビジョ
ン番号の一致したライブラリを検索しますから, ユーザが気にする必要はあり
ません.
<sect2><heading>ld.so の設定 -- FreeBSD 2.2-RELEASE のみ</heading>
<p>このセクションは, FreeBSD 2.2-CURRENT 以降にのみ当てはまります.
2.1-STABLE を使用している方は, 飛ばしてください.
<p>
最後に, FreeBSD 2.2-RELEASE を使われている場合は, Linux のランタイムリンカと
その設定ファイルがシステムに導入されていることを確認してください.
これらのファイルは, FreeBSD システムの適切な位置(/compat/linux ツリー以
下)にコピーされている必要があります.
<tscreen>
<verb>
/compat/linux/lib/ld.so
/compat/linux/etc/ld.so.config
</verb>
</tscreen>
<p>使用できる Linux システムがない場合は, 必要なファイルは近くの FTP サイ
トから入手してください. 各種ファイルの入手先についての情報を, 後に付
けておきます. ここでは, 必要なファイルの入手先がわかっているものとしま
す.
<p>
以下のファイルを取得します(バージョンの不一致を避けるために, すべて同一
の FTP サイトから入手してください). 取得したファイルを /compat/linux
以下にインストールしてください(例えば, /foo/bar は,
/compat/linux/foo/bar にインストールされます).
<tscreen>
<verb>
/sbin/ldconfig
/usr/bin/ldd
/lib/libc.so.x.y.z
/lib/ld.so
</verb>
</tscreen>
<p>ldconfig と ldd は, /compat/linux の下にある必要はありません. システム
のどこにあっても構いません. ただ, FreeBSD の同名のコマンドと間違えないように
注意してください. /usr/local/bin の中に, ldconfig-linux, ldd-linux とし
てインストールするのもよいアイディアでしょう.
<p>
/compat/linux/etc/ld.so.conf ファイルを作成し, Linux ラインタイムリンカ
がシェアードライブラリを検索するディレクトリを記述してください. このファ
イルはプレインテキストファイルで, それぞれの行にディレクトリ名を含みま
す. /lib と /usr/lib は標準ですから, 以下のようなディレクトリが追加できま
す.
<tscreen>
<verb>
/usr/X11/lib
/usr/local/lib
</verb>
</tscreen>
<p>
Linux バイナリが, /lib/libc.so というライブラリを開いた場合, エミュレー
タは内部で, ファイル名を /compat/linux/lib/libc.so にマップします. エ
ミュレータがライブラリを検索するために, すべての Linux のライブラリ
(/compat/linux/lib/libc.so, /compat/linux/usr/X11/lib/libX11.so など)
は, /compat/linux 以下にインストールされていなければなりません.
<p>FreeBSD 2.2-RELEASE を使用している場合は, Linux の ldconfig プログラム
を実行する必要があります.
<tscreen>
<verb>
% cd /compat/linux/lib
% /compat/linux/sbin/ldconfig
</verb>
</tscreen>
<p>
ldconfig はスタティックリンクされていますから, 実行するのにシェアードラ
イブラリを必要としません. ldconfig は, /compat/linux/etc/ld.so.cache
ファイルを作成し, すべてのシェアードライブラリの名前を格納します. ライ
ブラリの追加をおこなった場合には, ldconfig を再実行して, このファイルを作り
直さなければなりません.
2.1-STABLE では, /compat/linux/etc/ld.so.cache をインストールしたり,
ldconfig を実行したりしないでください. 2.1-STABLE では, システムコー
ルの実装方法が異なるため, ldconfig は使用されません.
<p>
これで, libc シェアードライブラリを必要とする Linux バイナリを実行する設
定が終了しました. ldd を ldd 自身に実行してテストしてください.
ldd-linux としてインストールしている場合は, 以下のような結果になるはず
です.
<tscreen>
<verb>
% ldd-linux `which ldd-linux`
libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29
</verb>
</tscreen>
<p>ここまで終了すれば, 新しい Linux のバイナリをインストールできます.
新しい Linux バイナリをインストールするときは, それがシェアードライブ
ラリを必要とするかどうか確認してください. 必要とする場合は,
/compat/linux 以下にインストールされているかどうか確認してください. こ
れは, Linux の ldd を新しいプログラムに対して実行し, 出力を確認するこ
とによりおこなえます. ldd(ldd(1)マニュアルページも参照してください)は, プ
ログラムが必要とするシェアードライブラリのリストを, majorname
(jumpversion) => fullname という形式で出力します.
<p>
fullname のかわりに ``not found'' と出力される場合は, ライブラリの追加をす
る必要があります. 必要なライブラリの名前は, majorname に
libXXXX.so.N.mm という形式で示されています. Linux の FTP サイトで
libXXXX.so.N.mm を探し, インストールしてください. XXXX(名前)とN(メジャー
リビジョン番号)は一致している必要があります. マイナー番号 mm は, それほ
ど重要ではありませんが, なるべく最新のものをインストールするようにして
ください.
<sect1><heading>ホストネームリゾルバの設定</heading>
<p>DNS がうまく動作しなかったり, 以下のようなエラーメッセージが表示され
る場合は, /compat/linux/etc/host.conf ファイルを設定する必要があります.
<tscreen>
<verb>
resolv+: "bind" is an invalid keyword
resolv+: "hosts" is an invalid keyword
</verb>
</tscreen>
ファイルの内容を以下のように設定してください.
<tscreen>
<verb>
order hosts, bind
multi on
</verb>
</tscreen>
ここで, order は /etc/hosts を最初に検索し, 次にDNSを検索するように指定
します. /compat/linux/etc/host.conf がインストールされていない場合は,
Linux のアプリケーションは, FreeBSD の /etc/host.conf を使用しようとして,
文法の違いによる警告を表示します. /etc/resolv.conf を使用してネームサー
バを設定していない場合には, `bind' を削除してください.
<p>最後になりますが, 2.1-STABLE を使用している場合は,
RESOLV_HOST_CONF 環境変数を指定して, アプリケーションにホストテーブル
の検索方法を指定する必要があります. FreeBSD 2.2-RELEASE を使用している場合
は, スキップしてください. /bin/csh を使っている場合は, 以下のようにし
ます.
<tscreen>
<verb>
setenv RESOLV_HOST_CONF /compat/linux/etc/host.conf
</verb>
</tscreen>
/bin/shの場合は, 以下のようにします.
<tscreen>
<verb>
RESOLV_HOST_CONF=/compat/linux/etc/host.conf; export RESOLV_HOST_CONF
</verb>
</tscreen>
<sect1><heading>必要なファイルを探すには</heading>
<p>
注意: 以下の情報は, この文書が書かれた時点では有効ですが, FTP サイトの
名前, ディレクトリ, 配布ファイル名などは, 変更されている可能性がありま
す.
<p>
訳注: ここに取り上げられている FTP サイトは, 日本国内にもミラーサイト
が多数存在します。なるべく近くの FTP サイトからファイルを入手してくだ
さい.
<p>
Linux は, いくつかのグループが, それぞれ独自のバイナリ配布セットを作成
して配布しています. 配布セットは, ``Slackware'' や ``Yggdrasil'' など
の名前がつけられています. これらの配布セットは, 多くの FTP サイトから
入手できます. ファイルが展開されており, 必要なファイルのみを取得できる
場合もありますが, 通常は圧縮された配布セットの形で入手できます. 配布
セットは, いくつかのサブディレクトリに, gzip で圧縮された tar ファイル
として格納されています. それぞれの配布セットの一次配布先は, 以下の通り
です.
<verb>
sunsite.unc.edu:/pub/Linux/distributions
tsx-11.mit.edu:/pub/linux/distributions
</verb>
<p>
ヨーロッパのミラーサイトの例:
<verb>
ftp.luth.se:/pub/linux/distributions
ftp.demon.co.uk:/pub/linux/distributions
src.doc.ic.ac.uk:/packages/linux/distributions
</verb>
<p>
混乱を避けるために, ここでは Slackware だけを取り上げます. この配布セッ
トは, 多くのサブディレクトリ内にある別々のパッケージから構成されていま
す. 通常, パッケージはインストールプログラムにより自動的に制御されま
すが, ``手動で''おこなうことも可能です. まず配布セットの中の,
``contents'' サブディレクトリの内容を書くにしてください. ここには多く
の小さなテキストファイルが含まれおり, それぞれのパッケージの内容が記述
されています. 必要なファイルを探している場合は, まず contents 内のテキ
ストファイルを取得し, そのファイルの中から grep を使用して検索するのが,
最も速い方法でしょう. 以下に必要となるであろうファイルを, grep を使用
して検索した例を示します.
<tabular ca=ll>
Library <colsep>Package <rowsep>
ld.so <colsep>ldso <rowsep>
ldconfig <colsep>ldso <rowsep>
ldd <colsep>ldso <rowsep>
libc.so.4 <colsep>shlibs <rowsep>
libX11.so.6.0 <colsep>xf_lib <rowsep>
libXt.so.6.0 <colsep>xf_lib <rowsep>
libX11.so.3 <colsep>oldlibs <rowsep>
libXt.so.3 <colsep>oldlibs <rowsep>
</tabular>
<p>
この場合は, ldso, shlibs, xf_lib, oldlibs というパッケージが必要なこと
がわかります. それぞれのcontentsファイルの中で, ``PACKAGE LOCATION''
と書いてある行を探してください. その行に, パッケージが含まれているディ
スク, 今回の場合はサブディレクトリ名が書かれています. たとえば, 以下の
ようになります.
<tabular ca=ll>
Package <colsep>Location <rowsep>
ldso <colsep>diska2 <rowsep>
shlibs <colsep>diska2 <rowsep>
oldlibs <colsep>diskx6 <rowsep>
xf_lib <colsep>diskx9 <rowsep>
</tabular>
<p>``diskXX'' というのは, 配布セットの ``slackware/XX'' サブディレクトリ
を示します. それ以外の場合は, ``contrib'' サブディレクトリに格納されて
います. 今回の場合は, 以下のファイルを取得すればいいことがわかります
(ファイル名は, 配布セットのルートディレクトリからの相対パスで示してあ
ります).
<tscreen>
<verb>
slakware/a2/ldso.tgz
slakware/a2/shlibs.tgz
slakware/x6/oldlibs/tgz
slakware/x9/xf_lib.tgz
</verb>
</tscreen>
<p>
gzip で圧縮された tar ファイルから必要なファイルを /compat/linux ディ
レクトリに格納してください(必要なファイルのみを展開するか, あるいは必
要でないファイルを後で削除してください). これで作業は終了です.
<p><bf>参照:</bf>
<verb>
ftp.freebsd.org:pub/FreeBSD/2.0.5-RELEASE/xperimnt/linux-emu/README
/usr/src/sys/i386/ibcs2/README.iBCS2
</verb>
<sect><heading>FreeBSD への Mathematica のインストール<label id="mathematica"></heading>
<p><em>原作: &a.rich and &a.chuck</em>
<p><em>訳: &a.kiroh;.</em>
この文書は, Mathematica 2.2 の Linux バイナリディストリビューションを,
FreeBSD 2.1 にインストールする方法について説明します.
<p>
Mathematica は, そのままでは FreeBSD をサポートしていませんが, Linux は
サポートしています. ですから, Linux エミュレータの設定が終わってしまえ
ば, Mathematica を動作させる環境はほとんど整ったことになります.
<p>
DOS 用のスチューデント版 Mathematica から Linux バージョンへのアップグレー
ド価格は, 執筆時点 (1996年5月) では, &dollar;45.00 です.
直接 Wolfram(電話番号(217) 398-6500)に注文して, 支払いはクレジットカー
ドでおこなえます。
<sect1><heading>Mathematica ディストリビューションの展開</heading>
<p>
バイナリは, Wolfram から CDROM で配布されています. CDROM には, 1ダー
スほどの tar ファイルが含まれており, それぞれサポートされているアーキテ
クチャに対応しています. Linux 用のファイルは, LINUX.TAR です. 例えば
/usr/local/Mathematica 以下にインストールする場合は, 以下のようにしま
す.
<tscreen>
<verb>
% cd /usr/local
% mkdir Mathematica
% cd Mathematica
% tar -xvf /cdrom/LINUX.TAR
</verb>
</tscreen>
<sect1><heading>Mathematica パスワードの取得</heading>
<p>
Mathematica を実行する前に, 使用するマシンに対応した `machine ID' を
Wolfram から取得する必要があります.
<p>
Linux 互換ランタイムライブラリがインストールされており, mathematica の展
開が終了したら, Install ディレクトリで `mathinfo' プログラムを使用す
ることで `machine ID' を得ることができます.
<tscreen>
<verb>
% cd /usr/local/Mathematica/Install
% mathinfo
LINUX: 'ioctl' fd=5, typ=0x89(), num=0x27 not implemented
richc.isdn.bcm.tmc.edu 9845-03452-90255
%
</verb>
</tscreen>
ここで, `richc' の `machine ID' は, `9845-03452-90255' となります.
ioctl のメッセージは無視してください. まだ FreeBSD では実装されていません.
Mathematica を実行するたびに同様のメッセージが表示されますが, 実際の使
用に問題はありませんので, 無視してかまいません.
<p>電子メールや電話, ファックスなどで Wolfram に `machine ID' を知らせ
て登録すると, いくつかの番号のグループからなるパスワードが送り返されて
きます. パスワードを, マシン名, ライセンス番号とともに, mathpass ファ
イルに追加します.
追加は, 以下のようにおこないます.
<tscreen>
<verb>
% cd /usr/local/Mathematica/Install
% math.install
</verb>
</tscreen>
ライセンス番号と, Wolfram から送られてきたパスワードを入力を求めます.
入力を間違えたりして, math.install の実行が失敗しても大丈夫です.
`mathpass' ファイルを手動で編集して, 情報を訂正してください.
<p>
パスワードの入力後, math.install では, インストール方法を, デフォルト
設定でのインストールか、自分で方法を指定するインストールから選ぶことが
できます. 筆者のようにインストールプログラムを信用していない場合は, 自
分でディレクトリを指定する方を選択するでしょう. 自分で指定するインストー
ルを選んだ場合, math.install 自身ではディレクトリの作成はおこないません.
注意してください. 別のウィンドウでシェルを開いて, 指定するディレクトリ
を作成してください. 存在しないディレクトリを指定して, math.install が
インストールに失敗した場合には, ディレクトリを作成し, math.install を
再び実行してください. 筆者らがインストール先に選んだディレクトリは, 以
下の通りです. くれぐれもあらかじめ作成してから, math.install で指定す
るようにしてください.
<tscreen>
<verb>
/usr/local/Mathematica/bin バイナリファイル
/usr/local/Mathematica/man/man1 マニュアルページ
/usr/local/Mathematica/lib/X11 XKeysymbファイル
</verb>
</tscreen>
また, システムレコードファイルとして, /tmp/math.record を使用するように
設定することもできます. このファイルには, セッションのログが記録されま
す. この設定が終了すると, math.install は残りのファイルを展開して, 必
要な場所に格納します.
<p>
Mathematica ノートブックの機能は, X フロントエンドとして本体とは別に含
まれています. X フロントエンドを正しくインストールするには,
/usr/local/Mathematica/FrontEnd ディレクトリに移動し, ./xfe.install シェ
ルスクリプトを実行します. インストール先を指定しなければなりませんが,
あらかじめ作成する必要はありません. 必要なディレクトリは, すべて
math.install によって作成されているからです. インストールが終了したら,
/usr/local/Mathematica/bin ディレクトリに, ``mathematica'' という名前の
シェルスクリプトが新たに作成されているはずです.
<p>最後に, Mathematica がインストールしたシェルスクリプトを修正する必要
があります. /usr/local/Mathematica/bin に含まれるすべてのシェルスクリプ
トの先頭部分に以下の行を追加します.
<tscreen>
<verb>
XKEYSYMDB=/usr/local/Mathematica/lib/X11/XKeysymDB; export XKEYSYMDB
</verb>
</tscreen>
これは, Mathematica が使用する Mathematica バージョンのキーマップファイル
XKeysymDB の場所を指定するものです.
2.1-STABLE を使用している場合は, 以下の行も追加してください.
<tscreen>
<verb>
RESOLV_HOST_CONF=/compat/linux/etc/host.conf; export RESOLV_HOST_CONF
</verb>
</tscreen>
これは, Mathematica に Linux バージョンの host.conf を使用するように指定し
ます. FreeBSD の host.conf の文法は, Linux のものと異なっているため, この
指定をおこなわないと, /etc/host.conf に関わるエラーが発生します.
<p>
新しいマニュアルページを利用したい場合は, さらに /etc/manpath.config ファイ
ルを修正する必要があります. また自分の~/.cshrcを変更して,
/usr/local/Mathematica/bin をパスに追加してください.
<p>
これでインストール作業はすべて終了です. ``mathematica'' とタイプすれば,
見栄えのする Mathematica ノートブックが表示されるはずです. Mathematica
には, Motif ユーザインタフェースが含まれますが, スタティックにリンクさ
れているため, Motif のライブラリは必要ありあません. 頑張って
Mathematica をインストールしてください.
<sect1><heading>バグ</heading>
<p>
ノートブックフロントエンドは, 以下のようなエラーメッセージを表示して,
ハングすることがあることが知られています.
<tscreen>
<verb>
File .../Untitled-1.mb appears to be broken for OMPR.257.0
</verb>
</tscreen>
今のところ原因はわかっていませんが, このバグが影響を及ぼすのは, ノートブッ
クの X window フロントエンドのみです. Mathematica エンジン本体に影響は
ありません. そのため, ``math'' によって起動されるコマンドラインのインタ
フェースを使用している場合は, このバグは関係ありません.
<sect1><heading>謝辞</heading>
<p>&a.sosと&a.peterに深く感謝します. Linuxエミュレーションが現在の形に
あるのは, 彼らのおかげです. そして, 彼ら二人にハッパをかけて, 犬のよう
に働かせた Michael Smithに. 今やLinuxエミュレーションは, linuxよりうま
くlinuxバイナリを実行できます :-)

Some files were not shown because too many files have changed in this diff Show more