aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FAQ/FAQ.sgml6219
1 files changed, 3147 insertions, 3072 deletions
diff --git a/FAQ/FAQ.sgml b/FAQ/FAQ.sgml
index 382acb9d74..84050f5ad0 100644
--- a/FAQ/FAQ.sgml
+++ b/FAQ/FAQ.sgml
@@ -1,5 +1,5 @@
<!DOCTYPE linuxdoc PUBLIC "-//FreeBSD//DTD linuxdoc//EN">
-<!-- $Id: FAQ.sgml,v 1.85 1997-10-18 16:05:59 brian Exp $ -->
+<!-- $Id: FAQ.sgml,v 1.86 1997-10-18 23:34:07 brian Exp $ -->
<article>
@@ -7,7 +7,7 @@
<author>Please send submissions to <tt><htmlurl url='mailto:faq@freebsd.org'
name='&lt;faq@freebsd.org&gt;'></tt>
- <date>$Date: 1997-10-18 16:05:59 $</date>
+ <date>$Date: 1997-10-18 23:34:07 $</date>
<abstract>
This is the FAQ for FreeBSD systems version 2.X All entries are
@@ -473,10 +473,10 @@
users:
<itemize>
- <item><url url="comp.unix.bsd.freebsd.announce"
+ <item><url url="news:comp.unix.bsd.freebsd.announce"
name="comp.unix.bsd.freebsd.announce"> (moderated)
- <item><url url="comp.unix.bsd.freebsd.misc"
+ <item><url url="news:comp.unix.bsd.freebsd.misc"
name="comp.unix.bsd.freebsd.misc">
<item><url url="comp.unix.bsd.misc" name="comp.unix.bsd.misc">
@@ -1753,2095 +1753,2168 @@
usenet/news.answers/mail/sendmail-faq" as the body of the
message.
- <sect>
- <heading>Commercial Applications</heading>
+ <sect>
+ <heading>Commercial Applications</heading>
- <p>
- <bf/NOTE/ This section is still very sparse, though we're hoping, of
- course, that companies will add to it! :) The FreeBSD group has no
- financial interest in any of the companies listed here but simply
- lists them as a public service (and feels that commercial interest
- in FreeBSD can have very positive effects on FreeBSD's long-term
- viability). We encourage commercial software vendors to send their
- entries here for inclusion.
-
-
- <sect1>
- <heading>Where can I get Motif for FreeBSD?</heading>
- <p>Contact <ref id="xig" name="Xi Graphics"> for a Motif 2.0
- distribution for FreeBSD.
-
- This distribution includes:
- <itemize>
- <item>OSF/Motif manager, xmbind, panner, wsm.
- <item>Development kit with uil, mrm, xm, xmcxx, include and Imake files.
- <item>Static and dynamic libraries.
- <item>Demonstration applets.
- <item>Preformatted man pages.
- </itemize>
-
- <p>Be sure to specify that you want the FreeBSD version of Motif
- when ordering! Versions for BSDI and Linux are also sold by
- <em>Xi Graphics</em>. This is currently a 4 diskette set... in the
- future this will change to a unified CD distribution like their CDE.</p>
-
- <sect1>
- <heading>Where can I get CDE for FreeBSD?</heading>
- <p>Contact <ref id="xig" name="Xi Graphics"> for a CDE 1.0.10
- distribution for FreeBSD. This includes Motif 1.2.5, and can
- be used with Motif 2.0.
-
- <p>This is a unified CDROM distribution for FreeBSD and Linux.</p>
-
- <sect1>
- <heading>Are there any commercial high-performance X servers?<label id="xig"></heading>
- <p>
- Yes, <url url="http://www.xig.com" name="Xi Graphics">
- sells their Accelerated-X product for FreeBSD and other Intel
- based systems.
-
- This high performance X Server offers easy configuration, support
- for multiple concurrent video boards and is distributed in binary
- form only, in a unified diskette distribution for FreeBSD and Linux.
-
- There is a free "compatibility demo" of version 3.1 available.
-
- Xi Graphics also sells Motif and CDE for FreeBSD (see above).
-
- <descrip>
- <tag/More info/
- <url url="http://www.xig.com/" name="Xi Graphics WWW page">
- <tag/or/
- <url url="mailto:sales@xig.com" name="Sales"> or
- <url url="mailto:support@xig.com" name="Support">
- email addresses.
- <tag/or/
- phone (800) 946 7433 or +1 303 298-7478.
- </descrip>
-
- <sect1>
- <heading>Are there any Database systems for FreeBSD?</heading>
- <p>
- Yes! Conetic Software Systems has ported their C/base and C/books
- database systems to FreeBSD 2.0.5 and higher, and Sleepycat
- Software is selling a commercially supported version of the DB
- database library.
-
- <descrip>
- <tag/For more information/
- <url url="http://www.conetic.com/" name="Conetic Software Systems">
- <tag/or mail/
- <url url="mailto:info@conetic.com" name="Information E-mail address">,
- <tag/and/
- <url url="http://www.sleepycat.com/" name = "Sleepycat Software">.
- </descrip>
-
- <sect>
- <heading>User Applications</heading>
- <sect1>
- <heading>So, where are all the user applications?</heading>
-
- <p>
- Please take a look at <url
- url="http://www.FreeBSD.ORG/ports/" name="the ports page">
- for info on software packages ported to FreeBSD. The list currently
- tops 1000 and is growing daily, so come back to check often
- or subscribe to the <tt/freebsd-announce/ <ref id="mailing"
- name="mailing list"> for periodic updates on new entries.
-
- Most ports should be available for both the 2.2 and 3.0
- branches, and many of them should work on 2.1.x systems as
- well. Each time a FreeBSD release is made, a snapshot of the
- ports tree at the time of release in also included in the
- <tt>ports/</tt> directory.
-
- We also support the concept of a ``package'', essentially no
- more than a gzipped binary distribution with a little extra
- intelligence embedded in it for doing whatever custom installation
- work is required. A package can installed and uninstalled
- again easily without having to know the gory details of which
- files it includes.
-
- Use the package installation menu in <tt>/stand/sysinstall</tt>
- (under the post-configuration menu item) or invoke the
- <em>pkg_add(1)</em> command on the specific package files you're
- interested in installing. Package files can usually be identified by
- their <em>.tgz</em> suffix and CDROM distribution people will have
- a <tt>packages/All</tt> directory on their CD which contains such
- files. They can also be downloaded over the net for various versions
- of FreeBSD at the following locations:
-
- <descrip>
- <tag>for 2.1.x-release</tag>
- <url url="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/packages-2.1.7/"
- name="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/packages-2.1.7/">
- <tag>for 2.2.2-release/2.2-stable</tag>
- <url url="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/packages-2.2/"
- name="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/packages-2.2/">
- <tag>for 3.0-current</tag>
- <url url="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/packages-3.0/"
- name="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/packages-3.0/">
- </descrip>
-
- or your nearest local mirror site.
-
- Note that all ports may not be available as packages since
- new ones are constantly being added. It is always a good
- idea to check back periodically to see which packages are available
- at the <url url="ftp://ftp.freebsd.org/pub/FreeBSD/"
- name="ftp.freebsd.org"> master site.
-
- <sect1>
- <heading>ghostscript gives lots of errors with my 386/486SX.<label id="emul"></heading>
-
- <p>
- You don't have a math co-processor, right?
- You will need to add the alternative math emulator to your kernel;
- you do this by adding the following to your kernel config file
- and it will be compiled in.
-
- <verb>
- options GPL_MATH_EMULATE
- </verb>
-
- <bf/NOTE/ You will need to remove the <tt/MATH&lowbar;EMULATE/
- option when you do this.
-
- <sect1>
- <heading>Where do I find libc.so.3.0?</heading>
- <p>
- You are trying to run a package for 2.2/3.0 on a 2.1.x
- system. Please take a look at the previous section and get
- the correct port/package for your system.
-
- <sect1>
- <heading>When I run a SCO/iBCS2 application, it bombs on <tt/socksys/.</heading>
-
- <p>
- You first need to edit the <tt>/etc/sysconfig</tt>
- (or <htmlurl url="http://www.freebsd.org/cgi/man.cgi?rc.conf(5)"
- name="/etc/rc.conf">) file in the last
- section to change the following variable to <tt/YES/:
- <verb>
- # Set to YES if you want ibcs2 (SCO) emulation loaded at startup
- ibcs2=NO
- </verb>
- It will load the <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?ibcs2" name="ibcs2">
- kernel module at startup.
-
- You'll then need to set up /compat/ibcs2/dev to look like:
-
- <verb>
+ <p><bf/NOTE/ This section is still very sparse, though we're hoping, of
+ course, that companies will add to it! :) The FreeBSD group has no
+ financial interest in any of the companies listed here but simply
+ lists them as a public service (and feels that commercial interest
+ in FreeBSD can have very positive effects on FreeBSD's long-term
+ viability). We encourage commercial software vendors to send their
+ entries here for inclusion.
+
+ <sect1>
+ <heading>Where can I get Motif for FreeBSD?</heading>
+
+ <p>Contact <ref id="xig" name="Xi Graphics"> for a Motif 2.0
+ distribution for FreeBSD.
+
+ <p>This distribution includes:
+ <itemize>
+ <item>OSF/Motif manager, xmbind, panner, wsm.
+
+ <item>Development kit with uil, mrm, xm, xmcxx, include and Imake
+ files.
+
+ <item>Static and dynamic libraries.
+
+ <item>Demonstration applets.
+
+ <item>Preformatted man pages.
+ </itemize>
+
+ <p>Be sure to specify that you want the FreeBSD version of Motif
+ when ordering! Versions for BSDI and Linux are also sold by
+ <em>Xi Graphics</em>. This is currently a 4 diskette set... in the
+ future this will change to a unified CD distribution like their CDE.
+
+ <sect1>
+ <heading>Where can I get CDE for FreeBSD?</heading>
+
+ <p>Contact <ref id="xig" name="Xi Graphics"> for a CDE 1.0.10
+ distribution for FreeBSD. This includes Motif 1.2.5, and can
+ be used with Motif 2.0.
+
+ <p>This is a unified CDROM distribution for FreeBSD and Linux.
+
+ <sect1>
+ <heading>
+ Are there any commercial high-performance X servers?<label id="xig">
+ </heading>
+
+ <p>Yes, <url url="http://www.xig.com" name="Xi Graphics"> sells their
+ Accelerated-X product for FreeBSD and other Intel based systems.
+
+ <p>This high performance X Server offers easy configuration, support
+ for multiple concurrent video boards and is distributed in binary
+ form only, in a unified diskette distribution for FreeBSD and Linux.
+
+ <p>There is a free "compatibility demo" of version 3.1 available.
+
+ <p>Xi Graphics also sells Motif and CDE for FreeBSD (see above).
+
+ <descrip>
+ <tag/More info/
+ <url url="http://www.xig.com/" name="Xi Graphics WWW page">
+
+ <tag/or/ <url url="mailto:sales@xig.com" name="Sales"> or
+ <url url="mailto:support@xig.com" name="Support"> email addresses.
+
+ <tag/or/ phone (800) 946 7433 or +1 303 298-7478.
+ </descrip>
+
+ <sect1>
+ <heading>Are there any Database systems for FreeBSD?</heading>
+
+ <p>Yes! Conetic Software Systems has ported their C/base and C/books
+ database systems to FreeBSD 2.0.5 and higher, and Sleepycat
+ Software is selling a commercially supported version of the DB
+ database library.
+
+ <descrip>
+ <tag/For more information/
+ <url url="http://www.conetic.com/" name="Conetic Software Systems">
+
+ <tag/or mail/
+ <url url="mailto:info@conetic.com" name="Information E-mail address">,
+
+ <tag/and/
+ <url url="http://www.sleepycat.com/" name = "Sleepycat Software">.
+ </descrip>
+
+ <sect>
+ <heading>User Applications</heading>
+
+ <sect1>
+ <heading>So, where are all the user applications?</heading>
+
+ <p>Please take a look at <url url="http://www.FreeBSD.ORG/ports/"
+ name="the ports page"> for info on software packages ported to
+ FreeBSD. The list currently tops 1000 and is growing daily, so come
+ back to check often or subscribe to the <tt/freebsd-announce/
+ <ref id="mailing" name="mailing list"> for periodic updates on new
+ entries.
+
+ <p>Most ports should be available for both the 2.2 and 3.0
+ branches, and many of them should work on 2.1.x systems as
+ well. Each time a FreeBSD release is made, a snapshot of the
+ ports tree at the time of release in also included in the
+ <tt>ports/</tt> directory.
+
+ <p>We also support the concept of a ``package'', essentially no
+ more than a gzipped binary distribution with a little extra
+ intelligence embedded in it for doing whatever custom installation
+ work is required. A package can installed and uninstalled
+ again easily without having to know the gory details of which
+ files it includes.
+
+ <p>Use the package installation menu in <tt>/stand/sysinstall</tt>
+ (under the post-configuration menu item) or invoke the
+ <em>pkg_add(1)</em> command on the specific package files you're
+ interested in installing. Package files can usually be identified by
+ their <em>.tgz</em> suffix and CDROM distribution people will have
+ a <tt>packages/All</tt> directory on their CD which contains such
+ files. They can also be downloaded over the net for various versions
+ of FreeBSD at the following locations:
+
+ <descrip>
+ <tag>for 2.1.x-release</tag>
+ <url url="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/packages-2.1.7/"
+ name="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/packages-2.1.7/">
+
+ <tag>for 2.2.2-release/2.2-stable</tag>
+ <url url="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/packages-2.2/"
+ name="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/packages-2.2/">
+
+ <tag>for 3.0-current</tag>
+ <url url="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/packages-3.0/"
+ name="ftp://ftp.FreeBSD.ORG/pub/FreeBSD/packages-3.0/">
+ </descrip>
+
+ <p>or your nearest local mirror site.
+
+ <p>Note that all ports may not be available as packages since
+ new ones are constantly being added. It is always a good
+ idea to check back periodically to see which packages are available
+ at the <url url="ftp://ftp.freebsd.org/pub/FreeBSD/"
+ name="ftp.freebsd.org"> master site.
+
+ <sect1>
+ <heading>
+ ghostscript gives lots of errors with my 386/486SX.<label id="emul">
+ </heading>
+
+ <p>You don't have a math co-processor, right?
+ You will need to add the alternative math emulator to your kernel;
+ you do this by adding the following to your kernel config file
+ and it will be compiled in.
+
+ <verb>
+ options GPL_MATH_EMULATE
+ </verb>
+
+ <p><bf/NOTE/ You will need to remove the <tt/MATH&lowbar;EMULATE/
+ option when you do this.
+
+ <sect1>
+ <heading>Where do I find libc.so.3.0?</heading>
+
+ <p>You are trying to run a package for 2.2/3.0 on a 2.1.x
+ system. Please take a look at the previous section and get
+ the correct port/package for your system.
+
+ <sect1>
+ <heading>
+ When I run a SCO/iBCS2 application, it bombs on <tt/socksys/.
+ </heading>
+
+ <p>You first need to edit the <tt>/etc/sysconfig</tt>
+ (or <htmlurl url="http://www.freebsd.org/cgi/man.cgi?rc.conf(5)"
+ name="/etc/rc.conf">) file in the last section to change the
+ following variable to <tt/YES/:
+
+ <verb>
+ # Set to YES if you want ibcs2 (SCO) emulation loaded at startup
+ ibcs2=NO
+ </verb>
+
+ <p>It will load the <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?ibcs2" name="ibcs2">
+ kernel module at startup.
+
+ <p>You'll then need to set up /compat/ibcs2/dev to look like:
+
+ <verb>
lrwxr-xr-x 1 root wheel 9 Oct 15 22:20 X0R@ -> /dev/null
lrwxr-xr-x 1 root wheel 7 Oct 15 22:20 nfsd@ -> socksys
-rw-rw-r-- 1 root wheel 0 Oct 28 12:02 null
lrwxr-xr-x 1 root wheel 9 Oct 15 22:20 socksys@ -> /dev/null
crw-rw-rw- 1 root wheel 41, 1 Oct 15 22:14 spx
- </verb>
- You just need socksys to go to <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?null(4)"
- name="/dev/null"> to fake the
- open &amp; close. The code in -current will handle the rest.
- This is much cleaner than the way it was done before. If you
- want the <tt/spx/ driver for a local socket X connection, define
- <tt/SPX&lowbar;HACK/ when you compile the system.
-
- <sect1>
- <heading>How do I configure INN (Internet News) for my machine?</heading>
-
- <p>After installing the inn package or port, the
- <url url="http://www.math.psu.edu/barr/INN.html"
- name="Dave Barr's INN Page">
- where you'll find the INN FAQ may be an excellent place to start.
-
- <sect>
- <heading>Kernel Configuration</heading>
- <p>
- <sect1>
- <heading>I'd like to customize my kernel. Is it difficult?<label id="make-kernel"></heading>
- <p>
- Not at all! First, you need either the complete
- <tt/srcdist/ or, at the minimum, the <tt/kerndist/ loaded on your
- system. This provides the necessary sources for building the
- kernel, as, unlike most commercial UNIX vendors, we have a policy
- of <bf/NOT/ shipping our kernel code in binary object form.
- Shipping the source takes a bit more space, but it also means
- that you can refer to the actual kernel sources in case of
- difficulty or to further your understanding of what's
- <bf/really/ happening.
-
- Once you have the <tt/kerndist/ or <tt/srcdist/ loaded, do this:
-
- <enum>
- <item> <tt>cd /usr/src/sys/i386/conf</tt>
- <item> <tt/cp GENERIC MYKERNEL/
- <item> <tt/vi MYKERNEL/
- <item> <tt/config MYKERNEL/
- <item> <tt>cd ../../compile/MYKERNEL</tt>
- <item> <tt/make depend/
- <item> <tt/make all/
- <item> <tt/make install/
- <item> <tt/reboot/
- </enum>
-
- Step 2 may not be necessary if you already have a kernel
- configuration file from a previous release of FreeBSD 2.X. -
- simply bring your old one over and check it carefully for any
- drivers that may have changed boot syntax or been rendered
- obsolete.
-
- A good kernel config file to look into is <tt/LINT/, which
- contains entries for <bf/all/ possible kernel options and
- documents them fairly well. The <tt/GENERIC/ kernel config file
- is used to build the initial release you probably loaded (unless
- you upgraded in-place) and contains entries for the most common
- configurations. It's a pretty good place to start from.
-
- If you don't need to make any changes to <tt/GENERIC/, you can
- also skip step 3, where you customize the kernel for your
- configuration. Step 8 should only be undertaken if steps 6 and 7
- succeed. This will copy the new kernel image to
- <tt>/kernel</tt> and <bf/BACK UP YOUR OLD ONE IN/
- <tt>/kernel.old</tt>! It's very important to remember this in
- case the new kernel fails to work for some reason - you can still
- select <tt>/kernel.old</tt> at the boot prompt to boot the old
- one. When you reboot, the new kernel will boot by default.
-
- If the compile in step 7 falls over for some reason, then it's
- recommended that you start from step 4 but substitute
- <tt/GENERIC/ for <tt/MYKERNEL/. If you can generate a
- <tt/GENERIC/ kernel, then it's likely something in your special
- configuration file that's bad (or you've uncovered a bug!). If
- the build of the <tt/GENERIC/ kernel does <bf/NOT/ succeed, then
- it's very likely that your sources are somehow corrupted.
-
- Finally, if you need to see your original boot messages again to
- compile a new kernel that's better tailored to your hardware, try
- the <htmlurl url="http://www.freebsd.org/cgi/man.cgi?dmesg"
- name="dmesg"> command. It should print out all the boot-time
- messages printed by your old kernel, some of which may be quite
- helpful in configuring the new one.
-
- <bf/NOTE:/ I recommend making a dated snapshot of your kernel
- in <tt/kernel.YYMMDD/ after you get it all working, that way if
- you do something dire the next time you play with your configuration
- you can boot that kernel instead of having to go all the way back
- to <tt/kernel.GENERIC/. This is particularly important if you're
- now booting off a controller that isn't supported in the GENERIC
- kernel (yes, personal experience).
-
- <sect1>
- <heading>My kernel compiles fail because <tt/&lowbar;hw&lowbar;float/ is missing.</heading>
-
- <p>
- Let me guess. You removed <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?npx(4)"
- name="npx0"> from your kernel configuration
- file because you don't have a math co-processor, right? Wrong! :-)
- The <tt/npx0/ is <bf/MANDATORY/. Even if you don't have a
- mathematic co-processor, you <bf/must/ include the <tt/npx0/
- device.
-
- <sect1>
- <heading>Interrupt conflicts with multi-port serial code.</heading>
- <p>
- Q. When I compile a kernel with multi-port serial code, it tells me
- that only the first port is probed and the rest skipped due to
- interrupt conflicts. How do I fix this?
-
- <p>
- A. The problem here is that FreeBSD has code built-in to keep the
- kernel from getting trashed due to hardware or software
- conflicts. The way to fix this is to leave out the IRQ settings
- on all but one port. Here is a example:
+ </verb>
-<verb>
-#
-# Multiport high-speed serial line - 16550 UARTS
-#
-device sio2 at isa? port 0x2a0 tty irq 5 flags 0x501 vector siointr
-device sio3 at isa? port 0x2a8 tty flags 0x501 vector siointr
-device sio4 at isa? port 0x2b0 tty flags 0x501 vector siointr
-device sio5 at isa? port 0x2b8 tty flags 0x501 vector siointr
-</verb>
+ <p>You just need socksys to go to <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?null(4)" name="/dev/null">
+ to fake the open &amp; close. The code in -current will handle the
+ rest. This is much cleaner than the way it was done before. If you
+ want the <tt/spx/ driver for a local socket X connection, define
+ <tt/SPX&lowbar;HACK/ when you compile the system.
- <sect1>
- <heading>How do I enable support for QIC-40/80 drives?</heading>
+ <sect1>
+ <heading>
+ How do I configure INN (Internet News) for my machine?
+ </heading>
- <p>
- You need to uncomment the following line in the generic config
- file (or add it to your config file), add a ``<tt/flags 0x1/''
- on the <htmlurl url="http://www.freebsd.org/cgi/man.cgi?fdc(4)"
- name="fdc"> line and recompile.
+ <p>After installing the inn package or port, an excelent place to
+ start is <url url="http://www.math.psu.edu/barr/INN.html"
+ name="Dave Barr's INN Page"> where you'll find the INN FAQ.
-<verb>
+ <sect>
+ <heading>Kernel Configuration</heading>
+
+ <sect1>
+ <heading>
+ I'd like to customize my kernel. Is it difficult?
+ <label id="make-kernel">
+ </heading>
+
+ <p>Not at all! First, you need either the complete <tt/srcdist/ or, at
+ the minimum, the <tt/kerndist/ loaded on your system. This provides the
+ necessary sources for building the kernel, as, unlike most commercial
+ UNIX vendors, we have a policy of <bf/NOT/ shipping our kernel code in
+ binary object form.
+
+ <p>Shipping the source takes a bit more space, but it also means
+ that you can refer to the actual kernel sources in case of
+ difficulty or to further your understanding of what's
+ <bf/really/ happening.
+
+ <p>Once you have the <tt/kerndist/ or <tt/srcdist/ loaded, do the
+ following as root:
+
+ <enum>
+ <item> <tt>cd /usr/src/sys/i386/conf</tt>
+ <item> <tt/cp GENERIC MYKERNEL/
+ <item> <tt/vi MYKERNEL/
+ <item> <tt/config MYKERNEL/
+ <item> <tt>cd ../../compile/MYKERNEL</tt>
+ <item> <tt/make depend/
+ <item> <tt/make all/
+ <item> <tt/make install/
+ <item> <tt/reboot/
+ </enum>
+
+ <p>Step 2 may not be necessary if you already have a kernel
+ configuration file from a previous release of FreeBSD 2.X. -
+ simply bring your old one over and check it carefully for any
+ drivers that may have changed boot syntax or been rendered
+ obsolete.
+
+ <p>A good kernel config file to look into is <tt/LINT/, which
+ contains entries for <bf/all/ possible kernel options and
+ documents them fairly well. The <tt/GENERIC/ kernel config file
+ is used to build the initial release you probably loaded (unless
+ you upgraded in-place) and contains entries for the most common
+ configurations. It's a pretty good place to start from.
+
+ <p>If you don't need to make any changes to <tt/GENERIC/, you can
+ also skip step 3, where you customize the kernel for your
+ configuration. Step 8 should only be undertaken if steps 6 and 7
+ succeed. This will copy the new kernel image to
+ <tt>/kernel</tt> and <bf/BACK UP YOUR OLD ONE IN/
+ <tt>/kernel.old</tt>! It's very important to remember this in
+ case the new kernel fails to work for some reason - you can still
+ select <tt>/kernel.old</tt> at the boot prompt to boot the old
+ one. When you reboot, the new kernel will boot by default.
+
+ <p>If the compile in step 7 falls over for some reason, then it's
+ recommended that you start from step 4 but substitute
+ <tt/GENERIC/ for <tt/MYKERNEL/. If you can generate a
+ <tt/GENERIC/ kernel, then it's likely something in your special
+ configuration file that's bad (or you've uncovered a bug!). If
+ the build of the <tt/GENERIC/ kernel does <bf/NOT/ succeed, then
+ it's very likely that your sources are somehow corrupted.
+
+ <p>Finally, if you need to see your original boot messages again to
+ compile a new kernel that's better tailored to your hardware, try
+ the <htmlurl url="http://www.freebsd.org/cgi/man.cgi?dmesg"
+ name="dmesg"> command. It should print out all the boot-time
+ messages printed by your old kernel, some of which may be quite
+ helpful in configuring the new one.
+
+ <p><bf/NOTE:/ I recommend making a dated snapshot of your kernel
+ in <tt/kernel.YYMMDD/ after you get it all working, that way if
+ you do something dire the next time you play with your configuration
+ you can boot that kernel instead of having to go all the way back
+ to <tt/kernel.GENERIC/. This is particularly important if you're
+ now booting off a controller that isn't supported in the GENERIC
+ kernel (yes, personal experience).
+
+ <sect1>
+ <heading>
+ My kernel compiles fail because <tt/&lowbar;hw&lowbar;float/ is missing.
+ </heading>
+
+ <p>Let me guess. You removed <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?npx(4)" name="npx0"> from your
+ kernel configuration file because you don't have a math co-processor,
+ right? Wrong! :-) The <tt/npx0/ is <bf/MANDATORY/. Even if you don't
+ have a mathematic co-processor, you <bf/must/ include the <tt/npx0/
+ device.
+
+ <sect1>
+ <heading>Interrupt conflicts with multi-port serial code.</heading>
+
+ <p><bf/Q./ When I compile a kernel with multi-port serial code, it
+ tells me that only the first port is probed and the rest skipped due to
+ interrupt conflicts. How do I fix this?
+
+ <p><bf/A./ The problem here is that FreeBSD has code built-in to keep
+ the kernel from getting trashed due to hardware or software
+ conflicts. The way to fix this is to leave out the IRQ settings
+ on all but one port. Here is a example:
+
+ <verb>
+ #
+ # Multiport high-speed serial line - 16550 UARTS
+ #
+ device sio2 at isa? port 0x2a0 tty irq 5 flags 0x501 vector siointr
+ device sio3 at isa? port 0x2a8 tty flags 0x501 vector siointr
+ device sio4 at isa? port 0x2b0 tty flags 0x501 vector siointr
+ device sio5 at isa? port 0x2b8 tty flags 0x501 vector siointr
+ </verb>
+
+ <sect1>
+ <heading>How do I enable support for QIC-40/80 drives?</heading>
+
+ <p>You need to uncomment the following line in the generic config
+ file (or add it to your config file), add a ``<tt/flags 0x1/''
+ on the <htmlurl url="http://www.freebsd.org/cgi/man.cgi?fdc(4)"
+ name="fdc"> line and recompile.
+
+ <verb>
controller fdc0 at isa? port "IO_FD1" bio irq 6 drq 2 flags 0x1 vector fdintr
disk fd0 at fdc0 drive 0 ^^^^^^^^^
disk fd1 at fdc0 drive 1
#tape ft0 at fdc0 drive 2
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-</verb>
+ </verb>
- Next, you create a device called <tt>/dev/ft0</tt> by going into
- <tt>/dev</tt> and run the following command:
-
- <verb>
- sh MAKEDEV ft0
- </verb>
-
- for the first device. <tt/ft1/ for a second one and so on.
-
- You will have a device called <tt>/dev/ft0</tt>, which you can
- write to through a special program to manage it called
- ``<tt/ft/'' - see the man page on <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?ft" name="ft">
- for further details.
- Versions previous to <tt/-current/ also had some trouble dealing
- with bad tape media; if you have trouble where <tt/ft/ seems to
- go back and forth over the same spot, try grabbing the latest
- version of <tt/ft/ from <tt>/usr/src/sbin/ft</tt> in
- <tt/-current/ and try that.
- </sect1>
-
- <sect>
- <heading>System Administration</heading>
-
- <sect1>
- <heading>Where are the system start-up configuration files?</heading>
-
- <p>
- From 2.0.5R to 2.2.2R, the primary configuration file is
- <tt>/etc/sysconfig</tt>. All the options are to be specified in
- this file and other files such as <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?rc" name="/etc/rc"> and
- <tt>/etc/netstart</tt> just include it.
-
- Look in the <tt>/etc/sysconfig</tt> file and change the value to
- match your system. This file is filled with comments to show what
- to put in there.
-
- In post-2.2.2 and 3.0, <tt>/etc/sysconfig</tt> was renamed
- to a more self-describing <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?rc.conf(5)"
- name="rc.conf"> file and the syntax
- cleaned up a bit in the process. <tt>/etc/netstart</tt> was also
- renamed to <tt>/etc/rc.network</tt> so that all files could be
- copied with a <tt><htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?cp" name="cp">
- /usr/src/etc/rc* /etc</tt> command.
-
- <tt>/etc/rc.local</tt> is here as always and is the place to
- start up additional local services like <htmlurl
- url="http://www.freebsd.org/cgi/ports.cgi?^inn" name="INN">
- or set custom options.
-
- The <tt>/etc/rc.serial</tt> is for serial port initialization
- (e.g. locking the port characteristics, and so on.).
-
- The <tt>/etc/rc.i386</tt> is for Intel-specifics settings, such
- as iBCS2 emulation or the PC system console configuration.
-
- Starting with 2.1.0R, you can also have "local" startup files in a
- directory specified in <tt>/etc/sysconfig</tt> (or
- <tt>/etc/rc.conf</tt>):
- <verb>
- # Location of local startup files.
- local_startup=/usr/local/etc/rc.local.d
- </verb>
- Each file ending in <tt/.sh/ will be executed in alphabetical
- order.
-
- If you want to ensure a certain execution order without changing all
- the file names, you can use a scheme similar to the following with
- digits prepended to each file name to insure the ordering:
- <verb>
- 10news.sh
- 15httpd.sh
- 20ssh.sh
- </verb>
- It can be seen as ugly (or SysV :-)) but it provides a simple and
- regular scheme for locally-added packages without resorting to
- magical editing of <tt>/etc/rc.local</tt>.
-
- <sect1>
- <heading>How do I add a user easily?</heading>
-
- <p>
- Use the <htmlurl url="http://www.freebsd.org/cgi/man.cgi?adduser"
- name="adduser"> command.
-
- There is another package called ``<tt/new-account/'' also written
- in Perl by Ollivier Robert. Ask
- <tt>&lt;roberto@FreeBSD.ORG&gt;</tt> about it. It is currently
- undergoing further development.
-
- To remove the user again, use the <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?rmuser" name="rmuser">
- command.
-
- <sect1>
- <heading>How can I add my new hard disk to my FreeBSD system?</heading>
- <p>
- The easiest way to do this is from the installation program. You
- can start the installation program by running
- <tt>/stand/sysinstall</tt> as root.
- <p>
- Alternatively, if you still have the install floppy, you can just
- reboot from that and use the partition & label editors while
- the system is totally quiescent.
- <p>
- <label id="2_1-disklabel-fix">
- If the above does not work for you, or if you're a total masochist
- who likes arcane interfaces, this is how to use
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?disklabel"
- name="disklabel"> manually:
- <p>
- <em>WARNING: There is no substitute for reading carefully
- &amp; understanding what you are doing! Things described here may
- DESTROY your system. Proceed with caution! Remember, a BACKUP is your
- friend!</em>
- <p>
- <tt /sysinstall/ used to be broken up to 2.1.5-RELEASE and will
- insist on mounting something at / in the disklabel editor. You will
- have to manually run
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?disklabel"
- name="disklabel"> before you can run
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?newfs"
- name="newfs">/. This means doing the math for partitions
- yourself. This is rumored to be easy :-) See if you can obtain a
- skeletal label with ''<tt>disklabel -r &lt;diskname&gt;</tt>''
- <em>(e.g. </em>''<tt>disklabel -r /dev/rwd0s2</tt>''<em>, assuming
- that your new disk is wd0, the first IDE drive, and the FreeBSD
- slice is the second one, s2)</em>. You should see something
- like:-
+ <p>Next, you create a device called <tt>/dev/ft0</tt> by going into
+ <tt>/dev</tt> and run the following command:
-<verb>
-# /dev/rwd0s2:
-type: ESDI
-disk: wd0s2
-label:
-flags:
-bytes/sector: 512
-sectors/track: 63
-tracks/cylinder: 64
-sectors/cylinder: 4032
-cylinders: 610
-sectors/unit: 2459520
-rpm: 3600
-interleave: 1
-trackskew: 0
-cylinderskew: 0
-headswitch: 0 # milliseconds
-track-to-track seek: 0 # milliseconds
-drivedata: 0
-
-8 partitions:
-# size offset fstype [fsize bsize bps/cpg]
- c: 2459520 0 unused 0 0 # (Cyl. 0 - 609)
- e: 2459520 0 4.2BSD 0 0 0 # (Cyl. 0 - 609)
-</verb>
+ <verb>
+ sh ./MAKEDEV ft0
+ </verb>
- Make sure that the size is correct, in this case, 2459520
- sectors/unit x 512 bytes/sector / 2**20 (1 Megabyte) = 1200
- Megabytes. The rest of the stuff (b/s, t/c, s/c, interleave, etc.)
- should get suitable defaults from <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?disklabel"
- name="disklabel">, but see
- <ref id="ESDI" name="this note"> for older disks. 'fsize' is the
- <ref id="fsize" name="Fragment size"> for the filesystem,
- and 'bsize' is the <ref id="bsize" name="Block size">. 'c' is
- the partition covering the entire slice (or entire disk for a
- non-sliced disk), and must remain as it is. <em>It should not be
- used for a filesystem</em>. The 'c' partition is magic in that it
- is faked by the kernel even if no disklabel exists.
- <p>
- In the trivial case, where you want a single filesystem spanning
- the whole slice, the entry for 'e' has to be corrected. Setting fsize
- to 1024 and bsize to 8192 (8 fragments/block), which are reasonable
- values for a filesystem, the correct entry for 'e' would be:-
+ <p>for the first device. <tt/ft1/ for a second one and so on.
-<verb>
- e: 2459520 0 4.2BSD 1024 8192
-</verb>
+ <p>You will have a device called <tt>/dev/ft0</tt>, which you can
+ write to through a special program to manage it called
+ ``<tt/ft/'' - see the man page on <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?ft" name="ft">
+ for further details.
- <p>
- Now, the (slightly) harder case, where we want 2 partitions for 2
- filesystems. Following the <ref id="fsname" name="BSD naming
- conventions">, the partitions will be <tt /wd0s2e/ &amp;
- <tt /wd0s2f/. Suppose we split up the 1200 MB into 300 MB for
- 'e' and the remaining 900 MB for 'f'. The partition entries would
- be:-
+ <p>Versions previous to <tt/-current/ also had some trouble dealing
+ with bad tape media; if you have trouble where <tt/ft/ seems to
+ go back and forth over the same spot, try grabbing the latest
+ version of <tt/ft/ from <tt>/usr/src/sbin/ft</tt> in
+ <tt/-current/ and try that.
-<verb>
-8 partitions:
-# size offset fstype [fsize bsize bps/cpg]
- c: 2459520 0 unused 0 0 # (Cyl. 0 - 609)
- e: 614400 0 4.2BSD 1024 8192
- f: 1843200 614400 4.2BSD 1024 8192
-</verb>
+ <sect>
+ <heading>System Administration</heading>
- <p>
- <bf /Note:/ You can directly edit the disklabel with
- ''<tt>disklabel -e wd0s2</tt>''. See
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?disklabel"
- name="disklabel">.
- <p>
- If you have at least FreeBSD 2.1.5, and you want to dedicate
- an entire disk to FreeBSD without any care for other
- systems, you might shorten the steps above to something like:
-<verb>
-# dd if=/dev/zero of=/dev/rwd0 count=100
-# disklabel -Brw wd0 auto
-# disklabel -e wd0
-</verb>
+ <sect1>
+ <heading>Where are the system start-up configuration files?</heading>
+
+ <p>From 2.0.5R to 2.2.1R, the primary configuration file is
+ <tt>/etc/sysconfig</tt>. All the options are to be specified in
+ this file and other files such as <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?rc" name="/etc/rc"> and
+ <tt>/etc/netstart</tt> just include it.
+
+ <p>Look in the <tt>/etc/sysconfig</tt> file and change the value to
+ match your system. This file is filled with comments to show what
+ to put in there.
+
+ <p>In post-2.2.1 and 3.0, <tt>/etc/sysconfig</tt> was renamed
+ to a more self-describing <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?rc.conf(5)" name="rc.conf">
+ file and the syntax cleaned up a bit in the process.
+ <tt>/etc/netstart</tt> was also renamed to <tt>/etc/rc.network</tt>
+ so that all files could be copied with a <tt><htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?cp" name="cp"> /usr/src/etc/rc*
+ /etc</tt> command.
+
+ <p><tt>/etc/rc.local</tt> is here as always and may be used to
+ start up additional local services like <htmlurl
+ url="http://www.freebsd.org/cgi/ports.cgi?^inn" name="INN">
+ or set custom options.
+
+ <p>The <tt>/etc/rc.serial</tt> is for serial port initialization
+ (e.g. locking the port characteristics, and so on.).
+
+ <p>The <tt>/etc/rc.i386</tt> is for Intel-specifics settings, such
+ as iBCS2 emulation or the PC system console configuration.
+
+ <p>Starting with 2.1.0R, you can also have "local" startup files in a
+ directory specified in <tt>/etc/sysconfig</tt> (or
+ <tt>/etc/rc.conf</tt>):
+
+ <verb>
+ # Location of local startup files.
+ local_startup=/usr/local/etc/rc.local.d
+ </verb>
+
+ <p>Each file ending in <tt/.sh/ will be executed in alphabetical order.
+
+ <p>If you want to ensure a certain execution order without changing all
+ the file names, you can use a scheme similar to the following with
+ digits prepended to each file name to insure the ordering:
+
+ <verb>
+ 10news.sh
+ 15httpd.sh
+ 20ssh.sh
+ </verb>
+
+ <p>It can be seen as ugly (or SysV :-)) but it provides a simple and
+ regular scheme for locally-added packages without resorting to
+ magical editing of <tt>/etc/rc.local</tt>. Many of the ports/packages
+ assume that <tt>/usr/local/etc/rc.d</tt> is a local startup directory.
+
+ <sect1>
+ <heading>How do I add a user easily?</heading>
+
+ <p>Use the <htmlurl url="http://www.freebsd.org/cgi/man.cgi?adduser"
+ name="adduser"> command.
+
+ <p>There is another package called ``<tt/new-account/'' also written
+ in Perl by Ollivier Robert. Ask <tt>&lt;roberto@FreeBSD.ORG&gt;</tt>
+ about it. It is currently undergoing further development.
+
+ <p>To remove the user again, use the <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?rmuser" name="rmuser"> command.
+
+ <sect1>
+ <heading>How can I add my new hard disk to my FreeBSD system?</heading>
+
+ <p>The easiest way to do this is from the installation program. You
+ can start the installation program by running
+ <tt>/stand/sysinstall</tt> as root.
+
+ <p>Alternatively, if you still have the install floppy, you can just
+ reboot from that and use the partition & label editors while
+ the system is totally quiescent.
+
+ <p><label id="2_1-disklabel-fix">If the above does not work for you,
+ or if you're a total masochist who likes arcane interfaces, this is how
+ to use <htmlurl url="http://www.freebsd.org/cgi/man.cgi?disklabel"
+ name="disklabel"> manually:
+
+ <p><em>WARNING: There is no substitute for reading carefully
+ &amp; understanding what you are doing! Things described here may
+ DESTROY your system. Proceed with caution! Remember, a BACKUP is your
+ friend!</em>
+
+ <p><tt /sysinstall/ used to be broken up to 2.1.5-RELEASE and will
+ insist on mounting something at / in the disklabel editor. You will
+ have to manually run
+ <htmlurl url="http://www.freebsd.org/cgi/man.cgi?disklabel"
+ name="disklabel"> before you can run
+ <htmlurl url="http://www.freebsd.org/cgi/man.cgi?newfs" name="newfs">/.
+ This means doing the math for partitions yourself. This is rumored to
+ be easy :-) See if you can obtain a skeletal label with
+ ''<tt>disklabel -r &lt;diskname&gt;</tt>'' <em>(e.g.
+ </em>''<tt>disklabel -r /dev/rwd0s2</tt>''<em>, assuming that your new
+ disk is wd0, the first IDE drive, and the FreeBSD slice is the second
+ one, s2)</em>. You should see something like:-
+
+ <verb>
+ # /dev/rwd0s2:
+ type: ESDI
+ disk: wd0s2
+ label:
+ flags:
+ bytes/sector: 512
+ sectors/track: 63
+ tracks/cylinder: 64
+ sectors/cylinder: 4032
+ cylinders: 610
+ sectors/unit: 2459520
+ rpm: 3600
+ interleave: 1
+ trackskew: 0
+ cylinderskew: 0
+ headswitch: 0 # milliseconds
+ track-to-track seek: 0 # milliseconds
+ drivedata: 0
+
+ 8 partitions:
+ # size offset fstype [fsize bsize bps/cpg]
+ c: 2459520 0 unused 0 0 # (Cyl. 0 - 609)
+ e: 2459520 0 4.2BSD 0 0 0 # (Cyl. 0 - 609)
+ </verb>
+
+ <p>Make sure that the size is correct, in this case, 2459520
+ sectors/unit x 512 bytes/sector / 2**20 (1 Megabyte) = 1200
+ Megabytes. The rest of the stuff (b/s, t/c, s/c, interleave, etc.)
+ should get suitable defaults from <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?disklabel"
+ name="disklabel">, but see <ref id="ESDI" name="this note"> for older
+ disks. 'fsize' is the <ref id="fsize" name="Fragment size"> for the
+ filesystem, and 'bsize' is the <ref id="bsize" name="Block size">. 'c'
+ is the partition covering the entire slice (or entire disk for a
+ non-sliced disk), and must remain as it is. <em>It should not be
+ used for a filesystem</em>. The 'c' partition is magic in that it
+ is faked by the kernel even if no disklabel exists.
+
+ <p>In the trivial case, where you want a single filesystem spanning
+ the whole slice, the entry for 'e' has to be corrected. Setting fsize
+ to 1024 and bsize to 8192 (8 fragments/block), which are reasonable
+ values for a filesystem, the correct entry for 'e' would be:-
+
+ <verb>
+ e: 2459520 0 4.2BSD 1024 8192
+ </verb>
+
+ <p>Now, the (slightly) harder case, where we want 2 partitions for 2
+ filesystems. Following the <ref id="fsname" name="BSD naming
+ conventions">, the partitions will be <tt /wd0s2e/ &amp;
+ <tt /wd0s2f/. Suppose we split up the 1200 MB into 300 MB for
+ 'e' and the remaining 900 MB for 'f'. The partition entries would
+ be:-
+
+ <verb>
+ 8 partitions:
+ # size offset fstype [fsize bsize bps/cpg]
+ c: 2459520 0 unused 0 0 # (Cyl. 0 - 609)
+ e: 614400 0 4.2BSD 1024 8192
+ f: 1843200 614400 4.2BSD 1024 8192
+ </verb>
+
+ <p><bf /Note:/ You can directly edit the disklabel with
+ ''<tt>disklabel -e wd0s2</tt>''. See
+ <htmlurl url="http://www.freebsd.org/cgi/man.cgi?disklabel"
+ name="disklabel">.
+
+ <p>If you have at least FreeBSD 2.1.5, and you want to dedicate
+ an entire disk to FreeBSD without any care for other
+ systems, you might shorten the steps above to something like:
+
+ <verb>
+ # dd if=/dev/zero of=/dev/rwd0 count=100
+ # disklabel -Brw wd0 auto
+ # disklabel -e wd0
+ </verb>
+
+ <p>The first <htmlurl url="http://www.freebsd.org/cgi/man.cgi?dd"
+ name="dd"> command ensures there is no old junk at
+ the beginning of the disk that might confuse the disk code
+ in the kernel. Following is an automatic skeleton label
+ generation using the defaults that have been probed from the
+ disk at boot time. Editing this label continues as described
+ above.
+
+ <p>You're done! Time to initialize the filesystems with something
+ like:-
+
+ <verb>
+ newfs -d0 /dev/rwd0s2e
+ newfs -d0 /dev/rwd0s2f
+ </verb>
+
+ <p>Depending on the disk name and slice number, it might be
+ required that you run the script <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?MAKEDEV" name="/dev/MAKEDEV">
+ before in order to create the desired device nodes.
+
+ <p>And mount your new filesystems (See
+ <htmlurl url="http://www.freebsd.org/cgi/man.cgi?mount" name="mount">):-
+
+ <verb>
+ mount /dev/wd0s2e /mnt/foo
+ mount /dev/wd0s2f /mnt/bar
+ </verb>
+
+ <p>You may wish to edit <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?fstab(5)" name="/etc/fstab"> to
+ automatically mount the filesystems at boot time.
+
+ <p><bf /Glossary:/
+
+ <descrip>
+ <tag><label id="fsize"><bf>Fragment Size (fsize)</bf></tag>
+ The basic unit of storage for <tt /ffs/. See
+ M. McKusick, W. Joy, S. Leffler, and R. Fabry,
+ "A Fast File System for UNIX",
+ ACM Transactions on Computer Systems 2, 3, pp 181-197, August
+ 1984, (reprinted in the BSD System Manager's Manual, SMM:5) or
+ <url url="file:/usr/share/doc/smm/05.fastfs/paper.ascii.gz"
+ name="/usr/share/doc/smm/05.fastfs/paper.ascii.gz"> on your system.
+
+ <tag><label id="bsize"><bf>Block Size (bsize)</bf></tag>
+ A block comprises one or more fragments. See the
+ reference above and
+ <url url="file:/usr/include/sys/disklabel.h"
+ name="&lt;sys/disklabel.h&gt;">
+
+ <tag><label id="ESDI">
+ <bf>Disklabel Characteristics for Older Disks (ESDI)</bf></tag>
+ You may need to provide more information to <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?disklabel"
+ name="disklabel"> if you happen to own a ``true disk'', i.e. one with a
+ uniform geometry, real heads, sectors, and cylinders,
+ such as an old ESDI drive. All of this should be easily
+ obtainable from the drive case, owner's manual, fellow
+ sufferers, etc. :-)
+
+ <tag><label id="fsname">
+ <bf>BSD Filesystem Naming Conventions</bf></tag>
+ Partition 'a' is by convention reserved for a bootable
+ partition, and partition 'b' for swap space. Regular
+ partition names should start with 'd'. ('d' used to be
+ magic in 386BSD 0.1 through FreeBSD 2.0, thus partition
+ 'e' is often used for the first non-bootable partition
+ containing a filesystem.)
+
+ <tag><label id="swap">
+ <bf>Warning about swap space</bf></tag>
+ The space required by the BSD partition table is allowed
+ for in the file system. It's not allowed for by the swap
+ partition. So don't start swap at cylinder 0, either offset
+ it or put a file system in partition 'a'.
+ </descrip>
+
+ <sect1>
+ <heading>I have a new removable drive, how do I use it?</heading>
+
+ <p>Whether it's a removable drive like a ZIP or an EZ drive (or
+ even a floppy, if you want to use it that way), or a new hard
+ disk, once it's installed and recognized by the system, and
+ you have your cartridge/floppy/whatever slotted in, things are
+ pretty much the same for all devices.
+
+ <p><label id="disklabel">(this section is based on <url
+ url="http://vinyl.quickweb.com/mark/FreeBSD/ZIP-FAQ.html"
+ name="Mark Mayo's ZIP FAQ">)
+
+ <p>If it's a ZIP drive or a floppy , you've already got a DOS
+ filesystem on it, you can use a command like this:
+
+ <verb>
+ mount -t msdos /dev/fd0c /floppy
+ </verb>
+
+ <p>if it's a floppy, or this:
+
+ <verb>
+ mount -t msdos /dev/sd2s4 /zip
+ </verb>
+
+ <p>for a ZIP disk with the factory configuration.
+
+ <p>For other disks, see how they're laid out using <tt/fdisk/ or
+ <tt>/stand/sysinstall</tt>.
+
+ <p>The rest of the examples will be for a ZIP drive on sd2, the third
+ SCSI disk.
+
+ <p>Unless it's a floppy, or a removable you plan on sharing with
+ other people, it's probably a better idea to stick a BSD file
+ system on it. You'll get long filename support, at least a 2X
+ improvement in performance, and a lot more stability. First, you
+ need to redo the DOS-level partitions/filesystems. You can either
+ use <htmlurl url="http://www.freebsd.org/cgi/man.cgi?fdisk"
+ name="fdisk"> or <tt>/stand/sysinstall</tt>, or for a small
+ drive that you don't want to bother with multiple operating system
+ support on, just blow away the whole FAT partition table (slices)
+ and just use the BSD partitioning:
+
+ <verb>
+ dd if=/dev/zero of=/dev/rsd2 count=2
+ disklabel -Brw sd2 auto
+ </verb>
+
+ <p>You can use disklabel (more info in <ref id="2_1-disklabel-fix"
+ name="this note">) or <tt>/stand/sysinstall</tt> to create multiple
+ BSD partitions. You'll certainly want to do this if you're adding
+ swap space on a fixed disk, but it's probably irrelevant on a
+ removable drive like a ZIP.
+
+ <p>Finally, create a new file system, this one's on our ZIP drive
+ using the whole disk:
+
+ <verb>
+ newfs /dev/rsd2c
+ </verb>
+
+ <p>and mount it:
+
+ <verb>
+ mount /dev/sd2c /zip
+ </verb>
+
+ <p>and it's probably a good idea to add a line like this to
+ <htmlurl url="http://www.freebsd.org/cgi/man.cgi?fstab"
+ name="/etc/fstab"> so you can just type "mount /zip" in the
+ future:
+
+ <verb>
+ /dev/sd2c /zip ffs rw,noauto 0 0
+ </verb>
+
+ <sect1>
+ <heading>How do I mount a secondary DOS partition?</heading>
+
+ <p>The secondary DOS partitions are found after ALL the primary
+ partitions. For example, if you have an "E" partition as the
+ second DOS partition on the second SCSI drive, you need to create
+ the special files for "slice 5" in /dev, then mount /dev/sd1s5:
+
+ <verb>
+ # cd /dev
+ # ./MAKEDEV sd1s5
+ # mount -t msdos /dev/sd1s5 /dos/e
+ </verb>
+
+ <sect1>
+ <heading>Can I mount other foreign filesystems under FreeBSD?</heading>
+
+ <p><bf/ Digital UNIX/ UFS CDROMs can be mounted directly on FreeBSD.
+ Mounting disk partitions from Digital UNIX and other systems
+ that support UFS may be more complex, depending on the details
+ of the disk partitioning for the operating system in question.
+
+ <p><bf/ Linux/: 2.2 and later have support for <bf/ext2fs/ partitions.
+ See <htmlurl url="http://www.freebsd.org/cgi/man.cgi?mount_ext2fs"
+ name="mount_ext2fs"> for more information.
+
+ <p>Any other information on this subject would be appreciated.
+
+ <sect1>
+ <heading>How can I use the NT loader to boot FreeBSD?</heading>
+
+ <p>The general idea is that you copy the first sector of your
+ native root FreeBSD partition into a file in the DOS/NT
+ partition. Assuming you name that file something like
+ <tt>c:&bsol;bootsect.bsd</tt> (inspired by <tt>c:&bsol;bootsect.dos</tt>),
+ you can then edit the <tt>c:&bsol;boot.ini</tt> file to come up with
+ something like this:
+
+ <verb>
+ [boot loader]
+ timeout=30
+ default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
+ [operating systems]
+ multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows NT"
+ C:\BOOTSECT.BSD="FreeBSD"
+ C:\="DOS"
+ </verb>
+
+ <p>This procedure assumes that DOS, NT, FreeBSD, or whatever
+ have been installed into their respective fdisk partitions on the
+ <bf/same/ disk. In my case DOS &amp; NT are in the first fdisk
+ partition and FreeBSD is in the second. I also installed FreeBSD
+ to boot from its native partition, <bf/not/ the disk MBR.
+
+ <p>Mount a DOS-formatted floppy (if you've converted to NTFS) or the
+ FAT partition, under, say, <tt>/mnt</tt>.
+
+ <verb>
+ dd if=/dev/rsd0a of=/mnt/bootsect.bsd bs=512 count=1
+ </verb>
+
+ <p>Reboot into DOS or NT. NTFS users copy the <tt/bootsect.bsd/
+ and/or the <tt/bootsect.lnx/ file from the floppy to
+ <tt/C:&bsol;/. Modify the attributes (permissions) on
+ <tt/boot.ini/ with:
+
+ <verb>
+ attrib -s -r c:\boot.ini
+ </verb>
+
+ <p>Edit to add the appropriate entries from the example
+ <tt/boot.ini/ above, and restore the attributes:
+
+ <verb>
+ attrib -r -s c:\boot.ini
+ </verb>
+
+ <p>If FreeBSD is booting from the MBR, restore it with the DOS
+ ``<tt/fdisk/'' command after you reconfigure them to boot from their
+ native partitions.
+
+ <sect1>
+ <heading>
+ How about FreeBSD and Linux? How do I boot FreeBSD from LILO?
+ </heading>
+
+ <p>Theoretically you should be able to boot FreeBSD from LILO by
+ treating it as a DOS-style operating system, but I haven't been
+ able to get it to work. If you put LILO at the start of your Linux
+ boot partition instead of in the MBR, you can boot LILO from the
+ FreeBSD boot manager. This is what I do.
+
+ <p>If you're running Windows-95 and Linux this is recommended anyway,
+ to make it simpler to get Linux booting again if you should need
+ to reinstall Windows95 (which is a Jealous Operating System, and
+ will bear no other Operating Systems in the Master Boot Record).
+
+ <sect1>
+ <heading>
+ Will a ``dangerously dedicated'' disk endanger my health?
+ </heading>
+
+ <p><label id="dedicate">The installation procedure allows you to chose
+ two different methods in partitioning your harddisk(s). The default way
+ makes it compatible with other operating systems on the same machine,
+ by using fdisk table entries (called ``slices'' in FreeBSD),
+ with a FreeBSD slice that employs partitions of its own.
+ Optionally, one can chose to install a boot-selector to switch
+ between the possible operating systems on the disk(s).
+
+ <p>Now, while this is certainly the common case for people
+ coming from a PC background, those people coming more from a
+ Unix background and who are going to setup a machine just to
+ run FreeBSD and only FreeBSD, are more used to the classic
+ Unix way where the operating system owns the entire disks,
+ from the very first sector through the end. A true fdisk
+ table isn't of any use in this case, the machine is running
+ FreeBSD 24 hours per day, 7 days per week, no other operating
+ system should ever be booted on it. So, if you select
+ ``A)ll FreeBSD'' in sysinstall's fdisk editor, and answer the
+ next question with ``No'', you'll get this mode. Note that
+ this means the BSD bootstrap also forms the MBR for this drive,
+ so there's no space left for anything like a boot manager.
+ Don't ever try to install one, or you'll damage the BSD
+ bootstrap.
+
+ <p>So why it is called ``dangerous''? A disk in this mode
+ doesn't contain what normal PC utilities would consider a
+ valid fdisk table. Depending on how well they have been
+ designed, they might complain at you once they are getting
+ in contact with such a disk, or even worse, they might
+ damage the BSD bootstrap without even asking or notifying
+ you. Some kind of operating system that is in rather
+ widespread use on PCs is known for this kind of
+ user-unfriendliness (of course, it does this in the name of
+ ``user-friendliness''). At least one Award BIOS that is for
+ example used in HP Netservers (but not only there) is known
+ to ignore any harddisk that doesn't have what it believes to
+ be a valid fdisk table. When it comes to booting, it simply
+ ignores such a disk drive, advances to the floppy drive, and
+ barfs at you with just ``Read error''. Very impressive, eh?
+ They probably also call this ``user-friendly'', who knows?
+
+ <p>The advantages of this mode are: FreeBSD owns the entire
+ disk, no need to waste several fictitious `tracks' for just
+ nothing but a 1980-aged simplistic partitioning model
+ enforcing some artificial and now rather nonsensical
+ constraints on how this partitioning needs to be done.
+ These constraints often lead to what might be the biggest
+ headaches for OS installations on PCs, geometry mismatch
+ hassles resulting out of two different, redundant ways how
+ to store the partitioning information in the fdisk table.
+ See the chapter about <ref id="missing_os" name="Missing
+ Operating System">. In ``dangerously dedicated'' mode, the
+ BSD bootstrap starts at sector 0, and this one is the only
+ sector that always translates into the same C/H/S values,
+ regardless of which `translation' your BIOS is using for
+ your disk. Thus, you can also swap disks between
+ systems/controllers that use a different translation scheme,
+ without risking that they won't boot anymore.
+
+ <p>To return a ``dangerously dedicated'' disk for normal PC
+ use, there are basically two options. The first is, you
+ write enough NULL bytes over the MBR to make any subsequent
+ installation believe this to be a blank disk. You can do
+ this for example with
+
+ <verb>
+ dd if=/dev/zero of=/dev/rsd0 count=15
+ </verb>
+
+ <p>Alternatively, the undocumented DOS ``feature''
+
+ <verb>
+ fdisk /mbr
+ </verb>
+
+ <p>will to install a new master boot record as well, thus clobbering the
+ BSD bootstrap.
+
+ <sect1>
+ <heading>How can I add more swap space?</heading>
+
+ <p>The best way is to increase the size of your swap partition, or
+ take advantage of this convenient excuse to add another disk (and
+ see <ref id="swap" name="this note"> if you do).
+
+ <p>Adding swap onto a separate disk makes things faster than
+ simply adding swap onto the same disk. As an example, if you
+ are compiling source located on one disk, and the swap is on
+ another disk, this is much faster than both swap and compile
+ on the same disk. This is true for SCSI disks specifically.
+
+ <p> IDE drives are not able to allow access to both drives on
+ the same channel at the same time (FreeBSD doesn't support mode 4, so
+ all IDE disk I/O is ``programmed''). I would still suggest putting
+ your swap on a separate drive however. The drives are so cheap,
+ it is not worth worrying about.
+
+ <p>It is a really bad idea to locate your swap file over NFS
+ unless you are running in a very fast networking environment, with
+ a good server.
- The first <htmlurl url="http://www.freebsd.org/cgi/man.cgi?dd"
- name="dd"> command ensures there is no old junk at
- the beginning of the disk that might confuse the disk code
- in the kernel. Following is an automatic skeleton label
- generation using the defaults that have been probed from the
- disk at boot time. Editing this label continues as described
- above.
- <p>
- You're done! Time to initialize the filesystems with something
- like:-
+ <p>Here is an example for 64Mb vn-swap (<tt>/usr/swap0</tt>, though
+ of course you can use any name that you want).
+
+ <p>Make sure your kernel was built with the line
+
+ <verb>
+ pseudo-device vn 1 #Vnode driver (turns a file into a device)
+ </verb>
+
+ <p>in your config-file. The GENERIC kernel already contains this.
+
+ <enum>
+ <item>create a vn-device
<verb>
- newfs -d0 /dev/rwd0s2e
- newfs -d0 /dev/rwd0s2f
+ cd /dev
+ sh ./MAKEDEV vn0
</verb>
- Depending on the disk name and slice number, it might be
- required that you run the script <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?MAKEDEV"
- name="/dev/MAKEDEV">
- before in order to create the desired device nodes.
+ <item>create a swapfile (<tt>/usr/swap0</tt>)
- And mount your new filesystems (See
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?mount"
- name="mount">):-
+ <verb>
+ dd if=/dev/zero of=/usr/swap0 bs=1024k count=64
+ </verb>
+
+ <item>enable the swap file in <tt>/etc/rc.conf</tt>
<verb>
- mount /dev/wd0s2e /mnt/foo
- mount /dev/wd0s2f /mnt/bar
+ swapfile="/usr/swap0" # Set to name of swapfile if aux swapfile desired.
</verb>
- You may wish to edit <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?fstab(5)"
- name="/etc/fstab"> to automatically mount
- the filesystems at boot time.
-
- <p>
- <bf /Glossary:/
- <descrip>
- <tag><label id="fsize"><bf>Fragment Size (fsize)</bf></tag>
- The basic unit of storage for <tt /ffs/. See
- M. McKusick, W. Joy, S. Leffler, and R. Fabry,
- "A Fast File System for UNIX",
- ACM Transactions on Computer Systems 2, 3, pp 181-197, August
- 1984, (reprinted in the BSD System Manager's Manual, SMM:5) or
- <url url="file:/usr/share/doc/smm/05.fastfs/paper.ascii.gz"
- name="/usr/share/doc/smm/05.fastfs/paper.ascii.gz">
- on your system.
- <tag><label id="bsize"><bf>Block Size (bsize)</bf></tag>
- A block comprises one or more fragments. See the
- reference above and
- <url url="file:/usr/include/sys/disklabel.h"
- name="&lt;sys/disklabel.h&gt;">
- <tag><label id="ESDI">
- <bf>Disklabel Characteristics for Older Disks (ESDI)</bf></tag>
- You may need to provide more information to <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?disklabel"
- name="disklabel">
- if you happen to own a ``true disk'', i.e. one with a
- uniform geometry, real heads, sectors, and cylinders,
- such as an old ESDI drive. All of this should be easily
- obtainable from the drive case, owner's manual, fellow
- sufferers, etc. :-)
- <tag><label id="fsname">
- <bf>BSD Filesystem Naming Conventions</bf></tag>
- Partition 'a' is by convention reserved for a bootable
- partition, and partition 'b' for swap space. Regular
- partition names should start with 'd'. ('d' used to be
- magic in 386BSD 0.1 through FreeBSD 2.0, thus partition
- 'e' is often used for the first non-bootable partition
- containing a filesystem.)
- <tag><label id="swap">
- <bf>Warning about swap space</bf></tag>
- The space required by the BSD partition table is allowed
- for in the file system. It's not allowed for by the swap
- partition. So don't start swap at cylinder 0, either offset
- it or put a file system in partition 'a'.
- </descrip>
-
- <sect1>
- <heading>I have a new removable drive, how do I use it?</heading>
-
- <p>
- Whether it's a removable drive like a ZIP or an EZ drive (or
- even a floppy, if you want to use it that way), or a new hard
- disk, once it's installed and recognized by the system, and
- you have your cartridge/floppy/whatever slotted in, things are
- pretty much the same for all devices.
-
- <label id="disklabel">
- (this section is based on <url
- url="http://vinyl.quickweb.com/mark/FreeBSD/ZIP-FAQ.html"
- name="Mark Mayo's ZIP FAQ">)
-
- If it's a ZIP drive or a floppy , you've already got a DOS
- filesystem on it, you can use a command like this:
-
- <verb>
- mount -t msdos /dev/fd0c /floppy
- </verb>
-
- if it's a floppy, or this:
-
- <verb>
- mount -t msdos /dev/sd2s4 /zip
- </verb>
-
- for a ZIP disk with the factory configuration.
-
- For other disks, see how they're laid out
- using <tt/fdisk/ or <tt>/stand/sysinstall</tt>.
-
- The rest of the
- examples will be for a ZIP drive on sd2, the third SCSI disk.
-
- Unless it's a floppy, or a removable you plan on sharing with
- other people, it's probably a better idea to stick a BSD file
- system on it. You'll get long filename support, at least a 2X
- improvement in performance, and a lot more stability. First, you
- need to redo the DOS-level partitions/filesystems. You can either
- use <htmlurl url="http://www.freebsd.org/cgi/man.cgi?fdisk"
- name="fdisk"> or <tt>/stand/sysinstall</tt>, or for a small
- drive that you don't want to bother with multiple operating system
- support on, just blow away the whole FAT partition table (slices)
- and just use the BSD partitioning:
-
- <verb>
- dd if=/dev/zero of=/dev/rsd2 count=2
- disklabel -Brw sd2 auto
- </verb>
-
- You can use disklabel (more info in <ref id="2_1-disklabel-fix"
- name="this note">) or <tt>/stand/sysinstall</tt> to create multiple
- BSD partitions. You'll certainly want to do this if you're adding
- swap space on a fixed disk, but it's probably irrelevant on a
- removable drive like a ZIP.
-
- Finally, create a new file system, this one's on our ZIP drive
- using the whole disk:
-
- <verb>
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?newfs"
- name="newfs"> /dev/rsd2c
- </verb>
-
- and mount it:
-
- <verb>
- mount /dev/sd2c /zip
- </verb>
-
- and it's probably a good idea to add a line like this to
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?fstab"
- name="/etc/fstab"> so you can just type "mount /zip" in the
- future:
-
- <verb>
- /dev/sd2c /zip ffs rw,noauto 0 0
- </verb>
-
- <sect1>
- <heading>How do I mount a secondary DOS partition?</heading>
-
- <p>
- The secondary DOS partitions are found after ALL the primary
- partitions. For example, if you have an "E" partition as the
- second DOS partition on the second SCSI drive, you need to create
- the special files for "slice 5" in /dev, then mount /dev/sd1s5:
-
- <verb>
- % cd /dev
- % ./MAKEDEV sd1s5
- % mount -t msdos /dev/sd1s5 /dos/e
- </verb>
-
- <sect1>
- <heading>Can I mount other foreign filesystems under FreeBSD?</heading> <p>
- <bf/ Digital UNIX/ UFS CDROMs can be mounted directly on FreeBSD.
- Mounting disk partitions from Digital UNIX and other systems
- that support UFS may be more complex, depending on the details
- of the disk partitioning for the operating system in question.
- <p>
- <bf/ Linux/: 2.2 and later have support for <bf/ext2fs/ partitions.
- See <htmlurl url="http://www.freebsd.org/cgi/man.cgi?mount_ext2fs"
- name="mount_ext2fs"> for more information.
-
- Any other information on this subject would be appreciated.
-
- <sect1>
- <heading>How can I use the NT loader to boot FreeBSD?</heading>
- <p>
- The general idea is that you copy the first sector of your
- native root FreeBSD or Linux partition into a file in the DOS/NT
- partition. Assuming you name that file something like
- <tt>c:&bsol;bootsect.bsd</tt> or <tt>c:&bsol;bootsect.lnx</tt>
- (inspired by <tt>c:&bsol;bootsect.dos</tt>) you can then edit the
- <tt>c:&bsol;boot.ini</tt> file to come up with something like
- this:
- <verb>
- [boot loader]
- timeout=30
- default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
- [operating systems]
- multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows NT"
- C:\BOOTSECT.BSD="FreeBSD"
- C:\BOOTSECT.LNX="Linux"
- C:\="DOS"
- </verb>
- This procedure assumes that DOS, NT, Linux, FreeBSD, or whatever
- have been installed into their respective fdisk partitions on the
- <bf/same/ disk. In my case DOS &amp; NT are in the first fdisk
- partition, FreeBSD in the second, and Linux in the third. I also
- installed FreeBSD and Linux to boot from their native partitions,
- not the disk MBR, and without delay.
-
- Mount a DOS-formatted floppy (if you've converted to NTFS) or the
- FAT partition, under, say, <tt>/mnt</tt>.
-
- In FreeBSD:
- <verb>
- dd if=/dev/rsd0a of=/mnt/bootsect.bsd bs=512 count=1
- </verb>
-
- In Linux:
- <verb>
- dd if=/dev/sda2 of=/mnt/bootsect.lnx bs=512 count=1
- </verb>
-
- Reboot into DOS or NT. NTFS users copy the <tt/bootsect.bsd/
- and/or the <tt/bootsect.lnx/ file from the floppy to
- <tt/C:&bsol;/. Modify the attributes (permissions) on
- <tt/boot.ini/ with:
-
- <verb>
- attrib -s -r c:\boot.ini
- </verb>
-
- Edit to add the appropriate entries from the example
- <tt/boot.ini/ above, and restore the attributes:
-
- <verb>
- attrib -r -s c:\boot.ini
- </verb>
-
- If FreeBSD or Linux are booting from the MBR, restore it with the
- DOS ``<htmlurl url="http://www.freebsd.org/cgi/man.cgi?fdisk"
- name="fdisk /mbr">'' command after you reconfigure them to
- boot from their native partitions.
-
- <sect1>
- <heading>How about FreeBSD and Linux? How do I boot FreeBSD from LILO?</heading>
- <p>
- Theoretically you should be able to boot FreeBSD from LILO by
- treating it as a DOS-style operating system, but I haven't been
- able to get it to work. If you put LILO at the start of your Linux
- boot partition instead of in the MBR, you can boot LILO from the
- FreeBSD boot manager. This is what I do.
-
- If you're running Windows-95 and Linux this is recommended anyway,
- to make it simpler to get Linux booting again if you should need
- to reinstall Windows95 (which is a Jealous Operating System, and
- will bear no other Operating Systems in the Master Boot Record).
-
- <sect1>
- <heading>Will a ``dangerously dedicated'' disk endanger my health?</heading>
- <p><label id="dedicate">
- The installation procedure allows you to chose two different
- methods in partitioning your harddisk(s). The default way makes
- it compatible with other operating systems on the same machine,
- by using fdisk table entries (called ``slices'' in FreeBSD),
- with a FreeBSD slice that employs partitions of its own.
- Optionally, one can chose to install a boot-selector to switch
- between the possible operating systems on the disk(s).
-
- <p>
- Now, while this is certainly the common case for people
- coming from a PC background, those people coming more from a
- Unix background and who are going to setup a machine just to
- run FreeBSD and only FreeBSD, are more used to the classic
- Unix way where the operating system owns the entire disks,
- from the very first sector through the end. A true fdisk
- table isn't of any use in this case, the machine is running
- FreeBSD 24 hours per day, 7 days per week, no other operating
- system should ever be booted on it. So, if you select
- ``A)ll FreeBSD'' in sysinstall's fdisk editor, and answer the
- next question with ``No'', you'll get this mode. Note that
- this means the BSD bootstrap also forms the MBR for this drive,
- so there's no space left for anything like a boot manager.
- Don't ever try to install one, or you'll damage the BSD
- bootstrap.
-
- <p>
- So why it is called ``dangerous''? A disk in this mode
- doesn't contain what normal PC utilities would consider a
- valid fdisk table. Depending on how well they have been
- designed, they might complain at you once they are getting
- in contact with such a disk, or even worse, they might
- damage the BSD bootstrap without even asking or notifying
- you. Some kind of operating system that is in rather
- widespread use on PCs is known for this kind of
- user-unfriendliness (of course, it does this in the name of
- ``user-friendliness''). At least one Award BIOS that is for
- example used in HP Netservers (but not only there) is known
- to ignore any harddisk that doesn't have what it believes to
- be a valid fdisk table. When it comes to booting, it simply
- ignores such a disk drive, advances to the floppy drive, and
- barfs at you with just ``Read error''. Very impressive, eh?
- They probably also call this ``user-friendly'', who knows?
-
- <p>
- The advantages of this mode are: FreeBSD owns the entire
- disk, no need to waste several fictitious `tracks' for just
- nothing but a 1980-aged simplistic partitioning model
- enforcing some artificial and now rather nonsensical
- constraints on how this partitioning needs to be done.
- These constraints often lead to what might be the biggest
- headaches for OS installations on PCs, geometry mismatch
- hassles resulting out of two different, redundant ways how
- to store the partitioning information in the fdisk table.
- See the chapter about <ref id="missing_os" name="Missing
- Operating System">. In ``dangerously dedicated'' mode, the
- BSD bootstrap starts at sector 0, and this one is the only
- sector that always translates into the same C/H/S values,
- regardless of which `translation' your BIOS is using for
- your disk. Thus, you can also swap disks between
- systems/controllers that use a different translation scheme,
- without risking that they won't boot anymore.
-
- <p>
- To return a ``dangerously dedicated'' disk for normal PC
- use, there are basically two options. The first is, you
- write enough NULL bytes over the MBR to make any subsequent
- installation believe this to be a blank disk. You can do
- this for example with
-
- <verb>
- dd if=/dev/zero of=/dev/rsd0 count=15
- </verb>
-
- Alternatively, the undocumented DOS command
-
- <verb>
- fdisk /mbr
- </verb>
-
- is supposed to install a new master boot record as well,
- thus clobbering the BSD bootstrap.
-
-
- <sect1>
- <heading>How can I add more swap space?</heading>
-
- <p>The best way is to increase the size of your swap partition, or
- take advantage of this convenient excuse to add another disk (and
- see <ref id="swap" name="this note"> if you do).
- <p>Adding swap onto a separate disk makes things faster than
- simply adding swap onto the same disk. As an example, if you
- are compiling source located on one disk, and the swap is on
- another disk, this is much faster than both swap and compile
- on the same disk. This is true for SCSI disks specifically.
- <p> IDE drives are not able to allow access to both drives on
- the same channel at the same time. I would still suggest putting
- your swap on a separate drive however. The drives are so cheap,
- it is not worth worrying about.
- <p>It is a really bad idea to locate your swap file over NFS
- unless you are running in a fast networking environment, with
- a good server. If you can afford fast ethernet, you will not
- need my advice anyway.
-
-
- <p>Here is an example for 64Mb vn-swap (<tt>/usr/swap0</tt>, though
- of course you can use any name that you want).
- <p>
- Make sure your kernel was built with the line
- <verb>
-pseudo-device vn 1 #Vnode driver (turns a file into a device)
- </verb>
- in your config-file. The GENERIC kernel already contains this.
- <p>
- <enum>
- <item>
- create a vn-device
- <verb>
-cd /dev; sh ./MAKEDEV vn0
- </verb>
- <item>
- create a swapfile (<tt>/usr/swap0</tt>)
- <verb>
-dd if=/dev/zero of=/usr/swap0 bs=1024k count=64
- </verb>
- <item>
- enable the swap file in /etc/rc.conf
- <verb>
-swapfile="/usr/swap0" # Set to name of swapfile if aux swapfile desired.
- </verb>
- <item>
- reboot the machine
- </enum>
- <p>To enable the swap file immediately try
- <verb>
-vnconfig -ce /dev/vn0c /usr/swap0 swap
- </verb>
-
-
-
- </sect1>
-
-
- <sect1>
- <heading>I'm having problems setting up my printer.</heading>
- <p>
- Please have a look at the Handbook entry on printing. It
- should cover most of your problem. See the
- <url
- url="../handbook/printing.html"
- name="Handbook entry on printing.">
- </sect1>
-
- <sect1>
- <heading>The keyboard mappings are wrong for my system.</heading>
- <p>
- The kbdcontrol program has an option to load a keyboard map file.
- Under <tt>/usr/share/syscons/keymaps</tt> are a number of map
- files. Choose the one relevant to your system and load it.
-
- <verb>
- kbdcontrol -l uk.iso
- </verb>
-
- Both the <tt>/usr/share/syscons/keymaps</tt> and the <tt/.kbd/
- extension are assumed by
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?kbdcontrol"
- name="kbdcontrol">.
-
- This can be configured in <tt>/etc/sysconfig</tt>
- (or <htmlurl url="http://www.freebsd.org/cgi/man.cgi?rc.conf(5)"
- name="rc.conf">). See the
- appropriate comments in this file.
-
- In 2.0.5R and later, everything related to text fonts, keyboard
- mapping is in <tt>/usr/share/examples/syscons</tt>.
-
- The following mappings are currently supported:
- <itemize>
- <!-- automatically created by `kbdmap -p' -->
-
- <item>Brazilian 275 keyboard Codepage 850
- <item>Brazilian 275 keyboard ISO-8859-1
- <item>Danish Codepage 865
- <item>Danish ISO-8859-1
- <item>French ISO-8859-1
- <item>German Codepage 850
- <item>German ISO-8859-1
- <item>Italian ISO-8859-1
- <item>Japanese 106
- <item>Japanese 106x
- <item>Norwegian ISO-8859-1
- <item>Russian Codepage 866 (alternative)
- <item>Russian koi8-r (shift)
- <item>Russian koi8-r
- <item>Spanish ISO-8859-1
- <item>Swedish Codepage 850
- <item>Swedish ISO-8859-1
- <item>United Kingdom Codepage 850
- <item>United Kingdom ISO-8859-1
- <item>United States of America ISO-8859-1
- <item>United States of America dvorak
- <item>United States of America dvorakx
- </itemize>
- </sect1>
-
- <sect1>
- <heading>I can't get user quotas to work properly.</heading>
- <p>
- <enum>
- <item>Don't turn on quotas on '/',
- <item>Put the quota file on the file system that the quotas are
- to be enforced on. ie:
- <verb>
- FS QUOTA FILE
- /usr /usr/admin/quotas
- /home /home/admin/quotas
- ...
- </verb>
- </enum>
-
- <sect1>
- <heading>What's inappropriate about my ccd?</heading>
- <p>
- The symptom of this is:
- <verb>
- host# ccdconfig -C
- ccdconfig: ioctl (CCDIOCSET): /dev/ccd0c: Inappropriate file type or format
- host#
- </verb>
-
- <p>
- This usually happens when you are trying to concatenate the
- `c' partitions, which default to type `unused'. The ccd
- driver requires the underlying partition type to be
- FS_BSDFFS. Edit the disklabel of the disks you are trying
- to concatenate and change the types of partitions to
- `4.2BSD'.
-
- <sect1>
- <heading>Why can't I edit the disklabel on my ccd?</heading>
- <p>
- The symptom of this is:
- <verb>
- host# disklabel ccd0
- (it prints something sensible here, so let's try to edit it)
- host# disklabel -e ccd0
- (edit, save, quit)
- disklabel: ioctl DIOCWDINFO: No disk label on disk;
- use "disklabel -r" to install initial label
- host#
- </verb>
-
- <p>
- This is because the disklabel returned by ccd is actually a
- `fake' one that is not really on the disk. You can solve
- this problem by writing it back explicitly, as in:
- <verb>
- host# disklabel ccd0 > /tmp/disklabel.tmp
- host# disklabel -Rr ccd0 /tmp/disklabel.tmp
- host# disklabel -e ccd0
- (this will work now)
- </verb>
-
- </sect1>
-
- <sect1>
- <heading>Does FreeBSD support System V IPC primitives?</heading>
-
- <p>
- Yes, FreeBSD supports System V-style IPC. This includes shared
- memory, messages and semaphores. You need to add the following
- lines to your kernel config to enable them.
-
- <verb>
- options SYSVSHM
- options "SHMMAXPGS=64" # 256Kb of sharable memory
- options SYSVSEM # enable for semaphores
- options SYSVMSG # enable for messaging
- </verb>
-
- Recompile and install.
-
- <bf/NOTE:/ You may need to increase SHMMAXPGS to some
- ridiculous number like 4096 (16M!) if you want to run
- GIMP. 256Kb is plenty for X11R6 shared memory.
-
- <sect1>
- <heading>How do I use sendmail for mail delivery with UUCP?</heading>
-
- <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
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?m4"
- name="m4">
- preprocessing, where the actual hand-crafted configuration
- is on a higher abstraction level. You should use the
- configuration files under
+ <item>reboot the machine
+ </enum>
-<verb>
- /usr/src/usr.sbin/sendmail/cf
-</verb>
+ <p>To enable the swap file immediately, type
- If you didn't 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've got your CD-ROM mounted, do:
+ <verb>
+ vnconfig -ce /dev/vn0c /usr/swap0 swap
+ </verb>
-<verb>
- cd /usr/src
- tar -xvzf /cdrom/dists/src/ssmailcf.aa
-</verb>
+ <sect1>
+ <heading>I'm having problems setting up my printer.</heading>
- Don't 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>Please have a look at the Handbook entry on printing. It
+ should cover most of your problem. See the
+ <url url="../handbook/printing.html" name="Handbook entry on printing.">
- <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.
+ <sect1>
+ <heading>The keyboard mappings are wrong for my system.</heading>
- <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:
+ <p>The kbdcontrol program has an option to load a keyboard map file.
+ Under <tt>/usr/share/syscons/keymaps</tt> are a number of map
+ files. Choose the one relevant to your system and load it.
-<verb>
- cd /usr/src/usr.sbin/sendmail/cf/cf
- make foo.cf
- cp foo.cf /etc/sendmail.cf
-</verb>
+ <verb>
+ kbdcontrol -l uk.iso
+ </verb>
- A typical <tt>.mc</tt> file might look like:
+ <p>Both the <tt>/usr/share/syscons/keymaps</tt> and the <tt/.kbd/
+ extension are assumed by
+ <htmlurl url="http://www.freebsd.org/cgi/man.cgi?kbdcontrol"
+ name="kbdcontrol">.
-<verb>
- include(`../m4/cf.m4')
- VERSIONID(`Your version number')
- OSTYPE(bsd4.4)
+ <p>This can be configured in <tt>/etc/sysconfig</tt> (or <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?rc.conf(5)" name="rc.conf">).
+ See the appropriate comments in this file.
- FEATURE(nodns)
- FEATURE(nocanonify)
- FEATURE(mailertable)
+ <p>In 2.0.5R and later, everything related to text fonts, keyboard
+ mapping is in <tt>/usr/share/examples/syscons</tt>.
- define(`UUCP_RELAY', your.uucp.relay)
- define(`UUCP_MAX_SIZE', 200000)
+ <p>The following mappings are currently supported:
- MAILER(local)
- MAILER(smtp)
- MAILER(uucp)
+ <itemize>
+ <!-- generate by `kbdmap -p' -->
+ <item>Belgian ISO-8859-1
+ <item>Brazilian 275 keyboard Codepage 850
+ <item>Brazilian 275 keyboard ISO-8859-1
+ <item>Danish Codepage 865
+ <item>Danish ISO-8859-1
+ <item>French ISO-8859-1
+ <item>German Codepage 850
+ <item>German ISO-8859-1
+ <item>Italian ISO-8859-1
+ <item>Japanese 106
+ <item>Japanese 106x
+ <item>Latin American
+ <item>Norwegian ISO-8859-1
+ <item>Polish ISO-8859-2 (programmer's)
+ <item>Russian Codepage 866 (alternative)
+ <item>Russian koi8-r (shift)
+ <item>Russian koi8-r
+ <item>Spanish ISO-8859-1
+ <item>Swedish Codepage 850
+ <item>Swedish ISO-8859-1
+ <item>Swiss-German ISO-8859-1
+ <item>United Kingdom Codepage 850
+ <item>United Kingdom ISO-8859-1
+ <item>United States of America ISO-8859-1
+ <item>United States of America dvorak
+ <item>United States of America dvorakx
+ </itemize>
- Cw your.alias.host.name
- Cw youruucpnodename.UUCP
-</verb>
+ <sect1>
+ <heading>I can't get user quotas to work properly.</heading>
+
+ <p>
+ <enum>
+ <item>Don't turn on quotas on '/',
- 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,
- don't 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.
+ <item>Put the quota file on the file system that the quotas are
+ to be enforced on. ie:
- <p>
- Once you've got this, you need this file called
- <tt>/etc/mailertable</tt>. A typical example of this
- gender again:
+ <verb>
+ FS QUOTA FILE
+ /usr /usr/admin/quotas
+ /home /home/admin/quotas
+ ...
+ </verb>
+ </enum>
-<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>
+ <sect1>
+ <heading>What's inappropriate about my ccd?</heading>
- 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.
+ <p>The symptom of this is:
-<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>
+ <verb>
+ # ccdconfig -C
+ ccdconfig: ioctl (CCDIOCSET): /dev/ccd0c: Inappropriate file type or format
+ #
+ </verb>
+
+ <p>This usually happens when you are trying to concatenate the
+ `c' partitions, which default to type `unused'. The ccd
+ driver requires the underlying partition type to be
+ FS_BSDFFS. Edit the disklabel of the disks you are trying
+ to concatenate and change the types of partitions to
+ `4.2BSD'.
+
+ <sect1>
+ <heading>Why can't I edit the disklabel on my ccd?</heading>
+ <p>The symptom of this is:
- </sect1>
+ <verb>
+ # disklabel ccd0
+ (it prints something sensible here, so let's try to edit it)
+ # disklabel -e ccd0
+ (edit, save, quit)
+ disklabel: ioctl DIOCWDINFO: No disk label on disk;
+ use "disklabel -r" to install initial label
+ #
+ </verb>
+
+ <p>This is because the disklabel returned by ccd is actually a
+ `fake' one that is not really on the disk. You can solve
+ this problem by writing it back explicitly, as in:
+
+ <verb>
+ # disklabel ccd0 > /tmp/disklabel.tmp
+ # disklabel -Rr ccd0 /tmp/disklabel.tmp
+ # disklabel -e ccd0
+ (this will work now)
+ </verb>
+
+ <sect1>
+ <heading>Does FreeBSD support System V IPC primitives?</heading>
- </sect>
+ <p>Yes, FreeBSD supports System V-style IPC. This includes shared
+ memory, messages and semaphores. You need to add the following
+ lines to your kernel config to enable them.
- <sect>
- <heading>The X Window System and Virtual Consoles</heading>
+ <verb>
+ options SYSVSHM
+ options "SHMMAXPGS=64" # 256Kb of sharable memory
+ options SYSVSEM # enable for semaphores
+ options SYSVMSG # enable for messaging
+ </verb>
+
+ <p>Recompile and install.
+
+ <p><bf/NOTE:/ You may need to increase SHMMAXPGS to some
+ ridiculous number like 4096 (16M!) if you want to run
+ GIMP. 256Kb is plenty for X11R6 shared memory.
+
+ <sect1>
+ <heading>
+ How do I use sendmail for mail delivery with UUCP?<label id="uucpmail">
+ </heading>
+
+ <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
+ <htmlurl url="http://www.freebsd.org/cgi/man.cgi?m4"
+ name="m4"> 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>
+
+ <p>If you didn't 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've got your CD-ROM mounted, do:
+
+ <verb>
+ cd /usr/src
+ tar -xvzf /cdrom/dists/src/ssmailcf.aa
+ </verb>
+
+ <p>Don't 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>
- <sect1>
- <heading>I want to run X, how do I go about it?</heading>
+ <p>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>
+
+ <p>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,
+ don't 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've got 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>
+
+ <p>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>
+
+ <sect1>
+ <heading>
+ How do I set up mail with a dialup connection to the 'net?
+ <label id="ispmail">
+ </heading>
+
+ <p>If you've got a statically assigned IP number, you should not
+ need to adjust anything from the default. Set your host name up
+ as your assigned internet name and sendmail will do the rest.
+
+ <p>If you've got a dynamically assigned IP number and use a dialup
+ <bf/ppp/ connection to the internet, you will probably be given a
+ mailbox on your ISPs mail server. Lets assume your ISPs domain is
+ <tt/myISP.com/, and that your user name is <tt/user/. Lets also
+ assume you've called your machine <tt/bsd.home/ and that your ISP
+ has told you that you may use <tt/relay.myISP.com/ as a mail relay.
+
+ <p>In order to retrieve mail from your mailbox, you'll need to
+ install a retrieval agent. <bf/Fetchmail/ is a good choice as it
+ supports many different protocols. Usually, POP3 will be provided
+ by your ISP. If you've chosen to use user-ppp, you can automatically
+ fetch your mail when a connection to the 'net is established with the
+ following entry in <tt>/etc/ppp/ppp.linkup</tt>:
+
+ <verb>
+ MYADDR:
+ !bg su user -c fetchmail
+ </verb>
+
+ <p>I'm assuming that you have an account for <tt/user/ on <tt/bsd.home/.
+ In the home directory of <tt/user/ on <tt/bsd.home/, create a
+ <tt/.fetchmailrc/ file:
+
+ <verb>
+ poll myISP.com protocol pop3 fetchall pass MySecret;
+ </verb>
- <p>
- The easiest way is to simply specify that you want to run X
- during the installation process.
- <p>
- Then read and follow the documentation on the <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?manpath=xfree86&amp;query=xf86config" name="xf86config"> tool, which assists you in
- configuring XFree86(tm) for your particular graphics
- card/mouse/etc.
+ <p>Needless to say, this file should not be readable by anyone except
+ <tt/user/ as it contains the password <tt/MySecret/.
- You may also wish to investigate the Xaccel server, which is
- available at a very reasonable price. See section
- <ref id="xig" name="on Xi Graphics"> for more details.
+ <p>In order to send mail with the correct <bf/from:/ header, you must
+ tell sendmail to use <tt/user@myISP.com/ rather than
+ <tt/user@bsd.home/. You may also wish to tell sendmail to send all
+ mail via <tt/relay.myISP.com/, allowing quicker mail transmission.
- <sect1>
- <heading>Why doesn't my mouse work with X</heading>
+ <p>The following <tt/.mc/ file should suffice:
+
+ <verb>
+ VERSIONID(`bsd.home.mc version 1.0')
+ OSTYPE(bsd4.4)dnl
+ FEATURE(nouucp)dnl
+ MAILER(local)dnl
+ MAILER(smtp)dnl
+ Cwbsd.home
+ CwmyISP.com
+ MASQUERADE_AS(`myISP.com')dnl
+ FEATURE(allmasquerade)dnl
+ FEATURE(masquerade_envelope)dnl
+ FEATURE(nocanonify)dnl
+ FEATURE(nodns)dnl
+ define(SMART_HOST, `relay.myISP.com')
+ DmmyISP.com
+ define(`confDOMAIN_NAME',`myISP.com')dnl
+ </verb>
+
+ <p>Refer to the previous section for details of how to turn this
+ <tt/.mc/ file into a <tt/sendmail.rc/ file. Also, don't forget to
+ restart sendmail after updating sendmail.cf.
+
+ <sect>
+ <heading>The X Window System and Virtual Consoles</heading>
+
+ <sect1>
+ <heading>I want to run X, how do I go about it?</heading>
+
+ <p>The easiest way is to simply specify that you want to run X
+ during the installation process.
+
+ <p>Then read and follow the documentation on the <htmlurl url=
+ "http://www.freebsd.org/cgi/man.cgi?manpath=xfree86&amp;query=xf86config"
+ name="xf86config"> tool, which assists you in configuring XFree86(tm)
+ for your particular graphics card/mouse/etc.
+
+ <p>You may also wish to investigate the Xaccel server, which is
+ available at a very reasonable price. See the section on
+ <ref id="xig" name="Xi Graphics"> for more details.
+
+ <sect1>
+ <heading>Why doesn't my mouse work with X</heading>
+
+ <p>If you are using syscons (the default console driver), you can
+ configure FreeBSD to support a mouse pointer on each virtual
+ screen. In order to avoid conflicting with X, syscons supports
+ a virtual device called ``<tt>/dev/sysmouse</tt>''. All mouse events
+ received from the real mouse device are written to the sysmouse
+ device, using the MouseSystems protocol. If you wish to use your
+ mouse on one or more virtual consoles, <bf/and/ use X, the
+ following configuration is recommended:
+
+ <verb>
+ /etc/rc.conf:
+ moused_type=ps/2 # or whatever your actual type is
+ moused_port=/dev/psm0 # or whatever your real port is
+ moused_flags=
+
+ /etc/XF86Config
+ Section Pointer
+ Protocol "MouseSystems"
+ Device "/dev/sysmouse"
+ .....
+ </verb>
+
+ <p>Some people prefer to use ``<tt>/dev/mouse</tt>'' under X. To
+ make this work, ``<tt>/dev/mouse</tt>'' should be linked to
+ <htmlurl url="http://www.freebsd.org/cgi/man.cgi?sysmouse"
+ name="/dev/sysmouse">:
+
+ <verb>
+ # cd /dev
+ # rm -f mouse
+ # ln -s sysmouse mouse
+ </verb>
+
+ <sect1>
+ <heading>Help! X Window menus and dialog boxes don't work right!</heading>
+
+ <p>Try turning off the Num Lock key.
+
+ <p>If your Num Lock key is on by default at boot-time, you may add
+ the following line in the ``<tt/Keyboard/'' section of the
+ <tt/XF86config/ file.
+
+ <verb>
+ # Let the server do the NumLock processing. This should only be
+ # required when using pre-R6 clients
+ ServerNumLock
+ </verb>
+
+ <sect1>
+ <heading>What is a virtual console and how do I make more?</heading>
+
+ <p>Virtual consoles, put simply, enable you to have several
+ simultaneous sessions on the same machine without doing anything
+ complicated like setting up a network or running X.
+
+ <p>When the system starts, it will display a login prompt on
+ the monitor after displaying all the boot messages. You can
+ then type in your login name and password and start working (or
+ playing!) on the first virtual console.
+
+ <p>At some point, you will probably wish to start another
+ session, perhaps to look at documentation for a program
+ you are running or to read your mail while waiting for an
+ FTP transfer to finish. Just do Alt-F2 (hold down the Alt
+ key and press the F2 key), and you will find a login prompt
+ waiting for you on the second ``virtual console''! When you
+ want to go back to the original session, do Alt-F1.
+
+ <p>The default FreeBSD installation has three virtual consoles
+ enabled, and Alt-F1, Alt-F2, and Alt-F3 will switch between
+ these virtual consoles.
+
+ To enable more of them, edit <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?ttys" name="/etc/ttys">
+ and add entries for ``<tt/ttyv4/'' to ``<tt/ttyvc/'' after the
+ comment on ``Virtual terminals'':
+
+ <verb>
+ # Edit the existing entry for ttyv3 in /etc/ttys and change
+ # "off" to "on".
+ ttyv3 "/usr/libexec/getty Pc" cons25 on secure
+ ttyv4 "/usr/libexec/getty Pc" cons25 on secure
+ ttyv5 "/usr/libexec/getty Pc" cons25 on secure
+ ttyv6 "/usr/libexec/getty Pc" cons25 on secure
+ ttyv7 "/usr/libexec/getty Pc" cons25 on secure
+ ttyv8 "/usr/libexec/getty Pc" cons25 on secure
+ ttyv9 "/usr/libexec/getty Pc" cons25 on secure
+ ttyva "/usr/libexec/getty Pc" cons25 on secure
+ ttyvb "/usr/libexec/getty Pc" cons25 on secure
+ </verb>
+
+ <p>Use as many or as few as you want. The more virtual terminals
+ you have, the more resources that are used; this can be important
+ if you have 8MB RAM or less. You may also want to change the
+ ``<tt/secure/'' to ``<tt/insecure/''.
+
+ <p><bf/IMPORTANT NOTE/ if you want to run an X server you <bf/MUST/
+ leave at least one virtual terminal unused (or turned off) for it
+ to use. That is to say that if you want to have a login
+ prompt pop up for all twelve of your Alt-function keys,
+ you're out of luck - you can only do this for eleven of them
+ if you also want to run an X server on the same machine.
+
+ <p>The easiest way to disable a console is by turning it off. For
+ example, if you had the full 12 terminal allocation mentioned
+ above and you wanted to run X, you would change settings for
+ virtual terminal 12 from:
+
+ <verb>
+ ttyvb "/usr/libexec/getty Pc" cons25 on secure
+ </verb>
+
+ <p>to:
+
+ <verb>
+ ttyvb "/usr/libexec/getty Pc" cons25 off secure
+ </verb>
+
+ <p>If your keyboard has only ten function keys, you would end up with:
+
+ <verb>
+ ttyv9 "/usr/libexec/getty Pc" cons25 off secure
+ ttyva "/usr/libexec/getty Pc" cons25 off secure
+ ttyvb "/usr/libexec/getty Pc" cons25 off secure
+ </verb>
+
+ <p>(You could also just delete these lines.)
+
+ <p>Once you have edited <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?ttys" name="/etc/ttys">,
+ the next step is to make sure that you have enough virtual terminal
+ devices. The easiest way to do this is:
+
+ <verb>
+ # cd /dev
+ # ./MAKEDEV vty12 # For 12 devices
+ </verb>
+
+ <p>Next, the easiest (and cleanest) way to activate the virtual
+ consoles is to reboot. However, if you really don't want to
+ reboot, you can just shut down the X Window system and execute (as
+ <tt/root/):
+
+ <verb>
+ kill -HUP 1
+ </verb>
+
+ <p>It's imperative that you completely shut down X Window if it is
+ running, before running this command. If you don't, your system
+ will probably appear to hang/lock up after executing the kill
+ command.
+
+ <sect1>
+ <heading>How do I access the virtual consoles from X?</heading>
+
+ <p>If the console is currently displaying X Window, you can use
+ Ctrl-Alt-F1, etc. to switch to a virtual console. Note, however,
+ that once you've switched away from X Window to a virtual
+ terminal, you may use only the Alt- function key to switch to another
+ virtual terminal or back to X Window. You do not need to also press the
+ Ctrl key. If you use the control key to switch back to X on some
+ older releases, you can find your text console stuck in ``control-lock''
+ mode. Tap the control key to wake it up again.
+
+ <sect1>
+ <heading>How do I start XDM from the <tt>/etc/ttys</tt> file ?</heading>
+
+ <p>Starting <htmlurl url=
+ "http://www.freebsd.org/cgi/man.cgi?manpath=xfree86&amp;query=xdm"
+ name="xdm"> via <htmlurl url="http://www.freebsd.org/cgi/man.cgi?ttys"
+ name="/etc/ttys"> is a <bf/Bad Thing/. I don't know why this
+ crept into some README file.
+
+ <p>Start it from your <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?rc" name="rc.local"> (or even
+ from a <tt/X.sh/ script in <tt>/usr/local/etc/rc.d</tt>), and be
+ explicit about how it has to start. If this is your last action in
+ <tt/rc.local/, put a ``<tt/sleep 1/'' behind, to allow <tt/xdm/ to
+ properly daemonize before the <tt/rc/ shell exits.
+
+ <p><tt/xdm/ should be started without any arguments (i.e., as a
+ daemon).
+
+ <p><bf/NOTE:/ A previos version of this FAQ told you to add the
+ <tt/vt/ you want X to use to the
+ <tt>/usr/X11R6/lib/X11/xdm/Xservers</tt> file. This is not necessary:
+ X will use the first free <tt/vt/ it finds.
+
+ <sect1>
+ <heading>When I run xconsole, I get ``Couldn't open console''.</heading>
+
+ <p>If you start <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?manpath=xfree86&amp;query=X"
+ name="X"> with <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?manpath=xfree86&amp;query=startx"
+ name="startx">, the permissions on /dev/console will <tt /not/ get
+ changed, resulting in things like <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?manpath=xfree86&amp;query=xterm"
+ name="xterm -C"> and <htmlurl url=
+ "http://www.freebsd.org/cgi/man.cgi?manpath=xfree86&amp;query=xconsole"
+ name="xconsole"> not working.
+
+ <p>This is because of the way console permissions are set by default.
+ On a multi-user system, one doesn't necessarily want just any user
+ to be able to write on the system console. For users who are logging
+ directly onto a machine with a VTY, the
+ <htmlurl url="http://www.freebsd.org/cgi/man.cgi?fbtab" name="fbtab">
+ file exists to solve such problems.
+
+ <p>In a nutshell, make sure an uncommented line of the form
+
+ <verb>
+ /dev/ttyv0 0600 /dev/console
+ </verb>
+
+ <p>is in <htmlurl url="http://www.freebsd.org/cgi/man.cgi?fbtab(5)"
+ name="/etc/fbtab"> and it will ensure that whomever logs in on
+ <tt>/dev/ttyv0</tt> will own the console.
+
+ <sect1>
+ <heading>My PS/2 mouse doesn't behave properly under X.</heading>
+
+ <p>Your mouse and the mouse driver have somewhat become out of
+ synchronization. Switching away from X to a virtual terminal
+ and getting back to X again may make them re-synchronized.
+ If the problem occurs often, you may add the following option
+ in your kernel configuration file and recompile it.
+
+ <verb>
+ options PSM_CHECKSYNC
+ </verb>
+
+ <p>See the section on <ref id="make-kernel" name="building a kernel">
+ if you've no experience with building kernels.
+
+ <p>With this option, there should be less chance of synchronization
+ problem between the mouse and the driver. If, however, you
+ still see the problem, click any mouse button while holding
+ the mouse still to re-synchronize the mouse and the driver.
+
+ <p>Note that unfortunately this option may not work with all the
+ systems and voids the ``tap'' feature of the ALPS GlidePoint
+ device attached to the PS/2 mouse port.
+
+ <sect>
+ <heading>Networking<label id="networking"></heading>
+
+ <sect1>
+ <heading>Where can I get information on ``diskless booting''?</heading>
+
+ <p>``Diskless booting'' means that the FreeBSD box is booted over a
+ network, and reads the necessary files from a server instead of
+ its hard disk. For full details, please read
+ <url url="../handbook/diskless.html"
+ name="the Handbook entry on diskless booting">
+
+ <sect1>
+ <heading>
+ Can a FreeBSD box be used as a dedicated network router?
+ </heading>
+
+ <p>Internet standards and good engineering practice prohibit us from
+ providing packet forwarding by default in FreeBSD. You can
+ however enable this feature by changing the following variable to
+ <tt/YES/ in <htmlurl url="http://www.freebsd.org/cgi/man.cgi?rc.conf"
+ name="rc.conf">:
+
+ <verb>
+ gateway_enable=YES # Set to YES if this host will be a gateway
+ </verb>
+
+ <p>This option will put the <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?sysctl" name="sysctl"> variable
+ <tt/net.inet.ip.forwarding/ to <tt/1/.
+
+ <p>In most cases, you will also need to run a routing process to
+ tell other systems on your network about your router; FreeBSD
+ comes with the standard BSD routing daemon
+ <htmlurl url="http://www.freebsd.org/cgi/man.cgi?routed"
+ name="routed">, or for more complex situations you may want to try
+ <em/GaTeD/ (available by FTP from <tt/ftp.gated.Merit.EDU/) which
+ supports FreeBSD as of 3_5Alpha7.
+
+ <p>It is our duty to warn you that, even when FreeBSD is configured
+ in this way, it does not completely comply with the Internet
+ standard requirements for routers; however, it comes close enough
+ for ordinary usage.
+
+ <sect1>
+ <heading>
+ I want to recompile the latest BIND from ISC. It blows up during the
+ compilation on some types conflicts. What can I do?
+ </heading>
+
+ <p>There is a conflict between the ``<tt/cdefs.h/'' file in the
+ distribution and the one shipped with FreeBSD. Just remove
+ <tt>compat/include/sys/cdefs.h</tt>.
+
+ <sect1>
+ <heading>Can I connect my Win95 box to the Internet via FreeBSD?</heading>
+
+ <p>Typically, people who ask this question have two PC's at home, one
+ with FreeBSD and one with Win95; the idea is to use the FreeBSD
+ box to connect to the Internet and then be able to access the
+ Internet from the Windows95 box through the FreeBSD box. This
+ is really just a special case of the previous question.
+
+ <p>There's a useful document available which explains how to set
+ FreeBSD up as a <url url="http://www.ssimicro.com/~jeremyc/ppp.html"
+ name="PPP Dialup Router">
+
+ <p><bf/NOTE:/ This requires having at least two fixed IP addresses
+ available, and possibly three or more, depending on how much
+ work you want to go through to set up the Windows box. As an
+ alternative, if you don't have a fixed IP, you can use one of
+ the private IP subnets and install <bf/proxies/ such as
+ <url url="http://squid.nlanr.net/Squid/" name="SQUID"> and
+ <url url="http://www.tis.com/" name="the TIS firewall toolkit">
+ on your FreeBSD box.
+
+ <p>See also the section on <ref id="direct-at" name="natd">.
+
+ <sect1>
+ <heading>Does FreeBSD support SLIP and PPP?</heading>
+
+ <p>Yes. See the man pages for
+ <htmlurl url="http://www.freebsd.org/cgi/man.cgi?slattach"
+ name="slattach">, <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?sliplogin" name="sliplogin">,
+ <htmlurl url="http://www.freebsd.org/cgi/man.cgi?pppd" name="pppd"> and
+ <htmlurl url="http://www.freebsd.org/cgi/man.cgi?ppp" name="ppp">.
+ <tt/pppd/ and <tt/ppp/ provide support for both incoming and outgoing
+ connections. <htmlurl url="http://www.freebsd.org/cgi/man.cgi?sliplogin"
+ name="Sliplogin"> deals exclusively with incoming connections and
+ <htmlurl url="http://www.freebsd.org/cgi/man.cgi?slattach"
+ name="slattach"> deals exclusively with outgoing connections.
+
+ <p>These programs are described in the following sections of the
+ <url url="../handbook/handbook.html" name="handbook">:
+
+ <itemize>
+ <item><url url="../handbook/slips.html"
+ name="Handbook entry on SLIP (server side)">
+
+ <item><url url="../handbook/slipc.html"
+ name="Handbook entry on SLIP (client side)">
+
+ <item><url url="../handbook/ppp.html"
+ name="Handbook entry on PPP (kernel version)">
+
+ <item><url url="../handbook/userppp.html"
+ name="Handbook entry on PPP (user-mode version)">
+ </itemize>
+
+ <p>If you only have access to the Internet through a "shell
+ account", you may want to have a look at the <htmlurl
+ url="http://www.freebsd.org/cgi/ports.cgi?^slirp" name="slirp">
+ package. It can provide you with (limited) access to services
+ such as ftp and http direct from your local machine.
+
+ <sect1>
+ <heading>
+ Does FreeBSD support NAT or Masquerading<label id="natd">
+ </heading>
- <p>
- If you are using syscons (the default console driver), you can
- configure FreeBSD to support a mouse pointer on each virtual
- screen. In order to avoid conflicting with X, syscons supports
- a virtual device called ``<tt>sysmouse</tt>''. All mouse events
- received from the real mouse device are written to the sysmouse
- device, using the MouseSystems protocol. If you wish to use your
- mouse on one or more virtual consoles, <bf/and/ use X, the
- following configuration is recommended:
+ <p>If you have a local subnet (one or more local machines), but have
+ been allocated only a single IP number from your Internet provider
+ (or even if you receive a dynamic IP number), you may want to look at
+ the <htmlurl url="http://www.freebsd.org/cgi/man.cgi?natd" name="natd">
+ program. <tt/Natd/ allows you to connect an entire subnet to the
+ internet using only a single IP number.
+
+ <p>The <htmlurl url="http://www.freebsd.org/cgi/man.cgi?ppp"
+ name="ppp"> program has similar functionality built in via
+ the <tt/-alias/ switch. The <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?libalias" name="alias library">
+ is used in both cases.
+
+ <sect1>
+ <heading>
+ I can't make ppp work. What am I doing wrong ?<label id="userppp">
+ </heading>
+
+ <p>You should first read the <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?ppp" name="ppp man page"> and
+ the <url url="../handbook/userppp.html"
+ name="ppp section of the handbook">. Enable logging with the command
+
+ <verb>
+ set log Phase Chat Connect Carrier lcp ipcp ccp command
+ </verb>
+
+ <p>This command may be typed at the <tt/ppp/ command prompt or
+ it may be entered in the <tt>/etc/ppp/ppp.conf</tt> configuration file
+ (the start of the <bf>default</bf> section is the best place to put it).
+ Make sure that <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?syslog.conf"
+ name="/etc/syslog.conf"> contains the lines
+
+ <verb>
+ !ppp
+ *.* /var/log/ppp.log
+ </verb>
+
+ <p>and that the file <tt>/var/log/ppp.log</tt> exists. You can
+ now find out a lot about what's going on from the log file.
+ Don't worry if it doesn't all make sense. If you need to
+ get help from someone, it may make sense to them.
+
+ <p>If your version of ppp doesn't understand the "set log"
+ command, you should download the
+ <url url="http://www.freebsd.org/~brian" name="latest version">.
+ It will build on FreeBSD version 2.1.5 and higher.
+
+ <sect2>
+ <heading>Ppp won't dial in -auto mode</heading>
+
+ <p>First, check that you've got a default route. By running <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?netstat">
+ name="netstat -rn">, you should see two entries like this:
<verb>
- /etc/sysconfig (or rc.conf):
- mousedtype=ps/2 # or whatever your actual type is
- mousedport=/dev/psm0 # or whatever your real port is
-
- /etc/XF86Config
- Section Pointer
- Protocol "MouseSystems"
- Device "/dev/sysmouse"
- .....
+Destination Gateway Flags Refs Use Netif Expire
+default 10.0.0.2 UGSc 0 0 tun0
+10.0.0.2 10.0.0.1 UH 0 0 tun0
</verb>
- <p>
- Some people prefer to use ``<tt>/dev/mouse</tt>'' under X. To
- make this work, ``<tt>/dev/mouse</tt>'' should be linked to
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?sysmouse"
- name="/dev/sysmouse">:
+ <p>This is assuming that you've used the addresses from the
+ handbook, the man page or from the ppp.conf.sample file.
+ If you haven't got a default route, it may be because you're
+ running an old version of <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?ppp"
+ name="ppp"> that doesn't understand the
+ word <tt/HISADDR/ in the ppp.conf file. If your version of
+ <tt/ppp/ is from before FreeBSD 2.2.5, change the
<verb>
- cd /dev
- rm -f mouse
- ln -s sysmouse mouse
+ add 0 0 HISADDR
</verb>
- <sect1>
- <heading>Help! X Window menus and dialog boxes don't work right!</heading>
- <p>
- Try turning off the Num Lock key.
+ <p>line to one saying
- If your Num Lock key is on by default at boot-time, you may add
- the following line in the ``<tt/Keyboard/'' section of the
- <tt/XF86config/ file.
+ <verb>
+ add 0 0 10.0.0.2
+ </verb>
-<verb>
-# Let the server do the NumLock processing. This should only be required
-# when using pre-R6 clients
- ServerNumLock
-</verb>
+ <p>Another reason for the default route line being missing is that
+ you have mistakenly set up a default router in your
+ <htmlurl url="http://www.freebsd.org/cgi/man.cgi?rc.conf"
+ name="/etc/rc.conf"> file (this file was called
+ <tt>/etc/sysconfig</tt> prior to release 2.2.2), and you have
+ omitted the line saying
+ <verb>
+ delete ALL
+ </verb>
- <sect1>
- <heading>What is a virtual console and how do I make more?</heading>
- <p>
- Virtual consoles, put simply, enable you to have several
- simultaneous sessions on the same machine without doing anything
- complicated like setting up a network or running X.
- <p>
- When the system starts, it will display a login prompt on
- the monitor after displaying all the boot messages. You can
- then type in your login name and password and start working (or
- playing!) on the first virtual console.
- <p>
- At some point, you will probably wish to start another
- session, perhaps to look at documentation for a program
- you are running or to read your mail while waiting for an
- FTP transfer to finish. Just do Alt-F2 (hold down the Alt
- key and press the F2 key), and you will find a login prompt
- waiting for you on the second ``virtual console''! When you
- want to go back to the original session, do Alt-F1.
- <p>
- The default FreeBSD installation has three virtual consoles
- enabled, and Alt-F1, Alt-F2, and Alt-F3 will switch between
- these virtual consoles.
-
- To enable more of them, edit <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?ttys" name="/etc/ttys">
- and add
- entries for ``<tt/ttyv4/'' to ``<tt/ttyvc/'' after the
- comment on ``Virtual terminals'' (delete the leading
- whitespace in the following example):
-
- <verb>
- # Edit the existing entry for ttyv3 in /etc/ttys and change
- # "off" to "on".
- ttyv3 "/usr/libexec/getty Pc" cons25 on secure
- ttyv4 "/usr/libexec/getty Pc" cons25 on secure
- ttyv5 "/usr/libexec/getty Pc" cons25 on secure
- ttyv6 "/usr/libexec/getty Pc" cons25 on secure
- ttyv7 "/usr/libexec/getty Pc" cons25 on secure
- ttyv8 "/usr/libexec/getty Pc" cons25 on secure
- ttyv9 "/usr/libexec/getty Pc" cons25 on secure
- ttyva "/usr/libexec/getty Pc" cons25 on secure
- ttyvb "/usr/libexec/getty Pc" cons25 on secure
- </verb>
-
- Use as many or as few as you want. The more virtual terminals
- you have, the more resources that are used; this can be important
- if you have 8MB RAM or less. You may also want to change the
- ``<tt/secure/'' to ``<tt/insecure/''.
-
- <bf/IMPORTANT NOTE/ if you want to run an X server you <bf/MUST/
- leave at least one virtual terminal unused (or turned off) for it
- to use. That is to say that if you want to have a login
- prompt pop up for all twelve of your Alt-function keys,
- you're out of luck - you can only do this for eleven of them
- if you also want to run an X server on the same machine.
-
- The easiest way to disable a console is by turning it off. For
- example, if you had the full 12 terminal allocation mentioned
- above and you wanted to run X, you would change settings for
- virtual terminal 12 from:
-
- <verb>
- ttyvb "/usr/libexec/getty Pc" cons25 on secure
- </verb>
- to:
- <verb>
- ttyvb "/usr/libexec/getty Pc" cons25 off secure
- </verb>
-
- If your keyboard has only ten function keys, you would end up with:
- <verb>
- ttyv9 "/usr/libexec/getty Pc" cons25 off secure
- ttyva "/usr/libexec/getty Pc" cons25 off secure
- ttyvb "/usr/libexec/getty Pc" cons25 off secure
- </verb>
- (You could also just delete these lines.)
-
- Once you have edited <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?ttys" name="/etc/ttys">,
- the next step is to make
- sure that you have enough virtual terminal devices. The easiest
- way to do this is:
- <verb>
- cd /dev
- ./MAKEDEV vty12 # For 12 devices
- </verb>
-
- Next, the easiest (and cleanest) way to activate the virtual
- consoles is to reboot. However, if you really don't want to
- reboot, you can just shut down the X Window system and execute (as
- <tt/root/):
- <verb>
- kill -HUP 1
- </verb>
-
- It's imperative that you completely shut down X Window if it is
- running, before running this command. If you don't, your system
- will probably appear to hang/lock up after executing the kill
- command.
-
- <sect1>
- <heading>How do I access the virtual consoles from X?</heading>
- <p>
- If the console is currently displaying X Window, you can use
- Ctrl-Alt-F1, etc. to switch to a virtual console. Note, however,
- that once you've switched away from X Window to a virtual
- terminal, you use only the Alt- function key to switch to another
- virtual terminal or back to X Window. You do not also press the
- Ctrl key; the Ctrl-Alt-function key combination is used only when
- switching from X Window to a virtual terminal. If you insist on
- using the control key to switch back to X you can find your
- text console stuck in ``control-lock'' mode. Tap the control
- key to wake it up again.
-
- <sect1>
- <heading>How do I start XDM from the <tt>/etc/ttys</tt> file ?</heading>
- <p>
- Starting <htmlurl url="http://www.freebsd.org/cgi/man.cgi?manpath=xfree86&amp;query=xdm" name="xdm">
- via <htmlurl url="http://www.freebsd.org/cgi/man.cgi?ttys"
- name="/etc/ttys"> is a Bad Thing. I don't know why this
- crept into some README file.
-
- Start it from your <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?rc"
- name="rc.local">, and be explicit about how it
- has to start. If this is your last action in <tt/rc.local/, put
- a ``<tt/sleep 1/'' behind, to allow <tt/xdm/ to properly
- daemonize before the <tt/rc/ shell exits.
-
- <tt/xdm/ should be started without any arguments (i.e., as a
- daemon).
-
- <bf/NOTE:/ A previos version of this FAQ told you to add the
- <tt/vt/ you want X to use to the
- <tt>/usr/X11R6/lib/X11/xdm/Xservers</tt> file. This is not necessary:
- X will use the first free <tt/vt/ it finds.
-
-
- <sect1>
- <heading>When I run xconsole, I get ``Couldn't open console''.</heading>
- <p>
- If you start <htmlurl url="http://www.freebsd.org/cgi/man.cgi?manpath=xfree86&amp;query=X" name="X">
- with <htmlurl url="http://www.freebsd.org/cgi/man.cgi?manpath=xfree86&amp;query=startx" name="startx">, the permissions on /dev/console will
- <tt /not/ get changed, resulting in things like
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?manpath=xfree86&amp;query=xterm" name="xterm -C"> and
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?manpath=xfree86&amp;query=xconsole" name="xconsole"> not working.
-
- <p>
- This is because of the way console permissions are set by default.
- On a multi-user system, one doesn't necessarily want just any user
- to be able to write on the system console. For users who are logging
- directly onto a machine with a VTY, the
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?fbtab"
- name="fbtab"> file exists
- to solve such problems.
-
- In a nutshell, make sure an uncommented line of the form
-
- <verb>
- /dev/ttyv0 0600 /dev/console
- </verb>
-
- is in <htmlurl url="http://www.freebsd.org/cgi/man.cgi?fbtab(5)"
- name="/etc/fbtab"> and it will ensure that whomever logs
- in on <tt>/dev/ttyv0</tt> will own the console.
-
-
- <sect1>
- <heading>My PS/2 mouse doesn't behave properly under X Window.</heading>
- <p>
- Your mouse and the mouse driver have somewhat become out of
- synchronization. Switching away from X to a virtual terminal
- and getting back to X again may make them re-synchronized.
- If the problem occurs often, you may add the following option
- in your kernel configuration file and recompile it.
- <verb>
- options PSM_CHECKSYNC
- </verb>
-
- See the section on <ref id="make-kernel" name="building a
- kernel"> if you've no experience with building kernels.
-
- With this option, there should be less chance of synchronization
- problem between the mouse and the driver. If, however, you
- still see the problem, click any mouse button while holding
- the mouse still to re-synchronize the mouse and the driver.
-
- Note that unfortunately this option may not work with all the
- systems and voids the ``tap'' feature of the ALPS GlidePoint
- device attached to the PS/2 mouse port.
-
-
- <sect>
- <heading>Networking</heading>
-
- <sect1>
- <heading>Where can I get information on ``diskless booting''?</heading>
-
- <p>
- ``Diskless booting'' means that the FreeBSD box is booted over a
- network, and reads the necessary files from a server instead of
- its hard disk. For full details, please read
-
- <url url="../handbook/diskless.html"
- name="the Handbook entry on diskless booting">
-
- <sect1>
- <heading>Can a FreeBSD box be used as a dedicated network router?</heading>
-
- <p>
- Internet standards and good engineering practice prohibit us from
- providing packet forwarding by default in FreeBSD. You can
- however enable this feature by changing the following variable to
- <tt/YES/ in <tt>/etc/sysconfig</tt> (or <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?rc.conf"
- name="rc.conf">):
- <verb>
- # If you want this host to be a gateway, set to YES.
- gateway=YES
- </verb>
-
- This option will put the <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?sysctl"
- name="sysctl"> variable
- <tt/net.inet.ip.forwarding/ to <tt/1/.
-
- In most cases, you will also need to run a routing process to
- tell other systems on your network about your router; FreeBSD
- comes with the standard BSD routing daemon
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?routed"
- name="routed">, or for
- more complex situations you may want to try <em/GaTeD/ (available
- by FTP from <tt/ftp.gated.Merit.EDU/) which supports FreeBSD as
- of 3_5Alpha7.
-
- It is our duty to warn you that, even when FreeBSD is configured
- in this way, it does not completely comply with the Internet
- standard requirements for routers; however, it comes close enough
- for ordinary usage.
-
- <sect1>
- <heading>I want to recompile the latest BIND from ISC. It blows up during the compilation on some types conflicts. What can I do ? </heading>
- <p>
- There is a conflict between the ``<tt/cdefs.h/'' file in the
- distribution and the one shipped with FreeBSD. Just remove
- <tt>compat/include/sys/cdefs.h</tt>.
-
- <sect1>
- <heading>Can I connect my Win95 box to the Internet via FreeBSD?</heading>
- <p>
- Typically, people who ask this question have two PC's at home, one
- with FreeBSD and one with Win95; the idea is to use the FreeBSD
- box to connect to the Internet and then be able to access the
- Internet from the Windows95 box through the FreeBSD box. This
- is really just a special case of the previous question.
-
- There's a useful document available which explains how to set
- FreeBSD up as a <url url="http://www.ssimicro.com/~jeremyc/ppp.html"
- name="PPP Dialup Router">
-
- <bf/NOTE:/ This requires having at least two fixed IP addresses
- available, and possibly three or more, depending on how much
- work you want to go through to set up the Windows box. As an
- alternative, if you don't have a fixed IP, you can use one of
- the private IP subnets and install <bf/proxies/ such as
- <url url="http://squid.nlanr.net/Squid/" name="SQUID"> and
- <url url="http://www.tis.com/" name="the TIS firewall toolkit">
- on your FreeBSD box.
-
- <sect1>
- <heading>Does FreeBSD support SLIP and PPP?</heading>
-
- <p>
- Yes. See the man pages for
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?slattach"
- name="slattach">,
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?sliplogin"
- name="sliplogin">,
-
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?pppd"
- name="pppd"> and
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?ppp"
- name="ppp">. <tt/pppd/ and <tt/ppp/ provide
- support for both incoming and outgoing connections.
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?sliplogin"
- name="Sliplogin"> deals exclusively with incoming connections and
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?slattach"
- name="slattach"> deals exclusively with outgoing connections.
-
- These programs are described in the following sections of the
- <url url="../handbook/handbook.html" name="handbook">:
-
- <p><url url="../handbook/slips.html"
- name="Handbook entry on SLIP (server side)">
- <p><url url="../handbook/slipc.html"
- name="Handbook entry on SLIP (client side)">
- <p><url url="../handbook/ppp.html"
- name="Handbook entry on PPP (kernel version)">
- <p><url url="../handbook/userppp.html"
- name="Handbook entry on PPP (user-mode version)">
-
- <p>
- If you only have access to the Internet through a "shell
- account", you may want to have a look at the
- <htmlurl url="http://www.freebsd.org/cgi/ports.cgi?^slirp"
- name="slirp">
- package. It can provide you with (limited) access to services
- such as ftp and http direct from your local machine.
-
- <sect1>
- <heading>Does FreeBSD support NAT or Masquerading</heading>
-
- <p>
- If you have a subnet (one or more local machines), but have
- been allocated only a single IP number from your Internet
- provider, you may want to look at the
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?natd"
- name="natd"> program.
- <tt/Natd/ allows you to connect an entire subnet to the internet
- using only a single IP number.
-
- <p>
- The
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?ppp"
- name="ppp"> program has similar functionality built in via
- the <tt/-alias/ switch.
-
- <sect1>
- <heading>I can't make <tt/ppp/ work. What am I doing wrong ?<label id="userppp"></heading>
-
+ <p>from <tt>ppp.conf</tt>. If this is the case, go back to the
+ <url url="../handbook/userppp:final.html"
+ name="Final system configuration"> section of the handbook.
- <p>
- You should first read the
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?ppp"
- name="ppp"> manual page and
- the <url url="../handbook/userppp.html"
- name="ppp section of the handbook">. Enable logging
- with the command
-<verb>
- set log Phase Chat Connect Carrier lcp ipcp ccp command
-</verb>
- This command may be typed at the <tt/ppp/ command prompt or
- it may be entered in the <tt>/etc/ppp/ppp.conf</tt>
- configuration file (the start of the <bf>default</bf> section
- is the best place to put it). Make sure that
- <tt>/etc/syslog.conf</tt> contains the lines
-<verb>
- !ppp
- *.* /var/log/ppp.log
-</verb>
- and that the file <tt>/var/log/ppp.log</tt> exists. You can
- now find out a lot about what's going on from the log file.
- Don't worry if it doesn't all make sense. If you need to
- get help from someone, it may make sense to them.
-
- If your version of ppp doesn't understand the "set log"
- command, you should download the
- <url url="http://www.freebsd.org/~brian" name="latest version">.
- It will build on FreeBSD version 2.1.5 and higher.
-
- <sect2>
- <heading>Ppp won't dial in -auto mode</heading>
-
- <p>
- First, check that you've got a default route. By
- running <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?netstat">
- name="netstat -rn">, you should see two entries
- like this:
-<verb>
-Destination Gateway Flags Refs Use Netif Expire
-default 10.0.0.2 UGSc 0 0 tun0
-10.0.0.2 10.0.0.1 UH 0 0 tun0
-</verb>
- This is assuming that you've used the addresses from the
- handbook, the man page or from the ppp.conf.sample file.
- If you haven't got a default route, it may be because you're
- running an old version of <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?ppp"
- name="ppp"> that doesn't understand the
- word <tt/HISADDR/ in the ppp.conf file. If your version of
- <tt/ppp/ is from before FreeBSD 2.2.5, change the
-<verb>
- add 0 0 HISADDR
-</verb>
- line to one saying
-<verb>
- add 0 0 10.0.0.2
-</verb>
- Another reason for the default route line being missing is that
- you have mistakenly set up a default router in your
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?rc.conf"
- name="/etc/rc.conf"> file (this file was called
- <tt>/etc/sysconfig</tt> prior to release 2.2.2), and you have
- omitted the line saying
-<verb>
- delete ALL
-</verb>
- from <tt>ppp.conf</tt>. If this is the case, go back to the
- <url url="../handbook/userppp:final.html"
- name="Final system configuration"> section of the handbook.
+ <sect2>
+ <heading>What does "No route to host" mean</heading>
- <sect2>
- <heading>What does "No route to host" mean</heading>
+ <p>This error is usually due to a missing
- <p>
- This error is usually due to a missing
-<verb>
-MYADDR:
- delete ALL
- add 0 0 HISADDR
-</verb>
- section in your <tt>/etc/ppp/ppp.linkup</tt> file. This is
- only necessary if you have a dynamic IP address or don't
- know the address of your gateway. If you're using
- interactive mode, you can type the following after entering
- <tt/packet mode/ (packet mode is indicated by the capitalized
- <bf/PPP/ in the prompt):
-<verb>
- delete ALL
- add 0 0 HISADDR
-</verb>
- Refer to the <url url="../handbook/userppp:dynamicIP.html"
- name="PPP and Dynamic IP addresses"> section of the handbook
- for further details.
+ <verb>
+ MYADDR:
+ delete ALL
+ add 0 0 HISADDR
+ </verb>
- <sect2>
- <heading>My connection drops after about 3 minutes</heading>
+ <p>section in your <tt>/etc/ppp/ppp.linkup</tt> file. This is
+ only necessary if you have a dynamic IP address or don't know the
+ address of your gateway. If you're using interactive mode, you can
+ type the following after entering <tt/packet mode/ (packet mode is
+ indicated by the capitalized <bf/PPP/ in the prompt):
- <p>
- The default ppp timeout is 3 minutes. This can be adjusted
- with the line
-<verb>
- set timeout NNN
-</verb>
- where NNN is the number of seconds of inactivity before the
- connection is closed. If NNN is zero, the connection is
- never closed due to a timeout.
- It is possible to put this command in the <tt>ppp.conf</tt>
- file, or to type it at the prompt in interactive mode. It
- is also possible to adjust it on the fly while the line is
- active by connecting to <tt/ppp/s server socket using
-
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?telnet"
- name="telnet"> or
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?pppctl"
- name="pppctl">. Refer to the
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?ppp"
- name="ppp"> man page for further details.
-
- <sect2>
- <heading>My connection drops under heavy load</heading>
-
- <p>
- If you have Link Quality Reporting (LQR) configured, it is
- possible that too many LQR packets are lost between your
- machine and the peer. Ppp deduces that the line must therefore
- be bad, and disconnects. Prior to FreeBSD version 2.2.5,
- LQR was enabled by default. It is now disabled by default.
- LQR can be disabled with the line
-<verb>
- disable lqr
-</verb>
+ <verb>
+ delete ALL
+ add 0 0 HISADDR
+ </verb>
- <sect2>
- <heading>My connection drops after a random amount of time</heading>
+ <p>Refer to the <url url="../handbook/userppp:dynamicIP.html"
+ name="PPP and Dynamic IP addresses"> section of the handbook
+ for further details.
- <p>
- Sometimes, on a noisy phone line or even on a line with
- call waiting enabled, your modem may hang up because it
- thinks (incorrectly) that it lost carrier.
+ <sect2>
+ <heading>My connection drops after about 3 minutes</heading>
- <p>
- There's a setting on most modems for determining how tolerant
- it should be to temporary losses of carrier. On a USR
- Sportster for example, this is measured by the S10 register in
- tenths of a second. To make your modem more forgiving, you could
- add the following send-expect sequence to your dial string:
-<verb>
- set dial "...... ATS10=10 OK ......"
-</verb>
+ <p>The default ppp timeout is 3 minutes. This can be adjusted
+ with the line
- <p>
- Refer to your modems manual for details.
+ <verb>
+ set timeout NNN
+ </verb>
- <sect2>
- <heading>Nothing happens after the Login OK! message</heading>
+ <p>where <bf/NNN/ is the number of seconds of inactivity before the
+ connection is closed. If <bf/NNN/ is zero, the connection is
+ never closed due to a timeout. It is possible to put this command in
+ the <tt>ppp.conf</tt> file, or to type it at the prompt in
+ interactive mode. It is also possible to adjust it on the fly while
+ the line is active by connecting to <tt/ppp/s server socket using
+ <htmlurl url="http://www.freebsd.org/cgi/man.cgi?telnet" name="telnet">
+ or <htmlurl url="http://www.freebsd.org/cgi/man.cgi?pppctl"
+ name="pppctl">. Refer to the
+ <htmlurl url="http://www.freebsd.org/cgi/man.cgi?ppp" name="ppp"> man
+ page for further details.
+
+ <sect2>
+ <heading>My connection drops under heavy load</heading>
+
+ <p>If you have Link Quality Reporting (LQR) configured, it is
+ possible that too many LQR packets are lost between your
+ machine and the peer. Ppp deduces that the line must therefore
+ be bad, and disconnects. Prior to FreeBSD version 2.2.5,
+ LQR was enabled by default. It is now disabled by default.
+ LQR can be disabled with the line
- <p>
- Prior to FreeBSD version 2.2.5, once the link was established,
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?ppp"
- name="ppp"> would wait for the peer to initiate the Line Control
- Protocol (LCP). Many ISPs will not initiate negotiations and
- expect the client to do so. To force <tt/ppp/ to initiate
- the LCP, use the following line:
-<verb>
- set openmode active
-</verb>
- <bf/Note/: It usually does no harm if both sides initiate
- negotiation, so openmode is now active by default. However,
- the next section explains when it <bf/does/ do some harm.
-
- <sect2>
- <heading>I keep seeing errors about magic being the same</heading>
-
- <p>
- Occasionally, just after connecting, you may see messages in
- the log that say "magic is the same". Sometimes, these
- messages are harmless, and sometimes one side or the other
- exits.
-
- <p>
- This normally happens on server machines with slow disks that
- are spawning a getty on the port, and executing ppp from a
- login script or program after login. The reason is that in
- the time taken between getty exiting and ppp starting, the
- client-side ppp starts sending Line Control Protocol (LCP)
- packets. Because ECHO is still switched on for the port on
- the server, the client ppp sees these packets "reflect" back.
-
- <p>
- One part of the LCP negotiation is to establish a magic number
- for each side of the link so that "reflections" can be detected.
- The protocol says that when the peer tries to negotiate
- the same magic number, a NAK should be sent and a new magic
- number should be chosen. During the period that the server
- port has ECHO turned on, the client ppp sends LCP packets,
- sees the same magic in the reflected packet and NAKs it. It
- also sees the NAK reflect (which also means ppp must change
- its magic). This produces a potentially enormous number of
- magic number changes, all of which are happily piling into
- the servers tty buffer. As soon as ppp starts on the server,
- it's flooded with magic number changes and almost immediately
- decides it's tried enough to negotiate LCP and gives up.
- Meanwhile, the client, who no longer sees the reflections,
- becomes happy just in time to see a hangup from the server.
-
- <p>
- The only way to circumvent this is to put the following line
- in your ppp.conf file:
-<verb>
- set openmode passive
-</verb>
- This tells ppp to wait for the server to initiate LCP
- negotiations. Some servers may never initiate negotiations.
- If this is the case, please report it as a bug (using send-pr).
- Ppp will need to be adjusted so that the user can configure a
- variable delay before initiating LCP negotiations.
-
- <sect2>
- <heading>Ppp locks up shortly after connecting</heading>
-
- <p>
- Prior to version 2.2.5 of FreeBSD, it was possible that your
- link was disabled shortly after connection due to <tt/ppp/
- mis-handling Predictor1 compression negotiation. This would
- only happen if both sides tried to negotiate different
- Compression Control Protocols (CCP). This problem is now
- corrected, but if you're still running an old version of
- <tt/ppp/, the problem can be circumvented with the line
-<verb>
- disable pred1
-</verb>
+ <verb>
+ disable lqr
+ </verb>
- <sect2>
- <heading>Ppp locks up when I shell out to test it</heading>
-
- <p>
- When you execute the <tt/shell/ or <tt/!/ command, <tt/ppp/
- executes a shell (or if you've passed any arguements, <tt/ppp/
- will execute those arguements). Ppp will wait for the command
- to complete before continuing. If you attempt to use the
- ppp link while running the command, the link will appear to have
- frozen. This is because <tt/ppp/ is waiting for the command
- to complete.
-
- <p>
- If you wish to execute commands like this, use the
- <tt/!bg/ command instead. This will execute the given command
- in the background, and ppp can continue to service the link.
-
- <sect2>
- <heading>Ppp over a null-modem cable never exits</heading>
-
- <p>
- There is no way for <tt/ppp/ to automatically determine that
- a direct connection has been dropped. This is due to the
- lines that are used in a null-modem serial cable. When using
- this sort of connection, LQR should always be enabled with
- the line
-<verb>
- enable lqr
-</verb>
- LQR is accepted by default if negotiated by the peer.
+ <sect2>
+ <heading>My connection drops after a random amount of time</heading>
- <sect2>
- <heading>Why does ppp dial for no reason in -auto mode</heading>
+ <p>Sometimes, on a noisy phone line or even on a line with
+ call waiting enabled, your modem may hang up because it
+ thinks (incorrectly) that it lost carrier.
- <p>
- If <tt/ppp/ is dialing unexpectedly, you must determine the
- cause, and set up Dial filters (dfilters) to prevent such
- dialing.
+ <p>There's a setting on most modems for determining how tolerant
+ it should be to temporary losses of carrier. On a USR
+ Sportster for example, this is measured by the S10 register in
+ tenths of a second. To make your modem more forgiving, you could
+ add the following send-expect sequence to your dial string:
- <p>
- To determine the cause, use the following line:
-<verb>
- set log +tcp/ip
-</verb>
- This will log all traffic through the connection. The next
- time the line comes up unexpectedly, you will see the reason
- logged with a convenient timestamp next to it.
-
- <p>
- You can now disable dialing under these circumstances. Usually,
- this sort of problem arises due to DNS lookups. To prevent
- DNS lookups from establishing a connection (this will <bf/not/
- prevent <tt/ppp/ from passing the packets through an established
- connection), use the following:
-<verb>
- set dfilter 1 deny udp src eq 53
- set dfilter 2 deny udp dst eq 53
- set dfilter 3 permit 0/0 0/0
-</verb>
+ <verb>
+ set dial "...... ATS10=10 OK ......"
+ </verb>
- <sect2>
- <heading>What do these CCP errors mean</heading>
+ <p>Refer to your modem manual for details.
- <p>
- I keep seeing the following errors in my log file:
-<verb>
- CCP: CcpSendConfigReq
- CCP: Received Terminate Ack (1) state = Req-Sent (6)
-</verb>
- This is because ppp is trying to negotiate Predictor1
- compression, and the peer does not want to negotiate any
- compression at all. The messages are harmless, but if you
- wish to remove them, you can disable Predictor1 compression
- locally too:
-<verb>
- disable pred1
-</verb>
+ <sect2>
+ <heading>Nothing happens after the Login OK! message</heading>
- <sect2>
- <heading>Ppp locks up during file transfers with IO errors</heading>
-
- <p>
- Under FreeBSD 2.2.2 and before, there was a bug in the tun
- driver that prevents incoming packets of a size larger than
- the tun interface's MTU size. Receipt of a packet greater than
- the MTU size results in an IO error being logged via syslogd.
-
- <p>
- The ppp specification says that an MRU of 1500 should
- <bf>always</bf> be accepted as a minimum, despite any LCP
- negotiations, therefore it is possible that should you decrease
- the MTU to less than 1500, your ISP will transmit packets of
- 1500 regardless, and you will tickle this non-feature - locking
- up your link.
-
- <p>
- The problem can be circumvented by never setting an MTU of
- less than 1500 under FreeBSD 2.2.2 or before.
-
- <sect2>
- <heading>None of this helps - I'm desperate !</heading>
-
- <p>
- If all else fails, send as much information as you can,
- including your config files, how you're starting <tt/ppp/,
- the relevent parts of your log file and the output of the
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?netstat"
- name="netstat -rn"> command (before and after connecting) to the
- <url url="mailto:freebsd-questions@FreeBSD.org"
- name="freebsd-questions@FreeBSD.org"> mailing list, and someone
- should point you in the right direction.
-
- <sect1>
- <heading>I can't create a <tt>/dev/ed0</tt> device!</heading>
-
- <p>
- In the Berkeley networking framework, network interfaces are only
- directly accessible by kernel code. Please see the
- <tt>/etc/netstart</tt> file and the manual pages for the various
- network programs mentioned there for more information. If this
- leaves you totally confused, then you should pick up a book
- describing network administration on another BSD-related
- operating system; with few significant exceptions, administering
- networking on FreeBSD is basically the same as on SunOS 4.0 or
- Ultrix.
-
- <sect1>
- <heading>How can I setup Ethernet aliases?</heading>
- <p>
- Add ``<tt/netmask 0xffffffff/'' to your <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?ifconfig"
- name="ifconfig"> command-line like the following:
- <verb>
- ifconfig ed0 alias 204.141.95.2 netmask 0xffffffff
- </verb>
-
- <sect1>
- <heading>How do I get my 3C503 to use the other network port?</heading>
-
- <p>
- If you want to use the other ports, you'll have to specify an
- additional parameter on the
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?ifconfig"
- name="ifconfig"> command line. The
- default port is ``<tt/link0/''. To use the AUI port instead of
- the BNC one, use ``<tt/link2/''.
-
- <sect1>
- <heading>I'm having problems with NFS to/from FreeBSD.</heading>
-
- <p>
- Certain PC network cards are better than others (to put it
- mildly) and can sometimes cause problems with network intensive
- applications like NFS.
-
- See
- <url
- url="../handbook/nfs.html"
- name="the Handbook entry on NFS">
-
- for more information on
- this topic.
-
- <sect1>
- <heading>Why can't I NFS-mount from a Linux box?</heading>
-
- <p>
- Some versions of the Linux NFS code only accept mount requests
- from a privileged port; try
- <verb>
- mount -o -P linuxbox:/blah /mnt
- </verb>
- <sect1>
- <heading>Why can't I NFS-mount from a Sun box?</heading>
-
- <p>
- Sun workstations running SunOS 4.X only accept mount requests
- from a privileged port; try
- <verb>
- mount -o -P sunbox:/blah /mnt
- </verb>
- <sect1><heading>I'm having problems talking PPP to NeXTStep machines.</heading>
-
- <p>
- Try disabling the TCP extensions in <tt>/etc/sysconfig</tt> (or <tt/rc.conf/) by
- changing the following variable to NO:
- <verb>
- tcp_extensions=NO
- </verb>
-
- Xylogic's Annex boxes are also broken in this regard and you must
- use the above change to connect thru them.
-
- <sect1>
- <heading>How do I enable IP multicast support?</heading>
-
- <p>
- Multicast host operations are fully supported in FreeBSD 2.0 by
- default. If you want your box to run as a multicast router, you
- will need to load the <tt/ip_mroute_mod/ loadable kernel module
- and run <tt/mrouted/.
-
-For more information:
-<verb>
+ <p>Prior to FreeBSD version 2.2.5, once the link was established,
+ <htmlurl url="http://www.freebsd.org/cgi/man.cgi?ppp"
+ name="ppp"> would wait for the peer to initiate the Line Control
+ Protocol (LCP). Many ISPs will not initiate negotiations and
+ expect the client to do so. To force <tt/ppp/ to initiate
+ the LCP, use the following line:
+
+ <verb>
+ set openmode active
+ </verb>
+
+ <p><bf/Note/: It usually does no harm if both sides initiate
+ negotiation, so openmode is now active by default. However,
+ the next section explains when it <bf/does/ do some harm.
+
+ <sect2>
+ <heading>I keep seeing errors about magic being the same</heading>
+
+ <p>Occasionally, just after connecting, you may see messages in
+ the log that say "magic is the same". Sometimes, these
+ messages are harmless, and sometimes one side or the other
+ exits.
+
+ <p>This normally happens on server machines with slow disks that
+ are spawning a getty on the port, and executing ppp from a
+ login script or program after login. The reason is that in
+ the time taken between getty exiting and ppp starting, the
+ client-side ppp starts sending Line Control Protocol (LCP)
+ packets. Because ECHO is still switched on for the port on
+ the server, the client ppp sees these packets "reflect" back.
+
+ <p>One part of the LCP negotiation is to establish a magic number
+ for each side of the link so that "reflections" can be detected.
+ The protocol says that when the peer tries to negotiate
+ the same magic number, a NAK should be sent and a new magic
+ number should be chosen. During the period that the server
+ port has ECHO turned on, the client ppp sends LCP packets,
+ sees the same magic in the reflected packet and NAKs it. It
+ also sees the NAK reflect (which also means ppp must change
+ its magic). This produces a potentially enormous number of
+ magic number changes, all of which are happily piling into
+ the servers tty buffer. As soon as ppp starts on the server,
+ it's flooded with magic number changes and almost immediately
+ decides it's tried enough to negotiate LCP and gives up.
+ Meanwhile, the client, who no longer sees the reflections,
+ becomes happy just in time to see a hangup from the server.
+
+ <p>The only way to circumvent this is to put the following line
+ in your ppp.conf file:
+
+ <verb>
+ set openmode passive
+ </verb>
+
+ <p>This tells ppp to wait for the server to initiate LCP negotiations.
+ Some servers may never initiate negotiations. If this is the case,
+ please report it as a bug (using send-pr). Ppp will need to be
+ adjusted so that the user can configure a variable delay before
+ initiating LCP negotiations.
+
+ <sect2>
+ <heading>Ppp locks up shortly after connecting</heading>
+
+ <p>Prior to version 2.2.5 of FreeBSD, it was possible that your
+ link was disabled shortly after connection due to <tt/ppp/
+ mis-handling Predictor1 compression negotiation. This would
+ only happen if both sides tried to negotiate different
+ Compression Control Protocols (CCP). This problem is now
+ corrected, but if you're still running an old version of
+ <tt/ppp/, the problem can be circumvented with the line
+
+ <verb>
+ disable pred1
+ </verb>
+
+ <sect2>
+ <heading>Ppp locks up when I shell out to test it</heading>
+
+ <p>When you execute the <tt/shell/ or <tt/!/ command, <tt/ppp/
+ executes a shell (or if you've passed any arguements, <tt/ppp/
+ will execute those arguements). Ppp will wait for the command
+ to complete before continuing. If you attempt to use the
+ ppp link while running the command, the link will appear to have
+ frozen. This is because <tt/ppp/ is waiting for the command
+ to complete.
+
+ <p>If you wish to execute commands like this, use the
+ <tt/!bg/ command instead. This will execute the given command
+ in the background, and ppp can continue to service the link.
+
+ <sect2>
+ <heading>Ppp over a null-modem cable never exits</heading>
+
+ <p>There is no way for <tt/ppp/ to automatically determine that
+ a direct connection has been dropped. This is due to the
+ lines that are used in a null-modem serial cable. When using
+ this sort of connection, LQR should always be enabled with
+ the line
+
+ <verb>
+ enable lqr
+ </verb>
+
+ <p>LQR is accepted by default if negotiated by the peer.
+
+ <sect2>
+ <heading>Why does ppp dial for no reason in -auto mode</heading>
+
+ <p>If <tt/ppp/ is dialing unexpectedly, you must determine the
+ cause, and set up Dial filters (dfilters) to prevent such dialing.
+
+ <p>To determine the cause, use the following line:
+
+ <verb>
+ set log +tcp/ip
+ </verb>
+
+ <p>This will log all traffic through the connection. The next
+ time the line comes up unexpectedly, you will see the reason
+ logged with a convenient timestamp next to it.
+
+ <p>You can now disable dialing under these circumstances. Usually,
+ this sort of problem arises due to DNS lookups. To prevent
+ DNS lookups from establishing a connection (this will <bf/not/
+ prevent <tt/ppp/ from passing the packets through an established
+ connection), use the following:
+
+ <verb>
+ set dfilter 1 deny udp src eq 53
+ set dfilter 2 deny udp dst eq 53
+ set dfilter 3 permit 0/0 0/0
+ </verb>
+
+ <p>This is not always suitable, as it will effectively break your
+ demand-dial capabilities - most programs will need a DNS lookup
+ before doing any other network related things.
+
+ <p>In the DNS case, you should try to determine what is actually
+ trying to resolve a host name. A lot of the time,
+ <htmlurl url="http://www.freebsd.org/cgi/man.cgi?sendmail"
+ name="sendmail"> is the culprit. You should make sure that you tell
+ sendmail not to do any DNS lookups in its configuration file. See
+ the section on <ref id="ispmail" name="Mail Configuration"> for
+ further details.
+
+ <sect2>
+ <heading>What do these CCP errors mean</heading>
+
+ <p>I keep seeing the following errors in my log file:
+
+ <verb>
+ CCP: CcpSendConfigReq
+ CCP: Received Terminate Ack (1) state = Req-Sent (6)
+ </verb>
+
+ <p>This is because ppp is trying to negotiate Predictor1
+ compression, and the peer does not want to negotiate any
+ compression at all. The messages are harmless, but if you
+ wish to remove them, you can disable Predictor1 compression
+ locally too:
+
+ <verb>
+ disable pred1
+ </verb>
+
+ <sect2>
+ <heading>Ppp locks up during file transfers with IO errors</heading>
+
+ <p>Under FreeBSD 2.2.2 and before, there was a bug in the tun
+ driver that prevents incoming packets of a size larger than
+ the tun interface's MTU size. Receipt of a packet greater than
+ the MTU size results in an IO error being logged via syslogd.
+
+ <p>The ppp specification says that an MRU of 1500 should
+ <bf>always</bf> be accepted as a minimum, despite any LCP
+ negotiations, therefore it is possible that should you decrease
+ the MTU to less than 1500, your ISP will transmit packets of
+ 1500 regardless, and you will tickle this non-feature - locking
+ up your link.
+
+ <p>The problem can be circumvented by never setting an MTU of
+ less than 1500 under FreeBSD 2.2.2 or before.
+
+ <sect2>
+ <heading>None of this helps - I'm desperate !</heading>
+
+ <p>If all else fails, send as much information as you can,
+ including your config files, how you're starting <tt/ppp/,
+ the relevent parts of your log file and the output of the
+ <htmlurl url="http://www.freebsd.org/cgi/man.cgi?netstat"
+ name="netstat -rn"> command (before and after connecting) to the
+ <url url="mailto:freebsd-questions@FreeBSD.org"
+ name="freebsd-questions@FreeBSD.org"> mailing list or the
+ <url url="news:comp.unix.bsd.freebsd.misc"
+ name="comp.unix.bsd.freebsd.misc"> news group, and someone
+ should point you in the right direction.
+
+ <sect1>
+ <heading>I can't create a <tt>/dev/ed0</tt> device!</heading>
+
+ <p>In the Berkeley networking framework, network interfaces are only
+ directly accessible by kernel code. Please see the
+ <tt>/etc/rc.network</tt> file and the manual pages for the various
+ network programs mentioned there for more information. If this
+ leaves you totally confused, then you should pick up a book
+ describing network administration on another BSD-related
+ operating system; with few significant exceptions, administering
+ networking on FreeBSD is basically the same as on SunOS 4.0 or
+ Ultrix.
+
+ <sect1>
+ <heading>How can I setup Ethernet aliases?</heading>
+
+ <p>Add ``<tt/netmask 0xffffffff/'' to your <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?ifconfig" name="ifconfig">
+ command-line like the following:
+
+ <verb>
+ ifconfig ed0 alias 204.141.95.2 netmask 0xffffffff
+ </verb>
+
+ <sect1>
+ <heading>How do I get my 3C503 to use the other network port?</heading>
+
+ <p>If you want to use the other ports, you'll have to specify an
+ additional parameter on the
+ <htmlurl url="http://www.freebsd.org/cgi/man.cgi?ifconfig"
+ name="ifconfig"> command line. The
+ default port is ``<tt/link0/''. To use the AUI port instead of
+ the BNC one, use ``<tt/link2/''. These flags should be specified
+ using the ifconfig_* variables in <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?rc.conf" name="/etc/rc.conf">.
+
+ <sect1>
+ <heading>I'm having problems with NFS to/from FreeBSD.</heading>
+
+ <p>Certain PC network cards are better than others (to put it
+ mildly) and can sometimes cause problems with network intensive
+ applications like NFS.
+
+ <p>See <url url="../handbook/nfs.html" name="the Handbook entry on NFS">
+ for more information on this topic.
+
+ <sect1>
+ <heading>Why can't I NFS-mount from a Linux box?</heading>
+
+ <p>Some versions of the Linux NFS code only accept mount requests
+ from a privileged port; try
+
+ <verb>
+ mount -o -P linuxbox:/blah /mnt
+ </verb>
+
+ <sect1>
+ <heading>Why can't I NFS-mount from a Sun box?</heading>
+
+ <p>Sun workstations running SunOS 4.X only accept mount requests
+ from a privileged port; try
+
+ <verb>
+ mount -o -P sunbox:/blah /mnt
+ </verb>
+
+ <sect1>
+ <heading>I'm having problems talking PPP to NeXTStep machines.</heading>
+
+ <p>Try disabling the TCP extensions in <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?rc.conf" name="/etc/rc.conf"> by
+ changing the following variable to NO:
+
+ <verb>
+ tcp_extensions=NO
+ </verb>
+
+ <p>Xylogic's Annex boxes are also broken in this regard and you must
+ use the above change to connect thru them.
+
+ <sect1>
+ <heading>How do I enable IP multicast support?</heading>
+
+ <p>Multicast host operations are fully supported in FreeBSD 2.0 and
+ above by default. If you want your box to run as a multicast router, you
+ will need to load the <tt/ip_mroute_mod/ loadable kernel module
+ and run <tt/mrouted/.
+
+ <p>For more information:
+
+ <verb>
Product Description Where
--------------- ----------------------- ---------------------------------------
faq.txt Mbone FAQ ftp.isi.edu:/mbone/faq.txt
@@ -3859,641 +3932,650 @@ rtpqual Tools for testing the ftp.psc.edu:/pub/net_tools/rtpqual.c
quality of RTP packets.
vat_nv_record Recording tools for vat ftp.sics.se:archive/vat_nv_record.tar.Z
and nv.
-</verb>
+ </verb>
- </sect1>
- <sect1>
- <heading>Which network cards are based on the DEC PCI chipset?</heading>
+ <sect1>
+ <heading>Which network cards are based on the DEC PCI chipset?</heading>
- <p>
- Here is a list compiled by Glen Foster
- <tt/&lt;gfoster@driver.nsta.org&gt;/:
-<verb>
-Vendor Model
-- --------------------------------------------------------
-ASUS PCI-L101-TB
-Accton ENI1203
-Cogent EM960PCI
-Compex ENET32-PCI
-D-Link DE-530
-DEC DE435
-Danpex EN-9400P3
-JCIS Condor JC1260
-Linksys EtherPCI
-Mylex LNP101
-SMC EtherPower 10/100 (Model 9332)
-SMC EtherPower (Model 8432)
-TopWare TE-3500P
-Zynx ZX342
-</verb>
- </sect1>
- <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 <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?resolv.conf"
- name="/etc/resolv.conf">. 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>``Permission denied'' for all networking operations.</heading>
- <p>
- If you have compiled your kernel with the <tt/IPFIREWALL/
- option, you need to be aware that the default policy as of
- 2.1.7R (this actually changed during 2.1-STABLE development)
- is to deny all packets that are not explicitly allowed.
-
- <p>
- If you had unintentionally misconfigured your system for
- firewalling, you can restore network operability by typing
- the following while logged in as root:
+ <p>Here is a list compiled by <url url="mailto:gfoster@driver.nsta.org"
+ name="Glen Foster">:
- <verb>
- ipfw add 65534 allow all from any to any
- </verb>
+ <verb>
+ Vendor Model
+ ----------------------------------------------
+ ASUS PCI-L101-TB
+ Accton ENI1203
+ Cogent EM960PCI
+ Compex ENET32-PCI
+ D-Link DE-530
+ DEC DE435
+ Danpex EN-9400P3
+ JCIS Condor JC1260
+ Linksys EtherPCI
+ Mylex LNP101
+ SMC EtherPower 10/100 (Model 9332)
+ SMC EtherPower (Model 8432)
+ TopWare TE-3500P
+ Zynx ZX342
+ </verb>
- For further information on configuring a FreeBSD firewall,
- see the <url url="../handbook/handbook.html" name="FreeBSD Handbook.">
+ <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 <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?named" name="bind"> 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
- </sect1>
+ <verb>
+ search foo.bar.edu bar.edu
+ </verb>
- <sect>
- <heading>Serial Communications</heading>
- <p>
- This section answers common questions about serial communications
- with FreeBSD.
-
- <sect1>
- <heading>How do I tell if FreeBSD found my serial ports?</heading>
- <p>
- As the FreeBSD kernel boots, it will probe for the serial ports
- in your system for which the kernel was configured. You can
- either watch your system closely for the messages it prints or
- run the command
- <verb>
- dmesg | grep sio
- </verb>
- after your system's up and running.
-
- Here's some example output from the above command:
- <verb>
- sio0 at 0x3f8-0x3ff irq 4 on isa
- sio0: type 16550A
- sio1 at 0x2f8-0x2ff irq 3 on isa
- sio1: type 16550A
- </verb>
-
- This shows two serial ports. The first is on irq 4, is using
- port address <tt/0x3f8/, and has a 16550A-type UART chip. The
- second uses the same kind of chip but is on irq 3 and is at port
- address <tt/0x2f8/. Internal modem cards are treated just like
- serial ports---except that they always have a modem ``attached''
- to the port.
-
- The <tt/GENERIC/ kernel includes support for two serial ports
- using the same irq and port address settings in the above
- example. If these settings aren't right for your system, or if
- you've added modem cards or have more serial ports than your
- kernel is configured for, just reconfigure your kernel. See
- section <ref id="make-kernel" name="about building a kernel"> for
- more details.
-
- <sect1>
- <heading>How do I tell if FreeBSD found my modem cards?</heading>
- <p>
- Please refer to the answer to the previous question.
-
- <sect1>
- <heading>I just upgraded to 2.0.5 and my <tt/tty0X/ are missing!</heading>
- <p>
- Don't worry, they have been merged with the <tt/ttydX/ devices.
- You'll have to change any old configuration files you have, though.
-
- <sect1>
- <heading>How do I access the serial ports on FreeBSD?</heading>
- <p>
- The third serial port, <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?sio"
- name="sio2"> (known as COM3 in DOS), is on
- <tt>/dev/cuaa2</tt> for dial-out devices, and on
- <tt>/dev/ttyd2</tt> for dial-in devices. What's the difference
- between these two classes of devices?
-
- You use <tt/ttydX/ for dial-ins. When opening
- <tt>/dev/ttydX</tt> in blocking mode, a process will wait for the
- corresponding <tt/cuaaX/ device to become inactive, and then wait
- for the carrier detect line to go active. When you open the
- <tt/cuaaX/ device, it makes sure the serial port isn't already in
- use by the <tt/ttydX/ device. If the port's available, it
- ``steals'' it from the <tt/ttydX/ device. Also, the <tt/cuaXX/
- device doesn't care about carrier detect. With this scheme and
- an auto-answer modem, you can have remote users log in and you
- can still dialout with the same modem and the system will take
- care of all the conflicts.
-
- <sect1>
- <heading>How do I enable support for a multiport serial card?</heading>
- <p>
- Again, the section on kernel configuration provides information
- about configuring your kernel. For a multiport serial card,
- place an <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?sio"
- name="sio"> line for each serial port on the card in the
- kernel configuration file. But place the irq and vector
- specifiers on only one of the entries. All of the ports on the
- card should share one irq. For consistency, use the last serial
- port to specify the irq. Also, specify the
- <tt/COM&lowbar;MULTIPORT/ option.
-
- The following example is for an AST 4-port serial card on irq 7:
- <verb>
- options "COM_MULTIPORT"
- device sio4 at isa? port 0x2a0 tty flags 0x781
- device sio5 at isa? port 0x2a8 tty flags 0x781
- device sio6 at isa? port 0x2b0 tty flags 0x781
- device sio7 at isa? port 0x2b8 tty flags 0x781 irq 7 vector siointr
- </verb>
- The flags indicate that the master port has minor number 7
- (<tt/0x700/), diagnostics enabled during probe (<tt/0x080/), and
- all the ports share an irq (<tt/0x001/).
-
- <sect1>
- <heading>Can FreeBSD handle multiport serial cards sharing irqs?</heading>
- <p>
- Not yet. You'll have to use a different irq for each card.
-
- <sect1>
- <heading>How can I set the default serial parameters for a port?</heading>
- <p>
- The <tt/ttydX/ (or <tt/cuaaX/) device is the regular device
- you'll want to open for your applications. When a process opens
- the device, it'll 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's 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 <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?MAKEDEV"
- name="MAKEDEV"> script does
- <bf/NOT/ do this when it creates the device entries.
-
- <sect1>
- <heading>How can I enable dialup logins on my modem?</heading>
- <p>
- So you want to become an Internet service provider, eh? First,
- you'll need one or more modems that can auto-answer. Your modem
- will need to assert carrier-detect when it detects a carrier and
- not assert it all the time. It will need to hang up the phone
- and reset itself when the data terminal ready (<tt/DTR/) line
- goes from on to off. It should probably use <tt>RTS/CTS</tt>
- flow control or no local flow control at all. Finally, it must
- use a constant speed between the computer and itself, but (to be
- nice to your callers) it should negotiate a speed between itself
- and the remote modem.
-
- For many Hayes command-set--compatible modems, this command will
- make these settings and store them in nonvolatile memory:
- <verb>
- AT &amp;C1 &amp;D3 &amp;K3 &amp;Q6 S0=1 &amp;W
- </verb>
- See the section <ref id="direct-at" name="on sending AT
- commands"> below for information on how to make these settings
- without resorting to an MS-DOS terminal program.
-
- Next, make an entry in <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?ttys"
- name="/etc/ttys"> for the modem. This
- file lists all the ports on which the operating system will await
- logins. Add a line that looks something like this:
- <verb>
- ttyd1 "/usr/libexec/getty std.57600" dialup on insecure
- </verb>
- This line indicates that the second serial port
- (<tt>/dev/ttyd1</tt>) has a modem connected running at 57600 bps
- and no parity (<tt/std.57600/, which comes from the file
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?gettytab"
- name="/etc/gettytab">). The terminal type for this port is
- ``dialup.'' The port is ``on'' and is ``insecure''---meaning
- root logins on the port aren't allowed. For dialin ports like
- this one, use the <tt/ttydX/ entry.
-
- It's common practice to use ``dialup'' as the terminal type.
- Many users set up in their .profile or .login files a prompt for
- the actual terminal type if the starting type is dialup. The
- example shows the port as insecure. To become root on this port,
- you have to login as a regular user, then <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?su"
- name="su">'' to
- <tt/root/. If you use ``secure'' then <tt/root/ can login in
- directly.
-
- After making modifications to <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?ttys"
- name="/etc/ttys">, you need to
- send a hangup or <tt/HUP/ signal to the <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?init"
- name="init"> process:
- <verb>
- kill -1 1
- </verb>
- This forces the init process to reread <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?ttys"
- name="/etc/ttys">. The
- init process will then start getty processes on all ``on'' ports.
- You can find out if logins are available for your port by typing
- <verb>
- ps -ax | grep '[t]tyd1'
- </verb>
-
- You should see something like:
- <verb>
- 747 ?? I 0:00.04 /usr/libexec/getty std.57600 ttyd1
- </verb>
-
- <sect1>
- <heading>How can I connect a dumb terminal to my FreeBSD box?</heading>
- <p>
- If you're using another computer as a terminal into your FreeBSD
- system, get a null modem cable to go between the two serial
- ports. If you're using an actual terminal, see its accompanying
- instructions.
-
- Then, modify <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?ttys"
- name="/etc/ttys">, like above. For example, if
- you're hooking up a WYSE-50 terminal to the fifth serial port,
- use an entry like this:
- <verb>
- ttyd4 "/usr/libexec/getty std.38400" wyse50 on secure
- </verb>
- This example shows that the port on <tt>/dev/ttyd4</tt> has a
- wyse50 terminal connected at 38400 bps with no parity
- (<tt/std.38400/ from <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?gettytab"
- name="/etc/gettytab">) and <tt/root/ logins
- are allowed (secure).
-
- <sect1>
- <heading>Why can't I run <tt/tip/ or <tt/cu/?</heading>
- <p>
- On your system, the programs <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?tip"
- name="tip"> and <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?cu"
- name="cu"> are probably
- executable only by <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?uucp"
- name="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/cu
- chmod 4511 /usr/bin/tip
- </verb>
-
- <sect1>
- <heading>My stock Hayes modem isn't supported---what can I do?</heading>
- <p>
- Actually, the man page for <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?tip"
- name="tip"> is out of date. There is a
- generic Hayes dialer already built in. Just use
- ``<tt/at=hayes/'' in your <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?remote"
- name="/etc/remote"> file.
-
- The Hayes driver isn't smart enough to recognize some of the
- advanced features of newer modems---messages like <tt/BUSY/,
- <tt/NO DIALTONE/, or <tt/CONNECT 115200/ will just confuse it.
- You should turn those messages off when you use <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?tip"
- name="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's a
- communication problem. Try <tt/ATS7=45&amp;W/.
-
- Actually, as shipped <tt/tip/ doesn't 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's called a ``<tt/direct/'' entry in your
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?remote"
- name="/etc/remote"> file. For example, if your modem's 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 <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?tip"
- name="tip cuaa0"> and you'll 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 doesn't work!</heading>
- <p>
- The <tt/@/ sign in the phone number capability tells tip to look in
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?phones(5)"
- name="/etc/phones"> for a phone number. But the <tt/@/ sign is
- also a special character in capability files like
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?remote"
- name="/etc/remote">. 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's called a ``<tt/generic/'' entry in your
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?remote"
- name="/etc/remote"> 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 <htmlurl url="http://www.freebsd.org/cgi/man.cgi?cu"
- name="cu"> over <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?tip"
- name="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. <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?tip"
- name="tip"> thinks a good default is 1200 bps which is
- why it looks for a ``<tt/tip1200/'' entry. You don't 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're connected and typing
- ``<tt/CONNECT &lt;host&gt;/'' each time, use tip's <tt/cm/
- capability. For example, these entries in
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?remote"
- name="/etc/remote">:
- <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 <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?remote"
- name="/etc/remote">
- 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
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?phones"
- name="/etc/phones">:
- <verb>
- big-university 5551111
- big-university 5551112
- big-university 5551113
- big-university 5551114
- </verb>
-
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?tip"
- name="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
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?tip"
- name="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've 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've pressed CTRL+A, <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?tip"
- name="tip"> ``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's 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're talking to another UNIX system, you can send and
- receive files with <tt/~p/ (put) and <tt/~t/ (take). These
- commands run <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?cat"
- name="cat"> and <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?echo"
- name="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's no error checking, so you probably should use another
- protocol, like zmodem.
-
- <sect1>
- <heading>How can I run zmodem with <tt/tip/?</heading>
- <p>
- First, install one of the zmodem programs from the ports
- collection (such as one of the two from the comms category,
- <htmlurl url="http://www.freebsd.org/cgi/ports.cgi?^lrzsz"
- name="lrzsz"> and
- <htmlurl url="http://www.freebsd.org/cgi/ports.cgi?^rzsz"
- name="rzsz">).
-
- To receive files, start the sending program on the remote end.
- Then, press enter and type ``<tt/~C rz/'' (or ``<tt/~C lrz/'' if
- you installed lrzsz) to begin receiving them locally.
-
- To send files, start the receiving program on the remote end.
- Then, press enter and type ``<tt/~C sz &lt;files&gt;/'' (or
- ``<tt/~C lsz &lt;files&gt;/'') to send them to the
- remote system.
-
- </sect>
-
- <sect>
- <heading>Miscellaneous Questions</heading>
- <p>
+ <p>instead of the previous
- <sect1>
- <heading>Why does FreeBSD consume far more swap space than Linux?</heading>
+ <verb>
+ domain foo.bar.edu
+ </verb>
- <p>
- It doesn't. You might mean ``why does my swap seem full?''. If
- that is what you really meant, it's because putting stuff in swap
- rather than discarding it makes it faster to recover than if the
- pager had to go through the file system to pull in clean
- (unmodified) blocks from an executable.
+ <p>into your <htmlurl url="http://www.freebsd.org/cgi/man.cgi?resolv.conf"
+ name="/etc/resolv.conf"> file. However, make sure that the search order
+ does not go beyond the ``boundary between local and public
+ administration'', as RFC 1535 calls it.
- The actual amount of dirty pages that you can have in core at
- once is not reduced; the clean pages are displaced as necessary.
+ <sect1>
+ <heading>``Permission denied'' for all networking operations.</heading>
- <sect1>
- <heading>What is FreeBSD's a.out executable format, and why not ELF?</heading>
- <p>To understand why FreeBSD uses the <tt>a.out</tt> format, you must
- first know a little about the 3 currently "dominant" executable
- formats for UNIX:
+ <p>If you have compiled your kernel with the <tt/IPFIREWALL/
+ option, you need to be aware that the default policy as of
+ 2.1.7R (this actually changed during 2.1-STABLE development)
+ is to deny all packets that are not explicitly allowed.
- <itemize>
+ <p>If you had unintentionally misconfigured your system for
+ firewalling, you can restore network operability by typing
+ the following while logged in as root:
+
+ <verb>
+ ipfw add 65534 allow all from any to any
+ </verb>
+
+ <p>For further information on configuring a FreeBSD firewall,
+ see the <url url="../handbook/firewalls.html" name="Handbook section">.
+
+ <sect>
+ <heading>Serial Communications</heading>
+
+ <p>This section answers common questions about serial communications
+ with FreeBSD. PPP and SLIP are covered in the <ref id="networking"
+ name="Networking"> section.
+
+ <sect1>
+ <heading>How do I tell if FreeBSD found my serial ports?</heading>
+
+ <p>As the FreeBSD kernel boots, it will probe for the serial ports
+ in your system for which the kernel was configured. You can
+ either watch your system closely for the messages it prints or
+ run the command
+
+ <verb>
+ dmesg | grep sio
+ </verb>
+
+ <p>after your system's up and running.
+
+ <p>Here's some example output from the above command:
+
+ <verb>
+ sio0 at 0x3f8-0x3ff irq 4 on isa
+ sio0: type 16550A
+ sio1 at 0x2f8-0x2ff irq 3 on isa
+ sio1: type 16550A
+ </verb>
+
+ <p>This shows two serial ports. The first is on irq 4, is using
+ port address <tt/0x3f8/, and has a 16550A-type UART chip. The
+ second uses the same kind of chip but is on irq 3 and is at port
+ address <tt/0x2f8/. Internal modem cards are treated just like
+ serial ports---except that they always have a modem ``attached''
+ to the port.
+
+ <p>The <tt/GENERIC/ kernel includes support for two serial ports
+ using the same irq and port address settings in the above
+ example. If these settings aren't right for your system, or if
+ you've added modem cards or have more serial ports than your
+ kernel is configured for, just reconfigure your kernel. See
+ section <ref id="make-kernel" name="about building a kernel"> for
+ more details.
+
+ <sect1>
+ <heading>How do I tell if FreeBSD found my modem cards?</heading>
+
+ <p>Refer to the answer to the previous question.
+
+ <sect1>
+ <heading>I just upgraded to 2.0.5 and my <tt/tty0X/ are missing!</heading>
+
+ <p>Don't worry, they have been merged with the <tt/ttydX/ devices.
+ You'll have to change any old configuration files you have, though.
+
+ <sect1>
+ <heading>How do I access the serial ports on FreeBSD?</heading>
+
+ <p>The third serial port, <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?sio" name="sio2"> (known as
+ COM3 in DOS), is on <tt>/dev/cuaa2</tt> for dial-out devices, and on
+ <tt>/dev/ttyd2</tt> for dial-in devices. What's the difference
+ between these two classes of devices?
+
+ <p>You use <tt/ttydX/ for dial-ins. When opening <tt>/dev/ttydX</tt>
+ in blocking mode, a process will wait for the corresponding
+ <tt/cuaaX/ device to become inactive, and then wait
+ for the carrier detect line to go active. When you open the
+ <tt/cuaaX/ device, it makes sure the serial port isn't already in
+ use by the <tt/ttydX/ device. If the port's available, it
+ ``steals'' it from the <tt/ttydX/ device. Also, the <tt/cuaXX/
+ device doesn't care about carrier detect. With this scheme and
+ an auto-answer modem, you can have remote users log in and you
+ can still dialout with the same modem and the system will take
+ care of all the conflicts.
+
+ <sect1>
+ <heading>How do I enable support for a multiport serial card?</heading>
+
+ <p>Again, the section on kernel configuration provides information
+ about configuring your kernel. For a multiport serial card,
+ place an <htmlurl url="http://www.freebsd.org/cgi/man.cgi?sio"
+ name="sio"> line for each serial port on the card in the
+ kernel configuration file. But place the irq and vector
+ specifiers on only one of the entries. All of the ports on the
+ card should share one irq. For consistency, use the last serial
+ port to specify the irq. Also, specify the <tt/COM&lowbar;MULTIPORT/
+ option.
+
+ <p>The following example is for an AST 4-port serial card on irq 7:
+
+ <verb>
+ options "COM_MULTIPORT"
+ device sio4 at isa? port 0x2a0 tty flags 0x781
+ device sio5 at isa? port 0x2a8 tty flags 0x781
+ device sio6 at isa? port 0x2b0 tty flags 0x781
+ device sio7 at isa? port 0x2b8 tty flags 0x781 irq 7 vector siointr
+ </verb>
+
+ <p>The flags indicate that the master port has minor number 7
+ (<tt/0x700/), diagnostics enabled during probe (<tt/0x080/), and
+ all the ports share an irq (<tt/0x001/).
+
+ <sect1>
+ <heading>Can FreeBSD handle multiport serial cards sharing irqs?</heading>
+
+ <p>Not yet. You'll have to use a different irq for each card.
+
+ <sect1>
+ <heading>How can I set the default serial parameters for a port?</heading>
+
+ <p>The <tt/ttydX/ (or <tt/cuaaX/) device is the regular device
+ you'll want to open for your applications. When a process opens
+ the device, it'll have a default set of terminal I/O settings.
+ You can see these settings with the command
+
+ <verb>
+ stty -a -f /dev/ttyd1
+ </verb>
+
+ <p>When you change the settings to this device, the settings are in
+ effect until the device is closed. When it's 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>
+
+ <p>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.
+
+ <p>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>
+
+ <p>Now, an application that opens <tt/ttyd5/ and tries to change the
+ speed of the port will be stuck with 57600 bps.
+
+ <p>Naturally, you should make the initial state and lock state
+ devices writable only by <tt/root/. The <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?MAKEDEV"
+ name="MAKEDEV"> script does <bf/NOT/ do this when it creates the
+ device entries.
+
+ <sect1>
+ <heading>How can I enable dialup logins on my modem?</heading>
+
+ <p>So you want to become an Internet service provider, eh? First,
+ you'll need one or more modems that can auto-answer. Your modem
+ will need to assert carrier-detect when it detects a carrier and
+ not assert it all the time. It will need to hang up the phone
+ and reset itself when the data terminal ready (<tt/DTR/) line
+ goes from on to off. It should probably use <tt>RTS/CTS</tt>
+ flow control or no local flow control at all. Finally, it must
+ use a constant speed between the computer and itself, but (to be
+ nice to your callers) it should negotiate a speed between itself
+ and the remote modem.
+
+ <p>For many Hayes command-set--compatible modems, this command will
+ make these settings and store them in nonvolatile memory:
+
+ <verb>
+ AT &amp;C1 &amp;D3 &amp;K3 &amp;Q6 S0=1 &amp;W
+ </verb>
+
+ <p>See the section <ref id="direct-at" name="on sending AT
+ commands"> below for information on how to make these settings
+ without resorting to an MS-DOS terminal program.
+
+ <p>Next, make an entry in <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?ttys" name="/etc/ttys"> for the
+ modem. This file lists all the ports on which the operating system will
+ await logins. Add a line that looks something like this:
+
+ <verb>
+ ttyd1 "/usr/libexec/getty std.57600" dialup on insecure
+ </verb>
+
+ <p>This line indicates that the second serial port
+ (<tt>/dev/ttyd1</tt>) has a modem connected running at 57600 bps
+ and no parity (<tt/std.57600/, which comes from the file
+ <htmlurl url="http://www.freebsd.org/cgi/man.cgi?gettytab"
+ name="/etc/gettytab">). The terminal type for this port is
+ ``dialup.'' The port is ``on'' and is ``insecure''---meaning
+ root logins on the port aren't allowed. For dialin ports like
+ this one, use the <tt/ttydX/ entry.
+
+ <p>It's common practice to use ``dialup'' as the terminal type.
+ Many users set up in their .profile or .login files a prompt for
+ the actual terminal type if the starting type is dialup. The
+ example shows the port as insecure. To become root on this port,
+ you have to login as a regular user, then <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?su" name="su">'' to
+ <tt/root/. If you use ``secure'' then <tt/root/ can login in
+ directly.
+
+ <p>After making modifications to <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?ttys" name="/etc/ttys">, you
+ need to send a hangup or <tt/HUP/ signal to the <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?init" name="init"> process:
+
+ <verb>
+ kill -HUP 1
+ </verb>
+
+ <p>This forces the init process to reread <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?ttys" name="/etc/ttys">. The
+ init process will then start getty processes on all ``on'' ports.
+ You can find out if logins are available for your port by typing
+
+ <verb>
+ ps -ax | grep '[t]tyd1'
+ </verb>
+
+ <p>You should see something like:
+
+ <verb>
+ 747 ?? I 0:00.04 /usr/libexec/getty std.57600 ttyd1
+ </verb>
+
+ <sect1>
+ <heading>How can I connect a dumb terminal to my FreeBSD box?</heading>
+
+ <p>If you're using another computer as a terminal into your FreeBSD
+ system, get a null modem cable to go between the two serial
+ ports. If you're using an actual terminal, see its accompanying
+ instructions.
+
+ <p>Then, modify <htmlurl url="http://www.freebsd.org/cgi/man.cgi?ttys"
+ name="/etc/ttys">, like above. For example, if you're hooking up a
+ WYSE-50 terminal to the fifth serial port, use an entry like this:
+
+ <verb>
+ ttyd4 "/usr/libexec/getty std.38400" wyse50 on secure
+ </verb>
+
+ <p>This example shows that the port on <tt>/dev/ttyd4</tt> has a
+ wyse50 terminal connected at 38400 bps with no parity
+ (<tt/std.38400/ from <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?gettytab"
+ name="/etc/gettytab">) and <tt/root/ logins are allowed (secure).
+
+ <sect1>
+ <heading>Why can't I run <tt/tip/ or <tt/cu/?</heading>
+
+ <p>On your system, the programs <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?tip" name="tip"> and <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?cu" name="cu"> are probably
+ executable only by <htmlurl url="http://www.freebsd.org/cgi/man.cgi?uucp"
+ name="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.
+
+ <p>Alternatively, you can let everyone on your system run <tt/tip/
+ and <tt/cu/ by typing:
+
+ <verb>
+ # chmod 4511 /usr/bin/cu
+ # chmod 4511 /usr/bin/tip
+ </verb>
+
+ <sect1>
+ <heading>My stock Hayes modem isn't supported---what can I do?</heading>
+
+ <p>Actually, the man page for <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?tip" name="tip"> is out of
+ date. There is a generic Hayes dialer already built in. Just use
+ ``<tt/at=hayes/'' in your <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?remote" name="/etc/remote"> file.
+
+ <p>The Hayes driver isn't smart enough to recognize some of the
+ advanced features of newer modems---messages like <tt/BUSY/,
+ <tt/NO DIALTONE/, or <tt/CONNECT 115200/ will just confuse it.
+ You should turn those messages off when you use <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?tip" name="tip"> (using
+ <tt/ATX0&amp;W/).
+
+ <p>Also, the dial timeout for <tt/tip/ is 60 seconds. Your modem
+ should use something less, or else tip will think there's a
+ communication problem. Try <tt/ATS7=45&amp;W/.
+
+ <p>Actually, as shipped <tt/tip/ doesn't 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.
+
+ <p>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's called a ``<tt/direct/'' entry in your
+ <htmlurl url="http://www.freebsd.org/cgi/man.cgi?remote"
+ name="/etc/remote"> file. For example, if your modem's 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>
+
+ <p>Use the highest bps rate your modem supports in the br
+ capability. Then, type <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?tip" name="tip cuaa0"> and
+ you'll be connected to your modem.
+
+ <p>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>
+
+ <p>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 doesn't work!</heading>
+
+ <p>The <tt/@/ sign in the phone number capability tells tip to look in
+ <htmlurl url="http://www.freebsd.org/cgi/man.cgi?phones(5)"
+ name="/etc/phones"> for a phone number. But the <tt/@/ sign is
+ also a special character in capability files like
+ <htmlurl url="http://www.freebsd.org/cgi/man.cgi?remote"
+ name="/etc/remote">. 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's called a ``<tt/generic/'' entry in your
+ <htmlurl url="http://www.freebsd.org/cgi/man.cgi?remote"
+ name="/etc/remote"> 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>
+
+ <p>Then you can things like ``<tt/tip -115200 5551234/''. If you
+ prefer <htmlurl url="http://www.freebsd.org/cgi/man.cgi?cu"
+ name="cu"> over <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?tip" name="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>
+
+ <p>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. <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?tip" name="tip"> thinks a good
+ default is 1200 bps which is why it looks for a ``<tt/tip1200/'' entry.
+ You don't 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're connected and typing
+ ``<tt/CONNECT &lt;host&gt;/'' each time, use tip's <tt/cm/
+ capability. For example, these entries in
+ <htmlurl url="http://www.freebsd.org/cgi/man.cgi?remote"
+ name="/etc/remote">:
+
+ <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>
+
+ <p>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 <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?remote" name="/etc/remote">
+ 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>
+
+ <p>Then, list the phone numbers for the university in
+ <htmlurl url="http://www.freebsd.org/cgi/man.cgi?phones"
+ name="/etc/phones">:
+
+ <verb>
+ big-university 5551111
+ big-university 5551112
+ big-university 5551113
+ big-university 5551114
+ </verb>
+
+ <p><htmlurl url="http://www.freebsd.org/cgi/man.cgi?tip"
+ name="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
+ <htmlurl url="http://www.freebsd.org/cgi/man.cgi?tip" name="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.''
+
+ <p>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've seen only used on some terminal servers.
+
+ <p>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've pressed CTRL+A, <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?tip" name="tip"> ``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.
+
+ <p>Here's a sample .tiprc file perfect for Emacs users who need to
+ type CTRL+2 and CTRL+A a lot:
+
+ <verb>
+ force=^^
+ raisechar=^^
+ </verb>
+
+ <p>The ^^ is SHIFT+CTRL+6.
+
+ <sect1>
+ <heading>How can I do file transfers with <tt/tip/?</heading>
+
+ <p>If you're talking to another UNIX system, you can send and
+ receive files with <tt/~p/ (put) and <tt/~t/ (take). These
+ commands run <htmlurl url="http://www.freebsd.org/cgi/man.cgi?cat"
+ name="cat"> and <htmlurl url="http://www.freebsd.org/cgi/man.cgi?echo"
+ name="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>
+
+ <p>There's no error checking, so you probably should use another
+ protocol, like zmodem.
+
+ <sect1>
+ <heading>How can I run zmodem with <tt/tip/?</heading>
+
+ <p>First, install one of the zmodem programs from the ports
+ collection (such as one of the two from the comms category,
+ <htmlurl url="http://www.freebsd.org/cgi/ports.cgi?^lrzsz" name="lrzsz">
+ and <htmlurl url="http://www.freebsd.org/cgi/ports.cgi?^rzsz"
+ name="rzsz">).
+
+ <p>To receive files, start the sending program on the remote end.
+ Then, press enter and type ``<tt/~C rz/'' (or ``<tt/~C lrz/'' if
+ you installed lrzsz) to begin receiving them locally.
+
+ <p>To send files, start the receiving program on the remote end.
+ Then, press enter and type ``<tt/~C sz &lt;files&gt;/'' (or
+ ``<tt/~C lsz &lt;files&gt;/'') to send them to the
+ remote system.
+
+ <sect>
+ <heading>Miscellaneous Questions</heading>
+
+ <sect1>
+ <heading>
+ Why does FreeBSD consume far more swap space than Linux?
+ </heading>
+
+ <p>It doesn't. You might mean ``why does my swap seem full?''. If
+ that is what you really meant, it's because putting stuff in swap
+ rather than discarding it makes it faster to recover than if the
+ pager had to go through the file system to pull in clean
+ (unmodified) blocks from an executable.
+
+ <p>The actual amount of dirty pages that you can have in core at
+ once is not reduced; the clean pages are displaced as necessary.
+
+ <sect1>
+ <heading>
+ What is FreeBSD's a.out executable format, and why not ELF?
+ </heading>
+
+ <p>To understand why FreeBSD uses the <tt>a.out</tt> format, you must
+ first know a little about the 3 currently "dominant" executable
+ formats for UNIX:
+
+ <itemize>
<item><htmlurl url="http://www.freebsd.org/cgi/man.cgi?a.out(5)"
name="a.out">
+
<p>The oldest and `classic' unix object format. It uses a
short and compact header with a magic number at the beginning
- that's often used to characterize the format (see the
+ that's often used to characterize the format (see
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?a.out(5)"
name="a.out(5)"> for more details). It contains three loaded
segments: .text, .data, and .bss plus a symbol table and a
string table.
- </item>
-
<item><bf>COFF</bf>
<p>The SVR3 object format. The header now comprises a section
@@ -4509,465 +4591,458 @@ domain foo.bar.edu
commercial SYSV world (which has at least three ABIs: SVR4,
Solaris, SCO) does it hold true.
- FreeBSD tries to work around this problem somewhat by
+ <p>FreeBSD tries to work around this problem somewhat by
providing a utility for <em>branding</em> a known <tt/ELF/
executable with information about the ABI it's compliant with.
See the man page for
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?brandelf"
- name="brandelf"> for more information.</item>
- </itemize>
+ name="brandelf"> for more information.
+ </itemize>
- <p>FreeBSD comes from the "classic" camp and uses the
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?a.out(5)"
- name="a.out"> format, a technology tried and proven through
- many generations of BSD releases. Though it has also been possible
- for some time to build and run native <tt/ELF/ binaries (and
- kernels) on a FreeBSD system, no official "push" to switch to
- ELF as the default format has, as yet, been made. Why? Well,
- when the Linux camp made their painful transition to <tt/ELF/, it
- was not so much to flee the <tt/a.out/ executable format
- as it was their inflexible jump-table based shared library
- mechanism, which made the construction of shared libraries
- very difficult for vendors and developers alike. Since the <tt/ELF/
- tools available offered a solution to the shared library
- problem and were generally seen as "the way forward" anyway, the
- migration cost was accepted as necessary and the transition
- made.
-
- <p>In FreeBSD's case, it's not quite so simple since our shared
- library mechanism is based more closely on Sun's
- <tt>SunOS</tt>-style shared library mechanism and, as such, is very
- easy to use. The only thing we actually lack with <tt/a.out/
- which <tt/ELF/ would give us is cleaner support for C++ constructors
- and destructors, among other similarly esoteric things, and it
- simply hasn't become much of a problem yet (and there is quite
- a bit of C++ code in FreeBSD's source tree). Should that change,
- a migration may, at some point, be more seriously contemplated.
- </sect1>
-
- <sect1>
- <heading>Why doesn't chmod change the permissions on symlinks?</heading>
- <p>
- You have to use either ``<tt/-H/'' or ``<tt/-L/'' together with
- the ``<tt/-R/'' option to make this work. See the
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?chmod"
- name="chmod"> and
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?symlink"
- name="symlink"> man pages for more info.
-
- <bf/WARNING/ the ``<tt/-R/'' option does a <bf/RECURSIVE/
- <tt/chmod/. Be careful about specifying directories or symlinks
- to directories to <tt/chmod/. If you want to change the
- permissions of a directory referenced by a symlink, use
-
- <htmlurl url="http://www.freebsd.org/cgi/man.cgi?chmod"
- name="chmod"> without any options and follow the symlink with a
- trailing slash (``<tt>/</tt>''). For example, if ``<tt/foo/'' is
- a symlink to directory ``<tt/bar/'', and you want to change the
- permissions of ``<tt/foo/'' (actually ``<tt/bar/''), you would do
- something like:
- <verb>
- chmod 555 foo/
- </verb>
-
- With the trailing slash, <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?chmod"
- name="chmod"> will follow the symlink,
- ``<tt/foo/'', to change the permissions of the directory,
- ``<tt/bar/''.
- </sect1>
-
- <sect1>
- <heading>Why are login names <bf/still/ resticted to 8 characters</heading>
-
- <p>You'd think it'd be easy enough to change <bf/UT_NAMESIZE/ and rebuild
- the whole world, and everything would just work. Unfortunately there's
- scads of applications and utilities (including system tools) that have
- hard-coded small numbers (not always "8" or "9", but oddball ones
- like "15" and "20") in structures and buffers... and it would break
- Sun's NIS clients and no doubt cause other problems in interacting
- with other UNIX systems.
- </sect1>
-
- <sect1>
- <heading>Can I run DOS binaries under FreeBSD?</heading>
-
- <p>
- Not yet, though BSDI has just donated their <tt/rundos/ DOS emulation
- subsystem which we're now working on integrating and enhancing.
- Send mail to
- <url url="mailto:emulation@freebsd.org"
- name="The FreeBSD emulation discussion list">
- if you're interested in joining this effort!
-
- For now, there is a neat utility called
- <htmlurl url="http://www.freebsd.org/cgi/ports.cgi?^pcemu"
- name="pcemu"> in the
- ports collection which emulates an 8088 and enough BIOS services
- to run DOS text mode applications. It requires the X Window
- System (provided as XFree86 3.1.2).
-
- <sect1>
- <heading>What is this thing called ``<tt/sup/'', and how do I use it?</heading>
-
- <p>
- <htmlurl url="http://www.freebsd.org/cgi/ports.cgi?^sup"
- name="SUP">
- stands for Software Update Protocol, and was developed by CMU
- for keeping their development trees in sync. We used it to keep
- remote sites in sync with our central development sources.
-
- SUP is not bandwidth friendly, and has been retired. The current
- recommended method to keep your sources up to date is
- <url url="../handbook/cvsup.html" name="Handbook entry on CVSup">
-
- <sect1>
- <heading>How cool is FreeBSD?</heading>
- <p>
- Q. Has anyone done any temperature testing while running FreeBSD?
- I know Linux runs cooler than dos, but have never seen a mention of
- FreeBSD. It seems to run really hot.
- <p>
- A. No, but we have done numerous taste tests on blindfolded
- volunteers who have also had 250 micrograms of LSD-25
- administered beforehand. 35% of the volunteers said that FreeBSD
- tasted sort of orange, whereas Linux tasted like purple haze.
- Neither group mentioned any particular variances in temperature
- that I can remember. We eventually had to throw the results of
- this survey out entirely anyway when we found that too many
- volunteers were wandering out of the room during the tests, thus
- skewing the results. I think most of the volunteers are at Apple
- now, working on their new ``scratch and sniff'' GUI. It's a
- funny old business we're in!
-
- Seriously, both FreeBSD and Linux uses the ``<tt/HLT/'' (halt)
- instruction when the system is idle thus lowering its energy
- consumption and therefore the heat it generates. Also if you
- have APM (automatic power management) configured, then FreeBSD
- can also put the CPU into a low power mode.
-
- <sect1>
- <heading>Who's scratching in my memory banks??</heading>
- <p>
- Q. Is there anything "odd" that FreeBSD does when compiling the
- kernel which would cause the memory to make a scratchy sound? When
- compiling (and for a brief moment after recognizing the floppy drive
- upon startup, as well), a strange scratchy sound emanates from what
- appears to be the memory banks.
- <p>
- A. Yes! You'll see frequent references to ``daemons'' in the BSD
- documentation, and what most people don't know is that this
- refers to genuine, non-corporeal entities that now possess your
- computer. The scratchy sound coming from your memory is actually
- high-pitched whispering exchanged among the daemons as they best
- decide how to deal with various system administration tasks.
-
- If the noise gets to you, a good ``<tt>fdisk /mbr</tt>'' from DOS
- will get rid of them, but don't be surprised if they react
- adversely and try to stop you. In fact, if at any point during
- the exercise you hear the satanic voice of Bill Gates coming from
- the built-in speaker, take off running and don't ever look back!
- Freed from the counterbalancing influence of the BSD daemons, the
- twin demons of DOS and Windows are often able to re-assert total
- control over your machine to the eternal damnation of your soul.
- Given a choice, I think I'd prefer to get used to the scratchy
- noises, myself!
- </sect1>
-
-
- <sect>
- <heading>For serious FreeBSD hackers only</heading>
-
- <sect1>
- <heading>What's with all these SNAPshot, RELENG and RELEASE releases?</heading>
-
- <p>
- There are currently three active/semi-active branches in the FreeBSD
- <url url="http://www.freebsd.org/cgi/cvsweb.cgi" name="CVS Repository">:
-
- <itemize>
- <item><bf/RELENG_2_1_0/ AKA <bf/2.1-stable/ AKA <bf/"2.1 branch"/</item>
- <item><bf/RELENG_2_2/ AKA <bf/2.2-stable/ AKA <bf/"2.2 branch"/</item>
- <item><bf/HEAD/ AKA <bf/-current/ AKA <bf/3.0-current/</item>
- </itemize>
-
- <p><bf/HEAD/ is not an actual branch tag, like the other two, it's
- simply a symbolic constant for
- <em/"the current, non-branched development stream"/
- which we simply refer to as <bf/-current/.
-
- Right now, <bf/-current/ is the 3.0 development stream and the
- <bf/2.2-stable/ branch, <bf/RELENG_2_2/, forked off from
- <bf/-current/ in November 1996.
-
- The <bf/2.1-stable/ branch, <bf/RELENG_2_1_0/,departed -current in
- September of 1994.
-
- <sect1>
- <heading>How do I make my own custom release?<label id="custrel"></heading>
- <p>
- To make a release you need to do three things: First, you need to
- be running a kernel with the <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?vn"
- name="vn"> driver configured in. Add
- this to your kernel config file and build a new kernel:
-
- <verb>
-pseudo-device vn #Vnode driver (turns a file into a device)
- </verb>
-
- Second, you have to have the whole CVS repository at hand.
- To get this you can use
- <url url="../handbook/cvsup.html" name="CVSUP">
- but your tag value, if any, should be `.' and your release name
- should be cvs:
-
- <verb>
-*default prefix=/home/ncvs base=/a host=cvsup.FreeBSD.org release=cvs delete compress use-rel=suffix
-
-## Main Source Tree
-src-all
-src-eBones
-src-secure
-
-# Other stuff
-ports-all
-www
- </verb>
-
- Then run <tt/cvsup -g supfile/ to suck all the good bits into your
- box...
-
- Finally, you need a chunk of empty space to build into. Let's
- say it's in <tt>/some/big/filesystem</tt>, and from the example
- above you've got the CVS repository in <tt>/home/ncvs</tt>:
-
- <verb>
-setenv CVSROOT /home/ncvs # or export CVSROOT=/home/ncvs
-cd /usr/src/release
-make release BUILDNAME=3.0-MY-SNAP CHROOTDIR=/some/big/filesystem/release
- </verb>
-
- An entire release will be built in
- <tt>/some/big/filesystem/release</tt>
- and you will have a full FTP-type installation in
- <tt>/some/big/filesystem/release/R/ftp</tt>
- when you're done. If you want to build your SNAP along some other
- branch than -current, you can also add <tt/RELEASETAG=SOMETAG/ to
- the make release command line above, e.g. <tt/RELEASETAG=RELENG_2_2/
- would build an up-to-the- minute 2.2 GAMMA snapshot.
-
- <sect1>
- <heading>How do I create customized installation disks?</heading>
- <p>
- The entire process of creating installation disks and source and
- binary archives is automated by various targets in
- <tt>/usr/src/release/Makefile</tt>. The information there should
- be enough to get you started. However, it should be said that this
- involves doing a ``make world'' and will therefore take up a lot of
- time and disk space.
-
- <sect1>
- <heading>``make world'' clobbers my existing installed binaries.</heading>
-
- <p>
- Yes, this is the general idea; as its name might suggest,
- ``make world'' rebuilds every system binary from scratch, so
- you can be certain of having a clean and consistent
- environment at the end (which is why it takes so long).
- <p>
- If the environment variable <tt/DESTDIR/ is defined while running
- ``<tt/make world/'' or ``<tt/make install/'', the newly-created
- binaries will be deposited in a directory tree identical to the
- installed one, rooted at <tt>&dollar;&lcub;DESTDIR&rcub;</tt>.
- Some random combination of shared libraries modifications and
- program rebuilds can cause this to fail in ``<tt/make world/'',
- however.
-
-
- <sect1>
- <heading>When my system boots, it says ``(bus speed defaulted)''.</heading>
-
- <p>
- The Adaptec 1542 SCSI host adapters allow the user to configure
- their bus access speed in software. Previous versions of the
- 1542 driver tried to determine the fastest usable speed and set
- the adapter to that. We found that this breaks some users'
- systems, so you now have to define the ``<tt/TUNE&lowbar;1542/'' kernel
- configuration option in order to have this take place. Using it
- on those systems where it works may make your disks run faster,
- but on those systems where it doesn't, your data could be
- corrupted.
-
- <sect1>
- <heading>Can I follow current with limited Internet access?<label id="ctm"></heading>
-
- <p>
- Yes, you can do this <tt /without/ downloading the whole source tree
- by using the
- <url
- url="../handbook/ctm.html"
- name="CTM facility.">
-
- <sect1>
- <heading>How did you split the distribution up into 240k files?</heading>
-
- <p>
- Newer BSD based systems have a ``<tt/-b/'' option to split that
- allows them to split files on arbitrary byte boundaries.
-
- Here is an example from <tt>/usr/src/Makefile</tt>.
-
- <verb>
- bin-tarball:
- (cd $&lcub;DISTDIR&rcub;; \
- tar cf - . \
- gzip --no-name -9 -c | \
- split -b 240640 - \
- $&lcub;RELEASEDIR&rcub;/tarballs/bindist/bin_tgz.)
- </verb>
-
- <sect1>
- <heading>I've written a kernel extension, who do I send it to?</heading>
- <p>
- Please take a look at:
-
- <url url="../handbook/contrib.html"
- name="The Handbook entry on how to submit code.">
-
- And thanks for the thought!
-
-
- <sect1>
- <heading>How are Plug N Play ISA cards detected and initialised?</heading>
- <p>
- By: Frank Durda IV <tt>&lt;uhclem@nemesis.lonestar.org&gt;</tt>
-
- In a nutshell, there a few I/O ports that all of the PnP boards
- respond to when the host asks if anyone is out there. So when
- the PnP probe routine starts, he asks if there are any PnP boards
- present, and all the PnP boards respond with their model &num; to
- a I/O read of the same port, so the probe routine gets a wired-OR
- ``yes'' to that question. At least one bit will be on in that
- reply. Then the probe code is able to cause boards with board
- model IDs (assigned by Microsoft/Intel) lower than X to go
- ``off-line''. It then looks to see if any boards are still
- responding to the query. If the answer was ``<tt/0/'', then
- there are no boards with IDs above X. Now probe asks if there
- are any boards below ``X''. If so, probe knows there are boards
- with a model numbers below X. Probe then asks for boards greater
- than X-(limit/4) to go off-line. If repeats the query. By
- repeating this semi-binary search of IDs-in-range enough times,
- the probing code will eventually identify all PnP boards present
- in a given machine with a number of iterations that is much lower
- than what 2^64 would take.
-
- The IDs are two 32-bit fields (hence 2&circ;64) + 8 bit checksum.
- The first 32 bits are a vendor identifier. They never come out
- and say it, but it appears to be assumed that different types of
- boards from the same vendor could have different 32-bit vendor
- ids. The idea of needing 32 bits just for unique manufacturers
- is a bit excessive.
-
- The lower 32 bits are a serial &num;, ethernet address, something
- that makes this one board unique. The vendor must never produce
- a second board that has the same lower 32 bits unless the upper
- 32 bits are also different. So you can have multiple boards of
- the same type in the machine and the full 64 bits will still be
- unique.
-
- The 32 bit groups can never be all zero. This allows the
- wired-OR to show non-zero bits during the initial binary search.
-
- Once the system has identified all the board IDs present, it will
- reactivate each board, one at a time (via the same I/O ports),
- and find out what resources the given board needs, what interrupt
- choices are available, etc. A scan is made over all the boards
- to collect this information.
-
- This info is then combined with info from any ECU files on the
- hard disk or wired into the MLB BIOS. The ECU and BIOS PnP
- support for hardware on the MLB is usually synthetic, and the
- peripherals don't really do genuine PnP. However by examining
- the BIOS info plus the ECU info, the probe routines can cause the
- devices that are PnP to avoid those devices the probe code cannot
- relocate.
-
- Then the PnP devices are visited once more and given their I/O,
- DMA, IRQ and Memory-map address assignments. The devices will
- then appear at those locations and remain there until the next
- reboot, although there is nothing that says you can't move them
- around whenever you want.
-
- There is a lot of oversimplification above, but you should get
- the general idea.
-
- Microsoft took over some of the primary printer status ports to
- do PnP, on the logic that no boards decoded those addresses for
- the opposing I/O cycles. I found a genuine IBM printer board
- that did decode writes of the status port during the early PnP
- proposal review period, but MS said ``tough''. So they do a
- write to the printer status port for setting addresses, plus that
- use that address + <tt/0x800/, and a third I/O port for reading
- that can be located anywhere between <tt/0x200/ and <tt/0x3ff/.
-
- <sect1>
- <heading>Will FreeBSD ever support other architectures?</heading>
-
- <p>
- Several different groups have expressed interest in working on
- multi-architecture support for FreeBSD and some people are
- currently working on a port of FreeBSD to the ALPHA, with the
- cooperation of DEC. For general discussion on new architectures,
- use the <tt>&lt;platforms@FreeBSD.ORG&gt;</tt>
- <ref id="mailing" name="mailing list">.
-
- <sect1>
- <heading>I need a major number for a device driver I've written.</heading>
-
- <p>
- This depends on whether or not you plan on making the driver
- publicly available. If you do, then please send us a copy of the
- driver source code, plus the appropriate modifications to
- <tt>files.i386</tt>, a sample configuration file entry, and the
- appropriate <htmlurl
- url="http://www.freebsd.org/cgi/man.cgi?MAKEDEV"
- name="MAKEDEV"> code to create any special files
- your device uses. If you do not, or are unable to because of
- licensing restrictions, then character major number 32 and block
- major number 8 have been reserved specifically for this purpose;
- please use them. In any case, we'd appreciate hearing about your
- driver on <tt>&lt;hackers@FreeBSD.ORG&gt;</tt>.
-
- <sect>
- <heading>ACKNOWLEDGMENTS</heading>
+ <p>FreeBSD comes from the "classic" camp and uses the
+ <htmlurl url="http://www.freebsd.org/cgi/man.cgi?a.out(5)"
+ name="a.out"> format, a technology tried and proven through
+ many generations of BSD releases. Though it has also been possible
+ for some time to build and run native <tt/ELF/ binaries (and
+ kernels) on a FreeBSD system, no official "push" to switch to
+ ELF as the default format has, as yet, been made. Why? Well,
+ when the Linux camp made their painful transition to <tt/ELF/, it
+ was not so much to flee the <tt/a.out/ executable format
+ as it was their inflexible jump-table based shared library
+ mechanism, which made the construction of shared libraries
+ very difficult for vendors and developers alike. Since the <tt/ELF/
+ tools available offered a solution to the shared library
+ problem and were generally seen as "the way forward" anyway, the
+ migration cost was accepted as necessary and the transition
+ made.
+
+ <p>In FreeBSD's case, it's not quite so simple since our shared
+ library mechanism is based more closely on Sun's
+ <tt>SunOS</tt>-style shared library mechanism and, as such, is very
+ easy to use. The only thing we actually lack with <tt/a.out/
+ which <tt/ELF/ would give us is cleaner support for C++ constructors
+ and destructors, among other similarly esoteric things, and it
+ simply hasn't become much of a problem yet (and there is quite
+ a bit of C++ code in FreeBSD's source tree). Should that change,
+ a migration may, at some point, be more seriously contemplated.
- <p>
- <verb>
- If you see a problem with this FAQ, or wish to submit an entry,
- please mail us at <FAQ@FreeBSD.ORG>. We appreciate your
- feedback, and cannot make this a better FAQ without your help!
+ <sect1>
+ <heading>Why doesn't chmod change the permissions on symlinks?</heading>
+
+ <p>You have to use either ``<tt/-H/'' or ``<tt/-L/'' together with
+ the ``<tt/-R/'' option to make this work. See the <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?chmod" name="chmod"> and
+ <htmlurl url="http://www.freebsd.org/cgi/man.cgi?symlink" name="symlink">
+ man pages for more info.
+
+ <p><bf/WARNING/ the ``<tt/-R/'' option does a <bf/RECURSIVE/
+ <tt/chmod/. Be careful about specifying directories or symlinks
+ to directories to <tt/chmod/. If you want to change the
+ permissions of a directory referenced by a symlink, use
+ <htmlurl url="http://www.freebsd.org/cgi/man.cgi?chmod" name="chmod">
+ without any options and follow the symlink with a trailing slash
+ (``<tt>/</tt>''). For example, if ``<tt/foo/'' is a symlink to
+ directory ``<tt/bar/'', and you want to change the permissions of
+ ``<tt/foo/'' (actually ``<tt/bar/''), you would do something like:
+ <verb>
+ chmod 555 foo/
+ </verb>
- FreeBSD Core Team
- </verb>
+ <p>With the trailing slash, <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?chmod" name="chmod"> will
+ follow the symlink, ``<tt/foo/'', to change the permissions of the
+ directory, ``<tt/bar/''.
+
+ <sect1>
+ <heading>
+ Why are login names <bf/still/ resticted to 8 characters
+ </heading>
+
+ <p>You'd think it'd be easy enough to change <bf/UT_NAMESIZE/ and rebuild
+ the whole world, and everything would just work. Unfortunately there's
+ scads of applications and utilities (including system tools) that have
+ hard-coded small numbers (not always "8" or "9", but oddball ones
+ like "15" and "20") in structures and buffers... and it would break
+ Sun's NIS clients and no doubt cause other problems in interacting
+ with other UNIX systems.
+
+ <sect1>
+ <heading>Can I run DOS binaries under FreeBSD?</heading>
+
+ <p>Not yet, though BSDI has just donated their <tt/rundos/ DOS emulation
+ subsystem which we're now working on integrating and enhancing. Send
+ mail to <url url="mailto:emulation@freebsd.org"
+ name="The FreeBSD emulation discussion list"> if you're interested in
+ joining this effort!
+
+ <p>For now, there is a neat utility called
+ <htmlurl url="http://www.freebsd.org/cgi/ports.cgi?^pcemu" name="pcemu">
+ in the ports collection which emulates an 8088 and enough BIOS services
+ to run DOS text mode applications. It requires the X Window
+ System (provided as XFree86).
+
+ <sect1>
+ <heading>
+ What is this thing called ``<tt/sup/'', and how do I use it?
+ </heading>
+
+ <p><htmlurl url="http://www.freebsd.org/cgi/ports.cgi?^sup" name="SUP">
+ stands for Software Update Protocol, and was developed by CMU
+ for keeping their development trees in sync. We used it to keep
+ remote sites in sync with our central development sources.
+
+ <p>SUP is not bandwidth friendly, and has been retired. The current
+ recommended method to keep your sources up to date is
+ <url url="../handbook/cvsup.html" name="Handbook entry on CVSup">
+
+ <sect1>
+ <heading>How cool is FreeBSD?</heading>
+
+ <p>Q. Has anyone done any temperature testing while running FreeBSD?
+ I know Linux runs cooler than dos, but have never seen a mention of
+ FreeBSD. It seems to run really hot.
+
+ <p>A. No, but we have done numerous taste tests on blindfolded
+ volunteers who have also had 250 micrograms of LSD-25
+ administered beforehand. 35% of the volunteers said that FreeBSD
+ tasted sort of orange, whereas Linux tasted like purple haze.
+ Neither group mentioned any particular variances in temperature
+ that I can remember. We eventually had to throw the results of
+ this survey out entirely anyway when we found that too many
+ volunteers were wandering out of the room during the tests, thus
+ skewing the results. I think most of the volunteers are at Apple
+ now, working on their new ``scratch and sniff'' GUI. It's a
+ funny old business we're in!
+
+ <p>Seriously, both FreeBSD and Linux uses the ``<tt/HLT/'' (halt)
+ instruction when the system is idle thus lowering its energy
+ consumption and therefore the heat it generates. Also if you
+ have APM (automatic power management) configured, then FreeBSD
+ can also put the CPU into a low power mode.
+
+ <sect1>
+ <heading>Who's scratching in my memory banks??</heading>
+
+ <p>Q. Is there anything "odd" that FreeBSD does when compiling the
+ kernel which would cause the memory to make a scratchy sound? When
+ compiling (and for a brief moment after recognizing the floppy drive
+ upon startup, as well), a strange scratchy sound emanates from what
+ appears to be the memory banks.
+
+ <p>A. Yes! You'll see frequent references to ``daemons'' in the BSD
+ documentation, and what most people don't know is that this
+ refers to genuine, non-corporeal entities that now possess your
+ computer. The scratchy sound coming from your memory is actually
+ high-pitched whispering exchanged among the daemons as they best
+ decide how to deal with various system administration tasks.
+
+ <p>If the noise gets to you, a good ``<tt>fdisk /mbr</tt>'' from DOS
+ will get rid of them, but don't be surprised if they react
+ adversely and try to stop you. In fact, if at any point during
+ the exercise you hear the satanic voice of Bill Gates coming from
+ the built-in speaker, take off running and don't ever look back!
+ Freed from the counterbalancing influence of the BSD daemons, the
+ twin demons of DOS and Windows are often able to re-assert total
+ control over your machine to the eternal damnation of your soul.
+ Given a choice, I think I'd prefer to get used to the scratchy
+ noises, myself!
+
+ <sect>
+ <heading>For serious FreeBSD hackers only</heading>
+
+ <sect1>
+ <heading>
+ What's with all these SNAPshot, RELENG and RELEASE releases?
+ </heading>
+
+ <p>There are currently three active/semi-active branches in the FreeBSD
+ <url url="http://www.freebsd.org/cgi/cvsweb.cgi" name="CVS Repository">:
+
+ <itemize>
+ <item><bf/RELENG_2_1_0/ AKA <bf/2.1-stable/ AKA <bf/"2.1 branch"/
+ <item><bf/RELENG_2_2/ AKA <bf/2.2-stable/ AKA <bf/"2.2 branch"/
+ <item><bf/HEAD/ AKA <bf/-current/ AKA <bf/3.0-current/
+ </itemize>
+
+ <p><bf/HEAD/ is not an actual branch tag, like the other two, it's
+ simply a symbolic constant for
+ <em/"the current, non-branched development stream"/ which we simply
+ refer to as <bf/-current/.
+
+ <p>Right now, <bf/-current/ is the 3.0 development stream and the
+ <bf/2.2-stable/ branch, <bf/RELENG_2_2/, forked off from
+ <bf/-current/ in November 1996.
+
+ <p>The <bf/2.1-stable/ branch, <bf/RELENG_2_1_0/, departed -current in
+ September of 1994.
+
+ <sect1>
+ <heading>
+ How do I make my own custom release?<label id="custrel">
+ </heading>
+
+ <p>To make a release you need to do three things: First, you need to
+ be running a kernel with the <htmlurl
+ url="http://www.freebsd.org/cgi/man.cgi?vn" name="vn"> driver configured
+ in. Add this to your kernel config file and build a new kernel:
+
+ <verb>
+ pseudo-device vn #Vnode driver (turns a file into a device)
+ </verb>
+
+ <p>Second, you have to have the whole CVS repository at hand.
+ To get this you can use <url url="../handbook/cvsup.html" name="CVSUP">
+ but your tag value, if any, should be `.' and your release name
+ should be cvs:
+
+ <verb>
+ *default prefix=/home/ncvs
+ *default base=/a
+ *default host=cvsup.FreeBSD.org
+ *default release=cvs
+ *default delete compress use-rel-suffix
+
+ ## Main Source Tree
+ src-all
+ src-eBones
+ src-secure
+
+ # Other stuff
+ ports-all
+ www
+ doc-all
+ </verb>
+
+ <p>Then run <tt/cvsup -g supfile/ to suck all the good bits onto your
+ box...
+
+ <p>Finally, you need a chunk of empty space to build into. Let's
+ say it's in <tt>/some/big/filesystem</tt>, and from the example
+ above you've got the CVS repository in <tt>/home/ncvs</tt>:
+
+ <verb>
+ setenv CVSROOT /home/ncvs # or export CVSROOT=/home/ncvs
+ cd /usr/src/release
+ make release BUILDNAME=3.0-MY-SNAP CHROOTDIR=/some/big/filesystem/release
+ </verb>
+
+ <p>An entire release will be built in
+ <tt>/some/big/filesystem/release</tt> and you will have a full FTP-type
+ installation in <tt>/some/big/filesystem/release/R/ftp</tt> when you're
+ done. If you want to build your SNAP along some other branch than
+ -current, you can also add <tt/RELEASETAG=SOMETAG/ to
+ the make release command line above, e.g. <tt/RELEASETAG=RELENG_2_2/
+ would build an up-to-the- minute 2.2 GAMMA snapshot.
+
+ <sect1>
+ <heading>How do I create customized installation disks?</heading>
+
+ <p>The entire process of creating installation disks and source and
+ binary archives is automated by various targets in
+ <tt>/usr/src/release/Makefile</tt>. The information there should
+ be enough to get you started. However, it should be said that this
+ involves doing a ``make world'' and will therefore take up a lot of
+ time and disk space.
+
+ <sect1>
+ <heading>``make world'' clobbers my existing installed binaries.</heading>
+
+ <p>Yes, this is the general idea; as its name might suggest,
+ ``make world'' rebuilds every system binary from scratch, so you can be
+ certain of having a clean and consistent environment at the end (which
+ is why it takes so long).
+
+ <p>If the environment variable <tt/DESTDIR/ is defined while running
+ ``<tt/make world/'' or ``<tt/make install/'', the newly-created
+ binaries will be deposited in a directory tree identical to the
+ installed one, rooted at <tt>&dollar;&lcub;DESTDIR&rcub;</tt>.
+ Some random combination of shared libraries modifications and
+ program rebuilds can cause this to fail in ``<tt/make world/'',
+ however.
+
+ <sect1>
+ <heading>
+ When my system boots, it says ``(bus speed defaulted)''.
+ </heading>
+
+ <p>The Adaptec 1542 SCSI host adapters allow the user to configure
+ their bus access speed in software. Previous versions of the
+ 1542 driver tried to determine the fastest usable speed and set
+ the adapter to that. We found that this breaks some users'
+ systems, so you now have to define the ``<tt/TUNE&lowbar;1542/'' kernel
+ configuration option in order to have this take place. Using it
+ on those systems where it works may make your disks run faster,
+ but on those systems where it doesn't, your data could be
+ corrupted.
+
+ <sect1>
+ <heading>
+ Can I follow current with limited Internet access?<label id="ctm">
+ </heading>
+
+ <p>Yes, you can do this <tt /without/ downloading the whole source tree
+ by using the <url url="../handbook/ctm.html" name="CTM facility.">
+
+ <sect1>
+ <heading>How did you split the distribution up into 240k files?</heading>
+
+ <p>Newer BSD based systems have a ``<tt/-b/'' option to split that
+ allows them to split files on arbitrary byte boundaries.
+
+ <p>Here is an example from <tt>/usr/src/Makefile</tt>.
+
+ <verb>
+ bin-tarball:
+ (cd $&lcub;DISTDIR&rcub;; \
+ tar cf - . \
+ gzip --no-name -9 -c | \
+ split -b 240640 - \
+ $&lcub;RELEASEDIR&rcub;/tarballs/bindist/bin_tgz.)
+ </verb>
+
+ <sect1>
+ <heading>I've written a kernel extension, who do I send it to?</heading>
+
+ <p>Please take a look at <url url="../handbook/contrib.html"
+ name="The Handbook entry on how to submit code.">
+
+ <p>And thanks for the thought!
+
+ <sect1>
+ <heading>How are Plug N Play ISA cards detected and initialised?</heading>
+
+ <p>By: <url url="mailto:uhclem@nemesis.lonestar.org"
+ name="Frank Durda IV">
+
+ <p>In a nutshell, there a few I/O ports that all of the PnP boards
+ respond to when the host asks if anyone is out there. So when
+ the PnP probe routine starts, he asks if there are any PnP boards
+ present, and all the PnP boards respond with their model &num; to
+ a I/O read of the same port, so the probe routine gets a wired-OR
+ ``yes'' to that question. At least one bit will be on in that
+ reply. Then the probe code is able to cause boards with board
+ model IDs (assigned by Microsoft/Intel) lower than X to go
+ ``off-line''. It then looks to see if any boards are still
+ responding to the query. If the answer was ``<tt/0/'', then
+ there are no boards with IDs above X. Now probe asks if there
+ are any boards below ``X''. If so, probe knows there are boards
+ with a model numbers below X. Probe then asks for boards greater
+ than X-(limit/4) to go off-line. If repeats the query. By
+ repeating this semi-binary search of IDs-in-range enough times,
+ the probing code will eventually identify all PnP boards present
+ in a given machine with a number of iterations that is much lower
+ than what 2^64 would take.
+
+ <p>The IDs are two 32-bit fields (hence 2&circ;64) + 8 bit checksum.
+ The first 32 bits are a vendor identifier. They never come out
+ and say it, but it appears to be assumed that different types of
+ boards from the same vendor could have different 32-bit vendor
+ ids. The idea of needing 32 bits just for unique manufacturers
+ is a bit excessive.
+
+ <p>The lower 32 bits are a serial &num;, ethernet address, something
+ that makes this one board unique. The vendor must never produce
+ a second board that has the same lower 32 bits unless the upper
+ 32 bits are also different. So you can have multiple boards of
+ the same type in the machine and the full 64 bits will still be
+ unique.
+
+ <p>The 32 bit groups can never be all zero. This allows the
+ wired-OR to show non-zero bits during the initial binary search.
+
+ <p>Once the system has identified all the board IDs present, it will
+ reactivate each board, one at a time (via the same I/O ports),
+ and find out what resources the given board needs, what interrupt
+ choices are available, etc. A scan is made over all the boards
+ to collect this information.
+
+ <p>This info is then combined with info from any ECU files on the
+ hard disk or wired into the MLB BIOS. The ECU and BIOS PnP
+ support for hardware on the MLB is usually synthetic, and the
+ peripherals don't really do genuine PnP. However by examining
+ the BIOS info plus the ECU info, the probe routines can cause the
+ devices that are PnP to avoid those devices the probe code cannot
+ relocate.
+
+ <p>Then the PnP devices are visited once more and given their I/O,
+ DMA, IRQ and Memory-map address assignments. The devices will
+ then appear at those locations and remain there until the next
+ reboot, although there is nothing that says you can't move them
+ around whenever you want.
+
+ <p>There is a lot of oversimplification above, but you should get
+ the general idea.
+
+ <p>Microsoft took over some of the primary printer status ports to
+ do PnP, on the logic that no boards decoded those addresses for
+ the opposing I/O cycles. I found a genuine IBM printer board
+ that did decode writes of the status port during the early PnP
+ proposal review period, but MS said ``tough''. So they do a
+ write to the printer status port for setting addresses, plus that
+ use that address + <tt/0x800/, and a third I/O port for reading
+ that can be located anywhere between <tt/0x200/ and <tt/0x3ff/.
+
+ <sect1>
+ <heading>Will FreeBSD ever support other architectures?</heading>
+
+ <p>Several different groups have expressed interest in working on
+ multi-architecture support for FreeBSD and some people are
+ currently working on a port of FreeBSD to the ALPHA, with the
+ cooperation of DEC. For general discussion on new architectures,
+ use the <tt>&lt;platforms@FreeBSD.ORG&gt;</tt>
+ <ref id="mailing" name="mailing list">.
+
+ <sect1>
+ <heading>I need a major number for a device driver I've written.</heading>
+
+ <p>This depends on whether or not you plan on making the driver
+ publicly available. If you do, then please send us a copy of the
+ driver source code, plus the appropriate modifications to
+ <tt>files.i386</tt>, a sample configuration file entry, and the
+ appropriate <htmlurl url="http://www.freebsd.org/cgi/man.cgi?MAKEDEV"
+ name="MAKEDEV"> code to create any special files your device uses. If
+ you do not, or are unable to because of licensing restrictions, then
+ character major number 32 and block major number 8 have been reserved
+ specifically for this purpose; please use them. In any case, we'd
+ appreciate hearing about your driver on
+ <tt>&lt;hackers@FreeBSD.ORG&gt;</tt>.
+
+ <sect>
+ <heading>ACKNOWLEDGMENTS</heading>
+
+ <p>
+ <verb>
+ If you see a problem with this FAQ, or wish to submit an entry,
+ please mail us at <FAQ@FreeBSD.ORG>. We appreciate your
+ feedback, and cannot make this a better FAQ without your help!
+
+
+ FreeBSD Core Team
+ </verb>
+
+ <descrip>
+ <tag/Jordan Hubbard/
+ Occasional fits of FAQ-reshuffling and updating.
+
+ <tag/Doug White/
+ Services above and beyond the call of duty on freebsd-questions
+
+ <tag/Joerg Wunsch/
+ Services above and beyond the call of duty on Usenet
+
+ <tag/Garrett Wollman/
+ Networking and formatting
+
+ <tag/Jim Lowe/
+ Multicast information
+
+ <tag/Peter da Silva/
+ FreeBSD FAQ typing machine slavey
+
+ <tag/The FreeBSD Team/
+ Kvetching, moaning, submitting data
+ </descrip>
- <descrip>
- <tag/Jordan Hubbard/
- Occasional fits of FAQ-reshuffling and updating.
- <tag/Doug White/
- Services above and beyond the call of duty on freebsd-questions
- <tag/Joerg Wunsch/
- Services above and beyond the call of duty on Usenet
- <tag/Garrett Wollman/
- Networking and formatting
- <tag/Jim Lowe/
- Multicast information
- <tag/Peter da Silva/
- FreeBSD FAQ typing machine slavey
- <tag/The FreeBSD Team/
- Kvetching, moaning, submitting data
- </descrip>
-
- And to any others we've forgotten, apologies and heartfelt thanks!
+ <p>And to any others we've forgotten, apologies and heartfelt thanks!
</article>