aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--el_GR.ISO8859-7/books/faq/Makefile32
-rw-r--r--el_GR.ISO8859-7/books/faq/book.sgml11796
2 files changed, 11828 insertions, 0 deletions
diff --git a/el_GR.ISO8859-7/books/faq/Makefile b/el_GR.ISO8859-7/books/faq/Makefile
new file mode 100644
index 0000000000..160d11646b
--- /dev/null
+++ b/el_GR.ISO8859-7/books/faq/Makefile
@@ -0,0 +1,32 @@
+#
+# $FreeBSD$
+#
+# Μορφοποίηση του FreeBSD FAQ
+#
+# %SOURCE% en_US.ISO8859-1/books/faq/Makefile
+# %SRCID% 1.12
+#
+
+MAINTAINER=doc@FreeBSD.org
+
+DOC?= book
+
+FORMATS?= html-split html
+
+INSTALL_COMPRESSED?= gz
+INSTALL_ONLY_COMPRESSED?=
+
+WITH_BIBLIOXREF_TITLE?=YES
+
+#
+# Η λίστα SRCS περιέχει όλα τα SGML αρχεία που αποτελούν μέρη του κειμένου.
+# Αλλαγές σε οποιοδήποτε από αυτά τα αρχεία προκαλούν rebuild.
+#
+
+# SGML content
+SRCS= book.sgml
+
+URL_RELPREFIX?= ../../../..
+DOC_PREFIX?= ${.CURDIR}/../../..
+
+.include "${DOC_PREFIX}/share/mk/doc.project.mk"
diff --git a/el_GR.ISO8859-7/books/faq/book.sgml b/el_GR.ISO8859-7/books/faq/book.sgml
new file mode 100644
index 0000000000..d6d6cd2038
--- /dev/null
+++ b/el_GR.ISO8859-7/books/faq/book.sgml
@@ -0,0 +1,11796 @@
+<!--
+
+ Συχνές Ερωτήσεις για το FreeBSD
+
+ The FreeBSD Greek Documentation Project
+
+ %SOURCE% en_US.ISO8859-1/books/faq/book.sgml
+ %SRCID% 1.807
+
+-->
+
+<!DOCTYPE book PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
+<!ENTITY % books.ent PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Books Entity Set//EL">
+%books.ent;
+<!ENTITY bibliography SYSTEM "../../../share/sgml/bibliography.sgml">
+]>
+
+<book>
+ <bookinfo>
+ <title>Συχνές Ερωτήσεις για το &os; 5.X και 6.X</title>
+
+ <corpauthor>Η Ομάδα Τεκμηρίωσης του &os;</corpauthor>
+
+ <pubdate>$FreeBSD$</pubdate>
+
+ <copyright>
+ <year>1995</year>
+ <year>1996</year>
+ <year>1997</year>
+ <year>1998</year>
+ <year>1999</year>
+ <year>2000</year>
+ <year>2001</year>
+ <year>2002</year>
+ <year>2003</year>
+ <year>2004</year>
+ <year>2005</year>
+ <year>2006</year>
+ <year>2007</year>
+ <holder>Η Ομάδα Τεκμηρίωσης του &os;</holder>
+ </copyright>
+
+ &bookinfo.legalnotice;
+
+ <legalnotice id="trademarks" role="trademarks">
+ &tm-attrib.freebsd;
+ &tm-attrib.3com;
+ &tm-attrib.adobe;
+ &tm-attrib.creative;
+ &tm-attrib.cvsup;
+ &tm-attrib.ibm;
+ &tm-attrib.ieee;
+ &tm-attrib.intel;
+ &tm-attrib.iomega;
+ &tm-attrib.linux;
+ &tm-attrib.microsoft;
+ &tm-attrib.mips;
+ &tm-attrib.netscape;
+ &tm-attrib.opengroup;
+ &tm-attrib.oracle;
+ &tm-attrib.sgi;
+ &tm-attrib.sparc;
+ &tm-attrib.sun;
+ &tm-attrib.usrobotics;
+ &tm-attrib.xfree86;
+ &tm-attrib.general;
+ </legalnotice>
+
+ <abstract>
+ <para>Το κείμενο αυτό αποτελεί τις Συχνές Ερωτήσεις (FAQ) για τις
+ εκδόσεις 5.Χ και 6.Χ του &os;. Όλες οι καταχωρήσεις θεωρείται ότι
+ σχετίζονται με την έκδοση &os; 5.X και μεταγενέστερες, εκτός
+ αν αναφέρεται διαφορετικά. Αν ενδιαφέρεστε να μας βοηθήσετε σε αυτό
+ το έργο, στείλτε ένα email στην &a.doc;. Η τελευταία έκδοση αυτού
+ του κειμένου είναι πάντοτε διαθέσιμη στην
+ <ulink
+ url="http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/faq/index.html">δικτυακή τοποθεσία του &os;</ulink>. Μπορείτε επίσης να την κατεβάσετε ως
+ ένα μεγάλο <ulink url="book.html">HTML</ulink> αρχείο μέσω HTTP ή
+ ακόμα και ως απλό κείμενο, &postscript;, PDF, κλπ. από τον <ulink
+ url="ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/">εξυπηρετητή FTP του
+ &os;</ulink>. Μπορείτε ακόμα να <ulink
+ url="&url.base;/search/index.html">ψάξετε στις Συχνές Ερωτήσεις
+ </ulink>.</para>
+ </abstract>
+ </bookinfo>
+
+ <chapter id="introduction">
+ <title>Εισαγωγή</title>
+
+ <para>Καλώς ήλθατε στις Συχνές Ερωτήσεις (FAQ) του &os; 5.X-6.X!</para>
+
+ <para>Όπως συνηθίζεται στα FAQs του Usenet, το κείμενο αυτό έχει σκοπό
+ να καλύψει τις πιο συνηθισμένες ερωτήσεις που αφορούν το λειτουργικό
+ σύστημα &os; (και φυσικά να τις απαντήσει!). Αν και ο αρχικός σκοπός
+ των FAQs ήταν η εξοικονόμηση εύρους ζώνης του διαδικτύου από την
+ επαναλαμβανόμενη απάντηση των ίδιων ερωτήσεων, τα FAQs αναγνωρίστηκαν
+ τελικά ως πολύτιμες πηγές πληροφοριών.</para>
+
+ <para>Έχει καταβληθεί κάθε προσπάθεια ώστε αυτό το FAQ να γίνει όσο πιο
+ πληροφοριακό γίνεται. Αν θέλετε να κάνετε κάποιες υποδείξεις σχετικά
+ με τρόπους βελτίωσης του, σας παρακαλούμε στείλτε μας ένα email στη
+ &a.doc;.</para>
+
+ <qandaset>
+ <qandaentry>
+ <question id="what-is-FreeBSD">
+ <para>Τι είναι το &os;;</para>
+ </question>
+
+ <answer>
+ <para>Εν συντομία, το &os; είναι ένα λειτουργικό σύστημα τύπου
+ &unix;&nbsp;για τις αρχιτεκτονικές Alpha/AXP, AMD64 και &intel;
+ EM64T, &i386; IA-64, PC-98, και &ultrasparc; και βασίζεται στην
+ έκδοση <quote>4.4BSD-Lite</quote> του Πανεπιστημίου του Berkeley,
+ με κάποιες βελτιώσεις από το <quote>4.4BSD-Lite2</quote>. Βασίζεται
+ επίσης έμμεσα στην εργασία μεταφοράς (port) του
+ <quote>Net/2</quote> (επίσης από το Berkeley) που έγινε από τον
+ William Jolitz, αν και δεν έχει μείνει σχεδόν τίποτα από τον αρχικό
+ κώδικα του 386BSD. Πληρέστερη περιγραφή για το τι είναι το &os; και
+ πως μπορεί να λειτουργήσει για εσάς, μπορείτε να βρείτε στην
+ <ulink url="&url.base;/index.html">δικτυακή τοποθεσία του &os;
+ </ulink>.</para>
+
+ <para>Το &os; χρησιμοποιείται από εταιρίες, παροχείς υπηρεσιών
+ Internet (ISPs), φοιτητές και οικιακούς χρήστες, ερευνητές,
+ και επαγγελματίες των υπολογιστών σε όλο τον κόσμο, στη δουλειά
+ τους, στην εκπαίδευση και για αναψυχή.</para>
+
+ <para>Για περισσότερες λεπτομέρειες σχετικά με το &os;, παρακαλούμε
+ διαβάστε το
+ <ulink url="&url.books.handbook;/index.html">Εγχειρίδιο του &os;
+ </ulink>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="FreeBSD-goals">
+ <para>Ποιος είναι ο σκοπός του &os; Project;</para>
+ </question>
+
+ <answer>
+ <para>Ο σκοπός του &os; Project είναι να παρέχει λογισμικό το οποίο
+ να μπορεί να χρησιμοποιηθεί για οποιουσδήποτε σκοπούς και χωρίς
+ περιορισμούς. Πολλοί από εμάς έχουμε επενδύσει σημαντικά στον
+ κώδικα (και στο ίδιο το έργο) και σίγουρα δεν θα μας πείραζε
+ και κάποια χρηματική αποζημίωση που και που, αλλά σίγουρα δεν
+ επιμένουμε σε αυτό. Πιστεύουμε ότι η πρώτη και βασικότερη
+ <quote>αποστολή</quote> μας είναι να παρέχουμε κώδικα σε όλους,
+ για οποιοδήποτε πιθανό σκοπό, έτσι ώστε ο κώδικας μας να έχει
+ την ευρύτερη δυνατή χρήση και επιτυγχάνει το μεγαλύτερο δυνατό
+ όφελος. Πιστεύουμε ότι αυτός είναι ένας από τους σημαντικότερους
+ σκοπούς του Ελεύθερου Λογισμικού και τον υποστηρίζουμε θερμά.
+ </para>
+
+ <para>Ο κώδικας, στο δέντρο του πηγαίου μας κώδικα, ο οποίος
+ εμπίπτει στη άδεια χρήσης
+ <ulink url="http://www.FreeBSD.org/copyright/COPYING">GNU
+ General Public License (GPL)</ulink> ή <ulink
+ url="http://www.FreeBSD.org/copyright/COPYING.LIB">GNU
+ Library General Public License (LGPL)</ulink> έχει περισσότερους
+ περιορισμούς, αλλά τουλάχιστον όσο αφορά την υποχρέωση
+ ελεύθερης πρόσβασης αντί για το αντίθετο που είναι και το πλέον
+ συνηθισμένο. Λόγω της αυξημένης πολυπλοκότητας που μπορεί να
+ προκύψει από την εμπορική χρήση λογισμικού GPL, προσπαθούμε γενικά
+ να αντικαταστήσουμε αυτό το λογισμικό με αντίστοιχο υπό την
+ πιο χαλαρή <ulink
+ url="http://www.FreeBSD.org/copyright/freebsd-license.html">
+ άδεια &os;</ulink>, όπου αυτό είναι δυνατό.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="bsd-license-restrictions">
+ <para>Υπάρχουν κάποιοι περιορισμοί στην άδεια του &os;;</para>
+ </question>
+
+ <answer>
+ <para>Ναι. Οι περιορισμοί αυτοί δεν ελέγχουν πως χρησιμοποιείτε τον
+ κώδικα, αλλά μόνο πως μεταχειρίζεστε το ίδιο το &os; Project. Αν
+ σας ενδιαφέρει σοβαρά η άδεια, διαβάστε την
+ <ulink
+ url="http://www.FreeBSD.org/copyright/freebsd-license.html">
+ εδώ</ulink>. Για τους απλώς περίεργους, η άδεια περιληπτικά
+ γράφει:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Μην ισχυρισθείτε ότι γράψατε αυτό το λογισμικό.</para>
+ </listitem>
+
+ <listitem>
+ <para>Μη μας μηνύσετε αν χαλάσει.</para>
+ </listitem>
+ </itemizedlist>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="replace-current-OS">
+ <para>Μπορεί το &os; να αντικαταστήσει το τρέχον λειτουργικό
+ μου σύστημα;</para>
+ </question>
+
+ <answer>
+ <para>Για τους περισσότερους ανθρώπους, ναι. Αλλά αυτή η απάντηση
+ δεν μπορεί να δοθεί τόσο ξερά.</para>
+
+ <para>Οι περισσότεροι άνθρωποι δεν χρησιμοποιούν στην πραγματικότητα
+ κάποιο λειτουργικό. Χρησιμοποιούν εφαρμογές. Το &os; είναι
+ σχεδιασμένο να παρέχει ένα στιβαρό και πλήρων δυνατοτήτων
+ περιβάλλον για εφαρμογές. Υποστηρίζει μεγάλη ποικιλία από
+ φυλλομετρητές, σουίτες γραφείου, προγράμματα ηλεκτρονικού
+ ταχυδρομείου, προγράμματα γραφικών, γλώσσες προγραμματισμού,
+ εξυπηρετητές δικτύου, και ουσιαστικά οτιδήποτε άλλο μπορεί να
+ θελήσετε. Μπορείτε να διαχειριστείτε τις περισσότερες από αυτές
+ τις εφαρμογές μέσω της
+ <ulink url="http://www.FreeBSD.org/ports/">Συλλογής των Ports
+ </ulink>.</para>
+
+ <para>Αν χρειάζεται να χρησιμοποιήσετε μια εφαρμογή που είναι
+ διαθέσιμη σε ένα μόνο λειτουργικό σύστημα, τότε απλά δεν μπορείτε
+ να αντικαταστήσετε το σύστημα αυτό. Υπάρχουν ωστόσο καλές
+ πιθανότητες να βρείτε μια αντίστοιχη εφαρμογή στο &os;. Αν
+ θέλετε ένα εξυπηρετητή για το γραφείο σας ή για το Internet,
+ ένα αξιόπιστο σταθμό εργασίας, ή απλώς την ικανότητα να κάνετε
+ την εργασίας σας χωρίς διακοπές, το &os; είναι σχεδόν σίγουρο ότι
+ θα κάνει ότι χρειάζεστε. Πολλοί χρήστες υπολογιστών σε όλο τον
+ κόσμο, περιλαμβανομένων τόσο αρχάριων όσο και προχωρημένων
+ διαχειριστών συστημάτων &unix;, χρησιμοποιούν το &os; ως το
+ μοναδικό τους desktop σύστημα.</para>
+
+ <para>Αν έρχεστε στο &os; από κάποιο άλλο &unix; περιβάλλον, ξέρετε
+ ήδη τα περισσότερα από αυτά που χρειάζεστε. Αν ωστόσο η εμπειρία
+ σας προέρχεται από λειτουργικά συστήματα με γραφικό περιβάλλον,
+ όπως τα &windows; και οι παλιότερες εκδόσεις του &macos;,
+ θα πρέπει να επενδύσετε, όπως είναι αναμενόμενο, επιπλέον χρόνο
+ για να εξοικειωθείτε με τον &unix; τρόπο εκτέλεσης των εργασιών.
+ Αυτό το FAQ, καθώς και το
+ <ulink
+ url="&url.books.handbook;/index.html">Εγχειρίδιο του &os;</ulink>
+ αποτελούν εξαιρετικά αναγνώσματα για να ξεκινήσετε.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="why-called-FreeBSD">
+ <para>Γιατί ονομάζεται &os;;</para>
+ </question>
+
+ <answer>
+ <itemizedlist>
+ <listitem>
+ <para>Μπορεί να χρησιμοποιηθεί χωρίς χρέωση, ακόμα και για
+ εμπορικούς σκοπούς.</para>
+ </listitem>
+
+ <listitem>
+ <para>Διατίθεται ο πλήρης πηγαίος κώδικας για το λειτουργικό
+ σύστημα, και με τους ελάχιστους δυνατούς περιορισμούς σχετικά
+ με τη χρήση του, τη διανομή του και την ενσωμάτωση του σε άλλα
+ έργα (εμπορικά ή μη).</para>
+ </listitem>
+
+ <listitem>
+ <para>Οποιοσδήποτε έχει να προτείνει μια βελτίωση ή διόρθωση,
+ είναι ελεύθερος να υποβάλλει τον κώδικα του, ο οποίος και
+ θα προστεθεί στο δέντρο πηγαίου κώδικα (υπό μια-δυο βασικές
+ προφανείς προϋποθέσεις).</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Αξίζει να αναφέρουμε ότι η λέξη <quote>ελεύθερο</quote>
+ χρησιμοποιείται εδώ με δύο τρόπους, ο ένας σημαίνει
+ <quote>δωρεάν</quote>, και ο άλλος σημαίνει
+ <quote>μπορείτε να το κάνετε ότι θέλετε</quote>. Εκτός από
+ ένα-δύο πράγματα που <emphasis>δεν</emphasis> μπορείτε να κάνετε
+ με τον κώδικα του &os;, για παράδειγμα να ισχυρισθείτε ότι τον
+ γράψατε, μπορείτε στα αλήθεια να τον κάνετε ότι θέλετε.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="differences-to-other-bsds">
+ <para>Ποιες είναι οι διαφορές μεταξύ του &os; και του NetBSD,
+ OpenBSD και των άλλων BSD συστημάτων ανοικτού κώδικα;</para>
+ </question>
+
+ <answer>
+ <para>Ο James Howard έχει γράψει μια καλή εξήγηση της ιστορίας
+ και των διαφορών μεταξύ των διάφορων έργων για το
+ <ulink url="http://www.daemonnews.org/">DaemonNews</ulink>,
+ στο άρθρο που ονομάζεται <ulink
+ url="http://ezine.daemonnews.org/200104/bsd_family.html">Η
+ Οικογένεια Λειτουργικών BSD</ulink> και το οποίο εμβαθύνει
+ ιδιαίτερα σε αυτή την ερώτηση.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="latest-version">
+ <para>Ποια είναι η τελευταία έκδοση του &os;;</para>
+ </question>
+
+<!--
+ Η ερώτηση αυτή έχει μπει για να αποσαφηνίζεται το γεγονός ότι υπάρχουν
+ πλέον πολλαπλές νέες εκδόσεις του FreeBSD
+-->
+
+ <answer>
+ <para>Αυτή τη στιγμή στην ανάπτυξη του &os;, υπάρχουν δύο παράλληλοι
+ κλάδοι. Και από τους δύο αυτούς κλάδους, προκύπτουν νέες εκδόσεις.
+ Η σειρά των εκδόσεων 5.Χ δημιουργείται από τον κλάδο
+ <emphasis>5-STABLE</emphasis> ενώ η σειρά των εκδόσεων 6.Χ
+ από τον <emphasis>6-STABLE</emphasis>.
+
+ <para>Μέχρι και την έκδοση της 5.3, η σειρά 4.Χ ήταν γνωστή ως
+ <emphasis>-STABLE</emphasis>. Ωστόσο από την 5.3 και μετά, η
+ σειρά 4.Χ θεωρείται ότι εισέρχεται στη φάση της
+ <quote>εκτεταμένης υποστήριξης</quote> και θα λαμβάνει μόνο
+ διορθώσεις για σοβαρά προβλήματα, όπως π.χ. αυτά που αναφέρονται
+ σε κενά ασφαλείας. Θα υπάρξουν περισσότερες εκδόσεις από την
+ σειρά <emphasis>5-STABLE</emphasis>, αλλά και αυτή θεωρείται
+ <quote>παρωχημένη</quote> και η περισσότερη τρέχουσα εργασία θα
+ αποτελεί τμήμα μόνο της σειράς <emphasis>6-STABLE</emphasis>.
+
+ <para>Η έκδοση <ulink
+ url="ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/&rel.current;-RELEASE/">&rel.current;</ulink>
+ είναι η πλέον τελευταία της σειράς
+ <emphasis>6-STABLE</emphasis> και έγινε στις
+ &rel.current.date;. Η έκδοση <ulink
+ url="ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/&rel2.current;-RELEASE/">&rel2.current;</ulink>
+ είναι η πλέον τελευταία της σειράς
+ <emphasis>5-STABLE</emphasis> και έγινε στις
+ &rel2.current.date;.</para>
+
+ <para>Εν συντομία, η σειρά <emphasis>-STABLE</emphasis> προορίζεται
+ για τους ISPs, τους εταιρικούς χρήστες καθώς και οποιοδήποτε
+ χρήστη θέλει σταθερότητα και μίνιμουμ αριθμό αλλαγών σε σχέση με
+ τα νέα (και πιθανόν ασταθή) χαρακτηριστικά που εμφανίζονται στη
+ σειρά <emphasis>-CURRENT</emphasis>. Εκδόσεις μπορεί να γίνονται
+ από οποιοδήποτε κλάδο, αλλά η έκδοση <emphasis>-CURRENT</emphasis>
+ θα πρέπει να χρησιμοποιείται μόνο αν είστε προετοιμασμένοι να
+ χειριστείτε τα ενδεχομένως πιο ασταθή χαρακτηριστικά της (σε σχέση
+ πάντα με την αντίστοιχη <emphasis>-STABLE</emphasis>).</para>
+
+ <para>Νέες εκδόσεις εμφανίζονται <link linkend="release-freq">κάθε
+ μερικούς μήνες</link>. Αν και πολλοί επιλέγουν να διατηρούνται
+ ενημερωμένοι και πιο συχνά μέσω του πηγαίου κώδικα του &os;
+ (δείτε τις ερωτήσεις στο
+ <link linkend="current">&os.current;</link> και <link
+ linkend="stable">&os.stable;</link>), οι εκδόσεις είναι κάτι
+ παραπάνω από υποχρέωση, καθώς ο πηγαίος κώδικας είναι περισσότερο
+ ένας κινούμενος στόχος.</para>
+
+ <para>Περισσότερες πληροφορίες για τις εκδόσεις του &os; μπορείτε
+ να βρείτε στην
+ <ulink
+ url="http://www.FreeBSD.org/releng/index.html">Σελίδα
+ Προετοιμασίας Εκδόσεων</ulink> στην δικτυακή τοποθεσία του &os;.
+ </para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="current">
+ <para>Τι είναι το &os;-CURRENT;</para>
+ </question>
+
+ <answer>
+ <para>Το <ulink
+ url="&url.books.handbook;/cutting-edge.html#CURRENT">&os.current;</ulink>
+ είναι η υπό εξέλιξη έκδοση του λειτουργικού συστήματος, το οποίο
+ με τον καιρό θα εξελιχθεί στο νέο κλάδο &os.stable;. Για το λόγο
+ αυτό, παρουσιάζει συνήθως ενδιαφέρον μόνο σε όσους ασχολούνται με
+ την ανάπτυξη κώδικα του συστήματος και σε σκληροπυρηνικούς
+ χομπίστες. Δείτε το
+ <ulink
+ url="&url.books.handbook;/cutting-edge.html#CURRENT">σχετικό
+ τμήμα</ulink> στο <ulink
+ url="&url.books.handbook;/index.html">εγχειρίδιο</ulink> για
+ λεπτομέρειες σχετικά με το -CURRENT.</para>
+
+ <para>Αν δεν είστε εξοικειωμένος με το λειτουργικό σύστημα, ή δεν
+ είστε ικανός να αναγνωρίσετε τη διαφορά μεταξύ ενός πραγματικού
+ και ενός προσωρινού προβλήματος, μάλλον δεν θα πρέπει να
+ χρησιμοποιήσετε το &os.current;. Ο κλάδος αυτός ορισμένες φορές
+ εξελίσσεται πολύ γρήγορα, και μπορεί ακόμα και η μεταγλώττιση του
+ να μην είναι δυνατή για ολόκληρες μέρες κάθε φορά. Όσοι
+ χρησιμοποιούν το &os.current; αναμένεται να είναι ικανοί να
+ αναλύουν τα όποια προβλήματα και να τα αναφέρουν, μόνο αν θεωρούν
+ ότι πρόκειται για λάθη και όχι για
+ <quote>μικροπροβλήματα</quote>. Ερωτήσεις του τύπου
+ <quote>το make world παράγει κάποια σφάλματα σχετικά με τα
+ groups</quote> στη λίστα ταχυδρομείου -CURRENT, μπορεί να
+ αντιμετωπιστούν περιφρονητικά.</para>
+
+ <para>Κάθε μέρα, παράγονται <ulink
+ url="&url.base;/snapshots/">στιγμιότυπα
+ </ulink> εκδόσεων που βασίζονται στην τρέχουσα κατάσταση των
+ κλάδων -CURRENT και -STABLE. Γίνονται κατά καιρούς διαθέσιμες
+ οι εκδόσεις κάποιων στιγμιότυπων. Οι στόχοι πίσω από κάθε έκδοση
+ στιγμιότυπου είναι:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Ο έλεγχος της τελευταίας έκδοσης του λογισμικού
+ εγκατάστασης.</para>
+ </listitem>
+
+ <listitem>
+ <para>Να δώσει τη δυνατότητα εύκολης εγκατάστασης σε όσους
+ επιθυμούν να εκτελούν το -CURRENT ή το -STABLE αλλά δεν έχουν
+ το χρόνο ή το εύρος ζώνης να το παρακολουθούν μέρα με τη μέρα.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Η διατήρηση ενός σταθερού σημείου αναφοράς σχετικά με τον
+ πηγαίο κώδικα, σε περίπτωση που χαλάσουμε κάτι πολύ άσχημα
+ αργότερα. (Αν και λόγω της χρήσης του CVS είναι δύσκολο να
+ συμβεί κάτι πραγματικά τόσο φρικτό :)</para>
+ </listitem>
+
+ <listitem>
+ <para>Να εξασφαλιστεί ότι κάθε νέο χαρακτηριστικό και διόρθωση
+ που χρειάζεται έλεγχο, θα έχει το μεγαλύτερο δυνατό κοινό
+ πιθανών δοκιμαστών.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Δεν υπάρχει ποτέ ο ισχυρισμός ότι κάποιο στιγμιότυπο -CURRENT
+ μπορεί να θεωρηθεί <quote>τελικής ποιότητας</quote> για
+ οποιοδήποτε σκοπό. Αν θέλετε να εκτελείτε ένα πλήρως σταθερό και
+ δοκιμασμένο σύστημα, θα πρέπει να μείνετε στις πλήρεις εκδόσεις ή
+ να χρησιμοποιείτε τα στιγμιότυπα -STABLE.</para>
+
+ <para>Εκδόσεις στιγμιοτύπων είναι άμεσα διαθέσιμες από <ulink
+ url="&url.base;/snapshots/">εδώ</ulink>.</para>
+
+ <para>Κατά μέσο όρο, για κάθε κλάδο που βρίσκεται σε ενεργή
+ ανάπτυξη, παράγεται στιγμιότυπο καθημερινά.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="stable">
+ <para>Ποια είναι η έννοια του &os;-STABLE;</para>
+ </question>
+
+ <answer>
+ <para>Όταν κυκλοφόρησε το &os; 2.0.5, η ανάπτυξη του &os; χωρίστηκε
+ σε δύο κλάδους. Ό ένας κλάδος ονομάστηκε
+ <ulink url="&url.books.handbook;/current-stable.html#STABLE">
+ -STABLE</ulink>, και ο άλλος <ulink
+ url="&url.books.handbook;/current-stable.html#CURRENT">-CURRENT</ulink>.
+ Το &os;-STABLE προορίζεται για Παροχείς Υπηρεσιών Internet (ISPs)
+ και γενικά εμπορικές χρήσεις, όπου οι απότομες αλλαγές και τα
+ τυχόν πειραματικά χαρακτηριστικά είναι γενικά ανεπιθύμητα. Στον
+ κλάδο αυτό ενσωματώνονται μόνο καλά δοκιμασμένες διορθώσεις και
+ άλλες μικρές πρόσθετες αλλαγές. Από την άλλη μεριά, το
+ &os;-CURRENT βρίσκεται σε μια μοναδική αδιάκοπη γραμμή ανάπτυξης
+ από την εποχή της κυκλοφορίας της έκδοσης 2.0, οδηγώντας προς
+ την έκδοση 6.2-RELEASE αλλά και μετά από αυτή. Λίγο πριν τη
+ κυκλοφορία της έκδοσης 6.0-RELEASE, δημιουργήθηκε ο κλάδος
+ 6-STABLE και το &os.current; έγινε 7-CURRENT. Για περισσότερες
+ πληροφορίες δείτε
+ <quote><ulink url="&url.articles.releng;/release-proc.html#REL-BRANCH">
+ Προετοιμασία Εκδόσεων του &os;:
+ Δημιουργία του Κλάδου Έκδοσης</ulink></quote>.</para>
+
+ <para>Ο κλάδος 2.2-STABLE εγκαταλείφθηκε με την κυκλοφορία της
+ έκδοσης 2.2.8. Ο κλάδος 3-STABLE τελείωσε με την κυκλοφορία της
+ έκδοσης 3.5.1, που ήταν και η τελευταία της σειράς εκδόσεων 3.X.
+ Ο κλάδος 4-STABLE τελείωσε με την κυκλοφορία της έκδοσης 4.11, της
+ τελευταίας της σειράς 4.X. Οι μόνες αλλαγές που γίνονται κατά
+ βάση σε κάθε ένα από αυτούς τους κλάδους, έχουν σχέση με
+ διορθώσεις σε κενά ασφαλείας. Η υποστήριξη των κλάδων 5-STABLE θα
+ συνεχιστεί για κάποιο διάστημα, ωστόσο θα επικεντρωθεί
+ περισσότερο σε διορθώσεις κενών ασφαλείας και άλλων σοβαρών
+ προβλημάτων.</para>
+
+ <para>Το &rel.current;-STABLE είναι ο κλάδος που βρίσκεται υπό
+ ενεργή ανάπτυξη. Η τελευταία κυκλοφορία που βασίζεται στον κλάδο
+ &rel.current;-STABLE είναι η &rel.current;-RELEASE, και έγινε
+ στις &rel.current.date;.</para>
+
+ <para>Ο κλάδος 7-CURRENT είναι ο κλάδος -CURRENT που αναπτύσσεται
+ αυτή τη στιγμή ενεργά ώστε να δημιουργηθεί η νέα γενιά του &os;.
+ Δείτε <link linkend="current">Τι είναι το &os;-CURRENT;</link>
+ για περισσότερες πληροφορίες σχετικά με αυτό τον κλάδο.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="release-freq">
+ <para>Κάθε πότε γίνονται επίσημες κυκλοφορίες του &os;;</para>
+ </question>
+
+ <answer>
+ <para>H &a.re; δίνει στην κυκλοφορία μια καινούρια έκδοση του &os;
+ κάθε περίπου τέσσερις μήνες, κατά μέσο όρο. Οι ημερομηνίες
+ κυκλοφορίας ανακοινώνονται αρκετό καιρό πριν, ώστε όσοι δουλεύουν
+ πάνω στο σύστημα να ξέρουν πότε οι εργασίες τους πρέπει να έχουν
+ ολοκληρωθεί και δοκιμαστεί. Πριν από κάθε κυκλοφορία, προηγείται
+ μια περίοδος δοκιμών, ώστε να εξασφαλιστεί ότι η προσθήκη νέων
+ χαρακτηριστικών δεν έχει αρνητικές επιπτώσεις στη σταθερότητα
+ της έκδοσης. Πολλοί χρήστες θεωρούν αυτό το είδος της προσοχής
+ ένα από τα καλύτερα πράγματα σχετικά με το &os;, αν και η αναμονή
+ ως ότου φτάσουν όλα τα ωραία νέα χαρακτηριστικά το -STABLE μπορεί
+ να γίνει λίγο εκνευριστική.</para>
+
+ <para>Περισσότερες πληροφορίες σχετικά με τη διαδικασία κυκλοφορίας
+ (περιλαμβανομένου και ενός χρονοδιαγράμματος επικείμενων
+ κυκλοφοριών) μπορούν να βρεθούν στις σελίδες
+ <ulink
+ url="http://www.FreeBSD.org/releng/index.html">προετοιμασίας
+ εκδόσεων</ulink> στη δικτυακή τοποθεσία του &os;.</para>
+
+ <para>Για τους πιο ενθουσιώδεις, υπάρχουν καθημερινά στιγμιότυπα
+ (binary snapshots) όπως αναφέρθηκε πιο πάνω.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="responsible">
+ <para>Ποιος είναι υπεύθυνος για το &os;</para>
+ </question>
+
+ <answer>
+ <para>Οι βασικές αποφάσεις που αφορούν το &os; Project, όπως η
+ συνολική κατεύθυνση του έργου και ποιος επιτρέπεται να προσθέσει
+ πηγαίο κώδικα στο δέντρο, παίρνονται από την
+ <ulink
+ url="&url.base;/administration.html#t-core">βασική ομάδα
+ (core team)</ulink> που αποτελείται από 9 άτομα. Υπάρχει μια
+ ακόμα μεγαλύτερη ομάδα με περισσότερα από 350 άτομα που
+ ονομάζονται
+ <ulink
+ url="&url.articles.contributors;/article.html#STAFF-COMMITTERS">
+ διαπράκτες (committers)</ulink>
+ και οι οποίοι έχουν την έγκριση να κάνουν απευθείας αλλαγές στο
+ δέντρο πηγαίου κώδικα του &os;.</para>
+
+ <para>Ωστόσο οι περισσότερες σημαντικές αλλαγές συζητούνται από
+ πριν στις <link linkend="mailing">λίστες ηλεκτρονικού
+ ταχυδρομείου</link>, και δεν υπάρχουν περιορισμοί σχετικά με το
+ ποιοι λαμβάνουν μέρος σε αυτές τις συζητήσεις.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="where-get">
+ <para>Που μπορώ να προμηθευτώ το &os;;</para>
+ </question>
+
+ <answer>
+ <para>Κάθε σημαντική έκδοση του &os; είναι διαθέσιμη μέσω ανώνυμου
+ FTP από τον <ulink url="ftp://ftp.FreeBSD.org/pub/FreeBSD/">
+ διακομιστή FTP του &os;</ulink>:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Η τελευταία κυκλοφορία που βασίζεται στο 6-STABLE,
+ &rel.current;-RELEASE μπορεί να βρεθεί στον κατάλογο
+ <ulink url="ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/&rel.current;-RELEASE/">&rel.current;-RELEASE</ulink>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Εκδόσεις που βασίζονται σε<ulink
+ url="&url.base;/snapshots/">
+ Στιγμιότυπα</ulink> γίνονται καθημερινά από τους κλάδους
+ <link linkend="current">-CURRENT</link> και
+ <link linkend="stable">-STABLE</link>, και εξυπηρετούν κατά
+ βάση όσους ασχολούνται με την ανάπτυξη και τον έλεγχο των
+ τελευταίας γενιάς προγραμμάτων.</para>
+ </listitem>
+
+ <listitem>
+ <para>Η τελευταία κυκλοφορία που βασίζεται στον κλάδο 5-STABLE
+ ,η &rel2.current;-RELEASE, μπορεί να βρεθεί στον κατάλογο
+ <ulink url="ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/&rel2.current;-RELEASE/">&rel2.current;-RELEASE</ulink>.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Πληροφορίες σχετικά με τη διάθεση του &os; σε CD, DVD και άλλα
+ μέσα μπορούν να βρεθούν
+ <ulink url="&url.books.handbook;/mirrors.html">στο Εγχειρίδιο
+ </ulink>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="access-pr">
+ <para>Πως μπορώ να έχω πρόσβαση στη Βάση Δεδομένων με τις
+ Αναφορές Προβλημάτων;</para>
+ </question>
+
+ <answer>
+ <para>Μπορείτε να κάνετε αναζητήσεις στη βάση δεδομένων με τις
+ αναφορές προβλημάτων μέσω της
+ <ulink
+ url="http://www.FreeBSD.org/cgi/query-pr-summary.cgi?query">
+ διεπαφής αναζητήσεων στο Web</ulink>.</para>
+
+ <para>Η εντολή &man.send-pr.1; μπορεί να χρησιμοποιηθεί για την
+ υποβολή αναφορών προβλημάτων, καθώς και αιτήσεων για αλλαγές,
+ μέσω ηλεκτρονικού ταχυδρομείου. Εναλλακτικά, μπορείτε να
+ χρησιμοποιήσετε την αντίστοιχη δυνατότητα
+ <ulink url="http://www.freebsd.org/send-pr.html">υποβολής
+ αναφορών προβλημάτων μέσω της διεπαφής web</ulink> με τη βοήθεια
+ ενός προγράμματος φυλλομετρητή.</para>
+
+ <para>Πριν υποβάλετε μια αναφορά προβλήματος, παρακαλούμε διαβάστε
+ το
+ <ulink url="&url.articles.problem-reports;/article.html">Γράφοντας
+ Αναφορές Προβλημάτων για το &os;</ulink>, ένα άρθρο για το πως
+ να γράφετε καλές αναφορές προβλημάτων.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="other-info-sources">
+ <para>Τι άλλες πηγές πληροφοριών υπάρχουν;</para>
+ </question>
+
+ <answer>
+ <para>Παρακαλούμε ελέγξτε τη λίστα της <ulink
+ url="http://www.FreeBSD.org/docs.html">Τεκμηρίωσης</ulink>
+ στην κύρια δικτυακή τοποθεσία του <ulink
+ url="http://www.FreeBSD.org">&os;</ulink>.</para>
+ </answer>
+ </qandaentry>
+ </qandaset>
+ </chapter>
+
+ <chapter id="support">
+ <title>Τεκμηρίωση και Υποστήριξη</title>
+
+ <qandaset>
+ <qandaentry>
+ <question id="books">
+ <para>Ποια καλά βιβλία υπάρχουν σχετικά με το &os;;</para>
+ </question>
+
+ <answer>
+ <para>Το Project παράγει μια μεγάλη γκάμα τεκμηρίωσης που διατίθεται
+ online από τον παρακάτω σύνδεσμο:
+ <ulink url="http://www.FreeBSD.org/docs.html"></ulink>. Τα ίδια
+ αυτά έγγραφα είναι διαθέσιμα και ως πακέτα τα οποία μπορείτε να
+ εγκαταστήσετε εύκολα στο &os; σύστημα σας. Περισσότερες
+ λεπτομέρειες σχετικά με τα πακέτα τεκμηρίωσης, θα βρείτε στις
+ ακόλουθες παραγράφους.</para>
+
+ <para>Επιπρόσθετα, θα βρείτε και άλλα συνιστώμενα βιβλία στην
+ Βιβλιογραφία στο τέλος αυτού του FAQ, και του Εγχειριδίου.
+ </para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="doc-formats">
+ <para>Είναι διαθέσιμη η τεκμηρίωση και σε άλλες μορφές, όπως απλό
+ κείμενο (ASCII) ή &postscript;;</para>
+ </question>
+
+ <answer>
+ <para>Ναι. Η τεκμηρίωση είναι διαθέσιμη σε πλήθος διαφορετικών
+ μορφών και τρόπων συμπίεσεης, στο διακομιστή FTP του &os;, στον
+ κατάλογο <ulink
+ url="ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/">/pub/FreeBSD/doc/</ulink>.</para>
+
+ <para>Η τεκμηρίωση είναι κατηγοριοποιημένη με διάφορους τρόπους.
+ Αυτοί περιλαμβάνουν:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Το όνομα του εγγράφου, όπως π.χ. <literal>faq</literal>, ή
+ <literal>handbook</literal>.</para>
+ </listitem>
+
+ <listitem>
+ <para>H γλώσσα και η κωδικοποίηση του κειμένου. Αυτά βασίζονται
+ στα ονόματα που έχουν δοθεί στις τοπικές ρυθμίσεις και που
+ μπορείτε να βρείτε στον κατάλογο
+ <filename>/usr/share/locale</filename> στο &os; σύστημα σας.
+ Οι τρέχουσες γλώσσεις και κωδικοποιήσεις που έχουμε διαθέσιμες
+ αυτή τη στιγμή στην τεκμηρίωση είναι οι παρακάτω:</para>
+
+ <informaltable frame="none" pgwide="1">
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>Όνομα</entry>
+
+ <entry>Ερμηνεία</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry><literal>en_US.ISO8859-1</literal></entry>
+
+ <entry>Αγγλικά ΗΠΑ</entry>
+ </row>
+
+ <row>
+ <entry><literal>bn_BD.ISO10646-1</literal></entry>
+
+ <entry>Bengali (ή Bangla)</entry>
+ </row>
+
+ <row>
+ <entry><literal>da_DK.ISO8859-1</literal></entry>
+
+ <entry>Δανέζικα</entry>
+ </row>
+
+ <row>
+ <entry><literal>de_DE.ISO8859-1</literal></entry>
+
+ <entry>Γερμανικά</entry>
+ </row>
+
+ <row>
+ <entry><literal>es_ES.ISO8859-1</literal></entry>
+
+ <entry>Ισπανικά</entry>
+ </row>
+
+ <row>
+ <entry><literal>fr_FR.ISO8859-1</literal></entry>
+
+ <entry>Γαλλικά</entry>
+ </row>
+
+ <row>
+ <entry><literal>hu_HU.ISO8859-2</literal></entry>
+
+ <entry>Ουγγαρέζικα</entry>
+ </row>
+
+ <row>
+ <entry><literal>it_IT.ISO8859-15</literal></entry>
+
+ <entry>Ιταλικά</entry>
+ </row>
+
+ <row>
+ <entry><literal>ja_JP.eucJP</literal></entry>
+
+ <entry>Γιαπωνέζικα (κωδικοποίηση EUC)</entry>
+ </row>
+
+ <row>
+ <entry><literal>mn_MN.UTF-8</literal></entry>
+
+ <entry>Μογγολικά (κωδικοποίηση UTF-8)</entry>
+ </row>
+
+ <row>
+ <entry><literal>nl_NL.ISO8859-1</literal></entry>
+
+ <entry>Ολλανδικά</entry>
+ </row>
+
+ <row>
+ <entry><literal>pl_PL.ISO8859-2</literal></entry>
+
+ <entry>Πολωνικά</entry>
+ </row>
+
+ <row>
+ <entry><literal>pt_BR.ISO8859-1</literal></entry>
+
+ <entry>Πορτογαλλικά (Βραζιλία)</entry>
+ </row>
+
+ <row>
+ <entry><literal>ru_RU.KOI8-R</literal></entry>
+
+ <entry>Ρώσσικα (κωδικοποίηση KOI8-R)</entry>
+ </row>
+
+ <row>
+ <entry><literal>sr_YU.ISO8859-2</literal></entry>
+
+ <entry>Σέρβικα</entry>
+ </row>
+
+ <row>
+ <entry><literal>tr_TR.ISO8859-9</literal></entry>
+
+ <entry>Τούρκικα</entry>
+ </row>
+
+ <row>
+ <entry><literal>zh_CN.GB2312</literal></entry>
+
+ <entry>Απλοποιημένα Κινέζικα (κωδικοποίηση GB2312)
+ </entry>
+ </row>
+
+ <row>
+ <entry><literal>zh_TW.Big5</literal></entry>
+
+ <entry>Παραδοσιακά Κινέζικα (κωδικοποίηση Big5)</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <note>
+ <para>Κάποια έγγραφα μπορεί να μην είναι διαθέσιμα σε όλες
+ τις γλώσσες.</para>
+ </note>
+ </listitem>
+
+ <listitem>
+ <para>Τη μορφή του εγγράφου. Παράγουμε τεκμηρίωση σε πλήθος
+ διαφορετικών μορφών εξόδου. Κάθε μορφή έχει τα δικά της
+ πλεονεκτήματα και μειονεκτήματα. Κάποιες μορφές είναι
+ περισσότερο κατάλληλες για διάβασμα online, ενώ άλλες
+ δίνουν πιο καλαίσθητο αποτέλεσμα όταν εκτυπωθούν. Η διάθεση
+ της τεκμηρίωσης σε όλες αυτές τις μορφές εξασφαλίζει ότι οι
+ αναγνώστες μας θα μπορούν να διαβάσουν τα τμήματα που τους
+ ενδιαφέρουν, είτε στην οθόνη τους, είτε αφού τα εκτυπώσουν.
+ Οι διαθέσιμες αυτή τη στιγμή μορφές είναι:</para>
+
+ <informaltable frame="none" pgwide="1">
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>Μορφή</entry>
+
+ <entry>Ερμηνεία</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry><literal>html-split</literal></entry>
+
+ <entry>Συλλογή μικρών, συνδεμένων μεταξύ τους, αρχείων
+ HTML.</entry>
+ </row>
+
+ <row>
+ <entry><literal>html</literal></entry>
+
+ <entry>Ένα μεγάλο HTML αρχείο που περιέχει ολόκληρο το
+ έγγραφο.</entry>
+ </row>
+
+ <row>
+ <entry><literal>pdb</literal></entry>
+
+ <entry>Μορφή βάσης δεδομένων για το Palm Pilot, για
+ χρήση με το πρόγραμμα ανάγνωσης
+ <ulink url="http://www.iSilo.com/">iSilo</ulink>.
+ </entry>
+ </row>
+
+ <row>
+ <entry><literal>pdf</literal></entry>
+
+ <entry>Μορφή κειμένου PDF της Adobe.</entry>
+ </row>
+
+ <row>
+ <entry><literal>ps</literal></entry>
+
+ <entry>&postscript;</entry>
+ </row>
+
+ <row>
+ <entry><literal>rtf</literal></entry>
+
+ <entry>Μορφή Εμπλουτισμένου Κειμένου της Microsoft
+ <footnote><para>Οι αριθμοί σελίδων δεν ανανεώνονται
+ αυτόματα όταν φορτώνεται αυτή τη μορφή εγγράφου στο
+ Word. Πιέστε
+ <keycombo
+ action="simul"><keycap>CTRL</keycap><keycap>A</keycap></keycombo>,
+ <keycombo
+ action="simul"><keycap>CTRL</keycap><keycap>END</keycap></keycombo>,
+ <keycap>F9</keycap> μετά τη φόρτωση του κειμένου για
+ την ανανέωση των αριθμών σελίδων.</para>
+ </footnote>
+ </entry>
+ </row>
+
+ <row>
+ <entry><literal>txt</literal></entry>
+
+ <entry>Απλό κείμενο</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </listitem>
+
+ <listitem>
+ <para>Ο τρόπος συμπίεσης και πακεταρίσματος. Υπάρχουν τρεις
+ τρόποι που χρησιμοποιούνται αυτή τη στιγμή.</para>
+
+ <orderedlist>
+ <listitem>
+ <para>Όταν η μορφή είναι
+ <literal>html-split</literal>, τα αρχεία συμπιέζονται
+ με χρήση της &man.tar.1;. Το αρχείο
+ <filename>.tar</filename> που προκύπτει, συμπιέζεται
+ έπειτα με τους τρόπους συμπίεσης που περιγράφονται
+ παρακάτω.</para>
+ </listitem>
+
+ <listitem>
+ <para>Όλες οι άλλες μορφές δημιουργούν ένα αρχείο που
+ ονομάζεται
+ <filename>book.<replaceable>μορφή</replaceable></filename>
+ (π.χ., <filename>book.pdb</filename>,
+ <filename>book.html</filename>, κ.ο.κ.).</para>
+
+ <para>Τα αρχεία αυτά συμπιέζονται κατόπιν με δύο τρόπους
+ συμπίεσης.</para>
+
+ <informaltable frame="none" pgwide="1">
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>Τρόπος</entry>
+
+ <entry>Περιγραφή</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry><literal>zip</literal></entry>
+
+ <entry>Μορφή συμπίεσης Zip. Αν θέλετε να
+ το αποσυμπιέσετε στο &os; θα πρέπει να
+ εγκαταστήσετε πρώτα το port
+ <filename
+ role="package">archivers/unzip</filename>.
+ </entry>
+ </row>
+
+ <row>
+ <entry><literal>bz2</literal></entry>
+
+ <entry>Η μορφή BZip2. Είναι λιγότερο διαδεδομένη
+ από το Zip, αλλά γενικά δημιουργεί μικρότερα
+ αρχεία. Εγκαταστήστε το port <filename
+ role="package">archivers/bzip2</filename>
+ για να αποσυμπιέσετε αρχεία αυτού του τύπου.
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>Με τον τρόπο αυτό, η &postscript; του Εγχειριδίου,
+ συμπιεσμένη με χρήση του BZip2 θα αποθηκευτεί σε ένα
+ αρχείο με όνομα <filename>book.ps.bz2</filename> στον
+ κατάλογο <filename>handbook/</filename>.</para>
+ </listitem>
+ </orderedlist>
+ </listitem>
+ </itemizedlist>
+
+ <para>Αφού επιλέξετε τη μορφή και το μηχανισμό συμπίεση που
+ επιθυμείτε να κατεβάσετε, θα πρέπει έπειτα να αποφασίσετε αν
+ θέλετε ή όχι να κατεβάσετε το έγγραφο με τη μορφή
+ <emphasis>πακέτου</emphasis> του &os;.</para>
+
+ <para>Το πλεονέκτημα στο να κατεβάσετε και να εγκαταστήσετε το
+ πακέτο είναι ότι έπειτα μπορείτε να διαχειριστείτε την
+ τεκμηρίωση χρησιμοποιώντας τα συνηθισμένα εργαλεία διαχείρισης
+ πακέτων του &os; όπως την &man.pkg.add.1; και την
+ &man.pkg.delete.1;.</para>
+
+ <para>Αν αποφασίσετε να κατεβάσετε και να εγκαταστήσετε την
+ τεκμηρίωση ως πακέτο, θα πρέπει να ξέρετε το ακριβές όνομα αρχείου
+ που θα κατεβάσετε. Τα αρχεία τεκμηρίωσης-ως-πακέτο αποθηκεύονται
+ σε ένα κατάλογο με το όνομα <filename>packages</filename>. Κάθε
+ πακέτο μοιάζει με
+ <filename><replaceable>όνομα-κειμένου</replaceable>.<replaceable>γλώσσα</replaceable>.<replaceable>κωδικοποίηση</replaceable>.<replaceable>μορφή</replaceable>.tgz</filename>.</para>
+
+ <para>Για παράδειγμα, το FAQ, στα Αγγλικά, σε μορφή PDF, είναι στο
+ πακέτο με όνομα
+ <filename>faq.en_US.ISO8859-1.pdf.tgz</filename>.</para>
+
+ <para>Αν το ξέρετε αυτό μπορείτε να χρησιμοποιήσετε την ακόλουθη
+ εντολή για να εγκαταστήσετε το πακέτο του Αγγλικού PDF FAQ:</para>
+
+ <screen>&prompt.root; <userinput>pkg_add ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/packages/faq.en_US.ISO8859-1.pdf.tgz</userinput></screen>
+
+ <para>Αφού το κάνετε αυτό, μπορείτε να χρησιμοποιήσετε την εντολή
+ &man.pkg.info.1; για να βρείτε που έχει εγκατασταθεί το αρχείο.
+ </para>
+
+ <screen>&prompt.root; <userinput>pkg_info -f faq.en_US.ISO8859-1.pdf</userinput>
+Information for faq.en_US.ISO8859-1.pdf:
+
+Packing list:
+ Package name: faq.en_US.ISO8859-1.pdf
+ CWD to /usr/share/doc/en_US.ISO8859-1/books/faq
+File: book.pdf
+ CWD to .
+File: +COMMENT (ignored)
+File: +DESC (ignored)</screen>
+
+ <para>Όπως μπορείτε να δείτε, το <filename>book.pdf</filename> θα
+ έχει εγκατασταθεί στον κατάλογο
+ <filename>/usr/share/doc/en_US.ISO8859-1/books/faq</filename>.
+ </para>
+
+ <para>Αν δεν θέλετε να χρησιμοποιήσετε τα πακέτα, θα πρέπει να
+ κατεβάσετε μόνοι σας τα συμπιεσμένα αρχεία, να τα αποσυμπιέσετε
+ και έπειτα να αντιγράψετε τα αντίστοιχα έγγραφα στη θέση τους.
+ </para>
+
+ <para>Για παράδειγμα, η έκδοση HTML σε συνδεμένα αρχεία του FAQ,
+ συμπιεσμένη με χρήση του &man.bzip2.1;, μπορεί να βρεθεί στο
+ αρχείο
+ <filename>doc/en_US.ISO8859-1/books/faq/book.html-split.tar.bz2
+ </filename>. Για να κατεβάσετε και να αποσυμπιέσετε αυτό το αρχείο
+ θα πρέπει να κάνετε το παρακάτω:</para>
+
+ <screen>&prompt.root; <userinput>fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/en_US.ISO8859-1/books/faq/book.html-split.tar.bz2</userinput>
+&prompt.root; <userinput>bzip2 -d book.html-split.tar.bz2</userinput>
+&prompt.root; <userinput>tar xvf book.html-split.tar</userinput></screen>
+
+ <para>Θα καταλήξετε με μια συλλογή από αρχεία
+ <filename>.html</filename>. Το βασικό ονομάζετα
+ <filename>index.html</filename>, και θα περιέχει τον πίνακα
+ περιεχομένων, εισαγωγικό υλικό, και δεσμούς προς τα άλλα τμήματα
+ του εγγράφου. Μπορείτε έπειτα να αντιγράψετε ή να μετακινήσετε
+ τα αρχεία αυτά στις τελικές τους θέσεις, όπως απαιτείται.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="mailing">
+ <para>Που μπορώ να βρω πληροφορίες για λίστες ηλεκτρονικού
+ ταχυδρομείου του &os;;</para>
+ </question>
+
+ <answer>
+ <para>Μπορείτε να βρείτε πλήρεις πληροφορίες στην αντίστοιχη <ulink
+ url="&url.books.handbook;/eresources.html#ERESOURCES-MAIL">
+ καταχώρηση του Εγχειριδίου για τις λίστες ηλεκτρονικού
+ ταχυδρομείου.</ulink>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="newsgroups">
+ <para>Τι ομάδες συζήτησης είναι διαθέσιμες για το &os;;</para>
+ </question>
+
+ <answer>
+ <para>Μπορείτε να βρείτε πλήρεις πληροφορίες στην <ulink
+ url="&url.books.handbook;/eresources-news.html">καταχώρηση του
+ Εγχειριδίου για τις ομάδες συζητήσεων.</ulink>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="irc">
+ <para>Υπάρχουν κανάλια στο IRC (Internet Relay Chat) για το &os;;
+ </para>
+ </question>
+
+ <answer>
+ <para>Ναι, τα περισσότερα IRC δίκτυα διαθέτουν κανάλι συζήτησης για
+ το &os;:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Το κανάλι <literal>#FreeBSD</literal> στο
+ <ulink url="http://www.efnet.org/index.php">EFNet</ulink>
+ ασχολείται με το &os;, αλλά μην πάτε εκεί για τεχνική
+ υποστήριξη ή για να προσπαθήσετε να πείσετε τους θαμώνες να
+ σας βοηθήσουν για να απαλλαγείτε από τον κόπο να διαβάσετε τις
+ σελίδες βοήθειας ή να ερευνήσετε μόνος σας. Είναι απλώς ένα
+ κανάλι συζήτησης, πρώτα από όλα, και τα θέματα εκεί μπορεί
+ να κυμαίνονται ανάμεσα στο σεξ, τον αθλητισμό, τα πυρηνικά
+ όπλα ως και το &os;. Σας έχουμε προειδοποιήσει! Είναι
+ διαθέσιμο στον εξυπηρετητή <hostid>irc.chat.org</hostid>.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Το κανάλι <literal>#FreeBSDhelp</literal> στο
+ <ulink url="http://www.efnet.org/index.php">EFNet</ulink>
+ είναι αφιερωμένο στη βοήθεια των χρηστών του &os;. Έχετε
+ πολύ μεγαλύτερη πιθανότητα να βρείτε απαντήσεις στις ερωτήσεις
+ σας σε αυτό, παρά στο <literal>#FreeBSD</literal>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Το κανάλι <literal>##FreeBSD</literal> στο
+ <ulink url="http://freenode.net/">Freenode</ulink>
+ είναι ένα γενικό κανάλι βοήθειας με περίπου 300 χρήστες κάθε
+ φορά. Οι συζητήσεις μερικές φορές ξεφεύγουν από το θέμα,
+ αλλά δίνεται προτεραιότητα στους χρήστες με ερωτήσεις για το
+ &os;. Είμαστε καλοί στο να σας βοηθήσουμε να καταλάβετε τα
+ βασικά, να σας δείξουμε που να ανατρέξετε στο Εγχειρίδιο όποτε
+ χρειάζεται, και να σας κατευθύνουμε εκεί όπου μπορείτε να
+ μάθετε περισσότερα για θέμα που σας απασχολεί. Είμαστε κατά
+ βάση Αγγλόφωνο κανάλι, αν και έχουμε χρήστες από όλο τον
+ κόσμο. Αν θέλετε να ρωτήσετε στη μητρική σας γλώσσα,
+ προσπαθήστε να κάνετε την ερώτηση στα Αγγλικά και έπειτα
+ μετακινηθείτε σε κάποιο άλλο κανάλι
+ ##freebsd-<replaceable>lang</replaceable> αν χρειάζεται.
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Το κανάλι <literal>#FreeBSD</literal> στο
+ <ulink url="http://www.dal.net/">DALNET</ulink>
+ είναι διαθέσιμο στο <hostid>irc.dal.net</hostid> στις ΗΠΑ
+ και στο <hostid>irc.eu.dal.net</hostid> στην Ευρώπη.</para>
+ </listitem>
+
+ <listitem>
+ <para>Το κανάλι <literal>#FreeBSDHelp</literal> στο
+ <ulink url="http://www.dal.net/">DALNET</ulink>
+ είναι διαθέσιμο στο <hostid>irc.dal.net</hostid> στις ΗΠΑ
+ και στο <hostid>irc.eu.dal.net</hostid> στην Ευρώπη.</para>
+ </listitem>
+
+ <listitem>
+ <para>Το κανάλι <literal>#FreeBSD</literal> στο
+ <ulink url="http://www.undernet.org/">UNDERNET</ulink>
+ είναι διαθέσιμο στο <hostid>us.undernet.org</hostid>
+ στις ΗΠΑ και στο <hostid>eu.undernet.org</hostid> στην
+ Ευρώπη. Καθώς είναι κανάλι βοήθειας, θα πρέπει να είστε
+ προετοιμασμένοι να διαβάσετε τα έγγραφα στα οποία θα σας
+ παραπέμψουν.</para>
+ </listitem>
+
+ <listitem>
+ <para>Το κανάλι <literal>#FreeBSD</literal> στο
+ <ulink url="http://www.rusnet.org.ru/">RUSNET</ulink>
+ είναι προσανατολισμένο στη βοήθεια χρηστών του &os; που
+ μιλούν τη Ρωσσσική γλώσσα. Είναι επίσης ένα καλό μέρος για
+ μη-τεχνικές συζητήσεις.</para>
+ </listitem>
+
+ <listitem>
+ <para>Το κανάλι <literal>#BSDChat</literal> στο
+ <ulink url="http://www.ircnet.net/">IRCNET</ulink>
+ είναι ένα κανάλι σε παραδοσιακή Κινεζική γλώσσα, αφιερωμένο
+ στη βοήθεια χρηστών του &os;. Είναι επίσης ένα καλό μέρος για
+ μη-τεχνικές συζητήσεις.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Κάθε ένα από αυτά τα κανάλια, είναι χωριστό, και δεν
+ διασυνδέεται με τα υπόλοιπα. Τα στυλ της συζήτησης διαφέρουν,
+ και ίσως θα θέλετε να δοκιμάσετε καθένα για να βρείτε κάποιο
+ που να ταιριάζει στο δικό σας. Όπως με <emphasis>κάθε</emphasis>
+ τύπο συζήτησης στο IRC, αν είστε από αυτούς που προσβάλλονται
+ εύκολα, ή δεν μπορείτε να αντιμετωπίσετε πολλούς νέους ανθρώπους
+ (και αρκετούς πιο μεγάλους) να επιδίδονται στο λεκτικό αντίστοιχο
+ της πυγμαχίας, μην ασχοληθείτε καθόλου.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="training">
+ <para>Που μπορώ να βρω επί πληρωμή υποστήριξη και εκπάιδευση για
+ το &os;;</para>
+ </question>
+
+ <answer>
+ <para>Το DaemonNews παρέχει επί πληρωμή εκπαίδευση και υποστήριξη
+ για το &os;. Περισσότερες πληροφορίες μπορείτε να βρείτε στην
+ δικτυακή τους τοποθεσία
+ <ulink url="http://www.bsdmall.com/">BSD Mall</ulink>.</para>
+
+ <para>Το &os; Mall παρέχει επίσης επί πληρωμή υποστήριξη για το
+ &os;. Μπορείτε να βρείτε περισσότερες πληροφορίες στην
+ <ulink url="http://www.freebsdmall.com/">δικτυακή τους
+ τοποθεσία</ulink>.</para>
+
+ <para>Οποιοσδήποτε άλλος οργανισμός παρέχει εκπαίδευση και
+ υποστήριξη, θα πρέπει να επικοινωνήσει με το Project για να
+ καταχωρηθεί στη λίστα αυτή.</para>
+ </answer>
+ </qandaentry>
+ </qandaset>
+ </chapter>
+
+ <chapter
+ id="install">
+ <chapterinfo>
+ <author>
+ <firstname>Nik</firstname>
+ <surname>Clayton</surname>
+ <affiliation>
+ <address><email>nik@FreeBSD.org</email></address>
+ </affiliation>
+ </author>
+ </chapterinfo>
+
+ <title>Εγκατάσταση</title>
+
+ <qandaset>
+ <qandaentry>
+ <question id="floppy-download">
+ <para>Which file do I download to get FreeBSD?</para>
+ </question>
+
+ <answer>
+ <para>You need three floppy images:
+ <filename>floppies/boot.flp</filename>,
+ <filename>floppies/kern1.flp</filename>, and
+ <filename>floppies/kern2.flp</filename>. These images need to
+ be copied onto floppies by tools like
+ <command>fdimage</command> or &man.dd.1;.</para>
+
+ <para>If you need to download the distributions yourself (for a
+ DOS filesystem install, for instance), below are some
+ recommendations for distributions to grab:</para>
+
+
+ <itemizedlist>
+ <listitem>
+ <para>base/</para>
+ </listitem>
+
+ <listitem>
+ <para>manpages/</para>
+ </listitem>
+
+ <listitem>
+ <para>compat*/</para>
+ </listitem>
+
+ <listitem>
+ <para>doc/</para>
+ </listitem>
+
+ <listitem>
+ <para>src/ssys.*</para>
+ </listitem>
+ </itemizedlist>
+
+
+ <para>Full instructions on this procedure and a little bit more
+ about installation issues in general can be found in the
+ <ulink url="&url.books.handbook;/install.html">Handbook entry on
+ installing FreeBSD</ulink>.</para>
+
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="floppy-image-too-large">
+ <para>What do I do if the floppy images does not fit on a single
+ floppy?</para>
+ </question>
+
+ <answer>
+ <para>A 3.5 inch (1.44MB) floppy can accommodate 1474560 bytes
+ of data. The boot image is exactly 1474560 bytes in size.</para>
+
+ <para>Common mistakes when preparing the boot floppy are:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Not downloading the floppy image in
+ <emphasis>binary</emphasis> mode when using
+ <acronym>FTP</acronym>.</para>
+
+
+ <para>Some FTP clients default their transfer mode to
+ <emphasis>ascii</emphasis> and attempt to change any
+ end-of-line characters received to match the conventions
+ used by the client's system. This will almost invariably
+ corrupt the boot image. Check the size of the downloaded
+ boot image: if it is not <emphasis>exactly</emphasis> that
+ on the server, then the download process is suspect.</para>
+
+ <para>To workaround: type <emphasis>binary</emphasis> at the
+ FTP command prompt after getting connected to the server
+ and before starting the download of the image.</para>
+ </listitem>
+
+ <listitem>
+ <para>Using the DOS <command>copy</command> command (or
+ equivalent GUI tool) to transfer the boot image to
+ floppy.</para>
+
+ <para>Programs like <command>copy</command> will not work as
+ the boot image has been created to be booted into directly.
+ The image has the complete content of the floppy, track for
+ track, and is not meant to be placed on the floppy as a
+ regular file. You have to transfer it to the floppy
+ <quote>raw</quote>, using the low-level tools (e.g.
+ <command>fdimage</command> or <command>rawrite</command>)
+ described in the <ulink
+ url="&url.books.handbook;/install.html">installation guide to
+ FreeBSD</ulink>.</para>
+ </listitem>
+ </itemizedlist>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="install-instructions-location">
+ <para>Where are the instructions for installing FreeBSD?</para>
+ </question>
+
+ <answer>
+ <para>Installation instructions can be found in the
+ <ulink url="&url.books.handbook;/install.html">Handbook entry on installing FreeBSD</ulink>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="need-to-run">
+ <para>What do I need in order to run FreeBSD?</para>
+ </question>
+
+ <answer>
+ <para>For &os; 5.X and later you will need a 486 or better
+ PC, with 24 MB or more of RAM and at least 150 MB of hard disk
+ space.</para>
+
+ <para>All versions of &os; can run with a low
+ end MDA graphics card but to run &xorg;, a VGA or better video
+ card is needed.</para>
+
+ <para>See also <xref linkend="hardware">.</para>
+
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="custom-boot-floppy">
+ <para>How can I make my own custom install floppy?</para>
+ </question>
+
+ <answer>
+ <para>Currently there is no way to <emphasis>just</emphasis>
+ make a custom install floppy. You have to cut a whole new
+ release, which will include your install floppy.</para>
+
+ <para>To make a custom release, follow the instructions in the
+ <ulink url="&url.articles.releng;/article.html">Release
+ Engineering</ulink> article.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="multiboot">
+ <para>Can I have more than one operating system on my PC?</para>
+ </question>
+
+ <answer>
+ <para>Have a look at
+ <ulink url="&url.articles.multi-os;/index.html">
+ the multi-OS page</ulink>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="windows-coexist">
+ <para>Can &windows; co-exist with FreeBSD?</para>
+ </question>
+
+ <answer>
+ <para>Install &windows; first, then FreeBSD.
+ FreeBSD's boot manager will then manage to boot &windows; and
+ FreeBSD. If you install &windows; second, it will boorishly
+ overwrite your boot manager without even asking. If that
+ happens, see the next section.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="win95-damaged-boot-manager">
+ <para>&windows; killed my boot manager!
+ How do I get it back?</para>
+ </question>
+
+ <answer>
+ <para>You can reinstall the boot manager FreeBSD comes with in
+ one of three ways:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Running DOS, go into the tools/ directory of your
+ FreeBSD distribution and look for
+ <filename>bootinst.exe</filename>. You run it like
+ so:</para>
+
+ <screen><prompt>...\TOOLS&gt;</prompt> <userinput>bootinst.exe boot.bin</userinput></screen>
+
+ <para>and the boot manager will be reinstalled.</para>
+ </listitem>
+
+ <listitem>
+ <para>Boot the FreeBSD boot floppy again and go to the
+ Custom installation menu item. Choose Partition. Select the
+ drive which used to contain your boot manager (likely the
+ first one) and when you come to the partition editor for
+ it, as the very first thing (e.g. do not make any changes)
+ select (W)rite. This will ask for confirmation, say yes,
+ and when you get the Boot Manager selection prompt, be
+ sure to select <quote>Boot Manager</quote>. This will
+ re-write the boot manager to disk. Now quit out of the
+ installation menu and reboot off the hard disk as
+ normal.</para>
+ </listitem>
+
+ <listitem>
+ <para>Boot the FreeBSD boot floppy (or CDROM) and choose the
+ <quote>Fixit</quote> menu item. Select either the Fixit
+ floppy or CDROM #2 (the <quote>live</quote> filesystem
+ option) as appropriate and enter the fixit shell. Then
+ execute the following command:</para>
+
+ <screen><prompt>Fixit#</prompt> <userinput>fdisk -B -b /boot/boot0 <replaceable>bootdevice</replaceable></userinput></screen>
+
+ <para>substituting <replaceable>bootdevice</replaceable> for
+ your real
+ boot device such as <devicename>ad0</devicename> (first IDE
+ disk), <devicename>ad4</devicename> (first IDE disk on
+ auxiliary controller), <devicename>da0</devicename> (first
+ SCSI disk), etc.</para>
+ </listitem>
+ </itemizedlist>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="boot-on-thinkpad">
+ <para>My A, T, or X series IBM Thinkpad locks up when I first
+ booted up my FreeBSD installation. How can I solve this?</para>
+ </question>
+
+ <answer>
+ <para>A bug in early revisions of IBM's BIOS on these machines
+ mistakenly identifies the FreeBSD partition as a potential FAT
+ suspend-to-disk partition. When the BIOS tries to parse the
+ FreeBSD partition it hangs.</para>
+
+ <para>According to IBM<footnote><para>In an e-mail from Keith
+ Frechette
+ <email>kfrechet@us.ibm.com</email>.</para></footnote>, the
+ following model/BIOS release numbers incorporate the fix.</para>
+
+ <informaltable frame="none" pgwide="1">
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>Model</entry>
+ <entry>BIOS revision</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry>T20</entry>
+ <entry>IYET49WW or later</entry>
+ </row>
+
+ <row>
+ <entry>T21</entry>
+ <entry>KZET22WW or later</entry>
+ </row>
+
+ <row>
+ <entry>A20p</entry>
+ <entry>IVET62WW or later</entry>
+ </row>
+
+ <row>
+ <entry>A20m</entry>
+ <entry>IWET54WW or later</entry>
+ </row>
+
+ <row>
+ <entry>A21p</entry>
+ <entry>KYET27WW or later</entry>
+ </row>
+
+ <row>
+ <entry>A21m</entry>
+ <entry>KXET24WW or later</entry>
+ </row>
+
+ <row>
+ <entry>A21e</entry>
+ <entry>KUET30WW</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+
+ <para>It has been reported that later IBM BIOS revisions may
+ have reintroduced the bug. <ulink
+ url="http://docs.FreeBSD.org/cgi/mid.cgi?20010427133759.A71732">This
+ message</ulink> from Jacques Vidrine to the &a.mobile;
+ describes a procedure which may work if your newer IBM
+ laptop does not boot FreeBSD properly, and you can upgrade
+ or downgrade the BIOS.</para>
+
+ <para>If you have an earlier BIOS, and upgrading is not an option, a
+ workaround is to install FreeBSD, change the partition ID FreeBSD
+ uses, and install new boot blocks that can handle the different
+ partition ID.</para>
+
+ <para>First, you will need to restore the machine to a state where
+ it can get through its self-test screen. Doing this requires
+ powering up the machine without letting it find a FreeBSD
+ partition on its primary disk. One way is to remove the hard disk
+ and temporarily move it to an older ThinkPad (such as a ThinkPad
+ 600) or a desktop PC with an appropriate conversion cable. Once
+ it is there, you can delete the FreeBSD partition and move the hard
+ disk back. The ThinkPad should now be in a bootable state
+ again.</para>
+
+ <para>With the machine functional again, you can use the workaround
+ procedure described here to get a working FreeBSD
+ installation.</para>
+
+ <procedure>
+ <step>
+ <para>Download <filename>boot1</filename> and
+ <filename>boot2</filename> from <ulink
+ url="http://people.FreeBSD.org/~bmah/ThinkPad/"></ulink>.
+ Put these files somewhere you will be able to retrieve them
+ later.</para>
+ </step>
+
+ <step>
+ <para>Install FreeBSD as normal on to the ThinkPad.
+ <emphasis>Do not</emphasis> use <literal>Dangerously
+ Dedicated</literal> mode. <emphasis>Do not</emphasis>
+ reboot when the install has finished.</para>
+ </step>
+
+ <step>
+ <para>Either switch to the <quote>Emergency Holographic
+ Shell</quote> (<keycombo action="simul"><keycap>ALT</keycap>
+ <keycap>F4</keycap></keycombo>) or start a
+ <quote>fixit</quote> shell.</para>
+ </step>
+
+ <step>
+ <para>Use &man.fdisk.8; to change the FreeBSD partition ID from
+ <literal>165</literal> to <literal>166</literal> (this is the
+ type used by OpenBSD).</para>
+ </step>
+
+ <step>
+ <para>Bring the <filename>boot1</filename> and
+ <filename>boot2</filename> files to the local
+ filesystem.</para>
+ </step>
+
+ <step>
+ <para>Use &man.disklabel.8; to write <filename>boot1</filename>
+ and <filename>boot2</filename> to your FreeBSD slice.</para>
+
+ <screen>&prompt.root; <userinput>disklabel -B -b boot1 -s boot2 ad0s<replaceable>n</replaceable></userinput></screen>
+
+ <para><replaceable>n</replaceable> is the number of the slice
+ where you installed FreeBSD.</para>
+ </step>
+
+ <step>
+ <para>Reboot. At the boot prompt you will be given the option
+ of booting <literal>OpenBSD</literal>. This will actually
+ boot FreeBSD.</para>
+ </step>
+ </procedure>
+
+ <para>Getting this to work in the case where you want to dual boot
+ OpenBSD and FreeBSD on the same laptop is left as an exercise for
+ the reader.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="install-bad-blocks">
+ <para>Can I install on a disk with bad blocks?</para>
+ </question>
+
+ <answer>
+ <para>You can, but it is a bad idea.</para>
+
+ <para>If you are seeing bad block errors with a modern IDE
+ drive, chances are the drive is going to die very soon (the
+ drive's internal remapping functions are no longer sufficient
+ to fix the bad blocks, which means the disk is heavily
+ corrupted); we suggest you buy a new hard drive.</para>
+
+ <para>If you have a SCSI drive with bad blocks, see
+ <link linkend="awre">this answer</link>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="boot-floppy-strangeness">
+ <para>Strange things happen when I boot the install floppy!
+ What is happening?</para>
+ </question>
+
+ <answer>
+ <para>If you are seeing things like the machine grinding to a halt
+ or spontaneously rebooting when you try to boot the install
+ floppy, here are three questions to ask yourself:-</para>
+
+ <orderedlist>
+ <listitem>
+ <para>Did you use a new, freshly-formatted, error-free floppy
+ (preferably a brand-new one straight out of the box, as
+ opposed to the magazine cover disk that has been lying under
+ the bed for the last three years)?</para>
+ </listitem>
+
+ <listitem>
+ <para>Did you download the floppy image in binary (or image)
+ mode? (do not be embarrassed, even the best of us have
+ accidentally downloaded a binary file in ASCII mode at
+ least once!)</para>
+ </listitem>
+
+ <listitem>
+ <para>If you are using &windows; 95 or 98 did you run
+ <command>fdimage</command> or
+ <command>rawrite</command> in pure DOS mode? These
+ operating systems can interfere with programs that
+ write directly to hardware, which the disk creation
+ program does; even running it inside a DOS shell in
+ the GUI can cause this problem.</para>
+ </listitem>
+ </orderedlist>
+
+ <para>There have also been reports of &netscape; causing problems
+ when downloading the boot floppy, so it is probably best to use
+ a different FTP client if you can.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="no-install-cdrom">
+ <para>I booted from my ATAPI CDROM, but the install program
+ says no CDROM is found. Where did it go?</para>
+ </question>
+
+ <answer>
+ <para>The usual cause of this problem is a mis-configured CDROM
+ drive. Many PCs now ship with the CDROM as the slave device on
+ the secondary IDE controller, with no master device on that
+ controller. This is illegal according to the ATAPI specification,
+ but &windows; plays fast and loose with the specification, and the
+ BIOS ignores it when booting. This is why the BIOS was able to
+ see the CDROM to boot from it, but why FreeBSD cannot see it to
+ complete the install.</para>
+
+ <para>Reconfigure your system so that the CDROM is either the
+ master device on the IDE controller it is attached to, or make
+ sure that it is the slave on an IDE controller that also has a
+ master device.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="install-PLIP">
+ <para>Can I install on my laptop over PLIP (Parallel Line
+ IP)?</para>
+ </question>
+
+ <answer>
+ <para>Yes. Use a standard Laplink cable. If necessary, you
+ can check out the <ulink url="&url.books.handbook;/network-plip.html">PLIP
+ section of the Handbook</ulink> for details on parallel
+ port networking.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="geometry">
+ <para>Which geometry should I use for a disk drive?</para>
+ </question>
+
+ <answer>
+ <note>
+ <para>By the <quote>geometry</quote> of a disk, we mean
+ the number of cylinders, heads and sectors/track on a
+ disk. We will refer to this as C/H/S for
+ convenience. This is how the PC's BIOS works out which
+ area on a disk to read/write from.</para>
+ </note>
+
+ <para>This causes a lot of confusion among new system
+ administrators. First of all, the
+ <emphasis>physical</emphasis> geometry of a SCSI drive is
+ totally irrelevant, as FreeBSD works in term of disk
+ blocks. In fact, there is no such thing as
+ <quote>the</quote> physical geometry, as the sector
+ density varies across the disk. What manufacturers claim
+ is the <quote>physical geometry</quote> is usually the
+ geometry that they have determined wastes the least
+ space. For IDE disks, FreeBSD does work in terms of C/H/S,
+ but all modern drives internally convert this into block
+ references.</para>
+
+ <para>All that matters is the <emphasis>logical</emphasis>
+ geometry. This is the answer that the BIOS gets when it
+ asks the drive <quote>what is your geometry?</quote> It
+ then uses this geometry to access the disk. As FreeBSD
+ uses the BIOS when booting, it is very important to get
+ this right. In particular, if you have more than one
+ operating system on a disk, they must all agree on the
+ geometry. Otherwise you will have serious problems
+ booting!</para>
+
+ <para>For SCSI disks, the geometry to use depends on whether
+ extended translation support is turned on in your
+ controller (this is often referred to as <quote>support for
+ DOS disks &gt;1GB</quote> or something similar). If it is
+ turned off, then use <replaceable>N</replaceable>
+ cylinders, 64 heads and 32 sectors/track, where
+ <replaceable>N</replaceable> is the capacity of the disk in
+ MB. For example, a 2GB disk should pretend to have 2048
+ cylinders, 64 heads and 32 sectors/track.</para>
+
+ <para>If it <emphasis>is</emphasis> turned on (it is often
+ supplied this way to get around certain limitations in
+ &ms-dos;) and the disk capacity is more than 1GB, use M
+ cylinders, 63 sectors per track (<emphasis>not</emphasis>
+ 64), and 255 heads, where <literal>M</literal> is the disk capacity in MB
+ divided by 7.844238 (!). So our example 2GB drive would
+ have 261 cylinders, 63 sectors per track and 255
+ heads.</para>
+
+ <para>If you are not sure about this, or FreeBSD fails to
+ detect the geometry correctly during installation, the
+ simplest way around this is usually to create a small DOS
+ partition on the disk. The BIOS should then detect the
+ correct geometry, and you can always remove the DOS
+ partition in the partition editor if you do not want to
+ keep it. You might want to leave it around for
+ programming network cards and the like, however.</para>
+
+ <para>Alternatively, there is a freely available utility
+ distributed with FreeBSD called
+ <filename>pfdisk.exe</filename>. You can find it in the
+ <filename>tools</filename> subdirectory on the FreeBSD
+ CDROM or on the various FreeBSD FTP sites. This program
+ can be used to work out what geometry the other operating
+ systems on the disk are using. You can then enter this
+ geometry in the partition editor.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="disk-divide-restrictions">
+ <para>Are there any restrictions on how I divide the disk up?</para>
+ </question>
+
+ <answer>
+ <para>Yes. You must make sure that your root partition is below 1024
+ cylinders so the BIOS can boot the kernel from it. (Note that
+ this is a limitation in the PC's BIOS, not FreeBSD).</para>
+
+ <para>For a SCSI drive, this will normally imply that the root
+ partition will be in the first 1024MB (or in the first 4096MB
+ if extended translation is turned on - see previous question).
+ For IDE, the corresponding figure is 504MB.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="disk-manager">
+ <para>Is FreeBSD compatible with any disk managers?</para>
+ </question>
+
+ <answer>
+ <para>FreeBSD recognizes the Ontrack Disk Manager and makes
+ allowances for it. Other disk managers are not supported.</para>
+
+ <para>If you just want to use the disk with FreeBSD you do not
+ need a disk manager. Just configure the disk for as much space
+ as the BIOS can deal with (usually 504 megabytes), and FreeBSD
+ should figure out how much space you really have. If you are
+ using an old disk with an MFM controller, you may need to
+ explicitly tell FreeBSD how many cylinders to use.</para>
+
+ <para>If you want to use the disk with FreeBSD and another
+ operating system, you may be able to do without a disk manager:
+ just make sure the FreeBSD boot partition and the slice for
+ the other operating system are in the first 1024 cylinders. If
+ you are reasonably careful, a 20 megabyte boot partition should
+ be plenty.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="missing-os">
+ <para>When I boot FreeBSD for the first time after install I get <errorname>Missing Operating
+ System</errorname>. What is happening?</para>
+ </question>
+
+ <answer>
+ <para>This is classically a case of FreeBSD and DOS or some other
+ OS conflicting over their ideas of disk <link
+ linkend="geometry">geometry</link>. You will have to reinstall
+ FreeBSD, but obeying the instructions given above will almost
+ always get you going.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="stop-at-boot-manager">
+ <para>Why can I not get past the boot manager's <prompt>F?</prompt>
+ prompt?</para>
+ </question>
+
+ <answer>
+ <para>This is another symptom of the problem described in the
+ preceding question. Your BIOS geometry and FreeBSD geometry
+ settings do not agree! If your controller or BIOS supports
+ cylinder translation (often marked as <quote>&gt;1GB drive
+ support</quote>), try toggling its setting and reinstalling
+ FreeBSD.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="need-complete-sources">
+ <para>Do I need to install the complete sources?</para>
+ </question>
+
+ <answer>
+ <para>In general, no. However, we would strongly recommend that
+ you install, at a minimum, the <literal>base</literal> source
+ kit, which includes several of the files mentioned here, and
+ the <literal>sys</literal> (kernel) source kit, which includes
+ sources for the kernel. There is nothing in the system which
+ requires the presence of the sources to operate, however,
+ except for the kernel-configuration program &man.config.8;.
+ With the exception of the kernel sources, our build structure
+ is set up so that you can read-only mount the sources from
+ elsewhere via NFS and still be able to make new binaries
+ (due to the kernel-source restriction, we recommend that
+ you not mount this on <filename>/usr/src</filename> directly,
+ but rather in some other location with appropriate symbolic
+ links to duplicate the top-level structure of the source
+ tree).</para>
+
+ <para>Having the sources on-line and knowing how to build a
+ system with them will make it much easier for you to upgrade
+ to future releases of FreeBSD.</para>
+
+ <para>To actually select a subset of the sources, use the Custom
+ menu item when you are in the Distributions menu of the
+ system installation tool.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="need-kernel">
+ <para>Do I need to build a kernel?</para>
+ </question>
+
+ <answer>
+ <para>Building a new kernel was originally pretty much a required
+ step in a FreeBSD installation, but more recent releases have
+ benefited from the introduction of much friendlier kernel
+ configuration methods. In &os; 5.X and later, it is very easily
+ to configure the kernel's configuration by much more flexible
+ "hints" which can be set from the loader prompt.</para>
+
+ <para>It may still be worthwhile building a new
+ kernel containing just the drivers that you need, just to save a
+ bit of RAM, but it is no longer necessary for most
+ systems.</para>
+
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="password-encryption">
+ <para>Should I use DES, Blowfish, or MD5 passwords and how
+ do I specify which form my users receive?</para>
+ </question>
+
+ <answer>
+ <para>The default password format on FreeBSD is to use
+ <emphasis>MD5</emphasis>-based passwords. These are
+ believed to be more secure than the traditional &unix;
+ password format, which used a scheme based on the
+ <emphasis>DES</emphasis> algorithm. DES passwords are
+ still available if you need to share your password file
+ with legacy operating systems which still use the less
+ secure password format (they are available if you choose
+ to install the <quote>crypto</quote> distribution in
+ sysinstall, or by installing the crypto sources if
+ building from source). Installing the crypto libraries
+ will also allow you to use the Blowfish password format,
+ which is more secure. Which password format to use for
+ new passwords is controlled by the
+ <quote>passwd_format</quote> login capability in
+ <filename>/etc/login.conf</filename>, which takes values
+ of <quote>des</quote>, <quote>blf</quote> (if these are
+ available) or <quote>md5</quote>. See the
+ &man.login.conf.5; manual page for more information about
+ login capabilities.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="boot-floppy-hangs">
+ <para>Why does the boot floppy start, but hang at the
+ <literal>Probing Devices...</literal> screen?</para>
+ </question>
+
+ <answer>
+
+ <para>If you have a IDE &iomegazip; or &jaz; drive installed, remove it
+ and try again. The boot floppy can get confused by the drives.
+ After the system is installed you can reconnect the drive.
+ Hopefully this will be fixed in a later release.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="panic-on-install-reboot">
+ <para>Why do I get a <errorname>panic: can't mount root</errorname>
+ error when rebooting the system after installation?</para>
+ </question>
+
+ <answer>
+ <para>This error comes from confusion between the boot
+ block's and the kernel's understanding of the disk
+ devices. The error usually manifests on two-disk IDE
+ systems, with the hard disks arranged as the master or
+ single device on separate IDE controllers, with FreeBSD
+ installed on the secondary IDE controller. The boot blocks
+ think the system is installed on ad0 (the second BIOS
+ disk) while the kernel assigns the first disk on the
+ secondary controller device, ad2. After the device
+ probing, the kernel tries to mount what the boot blocks
+ think is the boot disk, ad0, while it is really ad2, and
+ fails.</para>
+
+ <para>To fix the problem, do one of the following:</para>
+
+ <orderedlist>
+ <listitem>
+ <para>Reboot the system and hit <keycap>Enter</keycap>
+ at the <literal>Booting kernel in 10 seconds; hit
+ [Enter] to interrupt</literal> prompt. This will
+ drop you into the boot loader.</para>
+
+ <para>Then type
+ <literal>
+ set
+ root_disk_unit="<replaceable>disk_number</replaceable>"
+ </literal>. <replaceable>disk_number</replaceable>
+ will be <literal>0</literal> if FreeBSD is installed
+ on the master drive on the first IDE controller,
+ <literal>1</literal> if it is installed on the slave
+ on the first IDE controller, <literal>2</literal> if
+ it is installed on the master of the second IDE
+ controller, and <literal>3</literal> if it is
+ installed on the slave of the second IDE
+ controller.</para>
+
+ <para>Then type <literal>boot</literal>, and your
+ system should boot correctly.</para>
+
+ <para>To make this change permanent (i.e, so you do not
+ have to do this every time you reboot or turn on
+ your FreeBSD machine), put the line <literal>
+ root_disk_unit="<replaceable>disk_number</replaceable>"</literal>
+ in <filename>/boot/loader.conf.local
+ </filename>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Move the FreeBSD disk onto the primary IDE
+ controller, so the hard disks are
+ consecutive.</para>
+ </listitem>
+ </orderedlist>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="memory-limits">
+ <para>What are the limits for memory?</para>
+ </question>
+
+ <answer>
+ <para>The limit is 4 gigabytes on a standard &i386; install.
+ Beginning with &os; versions 4.9 and 5.1, more memory can be
+ supported through &man.pae.4;. This does require a kernel
+ recompile, with an extra option to enable PAE:</para>
+
+ <programlisting>options PAE</programlisting>
+
+ <para>&os;/pc98 has a limit of 4 GB memory, and PAE can not
+ be used with it. On &os;/alpha, the limit on memory depends
+ on the type of hardware in use - consult the Alpha Hardware
+ Release Notes for details. Other architectures
+ supported by &os; have much higher theoretical limits on
+ maximum memory (many terabytes).</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="ffs-limits">
+ <para>What are the limits for ffs filesystems?</para>
+ </question>
+
+ <answer>
+ <para>For ffs filesystems, the maximum theoretical limit is 8
+ terabytes (2G blocks), or 16TB for the default block size of
+ 8K. In practice, there is a soft limit of 1 terabyte, but with
+ modifications filesystems with 4 terabytes are possible (and
+ exist).</para>
+
+ <para>The maximum size of a single ffs file is approximately 1G
+ blocks, or 4TB with a block size of 4K.</para>
+
+ <table>
+ <title>Maximum file sizes</title>
+
+ <tgroup cols="3">
+ <thead>
+ <row>
+ <entry>fs block size</entry>
+
+ <entry>works</entry>
+
+ <entry>should work</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry>4K</entry>
+
+ <entry>4T-1</entry>
+
+ <entry>&gt;4T</entry>
+ </row>
+
+ <row>
+ <entry>8K</entry>
+
+ <entry>&gt;32G</entry>
+
+ <entry>32T-1</entry>
+ </row>
+
+ <row>
+ <entry>16K</entry>
+
+ <entry>&gt;128G</entry>
+
+ <entry>32T-1</entry>
+ </row>
+
+ <row>
+ <entry>32K</entry>
+
+ <entry>&gt;512G</entry>
+
+ <entry>64T-1</entry>
+ </row>
+
+ <row>
+ <entry>64K</entry>
+
+ <entry>&gt;2048G</entry>
+
+ <entry>128T-1</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <para>When the fs block size is 4K, triple indirect blocks work
+ and everything should be limited by the maximum fs block number
+ that can be represented using triple indirect blocks (approx.
+ 1K^3 + 1K^2 + 1K), but everything is limited by a (wrong) limit
+ of 1G-1 on fs block numbers. The limit on fs block numbers
+ should be 2G-1. There are some bugs for fs block numbers near
+ 2G-1, but such block numbers are unreachable when the fs block
+ size is 4K.</para>
+
+ <para>For block sizes of 8K and larger, everything should be
+ limited by the 2G-1 limit on fs block numbers, but is
+ actually limited by the 1G-1 limit on fs block numbers.
+ Using the correct limit of 2G-1 blocks does cause
+ problems.</para>
+
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="archsw-readin-failed-error">
+ <para>Why do I get an error message,
+ <errorname>archsw.readin.failed</errorname> after compiling
+ and booting a new kernel?</para>
+ </question>
+
+ <answer>
+ <para>Because your world and kernel are out of sync. This
+ is not supported. Be sure you use <command>make
+ buildworld</command> and <command>make
+ buildkernel</command> to update your kernel.</para>
+
+ <para>You can boot by specifying the kernel directly at the
+ second stage, pressing any key when the | shows up before
+ loader is started.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="boot-acpi">
+ <para>Installation crashes while booting, what can I do?</para>
+ </question>
+
+ <answer>
+ <para>Try disabling ACPI support. When the bootloader loads, press
+ the space key. The system displays <screen>OK</screen>. Type
+ <screen><userinput>unset acpi_load</userinput></screen> and then
+ <screen><userinput>boot</userinput></screen>.</para>
+ </answer>
+ </qandaentry>
+
+ </qandaset>
+ </chapter>
+
+ <chapter
+ id="hardware">
+ <title>Συμβατότητα Υλικού</title>
+
+ <sect1 id="compatibility-general">
+ <title>Γενικά</title>
+
+ <qandaset>
+ <qandaentry>
+ <question id="which-hardware-to-get">
+ <para>I want to get a piece of hardware for my FreeBSD
+ system. Which model/brand/type is best?</para>
+ </question>
+
+ <answer>
+ <para>This is discussed continually on the FreeBSD mailing
+ lists. Since hardware changes so quickly, however, we
+ expect this. We <emphasis>still</emphasis> strongly
+ recommend that you read through the Hardware notes for &os;
+ <ulink url="&rel.current.hardware;">&rel.current;</ulink>
+ or
+ <ulink url="&rel2.current.hardware;">&rel2.current;</ulink>
+ and search the mailing list
+ <ulink url="http://www.FreeBSD.org/search/#mailinglists">
+ archives</ulink> before asking about the latest and
+ greatest hardware. Chances are a discussion about the
+ type of hardware you are looking for took place just last
+ week.</para>
+
+ <para>If you are looking for a laptop, check the
+ FreeBSD-mobile mailing list archives. Otherwise, you
+ probably want the archives for FreeBSD-questions, or
+ possibly a specific mailing list for a particular hardware
+ type.</para>
+ </answer>
+ </qandaentry>
+
+ </qandaset>
+ </sect1>
+
+ <sect1 id="compatibility-processors">
+ <title>Αρχιτεκτονικές και Επεξεργαστές</title>
+
+ <qandaset>
+ <qandaentry>
+ <question id="architectures">
+ <para>Does FreeBSD support architectures other than the x86?</para>
+ </question>
+
+ <answer>
+
+ <para>Yes. FreeBSD currently runs on the Intel x86 and DEC
+ (now Compaq) Alpha architectures. As of FreeBSD 5.0, the
+ AMD64 and Intel EM64T, IA-64, and &sparc64; architectures
+ are also supported. Upcoming platforms are &mips; and
+ &powerpc;, join the &a.ppc; or the &a.mips; respectively
+ for more information about ongoing work on these
+ platforms. For general discussion on new architectures,
+ join the &a.platforms;.</para>
+
+ <para>If your machine has a different architecture and you
+ need something right now, we suggest you look at <ulink
+ url="http://www.netbsd.org/">NetBSD</ulink> or <ulink
+ url="http://www.openbsd.org/">OpenBSD</ulink>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="smp-support">
+ <para>Does FreeBSD support Symmetric Multiprocessing
+ (SMP)?</para>
+ </question>
+
+ <answer>
+ <para>Yes. SMP was enabled by default in the
+ <emphasis>GENERIC</emphasis> kernel as of &os; 5.2.</para>
+
+ <para>The intention was also to enable it by default for
+ the &os; 5.3 release, but problems running the SMP kernel
+ on certain UP machines led to the decision to disable it
+ until those problems can be addressed. This is a priority
+ for &os; 5.4.</para>
+ </answer>
+ </qandaentry>
+ </qandaset>
+ </sect1>
+
+ <sect1 id="compatibility-drives">
+ <title>Σκληροί δίσκοι, μονάδες ταινίας, οδηγοί CD και DVD</title>
+
+ <qandaset>
+
+ <qandaentry>
+ <question id="supported-hard-drives">
+ <para>What kind of hard drives does FreeBSD support?</para>
+ </question>
+
+ <answer>
+ <para>FreeBSD supports EIDE, SATA, SCSI, and SAS drives (with a
+ compatible controller; see the next section), and all drives using
+ the original <quote>Western Digital</quote> interface (MFM, RLL,
+ ESDI, and of course IDE). A few ESDI controllers that use
+ proprietary interfaces may not work: stick to WD1002/3/6/7
+ interfaces and clones.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="supported-scsi-controllers">
+ <para>Which SCSI or SAS controllers are supported?</para>
+ </question>
+
+ <answer>
+ <para>See the complete list in the Hardware Notes for &os;
+ <ulink url="&rel.current.hardware;">&rel.current;</ulink> or
+ <ulink url="&rel2.current.hardware;">&rel2.current;</ulink>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="tape-support">
+ <para>What types of tape drives are supported?</para>
+ </question>
+
+ <answer>
+
+ <para>FreeBSD supports SCSI and QIC-36 (with a QIC-02 interface).
+ This includes 8-mm (aka Exabyte) and DAT drives.</para>
+
+ <para>Some of the early 8-mm drives are not quite compatible
+ with SCSI-2, and may not work well with FreeBSD.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="tape-changer-support">
+ <para>Does FreeBSD support tape changers?</para>
+ </question>
+
+ <answer>
+ <para>FreeBSD supports SCSI changers using the &man.ch.4;
+ device and the &man.chio.1; command. The details of how you
+ actually control the changer can be found in the &man.chio.1;
+ manual page.</para>
+
+ <para>If you are not using <application>AMANDA</application>
+ or some other product that already understands changers,
+ remember that they only know how to move a tape from one
+ point to another, so you need to keep track of which slot a
+ tape is in, and which slot the tape currently in the drive
+ needs to go back to.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="supported-cdrom-drives">
+ <para>Which CDROM drives are supported by FreeBSD?</para>
+ </question>
+
+ <answer>
+ <para>Any SCSI drive connected to a supported controller is
+ supported.</para>
+
+ <para>The following proprietary CDROM interfaces are also
+ supported:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Mitsumi LU002 (8bit), LU005 (16bit) and FX001D
+ (16bit 2x Speed).</para>
+ </listitem>
+
+ <listitem>
+ <para>Sony CDU 31/33A</para>
+ </listitem>
+
+ <listitem>
+ <para>Sound Blaster Non-SCSI CDROM</para>
+ </listitem>
+
+ <listitem>
+ <para>Matsushita/Panasonic CDROM</para>
+ </listitem>
+
+ <listitem>
+ <para>ATAPI compatible IDE CDROMs</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>All non-SCSI cards are known to be extremely slow compared
+ to SCSI drives, and some ATAPI CDROMs may not work.</para>
+
+ <para>The official FreeBSD CDROM ISO, and CDROMs from Daemon
+ News and FreeBSD Mall, support booting directly from the
+ CD.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="supported-cdrw-drives">
+ <para>Which CD-RW drives are supported by FreeBSD?</para>
+ </question>
+
+ <answer>
+ <para>FreeBSD supports any ATAPI-compatible IDE CD-R or CD-RW
+ drive. See &man.burncd.8; for details.</para>
+
+ <para>FreeBSD also supports any SCSI CD-R or CD-RW drives.
+ Install and use the <command>cdrecord</command> command from the
+ ports or packages system, and make sure that you have the
+ <devicename>pass</devicename> device compiled in your
+ kernel.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="zip-support">
+ <para>Does FreeBSD support &iomegazip; drives?</para>
+ </question>
+
+ <answer>
+ <para>FreeBSD supports SCSI and ATAPI (IDE) &iomegazip; drives out
+ of the box. SCSI ZIP drives can only be set to
+ run at SCSI target IDs 5 or 6, but if your SCSI host
+ adapter's BIOS supports it you can even boot from it. It
+ is not clear which host adapters support booting from
+ targets other than 0 or 1, so you will have to consult
+ your adapter's documentation if you would like to use this
+ feature.</para>
+
+ <para>FreeBSD also supports Parallel Port Zip Drives. Check
+ that your kernel contains the
+ <devicename>scbus0</devicename>,
+ <devicename>da0</devicename>,
+ <devicename>ppbus0</devicename>, and
+ <devicename>vp0</devicename> drivers (the GENERIC kernel
+ contains everything except
+ <devicename>vp0</devicename>). With all these drivers
+ present, the Parallel Port drive should be available as
+ <devicename>/dev/da0s4</devicename>. Disks can be mounted
+ using <command>mount /dev/da0s4 /mnt</command> OR (for dos
+ disks) <command>mount_msdos /dev/da0s4 /mnt</command> as
+ appropriate.</para>
+
+ <para>Also check out <link linkend="media-change">the FAQ on
+ removable drives</link> later in this chapter, and <link
+ linkend="removable-drives">the note on
+ <quote>formatting</quote></link>in the Administration
+ chapter.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="jaz-zip-removable-support">
+ <para>Does FreeBSD support &jaz;, EZ and other removable
+ drives?</para>
+ </question>
+
+ <answer>
+ <para>They work. Most of these are SCSI devices, so they
+ look like SCSI disks to FreeBSD. The IDE EZ looks like an
+ IDE drive.</para>
+
+ <para>Make sure that any external units are powered on when
+ booting the system.</para>
+
+ <para><anchor id="media-change">To change the media while
+ running, check out &man.mount.8;, &man.umount.8;, and
+ &man.camcontrol.8; (for SCSI devices) or
+ &man.atacontrol.8; (for IDE devices), plus the <link
+ linkend="removable-drives">discussion on using removable
+ drives</link> later in the FAQ.</para>
+ </answer>
+ </qandaentry>
+
+ </qandaset>
+
+ </sect1>
+
+ <sect1 id="compatibility-kbd-mice">
+ <title>Πληκτρολόγια και ποντίκια</title>
+
+ <qandaset>
+
+ <qandaentry>
+ <question id="usbkbd">
+ <para>Does FreeBSD support my USB keyboard?</para>
+ </question>
+
+ <answer>
+ <para>FreeBSD supports USB keyboards
+ out-of-the-box. Enable USB support in
+ <filename>/etc/rc.conf</filename>.</para>
+
+ <para>Once you have USB keyboard support enabled on your
+ system, the AT keyboard becomes
+ <devicename>/dev/kbd0</devicename> and the USB keyboard
+ becomes <devicename>/dev/kbd1</devicename>, if both are
+ connected to the system. If there is the USB keyboard
+ only, it will be
+ <devicename>/dev/ukbd0</devicename>.</para>
+
+ <para>If you want to use the USB keyboard in the console,
+ you have to explicitly tell the console driver to use the
+ existing USB keyboard. This can be done by running the
+ following command as a part of system
+ initialization.</para>
+
+ <screen>&prompt.root; <userinput>kbdcontrol -k /dev/kbd1 &lt; /dev/ttyv0 &gt; /dev/null</userinput></screen>
+
+ <para>Note that if the USB keyboard is the only keyboard, it
+ is accessed as <devicename>/dev/ukbd0</devicename>, thus,
+ the command should look like:</para>
+
+ <screen>&prompt.root; <userinput>kbdcontrol -k /dev/ukbd0 &lt; /dev/ttyv0 &gt; /dev/null</userinput></screen>
+
+ <para><filename>/etc/rc.i386</filename> is a good place to
+ add the above command.</para>
+
+ <para>Once this is done, the USB keyboard should work in the
+ X environment as well without any special settings.</para>
+
+ <para>Hot-plugging and unplugging of the USB keyboard may
+ not work quite right yet. We recommend connecting the
+ keyboard before starting the system and leaving it
+ connected until the system is shutdown to avoid
+ troubles.</para>
+
+ <para>See the &man.ukbd.4; manual page for more information.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="busmouse">
+ <para>I have an unusual bus mouse. How do I set it
+ up?</para>
+ </question>
+
+ <answer>
+ <para>FreeBSD supports the bus mouse and the InPort bus
+ mouse from such manufacturers as Microsoft, Logitech and
+ ATI. The GENERIC kernel does not include the device
+ driver. To build a custom kernel with the bus mouse
+ driver, add the following line to the kernel config
+ file:</para>
+
+ <programlisting>device mse0 at isa? port 0x23c irq5</programlisting>
+
+ <para>Bus mice usually come with dedicated interface cards.
+ These cards may allow you to set the port address and the
+ IRQ number other than shown above. Refer to the manual of
+ your mouse and the &man.mse.4; manual page for more
+ information.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="ps2mouse">
+ <para>How do I use my PS/2 (<quote>mouse port</quote> or
+ <quote>keyboard</quote>) mouse?</para>
+ </question>
+
+ <answer>
+ <para>The PS/2 mouse is supported out-of-the-box. The
+ necessary device driver, <devicename>psm</devicename>, is
+ included in the kernel.</para>
+
+ <para>If your custom kernel does not have this, add the
+ following line to your kernel configuration and compile a
+ new kernel.</para>
+
+ <programlisting>device psm0 at atkbdc? irq 12</programlisting>
+
+ <para>Once the kernel detects <devicename>psm0</devicename>
+ correctly at boot time, make sure that an entry for
+ <devicename>psm0</devicename> exists in
+ <filename>/dev</filename>. You can create this entry by
+ typing:</para>
+
+ <screen>&prompt.root; <userinput>cd /dev; sh MAKEDEV psm0</userinput></screen>
+
+ <para>when logged in as <username>root</username>.</para>
+
+ <note>
+ <para>You can omit this step if you are running FreeBSD
+ 5.0-RELEASE or newer with &man.devfs.5; enabled,
+ since the proper device nodes will be created automatically
+ under <filename>/dev</filename>.</para>
+ </note>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="moused">
+ <para>Is it possible to use a mouse in any way outside the X
+ Window system?</para>
+ </question>
+
+ <answer>
+ <para>If you are using the default console driver,
+ &man.syscons.4;, you can use a mouse pointer in text
+ consoles to cut &amp; paste text. Run the mouse daemon,
+ &man.moused.8;, and turn on the mouse pointer in the
+ virtual console:</para>
+
+ <screen>&prompt.root; <userinput>moused -p /dev/<replaceable>xxxx</replaceable> -t <replaceable>yyyy</replaceable></userinput>
+&prompt.root; <userinput>vidcontrol -m on</userinput></screen>
+
+ <para>Where <replaceable>xxxx</replaceable> is the mouse
+ device name and <replaceable>yyyy</replaceable> is a
+ protocol type for the mouse. The mouse daemon can
+ automatically determine the protocol type of most
+ mice, except old serial mice. Specify the
+ <literal>auto</literal> protocol to invoke automatic
+ detection. If automatic detection does not work, see the
+ &man.moused.8; manual page for a list of supported
+ protocol types.</para>
+
+ <para>If you have a PS/2 mouse, just add
+ <literal>moused_enable="YES"</literal> to
+ <filename>/etc/rc.conf</filename> to start the mouse
+ daemon at boot-time. Additionally, if you would like to
+ use the mouse daemon on all virtual terminals instead of
+ just the console, add <literal>allscreens_flags="-m
+ on"</literal> to <filename>/etc/rc.conf</filename>.</para>
+
+ <para>When the mouse daemon is running, access to the mouse
+ must be coordinated between the mouse daemon and other
+ programs such as X Windows. Refer to the FAQ <link
+ linkend="x-and-moused">Why does my mouse not work with
+ X?</link> for more details on this issue.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="text-mode-cut-paste">
+ <para>How do I cut and paste text with a mouse in the text
+ console?</para>
+ </question>
+
+ <answer>
+ <para>Once you get the mouse daemon running (see the <link
+ linkend="moused">previous section</link>), hold down the
+ button 1 (left button) and move the mouse to select a
+ region of text. Then, press the button 2 (middle button)
+ to paste it at the text cursor. Pressing button 3 (right
+ button) will <quote>extend</quote> the selected region of
+ text.</para>
+
+ <para>If your mouse does not have a middle button, you may
+ wish to emulate one or remap buttons using mouse daemon
+ options. See the &man.moused.8; manual page for
+ details.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="mouse-wheel-buttons">
+ <para>My mouse has a fancy wheel and buttons. Can I use them in
+ FreeBSD?</para>
+ </question>
+
+ <answer>
+ <para>The answer is, unfortunately, <quote>It depends</quote>.
+ These mice with additional features require specialized driver
+ in most cases. Unless the mouse device driver or the user
+ program has specific support for the mouse, it will act just
+ like a standard two, or three button mouse.</para>
+
+ <para>For the possible usage of wheels in the X Window
+ environment, refer to <link linkend="x-and-wheel">that
+ section</link>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="laptop-mouse-trackball">
+ <para>How do I use the mouse/trackball/touchpad on my laptop?</para>
+ </question>
+
+ <answer>
+ <para>Please refer to <link linkend="ps2mouse">the answer to
+ the previous question</link>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="keyboard-delete-key">
+ <para>How do I use my delete key in <command>sh</command> and
+ <command>csh</command>?</para>
+ </question>
+
+ <answer>
+ <para>For the <application>Bourne Shell</application>, add the
+ following lines to your <filename>.shrc</filename>. See &man.sh.1;
+ and &man.editrc.5;.</para>
+
+ <programlisting>bind ^? ed-delete-next-char # for console
+bind ^[[3~ ed-delete-next-char # for xterm</programlisting>
+
+ <para>For the <application>C Shell</application>, add the following
+ lines to your <filename>.cshrc</filename>. See &man.csh.1;.</para>
+
+ <programlisting>bindkey ^? delete-char # for console
+bindkey ^[[3~ delete-char # for xterm</programlisting>
+
+ <para>For more information, see <ulink
+ url="http://www.ibb.net/~anne/keyboard.html">this page</ulink>.
+ </para>
+ </answer>
+ </qandaentry>
+
+ </qandaset>
+
+ </sect1>
+
+ <sect1 id="compatibility-networking">
+ <title>Συσκευές σειριακής επικοινωνίας και Δικτύωσης</title>
+
+ <qandaset>
+
+ <qandaentry>
+ <question id="network-cards">
+ <para>Which network cards does FreeBSD support?</para>
+ </question>
+
+ <answer>
+ <para>See the Hardware Notes supplied with each release of
+ FreeBSD for a more
+ complete list.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="support-winmodem">
+ <para>Does FreeBSD support software modems, such as Winmodems?</para>
+ </question>
+
+ <answer>
+ <para>FreeBSD supports many software modems via add-on
+ software. The <filename role="package">comms/ltmdm</filename> port adds
+ support for modems based on the very popular Lucent LT
+ chipset. The <filename role="package">comms/mwavem</filename> port
+ supports the modem in IBM Thinkpad 600 and 700
+ laptops.</para>
+
+ <para>You cannot install FreeBSD via a software modem; this
+ software must be installed after the OS is
+ installed.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="support-broadcom">
+ <para>Is there a native driver for the Broadcom 43xx cards?</para>
+ </question>
+
+ <answer>
+ <para>No, and there is not likely to be.</para>
+
+ <para>Broadcom refuses to publically release programming
+ information for their wireless chipsets, most likely because
+ they use software controlled radios. In order to get FCC type
+ acceptance for their parts, they have to ensure that users
+ cannot arbitrarily set things like operating frequencies,
+ modulation parameters and power output. But without knowing
+ how to program the chipsets, it is nearly impossible to write
+ a driver.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="multiport-serial-support">
+ <para>Which multi-port serial cards are supported by
+ FreeBSD?</para>
+ </question>
+
+ <answer>
+ <para>There is a list of these in the <ulink
+ url="&url.books.handbook;/install.html#INSTALL-MISC">Miscellaneous
+ devices</ulink> section of the handbook.</para>
+
+ <para>Some unnamed clone cards have also been known to work,
+ especially those that claim to be AST compatible.</para>
+
+ <para>Check the &man.sio.4; manual page to get more
+ information on configuring such cards.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="serial-console-prompt">
+ <para>How do I get the boot: prompt to show on the serial
+ console?</para>
+ </question>
+
+ <answer>
+ <orderedlist>
+ <listitem>
+ <para>Build a kernel with
+ <literal>options COMCONSOLE</literal>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Create /boot.config and place <option>-P</option>
+ as the only text in the file.</para>
+ </listitem>
+
+ <listitem>
+ <para>Unplug the keyboard from the system.</para>
+ </listitem>
+ </orderedlist>
+
+ <para>See
+ <filename>/usr/src/sys/i386/boot/biosboot/README.serial</filename>
+ for information.</para>
+ </answer>
+ </qandaentry>
+
+ </qandaset>
+
+ </sect1>
+
+ <sect1 id="compatibility-sound">
+ <title>Συσκευές ήχου</title>
+
+ <qandaset>
+
+ <qandaentry>
+ <question id="sound-card-support">
+ <para>Which sound cards are supported by FreeBSD?</para>
+ </question>
+
+ <answer>
+ <para>&os; supports various sound cards including the &soundblaster;,
+ &soundblaster; Pro, &soundblaster; 16, Pro Audio Spectrum 16,
+ AdLib, and Gravis UltraSound sound cards (for more details,
+ see <ulink url="&url.base;/releases/">&os; Release Information</ulink>
+ and the &man.snd.4; manual page).
+ There is also limited support for
+ MPU-401 and compatible MIDI cards. Cards conforming to the
+ &microsoft; Sound System specification are also supported.</para>
+
+ <note>
+ <para>This is only for sound! This driver does not support
+ CDROMs, SCSI or joysticks on these cards, except for the
+ &soundblaster;. The &soundblaster; SCSI interface and some
+ non-SCSI CDROMs are supported, but you cannot boot off this
+ device.</para>
+ </note>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="es1370-silent-pcm">
+ <para>Workarounds for no sound from my &man.pcm.4; sound
+ card?</para>
+ </question>
+
+ <answer>
+ <para>Some sound cards, such as the es1370, set their output
+ volume to 0 at every boot. Run the following command
+ every time the machine boots:</para>
+
+ <screen>&prompt.root; <userinput>mixer pcm 100 vol 100 cd 100</userinput></screen>
+ </answer>
+ </qandaentry>
+
+ </qandaset>
+
+ </sect1>
+
+ <sect1 id="compatibility-other">
+ <title>Άλλο υλικό</title>
+
+ <qandaset>
+
+ <qandaentry>
+ <question id="other-device-support">
+ <para>What other devices does FreeBSD support?</para>
+ </question>
+
+ <answer>
+ <para>See the <ulink
+ url="&url.books.handbook;/install.html#INSTALL-MISC">Handbook</ulink>
+ for the list of other devices supported.</para>
+
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="power-management-support">
+ <para>Does FreeBSD support power management on my
+ laptop?</para>
+ </question>
+
+ <answer>
+ <para>FreeBSD 4.X and later support <acronym>APM</acronym>
+ on certain machines. Further information can be found in
+ &man.apm.4;.</para>
+
+ <para>FreeBSD 5.X and later support the
+ <acronym>ACPI</acronym> features found in most modern
+ hardware. Further information can be found in
+ &man.acpi.4;. If a system supports both
+ <acronym>APM</acronym> and <acronym>ACPI</acronym>, either
+ can be used. We suggest you try both and choose the one
+ that best fits your needs.</para>
+
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="disable-acpi">
+ <para>How do I disable ACPI?</para>
+ </question>
+
+ <answer>
+ <para>Add following line <screen>hint.acpi.0.disabled="1"</screen>
+ into your <filename>/boot/device.hints</filename> file.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="micron-hang-boot">
+ <para>Why does my Micron system hang at boot time?</para>
+ </question>
+
+ <answer>
+ <para>Certain Micron motherboards have a non-conforming PCI BIOS
+ implementation that causes grief when FreeBSD boots because PCI
+ devices do not get configured at their reported addresses.</para>
+
+ <para>Disable the <quote>Plug and Play Operating System</quote>
+ flag in the BIOS to work around this problem.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="asusk7v-boot-failure">
+ <para>The boot floppy hangs on a system with an ASUS K7V
+ motherboard. How do I fix this?</para>
+ </question>
+
+ <answer>
+ <para>Go into the BIOS setup and disable the <quote>boot virus
+ protection</quote>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="micron-3comnic-failure">
+ <para>Why does my &tm.3com; PCI network card not work with my Micron
+ computer?</para>
+ </question>
+
+ <answer>
+ <para>Certain Micron motherboards have a non-conforming PCI BIOS
+ implementation that does not configure PCI devices at the
+ addresses reported. This causes grief when FreeBSD
+ boots.</para>
+
+ <para>To work around this problem, disable the
+ <quote>Plug and Play Operating System</quote> flag in the
+ BIOS.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="newcard-does-not-work">
+ <para>My PCMCIA card does not work. I have a message:
+ <quote>cbb0: unsupported card type detected.</quote>
+ What can I do?</para>
+ </question>
+
+ <answer>
+ <para>You can try to use the original OLDCARD implementation. Edit
+ your kernel configuration file and remove the following lines:
+ <programlisting>device cbb
+device pccard
+device cardbus</programlisting>
+ Then add:
+ <programlisting>device pcic
+device card 1</programlisting>
+ Rebuild and install the new kernel as described in
+ <ulink url="&url.books.handbook;/kernelconfig.html">Configuring
+ the FreeBSD Kernel</ulink>.</para>
+ </answer>
+ </qandaentry>
+ </qandaset>
+
+ </sect1>
+
+ </chapter>
+
+ <chapter id="troubleshoot">
+ <title>Αντιμετώπιση Προβλημάτων</title>
+
+ <qandaset>
+ <qandaentry>
+ <question id="pae">
+ <para>Why is &os; finding the wrong amount of memory?</para>
+ </question>
+
+ <answer>
+ <para>The reason is the difference between physical memory addresses
+ and virtual addresses.</para>
+
+ <para>The convention for most PC hardware is to use the memory area
+ between 3.5G and 4G for a special purpose (usually for PCI). This
+ address space is used to access PCI hardware. As a result real,
+ physical memory can not appear in that address space.</para>
+
+ <para>What happens to the memory that should appear in that location
+ is dependent on your hardware. Unfortunately, some hardware does
+ nothing and the ability to use that last 500M of RAM is entirely
+ lost.</para>
+
+ <para>Luckily, most hardware remaps the memory to a higher location
+ so that it can still be used. However, this can cause some
+ confusion if you watch the boot messages.</para>
+
+ <para>On a 32 bit version of &os;, the memory appears lost, since it
+ will be remapped above 4G, which a 32 bit kernel is unable to
+ access. In this case, the solution is to build a PAE enabled
+ kernel. See <link linkend="memory-limits">this FAQ entry</link>
+ for more information.</para>
+
+ <para>On a 64 bit version of &os;, or when running a PAE-enabled
+ kernel, &os; will correctly detect and remap the memory so it is
+ usable. During boot, however, it may seem as if &os; is detecting
+ more memory than the system really has. This is normal and the
+ available memory will be corrected as the boot process
+ completes.<para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="awre">
+ <para>What do I do when I have bad blocks on my hard drive?</para>
+ </question>
+
+ <answer>
+ <para>With SCSI drives, the drive should be capable of re-mapping
+ these automatically. However, many drives ship with
+ this feature disabled.</para>
+
+ <para>To enable bad block remapping edit the first device page
+ mode, which can be done by giving the command
+ (as <username>root</username>)</para>
+
+ <screen>&prompt.root; <userinput>camcontrol modepage sd0 -m 1 -e -P 3</userinput></screen>
+
+ <para>and changing the values of AWRE and ARRE from 0 to 1:-</para>
+
+ <programlisting>AWRE (Auto Write Reallocation Enbld): 1
+ARRE (Auto Read Reallocation Enbld): 1</programlisting>
+
+ <para>Modern IDE drives also have bad block remapping
+ features in the controller, and they ship with this
+ feature turned on.</para>
+
+ <para>If you see warnings about bad blocks (on either type
+ of drive), it is time to consider replacing the drive.
+ You might be able to use the drive manufacturer's
+ diagnostic program to lock out those bad blocks, but at
+ best this will buy you some time.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="hpnetserver-scsi-failure">
+ <para>Why does FreeBSD not detect my HP Netserver's SCSI
+ controller?</para>
+ </question>
+
+ <answer>
+ <para>This is basically a known problem. The EISA on-board SCSI
+ controller in the HP Netserver machines occupies EISA slot
+ number 11, so all the <quote>true</quote> EISA slots are in
+ front of it. Alas, the address space for EISA slots &gt;= 10
+ collides with the address space assigned to PCI, and FreeBSD's
+ auto-configuration currently cannot handle this situation very
+ well.</para>
+
+ <para>So now, the best you can do is to pretend there is no
+ address range clash :), by bumping the kernel option
+ <literal>EISA_SLOTS</literal> to a value of 12. Configure and
+ compile a kernel, as described in the <ulink
+ url="&url.books.handbook;/kernelconfig.html">Handbook entry on
+ configuring the kernel</ulink>.</para>
+
+ <para>Of course, this does present you with a chicken-and-egg
+ problem when installing on such a machine. In order to work
+ around this problem, a special hack is available inside
+ <emphasis>UserConfig</emphasis>. Do not use the
+ <quote>visual</quote> interface, but the plain command-line
+ interface there. Simply type</para>
+
+ <programlisting>eisa 12
+quit</programlisting>
+
+ <para>at the prompt, and install your system as usual. While
+ it is recommended you compile and install a custom kernel
+ anyway.</para>
+
+ <para>Hopefully, future versions will have a proper fix for
+ this problem.</para>
+
+ <note>
+ <para>You cannot use a
+ <literal>dangerously dedicated</literal> disk
+ with an HP Netserver. See <link linkend="dedicate">this
+ note</link> for more info.</para>
+ </note>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="ed1-timeout">
+ <para>I keep seeing messages like
+ <errorname>ed1: timeout</errorname>. What do these messages
+ mean?</para>
+ </question>
+
+ <answer>
+ <para>This is usually caused by an interrupt conflict (e.g.,
+ two boards using the same IRQ). Boot with the
+ -c option and change the ed0/de0/... entry to match your
+ board.</para>
+
+ <para>If you are using the BNC connector on your network card,
+ you may also see device timeouts because of bad termination. To
+ check this, attach a terminator directly to the NIC (with no
+ cable) and see if the error messages go away.</para>
+
+ <para>Some NE2000 compatible cards will give this error if there
+ is no link on the UTP port or if the cable is disconnected.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="bad-3c509">
+ <para>Why did my &tm.3com; 3C509 card stop working for no
+ apparent reason?</para>
+ </question>
+
+ <answer>
+ <para>This card has a bad habit of losing its configuration
+ information. Refresh your card's settings with the DOS
+ utility <command>3c5x9.exe</command>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="printer-slow">
+ <para>My parallel printer is ridiculously slow. What can I do?</para>
+ </question>
+
+ <answer>
+ <para>If the only problem is that the printer is terribly
+ slow, try changing your <ulink
+ url="&url.books.handbook;/printing-intro-setup.html#PRINTING-PARALLEL-PORT-MODE">printer
+ port mode</ulink> as discussed in the <ulink
+ url="&url.books.handbook;/printing-intro-setup.html">Printer
+ Setup</ulink> section of the Handbook.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="signal11">
+ <para>Why do my programs occasionally die with
+ <errorname>Signal 11</errorname> errors?</para>
+ </question>
+
+ <answer>
+ <para>Signal 11 errors are caused when your process has attempted
+ to access memory which the operating system has not granted it
+ access to. If something like this is happening at seemingly
+ random intervals then you need to start investigating things
+ very carefully.</para>
+
+ <para>These problems can usually be attributed to either:</para>
+
+ <orderedlist>
+ <listitem>
+ <para>If the problem is occurring only in a specific
+ application that you are developing yourself it is probably
+ a bug in your code.</para>
+ </listitem>
+
+ <listitem>
+ <para>If it is a problem with part of the base FreeBSD system,
+ it may also be buggy code, but more often than not these
+ problems are found and fixed long before us general FAQ
+ readers get to use these bits of code (that is what -current
+ is for).</para>
+ </listitem>
+ </orderedlist>
+
+ <para>In particular, a dead giveaway that this is
+ <emphasis>not</emphasis> a FreeBSD bug is if you see the
+ problem when you are compiling a program, but the activity
+ that the compiler is carrying out changes each
+ time.</para>
+
+ <para>For example, suppose you are running <quote>make
+ buildworld</quote>, and the compile fails while trying to
+ compile <filename>ls.c</filename> into
+ <filename>ls.o</filename>. If you then run <quote>make
+ buildworld</quote> again, and the compile fails in the same
+ place then this is a broken build -- try updating your sources
+ and try again. If the compile fails elsewhere then this is
+ almost certainly hardware.</para>
+
+ <para>What you should do:</para>
+
+ <para>In the first case you can use a debugger e.g. gdb to find
+ the point in the program which is attempting to access a bogus
+ address and then fix it.</para>
+
+ <para>In the second case you need to verify that it is not your
+ hardware at fault.</para>
+
+ <para>Common causes of this include:</para>
+
+ <orderedlist>
+ <listitem>
+ <para>Your hard disks might be overheating: Check the fans in
+ your case are still working, as your disk (and perhaps
+ other hardware might be overheating).</para>
+ </listitem>
+
+ <listitem>
+ <para>The processor running is overheating: This might be
+ because the processor has been overclocked, or the fan on
+ the processor might have died. In either case you need to
+ ensure that you have hardware running at what it is
+ specified to run at, at least while trying to solve this
+ problem. i.e. Clock it back to the default settings.</para>
+
+ <para>If you are overclocking then note that it is far cheaper
+ to have a slow system than a fried system that needs
+ replacing! Also the wider community is not often
+ sympathetic to problems on overclocked systems, whether you
+ believe it is safe or not.</para>
+ </listitem>
+
+ <listitem>
+ <para>Dodgy memory: If you have multiple memory SIMMS/DIMMS
+ installed then pull them all out and try running the
+ machine with each SIMM or DIMM individually and narrow the
+ problem down to either the problematic DIMM/SIMM or perhaps
+ even a combination.</para>
+ </listitem>
+
+ <listitem>
+ <para>Over-optimistic Motherboard settings: In your BIOS
+ settings, and some motherboard jumpers you have options to
+ set various timings, mostly the defaults will be
+ sufficient, but sometimes, setting the wait states on RAM
+ too low, or setting the <quote>RAM Speed: Turbo</quote> option, or
+ similar in the BIOS will cause strange behavior. A
+ possible idea is to set to BIOS defaults, but it might be
+ worth noting down your settings first!</para>
+ </listitem>
+
+ <listitem>
+ <para>Unclean or insufficient power to the motherboard. If you
+ have any unused I/O boards, hard disks, or CDROMs in your
+ system, try temporarily removing them or disconnecting the
+ power cable from them, to see if your power supply can
+ manage a smaller load. Or try another power supply,
+ preferably one with a little more power (for instance, if
+ your current power supply is rated at 250 Watts try one
+ rated at 300 Watts).</para>
+ </listitem>
+
+ </orderedlist>
+
+ <para>You should also read the SIG11 FAQ (listed below) which has
+ excellent explanations of all these problems, albeit from a
+ &linux; viewpoint. It also discusses how memory testing software
+ or hardware can still pass faulty memory.</para>
+
+ <para>Finally, if none of this has helped it is possible that
+ you have just found a bug in FreeBSD, and you should follow the
+ instructions to send a problem report.</para>
+
+ <para>There is an extensive FAQ on this at <ulink
+ url="http://www.bitwizard.nl/sig11/">
+ the SIG11 problem FAQ</ulink></para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="trap-12-panic">
+ <para>My system crashes with either <errorname>Fatal
+ trap 12: page fault in kernel mode</errorname>, or
+ <errorname>panic:</errorname>, and spits out a
+ bunch of information. What should I do?</para>
+ </question>
+
+ <answer>
+ <para>The FreeBSD developers are very interested in these
+ errors, but need some more information than just the
+ error you see. Copy your full crash message. Then
+ consult the FAQ section on <link linkend=
+ "KERNEL-PANIC-TROUBLESHOOTING">kernel panics</link>,
+ build a debugging kernel, and get a backtrace. This
+ might sound difficult, but you do not need any
+ programming skills; you just have to follow the
+ instructions.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="screen-loses-sync">
+ <para>Why does the screen go black and lose sync when I
+ boot?</para>
+ </question>
+
+ <answer>
+ <para>This is a known problem with the ATI Mach 64 video card.
+ The problem is that this card uses address
+ <literal>2e8</literal>, and the fourth serial port does too.
+ Due to a bug (feature?) in the &man.sio.4;
+ driver it will touch this port even if you do not have the
+ fourth serial port, and <emphasis>even</emphasis> if
+ you disable sio3 (the fourth port) which normally uses this
+ address.</para>
+
+ <para>Until the bug has been fixed, you can use this
+ workaround:</para>
+
+ <orderedlist>
+ <listitem>
+ <para>Enter <option>-c</option> at the boot prompt.
+ (This will put the kernel into configuration mode).</para>
+ </listitem>
+
+ <listitem>
+ <para>Disable <devicename>sio0</devicename>,
+ <devicename>sio1</devicename>,
+ <devicename>sio2</devicename> and
+ <devicename>sio3</devicename> (all of them). This way
+ the sio driver does not get activated -&gt; no
+ problems.</para>
+ </listitem>
+
+ <listitem>
+ <para>Type exit to continue booting.</para>
+ </listitem>
+ </orderedlist>
+
+ <para>If you want to be able to use your serial ports, you will
+ have to build a new kernel with the following modification: in
+ <filename>/usr/src/sys/i386/isa/sio.c</filename> find the one
+ occurrence of the string <literal>0x2e8</literal> and remove
+ that string and the preceding comma (keep the trailing comma).
+ Now follow the normal procedure of building a new
+ kernel.</para>
+
+ <para>Even after applying these workarounds, you may still find
+ that the X Window System does not work properly. If this is the
+ case, make sure that the &xfree86; version you are using is at
+ least &xfree86; 3.3.3 or higher. This version and upwards has
+ built-in support for the Mach64 cards and even a dedicated X
+ server for those cards.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="reallybigram">
+ <para>Why does FreeBSD only use 64 MB of RAM when my system has
+ 128 MB of RAM installed?</para>
+ </question>
+
+ <answer>
+ <para>Due to the manner in which FreeBSD gets the memory size
+ from the BIOS, it can only detect 16 bits worth of Kbytes in
+ size (65535 Kbytes = 64MB) (or less... some BIOSes peg the
+ memory size to 16M). If you have more than 64MB, FreeBSD will
+ attempt to detect it; however, the attempt may fail.</para>
+
+ <para>To work around this problem, you need to use the kernel
+ option specified below. There is a way to get complete memory
+ information from the BIOS, but we do not have room in the
+ bootblocks to do it. Someday when lack of room in the
+ bootblocks is fixed, we will use the extended BIOS functions to
+ get the full memory information...but for now we are stuck with
+ the kernel option.</para>
+
+ <para><literal>options "MAXMEM=<replaceable>n</replaceable>"</literal></para>
+
+ <para>Where <replaceable>n</replaceable> is your memory in
+ Kilobytes. For a 128 MB machine, you would want to use
+ <literal>131072</literal>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="kmem-map-too-small">
+ <para>My system has more than 1 GB of RAM, and I'm getting panics
+ with <quote>kmem_map too small</quote> messages. What is wrong?
+ </para>
+ </question>
+
+ <answer>
+ <para>Normally, FreeBSD determines a number of kernel parameters,
+ such as as the maximum number of files that can be open
+ concurrently, from the amount of memory installed in the
+ system. On systems with one gigabyte of RAM or more, this
+ <quote>auto sizing</quote> mechanism may choose values that are
+ too high: while starting up, the kernel allocates various tables
+ and other structures that fill up most of the available kernel
+ memory. Later on, while the system is running, the kernel has no
+ more space left for dynamic memory allocations, and
+ panics.</para>
+
+ <para>Compile your own kernel, and add the
+ <option>VM_KMEM_SIZE_MAX</option> to your kernel configuration
+ file, increasing the maximum size to 400&nbsp;MB
+ (<option>options VM_KMEM_SIZE_MAX=419430400</option>).
+ 400&nbsp;MB appears to be sufficient for machines with up to
+ 6&nbsp;GB of memory.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="panic-kmemmap-too-small">
+ <para>My system does not have 1 GB of RAM, and FreeBSD still
+ panics with <errorname>kmem_map too small!</errorname>
+ </para>
+ </question>
+
+ <answer>
+ <para>The panic indicates that the system ran out of virtual
+ memory for network buffers (specifically, mbuf clusters). You
+ can increase the amount of VM available for mbuf clusters by
+ following the instructions in the <ulink
+ url="&url.books.handbook;/configtuning-kernel-limits.html#NMBCLUSTERS">Network
+ Limits</ulink> section of the Handbook.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="proc-table-full">
+ <para>Why do I get the error <errorname>/kernel: proc: table
+ is full</errorname>?</para>
+ </question>
+
+ <answer>
+ <para>The FreeBSD kernel will only allow a certain number of
+ processes to exist at one time. The number is based on
+ the <literal>MAXUSERS</literal> option in the kernel
+ configuration. <literal>MAXUSERS</literal> also affects
+ various other in-kernel limits, such as network buffers
+ (see <link linkend="panic-kmemmap-too-small">this</link>
+ earlier question). If your machine is heavily loaded, you
+ probably want to increase <literal>MAXUSERS</literal>.
+ This will increase these other system limits in addition
+ to the maximum number of processes.</para>
+
+ <para>To adjust your <literal>MAXUSERS</literal> value, see
+ the <ulink
+ url="&url.books.handbook;/configtuning-kernel-limits.html#KERN-MAXFILES">File/Process
+ Limits</ulink> section of the Handbook. (While that
+ section refers to open files, the same limits apply to
+ processes.)</para>
+
+ <para>If your machine is lightly loaded, and you are simply
+ running a very large number of processes, you can adjust
+ this with the <varname>kern.maxproc</varname> tunable. If
+ this tunable needs adjustion it needs to be defined in
+ in <filename>/boot/loader.conf</filename>. The tunable
+ will not get adjusted until the system is rebooted. For
+ more information about tuning tunables, you should see the
+ &man.loader.conf.5; and &man.sysctl.conf.5; manual pages.
+ If these processes are being run by a single user, you will
+ also need to adjust <varname>kern.maxprocperuid</varname>
+ to be one less than your new
+ <varname>kern.maxproc</varname> value. (It must be at
+ least one less because one system program, &man.init.8;,
+ must always be running.)</para>
+
+ <para>To make a sysctl change permanent place the proper value
+ in <filename>/etc/sysctl.conf</filename>. More information
+ about system tuning with &man.sysctl.8; can be found at
+ the <ulink
+ url="&url.books.handbook;/configtuning-sysctl.html">Tuning
+ with sysctl</ulink> section of the Handbook.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="cmap-busy-panic">
+ <para>Why do I get an error reading <errorname>CMAP
+ busy</errorname> when rebooting with a new
+ kernel?</para>
+ </question>
+
+ <answer>
+ <para>The logic that attempts to detect an out of date
+ <filename>/var/db/kvm_*.db</filename> files sometimes fails
+ and using a mismatched file can sometimes lead to panics.</para>
+
+ <para>If this happens, reboot single-user and do:</para>
+
+ <screen>&prompt.root; <userinput>rm /var/db/kvm_*.db</userinput></screen>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="brkadrint-illegal-host-access">
+ <para>What does the message <errorname>ahc0: brkadrint,
+ Illegal Host Access at seqaddr 0x0</errorname>
+ mean?</para>
+ </question>
+
+ <answer>
+ <para>This is a conflict with an Ultrastor SCSI Host Adapter.</para>
+
+ <para>During the boot process enter the kernel configuration
+ menu and disable
+ <devicename>uha0</devicename>,
+ which is causing the problem.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="aci0-illegal-cable">
+ <para>When I boot my system, I get the error
+ <errorname>ahc0: illegal cable configuration</errorname>.
+ My cabling is correct. What is going on?</para>
+ </question>
+
+ <answer>
+ <para>Your motherboard lacks the external logic to support
+ automatic termination. Switch your SCSI BIOS to specify
+ the correct termination for your configuration rather
+ than automatic termination. The AIC7XXX driver cannot
+ determine if the external logic for cable detection (and
+ thus auto-termination) is available. The driver simply
+ assumes that this support must exist if the configuration
+ contained in the serial EEPROM is set to "automatic
+ termination". Without the external cable detection logic
+ the driver will often configure termination incorrectly,
+ which can compromise the reliability of the SCSI
+ bus.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="mail-loopback">
+ <para>Why does Sendmail give me an error reading
+ <quote><errorname>mail loops back to
+ myself</errorname></quote>?</para>
+ </question>
+
+ <answer>
+ <para>This is answered in the sendmail FAQ as follows:-</para>
+
+<literallayout> * I'm getting "Local configuration error" messages, such as:
+
+ 553 relay.domain.net config error: mail loops back to myself
+ 554 &lt;user@domain.net&gt;... Local configuration error
+
+ How can I solve this problem?
+
+ You have asked mail to the domain (e.g., domain.net) to be
+ forwarded to a specific host (in this case, relay.domain.net)
+ by using an MX record, but the relay machine does not recognize
+ itself as domain.net. Add domain.net to /etc/mail/local-host-names
+ (if you are using FEATURE(use_cw_file)) or add "Cw domain.net"
+ to /etc/mail/sendmail.cf.
+ </literallayout>
+
+ <para>The current version of the <ulink
+ url="ftp://rtfm.mit.edu/pub/usenet/news.answers/mail/sendmail-faq">sendmail
+ FAQ</ulink> is no longer maintained with the sendmail release.
+ It is however regularly posted to <ulink
+ url="news:comp.mail.sendmail">comp.mail.sendmail</ulink>,
+ <ulink url="news:comp.mail.misc">comp.mail.misc</ulink>, <ulink
+ url="news:comp.mail.smail">comp.mail.smail</ulink>, <ulink
+ url="news:comp.answers">comp.answers</ulink>, and <ulink
+ url="news:news.answers">news.answers</ulink>. You can also
+ receive a copy via email by sending a message to
+ <email>mail-server@rtfm.mit.edu</email> with the command
+ <literal>send usenet/news.answers/mail/sendmail-faq</literal>
+ as the body of the message.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="remote-fullscreen">
+ <para>Why do full screen applications on remote machines
+ misbehave?</para>
+ </question>
+
+ <answer>
+ <para>The remote machine may be setting your terminal type
+ to something other than the <literal>cons25</literal> terminal
+ type required by the FreeBSD console.</para>
+
+ <para>There are a number of possible work-arounds for this
+ problem:</para>
+ <itemizedlist>
+ <listitem>
+ <para>After logging on to the remote machine, set your
+ TERM shell variable to <literal>ansi</literal> or
+ <literal>sco</literal> if the remote machine knows
+ about these terminal types.</para>
+ </listitem>
+
+ <listitem>
+ <para>Use a VT100 emulator like
+ <application>screen</application> at the FreeBSD console.
+ <application>screen</application> offers you the ability
+ to run multiple concurrent sessions from one terminal,
+ and is a neat program in its own right. Each
+ <application>screen</application> window behaves like a
+ VT100 terminal, so the TERM variable at the remote end
+ should be set to <literal>vt100</literal>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Install the <literal>cons25</literal> terminal
+ database entry on the remote machine. The way to do this
+ depends on the operating system on the remote machine.
+ The system administration manuals for the remote system
+ should be able to help you here.</para>
+ </listitem>
+
+ <listitem>
+ <para>Fire up an X server at the FreeBSD end and login to
+ the remote machine using an X based terminal emulator
+ such as <command>xterm</command> or
+ <command>rxvt</command>. The TERM variable at the remote
+ host should be set to <literal>xterm</literal> or
+ <literal>vt100</literal>.</para>
+ </listitem>
+ </itemizedlist>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="calcru-negative">
+ <para>Why does my machine print
+ <errorname>calcru: negative time...</errorname>?</para>
+ </question>
+
+ <answer>
+ <para>This can be caused by various hardware or software
+ ailments relating to interrupts. It may be due to bugs but can
+ also happen by nature of certain devices. Running TCP/IP over
+ the parallel port using a large MTU is one good way to provoke
+ this problem. Graphics accelerators can also get you here, in
+ which case you should check the interrupt setting of the card
+ first.</para>
+
+ <para>A side effect of this problem are dying processes with the
+ message <quote>SIGXCPU exceeded cpu time limit</quote>.</para>
+
+ <para>If the problem cannot be fixed otherwise the solution
+ is to set this sysctl variable:</para>
+
+ <screen>&prompt.root; <userinput>sysctl -w kern.timecounter.method=1</userinput></screen>
+
+ <note>
+ <para>The <option>-w</option> option of &man.sysctl.8; is
+ deprecated and silently ignored in &os; 4.4-RELEASE and all
+ newer versions. You can safely ommit it when setting options
+ with <command>sysctl</command> as shown above.</para>
+ </note>
+
+ <para>This means a performance impact, but considering the cause
+ of this problem, you probably will not notice. If the problem
+ persists, keep the sysctl set to one and set the
+ <literal>NTIMECOUNTER</literal> option in your kernel to
+ increasingly large values. If by the time you have reached
+ <literal>NTIMECOUNTER=20</literal> the problem is not solved,
+ interrupts are too hosed on your machine for reliable
+ time keeping.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="pnp-not-found">
+ <para>Why is my PnP card no longer found (or found as
+ <literal>unknown</literal>) since upgrading to FreeBSD 4.X?</para>
+ </question>
+
+ <answer>
+ <para>FreeBSD 4.X is now much more <emphasis>PnP-centric</emphasis>
+ and this has had the side effect of some PnP devices (e.g. sound
+ cards and internal modems) not working even though they worked
+ under FreeBSD 3.X.</para>
+
+ <para>The reasons for this behavior are explained by the following
+ e-mail, posted to the freebsd-questions mailing list by Peter
+ Wemm, in answer to a question about an internal modem that was
+ no longer found after an upgrade to FreeBSD 4.X (the comments
+ in <literal>[]</literal> have been added to clarify the
+ context.</para>
+
+ <note>
+ <para>The contents of this quotation has been updated from
+ its original text.</para>
+ </note>
+
+ <blockquote>
+ <para>The PNP bios preconfigured it [the modem] and left it
+ laying around in port space, so [in 3.X] the old-style ISA
+ probes <quote>found</quote> it there.</para>
+
+ <para>Under 4.0, the ISA code is much more PnP-centric. It was
+ possible [in 3.X] for an ISA probe to find a
+ <quote>stray</quote> device and then for the PNP device id to
+ match and then fail due to resource conflicts. So, it
+ disables the programmable cards first so this double probing
+ cannot happen. It also means that it needs to know the PnP
+ ids for supported PnP hardware. Making this more user
+ tweakable is on the TODO list.</para>
+ </blockquote>
+
+ <para>To get the device working again requires finding its PnP id
+ and adding it to the list that the ISA probes use to identify
+ PnP devices. This is obtained using &man.pnpinfo.8; to probe the
+ device, for example this is the output from &man.pnpinfo.8; for
+ an internal modem:</para>
+
+ <screen>&prompt.root; <userinput>pnpinfo</userinput>
+Checking for Plug-n-Play devices...
+
+Card assigned CSN #1
+Vendor ID PMC2430 (0x3024a341), Serial Number 0xffffffff
+PnP Version 1.0, Vendor Version 0
+Device Description: Pace 56 Voice Internal Plug & Play Modem
+
+Logical Device ID: PMC2430 0x3024a341 #0
+ Device supports I/O Range Check
+TAG Start DF
+ I/O Range 0x3f8 .. 0x3f8, alignment 0x8, len 0x8
+ [16-bit addr]
+ IRQ: 4 - only one type (true/edge)</screen>
+
+ <para>[more TAG lines elided]</para>
+
+ <screen>TAG End DF
+End Tag
+
+Successfully got 31 resources, 1 logical fdevs
+-- card select # 0x0001
+
+CSN PMC2430 (0x3024a341), Serial Number 0xffffffff
+
+Logical device #0
+IO: 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8 0x03e8
+IRQ 5 0
+DMA 4 0
+IO range check 0x00 activate 0x01</screen>
+
+ <para>The information you require is in the
+ <quote>Vendor ID</quote> line at the start of the output. The
+ hexadecimal number in parentheses (0x3024a341 in this example)
+ is the PnP id and the string immediately before this (PMC2430)
+ is a unique ASCII id.</para>
+
+ <para>Alternatively, if &man.pnpinfo.8; does not list the card in
+ question, &man.pciconf.8; can be used instead. This is part of
+ the output from <command>pciconf -vl</command> for an onboard
+ sound chip:</para>
+
+ <screen>&prompt.root; <userinput>pciconf -vl</userinput>
+chip1@pci0:31:5: class=0x040100 card=0x00931028 chip=0x24158086 rev=0x02 hdr=0x00
+ vendor = 'Intel Corporation'
+ device = '82801AA 8xx Chipset AC'97 Audio Controller'
+ class = multimedia
+ subclass = audio</screen>
+
+ <para>Here, you would use the <varname>chip</varname> value,
+ <quote>0x24158086</quote>.</para>
+
+ <para>This information (Vendor ID or chip value) needs adding
+ to the file
+ <filename>/usr/src/sys/isa/sio.c</filename>.</para>
+
+ <para>You should first make a backup of <filename>sio.c</filename>
+ just in case things go wrong. You will also need it to make the
+ patch to submit with your PR (you are going to submit a PR,
+ are you not?) then edit <filename>sio.c</filename> and search
+ for the line</para>
+
+ <programlisting>static struct isa_pnp_id sio_ids[] = {</programlisting>
+
+ <para>then scroll down to find the correct place to add the entry
+ for your device. The entries look like this, and are sorted on
+ the ASCII Vendor ID string which should be included in the
+ comment to the right of the line of code along with all (if it
+ will fit) or part of the <emphasis>Device Description</emphasis>
+ from the output of &man.pnpinfo.8;:</para>
+
+ <programlisting>{0x0f804f3f, NULL}, /* OZO800f - Zoom 2812 (56k Modem) */
+{0x39804f3f, NULL}, /* OZO8039 - Zoom 56k flex */
+{0x3024a341, NULL}, /* PMC2430 - Pace 56 Voice Internal Modem */
+{0x1000eb49, NULL}, /* ROK0010 - Rockwell ? */
+{0x5002734a, NULL}, /* RSS0250 - 5614Jx3(G) Internal Modem */</programlisting>
+
+ <para>Add the hexadecimal Vendor ID for your device in the
+ correct place, save the file, rebuild your kernel, and reboot.
+ Your device should now be found as an <literal>sio</literal>
+ device as it was under FreeBSD 3.X</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="nlist-failed">
+ <para>Why do I get the error <errorname>nlist failed</errorname> when
+ running, for example, <command>top</command> or
+ <command>systat</command>?</para>
+ </question>
+
+ <answer>
+ <para>The problem is that the application you are trying to run is
+ looking for a specific kernel symbol, but, for whatever reason,
+ cannot find it; this error stems from one of two problems:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Your kernel and userland are not synchronized (i.e., you
+ built a new kernel but did not do an
+ <maketarget>installworld</maketarget>, or vice versa), and
+ thus the symbol table is different from what the user
+ application thinks it is. If this is the case, simply
+ complete the upgrade process (see
+ <filename>/usr/src/UPDATING</filename> for the correct
+ sequence).</para>
+ </listitem>
+
+ <listitem>
+ <para>You are not using <command>/boot/loader</command> to load
+ your kernel, but doing it directly from boot2 (see
+ &man.boot.8;). While there is nothing wrong with bypassing
+ <command>/boot/loader</command>, it generally does a better
+ job of making the kernel symbols available to user
+ applications.</para>
+ </listitem>
+ </itemizedlist>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="connection-delay">
+ <para>Why does it take so long to connect to my computer via
+ <command>ssh</command> or <command>telnet</command>?</para>
+ </question>
+
+ <answer>
+ <para>The symptom: there is a long delay between the time the TCP
+ connection is established and the time when the client software
+ asks for a password (or, in &man.telnet.1;'s case, when a login
+ prompt appears).</para>
+
+ <para>The problem: more likely than not, the delay is caused by
+ the server software trying to resolve the client's IP address
+ into a hostname. Many servers, including the Telnet and SSH
+ servers that come with FreeBSD, do this in order to, among
+ other things, store the hostname in a log file for future
+ reference by the administrator.</para>
+
+ <para>The remedy: if the problem occurs whenever you connect from
+ your computer (the client) to any server, the problem is with
+ the client; likewise, if the problem only occurs when someone
+ connects to your computer (the server) the problem is with the
+ server.</para>
+
+ <para>If the problem is with the client, the only remedy is to
+ fix the DNS so the server can resolve it. If this is on a
+ local network, consider it a server problem and keep reading;
+ conversely, if this is on the global Internet, you will most
+ likely need to contact your ISP and ask them to fix it for
+ you.</para>
+
+ <para>If the problem is with the server, and this is on a local
+ network, you need to configure the server to be able to resolve
+ address-to-hostname queries for your local address range. See
+ the &man.hosts.5; and &man.named.8; manual pages for more
+ information. If this is on the global Internet, the problem
+ may be that your server's resolver is not functioning
+ correctly. To check, try to look up another host--say,
+ <hostid>www.yahoo.com</hostid>. If it does not work, that is
+ your problem.</para>
+
+ <para>Following a fresh install of &os;, it is also possible
+ that domain and nameserver information is missing from
+ <filename>/etc/resolv.conf</filename>. This will often cause
+ a delay in <application>SSH</application>, as the option
+ <quote>UseDNS</quote> is set to <quote>yes</quote> by default
+ in the <filename>sshd_config</filename> file in
+ <filename>/etc/ssh</filename>. If this is causing the
+ problem, you will either need to fill in the missing information
+ in <filename>/etc/resolv.conf</filename> or set <quote>UseDNS</quote>
+ to <quote>no</quote> in <filename>sshd_config</filename>
+ as a temporary workaround.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="stray-irq">
+ <para>What does <errorname>stray IRQ</errorname> mean?</para>
+ </question>
+ <answer>
+ <para>Stray IRQs are indications of hardware IRQ glitches,
+ mostly from hardware that removes its interrupt request in
+ the middle of the interrupt request acknowledge
+ cycle.</para>
+ <para>One has three options for dealing with this:</para>
+ <itemizedlist>
+ <listitem>
+ <para>Live with the warnings. All except the first 5
+ per irq are suppressed anyway.</para>
+ </listitem>
+ <listitem>
+ <para>Break the warnings by changing 5 to 0 in
+ <function>isa_strayintr()</function> so that all the
+ warnings are suppressed.</para>
+ </listitem>
+ <listitem>
+ <para>Break the warnings by installing parallel port
+ hardware that uses irq 7 and the PPP driver for it (this
+ happens on most systems), and install an ide drive or
+ other hardware that uses irq 15 and a suitable driver
+ for it.</para>
+ </listitem>
+ </itemizedlist>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="file-table-full">
+ <para>Why does <errorname>file: table is full</errorname> show up
+ repeatedly in dmesg?</para>
+ </question>
+ <answer>
+ <para>
+ This error message indicates you have exhausted the number
+ of available file descriptors on your system. Please see
+ the <ulink
+ url="&url.books.handbook;/configtuning-kernel-limits.html#KERN-MAXFILES">kern.maxfiles
+ </ulink>section of the <ulink
+ url="&url.books.handbook;/configtuning-kernel-limits.html">Tuning
+ Kernel Limits</ulink> section of the Handbook for a
+ discussion and solution.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="laptop-clock-skew">
+ <para>Why does the clock on my laptop keep incorrect time?</para>
+ </question>
+
+ <answer>
+ <para>Your laptop has two or more clocks, and FreeBSD has chosen to
+ use the wrong one.</para>
+
+ <para>Run &man.dmesg.8;, and check for lines that contain
+ <literal>Timecounter</literal>. The last line printed is the one
+ that FreeBSD chose, and will almost certainly be
+ <literal>TSC</literal>.</para>
+
+ <screen>&prompt.root; <userinput>dmesg | grep Timecounter</userinput>
+Timecounter "i8254" frequency 1193182 Hz
+Timecounter "TSC" frequency 595573479 Hz</screen>
+
+ <para>You can confirm this by checking the
+ <varname>kern.timecounter.hardware</varname>
+ &man.sysctl.3;.</para>
+
+ <screen>&prompt.root; <userinput>sysctl kern.timecounter.hardware</userinput>
+kern.timecounter.hardware: TSC</screen>
+
+ <para>The BIOS may modify the TSC clock&mdash;perhaps to change the
+ speed of the processor when running from batteries, or going into
+ a power saving mode, but FreeBSD is unaware of these adjustments,
+ and appears to gain or lose time.</para>
+
+ <para>In this example, the <literal>i8254</literal> clock is also
+ available, and can be selected by writing its name to the
+ <varname>kern.timecounter.hardware</varname>
+ &man.sysctl.3;.</para>
+
+ <screen>&prompt.root; <userinput>sysctl -w kern.timecounter.hardware=i8254</userinput>
+kern.timecounter.hardware: TSC -&gt; i8254</screen>
+
+ <para>Your laptop should now start keeping more accurate
+ time.</para>
+
+ <para>To have this change automatically run at boot time, add the
+ following line to <filename>/etc/sysctl.conf</filename>.</para>
+
+ <programlisting>kern.timecounter.hardware=i8254</programlisting>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="null-null">
+ <para>Why did my laptop fail to correctly probe PC cards?</para>
+ </question>
+
+ <answer>
+ <para>This problem is common on laptops that boot more than
+ one operating system. Some non-BSD operating systems
+ leave PC card hardware in an inconsistent state.
+ <command>pccardd</command> will detect the card as
+ <errorname>"(null)""(null)"</errorname> instead of its
+ actual model.</para>
+
+ <para>You must remove all power from the PC card slot to
+ fully reset the hardware. Completely power off the
+ laptop. (Do not suspend it, do not let it go into standby;
+ the power needs to be completely off.) Wait a few
+ moments, and reboot. Your PC card should work now.</para>
+
+ <para>Some laptop hardware lies when it claims to be off.
+ If the above does not work shut down, remove the battery,
+ wait a moment, replace the battery, and reboot.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="boot-read-error">
+ <para>Why does FreeBSD's boot loader display
+ <errorname>Read error</errorname> and stop after the BIOS
+ screen?</para>
+ </question>
+
+ <answer>
+ <para>FreeBSD's boot loader is incorrectly recognizing the hard
+ drive's geometry. This must be manually set within fdisk when
+ creating or modifying FreeBSD's slice.
+ </para>
+
+ <para>The correct drive geometry values can be found within the
+ machine's BIOS. Look for the number of cylinders, heads and
+ sectors for the particular drive.
+ </para>
+
+ <para>Within &man.sysinstall.8;'s fdisk, hit
+ <keycap>G</keycap> to set the drive geometry.</para>
+
+ <para>A dialog will pop up requesting the number of
+ cylinders, heads and sectors. Type the numbers found from
+ the BIOS separated by forward slashes. For example, values
+ of 5000 cylinders, 250 heads, and 60 sectors would be entered as
+ <userinput>5000/250/60</userinput>.
+ </para>
+
+ <para>Press enter to set the values, and hit
+ <keycap>W</keycap> to write the new partition table to the
+ drive.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="bootmanager-restore">
+ <para>Another operating system destroyed my Boot Manager. How do I
+ get it back?</para>
+ </question>
+
+ <answer>
+ <para>Enter &man.sysinstall.8; and choose Configure,
+ then Fdisk. Select the disk the Boot Manager resided on
+ with the <keycap>space</keycap> key. Press
+ <keycap>W</keycap> to write changes to the drive. A prompt
+ will appear asking which boot loader to install. Select this,
+ and it will be restored.
+ </para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="indefinite-wait-buffer">
+ <para>What does the error <errorname>swap_pager: indefinite
+ wait buffer:</errorname> mean?</para>
+ </question>
+
+ <answer>
+ <para>This means that a process is trying to page memory to
+ disk, and the page attempt has hung trying to access the
+ disk for more than 20 seconds. It might be caused by bad
+ blocks on the disk drive, disk wiring, cables, or any
+ other disk I/O-related hardware. If the drive itself is
+ actually bad, you will also see disk errors in
+ <filename>/var/log/messages</filename> and in the output
+ of <command>dmesg</command>. Otherwise, check your cables
+ and connections.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="udma-icrc">
+ <para>What are <quote>UDMA ICRC</quote> errors, and how do I
+ fix them?</para>
+ </question>
+
+ <answer>
+ <para>The &man.ata.4; driver reports <quote>UDMA ICRC</quote>
+ errors when a DMA transfer to or from a drive is corrupted.
+ The driver will retry the operation a few times. Should
+ the retries fail, it will switch from DMA to the slower PIO
+ mode of communication with the device.</para>
+
+ <para>The problem can be caused by many factors, although
+ perhaps the most common cause is faulty or incorrect
+ cabling. Check that the ATA cables are undamaged and rated
+ for the Ultra DMA mode in use. If you are using removable
+ drive trays, they must also be compatible. Be sure that
+ all connections are making good contact. Problems have
+ also been noticed when an old drive is installed on the
+ same ATA channel as an Ultra DMA 66 (or faster) drive.
+ Lastly, these errors can indicate that the drive is
+ failing. Most drive vendors provide testing software for
+ their drives, so test your drive, and, if necessary, back
+ up your data and replace it.</para>
+
+ <para>The &man.atacontrol.8; utility can be used to show and
+ select the DMA or PIO modes used for each ATA device. In
+ particular, <command>atacontrol mode
+ <replaceable>channel</replaceable></command> will show the
+ modes in use on a particular ATA channel, where the primary
+ channel is numbered 0, and so on.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="lock-order-reversal">
+ <para>What is a <errorname>lock order reversal</errorname>?</para>
+ </question>
+
+ <answer>
+ <para>&a.rwatson; answered this question very succinctly on
+ the freebsd-current list in a thread entitled <quote><ulink
+ url="http://docs.freebsd.org/cgi/getmsg.cgi?fetch=65165+0+/usr/local/www/db/text/2003/freebsd-current/20031221.freebsd-current">lock
+ order reversals - what do they mean?</ulink></quote></para>
+
+ <blockquote>
+ <attribution>&a.rwatson; on freebsd-current, December 14,
+ 2003</attribution>
+
+ <para>These warnings are generated by Witness, a run-time lock
+ diagnostic system found in FreeBSD -CURRENT kernels (but
+ removed in releases). You can read more about Witness in the
+ &man.witness.4; man page, which talks about its capabilities. Among
+ other things, Witness performs run-time lock order verification
+ using a combination of hard coded lock orders, and run-time
+ detected lock orders, and generates console warnings when lock
+ orders are violated. The intent of this is to detect the
+ potential for deadlocks due to lock order violations; it is worth
+ observing that Witness is actually slightly conservative, and so
+ it is possible to get false positives. In the event that Witness
+ is accurately reporting a lock order problem, it is basically
+ saying "If you were unlucky, a deadlock would have happened
+ here". There are a couple of "well known" false positives,
+ which we need to do a better job of documenting to prevent
+ spurious reports. The non-well-known ones typically correspond
+ to bugs in newly added locking, as lock order reversals usually
+ get fixed pretty quickly because Witness is busy generating
+ warnings :-).</para>
+ </blockquote>
+
+ <note>
+ <para>A so-called "false positive" is actually Witness tripping
+ over a much more serious bug. Such bugs are typically a page
+ fault or memory corruption experienced inside of the kernel, or
+ a name clash with mutexes.</para>
+ </note>
+ <note>
+ <para>See <ulink
+ url="http://sources.zabbadoz.net/freebsd/lor.html">Bjoern
+ Zeeb's lock order reversal page</ulink> for the status of
+ known lock order reversals.</para>
+ </note>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="called-with-non-sleepable-locks-held">
+ <para>What does <errorname>Called ... with the following
+ non-sleepable locks held</errorname> mean?</para>
+ </question>
+
+ <answer>
+ <para>This means that a function that may sleep was called while
+ a mutex (or other unsleepable) lock was held.</para>
+
+ <para>The reason this is an error is because mutexes are not
+ intended to be held for long periods of time; they are
+ supposed to only be held to maintain short periods of
+ synchronization. This programming contract allows device
+ drivers to use mutexes to synchronize with the rest of the kernel
+ during interrupts. Interrupts (under FreeBSD) may not sleep.
+ Hence it is imperative that no subsystem in the kernel
+ block for an extended period while holding a mutex.</para>
+
+ <para>To catch such errors, assertions may be added to the kernel
+ that interact with the witness subsystem to emit a warning
+ or fatal error (depending on the system configuration) when
+ a potentially blocking call is made while holding a mutex.</para>
+
+ <para>In summary, such warnings are non-fatal, however with
+ unfortunate timing they could cause undesirable effects
+ ranging from a minor blip in the system's responsiveness
+ to a complete system lockup.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="touch-not-found">
+ <para>Why does buildworld/installworld die with the message
+ <errorname>touch: not found</errorname>?</para>
+ </question>
+
+ <answer>
+ <para>This error does not mean that the &man.touch.1; utility is
+ missing. The error is instead probably due to the dates of the
+ files being set sometime in the future. If your CMOS-clock is
+ set to local time you need to run the command
+ <command>adjkerntz&nbsp;-i</command> to adjust the kernel clock
+ when booting into single user mode.</para>
+ </answer>
+ </qandaentry>
+ </qandaset>
+ </chapter>
+
+ <chapter id="commercial">
+ <title>Εμπορικές Εφαρμογές</title>
+
+ <note>
+ <para>This section is still very sparse, though we are 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. See <ulink
+ url="&url.base;/commercial/index.html">the
+ Vendors page</ulink> for a longer list.</para>
+ </note>
+
+ <qandaset>
+ <qandaentry>
+ <question id="officesuite">
+ <para>Where can I get an Office Suite for FreeBSD?</para>
+ </question>
+
+ <answer>
+ <para>The open-source <ulink
+ url="http://www.openoffice.org">OpenOffice.org</ulink> office
+ suite works natively on FreeBSD. The &linux; version of
+ <ulink
+ url="http://www.sun.com/staroffice/">StarOffice</ulink>,
+ the value-added closed-source version of OpenOffice.org, also
+ works on FreeBSD.</para>
+
+ <para>FreeBSD also includes a variety of text editors,
+ spreadsheets, and drawing programs in the Ports
+ Collection.</para>
+ </answer>
+ </qandaentry>
+ <qandaentry>
+ <question id="motif">
+ <para>Where can I get &motif; for FreeBSD?</para>
+ </question>
+
+ <answer>
+ <para>The Open Group has released the source code to &motif; 2.2.2.
+ You can install the <literal>open-motif</literal> package, or
+ compile it from ports. Refer to
+ <ulink url="&url.books.handbook;/ports.html">the ports section of the
+ Handbook</ulink> for more information on how to do this.
+
+ <note>
+ <para>The Open &motif; distribution only allows redistribution
+ if it is running on an <ulink url="http://www.opensource.org/">
+ open source</ulink> operating system.</para>
+ </note>
+ </para>
+
+ <para>In addition, there are commercial distributions of the &motif;
+ software available. These, however, are not for free, but their
+ license allows them to be used in closed-source software.
+ Contact <link linkend="apps2go">Apps2go</link> for the
+ least expensive ELF &motif; 2.1.20 distribution for FreeBSD
+ (either &i386; or Alpha).<anchor id="apps2go"></para>
+
+ <para>There are two distributions, the <quote>development
+ edition</quote> and the <quote>runtime edition</quote> (for
+ much less). These distributions includes:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>OSF/&motif; manager, xmbind, panner, wsm.</para>
+ </listitem>
+
+ <listitem>
+ <para>Development kit with uil, mrm, xm, xmcxx, include
+ and Imake files.</para>
+ </listitem>
+
+ <listitem>
+ <para>Static and dynamic ELF libraries.</para>
+ </listitem>
+
+ <listitem>
+ <para>Demonstration applets.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Be sure to specify that you want the FreeBSD version of
+ &motif; when ordering (do not forget to mention the architecture
+ you want too)! Versions for NetBSD and OpenBSD are also sold by
+ <emphasis>Apps2go</emphasis>. This is currently a FTP only
+ download.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>More info</term>
+ <listitem>
+ <para><ulink url="http://www.apps2go.com/">
+ Apps2go WWW page</ulink></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>or</term>
+ <listitem>
+ <para>
+ <email>sales@apps2go.com</email> or
+ <email>support@apps2go.com</email>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>or</term>
+ <listitem>
+ <para>phone (817) 431 8775 or +1 817 431-8775</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>Contact <link linkend="xig">Xi Graphics</link> for an
+ a.out &motif; 2.0 distribution for FreeBSD.</para>
+
+ <para>This distribution includes:</para>
+ <itemizedlist>
+ <listitem>
+ <para>OSF/&motif; manager, xmbind, panner, wsm.</para>
+ </listitem>
+
+ <listitem>
+ <para>Development kit with uil, mrm, xm, xmcxx, include
+ and Imake files.</para>
+ </listitem>
+
+ <listitem>
+ <para>Static and dynamic libraries (for use with FreeBSD
+ 2.2.8 and earlier).</para>
+ </listitem>
+
+ <listitem>
+ <para>Demonstration applets.</para>
+ </listitem>
+
+ <listitem>
+ <para>Preformatted manual pages.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Be sure to specify that you want the FreeBSD version
+ of &motif; when ordering! Versions for BSDI and &linux; are also
+ sold by <emphasis>Xi Graphics</emphasis>. This is currently a 4
+ diskette set... in the future this will change to a unified CD
+ distribution like their CDE.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="cde">
+ <para>Where can I get CDE for FreeBSD?</para>
+ </question>
+
+ <answer>
+ <para><link linkend="xig">Xi Graphics</link> used to sell CDE
+ for FreeBSD, but no longer do.</para>
+
+ <para><ulink url="http://www.kde.org/">KDE</ulink> is an open
+ source X11 desktop which is similar to CDE in many respects.
+ You might also like the look and feel of <ulink
+ url="http://www.xfce.org/">xfce</ulink>. KDE and xfce are both
+ in the <ulink url="&url.base;/ports/index.html">ports
+ system</ulink>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="commercial-xserver">
+ <para>Are there any commercial high-performance X servers?</para>
+ </question>
+
+ <answer>
+ <para>Yes, <ulink url="http://www.xig.com/">Xi Graphics</ulink>
+ sells Accelerated-X products for FreeBSD and other Intel based
+ systems.</para>
+
+ <para>The Xi Graphics offering is a high performance X Server
+ that 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;. Xi
+ Graphics also offers a high performance X Server tailored for
+ laptop support.<anchor id="xig"></para>
+
+ <para>There is a free <quote>compatibility demo</quote> of
+ version 5.0 available.</para>
+
+ <para>Xi Graphics also sells &motif; and CDE for FreeBSD (see
+ above).</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>More info</term>
+ <listitem>
+ <para><ulink url="http://www.xig.com/">
+ Xi Graphics WWW page</ulink></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>or</term>
+ <listitem>
+ <para><email>sales@xig.com</email>
+ or <email>support@xig.com</email>
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>or</term>
+ <listitem>
+ <para>phone (800) 946 7433 or +1 303 298-7478.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="database-systems">
+ <para>Are there any Database systems for FreeBSD?</para>
+ </question>
+
+ <answer>
+ <para>Yes! See the <ulink
+ url="&url.base;/commercial/software_bycat.html#CATEGORY_DATABASE">
+ Commercial Vendors</ulink> section of FreeBSD's Web site.</para>
+
+ <para>Also see the <ulink
+ url="&url.base;/ports/databases.html">
+ Databases</ulink> section of the Ports collection.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="oracle-support">
+ <para>Can I run &oracle; on FreeBSD?</para>
+ </question>
+
+ <answer>
+ <para>Yes. The following pages tell you exactly how to set up
+ &linux;-&oracle; on FreeBSD:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para><ulink
+ url="http://www.unixcities.com/oracle/index.html">
+ http://www.unixcities.com/oracle/index.html</ulink></para>
+ </listitem>
+
+ <listitem>
+ <para><ulink
+ url="http://www.shadowcom.net/freebsd-oracle9i/">
+ http://www.shadowcom.net/freebsd-oracle9i/</ulink></para>
+
+ </listitem>
+ </itemizedlist>
+ </answer>
+ </qandaentry>
+ </qandaset>
+ </chapter>
+
+ <chapter id="applications">
+ <title>Εφαρμογές Τελικού Χρήστη</title>
+
+ <qandaset>
+ <qandaentry>
+ <question id="user-apps">
+ <para>So, where are all the user applications?</para>
+ </question>
+
+ <answer>
+ <para>Please take a look at <ulink
+ url="&url.base;/ports/index.html">the ports page</ulink>
+ for info on software packages ported to FreeBSD. The list
+ currently tops &os.numports; and is growing daily, so come
+ back to check often or subscribe to the
+ <literal>freebsd-announce</literal> <link
+ linkend="mailing">mailing list</link> for periodic updates
+ on new entries.</para>
+
+ <para>Most ports should work on the 4.X, 5.X, and 6.X branches.
+ Each time a FreeBSD release is made, a snapshot of the
+ ports tree at the time of release in also included in the
+ <filename>ports/</filename> directory.</para>
+
+ <para>We also support the concept of a
+ <quote>package</quote>, essentially no more than a compressed
+ binary distribution with a little extra intelligence
+ embedded in it for doing whatever custom installation work
+ is required. A package can be installed and uninstalled
+ again easily without having to know the gory details of
+ which files it includes.</para>
+
+ <para>Use the package installation menu in
+ <filename>/stand/sysinstall</filename> (under the
+ post-configuration menu item) or invoke the
+ &man.pkg.add.1; command on the specific package files you
+ are interested in installing. Package files can usually be
+ identified by their <filename>.tgz</filename> or <filename>.tbz</filename> suffix and
+ CDROM distribution people will have a
+ <filename>packages/All</filename> 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:</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>for 4.X-RELEASE/4-STABLE</term>
+ <listitem>
+ <para><ulink
+ url="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-4-stable/">
+ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-4-stable/</ulink></para>
+
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>for 5.X-RELEASE/5-STABLE</term>
+ <listitem>
+ <para><ulink
+ url="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-5-stable/">
+ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-5-stable</ulink></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>for 6.X-RELEASE/6-STABLE</term>
+ <listitem>
+ <para><ulink
+ url="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-6-stable/">
+ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-6-stable</ulink></para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>for 7-CURRENT</term>
+ <listitem>
+ <para><ulink
+ url="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-7-current/">
+ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-7-current</ulink></para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>or your nearest local mirror site.</para>
+
+ <para>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 <ulink
+ url="ftp://ftp.FreeBSD.org/pub/FreeBSD/">ftp.FreeBSD.org</ulink>
+ master site.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="configure-inn">
+ <para>How do I configure INN (Internet News) for my machine?</para>
+ </question>
+
+ <answer>
+ <para>After installing the <filename
+ role="package">news/inn</filename> package or port, an
+ excellent place to start is <ulink
+ url="http://www.visi.com/~barr/INN.html">Dave
+ Barr's INN Page</ulink> where you will find the INN
+ FAQ.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="java">
+ <para>Does FreeBSD support &java;?</para>
+ </question>
+
+ <answer>
+ <para>Yes. Please see <ulink
+ url="&url.base;/java/index.html">
+ http://www.FreeBSD.org/java/</ulink>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="ports-4x">
+ <para>Why can I not build this port on my 4.X-STABLE machine?</para>
+ </question>
+
+ <answer>
+ <para>If you are running a FreeBSD version that lags
+ significantly behind -CURRENT or -STABLE, you may need to
+ update your ports collection; see the <ulink
+ url="&url.books.porters-handbook;/keeping-up.html">
+ Keeping Up</ulink> section of the Porter's Handbook for further
+ information on how to do this.
+ If you are up to date,
+ then someone might have committed a change to the port which
+ works for -CURRENT but which broke the port for -STABLE. Please
+ submit a bug report on this with the
+ &man.send-pr.1; command, since the ports
+ collection is supposed to work for both the -CURRENT and
+ -STABLE branches.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="make-index">
+ <para>I just tried to build <filename>INDEX</filename>
+ using <command>make index</command>, and it failed.
+ Why?</para>
+ </question>
+
+ <answer>
+ <para>First, always make sure that you have a completely
+ up-to-date Ports Collection. Errors that affect building
+ <filename>INDEX</filename> from an up-to-date copy of the
+ Ports Collection are high-visibility and are thus almost
+ always fixed immediately.</para>
+
+ <para>However, if you are up-to-date, perhaps you are seeing
+ another problem. <command>make index</command> has a
+ known bug in dealing with incomplete copies of the Ports
+ Collection. It assumes that you have a local copy of every
+ single port that every other port that you have a local copy
+ of depends on. To explain, if you have a copy of
+ <filename>foo/bar</filename> on your disk, and
+ <filename>foo/bar</filename> depends on
+ <filename>baz/quux</filename>, then you must also have
+ a copy of <filename>baz/quux</filename> on your disk, and
+ the ports <filename>baz/quux</filename> depends on, and
+ so on. Otherwise, <command>make index</command> has
+ insufficient information to create its dependency tree.</para>
+
+ <para>This is particularly a problem for &os; users who
+ utilize &man.cvsup.1; to track the Ports Collection but
+ choose not to install certain categories by specifying
+ them in <filename>refuse</filename>. In theory, one
+ should be able to refuse categories, but in practice
+ there are too many ports that depend on ports in other
+ categories. Until someone comes up with a solution for
+ this problem, the general rule is is that if you want to
+ build <filename>INDEX</filename>, you must have a complete
+ copy of the Ports Collection.</para>
+
+ <para>There are rare cases where <filename>INDEX</filename>
+ will not build due to odd cases involving
+ <makevar>WITH_<replaceable>*</replaceable></makevar> or
+ <makevar>WITHOUT_<replaceable>*</replaceable></makevar>
+ variables being set in <filename>make.conf</filename>. If
+ you suspect that this is the case, please try to make
+ <filename>INDEX</filename> with those Makevars turned off
+ before reporting it to &a.ports;.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="cvsup-in-base">
+ <para>Why is CVSup not integrated in the main FreeBSD tree?
+ </para>
+ </question>
+
+ <answer>
+ <para>The FreeBSD base system is designed as self-hosting - it
+ should be possible to build the whole operating system starting
+ with a very limited set of tools. Thus, the actual build tools
+ needed to compile the FreeBSD sources are bundled with the
+ sources themselves. This includes a C compiler (&man.gcc.1;),
+ &man.make.1;, &man.awk.1;, and similar tools.</para>
+
+ <para>Since CVSup is written in Modula-3, adding it to the FreeBSD
+ base system would also require adding and maintaining a Modula-3
+ compiler. This would lead to both an increase in the disk space
+ consumed by the FreeBSD sources and additional maintenance work.
+ Thus, it is much easier for both the developers and users to
+ keep CVSup as a separate port, which can be easily installed as
+ a package bundled on the FreeBSD installation CDs.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="ports-update">
+ <para>I updated the sources, now how do I update my installed
+ ports?</para>
+ </question>
+
+ <answer>
+ <para>FreeBSD does not include a port upgrading tool, but it
+ does have some tools to make the upgrade process somewhat
+ easier. You can also install additional tools to simplify
+ port handling.</para>
+
+ <para>The &man.pkg.version.1; command can generate a script
+ that will update installed ports to the latest version in
+ the ports tree.</para>
+
+ <screen>&prompt.root; <userinput>pkg_version -c &gt; <replaceable>/tmp/myscript</replaceable></userinput></screen>
+
+ <para>The output script <emphasis>must</emphasis> be edited by
+ hand before you use it. Recent versions of
+ &man.pkg.version.1; force this by inserting an
+ &man.exit.1; at the beginning of the script.</para>
+
+ <para>You should save the output of the script, as it will note
+ packages that depend on the one that has been updated. These
+ may or may not need to be updated as well. The usual case where
+ they need to be updated is that a shared library has changed
+ version numbers, so the ports that used that library need to be
+ rebuilt to use the new version.</para>
+
+ <note>
+ <para>Beginning with FreeBSD 5.0 (and higher revisions),
+ &man.pkg.version.1; no longer supports the
+ <option>-c</option> option.</para>
+ </note>
+
+ <para>If you have the disk space, you can use the
+ <command>portupgrade</command> tool to automate all of
+ this. <command>portupgrade</command> includes various
+ tools to simplify package handling. It is available under
+ <filename role="package">ports-mgmt/portupgrade</filename>.
+ Since it is written in Ruby,
+ <command>portupgrade</command> is an unlikely candidate for
+ integration with the main FreeBSD tree. That should not
+ stop anyone from using it, however.</para>
+
+ <para>If your system is up full time, the &man.periodic.8; system
+ can be used to generate a weekly list of ports that might need
+ updating by setting
+ <literal>weekly_status_pkg_enable="YES"</literal> in
+ <filename>/etc/periodic.conf</filename>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="minimal-sh">
+ <para>Why is <command>/bin/sh</command> so minimal? Why does
+ FreeBSD not use <command>bash</command> or another shell?</para>
+ </question>
+
+ <answer>
+ <para>Because &posix; says that there shall be such a shell.</para>
+
+ <para>The more complicated answer: many people need to write shell
+ scripts which will be portable across many systems. That is why
+ &posix; specifies the shell and utility commands in great detail.
+ Most scripts are written in Bourne shell, and because several
+ important programming interfaces (&man.make.1;, &man.system.3;,
+ &man.popen.3;, and analogues in higher-level scripting
+ languages like Perl and Tcl) are specified to use the Bourne
+ shell to interpret commands. Because the Bourne shell is so
+ often and widely used, it is important for it to be quick to
+ start, be deterministic in its behavior, and have a small
+ memory footprint.</para>
+
+ <para>The existing implementation is our best effort at meeting as
+ many of these requirements simultaneously as we can. In order to
+ keep <command>/bin/sh</command> small, we have not provided many
+ of the convenience features that other shells have. That is why the
+ Ports Collection includes more featureful shells like bash, scsh,
+ tcsh, and zsh. (You can compare for yourself the memory
+ utilization of all these shells by looking at the
+ <quote>VSZ</quote> and <quote>RSS</quote> columns in a <command>ps
+ -u</command> listing.)</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="netscape-slow-startup">
+ <para>Why do &netscape; and Opera take so long to
+ start?</para>
+ </question>
+
+ <answer>
+ <para>The usual answer is that DNS on your system is
+ misconfigured. Both &netscape; and Opera perform DNS checks
+ when starting up. The browser will not appear on your
+ desktop until the program either gets a response or
+ determines that the system has no network
+ connection.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="ports-base-update">
+ <para>I updated parts of the Ports Collection using CVSup, and
+ now many ports fail to build with mysterious error messages!
+ What happened? Is the Ports Collection broken in some major
+ way?</para>
+ </question>
+
+ <answer>
+ <para>If you only update parts of the Ports Collection, using
+ one of its CVSup subcollections and not the
+ <literal>ports-all</literal> CVSup collection, you should
+ <emphasis>always</emphasis> update the
+ <literal>ports-base</literal> subcollection too! The reasons
+ are described <ulink
+ url="&url.books.handbook;/cvsup.html#CVSUP-COLLEC-PBASE-WARN">in the
+ Handbook</ulink>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="midi-sound-files">
+ <para>How do I create audio CDs from my MIDI files?</para>
+ </question>
+
+ <answer><para>To create audio CDs from MIDI files, first
+ install <filename role="package">audio/timidity++</filename>
+ from ports then install manually the GUS patches set by Eric
+ A. Welsh, available at <ulink
+ url="http://www.stardate.bc.ca/eawpatches/html/default.htm"></ulink>.
+ After timidity++ has been installed properly, midi files may
+ be converted to wav files with the following command
+ line:</para>
+
+ <screen>&prompt.user; <userinput>timidity -Ow -s 44100 -o /tmp/juke/01.wav 01.mid</userinput></screen>
+
+ <para>The wav files can then be converted to other formats
+ or burned onto audio CDs, as described in the FreeBSD
+ Handbook.</para>
+ </answer>
+ </qandaentry>
+ </qandaset>
+ </chapter>
+
+ <chapter id="kernelconfig">
+ <title>Ρύθμιση Πυρήνα</title>
+
+ <qandaset>
+ <qandaentry>
+ <question id="make-kernel">
+ <para>I would like to customize my kernel. Is it difficult?</para>
+ </question>
+
+ <answer>
+ <para>Not at all! Check out the <ulink
+ url="&url.books.handbook;/kernelconfig.html">
+ kernel config section of the Handbook</ulink>.</para>
+
+ <note>
+ <para>We recommend that you make a dated snapshot of
+ your new <filename>/kernel</filename> called
+ <filename>/kernel.YYMMDD</filename> after you get it
+ working properly. Also back up your new
+ <filename>/modules</filename> directory to
+ <filename>/modules.YYMMDD</filename>. That way, if
+ you make a mistake the next time you play with your
+ configuration you can boot the backup kernel instead
+ of having to fall back to
+ <filename>kernel.GENERIC</filename>. This is
+ particularly important if you are now booting from a
+ controller that GENERIC does not support.</para>
+ </note>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="missing-hw-float">
+ <para>My kernel compiles fail because
+ <literal>_hw_float</literal> is missing. How do I solve
+ this problem?</para>
+ </question>
+
+ <answer>
+ <para>You probably removed <devicename>npx0</devicename>
+ (see &man.npx.4;) from your kernel configuration file
+ because you do not have a math co-processor. The
+ <devicename>npx0</devicename> device is
+ <emphasis>MANDATORY</emphasis>. Somewhere inside your
+ hardware lies a device that provides hardware
+ floating-point support, even if it is no longer a separate
+ device as used in the good old 386 days. You
+ <emphasis>must</emphasis> include the
+ <devicename>npx0</devicename> device. Even if you manage
+ to build a kernel without <devicename>npx0</devicename>
+ support, it will not boot anyway. </para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="why-kernel-big">
+ <para>Why is my kernel so big (over 10MB)?</para>
+ </question>
+
+ <answer>
+ <para>Chances are, you compiled your kernel in
+ <emphasis>debug mode</emphasis>. Kernels built in debug
+ mode contain many symbols that are used for debugging,
+ thus greatly increasing the size of the kernel. Note that
+ there will be little or no performance decrease from
+ running a debug kernel, and it is useful to keep one
+ around in case of a system panic.</para>
+
+ <para>However, if you are running low on disk space, or
+ you simply do not want to run a debug kernel, make sure
+ that both of the following are true:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>You do not have a line in your kernel
+ configuration file that reads:</para>
+
+ <programlisting>makeoptions DEBUG=-g</programlisting>
+ </listitem>
+
+ <listitem>
+ <para>You are not running &man.config.8; with
+ the <option>-g</option> option.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Either of the above settings will cause your kernel to
+ be built in debug mode. As long as you make sure you
+ follow the steps above, you can build your kernel
+ normally, and you should notice a fairly large size
+ decrease; most kernels tend to be around 1.5MB to
+ 2MB.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="multiport-serial-interrupts">
+ <para>Why do I get interrupt conflicts with multi-port serial
+ code?</para>
+ </question>
+
+ <answer>
+ <para>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?</para>
+
+ <para>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 an example:</para>
+
+ <programlisting>#
+# 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</programlisting>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="generic-kernel-build-failure">
+ <para>Why does every kernel I try to build fail to compile, even
+ GENERIC?</para>
+ </question>
+
+ <answer>
+ <para>There are a number of possible causes for this problem.
+ They are, in no particular order:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>You are not using the new <command>make
+ buildkernel</command> and <command>make
+ installkernel</command> targets, and your source tree is
+ different from the one used to build the currently running
+ system (e.g., you are compiling 4.3-RELEASE on a 4.0-RELEASE
+ system). If you are attempting an upgrade, please read the
+ <filename>/usr/src/UPDATING</filename> file, paying
+ particular attention to the <quote>COMMON ITEMS</quote>
+ section at the end.</para>
+ </listitem>
+
+ <listitem>
+ <para>You are using the new <command>make
+ buildkernel</command> and <command>make
+ installkernel</command> targets, but you failed to assert
+ the completion of the <command>make buildworld</command>
+ target. The <command>make buildkernel</command> target
+ relies on files generated by the <command>make
+ buildworld</command> target to complete its job
+ correctly.</para>
+ </listitem>
+
+ <listitem>
+ <para>Even if you are trying to build <link
+ linkend="stable">FreeBSD-STABLE</link>, it is possible that
+ you fetched the source tree at a time when it was either
+ being modified, or broken for other reasons; only releases
+ are absolutely guaranteed to be buildable, although <link
+ linkend="stable">FreeBSD-STABLE</link> builds fine the
+ majority of the time. If you have not already done so, try
+ re-fetching the source tree and see if the problem goes
+ away. Try using a different server in case the one you are
+ using is having problems.</para>
+ </listitem>
+ </itemizedlist>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="scheduler-in-use">
+ <para>How can I verify which scheduler is in use on a
+ running system?</para>
+ </question>
+
+ <answer>
+ <para>If you are running &os; version 5.2.1 or earlier, check for
+ the existence of the <literal>kern.quantum</literal> sysctl.
+ If you have it, you should see something like this:</para>
+
+ <screen>&prompt.user; sysctl <replaceable>kern.quantum</replaceable>
+kern.sched.quantum: 99960</screen>
+
+ <para>If the <literal>kern.quantum</literal> sysctl exists, you are
+ using the 4BSD scheduler. If not, you will get an error printed
+ by &man.sysctl.8; (which you can safely ignore):</para>
+
+ <screen>&prompt.user; sysctl <replaceable>kern.sched.quantum</replaceable>
+sysctl: unknown oid 'kern.sched.quantum'</screen>
+
+ <para>In &os; version 5.3-RELEASE and later, the name of the
+ scheduler currently being used is directly available as the value
+ of the <literal>kern.sched.name</literal> sysctl:</para>
+
+ <screen>&prompt.user; sysctl <replaceable>kern.sched.name</replaceable>
+kern.sched.name: 4BSD</screen>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="scheduler-kern-quantum">
+ <para>What is <literal>kern.quantum</literal>?</para>
+ </question>
+
+ <answer>
+ <para><literal>kern.quantum</literal> is the maximum number of
+ ticks a process can run without being preempted. It is
+ specific to the 4BSD scheduler, so you can use its
+ presence or absence to determine which scheduler is in
+ use. In &os; 5.X or later <literal>kern.quantum</literal> has
+ been renamed to <literal>kern.sched.quantum</literal>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="scheduler-kern-sched-quantum">
+ <para>What is <literal>kern.sched.quantum</literal>?</para>
+ </question>
+
+ <answer>
+ <para>See <xref linkend="scheduler-kern-quantum"></para>
+ </answer>
+ </qandaentry>
+ </qandaset>
+ </chapter>
+
+ <chapter id="disks">
+ <title>Δίσκοι, Συστήματα Αρχείων και Φορτωτές Εκκίνησης</title>
+
+ <qandaset>
+ <qandaentry>
+ <question id="adding-disks">
+ <para>How can I add my new hard disk to my FreeBSD system?</para>
+ </question>
+
+ <answer>
+ <para>See the Disk Formatting Tutorial at <ulink
+ url="&url.articles.formatting-media;/index.html">
+ www.FreeBSD.org</ulink>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="new-huge-disk">
+ <para>How do I move my system over to my huge new disk?</para>
+ </question>
+
+ <answer>
+ <para>The best way is to reinstall the OS on the new
+ disk, then move the user data over. This is highly
+ recommended if you have been tracking -STABLE for more
+ than one release, or have updated a release instead of
+ installing a new one. You can install booteasy on both
+ disks with &man.boot0cfg.8;, and dual boot them until
+ you are happy with the new configuration. Skip the
+ next paragraph to find out how to move the data after
+ doing this.</para>
+
+ <para>Should you decide not to do a fresh install, you
+ need to partition and label the new disk with either
+ <filename>/stand/sysinstall</filename>, or &man.fdisk.8;
+ and &man.disklabel.8;. You should also install booteasy
+ on both disks with &man.boot0cfg.8;, so that you can
+ dual boot to the old or new system after the copying
+ is done. See the <ulink
+ url="&url.articles.formatting-media;/index.html">
+ formatting-media article</ulink> for details on this
+ process.</para>
+
+ <para>Now you have the new disk set up, and are ready
+ to move the data. Unfortunately, you cannot just blindly
+ copy the data. Things like device files (in
+ <filename>/dev</filename>), flags, and links tend to
+ screw that up. You need to use tools that understand
+ these things, which means &man.dump.8;.
+ Although it is suggested that you move the data in single user
+ mode, it is not required.</para>
+
+ <para>You should never use anything but &man.dump.8; and
+ &man.restore.8; to move the root filesystem. The
+ &man.tar.1; command may work - then again, it may not.
+ You should also use &man.dump.8; and &man.restore.8;
+ if you are moving a single partition to another empty
+ partition. The sequence of steps to use dump to move
+ a partitions data to a new partition is:</para>
+
+ <procedure>
+ <step>
+ <para>newfs the new partition.</para>
+ </step>
+
+ <step>
+ <para>mount it on a temporary mount point.</para>
+ </step>
+
+ <step>
+ <para>cd to that directory.</para>
+ </step>
+
+ <step>
+ <para>dump the old partition, piping output to the
+ new one.</para>
+ </step>
+ </procedure>
+
+ <para>For example, if you are going to move root to
+ <devicename>/dev/ad1s1a</devicename>, with
+ <filename>/mnt</filename> as the temporary mount point,
+ it is:</para>
+
+ <screen>&prompt.root; <userinput>newfs /dev/ad1s1a</userinput>
+&prompt.root; <userinput>mount /dev/ad1s1a /mnt</userinput>
+&prompt.root; <userinput>cd /mnt</userinput>
+&prompt.root; <userinput>dump 0af - / | restore xf -</userinput></screen>
+
+ <para>Rearranging your partitions with dump takes a bit more
+ work. To merge a partition like <filename>/var</filename>
+ into its parent, create the new partition large enough
+ for both, move the parent partition as described above,
+ then move the child partition into the empty directory
+ that the first move created:</para>
+
+ <screen>&prompt.root; <userinput>newfs /dev/ad1s1a</userinput>
+&prompt.root; <userinput>mount /dev/ad1s1a /mnt</userinput>
+&prompt.root; <userinput>cd /mnt</userinput>
+&prompt.root; <userinput>dump 0af - / | restore xf -</userinput>
+&prompt.root; <userinput>cd var</userinput>
+&prompt.root; <userinput>dump 0af - /var | restore xf -</userinput></screen>
+
+ <para>To split a directory from its parent, say putting
+ <filename>/var</filename> on its own partition when it was not
+ before, create both partitions, then mount the child partition
+ on the appropriate directory in the temporary mount point, then
+ move the old single partition:</para>
+
+ <screen>&prompt.root; <userinput>newfs /dev/ad1s1a</userinput>
+&prompt.root; <userinput>newfs /dev/ad1s1d</userinput>
+&prompt.root; <userinput>mount /dev/ad1s1a /mnt</userinput>
+&prompt.root; <userinput>mkdir /mnt/var</userinput>
+&prompt.root; <userinput>mount /dev/ad1s1d /mnt/var</userinput>
+&prompt.root; <userinput>cd /mnt</userinput>
+&prompt.root; <userinput>dump 0af - / | restore xf -</userinput></screen>
+
+ <para>You might prefer &man.cpio.1;, &man.pax.1;,
+ &man.tar.1; to &man.dump.8; for user data. At the time of
+ this writing, these are known to lose file flag information,
+ so use them with caution.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="dangerously-dedicated">
+ <para>Will a <quote>dangerously dedicated</quote> disk endanger
+ my health?</para>
+ </question>
+
+ <answer>
+
+ <para><anchor id="dedicate">The installation procedure allows
+ you to chose two different methods in partitioning your
+ hard disk(s). The default way makes it compatible with other
+ operating systems on the same machine, by using fdisk table
+ entries (called <quote>slices</quote> 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). The alternative uses
+ the entire disk for FreeBSD, and makes no attempt to be
+ compatible with other operating systems.</para>
+
+ <para>So why it is called <quote>dangerous</quote>? A disk
+ in this mode does not 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. In addition, the
+ <quote>dangerously dedicated</quote> disk's layout is
+ known to confuse many BIOSes, including those from AWARD
+ (e.g. as found in HP Netserver and Micronics systems as
+ well as many others) and Symbios/NCR (for the popular
+ 53C8xx range of SCSI controllers). This is not a complete
+ list, there are more. Symptoms of this confusion include
+ the <errorname>read error</errorname> message printed by
+ the FreeBSD bootstrap when it cannot find itself, as well
+ as system lockups when booting.</para>
+
+ <para>Why have this mode at all then? It only saves a few kbytes
+ of disk space, and it can cause real problems for a new
+ installation. <quote>Dangerously dedicated</quote> mode's
+ origins lie in a desire to avoid one of the most common
+ problems plaguing new FreeBSD installers - matching the BIOS
+ <quote>geometry</quote> numbers for a disk to the disk
+ itself.</para>
+
+ <para><quote>Geometry</quote> is an outdated concept, but one
+ still at the heart of the PC's BIOS and its interaction with
+ disks. When the FreeBSD installer creates slices, it has to
+ record the location of these slices on the disk in a fashion
+ that corresponds with the way the BIOS expects to find them. If
+ it gets it wrong, you will not be able to boot.</para>
+
+ <para><quote>Dangerously dedicated</quote> mode tries to work
+ around this by making the problem simpler. In some cases, it
+ gets it right. But it is meant to be used as a last-ditch
+ alternative - there are better ways to solve the problem 99
+ times out of 100.</para>
+
+ <para>So, how do you avoid the need for <quote>DD</quote> mode
+ when you are installing? Start by making a note of the geometry
+ that your BIOS claims to be using for your disks. You can
+ arrange to have the kernel print this as it boots by specifying
+ <option>-v</option> at the <literal>boot:</literal> prompt, or
+ using <command>boot -v</command> in the loader. Just before the
+ installer starts, the kernel will print a list of BIOS
+ geometries. Do not panic - wait for the installer to start and
+ then use scrollback to read the numbers. Typically the BIOS
+ disk units will be in the same order that FreeBSD lists your
+ disks, first IDE, then SCSI.</para>
+
+ <para>When you are slicing up your disk, check that the disk
+ geometry displayed in the FDISK screen is correct (ie. it
+ matches the BIOS numbers); if it is wrong, use the
+ <keycap>g</keycap> key to fix it. You may have to do this if
+ there is absolutely nothing on the disk, or if the disk has been
+ moved from another system. Note that this is only an issue with
+ the disk that you are going to boot from; FreeBSD will sort
+ itself out just fine with any other disks you may have.</para>
+
+ <para>Once you have got the BIOS and FreeBSD agreeing about the
+ geometry of the disk, your problems are almost guaranteed to be
+ over, and with no need for <quote>DD</quote> mode at all. If,
+ however, you are still greeted with the dreaded <errorname>read
+ error</errorname> message when you try to boot, it is time to cross
+ your fingers and go for it - there is nothing left to
+ lose.</para>
+
+ <para>To return a <quote>dangerously dedicated</quote> 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</para>
+
+ <screen>&prompt.root; <userinput>dd if=/dev/zero of=/dev/rda0 count=15</userinput></screen>
+
+ <para>Alternatively, the undocumented DOS
+ <quote>feature</quote></para>
+
+ <screen><prompt>C:\&gt;</prompt> <userinput>fdisk /mbr</userinput></screen>
+
+ <para>will to install a new master boot record as well, thus
+ clobbering the BSD bootstrap.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="safe-softupdates">
+ <para>Which partitions can safely use Soft Updates? I have
+ heard that Soft Updates on <filename>/</filename> can cause
+ problems.</para>
+ </question>
+
+ <answer>
+ <para>Short answer: you can usually use Soft Updates safely
+ on all partitions.</para>
+
+ <para>Long answer: There used to be some concern over using
+ Soft Updates on the root partition. Soft Updates has two
+ characteristics that caused this. First, a Soft Updates
+ partition has a small chance of losing data during a
+ system crash. (The partition will not be corrupted; the
+ data will simply be lost.) Also, Soft Updates can cause
+ temporary space shortages.</para>
+
+ <para>When using Soft Updates, the kernel can take up to
+ thirty seconds to actually write changes to the physical
+ disk. If you delete a large file, the file still resides
+ on disk until the kernel actually performs the deletion.
+ This can cause a very simple race condition. Suppose you
+ delete one large file and immediately create another large
+ file. The first large file is not yet actually removed
+ from the physical disk, so the disk might not have enough
+ room for the second large file. You get an error that the
+ partition does not have enough space, although you know
+ perfectly well that you just released a large chunk of
+ space! When you try again mere seconds later, the file
+ creation works as you expect. This has left more than one
+ user scratching his head and doubting his sanity, the
+ FreeBSD filesystem, or both.</para>
+
+ <para>If a system should crash after the kernel accepts a
+ chunk of data for writing to disk, but before that data is
+ actually written out, data could be lost or corrupted.
+ This risk is extremely small, but generally manageable.
+ Use of IDE write caching greatly increases this risk; it
+ is strongly recommended that you disable IDE write caching
+ when using Soft Updates.</para>
+
+ <para>These issues affect all partitions using Soft Updates.
+ So, what does this mean for the root partition?</para>
+
+ <para>Vital information on the root partition changes very
+ rarely. Files such as <filename>/kernel</filename> and
+ the contents of <filename>/etc</filename> only change
+ during system maintenance, or when users change their
+ passwords. If the system crashed during the
+ thirty-second window after such a change is made, it is
+ possible that data could be lost. This risk is negligible
+ for most applications, but you should be aware that it
+ exists. If your system cannot tolerate this much risk,
+ do not use Soft Updates on the root filesystem!</para>
+
+ <para><filename>/</filename> is traditionally one of the
+ smallest partitions. By default, FreeBSD puts the
+ <filename>/tmp</filename> directory on
+ <filename>/</filename>. If you have a busy
+ <filename>/tmp</filename>, you might see intermittent
+ space problems. Symlinking <filename>/tmp</filename> to
+ <filename>/var/tmp</filename> will solve this
+ problem.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="inappropriate-ccd">
+ <para>What is inappropriate about my ccd?</para>
+ </question>
+
+ <answer>
+ <para>The symptom of this is:</para>
+
+ <screen>&prompt.root; <userinput>ccdconfig -C</userinput>
+ccdconfig: ioctl (CCDIOCSET): /dev/ccd0c: Inappropriate file type or format</screen>
+
+ <para>This usually happens when you are trying to concatenate
+ the <literal>c</literal> partitions, which default to type
+ <literal>unused</literal>. 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 <literal>4.2BSD</literal>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="ccd-disklabel">
+ <para>Why can I not edit the disklabel on my ccd?</para>
+ </question>
+
+ <answer>
+ <para>The symptom of this is:</para>
+
+ <screen>&prompt.root; <userinput>disklabel ccd0</userinput>
+(it prints something sensible here, so let us try to edit it)
+&prompt.root; <userinput>disklabel -e ccd0</userinput>
+(edit, save, quit)
+disklabel: ioctl DIOCWDINFO: No disk label on disk;
+use "disklabel -r" to install initial label</screen>
+
+ <para>This is because the disklabel returned by ccd is actually
+ a <quote>fake</quote> one that is not really on the disk.
+ You can solve this problem by writing it back explicitly,
+ as in:</para>
+
+ <screen>&prompt.root; <userinput>disklabel ccd0 &gt; /tmp/disklabel.tmp</userinput>
+&prompt.root; <userinput>disklabel -Rr ccd0 /tmp/disklabel.tmp</userinput>
+&prompt.root; <userinput>disklabel -e ccd0</userinput>
+(this will work now)</screen>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="mount-foreign-fs">
+ <para>Can I mount other foreign filesystems under FreeBSD?</para>
+ </question>
+
+ <answer>
+ <para>FreeBSD supports a variety of other
+ filesystems.</para>
+
+ <variablelist>
+ <varlistentry>
+ <term>Digital UNIX</term>
+
+ <listitem>
+ <para>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.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>&linux;</term>
+
+ <listitem>
+ <para>FreeBSD supports <literal>ext2fs</literal>
+ partitions. See &man.mount.ext2fs.8; for more
+ information.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>&windowsnt;</term>
+
+ <listitem>
+ <para>FreeBSD includes a read-only NTFS driver. For
+ more information, see &man.mount.ntfs.8;.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>FAT</term>
+
+ <listitem>
+ <para>FreeBSD includes a read-write FAT driver. For
+ more information, see &man.mount.msdosfs.8;.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>ReiserFS</term>
+
+ <listitem>
+ <para>FreeBSD includes a read-only ReiserFS driver. For
+ more information, see &man.mount.reiserfs.8;.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>FreeBSD also supports network filesystems such as NFS
+ (see &man.mount.nfs.8;), NetWare (see &man.mount.nwfs.8;),
+ and Microsoft-style SMB filesystems (see
+ &man.mount.smbfs.8;).
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="mount-dos">
+ <para>How do I mount a secondary DOS partition?</para>
+ </question>
+
+ <answer>
+
+ <para>The secondary DOS partitions are found after ALL the
+ primary partitions. For example, if you have an
+ <quote>E</quote> partition as the second DOS partition on
+ the second SCSI drive, you need to create the special files
+ for <quote>slice 5</quote> in <filename>/dev</filename>,
+ then mount <devicename>/dev/da1s5</devicename>:</para>
+
+ <screen>&prompt.root; <userinput>cd /dev</userinput>
+&prompt.root; <userinput>sh MAKEDEV da1s5</userinput>
+&prompt.root; <userinput>mount -t msdos /dev/da1s5 /dos/e</userinput></screen>
+
+ <note>
+ <para>You can omit this step if you are running FreeBSD
+ 5.0-RELEASE or newer with &man.devfs.5;
+ enabled.</para>
+ </note>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="crypto-filesystem">
+ <para>Is there a cryptographic filesystem for &os;?</para>
+ </question>
+
+ <answer>
+
+ <para>Yes. FreeBSD 5.0 includes &man.gbde.8;, and FreeBSD 6.0
+ added &man.geli.8;. For earlier releases, see the <filename
+ role="package">security/cfs</filename> port.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="nt-bootloader">
+ <para>How can I use the &windowsnt; loader to boot FreeBSD?</para>
+ </question>
+
+ <answer>
+ <para>The general idea is that you copy the first sector of your
+ native root FreeBSD partition into a file in the DOS/&windowsnt;
+ partition. Assuming you name that file something like
+ <filename>c:\bootsect.bsd</filename> (inspired by
+ <filename>c:\bootsect.dos</filename>), you can then edit the
+ <filename>c:\boot.ini</filename> file to come up with something
+ like this:</para>
+
+ <programlisting>[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"</programlisting>
+
+ <para>If FreeBSD is installed on the same disk as the &windowsnt; boot
+ partition simply copy <filename>/boot/boot1</filename> to
+ <filename>C:\BOOTSECT.BSD</filename>. However, if FreeBSD is
+ installed on a different disk <filename>/boot/boot1</filename>
+ will not work, <filename>/boot/boot0</filename> is needed.</para>
+
+ <para><filename>/boot/boot0</filename> needs to be installed
+ using sysinstall by selecting the FreeBSD boot manager on
+ the screen which asks if you wish to use a boot
+ manager. This is because <filename>/boot/boot0</filename>
+ has the partition table area filled with NULL characters
+ but sysinstall copies the partition table before copying
+ <filename>/boot/boot0</filename> to the MBR.</para>
+
+ <warning>
+ <para><emphasis>Do not simply copy <filename>/boot/boot0</filename>
+ instead of <filename>/boot/boot1</filename>; you will
+ overwrite your partition table and render your computer
+ un-bootable!</emphasis></para>
+ </warning>
+
+ <para>When the FreeBSD boot manager runs it records the last
+ OS booted by setting the active flag on the partition table
+ entry for that OS and then writes the whole 512-bytes of itself
+ back to the MBR so if you just copy
+ <filename>/boot/boot0</filename> to
+ <filename>C:\BOOTSECT.BSD</filename> then it writes an empty
+ partition table, with the active flag set on one entry, to the
+ MBR.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="lilo-bootloader">
+ <para>How do I boot FreeBSD and &linux; from LILO?</para>
+ </question>
+
+ <answer>
+ <para>If you have FreeBSD and &linux; on the same disk, just follow
+ LILO's installation instructions for booting a non-&linux;
+ operating system. Very briefly, these are:</para>
+
+ <para>Boot &linux;, and add the following lines to
+ <filename>/etc/lilo.conf</filename>:</para>
+
+ <programlisting>other=/dev/hda2
+ table=/dev/hda
+ label=FreeBSD</programlisting>
+
+ <para>(the above assumes that your FreeBSD slice is known to
+ &linux; as <devicename>/dev/hda2</devicename>; tailor to
+ suit your setup). Then, run <command>lilo</command> as
+ <username>root</username> and you should be done.</para>
+
+ <para>If FreeBSD resides on another disk, you need to add
+ <literal>loader=/boot/chain.b</literal> to the LILO entry.
+ For example:</para>
+
+ <programlisting>other=/dev/dab4
+ table=/dev/dab
+ loader=/boot/chain.b
+ label=FreeBSD</programlisting>
+
+ <para>In some cases you may need to specify the BIOS drive number
+ to the FreeBSD boot loader to successfully boot off the second
+ disk. For example, if your FreeBSD SCSI disk is probed by BIOS
+ as BIOS disk 1, at the FreeBSD boot loader prompt you need to
+ specify:</para>
+
+ <screen>Boot: <userinput>1:da(0,a)/kernel</userinput></screen>
+
+ <para>You can configure
+ &man.boot.8;
+ to automatically do this for you at boot time.</para>
+
+ <para>The <ulink
+ url="http://sunsite.unc.edu/LDP/HOWTO/mini/Linux+FreeBSD.html">
+ &linux;+FreeBSD mini-HOWTO</ulink> is a good reference for
+ FreeBSD and &linux; interoperability issues.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="grub-loader">
+ <para>How do I boot &os; and &linux; using GRUB</para>
+ </question>
+
+ <answer>
+ <para>Booting &os; using GRUB is very simple. Just
+ add the following to your configuration file
+ <filename>/boot/grub/grub.conf</filename>.</para>
+
+ <programlisting>title FreeBSD 6.1
+ root (hd0,a)
+ kernel /boot/loader
+ </programlisting>
+
+ <para>Where <literal>hd0,a</literal> points to your root partition
+ on the first disk. If you need to specify which slice number
+ should be used, use something like this <literal>(hd0,2,a)</literal>.
+ By default, if the slice number is omitted, GRUB searches the
+ first slice which has <literal>'a'</literal> partition.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="booteasy-loader">
+ <para>How do I boot FreeBSD and &linux; using BootEasy?</para>
+ </question>
+
+ <answer>
+ <para>Install LILO at the start of your &linux; boot partition
+ instead of in the Master Boot Record. You can then boot LILO
+ from BootEasy.</para>
+
+ <para>If you are running &windows; 95 and &linux; this is recommended
+ anyway, to make it simpler to get &linux; booting again if you
+ should need to reinstall &windows; 95 (which is a Jealous
+ Operating System, and will bear no other Operating Systems in
+ the Master Boot Record).</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="changing-bootprompt">
+ <para>How do I change the boot prompt from <literal>???</literal> to
+ something more meaningful?</para>
+ </question>
+
+ <answer>
+ <para>You can not do that with the standard boot manager without
+ rewriting it. There are a number of other boot managers
+ in the <filename>sysutils</filename> ports category that
+ provide this functionality.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="removable-drives">
+ <para>I have a new removable drive, how do I use it?</para>
+ </question>
+
+ <answer>
+
+ <para>Whether it is a removable drive like a &iomegazip; or an EZ drive
+ (or even a floppy, if you want to use it that way), or a new
+ hard disk, once it is installed and recognized by the system,
+ and you have your cartridge/floppy/whatever slotted in, things
+ are pretty much the same for all devices.</para>
+
+ <para>(this section is based on <ulink
+ url="http://www.vmunix.com/mark/FreeBSD/ZIP-FAQ.html">
+ Mark Mayo's ZIP FAQ</ulink>)</para>
+
+ <para>If it is a ZIP drive or a floppy, you have already got a DOS
+ filesystem on it, you can use a command like this:</para>
+
+ <screen>&prompt.root; <userinput>mount -t msdos /dev/fd0c /floppy</userinput></screen>
+
+ <para>if it is a floppy, or this:</para>
+
+ <screen>&prompt.root; <userinput>mount -t msdos /dev/da2s4 /zip</userinput></screen>
+
+ <para>for a ZIP disk with the factory configuration.</para>
+
+ <para>For other disks, see how they are laid out using
+ &man.fdisk.8; or
+ &man.sysinstall.8;.</para>
+
+ <para>The rest of the examples will be for a ZIP drive on da2,
+ the third SCSI disk.</para>
+
+ <para>Unless it is a floppy, or a removable you plan on sharing
+ with other people, it is probably a better idea to stick a BSD
+ filesystem on it. You will 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 &man.fdisk.8; or
+ <filename>/stand/sysinstall</filename>, or for a small drive
+ that you do not want to bother with multiple operating system
+ support on, just blow away the whole FAT partition table
+ (slices) and just use the BSD partitioning:</para>
+
+ <screen>&prompt.root; <userinput>dd if=/dev/zero of=/dev/rda2 count=2</userinput>
+&prompt.root; <userinput>disklabel -Brw da2 auto</userinput></screen>
+
+ <para>You can use disklabel or
+ <filename>/stand/sysinstall</filename> to create multiple BSD
+ partitions. You will certainly want to do this if you are adding
+ swap space on a fixed disk, but it is probably irrelevant on a
+ removable drive like a ZIP.</para>
+
+ <para>Finally, create a new filesystem, this one is on our ZIP
+ drive using the whole disk:</para>
+
+ <screen>&prompt.root; <userinput>newfs /dev/rda2c</userinput></screen>
+
+ <para>and mount it:</para>
+
+ <screen>&prompt.root; <userinput>mount /dev/da2c /zip</userinput></screen>
+
+ <para>and it is probably a good idea to add a line like this
+ to <filename>/etc/fstab</filename> (see &man.fstab.5;) so
+ you can just type <command>mount /zip</command> in the
+ future:</para>
+
+ <programlisting>/dev/da2c /zip ffs rw,noauto 0 0</programlisting>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="mount-cd-superblock">
+ <para>Why do I get <errorname>Incorrect super block</errorname> when
+ mounting a CDROM?</para>
+ </question>
+
+ <answer>
+ <para>You have to tell &man.mount.8; the type of the device
+ that you want to mount. This is described in the <ulink
+ url="&url.books.handbook;/creating-cds.html"> Handbook section on
+ optical media</ulink>, specifically the section <ulink
+ url="&url.books.handbook;/creating-cds.html#MOUNTING-CD">Using Data
+ CDs</ulink>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="cdrom-not-configured">
+ <para>Why do I get <errorname>Device not
+ configured</errorname> when mounting a CDROM?</para>
+ </question>
+
+ <answer>
+ <para>This generally means that there is no CDROM in the
+ CDROM drive, or the drive is not visible on the
+ bus. Please see the <ulink
+ url="&url.books.handbook;/creating-cds.html#MOUNTING-CD">Using Data
+ CDs</ulink> section of the Handbook for a detailed
+ discussion of this issue.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="cdrom-unicode-filenames">
+ <para>Why do all non-English characters in filenames show up as
+ <quote>?</quote> on my CDs when mounted in FreeBSD?</para>
+ </question>
+
+ <answer>
+ <para>Your CDROM probably uses the <quote>Joliet</quote>
+ extension for storing information about files and
+ directories. This is discussed in the Handbook chapter on
+ <ulink url="&url.books.handbook;/creating-cds.html">creating and
+ using CDROMs</ulink>, specifically the section on <ulink
+ url="&url.books.handbook;/creating-cds.html#MOUNTING-CD">Using Data
+ CDROMs</ulink>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="burncd-isofs">
+ <para>I burned a CD under FreeBSD and now I can not read it
+ under any other operating system. Why?</para>
+ </question>
+
+ <answer>
+ <para>You most likely burned a raw file to your CD, rather
+ than creating an ISO 9660 filesystem. Take a look at the
+ <ulink url="&url.books.handbook;/creating-cds.html">Handbook
+ chapter on creating CDROMs</ulink>, particularly the
+ section on <ulink
+ url="&url.books.handbook;/creating-cds.html#RAWDATA-CD">burning raw
+ data CDs</ulink>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="copy-cd">
+ <para>How can I create an image of a data CD?</para>
+ </question>
+
+ <answer>
+ <para>This is discussed in the Handbook section on <ulink
+ url="&url.books.handbook;/creating-cds.html#IMAGING-CD">duplicating
+ data CDs</ulink>. For more on working with CDROMs, see the
+ <ulink url="&url.books.handbook;/creating-cds.html">Creating CDs
+ Section</ulink> in the Storage chapter in the
+ Handbook.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="mount-audio-CD">
+ <para>Why can I not <command>mount</command> an audio
+ CD?</para>
+ </question>
+
+ <answer>
+ <para>If you try to mount an audio CD, you will get an error
+ like <errorname>cd9660: /dev/acd0c: Invalid
+ argument</errorname>. This is because
+ <command>mount</command> only works on filesystems. Audio
+ CDs do not have filesystems; they just have data. You
+ need a program that reads audio CDs, such as the
+ <filename role="package">audio/xmcd</filename> port.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="multi-session-CD">
+ <para>How do I <command>mount</command> a multi-session CD?</para>
+ </question>
+
+ <answer>
+ <para>By default, &man.mount.8; will attempt to mount the
+ last data track (session) of a CD. If you would like to
+ load an earlier session, you must use the
+ <option>-s</option> command line argument. Please see
+ &man.mount.cd9660.8; for specific examples.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="user-floppymount">
+ <para>How do I let ordinary users mount floppies, CDROMs and
+ other removable media?</para>
+ </question>
+
+ <answer>
+ <para>Ordinary users can be permitted to mount devices. Here is
+ how:</para>
+
+ <procedure>
+ <step>
+ <para>As <username>root</username> set the sysctl variable
+ <varname>vfs.usermount</varname> to
+ <literal>1</literal>.</para>
+
+ <screen>&prompt.root; <userinput>sysctl -w vfs.usermount=1</userinput></screen>
+ </step>
+
+ <step>
+ <para>As <username>root</username> assign the appropriate
+ permissions to the block device associated with the
+ removable media.</para>
+
+ <para>For example, to allow users to mount the first floppy
+ drive, use:</para>
+
+ <screen>&prompt.root; <userinput>chmod 666 /dev/fd0</userinput></screen>
+
+ <para>To allow users in the group
+ <groupname>operator</groupname> to mount the CDROM drive,
+ use:</para>
+
+ <screen>&prompt.root; <userinput>chgrp operator /dev/acd0c</userinput>
+&prompt.root; <userinput>chmod 640 /dev/acd0c</userinput></screen>
+ </step>
+
+ <step>
+ <para>If you are running &os; 5.X or later, you will need to alter
+ <filename>/etc/devfs.conf</filename> to make these changes
+ permanent across reboots.</para>
+
+ <para>As <username>root</username>, add the necessary lines to
+ <filename>/etc/devfs.conf</filename>. For example, to allow
+ users to mount the first floppy drive add:</para>
+
+ <programlisting># Allow all users to mount the floppy disk.
+own /dev/fd0 root:operator
+perm /dev/fd0 0666</programlisting>
+
+ <para>To allow users in the group <groupname>operator</groupname>
+ to mount the CD-ROM drive add:</para>
+
+ <programlisting># Allow members of the group operator to mount CD-ROMs.
+own /dev/acd0 root:operator
+perm /dev/acd0 0660</programlisting>
+ </step>
+
+ <step>
+ <para>Finally, add the line
+ <literal><varname>vfs.usermount</varname>=1</literal>
+ to the file <filename>/etc/sysctl.conf</filename> so
+ that it is reset at system boot time.</para>
+ </step>
+ </procedure>
+
+ <para>All users can now mount the floppy
+ <devicename>/dev/fd0</devicename> onto a directory that they
+ own:</para>
+
+ <screen>&prompt.user; <userinput>mkdir ~/my-mount-point</userinput>
+&prompt.user; <userinput>mount -t msdos /dev/fd0 ~/my-mount-point</userinput></screen>
+
+ <para>Users in group <groupname>operator</groupname> can now
+ mount the CDROM <devicename>/dev/acd0c</devicename> onto a
+ directory that they own:</para>
+
+ <screen>&prompt.user; <userinput>mkdir ~/my-mount-point</userinput>
+&prompt.user; <userinput>mount -t cd9660 /dev/acd0c ~/my-mount-point</userinput></screen>
+
+ <para>Unmounting the device is simple:</para>
+
+ <screen>&prompt.user; <userinput>umount ~/my-mount-point</userinput></screen>
+
+ <para>Enabling <varname>vfs.usermount</varname>, however,
+ has negative security implications. A better way to
+ access &ms-dos; formatted media is to use the
+ <filename role="package">emulators/mtools</filename>
+ package in the ports collection.</para>
+
+ <note>
+ <para>The device name used in the previous examples must be
+ changed according to your configuration.</para>
+ </note>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="du-vs-df">
+ <para>The <command>du</command> and <command>df</command>
+ commands show different amounts of disk space available.
+ What is going on?</para>
+ </question>
+
+ <answer>
+ <para>You need to understand what <command>du</command> and
+ <command>df</command> really do. <command>du</command>
+ goes through the directory tree, measures how large each
+ file is, and presents the totals. <command>df</command>
+ just asks the filesystem how much space it has left. They
+ seem to be the same thing, but a file without a directory
+ entry will affect <command>df</command> but not
+ <command>du</command>.</para>
+
+ <para>When a program is using a file, and you delete the
+ file, the file is not really removed from the filesystem
+ until the program stops using it. The file is immediately
+ deleted from the directory listing, however. You can see
+ this easily enough with a program such as
+ <command>more</command>. Assume you have a file large
+ enough that its presence affects the output of
+ <command>du</command> and <command>df</command>. (Since
+ disks can be so large today, this might be a
+ <emphasis>very</emphasis> large file!) If you delete this
+ file while using <command>more</command> on it,
+ <command>more</command> does not immediately choke and
+ complain that it cannot view the file. The entry is
+ simply removed from the directory so no other program or
+ user can access it. <command>du</command> shows that it
+ is gone &mdash; it has walked the directory tree and the file
+ is not listed. <command>df</command> shows that it is
+ still there, as the filesystem knows that
+ <command>more</command> is still using that space. Once
+ you end the <command>more</command> session,
+ <command>du</command> and <command>df</command> will
+ agree.</para>
+
+ <para>Note that Soft Updates can delay the freeing of disk
+ space; you might need to wait up to 30 seconds for the
+ change to be visible!</para>
+
+ <para>This situation is common on web servers. Many people
+ set up a FreeBSD web server and forget to rotate the log
+ files. The access log fills up <filename>/var</filename>.
+ The new administrator deletes the file, but the system
+ still complains that the partition is full. Stopping and
+ restarting the web server program would free the file,
+ allowing the system to release the disk space. To prevent
+ this from happening, set up &man.newsyslog.8;.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="add-swap-space">
+ <para>How can I add more swap space?</para>
+ </question>
+
+ <answer>
+ <para>In the <ulink
+ url="&url.books.handbook;/config-tuning.html">Configuration and
+ Tuning</ulink> section of the Handbook, you will find a
+ <ulink
+ url="&url.books.handbook;/adding-swap-space.html">section</ulink>
+ describing how to do this.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="manufacturer-disk-size">
+ <para>Why does &os; see my disk as smaller than the
+ manufacturer says it is?</para>
+ </question>
+
+ <answer>
+ <para>Disk manufacturers calculate gigabytes as a billion bytes
+ each, whereas &os; calculates them as 1,073,741,824 bytes
+ each. This explains why, for example, &os;'s boot messages
+ will report a disk that supposedly has 80GB as holding
+ 76319MB.</para>
+ <para>Also note that &os; will (by default)
+ <link linkend="disk-more-than-full">reserve</link> 8% of the disk
+ space.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="disk-more-than-full">
+ <para>How is it possible for a partition to be more than 100%
+ full?</para>
+ </question>
+
+ <answer>
+ <para>A portion of each UFS partition (8%, by default) is
+ reserved for use by the operating system and the
+ <username>root</username> user.
+ &man.df.1; does not count that space when
+ calculating the <literal>Capacity</literal> column, so it can
+ exceed 100%. Also, you will notice that the
+ <literal>Blocks</literal> column is always greater than the
+ sum of the <literal>Used</literal> and
+ <literal>Avail</literal> columns, usually by a factor of
+ 8%.</para>
+
+ <para>For more details, look up the <option>-m</option> option
+ in &man.tunefs.8;.</para>
+ </answer>
+ </qandaentry>
+ </qandaset>
+ </chapter>
+
+ <chapter id="admin">
+ <title>Διαχείριση Συστήματος</title>
+
+ <qandaset>
+ <qandaentry>
+ <question id="startup-config-files">
+ <para>Where are the system start-up configuration files?</para>
+ </question>
+
+ <answer>
+ <para>The primary configuration file is
+ <filename>/etc/defaults/rc.conf</filename> (see
+ &man.rc.conf.5;) System startup scripts such as
+ <filename>/etc/rc</filename> and
+ <filename>/etc/rc.d</filename> (see &man.rc.8;) just
+ include this file. <emphasis>Do not edit this
+ file!</emphasis> Instead, if there is any entry in
+ <filename>/etc/defaults/rc.conf</filename> that you want
+ to change, you should copy the line into
+ <filename>/etc/rc.conf</filename> and change it
+ there.</para>
+
+ <para>For example, if you wish to start named, the included
+ DNS server, all you need to do is:</para>
+
+ <screen>&prompt.root; <userinput>echo named_enable="YES" &gt;&gt; /etc/rc.conf</userinput></screen>
+
+ <para>To start up local services, place shell scripts in the
+ <filename>/usr/local/etc/rc.d</filename> directory. These
+ shell scripts should be set executable, and end with a
+ .sh.</para>
+
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="adding-users">
+ <para>How do I add a user easily?</para>
+ </question>
+
+ <answer>
+ <para>Use the &man.adduser.8; command, or the &man.pw.8;
+ command for more complicated situations.</para>
+
+ <para>To remove the user, use the &man.rmuser.8; command or,
+ if necessary, &man.pw.8;.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="root-not-found-cron-errors">
+ <para>Why do I keep getting messages like <errorname>root: not
+ found</errorname> after editing my crontab file?</para>
+ </question>
+
+ <answer>
+ <para>This is normally caused by editing the system crontab
+ (<filename>/etc/crontab</filename>) and then using
+ &man.crontab.1; to install it:</para>
+
+ <screen>&prompt.root; <userinput>crontab /etc/crontab</userinput></screen>
+
+ <para>This is not the correct way to do things. The system
+ crontab has a different format to the per-user crontabs
+ which &man.crontab.1; updates (the &man.crontab.5; manual
+ page explains the differences in more detail).</para>
+
+ <para>If this is what you did, the extra crontab is simply a
+ copy of <filename>/etc/crontab</filename> in the wrong
+ format it. Delete it with the command:</para>
+
+ <screen>&prompt.root; <userinput>crontab -r</userinput></screen>
+
+ <para>Next time, when you edit
+ <filename>/etc/crontab</filename>, you should not do
+ anything to inform &man.cron.8; of the changes, since it
+ will notice them automatically.</para>
+
+ <para>If you want something to be run once per day, week, or
+ month, it is probably better to add shell scripts
+ <filename>/usr/local/etc/periodic</filename>, and let the
+ &man.periodic.8; command run from the system cron schedule
+ it with the other periodic system tasks.</para>
+
+ <para>The actual reason for the error is that the system
+ crontab has an extra field, specifying which user to run the
+ command as. In the default system crontab provided with
+ FreeBSD, this is <username>root</username> for all entries.
+ When this crontab is used as the <username>root</username>
+ user's crontab (which is <emphasis>not</emphasis> the
+ same as the system crontab), &man.cron.8; assumes the string
+ <literal>root</literal> is the first word of the command to
+ execute, but no such command exists.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="su-wheel-group">
+ <para>Why do I get the error, <errorname>you are not in the correct
+ group to su root</errorname> when I try to su to
+ <username>root</username>?</para>
+ </question>
+
+ <answer>
+ <para>This is a security feature. In order to su to
+ <username>root</username> (or any other account with superuser
+ privileges), you must be in the <groupname>wheel</groupname>
+ group. If this feature were not there, anybody with an account
+ on a system who also found out <username>root</username>'s
+ password would be able to gain superuser level access to the
+ system. With this feature, this is not strictly true;
+ &man.su.1; will prevent them from even trying to enter the
+ password if they are not in <groupname>wheel</groupname>.</para>
+
+ <para>To allow someone to su to <username>root</username>, simply
+ put them in the <groupname>wheel</groupname> group.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="rcconf-readonly">
+ <para>I made a mistake in <filename>rc.conf</filename>,
+ or another startup file, and
+ now I cannot edit it because the filesystem is read-only.
+ What should I do?</para>
+ </question>
+
+ <answer>
+ <para>When you get the prompt to enter the shell
+ pathname, simply press <literal>ENTER</literal>, and run
+ <command>mount /</command> to re-mount the root filesystem in
+ read/write mode. You may also need to run <command>mount -a -t
+ ufs</command> to mount the filesystem where your favorite
+ editor is defined. If your favorite editor is on a network
+ filesystem, you will need to either configure the network
+ manually before you can mount network filesystems, or use an
+ editor which resides on a local filesystem, such as
+ &man.ed.1;.</para>
+
+ <para>If you intend to use a full screen editor such
+ as &man.vi.1; or &man.emacs.1;, you may also need to
+ run <command>export TERM=cons25</command> so that these
+ editors can load the correct data from the &man.termcap.5;
+ database.</para>
+
+ <para>Once you have performed these steps, you can edit
+ <filename>/etc/rc.conf</filename> as you usually would
+ to fix the syntax error. The error message displayed
+ immediately after the kernel boot messages should tell you
+ the number of the line in the file which is at fault.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="printer-setup">
+ <para>Why am I having trouble setting up my printer?</para>
+ </question>
+
+ <answer>
+ <para>Please have a look at the Handbook entry on printing. It
+ should cover most of your problem. See the <ulink
+ url="&url.books.handbook;/printing.html">
+ Handbook entry on printing</ulink>.</para>
+
+ <para>Some printers require a host-based driver to do any
+ kind of printing. These so-called
+ <quote>WinPrinters</quote> are not natively supported by
+ FreeBSD. If your printer does not work in DOS or &windowsnt;
+ 4.0, it is probably a WinPrinter. Your only hope of
+ getting one of these to work is to check if the <filename
+ role="package">print/pnm2ppa</filename> port supports
+ it.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="keyboard-mappings">
+ <para>How can I correct the keyboard mappings for my system?</para>
+ </question>
+
+ <answer>
+ <para>Please see the Handbook section on <ulink
+ url="&url.books.handbook;/using-localization.html">using
+ localization</ulink>, specifically the section on <ulink
+ url="&url.books.handbook;/using-localization.html#SETTING-CONSOLE">console
+ setup</ulink>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="pnp-resources">
+ <para>Why do I get messages like: <errorname>unknown: &lt;PNP0303&gt;
+ can't assign resources</errorname> on boot?</para>
+ </question>
+
+ <answer>
+ <para>The following is an excerpt from a post to the
+ freebsd-current mailing list.</para>
+
+ <blockquote>
+ <attribution>&a.wollman;, 24 April 2001</attribution>
+
+ <para>The <quote>can't assign resources</quote> messages
+ indicate that the devices are legacy ISA devices for which a
+ non-PnP-aware driver is compiled into the kernel. These
+ include devices such as keyboard controllers, the
+ programmable interrupt controller chip, and several other
+ bits of standard infrastructure. The resources cannot be
+ assigned because there is already a driver using those
+ addresses.</para>
+ </blockquote>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="user-quotas">
+ <para>Why can I not get user quotas to work properly?</para>
+ </question>
+
+ <answer>
+ <!-- XXX
+ This may be the worst answer in the entire document.
+ -->
+ <orderedlist>
+ <listitem>
+ <para>It is possible that your kernel is not configured to use
+ quotas. If this is the case, you will need to add the following
+ line to your kernel configuration file and recompile:</para>
+ <programlisting>options QUOTA</programlisting>
+
+ <para>Please read the <ulink url="&url.books.handbook;/quotas.html">Handbook
+ entry on quotas</ulink> for full details.</para>
+ </listitem>
+
+ <listitem>
+ <para>Do not turn on quotas on <filename>/</filename>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Put the quota file on the filesystem that the quotas
+ are to be enforced on, i.e.:</para>
+
+ <informaltable frame="none" pgwide="1">
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>Filesystem</entry>
+ <entry>Quota file</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry><filename>/usr</filename></entry>
+ <entry><filename>/usr/admin/quotas</filename></entry>
+ </row>
+
+ <row>
+ <entry><filename>/home</filename></entry>
+ <entry><filename>/home/admin/quotas</filename></entry>
+ </row>
+
+ <row>
+ <entry>&hellip;</entry>
+ <entry>&hellip;</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </listitem>
+ </orderedlist>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="sysv-ipc">
+ <para>Does FreeBSD support System V IPC primitives?</para>
+ </question>
+
+ <answer>
+ <para>Yes, FreeBSD supports System V-style IPC, including
+ shared memory, messages and semaphores, in the GENERIC
+ kernel. In a custom kernel, enable this support by adding
+ the following lines to your kernel config.</para>
+
+ <programlisting>options SYSVSHM # enable shared memory
+options SYSVSEM # enable for semaphores
+options SYSVMSG # enable for messaging</programlisting>
+
+ <para>Recompile and install your kernel.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="sendmail-alternative">
+ <para>What other mail-server software can I use instead of
+ Sendmail?</para>
+ </question>
+
+ <answer>
+ <para><ulink url="http://www.sendmail.org/">Sendmail</ulink> is
+ the default mail-server software for FreeBSD, but you can
+ easily replace it with one of the other MTA (for instance,
+ an MTA installed from the ports).</para>
+
+ <para>There are various alternative MTAs in the ports tree
+ already, with <filename
+ role="package">mail/exim</filename>, <filename
+ role="package">mail/postfix</filename>, <filename
+ role="package">mail/qmail</filename>, and <filename
+ role="package">mail/zmailer</filename> being some of the
+ most popular choices.</para>
+
+ <para>Diversity is nice, and the fact that you have many
+ different mail-servers to chose from is considered a
+ good thing; therefore try to avoid
+ asking questions like <quote>Is Sendmail better than
+ Qmail?</quote> in the mailing lists. If you do feel like
+ asking, first check the mailing list archives. The
+ advantages and disadvantages of each and every one of the
+ available MTAs have already been discussed a few
+ times.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="forgot-root-pw">
+ <para>I have forgotten the <username>root</username> password! What
+ do I do?</para>
+ </question><answer>
+
+ <para>Do not panic! Restart the system, type
+ <userinput>boot -s</userinput> at the Boot: prompt to
+ enter Single User mode. At the question about the shell to
+ use, hit ENTER. You will be dropped to a &prompt.root;
+ prompt. Enter <command>mount -u /</command> to remount
+ your root filesystem read/write, then run <command>mount
+ -a</command> to remount all the filesystems. Run
+ <command>passwd root</command> to change the
+ <username>root</username> password then run &man.exit.1;
+ to continue booting.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="CAD-reboot">
+ <para>How do I keep <keycombo
+ action="simul"><keycap>Control</keycap><keycap>Alt</keycap><keycap>Delete</keycap></keycombo>
+ from rebooting the system?</para>
+ </question>
+
+ <answer>
+ <para>If you are using syscons (the default console driver)
+ build and install a new kernel with the
+ line:</para>
+
+ <programlisting>options SC_DISABLE_REBOOT</programlisting>
+
+ <para>in the configuration file. If you use the PCVT console
+ driver, use the following kernel configuration line
+ instead.</para>
+
+ <para>This can also be done by setting the following sysctl
+ which does not require a reboot or kernel recompile:</para>
+
+ <screen>&prompt.root; <userinput>sysctl hw.syscons.kbd_reboot=0</userinput></screen>
+
+ <programlisting>options PCVT_CTRL_ALT_DEL</programlisting>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="dos-to-unix-txt">
+ <para>How do I reformat DOS text files to &unix; ones?</para>
+ </question>
+
+ <answer>
+
+ <para>Use this perl command:</para>
+
+ <screen>&prompt.user; <userinput>perl -i.bak -npe 's/\r\n/\n/g' file ...</userinput></screen>
+
+ <para>file is the file(s) to process. The modification is done
+ in-place, with the original file stored with a .bak
+ extension.</para>
+
+ <para>Alternatively you can use the
+ &man.tr.1;
+ command:</para>
+
+ <screen>&prompt.user; <userinput>tr -d '\r' &lt; <replaceable>dos-text-file</replaceable> &gt; <replaceable>unix-file</replaceable></userinput></screen>
+
+ <para><replaceable>dos-text-file</replaceable> is the file
+ containing DOS text while <replaceable>unix-file</replaceable>
+ will contain the converted output. This can be quite a bit
+ faster than using perl.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="kill-by-name">
+ <para>How do I kill processes by name?</para>
+ </question><answer>
+
+ <para>Use &man.killall.1;.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="root-acl">
+ <para>Why is su bugging me about not being in
+ <username>root</username>'s ACL?</para>
+ </question>
+
+ <answer>
+
+ <para>The error comes from the Kerberos distributed
+ authentication system. The problem is not fatal but annoying.
+ You can either run su with the -K option, or uninstall
+ Kerberos as described in the next question.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="uninstall-kerberos">
+ <para>How do I uninstall Kerberos?</para>
+ </question>
+
+ <answer>
+
+ <para>To remove Kerberos from the system, reinstall the bin
+ distribution for the release you are running. If you have
+ the CDROM, you can mount the cd (we will assume on /cdrom)
+ and run</para>
+
+ <screen>&prompt.root; <userinput>cd /cdrom/bin</userinput>
+&prompt.root; <userinput>./install.sh</userinput></screen>
+
+ <para>Alternately, you can remove all
+ <makevar>MAKE_KERBEROS</makevar> options from
+ <filename>/etc/make.conf</filename> and rebuild
+ world.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="where-is-makedev">
+ <para>What happened to
+ <filename>/dev/MAKEDEV</filename>?</para>
+ </question>
+
+ <answer>
+ <para>FreeBSD 5.X and beyond use the &man.devfs.8; device-on-demand
+ system. Device drivers automatically create new device
+ nodes as they are needed, obsoleting
+ <filename>/dev/MAKEDEV</filename>.</para>
+
+ <para>If you are running FreeBSD 4.X or earlier and
+ <filename>/dev/MAKEDEV</filename> is missing, then you
+ really do have a problem. Grab a copy from the system
+ source code, probably in
+ <filename>/usr/src/etc/MAKEDEV</filename>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="add-pty">
+ <para>How do I add pseudoterminals to the system?</para>
+ </question>
+
+ <answer>
+
+ <para>If you have lots of telnet, ssh, X, or screen users,
+ you will probably run out of pseudoterminals. Here is how to
+ add more:</para>
+
+ <procedure>
+ <step>
+ <para>Build and install a new kernel with the line</para>
+
+ <programlisting>pseudo-device pty 256</programlisting>
+
+ <para>in the configuration file.</para>
+ </step>
+
+ <step>
+ <para>Run the commands</para>
+
+ <screen>&prompt.root; <userinput>cd /dev</userinput>
+&prompt.root; <userinput>sh MAKEDEV pty{1,2,3,4,5,6,7}</userinput></screen>
+
+ <para>to make 256 device nodes for the new terminals.</para>
+
+ </step>
+
+ <step>
+ <para>Edit <filename>/etc/ttys</filename> and add lines
+ for each of the 256 terminals. They should match the form
+ of the existing entries, i.e. they look like</para>
+
+ <programlisting>ttyqc none network</programlisting>
+
+ <para>The order of the letter designations is
+ <literal>tty[pqrsPQRS][0-9a-v]</literal>, using a
+ regular expression. </para>
+ </step>
+
+ <step>
+ <para>Reboot the system with the new kernel and you are
+ ready to go.</para>
+ </step>
+ </procedure>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="create-snd0">
+ <para>Why can I not create the snd0 device?</para>
+ </question>
+
+ <answer>
+ <para>There is no <devicename>snd</devicename> device. The name
+ is used as a shorthand for the various devices that make up the
+ FreeBSD sound driver, such as <devicename>mixer</devicename>,
+ <devicename>sequencer</devicename>, and
+ <devicename>dsp</devicename>.</para>
+
+ <para>To create these devices you should</para>
+
+ <screen>&prompt.root; <userinput>cd /dev</userinput>
+&prompt.root; <userinput>sh MAKEDEV snd0</userinput></screen>
+
+ <note>
+ <para>You can omit this step if you are running FreeBSD
+ 5.0-RELEASE or newer with &man.devfs.5;
+ enabled.</para>
+ </note>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="reread-rc">
+ <para>How do I re-read <filename>/etc/rc.conf</filename> and
+ re-start <filename>/etc/rc</filename> without a
+ reboot?</para>
+ </question>
+
+ <answer>
+
+ <para>Go into single user mode and then back to multi user
+ mode.</para>
+
+ <para>On the console do:</para>
+
+ <screen>&prompt.root; <userinput>shutdown now</userinput>
+(Note: without -r or -h)
+
+&prompt.root; <userinput>return</userinput>
+&prompt.root; <userinput>exit</userinput></screen>
+ </answer>
+ </qandaentry>
+
+
+ <qandaentry>
+ <question id="release-candidate">
+ <para>I tried to update my system to the latest -STABLE, but
+ got -BETAx, -RC or -PRERELEASE! What is going on?</para>
+ </question>
+
+ <answer>
+ <para>Short answer: it is just a name. RC stands for
+ <quote>Release Candidate</quote>. It signifies that a
+ release is imminent. In FreeBSD, -PRERELEASE is typically
+ synonymous with the code freeze before a release. (For
+ some releases, the -BETA label was used in the same way as
+ -PRERELEASE.)</para>
+
+ <para>Long answer: FreeBSD derives its releases from one of
+ two places. Major, dot-zero, releases, such as
+ 4.0-RELEASE and 5.0-RELEASE, are branched from the head of
+ the development stream, commonly referred to as <link
+ linkend="current">-CURRENT</link>. Minor releases, such
+ as 4.1-RELEASE or 5.2-RELEASE, have been snapshots of the
+ active <link linkend="stable">-STABLE</link> branch.
+ Starting with 4.3-RELEASE, each release also now has its
+ own branch which can be tracked by people requiring an
+ extremely conservative rate of development (typically only
+ security advisories).</para>
+
+ <para>When a release is about to be made, the branch from
+ which it will be derived from has to undergo a certain
+ process. Part of this process is a code freeze. When a
+ code freeze is initiated, the name of the branch is
+ changed to reflect that it is about to become a release.
+ For example, if the branch used to be called 4.5-STABLE,
+ its name will be changed to 4.6-PRERELEASE to signify the
+ code freeze and signify that extra pre-release testing
+ should be happening. Bug fixes can still be committed to
+ be part of the release. When the source code is in shape
+ for the release the name will be changed to 4.6-RC to
+ signify that a release is about to be made from it. Once
+ in the RC stage, only the most critical bugs found can be
+ fixed. Once the release (4.6-RELEASE in this example) and
+ release branch have been made, the branch will be renamed
+ to 4.6-STABLE.</para>
+
+ <para>For more information on version numbers and the
+ various CVS branches, refer to the
+ <ulink url="&url.articles.releng;/article.html">Release
+ Engineering</ulink> article.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="kernel-chflag-failure">
+ <para>I tried to install a new kernel, and the chflags
+ failed. How do I get around this?</para>
+ </question>
+
+ <answer>
+ <para>Short answer: You are probably at security level
+ greater than 0. Reboot directly to single user mode to
+ install the kernel.</para>
+
+ <para>Long answer: FreeBSD disallows changing system flags
+ at security levels greater than 0. You can check your
+ security level with the command:</para>
+
+ <screen>&prompt.root; <userinput>sysctl kern.securelevel</userinput></screen>
+
+ <para>You cannot lower the security level; you have to boot to
+ single mode to install the kernel, or change the security
+ level in <filename>/etc/rc.conf</filename> then reboot. See
+ the &man.init.8; manual page for details on securelevel, and see
+ <filename>/etc/defaults/rc.conf</filename> and the
+ &man.rc.conf.5; manual page for more information on
+ rc.conf.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="kernel-securelevel-time">
+ <para>I cannot change the time on my system by more than one second!
+ How do I get around this?</para>
+ </question>
+
+ <answer>
+ <para>Short answer: You are probably at security level
+ greater than 1. Reboot directly to single user mode to
+ change the date.</para>
+
+ <para>Long answer: FreeBSD disallows changing the time by
+ more that one second at security levels greater than 1. You
+ can check your security level with the command:</para>
+
+ <screen>&prompt.root; <userinput>sysctl kern.securelevel</userinput></screen>
+
+ <para>You cannot lower the security level; you have to boot
+ to single mode to change the date, or change the security
+ level in <filename>/etc/rc.conf</filename> then
+ reboot. See the &man.init.8; manual page for details on
+ securelevel, and see
+ <filename>/etc/defaults/rc.conf</filename> and the
+ &man.rc.conf.5; manual page for more information on
+ rc.conf.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="statd-mem-leak">
+ <para>Why is <command>rpc.statd</command> using 256 megabytes of
+ memory?</para>
+ </question>
+
+ <answer>
+ <para>No, there is no memory leak, and it is not using 256 Mbytes
+ of memory. For convenience, <command>rpc.statd</command> maps an
+ obscene amount of memory into its address space.
+ There is nothing terribly wrong with this from a technical
+ standpoint; it just throws off things like &man.top.1; and
+ &man.ps.1;.</para>
+
+ <para>&man.rpc.statd.8; maps its status file (resident on
+ <filename>/var</filename>) into its address space; to save
+ worrying about remapping it later when it needs to grow, it maps
+ it with a generous size. This is very evident from the source
+ code, where one can see that the length argument to &man.mmap.2;
+ is <literal>0x10000000</literal>, or one sixteenth of the
+ address space on an IA32, or exactly 256MB.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="unsetting-schg">
+ <para>Why can I not unset the <literal>schg</literal> file
+ flag?</para>
+ </question>
+
+ <answer>
+ <para>You are running at an elevated (i.e., greater than 0)
+ securelevel. Lower the securelevel and try again. For more
+ information, see <link linkend="securelevel">the FAQ entry on
+ securelevel</link> and the &man.init.8; manual page.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="ssh-shosts">
+ <para>Why does SSH authentication through
+ <filename>.shosts</filename> not work by default in recent
+ versions of FreeBSD?</para>
+ </question>
+
+ <answer>
+ <para>The reason why <filename>.shosts</filename>
+ authentication does not work by default in more recent
+ versions of FreeBSD is because &man.ssh.1;
+ is not installed suid <username>root</username> by default. To
+ <quote>fix</quote> this, you can do one of the
+ following:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>As a permanent fix, set
+ <makevar>ENABLE_SUID_SSH</makevar> to <literal>true</literal>
+ in <filename>/etc/make.conf</filename> and rebuild ssh
+ (or run <command>make world</command>).</para>
+ </listitem>
+
+ <listitem>
+ <para>As a temporary fix, change the mode on
+ <filename>/usr/bin/ssh</filename> to <literal>4555</literal>
+ by running <command>chmod 4555 /usr/bin/ssh</command> as
+ <username>root</username>. Then add
+ <makevar>ENABLE_SUID_SSH= true</makevar> to
+ <filename>/etc/make.conf</filename> so the change takes
+ effect the next time <command>make world</command> is
+ run.</para>
+ </listitem>
+ </itemizedlist>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="vnlru">
+ <para>What is <literal>vnlru</literal>?</para>
+ </question>
+
+ <answer>
+ <para><literal>vnlru</literal> flushes and frees vnodes when
+ the system hits the <varname>kern.maxvnodes</varname>
+ limit. This kernel thread sits mostly idle, and only
+ activates if you have a huge amount of RAM and are
+ accessing tens of thousands of tiny files.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="top-memory-states">
+ <para>What do the various memory states displayed by
+ <command>top</command> mean?</para>
+ </question>
+<!-- Provided by John Dyson via Usenet -->
+ <answer>
+ <itemizedlist>
+ <listitem><para><literal>Active</literal>: pages recently
+ statistically used.</para></listitem>
+
+ <listitem><para><literal>Inactive</literal>: pages
+ recently statistically unused.</para></listitem>
+
+ <listitem><para><literal>Cache</literal>: (most often)
+ pages that have percolated from inactive to a status
+ where they maintain their data, but can often be
+ immediately reused (either with their old association,
+ or reused with a new association.) There can be certain
+ immediate transitions from <literal>active</literal> to <literal>cache</literal> state if the
+ page is known to be clean (unmodified), but that
+ transition is a matter of policy, depending upon the
+ algorithm choice of the VM system
+ maintainer.</para></listitem>
+
+ <listitem><para><literal>Free</literal>: pages without
+ data content, and can be immediately used in certain
+ circumstances where cache pages might be ineligible.
+ Free pages can be reused at interrupt or process
+ state.</para></listitem>
+
+ <listitem><para><literal>Wired</literal>: pages that are
+ fixed into memory, usually for kernel purposes, but also
+ sometimes for special use in
+ processes.</para></listitem>
+ </itemizedlist>
+
+ <para>Pages are most often written to disk (sort of a VM
+ sync) when they are in the inactive state, but active
+ pages can also be synced (but requires the
+ availability of certain CPU features.) This depends upon
+ the CPU tracking of the modified bit being available,
+ and in certain situations there can be an advantage for a
+ block of VM pages to be synced, whether they are active or
+ inactive. In most common cases, it is best to think of
+ the inactive queue to be a queue of relatively unused
+ pages that might or might not be in the process of being
+ written to disk. Cached pages are already synced, not
+ mapped, but available for immediate process use with their
+ old association or with a new association. Free pages are
+ available at interrupt level, but cached or free pages can
+ be used at process state for reuse. Cache pages are not
+ adequately locked to be available at interrupt
+ level.</para>
+
+ <para>There are some other flags (e.g., busy flag or busy
+ count) that might modify some of the rules that I
+ described.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="free-memory-amount">
+ <para>How much free memory is available?</para>
+ </question>
+<!-- Provided by John Dyson via Usenet -->
+ <answer>
+ <para>There are a couple of kinds of <quote>free
+ memory</quote>. One kind is the amount of memory
+ immediately available without paging anything else out.
+ That is approximately the size of cache queue + size of
+ free queue (with a derating factor, depending upon system
+ tuning.) Another kind of <quote>free memory</quote> is
+ the total amount of <acronym>VM</acronym> space. That can
+ be complex, but is dependent upon the amount of swap space
+ and memory. Other kinds of <quote>free memory</quote>
+ descriptions are also possible, but it is relatively
+ useless to define these, but rather it is important to
+ make sure that the paging rate is kept low, and to avoid
+ running out of swap space.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="var-empty">
+ <para>What is <filename>/var/empty</filename>? I can not
+ delete it!</para>
+ </question>
+
+ <answer>
+ <para><filename>/var/empty</filename> is a directory that the
+ &man.sshd.8; program uses when performing privilege separation.
+ The <filename>/var/empty</filename> directory is empty, owned by
+ <username>root</username> and has the <literal>schg</literal>
+ flag set.</para>
+
+ <para>Although it is not recommended to delete this directory, to
+ do so you will need to unset the <literal>schg</literal> flag
+ first. See the &man.chflags.1; manual page for more information
+ (and bear in mind the answer to <link linkend="unsetting-schg">
+ the question on unsetting the schg flag</link>).
+ </para>
+ </answer>
+ </qandaentry>
+ </qandaset>
+ </chapter>
+
+ <chapter id="x">
+ <title>Το Σύστημα X Windows και οι Εικονικές Κονσόλες</title>
+
+ <qandaset>
+ <qandaentry>
+ <question id="whatis-X">
+ <para>What is the X Window System?</para>
+ </question>
+
+ <answer>
+
+ <para>The X Window System (commonly <literal>X11</literal>) is the
+ most widely available windowing system capable of running on
+ &unix; or &unix;&nbsp;like systems, including
+ &os;. <ulink url= "http://www.x.org">The X.Org
+ Foundation</ulink> administers the <ulink
+ url="http://en.wikipedia.org/wiki/X_Window_System_core_protocol">
+ X protocol standards</ulink>, with the current reference
+ implementation, version 11 release &xorg.version;,
+ so you will often see references shortened to
+ <literal>X11</literal>.
+ </para>
+
+ <para>Many implementations are available for different
+ architectures and operating systems. An
+ implementation of the server-side code is properly known
+ as an <literal>X server</literal>.</para>
+
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="which-X">
+ <para>Which X implementations are available for &os;?</para>
+ </question>
+
+ <answer>
+
+ <para>Historically, the default implementation of X on
+ &os; has been
+ &xfree86; which is maintained by
+ <ulink url="http://www.xfree86.org">The XFree86 Project,
+ Inc.</ulink> This software was installed by default on
+ &os; versions up until 4.10 and 5.2. Although &xorg;
+ itself maintained an implementation during that time
+ period, it was basically only provided as a reference
+ platform, as it had suffered greatly from bitrot over
+ the years.</para>
+
+ <para>However, early in 2004, some XFree86 developers left
+ that project
+ over issues including the pace of code changes, future
+ directions, and interpersonal conflicts, and are now contributing
+ code directly to &xorg; instead. At that time, &xorg; updated its
+ source tree to the last &xfree86; release before its subsequent
+ licensing change (<application>XFree86 version 4.3.99.903</application>), incorporated
+ many changes that had previously been maintained separately,
+ and has released that software as <application>X11R6.7.0</application>. A separate but
+ related project, <ulink url="http://www.freedesktop.org">
+ freedesktop.org</ulink> (or <literal>fd.o</literal> for short),
+ is working on rearchitecting the original &xfree86; code to
+ offload more work onto the graphics cards (with the goal of
+ increased performance) and make it more modular
+ (with the goal of increased maintainability, and thus faster
+ releases as well as easier configuration). &xorg; intends to
+ incorporate the freedesktop.org changes in its future releases.</para>
+
+ <para>As of July 2004, in &os.current;,
+ &xfree86; has been replaced with &xorg; as the default
+ implementation. The &xfree86; ports
+ (<filename role="package">x11/XFree86-4</filename> and
+ subports) remain in the ports collection. But &xorg; is
+ the default X11 implementation for &os; 5.3 and later.</para>
+
+ <para>For further information, read the <ulink
+ url="&url.books.handbook;/x11.html">X11</ulink> section of the
+ FreeBSD Handbook.</para>
+
+ <note>
+ <para>The above describes the default X implementation installed.
+ It is still possible to install either implementation by
+ following the instructions in the entry for 20040723 in
+ <filename>/usr/ports/UPDATING</filename>.</para>
+ </note>
+
+ <warning>
+ <para>It is not currently
+ possible to mix-and-match pieces of each implementation;
+ one must choose one or the other.</para>
+ </warning>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="xorg-compatibility">
+ <para>Will my existing applications run with the &xorg; suite?</para>
+ </question>
+
+ <answer>
+ <para>The &xorg; software is written to the same X11R6 specification
+ that &xfree86; is, so basic applications should work
+ unchanged. A few lesser-used protocols have been deprecated
+ (<literal>XIE</literal>, <literal>PEX</literal>, and
+ <literal>lbxproxy</literal>), but in the first two cases, the
+ &os; port of &xfree86; did not support them either.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="xfree86-split">
+ <para>Why did the X projects split, anyway?</para>
+ </question>
+
+ <answer>
+ <para>The answer to this question is outside the scope of
+ this FAQ. Note that there are voluminous postings in various
+ mailing list archives on the Internet; please use your favorite
+ search engine to investigate the history instead of asking this
+ question on the &os; mailing lists. It may even be the case
+ that only the participants will ever know for certain.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="why-choose-xorg">
+ <para>Why did &os; choose to go with the &xorg; ports by default?</para>
+ </question>
+
+ <answer>
+ <para>The &xorg; developers claim that their goal is to release
+ more often and incorporate new features more quickly. If they
+ are able to do so, this will be very attractive. Also, their
+ software still uses the traditional X license, while &xfree86;
+ is now using their modified one.</para>
+
+ <note>
+ <para>This decision is still controversial. Only time will
+ tell which implementation proves technically superior. Each
+ &os; user should decide which they prefer.</para>
+ </note>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="running-X">
+ <para>I want to run X, how do I go about it?</para>
+ </question>
+
+ <answer>
+
+ <para>If you would like to add X to an existing installation, you
+ should use the <filename role="package">x11/xorg</filename>
+ meta-port, which will build and install all the necessary
+ components.</para>
+
+ <para>Then read and follow the documentation on the
+ &man.xorgconfig.1; tool, which assists you in
+ configuring &xorg; for your particular graphics
+ card/mouse/etc. You may also wish to examine the
+ &man.xorgcfg.1; tool, which provides a graphical interface
+ to the X configuration process.</para>
+
+ <para>For further information, read the <ulink
+ url="&url.books.handbook;/x11.html">X11</ulink> section of the
+ FreeBSD Handbook.</para>
+
+ <para>You may also wish to investigate the Xaccel server.
+ See the section on <link linkend="xig">Xi Graphics</link>
+ for more details.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="running-X-securelevels">
+ <para>I <emphasis>tried</emphasis> to run X, but I get an
+ <errorname>KDENABIO failed (Operation not permitted)</errorname>
+ error when I type <command>startx</command>. What do I do
+ now?</para>
+ </question>
+
+ <answer>
+ <para>Your system is probably running at a raised securelevel.
+ It is not possible to start X at a raised securelevel because
+ X requires write access to <devicename>/dev/io</devicename>.
+ For more information, see at the &man.init.8; manual
+ page.</para>
+
+ <para>So the question is what else you should do instead,
+ and you basically have two choices: set your securelevel
+ back down to zero (usually from <filename>/etc/rc.conf</filename>),
+ or run &man.xdm.1; at boot time (before the securelevel is
+ raised).</para>
+
+ <para>See <xref linkend="xdm-boot"> for more information about
+ running &man.xdm.1; at boot time.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="x-and-moused">
+ <para>Why does my mouse not work with X?</para>
+ </question>
+
+ <answer>
+ <para>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
+ <devicename>/dev/sysmouse</devicename>. All mouse events received
+ from the real mouse device are written to the sysmouse device
+ via moused. If you wish to use your mouse on one or more
+ virtual consoles, <emphasis>and</emphasis> use X, see
+ <xref linkend="moused" remap="another section"> and set up
+ moused.</para>
+
+ <para>Then edit <filename>/etc/X11/xorg.conf</filename> and make
+ sure you have the following lines:</para>
+
+ <programlisting>Section "InputDevice"
+ Option "Protocol" "SysMouse"
+ Option "Device" "/dev/sysmouse"
+.....</programlisting>
+
+ <para>Some people prefer to use
+ <devicename>/dev/mouse</devicename> under X. To make this
+ work, <devicename>/dev/mouse</devicename> should be linked
+ to <devicename>/dev/sysmouse</devicename> (see
+ &man.sysmouse.4;):</para>
+
+ <screen>&prompt.root; <userinput>cd /dev</userinput>
+&prompt.root; <userinput>rm -f mouse</userinput>
+&prompt.root; <userinput>ln -s sysmouse mouse</userinput></screen>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="x-and-wheel">
+ <para>My mouse has a fancy wheel. Can I use it in X?</para>
+ </question>
+
+ <answer>
+ <para>Yes.</para>
+
+ <para>You need to tell X that you have a 5 button mouse.
+ To do this, simply add the lines
+ <literal>Buttons 5</literal> and
+ <literal>ZAxisMapping 4 5</literal> to the
+ <quote>InputDevice</quote> section of
+ <filename>/etc/X11/xorg.conf</filename>. For example, you
+ might have the following <quote>InputDevice</quote> section
+ in <filename>/etc/X11/xorg.conf</filename>.</para>
+
+ <example>
+ <title><quote>InputDevice</quote> Section for Wheeled Mouse
+ in &xorg; configuration file</title>
+
+ <programlisting>Section "InputDevice"
+ Identifier "Mouse1"
+ Driver "mouse"
+ Option "Protocol" "auto"
+ Option "Device" "/dev/sysmouse"
+ Option "Buttons" "5"
+ Option "ZAxisMapping" "4 5"
+EndSection</programlisting>
+ </example>
+
+ <example>
+ <title><quote>.emacs</quote> example for naive page
+ scrolling with Wheeled Mouse (optional)</title>
+ <programlisting>;; wheel mouse
+(global-set-key [mouse-4] 'scroll-down)
+(global-set-key [mouse-5] 'scroll-up)</programlisting>
+ </example>
+
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="no-remote-x11">
+ <para>How do I use remote X displays?</para>
+ </question>
+
+ <answer>
+ <para>For security reasons, the default setting is to not allow a
+ machine to remotely open a window.</para>
+
+ <para>To enable this feature, simply start
+ <application>X</application> with the optional
+ <option>-listen_tcp</option> argument:</para>
+ <screen>&prompt.user; <userinput>startx -listen_tcp</userinput>
+ </screen>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="window-menu-weird">
+ <para>Why do X Window menus and dialog boxes not work
+ right?</para>
+ </question>
+
+ <answer>
+ <para>Try turning off the <keycap>Num Lock</keycap> key.</para>
+
+ <para>If your <keycap>Num Lock</keycap> key is on by default
+ at boot-time, you may add the following line in the
+ <literal>Keyboard</literal> section of the
+ <filename>/etc/X11/xorg.conf</filename> file.</para>
+
+ <programlisting># Let the server do the NumLock processing. This should only be
+# required when using pre-R6 clients
+ ServerNumLock</programlisting>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="virtual-console">
+ <para>What is a virtual console and how do I make more?</para>
+ </question>
+
+ <answer>
+ <para>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.</para>
+
+ <para>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.</para>
+
+ <para>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 <keycombo
+ action="simul"><keycap>Alt</keycap><keycap>F2</keycap></keycombo>
+ (hold down the <keycap>Alt</keycap> key and press the
+ <keycap>F2</keycap> key), and you will find a login prompt
+ waiting for you on the second <quote>virtual
+ console</quote>! When you want to go back to the original
+ session, do <keycombo
+ action="simul"><keycap>Alt</keycap><keycap>F1</keycap></keycombo>.</para>
+
+ <para>The default FreeBSD installation has eight virtual
+ consoles enabled. <keycombo
+ action="simul"><keycap>Alt</keycap><keycap>F1</keycap></keycombo>,
+ <keycombo
+ action="simul"><keycap>Alt</keycap><keycap>F2</keycap></keycombo>,
+ <keycombo
+ action="simul"><keycap>Alt</keycap><keycap>F3</keycap></keycombo>,
+ and so on will switch between these virtual
+ consoles.</para>
+
+ <para>To enable more of them, edit
+ <filename>/etc/ttys</filename> (see &man.ttys.5;)
+ and add entries for <devicename>ttyv4</devicename>
+ to <devicename>ttyvc</devicename> after the comment on
+ <quote>Virtual terminals</quote>:</para>
+
+ <programlisting># 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</programlisting>
+
+ <para>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 <literal>secure</literal>
+ to <literal>insecure</literal>.</para>
+
+ <important>
+ <para>If you want to run an X server you
+ <emphasis>must</emphasis> 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 are 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.</para>
+ </important>
+
+ <para>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:</para>
+
+ <programlisting>ttyvb "/usr/libexec/getty Pc" cons25 on secure</programlisting>
+
+ <para>to:</para>
+
+ <programlisting>ttyvb "/usr/libexec/getty Pc" cons25 off secure</programlisting>
+
+ <para>If your keyboard has only ten function keys, you would
+ end up with:</para>
+
+<programlisting>ttyv9 "/usr/libexec/getty Pc" cons25 off secure
+ttyva "/usr/libexec/getty Pc" cons25 off secure
+ttyvb "/usr/libexec/getty Pc" cons25 off secure</programlisting>
+
+ <para>(You could also just delete these lines.)</para>
+
+ <para>Next, the easiest (and cleanest) way to activate the
+ virtual consoles is to reboot. However, if you really do not
+ want to reboot, you can just shut down the X Window system
+ and execute (as <username>root</username>):</para>
+
+ <screen>&prompt.root; <userinput>kill -HUP 1</userinput></screen>
+
+ <para>It is imperative that you completely shut down X Window if
+ it is running, before running this command. If you do not,
+ your system will probably appear to hang/lock up after
+ executing the kill command.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="vty-from-x">
+ <para>How do I access the virtual consoles from X?</para>
+ </question>
+
+ <answer>
+ <para>Use <keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>Alt</keycap>
+ <keycap>F<replaceable>n</replaceable></keycap>
+ </keycombo> to switch back to a virtual console.
+ <keycombo action="simul">
+ <keycap>Ctrl</keycap>
+ <keycap>Alt</keycap>
+ <keycap>F1</keycap>
+ </keycombo> would return you to the first virtual console.</para>
+
+ <para>Once you are back to a text console, you can then use
+ <keycombo action="simul">
+ <keycap>Alt</keycap>
+ <keycap>F<replaceable>n</replaceable></keycap>
+ </keycombo> as normal to move between them.</para>
+
+ <para>To return to the X session, you must switch to the
+ virtual console running X. If you invoked X from the
+ command line, (e.g., using <command>startx</command>) then
+ the X session will attach to the next unused virtual
+ console, not the text console from which it was invoked.
+ If you have eight active virtual terminals then X will be
+ running on the ninth, and you would use
+ <keycombo action="simul">
+ <keycap>Alt</keycap>
+ <keycap>F9</keycap>
+ </keycombo> to return.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="xdm-boot">
+ <para>How do I start XDM on boot?</para>
+ </question><answer>
+
+ <para>There are two schools of thought on how to start
+ &man.xdm.1;. One school starts xdm from
+ <filename>/etc/ttys</filename> (see &man.ttys.5;) using
+ the supplied example, while the other simply runs xdm from
+ <filename>rc.local</filename> (see &man.rc.8;) or from a
+ <filename>X.sh</filename> script in
+ <filename>/usr/local/etc/rc.d</filename>. Both are equally
+ valid, and one may work in situations where the other does
+ not. In both cases the result is the same: X will pop up
+ a graphical login: prompt.</para>
+
+ <para>The ttys method has the advantage of documenting which
+ vty X will start on and passing the responsibility of
+ restarting the X server on logout to init. The rc.local
+ method makes it easy to kill xdm if there is a problem
+ starting the X server.</para>
+
+ <para>If loaded from rc.local, <command>xdm</command> should
+ be started without any arguments (i.e., as a daemon). xdm must
+ start AFTER getty runs, or else getty and xdm will conflict,
+ locking out the console. The best way around this is to have
+ the script sleep 10 seconds or so then launch xdm.</para>
+
+ <para>If you are to start <command>xdm</command> from
+ <filename>/etc/ttys</filename>, there still is a chance of
+ conflict between <command>xdm</command> and
+ &man.getty.8;. One way to avoid this is to add the
+ <literal>vt</literal> number in the
+ <filename>/usr/local/lib/X11/xdm/Xservers</filename>
+ file.</para>
+
+ <programlisting>:0 local /usr/local/bin/X vt4</programlisting>
+
+ <para>The above example will direct the X server to run in
+ <devicename>/dev/ttyv3</devicename>. Note the number is offset by
+ one. The X server counts the vty from one, whereas the FreeBSD
+ kernel numbers the vty from zero.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="xconsole-failure">
+ <para>Why do I get <errorname>Couldn't open console</errorname>
+ when I run xconsole?</para>
+ </question>
+
+ <answer>
+ <para>If you start <application>X</application>
+ with
+ <command>startx</command>, the permissions on
+ <devicename>/dev/console</devicename> will
+ <emphasis>not</emphasis> get changed, resulting in
+ things like
+ <command>xterm -C</command> and
+ <command>xconsole</command> not working.</para>
+
+ <para>This is because of the way console permissions are set
+ by default. On a multi-user system, one does not 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 &man.fbtab.5;
+ file exists to solve such problems.</para>
+
+ <para>In a nutshell, make sure an uncommented line of the
+ form</para>
+
+ <programlisting>/dev/ttyv0 0600 /dev/console</programlisting>
+
+ <para>is in <filename>/etc/fbtab</filename> (see
+ &man.fbtab.5;) and it will ensure that whomever logs in on
+ <devicename>/dev/ttyv0</devicename> will own the
+ console.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="xfree86-root">
+ <para>Before, I was able to run &xfree86; as a regular user. Why does
+ it now say that I must be <username>root</username>?</para>
+ </question>
+
+ <answer>
+ <para>All X servers need to be run as
+ <username>root</username> in order to get direct access to
+ your video hardware. Older versions of &xfree86; (&lt;=
+ 3.3.6) installed all bundled servers to be automatically
+ run as <username>root</username> (setuid to
+ <username>root</username>). This is obviously a security
+ hazard because X servers are large, complicated programs.
+ Newer versions of &xfree86; do not install the servers
+ setuid to <username>root</username> for just this
+ reason.</para>
+
+ <para>Obviously, running an X server as the
+ <username>root</username> user is not acceptable, nor a
+ good idea security-wise. There are two ways to be able to
+ use X as a regular user. The first is to use
+ <command>xdm</command> or another display manager (e.g.,
+ <command>kdm</command>); the second is to use the
+ <command>Xwrapper</command>.</para>
+
+ <para><command>xdm</command> is a daemon that handles graphical
+ logins. It is usually started at boot time, and is responsible
+ for authenticating users and starting their sessions; it is
+ essentially the graphical counterpart of
+ &man.getty.8; and &man.login.1;. For
+ more information on <command>xdm</command> see
+ <ulink url="http://www.xfree86.org/sos/resources.html">the &xfree86;
+ documentation</ulink>, and the <link linkend="xdm-boot">the FAQ
+ entry</link> on it.</para>
+
+ <para><command>Xwrapper</command> is the X server wrapper; it is
+ a small utility to enable one to manually run an X server while
+ maintaining reasonable safety. It performs some sanity checks
+ on the command line arguments given, and if they pass, runs the
+ appropriate X server. If you do not want to run a display
+ manager for whatever reason, this is for you. If you have
+ installed the complete ports collection, you can find the port in
+ <filename>/usr/ports/x11/wrapper</filename>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="ps2-x">
+ <para>Why does my PS/2 mouse misbehave under X?</para>
+ </question>
+
+ <answer>
+ <para>Your mouse and the mouse driver may have somewhat become
+ out of synchronization.</para>
+
+ <para>
+ In rare cases the driver may erroneously report
+ synchronization problem and you may see the kernel
+ message:</para>
+
+ <programlisting>psmintr: out of sync (xxxx != yyyy)</programlisting>
+
+ <para>and notice that your mouse does not work properly.</para>
+
+ <para>If this happens, disable the synchronization check code
+ by setting the driver flags for the PS/2 mouse driver to 0x100.
+ Enter <emphasis>UserConfig</emphasis> by giving the
+ <option>-c</option> option at the boot prompt:</para>
+
+ <screen>boot: <userinput>-c</userinput></screen>
+
+ <para>Then, in the <emphasis>UserConfig</emphasis> command
+ line, type:</para>
+
+ <screen>UserConfig&gt; <userinput>flags psm0 0x100</userinput>
+UserConfig&gt; <userinput>quit</userinput></screen>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="ps2-mousesystems">
+ <para>Why does my PS/2 mouse from MouseSystems not
+ work?</para>
+ </question>
+
+ <answer>
+ <para>There have been some reports that certain model of PS/2
+ mouse from MouseSystems works only if it is put into the
+ <quote>high resolution</quote> mode. Otherwise, the mouse
+ cursor may jump to the upper-left corner of the screen every
+ so often.</para>
+
+ <para>Specify the flags 0x04 to the PS/2 mouse driver to put
+ the mouse into the high resolution mode. Enter
+ <emphasis>UserConfig</emphasis> by giving the
+ <option>-c</option> option at the boot prompt:</para>
+
+ <screen>boot: <userinput>-c</userinput></screen>
+
+ <para>Then, in the <emphasis>UserConfig</emphasis> command line,
+ type:</para>
+
+ <screen>UserConfig&gt; <userinput>flags psm0 0x04</userinput>
+UserConfig&gt; <userinput>quit</userinput></screen>
+
+ <para>See the previous section for another possible cause of mouse
+ problems.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="xfree86-version">
+ <para>I want to install different X server.</para>
+ </question>
+
+ <answer>
+ <para>&os; versions prior 5.3 will use the default
+ <application>&xfree86;&nbsp;4.X</application>,
+ while latter versions will default to
+ <application>&xorg;</application>.
+ If you want to run a different X11 implementation
+ than the default one, add the following line to
+ <filename>/etc/make.conf</filename>, (if you
+ do not have this file, create it):</para>
+
+ <programlisting>X_WINDOW_SYSTEM= xorg</programlisting>
+
+ <para>This variable may be set to <literal>xorg</literal>,
+ <literal>xfree86-4</literal>, or
+ <literal>xfree86-3</literal>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="mouse-button-reverse">
+ <para>How do I reverse the mouse buttons?</para>
+ </question>
+
+ <answer>
+ <para>Run the command
+ <command>xmodmap -e "pointer = 3 2 1"</command> from your
+ <filename>.xinitrc</filename> or <filename>.xsession</filename>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="install-splash">
+ <para>How do I install a splash screen and where do I find
+ them?</para>
+ </question>
+
+ <answer>
+
+ <para>&os; have a feature to allow the display of
+ <quote>splash</quote> screens during the boot
+ messages. The splash screens currently must be a 256 color
+ bitmap (<filename>*.BMP</filename>) or ZSoft PCX
+ (<filename>*.PCX</filename>) file. In addition, they must
+ have a resolution of 320x200 or less to work on standard
+ VGA adapters. If you compile VESA support into your
+ kernel, then you can use larger bitmaps up to 1024x768.
+ The actual VESA support can either be compiled directly
+ into the kernel with the <literal>VESA</literal> kernel
+ config option or by loading the VESA kld module during
+ bootup.</para>
+
+ <para>To use a splash screen, you need to modify the startup
+ files that control the boot process for &os;.</para>
+
+ <para>You need to create
+ a <filename>/boot/loader.rc</filename> file that contains
+ the following lines:</para>
+
+ <programlisting>include /boot/loader.4th
+start</programlisting>
+
+ <para>and a <filename>/boot/loader.conf</filename> that
+ contains the following:</para>
+
+ <programlisting>splash_bmp_load="YES"
+bitmap_load="YES"</programlisting>
+
+ <para>This assumes you are using
+ <filename>/boot/splash.bmp</filename> for your splash
+ screen. If you would rather use a PCX file, copy it to
+ <filename>/boot/splash.pcx</filename>, create a
+ <filename>/boot/loader.rc</filename> as instructed above,
+ and create a <filename>/boot/loader.conf</filename> that
+ contains:</para>
+
+ <programlisting>splash_pcx_load="YES"
+bitmap_load="YES"
+bitmap_name="/boot/splash.pcx"</programlisting>
+
+ <para>Now all you need is a splash screen. For that you can
+ surf on over to the gallery at
+ <ulink url="http://www.baldwin.cx/splash/"></ulink>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="windows-keys">
+ <para>Can I use the &windows;
+ keys on my keyboard in X?</para>
+ </question>
+
+ <answer>
+ <para>Yes. All you need to do is use &man.xmodmap.1; to define
+ what function you wish them to perform.</para>
+
+ <para>Assuming all <quote>&windows;</quote> keyboards
+ are standard then the keycodes for the 3 keys are</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>115 - &windows; key, between
+ the left-hand Ctrl and Alt keys</para>
+ </listitem>
+
+ <listitem>
+ <para>116 - &windows; key, to the
+ right of the <keycap>AltGr</keycap> key</para>
+ </listitem>
+
+ <listitem>
+ <para>117 - <keycap>Menu</keycap> key, to the left of
+ the right-hand <keycap>Ctrl</keycap> key</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>To have the left &windows; key print a comma,
+ try this.</para>
+
+ <screen>&prompt.root; <userinput>xmodmap -e "keycode 115 = comma"</userinput></screen>
+
+ <para>You will probably have to re-start your window manager
+ to see the result.</para>
+
+ <para>To have the &windows;
+ key-mappings enabled automatically every time you start X either
+ put the <command>xmodmap</command> commands in your
+ <filename>~/.xinitrc</filename> file or, preferably, create a file
+ <filename>~/.xmodmaprc</filename> and include the
+ <command>xmodmap</command> options, one per line, then add the
+ line</para>
+
+ <programlisting>xmodmap $HOME/.xmodmaprc</programlisting>
+
+ <para>to your <filename>~/.xinitrc</filename>.</para>
+
+ <para>For example, you could map the 3 keys to be
+ <keycap>F13</keycap>, <keycap>F14</keycap>, and
+ <keycap>F15</keycap>, respectively. This would make it
+ easy to map them to useful functions within applications
+ or your window manager, as demonstrated further
+ down.</para>
+
+ <para>To do this put the following in
+ <filename>~/.xmodmaprc</filename>.</para>
+
+ <programlisting>keycode 115 = F13
+keycode 116 = F14
+keycode 117 = F15</programlisting>
+
+ <para>If you use <command>fvwm2</command>, for example, you
+ could map the keys so that <keycap>F13</keycap> iconifies
+ (or de-iconifies) the window the cursor is in,
+ <keycap>F14</keycap> brings the window the cursor is in to
+ the front or, if it is already at the front, pushes it to
+ the back, and <keycap>F15</keycap> pops up the main
+ Workplace (application) menu even if the cursor is not on
+ the desktop, which is useful if you do not have any part
+ of the desktop visible (and the logo on the key matches
+ its functionality).</para>
+
+ <para>The following entries in
+ <filename>~/.fvwmrc</filename> implement the
+ aforementioned setup:</para>
+
+ <programlisting>Key F13 FTIWS A Iconify
+Key F14 FTIWS A RaiseLower
+Key F15 A A Menu Workplace Nop</programlisting>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="x-3d-acceleration">
+ <para>How can I get 3D hardware acceleration for
+ &opengl;?</para>
+ </question>
+
+ <answer>
+ <para>The availability of 3D acceleration depends on the
+ version of &xfree86; or &xorg; that you are using and the type of video chip
+ you have. If you have an NVIDIA chip, you can use the binary
+ drivers provided for FreeBSD on the
+ <ulink url="http://www.nvidia.com/content/drivers/drivers.asp">
+ Drivers</ulink> section of their website. For other cards
+ with &xfree86;-4 or &xorg;, including the Matrox G200/G400, ATI Rage
+ 128/Radeon, and 3dfx Voodoo 3, 4, 5, and Banshee,
+ information on hardware acceleration is available on the
+ <ulink
+ url="http://people.FreeBSD.org/~anholt/dri/">XFree86-4
+ Direct Rendering on FreeBSD</ulink> page.</para>
+ </answer>
+ </qandaentry>
+ </qandaset>
+ </chapter>
+
+ <chapter id="networking">
+ <title>Δικτύωση</title>
+
+ <qandaset>
+ <qandaentry>
+ <question id="diskless-booting">
+ <para>Where can I get information on
+ <quote>diskless booting</quote>?</para>
+ </question>
+
+ <answer>
+ <para><quote>Diskless booting</quote> 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 <ulink url="&url.books.handbook;/network-diskless.html">the
+ Handbook entry on diskless booting</ulink></para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="router">
+ <para>Can a FreeBSD box be used as a dedicated network
+ router?</para>
+ </question>
+
+ <answer>
+ <para>Yes. Please see the Handbook entry on <ulink
+ url="&url.books.handbook;/advanced-networking.html"> advanced
+ networking</ulink>, specifically the section on <ulink
+ url="&url.books.handbook;/network-routing.html">routing
+ and gateways</ulink>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="win95-connection">
+ <para>Can I connect my &windows; box to the Internet via
+ FreeBSD?</para>
+ </question>
+
+ <answer>
+ <para>Typically, people who ask this question have two PCs
+ at home, one with FreeBSD and one with some version of
+ &windows; the idea is to use the FreeBSD box to connect to
+ the Internet and then be able to access the Internet from
+ the &windows; box through the FreeBSD box. This is really
+ just a special case of the previous question and works
+ perfectly well.</para>
+
+ <para>If you are using dialup to connect to the Internet
+ user-mode &man.ppp.8; contains a <option>-nat</option>
+ option. If you run &man.ppp.8; with the
+ <option>-nat</option> option, set
+ <literal>gateway_enable</literal> to
+ <emphasis>YES</emphasis> in
+ <filename>/etc/rc.conf</filename>, and configure your
+ &windows; machine correctly, this should work fine. For more
+ information, please see the &man.ppp.8; manual page or the
+ <ulink url="&url.books.handbook;/userppp.html">Handbook entry on
+ user PPP</ulink>.</para>
+
+ <para>If you are using kernel-mode PPP or have an Ethernet
+ connection to the Internet, you need to use
+ &man.natd.8;. Please look at the <ulink
+ url="&url.books.handbook;/network-natd.html">natd</ulink> section
+ of the Handbook for a tutorial.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="slip-ppp-support">
+ <para>Does FreeBSD support SLIP and PPP?</para>
+ </question>
+
+ <answer>
+ <para>Yes. See the manual pages for &man.slattach.8;,
+ &man.sliplogin.8;, &man.ppp.8;, and &man.pppd.8;. &man.ppp.8;
+ and &man.pppd.8; provide support for both incoming and outgoing
+ connections, while &man.sliplogin.8; deals exclusively with
+ incoming connections, and &man.slattach.8; deals exclusively
+ with outgoing connections.</para>
+
+ <para>For more information on how to use these, please see the
+ <ulink url="&url.books.handbook;/ppp-and-slip.html">Handbook chapter on
+ PPP and SLIP</ulink>.</para>
+
+ <para>If you only have access to the Internet through a
+ <quote>shell account</quote>, you may want to have a look
+ at the <filename role="package">net/slirp</filename>
+ package. It can provide you with (limited) access to
+ services such as ftp and http direct from your local
+ machine.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="natd">
+ <para>Does FreeBSD support NAT or Masquerading?</para>
+ </question>
+
+ <answer>
+ <para>Yes. If you want to use NAT over a user PPP
+ connection, please see the <ulink
+ url="&url.books.handbook;/userppp.html">Handbook entry on user
+ PPP</ulink>. If you want to use NAT over some other sort
+ of network connection, please look at the <ulink
+ url="&url.books.handbook;/network-natd.html">natd</ulink> section
+ of the Handbook.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="parallel-connect">
+ <para>How do I connect two FreeBSD systems over a parallel line
+ using PLIP?</para>
+ </question>
+
+ <answer>
+ <para>Please see the <ulink url="&url.books.handbook;/network-plip.html">PLIP
+ section</ulink> of the Handbook.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="create-dev-net">
+ <para>Why can I not create a <devicename>/dev/ed0</devicename>
+ device?</para>
+ </question>
+
+ <answer>
+ <para>Because they are not necessary. In the Berkeley
+ networking framework, network interfaces are only directly
+ accessible by kernel code. Please see the
+ <filename>/etc/rc.network</filename> 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.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="ethernet-aliases">
+ <para>How can I set up Ethernet aliases?</para>
+ </question>
+
+ <answer>
+ <para>If the alias is on the same subnet as an address
+ already configured on the interface, then add
+ <literal>netmask 0xffffffff</literal> to your
+ &man.ifconfig.8; command-line, as in the following:</para>
+
+ <screen>&prompt.root; <userinput>ifconfig ed0 alias 192.0.2.2 netmask 0xffffffff</userinput></screen>
+
+ <para>Otherwise, just specify the network address and
+ netmask as usual:</para>
+
+ <screen>&prompt.root; <userinput>ifconfig ed0 alias 172.16.141.5 netmask 0xffffff00</userinput></screen>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="port-3c503">
+ <para>How do I get my 3C503 to use the other network
+ port?</para>
+ </question>
+
+ <answer>
+ <para>If you want to use the other ports, you will have to specify
+ an additional parameter on the
+ &man.ifconfig.8; command line. The default port is
+ <literal>link0</literal>. To use the AUI port instead of the
+ BNC one, use <literal>link2</literal>. These flags should be
+ specified using the ifconfig_* variables in
+ <filename>/etc/rc.conf</filename> (see &man.rc.conf.5;).</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="nfs">
+ <para>Why am I having trouble with NFS and FreeBSD?</para>
+ </question>
+
+ <answer>
+ <para>Certain PC network cards are better than others (to put
+ it mildly) and can sometimes cause problems with network
+ intensive applications like NFS.</para>
+
+ <para>See <ulink url="&url.books.handbook;/network-nfs.html">
+ the Handbook entry on NFS</ulink> for more information on
+ this topic.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="nfs-linux">
+ <para>Why can I not NFS-mount from a &linux; box?</para>
+ </question>
+
+ <answer>
+ <para>Some versions of the &linux; NFS code only accept mount
+ requests from a privileged port; try</para>
+
+ <screen>&prompt.root; <userinput>mount -o -P linuxbox:/blah /mnt</userinput></screen>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="nfs-sun">
+ <para>Why can I not NFS-mount from a Sun box?</para>
+ </question>
+
+ <answer>
+ <para>&sun; workstations running &sunos; 4.X only accept mount
+ requests from a privileged port; try</para>
+
+ <screen>&prompt.root; <userinput>mount -o -P sunbox:/blah /mnt</userinput></screen>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="exports-errors">
+ <para>Why does <command>mountd</command> keep telling me it
+ <errorname>can't change attributes</errorname> and that I have a
+ <errorname>bad exports list</errorname> on my FreeBSD NFS
+ server?</para>
+ </question>
+
+ <answer>
+ <para>The most frequent problem is not understanding the
+ correct format of <filename>/etc/exports</filename>.
+ Please review &man.exports.5; and the <ulink
+ url="&url.books.handbook;/network-nfs.html">NFS</ulink> entry in the
+ Handbook, especially the section on <ulink
+ url="&url.books.handbook;/network-nfs.html#CONFIGURING-NFS">configuring
+ NFS</ulink>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="ppp-nextstep">
+ <para>Why am I having problems talking PPP to NeXTStep
+ machines?</para>
+ </question>
+
+ <answer>
+
+ <para>Try disabling the TCP extensions in
+ <filename>/etc/rc.conf</filename> (see &man.rc.conf.5;) by
+ changing the following variable to NO:</para>
+
+ <programlisting>tcp_extensions=NO</programlisting>
+
+ <para>Xylogic's Annex boxes are also broken in this regard
+ and you must use the above change to connect through
+ them.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="ip-multicast">
+ <para>How do I enable IP multicast support?</para>
+ </question>
+
+ <answer>
+ <para>FreeBSD supports multicast host operations by
+ default. If you want your box to run as a multicast
+ router, you need to recompile your kernel with the
+ <literal>MROUTING</literal> option and run
+ &man.mrouted.8;. FreeBSD will start &man.mrouted.8; at
+ boot time if the flag <literal>mrouted_enable</literal> is
+ set to <literal>"YES"</literal> in
+ <filename>/etc/rc.conf</filename>.</para>
+
+ <para>MBONE tools are available in their own ports category,
+ <ulink
+ url="http://www.FreeBSD.org/ports/mbone.html">mbone</ulink>.
+ If you are looking for the conference tools
+ <command>vic</command> and <command>vat</command>, look
+ there!</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="dec-pci-chipset">
+ <para>Which network cards are based on the DEC PCI
+ chipset?</para>
+ </question><answer>
+
+ <para>Here is a list compiled by Glen Foster
+ <email>gfoster@driver.nsta.org</email>,
+ with some more modern additions:</para>
+
+ <table>
+ <title>Network cards based on the DEC PCI chipset</title>
+
+ <tgroup cols=2>
+ <thead>
+ <row>
+ <entry>Vendor</entry>
+ <entry>Model</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry>ASUS</entry>
+ <entry>PCI-L101-TB</entry>
+ </row>
+ <row>
+ <entry>Accton</entry>
+ <entry>ENI1203</entry>
+ </row>
+ <row>
+ <entry>Cogent</entry>
+ <entry>EM960PCI</entry>
+ </row>
+ <row>
+ <entry>Compex</entry>
+ <entry>ENET32-PCI</entry>
+ </row>
+ <row>
+ <entry>D-Link</entry>
+ <entry>DE-530</entry>
+ </row>
+ <row>
+ <entry>Dayna</entry>
+ <entry>DP1203, DP2100</entry>
+ </row>
+ <row>
+ <entry>DEC</entry>
+ <entry>DE435, DE450</entry>
+ </row>
+ <row>
+ <entry>Danpex</entry>
+ <entry>EN-9400P3</entry>
+ </row>
+ <row>
+ <entry>JCIS</entry>
+ <entry>Condor JC1260</entry>
+ </row>
+ <row>
+ <entry>Linksys</entry>
+ <entry>EtherPCI</entry>
+ </row>
+ <row>
+ <entry>Mylex</entry>
+ <entry>LNP101</entry>
+ </row>
+ <row>
+ <entry>SMC</entry>
+ <entry>EtherPower 10/100 (Model 9332)</entry>
+ </row>
+ <row>
+ <entry>SMC</entry>
+ <entry>EtherPower (Model 8432)</entry>
+ </row>
+ <row>
+ <entry>TopWare</entry>
+ <entry>TE-3500P</entry>
+ </row>
+ <row>
+ <entry>Znyx (2.2.x)</entry>
+ <entry>ZX312, ZX314, ZX342, ZX345, ZX346, ZX348</entry>
+ </row>
+ <row>
+ <entry>Znyx (3.x)</entry>
+ <entry>ZX345Q, ZX346Q, ZX348Q, ZX412Q, ZX414, ZX442, ZX444,
+ ZX474, ZX478, ZX212, ZX214 (10mbps/hd)</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="fqdn-hosts">
+ <para>Why do I have to use the FQDN for hosts on my
+ site?</para>
+ </question>
+
+ <answer>
+ <para>You will probably find that the host is actually in a
+ different domain; for example, if you are in foo.example.org and
+ you wish to reach a host called <hostid>mumble</hostid> in the
+ <hostid role="domainname">example.org</hostid> domain, you will
+ have to refer to it by the fully-qualified domain name, <hostid
+ role="fqdn">mumble.example.org</hostid>, instead of just
+ <hostid>mumble</hostid>.</para>
+
+ <para>Traditionally, this was allowed by BSD BIND resolvers.
+ However the current version of
+ <application>bind</application> (see &man.named.8;)
+ 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
+ <hostid>mumble</hostid> must either be found as <hostid
+ role="fqdn">mumble.foo.example.org</hostid>, or it will be searched
+ for in the root domain.</para>
+
+ <para>This is different from the previous behavior, where the
+ search continued across
+ <hostid role="domainname">mumble.example.org</hostid>, and
+ <hostid role="domainname">mumble.edu</hostid>. Have a look at
+ RFC 1535 for why this was considered bad practice, or even a
+ security hole.</para>
+
+ <para>As a good workaround, you can place the line</para>
+
+ <programlisting>search foo.example.org example.org</programlisting>
+
+ <para>instead of the previous</para>
+
+ <programlisting>domain foo.example.org</programlisting>
+
+ <para>into your <filename>/etc/resolv.conf</filename> file
+ (see &man.resolv.conf.5;). However, make sure that the
+ search order does not go beyond the <quote>boundary
+ between local and public administration</quote>, as RFC
+ 1535 calls it.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="network-permission-denied">
+ <para>Why do I get an error, <errorname>Permission
+ denied</errorname>, for all networking operations?</para>
+ </question>
+
+ <answer>
+ <para>If you have compiled your kernel with the
+ <literal>IPFIREWALL</literal> option, you need to be aware
+ that the default policy is to deny all packets that are
+ not explicitly allowed.</para>
+
+ <para>If you had unintentionally misconfigured your system
+ for firewalling, you can restore network operability by
+ typing the following while logged in as
+ <username>root</username>:</para>
+
+ <screen>&prompt.root; <userinput>ipfw add 65534 allow all from any to any</userinput></screen>
+
+ <para>You can also set
+ <literal>firewall_type="open"</literal> in
+ <filename>/etc/rc.conf</filename>.</para>
+
+ <para>For further information on configuring a FreeBSD
+ firewall, see the <ulink url="&url.books.handbook;/firewalls.html">
+ Handbook chapter</ulink>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="ipfw-overhead">
+ <para>How much overhead does IPFW incur?</para>
+ </question>
+
+ <answer>
+ <para>Please see the Handbook's <ulink
+ url="&url.books.handbook;/firewalls.html">Firewalls</ulink>
+ section, specifically the section on <ulink
+ url="&url.books.handbook;/firewalls.html#IPFW-OVERHEAD">IPFW
+ Overhead & Optimization</ulink>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="ipfw-fwd">
+ <para>Why is my <command>ipfw</command> <quote>fwd</quote> rule
+ to redirect a service to another machine not working?</para>
+ </question>
+
+ <answer>
+ <para>Possibly because you want to do network address translation
+ (NAT) and not just forward packets. A <quote>fwd</quote> rule
+ does exactly what it says; it forwards packets. It does not
+ actually change the data inside the packet. Say we have a rule
+ like:</para>
+
+ <screen>01000 fwd <replaceable>10.0.0.1</replaceable> from any to <replaceable>foo 21</replaceable></screen>
+
+ <para>When a packet with a destination address of
+ <replaceable>foo</replaceable> arrives at the machine with this
+ rule, the packet is forwarded to
+ <replaceable>10.0.0.1</replaceable>, but it still has the
+ destination address of <replaceable>foo</replaceable>! The
+ destination address of the packet is <emphasis>not</emphasis>
+ changed to <replaceable>10.0.0.1</replaceable>. Most machines
+ would probably drop a packet that they receive with a
+ destination address that is not their own. Therefore, using a
+ <quote>fwd</quote> rule does not often work the way the user
+ expects. This behavior is a feature and not a bug.</para>
+
+ <para>See the <link linkend="service-redirect">FAQ about
+ redirecting services</link>, the &man.natd.8; manual, or one of
+ the several port redirecting utilities in the <ulink
+ url="&url.base;/ports/index.html">ports collection</ulink> for a correct way to do
+ this.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="service-redirect">
+ <para>How can I redirect service requests from one machine to
+ another?</para>
+ </question>
+
+ <answer>
+ <para>You can redirect FTP (and other service) request with
+ the <literal>socket</literal> package, available in the ports
+ tree in category <quote>sysutils</quote>. Simply replace the
+ service's command line to call socket instead, like so:</para>
+
+ <programlisting>ftp stream tcp nowait nobody /usr/local/bin/socket socket <replaceable>ftp.example.com</replaceable> <replaceable>ftp</replaceable></programlisting>
+
+ <para>where <replaceable>ftp.example.com</replaceable> and
+ <replaceable>ftp</replaceable> are the host and port to
+ redirect to, respectively.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="bandwidth-mgr-tool">
+ <para>Where can I get a bandwidth management tool?</para>
+ </question>
+
+ <answer>
+ <para>There are three bandwidth management tools available
+ for FreeBSD. &man.dummynet.4; is integrated into FreeBSD
+ as part of &man.ipfw.4;. <ulink
+ url="http://www.csl.sony.co.jp/person/kjc/programs.html">ALTQ</ulink>
+ is available for free on FreeBSD 4.X and has been
+ integrated into FreeBSD 5.X as part of &man.pf.4;.
+ Bandwidth Manager from <ulink
+ url="http://www.etinc.com/">Emerging Technologies</ulink>
+ is a commercial product.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="bpf-not-configured">
+ <para>Why do I get <errorname>/dev/bpf0: device not
+ configured</errorname>?</para>
+ </question>
+
+ <answer>
+ <para>You are running a program that requires the Berkeley
+ Packet Filter (&man.bpf.4;), but it is not in your kernel.
+ Add this to your kernel config file and build a new
+ kernel:</para>
+
+ <programlisting>pseudo-device bpf # Berkeley Packet Filter</programlisting>
+
+ <para>On FreeBSD 4.X and earlier, you must also create the
+ device node. After rebooting, go to the
+ <filename>/dev</filename> directory and run:</para>
+
+ <screen>&prompt.root; <userinput>sh MAKEDEV bpf0</userinput></screen>
+
+ <para>Please see the <ulink
+ url="&url.books.handbook;/kernelconfig-nodes.html"> Handbook entry
+ on device nodes</ulink> for more information on managing
+ devices.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="mount-smb-share">
+ <para>How do I mount a disk from a &windows; machine that is on my
+ network, like smbmount in &linux;?</para>
+ </question>
+
+ <answer>
+ <para>Use the <application>SMBFS</application> toolset. It
+ includes a set of kernel modifications and a set of
+ userland programs. The programs and information are
+ available as <filename role="package">net/smbfs</filename>
+ in the ports collection, or in the base system as of
+ 4.5-RELEASE and later.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="icmp-response-bw-limit">
+ <para>What are these messages about <quote>icmp-response
+ bandwidth limit 300/200 pps</quote> in my log
+ files?</para>
+ </question>
+
+ <answer>
+ <para>This is the kernel telling you that some activity is
+ provoking it to send more ICMP or TCP reset (RST)
+ responses than it thinks it should. ICMP responses are
+ often generated as a result of attempted connections to
+ unused UDP ports. TCP resets are generated as a result of
+ attempted connections to unopened TCP ports. Among
+ others, these are the kinds of activities which may cause
+ these messages:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Brute-force denial of service (DoS) attacks (as
+ opposed to single-packet attacks which exploit a
+ specific vulnerability).</para>
+ </listitem>
+
+ <listitem>
+ <para>Port scans which attempt to connect to a large
+ number of ports (as opposed to only trying a few
+ well-known ports).</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>The first number in the message tells you how many
+ packets the kernel would have sent if the limit was not in
+ place, and the second number tells you the limit. You can
+ control the limit using the
+ <varname>net.inet.icmp.icmplim</varname> sysctl variable
+ like this, where <literal>300</literal> is the limit in
+ packets per second:</para>
+
+ <screen>&prompt.root; <userinput>sysctl -w net.inet.icmp.icmplim=300</userinput></screen>
+
+ <para>If you do not want to see messages about this in your
+ log files, but you still want the kernel to do response
+ limiting, you can use the
+ <varname>net.inet.icmp.icmplim_output</varname> sysctl
+ variable to disable the output like this:</para>
+
+ <screen>&prompt.root; <userinput>sysctl -w net.inet.icmp.icmplim_output=0</userinput></screen>
+
+ <para>Finally, if you want to disable response limiting, you
+ can set the <varname>net.inet.icmp.icmplim</varname>
+ sysctl variable (see above for an example) to
+ <literal>0</literal>. Disabling response limiting is
+ discouraged for the reasons listed above.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="unknown-hw-addr-format">
+ <para>What are these <errorname>arp: unknown hardware
+ address format</errorname> error messages?</para>
+ </question>
+
+ <answer>
+ <para>This means that some device on your local Ethernet is
+ using a MAC address in a format that FreeBSD does not
+ recognize. This is probably caused by someone
+ experimenting with an Ethernet card somewhere else on the
+ network. You will see this most commonly on cable modem
+ networks. It is harmless, and should not affect the
+ performance of your FreeBSD machine.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="cvsup-missing-libs">
+ <para>I have just installed CVSup but trying to execute it
+ produces errors. What is wrong?</para>
+ </question>
+
+ <answer>
+ <para>First, see if the error message you are receiving is
+ like the one shown below.</para>
+
+ <programlisting>/usr/libexec/ld-elf.so.1: Shared object "libXaw.so.6" not found</programlisting>
+
+ <para>Errors like these are caused by installing the
+ <filename role="package">net/cvsup</filename> port on a
+ machine which does not have the
+ <application>&xfree86;</application> suite. If you want to
+ use the <acronym>GUI</acronym> included with
+ <application>CVSup</application> you will need to install
+ <application>&xfree86;</application> now. Alternatively if
+ you just wish to use <application>CVSup</application> from
+ a command line you should delete the package previously
+ installed. Then install the <filename
+ role="package">net/cvsup-without-gui</filename> port. This
+ is covered in more detail in the <ulink
+ url="http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/cvsup.html">CVSup
+ section</ulink> of the Handbook.</para>
+ </answer>
+ </qandaentry>
+ </qandaset>
+ </chapter>
+
+ <chapter id="security">
+ <title>Ασφάλεια</title>
+ <qandaset>
+ <qandaentry>
+ <question id="sandbox">
+ <para>What is a sandbox?</para>
+ </question><answer>
+
+ <para><quote>Sandbox</quote> is a security term. It can
+ mean two things:</para>
+
+ <itemizedlist>
+ <listitem>
+
+ <para>A process which is placed inside a set of virtual
+ walls that are designed to prevent someone who breaks
+ into the process from being able to break into the wider
+ system.</para>
+
+ <para>The process is said to be able to
+ <quote>play</quote> inside the walls. That is,
+ nothing the process does in regards to executing code is
+ supposed to be able to breech the walls so you do not
+ have to do a detailed audit of its code to be able to
+ say certain things about its security.</para>
+
+ <para>The walls might be a userid, for example. This is
+ the definition used in the &man.security.7; and &man.named.8; man
+ pages.</para>
+
+ <para>Take the <literal>ntalk</literal> service, for
+ example (see /etc/inetd.conf). This service used to run
+ as userid <username>root</username>. Now it runs as userid
+ <username>tty</username>. The <username>tty</username> user
+ is a sandbox designed to make it more difficult for
+ someone who has successfully hacked into the system via
+ ntalk from being able to hack beyond that user id.</para>
+ </listitem>
+
+ <listitem>
+
+ <para>A process which is placed inside a simulation of the
+ machine. This is more hard-core. Basically it means that
+ someone who is able to break into the process may believe
+ that he can break into the wider machine but is, in fact,
+ only breaking into a simulation of that machine and not
+ modifying any real data.</para>
+
+ <para>The most common way to accomplish this is to build a
+ simulated environment in a subdirectory and then run the
+ processes in that directory chroot'd (i.e.
+ <filename>/</filename> for that process is this
+ directory, not the real <filename>/</filename> of the
+ system).</para>
+
+ <para>Another common use is to mount an underlying
+ filesystem read-only and then create a filesystem layer
+ on top of it that gives a process a seemingly writeable
+ view into that filesystem. The process may believe it is
+ able to write to those files, but only the process sees
+ the effects - other processes in the system do not,
+ necessarily.</para>
+
+ <para>An attempt is made to make this sort of sandbox so
+ transparent that the user (or hacker) does not realize
+ that he is sitting in it.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>&unix; implements two core sandboxes. One is at the
+ process level, and one is at the userid level.</para>
+
+ <para>Every &unix; process is completely firewalled off from every
+ other &unix; process. One process cannot modify the address
+ space of another. This is unlike &windows; where a process
+ can easily overwrite the address space of any other, leading
+ to a crash.</para>
+
+ <para>A &unix; process is owned by a particular userid. If
+ the userid is not the <username>root</username> user, it
+ serves to firewall the process off from processes owned by
+ other users. The userid is also used to firewall off
+ on-disk data.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="securelevel">
+ <para>What is securelevel?</para>
+ </question>
+
+ <answer>
+ <para>The securelevel is a security mechanism implemented in the
+ kernel. Basically, when the securelevel is positive, the
+ kernel restricts certain tasks; not even the superuser (i.e.,
+ <username>root</username>) is allowed to do them. At the time
+ of this writing, the securelevel mechanism is capable of, among
+ other things, limiting the ability to,</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>unset certain file flags, such as
+ <literal>schg</literal> (the system immutable flag),</para>
+ </listitem>
+
+ <listitem>
+ <para>write to kernel memory via
+ <devicename>/dev/mem</devicename> and
+ <devicename>/dev/kmem</devicename>,</para>
+ </listitem>
+
+ <listitem>
+ <para>load kernel modules, and</para>
+ </listitem>
+
+ <listitem>
+ <para>alter firewall rules.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>To check the status of the securelevel on a running system,
+ simply execute the following command:</para>
+
+ <screen>&prompt.root; <userinput>sysctl kern.securelevel</userinput></screen>
+
+ <para>The output will contain the name of the &man.sysctl.8;
+ variable (in this case, <varname>kern.securelevel</varname>)
+ and a number. The latter is the current value of the
+ securelevel. If it is positive (i.e., greater than 0), at
+ least some of the securelevel's protections are enabled.</para>
+
+ <para>You cannot lower the securelevel of a running system; being
+ able to do that would defeat its purpose. If you need to do a
+ task that requires that the securelevel be non-positive (e.g.,
+ an <maketarget>installworld</maketarget> or changing the date),
+ you will have to change the securelevel setting in
+ <filename>/etc/rc.conf</filename> (you want to look for the
+ <varname>kern_securelevel</varname> and
+ <varname>kern_securelevel_enable</varname> variables) and
+ reboot.</para>
+
+ <para>For more information on securelevel and the specific things
+ all the levels do, please consult the &man.init.8; manual
+ page.</para>
+
+ <warning>
+ <para>Securelevel is not a silver bullet; it has many known
+ deficiencies. More often than not, it provides a false
+ sense of security.</para>
+
+ <para>One of its biggest problems is that in order for it to
+ be at all effective, all files used in the boot process up
+ until the securelevel is set must be protected. If an
+ attacker can get the system to execute their code prior to
+ the securelevel being set (which happens quite late in the
+ boot process since some things the system must do at
+ start-up cannot be done at an elevated securelevel), its
+ protections are invalidated. While this task of protecting
+ all files used in the boot process is not technically
+ impossible, if it is achieved, system maintenance will
+ become a nightmare since one would have to take the system
+ down, at least to single-user mode, to modify a
+ configuration file.</para>
+
+ <para>This point and others are often discussed on the
+ mailing lists, particularly the &a.security;. Please search
+ the archives <ulink
+ url="&url.base;/search/index.html">here</ulink> for an
+ extensive discussion. Some people are hopeful that
+ securelevel will soon go away in favor of a more
+ fine-grained mechanism, but things are still hazy in this
+ respect.</para>
+
+ <para>Consider yourself warned.</para>
+ </warning>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="extra-named-port">
+ <para>BIND (<command>named</command>) is listening on port 53 and
+ some other high-numbered port. What is going on?</para>
+ </question>
+
+ <answer>
+ <para>BIND uses a random high-numbered port for outgoing
+ queries. If you want to use port 53 for outgoing queries,
+ either to get past a firewall or to make yourself feel
+ better, you can try the following in
+ <filename>/etc/namedb/named.conf</filename>:</para>
+
+ <programlisting>options {
+ query-source address * port 53;
+};</programlisting>
+
+ <para>You can replace the <literal>*</literal> with a single IP
+ address if you want to tighten things further.</para>
+
+ <para>Congratulations, by the way. It is good practice to read
+ your &man.sockstat.1; output and notice odd
+ things!</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="sendmail-port-587">
+ <para>Sendmail is listening on port 587 as well as the
+ standard port 25! What is going on?</para>
+ </question>
+
+ <answer>
+ <para>Recent versions of Sendmail support a
+ mail submission feature that runs over port 587. This is
+ not yet widely supported, but is growing in
+ popularity.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="toor-account">
+ <para>What is this UID 0 <username>toor</username> account? Have I
+ been compromised?</para>
+ </question>
+
+ <answer>
+ <para>Do not worry. <username>toor</username> is an
+ <quote>alternative</quote> superuser account (toor is root
+ spelt backwards). Previously it was created when the
+ &man.bash.1; shell was installed but now it is created by
+ default. It is intended to be used with a non-standard shell so
+ you do not have to change <username>root</username>'s default
+ shell. This is important as shells which are not part of the
+ base distribution (for example a shell installed from ports or
+ packages) are likely to be installed in
+ <filename>/usr/local/bin</filename> which, by default, resides
+ on a different filesystem. If <username>root</username>'s shell
+ is located in <filename>/usr/local/bin</filename> and
+ <filename>/usr</filename> (or whatever filesystem contains
+ <filename>/usr/local/bin</filename>) is not mounted for some
+ reason, <username>root</username> will not be able to log in to
+ fix a problem (although if you reboot into single user mode
+ you will be prompted for the path to a shell).</para>
+
+ <para>Some people use <username>toor</username> for
+ day-to-day <username>root</username> tasks with a
+ non-standard shell, leaving <username>root</username>,
+ with a standard shell, for single user mode or
+ emergencies. By default you cannot log in using
+ <username>toor</username> as it does not have a password,
+ so log in as <username>root</username> and set a password
+ for <username>toor</username> if you want to use
+ it.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="suidperl">
+ <para>Why is <command>suidperl</command> not working
+ properly?</para>
+ </question>
+
+ <answer>
+ <para>For security reasons, <command>suidperl</command> is
+ installed without the suid bit by default. The system
+ administrator can enable suid behavior with the following
+ command.</para>
+
+ <screen>&prompt.root; <userinput>chmod u+s /usr/bin/suidperl</userinput></screen>
+
+ <para>If you want <command>suidperl</command> to be built
+ suid during upgrades from source, edit
+ <filename>/etc/make.conf</filename> and add
+ <varname>ENABLE_SUIDPERL=true</varname> before you run
+ <command>make buildworld</command>.</para>
+ </answer>
+ </qandaentry>
+ </qandaset>
+ </chapter>
+
+ <chapter id="ppp">
+ <title>PPP</title>
+
+ <qandaset>
+ <qandaentry>
+ <question id="userppp">
+ <para>I cannot make &man.ppp.8; work. What am I doing wrong?</para>
+ </question>
+
+ <answer>
+ <para>You should first read the &man.ppp.8; manual page and
+ the <ulink url="&url.books.handbook;/ppp-and-slip.html#USERPPP">
+ PPP section of the handbook</ulink>. Enable logging with
+ the command</para>
+
+ <programlisting>set log Phase Chat Connect Carrier lcp ipcp ccp command</programlisting>
+
+ <para>This command may be typed at the &man.ppp.8; command
+ prompt or it may be entered in the
+ <filename>/etc/ppp/ppp.conf</filename> configuration file
+ (the start of the <literal>default</literal> section is
+ the best place to put it). Make sure that
+ <filename>/etc/syslog.conf</filename> (see
+ &man.syslog.conf.5;) contains the lines</para>
+
+ <programlisting>!ppp
+*.* /var/log/ppp.log</programlisting>
+
+ <para>and that the file <filename>/var/log/ppp.log</filename>
+ exists. You can now find out a lot about what is going on
+ from the log file. Do not worry if it does not all make sense.
+ If you need to get help from someone, it may make sense to
+ them.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="ppp-hangs">
+ <para>Why does &man.ppp.8; hang when I run it?</para>
+ </question>
+
+ <answer>
+ <para>This is usually because your hostname will not resolve.
+ The best way to fix this is to make sure that
+ <filename>/etc/hosts</filename> is consulted by your
+ resolver first by editing <filename>/etc/host.conf</filename>
+ and putting the <literal>hosts</literal> line first. Then,
+ simply put an entry in <filename>/etc/hosts</filename> for
+ your local machine. If you have no local network, change your
+ <hostid>localhost</hostid> line:</para>
+
+ <programlisting>127.0.0.1 foo.example.com foo localhost</programlisting>
+
+ <para>Otherwise, simply add another entry for your host.
+ Consult the relevant manual pages for more details.</para>
+
+ <para>You should be able to successfully <command>ping -c1
+ `hostname`</command> when you are done.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="ppp-nodial-auto">
+ <para>Why will &man.ppp.8; not dial in <literal>-auto</literal>
+ mode?</para>
+ </question>
+
+ <answer>
+ <para>First, check that you have got a default route. By
+ running <command>netstat -rn</command> (see
+ &man.netstat.1;), you should see two entries like
+ this:</para>
+
+ <programlisting>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</programlisting>
+
+ <para>This is assuming that you have used the addresses from the
+ handbook, the manual page or from the ppp.conf.sample file.
+ If you do not have a default route, it may be because you are
+ running an old version of &man.ppp.8;
+ that does not understand the word <literal>HISADDR</literal>
+ in the ppp.conf file.</para>
+
+ <para>Another reason for the default route line being
+ missing is that you have mistakenly set up a default
+ router in your <filename>/etc/rc.conf</filename> (see
+ &man.rc.conf.5;) file
+ and you have omitted the line saying</para>
+
+ <programlisting>delete ALL</programlisting>
+
+ <para>from <filename>ppp.conf</filename>. If this is the
+ case, go back to the <ulink
+ url="&url.books.handbook;/ppp-and-slip.html#USERPPP-FINAL"> Final
+ system configuration</ulink> section of the
+ handbook.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="no-route-to-host">
+ <para>What does <errorname>No route to host</errorname> mean?</para>
+ </question>
+
+ <answer>
+ <para>This error is usually due to a missing</para>
+
+ <programlisting>MYADDR:
+ delete ALL
+ add 0 0 HISADDR</programlisting>
+
+ <para>section in your <filename>/etc/ppp/ppp.linkup</filename>
+ file. This is only necessary if you have a dynamic IP address
+ or do not know the address of your gateway. If you are using
+ interactive mode, you can type the following after entering
+ <literal>packet mode</literal> (packet mode is
+ indicated by the capitalized <acronym>PPP</acronym> in the
+ prompt):</para>
+
+ <programlisting>delete ALL
+add 0 0 HISADDR</programlisting>
+
+ <para>Refer to the <ulink
+ url="&url.books.handbook;/ppp-and-slip.html#USERPPP-DYNAMICIP">
+ PPP and Dynamic IP addresses</ulink> section of the handbook
+ for further details.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="connection-threeminutedrop">
+ <para>Why does my connection drop after about 3 minutes?</para>
+ </question>
+
+ <answer>
+ <para>The default PPP timeout is 3 minutes. This can be
+ adjusted with the line</para>
+
+ <programlisting>set timeout <replaceable>NNN</replaceable></programlisting>
+
+ <para>where <replaceable>NNN</replaceable> is the number of
+ seconds of inactivity before the connection is closed. If
+ <replaceable>NNN</replaceable> is zero, the connection is never
+ closed due to a timeout. It is possible to put this command in
+ the <filename>ppp.conf</filename> 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
+ <application>ppp</application>'s server socket using
+ &man.telnet.1; or &man.pppctl.8;.
+ Refer to the
+ &man.ppp.8; man
+ page for further details.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="ppp-drop-heavy-load">
+ <para>Why does my connection drop under heavy load?</para>
+ </question>
+
+ <answer>
+ <para>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</para>
+
+ <programlisting>disable lqr</programlisting>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="ppp-drop-random">
+ <para>Why does my connection drop after a random amount of
+ time?</para>
+ </question>
+
+ <answer>
+ <para>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.</para>
+
+ <para>There is 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:</para>
+
+ <programlisting>set dial "...... ATS10=10 OK ......"</programlisting>
+
+ <para>Refer to your modem manual for details.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="ppp-hangs-random">
+ <para>Why does my connection hang after a random amount of
+ time?</para>
+ </question><answer>
+
+ <para>Many people experience hung connections with no apparent
+ explanation. The first thing to establish is which side of
+ the link is hung.</para>
+
+ <para>If you are using an external modem, you can simply try
+ using &man.ping.8; to see if the <acronym>TD</acronym>
+ light is flashing when you transmit data. If it flashes
+ (and the <acronym>RD</acronym> light does not), the
+ problem is with the remote end. If <acronym>TD</acronym>
+ does not flash, the problem is local. With an internal
+ modem, you will need to use the <literal>set
+ server</literal> command in your
+ <filename>ppp.conf</filename> file. When the hang occurs,
+ connect to &man.ppp.8; using &man.pppctl.8;. If your
+ network connection suddenly revives (PPP was revived due
+ to the activity on the diagnostic socket) or if you cannot
+ connect (assuming the <literal>set socket</literal>
+ command succeeded at startup time), the problem is
+ local. If you can connect and things are still hung,
+ enable local async logging with <literal>set log local
+ async</literal> and use &man.ping.8; from another window
+ or terminal to make use of the link. The async logging
+ will show you the data being transmitted and received on
+ the link. If data is going out and not coming back, the
+ problem is remote.</para>
+
+ <para>Having established whether the problem is local or remote,
+ you now have two possibilities:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>If the problem is remote, read on entry <xref
+ linkend="ppp-remote-not-responding">.</para>
+ </listitem>
+
+ <listitem>
+ <para>If the problem is local, read on entry <xref
+ linkend="ppp-hung">.</para>
+ </listitem>
+ </itemizedlist>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="ppp-remote-not-responding">
+ <para>The remote end is not responding. What can I do?</para>
+ </question>
+
+ <answer>
+ <para>There is very little you can do about this. Most ISPs
+ will refuse to help if you are not running a Microsoft OS.
+ You can <literal>enable lqr</literal> in your
+ <filename>ppp.conf</filename> file, allowing &man.ppp.8; to detect
+ the remote failure and hang up, but this detection is
+ relatively slow and therefore not that useful. You may want to
+ avoid telling your ISP that you are running user-PPP...</para>
+
+ <para>First, try disabling all local compression by adding the
+ following to your configuration:</para>
+
+ <programlisting>disable pred1 deflate deflate24 protocomp acfcomp shortseq vj
+deny pred1 deflate deflate24 protocomp acfcomp shortseq vj</programlisting>
+
+ <para>Then reconnect to ensure that this makes no difference.
+ If things improve or if the problem is solved completely,
+ determine which setting makes the difference through trial
+ and error. This will provide good ammunition when you contact
+ your ISP (although it may make it apparent that you are not
+ running a Microsoft product).</para>
+
+ <para>Before contacting your ISP, enable async logging
+ locally and wait until the connection hangs again. This
+ may use up quite a bit of disk space. The last data read
+ from the port may be of interest. It is usually ascii
+ data, and may even describe the problem (<quote>Memory
+ fault, core dumped</quote>?).</para>
+
+ <para>If your ISP is helpful, they should be able to enable
+ logging on their end, then when the next link drop occurs,
+ they may be able to tell you why their side is having a
+ problem. Feel free to send the details to &a.brian;, or
+ even to ask your ISP to contact me directly.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="ppp-hung">
+ <para>&man.ppp.8; has hung. What can I do?</para>
+ </question>
+
+ <answer>
+ <para>Your best bet here is to rebuild &man.ppp.8; by adding
+ <literal>CFLAGS+=-g</literal> and
+ <literal>STRIP=</literal> to the end of the Makefile, then
+ doing a <command>make clean &amp;&amp; make &amp;&amp;
+ make install</command>. When &man.ppp.8; hangs, find the
+ &man.ppp.8; process id with <command>ps ajxww | fgrep
+ ppp</command> and run <command>gdb ppp
+ <replaceable>PID</replaceable></command>. From the gdb
+ prompt, you can then use <command>bt</command> to get a
+ stack trace.</para>
+
+ <para>Send the results to &a.brian;.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="ppp-loginok-thennothing">
+ <para>Why does nothing happen after the <quote>Login OK!</quote>
+ message?</para>
+ </question>
+
+ <answer>
+ <para>Prior to FreeBSD version 2.2.5, once the link was
+ established, &man.ppp.8; 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 &man.ppp.8; to initiate the LCP, use the
+ following line:</para>
+
+ <programlisting>set openmode active</programlisting>
+
+ <note>
+ <para>It usually does no harm if both sides initiate
+ negotiation, so openmode is now active by default.
+ However, the next section explains when it
+ <emphasis>does</emphasis> do some harm.</para>
+ </note>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="ppp-same-magic">
+ <para>I keep seeing errors about magic being the same. What does
+ it mean?</para>
+ </question>
+
+ <answer>
+ <para>Occasionally, just after connecting, you may see messages
+ in the log that say <quote>magic is the same</quote>.
+ Sometimes, these messages are harmless, and sometimes one side
+ or the other exits. Most PPP implementations cannot survive
+ this problem, and even if the link seems to come up, you will see
+ repeated configure requests and configure acknowledgments in
+ the log file until &man.ppp.8; eventually gives up and closes the
+ connection.</para>
+
+ <para>This normally happens on server machines with slow
+ disks that are spawning a getty on the port, and executing
+ &man.ppp.8; from a login script or program after login. I
+ have also heard reports of it happening consistently when
+ using slirp. The reason is that in the time taken between
+ &man.getty.8; exiting and &man.ppp.8; starting, the
+ client-side &man.ppp.8; starts sending Line Control
+ Protocol (LCP) packets. Because ECHO is still switched on
+ for the port on the server, the client &man.ppp.8; sees
+ these packets <quote>reflect</quote> back.</para>
+
+ <para>One part of the LCP negotiation is to establish a
+ magic number for each side of the link so that
+ <quote>reflections</quote> 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 &man.ppp.8; sends LCP packets,
+ sees the same magic in the reflected packet and NAKs
+ it. It also sees the NAK reflect (which also means
+ &man.ppp.8; must change its magic). This produces a
+ potentially enormous number of magic number changes, all
+ of which are happily piling into the server's tty
+ buffer. As soon as &man.ppp.8; starts on the server, it is
+ flooded with magic number changes and almost immediately
+ decides it has 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.</para>
+
+ <para>This can be avoided by allowing the peer to start
+ negotiating with the following line in your ppp.conf
+ file:</para>
+
+ <programlisting>set openmode passive</programlisting>
+
+ <para>This tells &man.ppp.8; to wait for the server to initiate LCP
+ negotiations. Some servers however may never initiate
+ negotiations. If this is the case, you can do something
+ like:</para>
+
+ <programlisting>set openmode active 3</programlisting>
+
+ <para>This tells &man.ppp.8; to be passive for 3 seconds, and then to
+ start sending LCP requests. If the peer starts sending
+ requests during this period, &man.ppp.8; will immediately respond
+ rather than waiting for the full 3 second period.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="ppp-lcp-constant">
+ <para>LCP negotiations continue until the connection is
+ closed. What is wrong?</para>
+ </question>
+
+ <answer>
+ <para>There is currently an implementation mis-feature in
+ &man.ppp.8; where it does not associate
+ LCP, CCP &amp; IPCP responses with their original requests. As
+ a result, if one PPP
+ implementation is more than 6 seconds slower than the other
+ side, the other side will send two additional LCP configuration
+ requests. This is fatal.</para>
+
+ <para>Consider two implementations,
+ <hostid>A</hostid> and
+ <hostid>B</hostid>. <hostid>A</hostid> starts
+ sending LCP requests immediately after connecting and
+ <hostid>B</hostid> takes 7 seconds to start. When
+ <hostid>B</hostid> starts, <hostid>A</hostid>
+ has sent 3 LCP REQs. We are assuming the line has ECHO switched
+ off, otherwise we would see magic number problems as described in
+ the previous section. <hostid>B</hostid> sends a
+ REQ, then an ACK to the first of
+ <hostid>A</hostid>'s REQs. This results in
+ <hostid>A</hostid> entering the <acronym>OPENED</acronym>
+ state and sending and ACK (the first) back to
+ <hostid>B</hostid>. In the meantime,
+ <hostid>B</hostid> sends back two more ACKs in response to
+ the two additional REQs sent by <hostid>A</hostid>
+ before <hostid>B</hostid> started up.
+ <hostid>B</hostid> then receives the first ACK from
+ <hostid>A</hostid> and enters the
+ <acronym>OPENED</acronym> state.
+ <hostid>A</hostid> receives the second ACK from
+ <hostid>B</hostid> and goes back to the
+ <acronym>REQ-SENT</acronym> state, sending another (forth) REQ
+ as per the RFC. It then receives the third ACK and enters the
+ <acronym>OPENED</acronym> state. In the meantime,
+ <hostid>B</hostid> receives the forth REQ from
+ <hostid>A</hostid>, resulting in it reverting to the
+ <acronym>ACK-SENT</acronym> state and sending
+ another (second) REQ and (forth) ACK as per the RFC.
+ <hostid>A</hostid> gets the REQ, goes into
+ <acronym>REQ-SENT</acronym> and sends another REQ. It
+ immediately receives the following ACK and enters
+ <acronym>OPENED</acronym>.</para>
+
+ <para>This goes on until one side figures out that they are
+ getting nowhere and gives up.</para>
+
+ <para>The best way to avoid this is to configure one side to be
+ <literal>passive</literal> - that is, make one side
+ wait for the other to start negotiating. This can be done
+ with the</para>
+
+ <programlisting>set openmode passive</programlisting>
+
+ <para>command. Care should be taken with this option. You
+ should also use the</para>
+
+ <programlisting>set stopped N</programlisting>
+
+ <para>command to limit the amount of time that
+ &man.ppp.8; waits for the peer to begin
+ negotiations. Alternatively, the</para>
+
+ <programlisting>set openmode active N</programlisting>
+
+ <para>command (where <replaceable>N</replaceable> is the
+ number of seconds to wait before starting negotiations) can be
+ used. Check the manual page for details.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="ppp-shell-test-lockup">
+ <para>Why does &man.ppp.8; lock up when I shell out to test
+ it?</para>
+ </question>
+
+ <answer>
+ <para>When you execute the <command>shell</command> or
+ <command>!</command> command, &man.ppp.8; executes a
+ shell (or if you have passed any arguments,
+ &man.ppp.8; will execute those arguments). 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
+ &man.ppp.8; is waiting for the command to
+ complete.</para>
+
+ <para>If you wish to execute commands like this, use the
+ <command>!bg</command> command instead. This will execute
+ the given command in the background, and &man.ppp.8; can
+ continue to service the link.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="ppp-nullmodem">
+ <para>Why does &man.ppp.8; over a null-modem cable never exit?</para>
+ </question>
+
+ <answer>
+ <para>There is no way for &man.ppp.8; 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</para>
+
+ <programlisting>enable lqr</programlisting>
+
+ <para>LQR is accepted by default if negotiated by the peer.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="ppp-auto-noreasondial">
+ <para>Why does &man.ppp.8; dial for no reason in -auto mode?</para>
+ </question><answer>
+
+ <para>If &man.ppp.8; is dialing unexpectedly, you must
+ determine the cause, and set up Dial filters (dfilters) to
+ prevent such dialing.</para>
+
+ <para>To determine the cause, use the following line:</para>
+
+ <programlisting>set log +tcp/ip</programlisting>
+
+ <para>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.</para>
+
+ <para>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 <emphasis>not</emphasis> prevent &man.ppp.8;
+ from passing the packets through an established
+ connection), use the following:</para>
+
+ <programlisting>set dfilter 1 deny udp src eq 53
+set dfilter 2 deny udp dst eq 53
+set dfilter 3 permit 0/0 0/0</programlisting>
+
+ <para>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.</para>
+
+ <para>In the DNS case, you should try to determine what is
+ actually trying to resolve a host name. A lot of the
+ time, &man.sendmail.8; 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 <ulink
+ url="&url.books.handbook;/smtp-dialup.html">using email with a
+ dialup connection</ulink> in the FreeBSD Handbook for
+ details on how to create your own configuration file and
+ what should go into it. You may also want to add the
+ following line to your <filename>.mc</filename>
+ file:</para>
+
+ <programlisting>define(`confDELIVERY_MODE', `d')dnl</programlisting>
+
+ <para>This will make sendmail queue everything until the
+ queue is run (usually, sendmail is invoked with
+ <option>-bd -q30m</option>, telling it to run the queue
+ every 30 minutes) or until a <command>sendmail
+ -q</command> is done (perhaps from your ppp.linkup
+ file).</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="ccp-errors">
+ <para>What do these CCP errors mean?</para>
+ </question>
+
+ <answer>
+ <para>I keep seeing the following errors in my log file:</para>
+
+ <programlisting>CCP: CcpSendConfigReq
+CCP: Received Terminate Ack (1) state = Req-Sent (6)</programlisting>
+
+ <para>This is because &man.ppp.8; 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:</para>
+
+ <programlisting>disable pred1</programlisting>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="ppp-connectionspeed">
+ <para>Why does &man.ppp.8; not log my connection speed?</para>
+ </question>
+
+ <answer>
+
+ <para>In order to log all lines of your modem
+ <quote>conversation</quote>, you must enable the
+ following:</para>
+
+ <programlisting>set log +connect</programlisting>
+
+ <para>This will make &man.ppp.8; log
+ everything up until the last requested <quote>expect</quote>
+ string.</para>
+
+ <para>If you wish to see your connect speed and are using PAP
+ or CHAP (and therefore do not have anything to
+ <quote>chat</quote> after the CONNECT in the dial script - no
+ <literal>set login</literal> script), you must make sure that
+ you instruct &man.ppp.8; to <quote>expect</quote> the whole CONNECT
+ line, something like this:</para>
+
+ <programlisting>set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 4 \
+ \"\" ATZ OK-ATZ-OK ATDT\\T TIMEOUT 60 CONNECT \\c \\n"</programlisting>
+
+ <para>Here, we get our CONNECT, send nothing, then expect a
+ line-feed, forcing &man.ppp.8; to read
+ the whole CONNECT response.</para>
+
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="ppp-ignores-backslash">
+ <para>Why does &man.ppp.8; ignore the <literal>\</literal> character
+ in my chat script?</para>
+ </question><answer>
+
+ <para>Ppp parses each line in your config files so that it can
+ interpret strings such as
+ <literal>set phone "123 456 789"</literal> correctly and
+ realize that the number is actually only
+ <emphasis>one</emphasis> argument. In order to specify a
+ <literal>&quot;</literal> character, you must escape it
+ using a backslash (<literal>\</literal>).</para>
+
+ <para>When the chat interpreter parses each argument, it
+ re-interprets the argument in order to find any special
+ escape sequences such as <literal>\P</literal> or
+ <literal>\T</literal> (see the manual page). As a result of this
+ double-parsing, you must remember to use the correct number of
+ escapes.</para>
+
+ <para>If you wish to actually send a <literal>\</literal>
+ character to (say) your modem, you would need something
+ like:</para>
+
+ <programlisting>set dial "\"\" ATZ OK-ATZ-OK AT\\\\X OK"</programlisting>
+
+ <para>resulting in the following sequence:</para>
+
+ <programlisting>ATZ
+OK
+AT\X
+OK</programlisting>
+
+ <para>or</para>
+
+ <programlisting>set phone 1234567
+set dial "\"\" ATZ OK ATDT\\T"</programlisting>
+
+ <para>resulting in the following sequence:</para>
+
+ <programlisting>ATZ
+OK
+ATDT1234567</programlisting>
+
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="ppp-segfault-nocore">
+ <para>Why does &man.ppp.8; get a seg-fault, but I see no
+ <filename>ppp.core</filename> file?</para>
+ </question>
+
+ <answer>
+ <para>Ppp (or any other program for that matter) should
+ never dump core. Because &man.ppp.8; runs with an
+ effective user id of 0, the operating system will not
+ write &man.ppp.8;'s core image to disk before terminating
+ it. If, however &man.ppp.8; is actually terminating due
+ to a segmentation violation or some other signal that
+ normally causes core to be dumped,
+ <emphasis>and</emphasis> you are sure you are using the
+ latest version (see the start of this section), then you
+ should do the following:</para>
+
+ <screen>&prompt.user; <userinput>tar xfz ppp-*.src.tar.gz</userinput>
+&prompt.user; <userinput>cd ppp*/ppp</userinput>
+&prompt.user; <userinput>echo STRIP= &gt;&gt;Makefile</userinput>
+&prompt.user; <userinput>echo CFLAGS+=-g &gt;&gt;Makefile</userinput>
+&prompt.user; <userinput>make clean all</userinput>
+&prompt.user; <userinput>su</userinput>
+&prompt.root; <userinput>make install</userinput>
+&prompt.root; <userinput>chmod 555 /usr/sbin/ppp</userinput></screen>
+
+ <para>You will now have a debuggable version of &man.ppp.8;
+ installed. You will have to be <username>root</username>
+ to run &man.ppp.8; as all of its privileges have been
+ revoked. When you start &man.ppp.8;, take a careful note
+ of what your current directory was at the time.</para>
+
+ <para>Now, if and when &man.ppp.8; receives the segmentation
+ violation, it will dump a core file called
+ <filename>ppp.core</filename>. You should then do the
+ following:</para>
+
+ <screen>&prompt.user; <userinput>su</userinput>
+&prompt.root; <userinput>gdb /usr/sbin/ppp ppp.core</userinput>
+<prompt>(gdb)</prompt> <userinput>bt</userinput>
+.....
+<prompt>(gdb)</prompt> <userinput>f 0</userinput>
+....
+<prompt>(gdb)</prompt> <userinput>i args</userinput>
+....
+<prompt>(gdb)</prompt> <userinput>l</userinput>
+.....</screen>
+
+ <para>All of this information should be given alongside your
+ question, making it possible to diagnose the problem.</para>
+
+ <para>If you are familiar with gdb, you may wish to find out some
+ other bits and pieces such as what actually caused the dump and
+ the addresses &amp; values of the relevant variables.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="ppp-autodialprocess-noconnect">
+ <para>Why does the process that forces a dial in auto mode never
+ connect?</para>
+ </question>
+
+ <answer>
+ <para>This was a known problem with
+ &man.ppp.8; set up to negotiate a
+ dynamic local IP number with the peer in auto mode. It is
+ fixed in the latest version - search the manual page for
+ <literal>iface</literal>.</para>
+
+ <para>The problem was that when that initial program calls
+ &man.connect.2;, the IP number of the tun interface is assigned
+ to the socket endpoint. The kernel creates the first outgoing
+ packet and writes it to the tun device.
+ &man.ppp.8; then reads the packet and
+ establishes a connection. If, as a result of
+ &man.ppp.8;'s dynamic IP assignment, the
+ interface address is changed, the original socket endpoint will
+ be invalid. Any subsequent packets sent to the peer will
+ usually be dropped. Even if they are not, any responses will
+ not route back to the originating machine as the IP number is
+ no longer owned by that machine.</para>
+
+ <para>There are several theoretical ways to approach this
+ problem. It would be nicest if the peer would re-assign the
+ same IP number if possible <literal>:-)</literal>
+ The current version of &man.ppp.8; does
+ this, but most other implementations do not.</para>
+
+ <para>The easiest method from our side would be to never
+ change the tun interface IP number, but instead to change
+ all outgoing packets so that the source IP number is
+ changed from the interface IP to the negotiated IP on the
+ fly. This is essentially what the
+ <literal>iface-alias</literal> option in the latest
+ version of &man.ppp.8; is doing (with the help of
+ &man.libalias.3; and &man.ppp.8;'s <option>-nat</option>
+ switch) - it is maintaining all previous interface
+ addresses and NATing them to the last negotiated
+ address.</para>
+
+ <para>Another alternative (and probably the most reliable) would
+ be to implement a system call that changes all bound sockets
+ from one IP to another. &man.ppp.8; would
+ use this call to modify the sockets of all existing programs
+ when a new IP number is negotiated. The same system call could
+ be used by dhcp clients when they are forced to re-bind() their
+ sockets.</para>
+
+ <para>Yet another possibility is to allow an interface to be
+ brought up without an IP number. Outgoing packets would be
+ given an IP number of 255.255.255.255 up until the first
+ SIOCAIFADDR ioctl is done. This would result in fully binding
+ the socket. It would be up to &man.ppp.8;
+ to change the source IP number, but only if it is set to
+ 255.255.255.255, and only the IP number and IP checksum would
+ need to change. This, however is a bit of a hack as the kernel
+ would be sending bad packets to an improperly configured
+ interface, on the assumption that some other mechanism is
+ capable of fixing things retrospectively.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="ppp-nat-games">
+ <para>Why do most games not work with the -nat switch?</para>
+ </question>
+
+ <answer>
+ <para>The reason games and the like do not work when libalias
+ is in use is that the machine on the outside will try to open a
+ connection or send (unsolicited) UDP packets to the machine on
+ the inside. The NAT software does not know that it should send
+ these packets to the interior machine.</para>
+
+ <para>To make things work, make sure that the only thing
+ running is the software that you are having problems with, then
+ either run tcpdump on the tun interface of the gateway or
+ enable &man.ppp.8; tcp/ip logging (<literal>set log +tcp/ip</literal>)
+ on the gateway.</para>
+
+ <para>When you start the offending software, you should see
+ packets passing through the gateway machine. When
+ something comes back from the outside, it will be dropped
+ (that is the problem). Note the port number of these
+ packets then shut down the offending software. Do this a
+ few times to see if the port numbers are consistent. If
+ they are, then the following line in the relevant section
+ of <filename>/etc/ppp/ppp.conf</filename> will make the
+ software functional:</para>
+
+ <programlisting>nat port <replaceable>proto</replaceable> <replaceable>internalmachine</replaceable>:<replaceable>port</replaceable> <replaceable>port</replaceable></programlisting>
+
+ <para>where <replaceable>proto</replaceable> is either
+ <literal>tcp</literal> or <literal>udp</literal>,
+ <replaceable>internalmachine</replaceable> is the machine that
+ you want the packets to be sent to and
+ <replaceable>port</replaceable> is the destination port number
+ of the packets.</para>
+
+ <para>You will not be able to use the software on other machines
+ without changing the above command, and running the software
+ on two internal machines at the same time is out of the question
+ - after all, the outside world is seeing your entire internal
+ network as being just a single machine.</para>
+
+ <para>If the port numbers are not consistent, there are three
+ more options:</para>
+
+ <orderedlist>
+ <listitem>
+ <para>Submit support in libalias. Examples of
+ <quote>special cases</quote> can be found in
+ <filename>/usr/src/lib/libalias/alias_*.c</filename>
+ (<filename>alias_ftp.c</filename> is a good
+ prototype). This usually involves reading certain
+ recognised outgoing packets, identifying the
+ instruction that tells the outside machine to initiate
+ a connection back to the internal machine on a
+ specific (random) port and setting up a
+ <quote>route</quote> in the alias table so that the
+ subsequent packets know where to go.</para>
+
+ <para>This is the most difficult solution, but it is the
+ best and will make the software work with multiple
+ machines.</para>
+ </listitem>
+
+ <listitem>
+ <para>Use a proxy. The application may support socks5
+ for example, or (as in the <quote>cvsup</quote> case)
+ may have a <quote>passive</quote> option that avoids
+ ever requesting that the peer open connections back to
+ the local machine.</para>
+ </listitem>
+
+ <listitem>
+ <para>Redirect everything to the internal machine using
+ <literal>nat addr</literal>. This is the
+ sledge-hammer approach.</para>
+ </listitem>
+ </orderedlist>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="useful-port-numbers">
+ <para>Has anybody made a list of useful port numbers?</para>
+ </question><answer>
+
+ <para>Not yet, but this is intended to grow into such a list
+ (if any interest is shown). In each example,
+ <replaceable>internal</replaceable> should be replaced with
+ the IP number of the machine playing the game.</para>
+
+ <itemizedlist>
+ <listitem>
+ <para><application>Asheron's Call</application></para>
+
+ <para><literal>nat port udp
+ <replaceable>internal</replaceable>
+ :65000 65000</literal></para>
+
+ <para>Manually change the port number within the game to
+ 65000. If you have got a number of machines that you wish
+ to play on assign a unique port number for each (i.e.
+ 65001, 65002, etc) and add a <literal>nat port</literal>
+ line for each one.</para>
+ </listitem>
+
+ <listitem>
+ <para><application>Half Life</application></para>
+
+ <para><literal>nat port udp
+ <replaceable>internal</replaceable>:27005
+ 27015</literal></para>
+ </listitem>
+
+ <listitem>
+ <para><application>PCAnywhere 8.0</application></para>
+
+ <para><literal>nat port udp
+ <replaceable>internal</replaceable>:5632
+ 5632</literal></para>
+
+ <para><literal>nat port tcp
+ <replaceable>internal</replaceable>:5631
+ 5631</literal></para>
+ </listitem>
+
+ <listitem>
+ <para><application>Quake</application></para>
+
+ <para><literal>nat port udp
+ <replaceable>internal</replaceable>:6112
+ 6112</literal></para>
+ </listitem>
+
+ <listitem>
+ <para><application>Quake 2</application></para>
+
+ <para><literal>nat port udp
+ <replaceable>internal</replaceable>:27901
+ 27910</literal></para>
+ <para><literal>nat port udp
+ <replaceable>internal</replaceable>:60021
+ 60021</literal></para>
+ <para><literal>nat port udp
+ <replaceable>internal</replaceable>:60040
+ 60040</literal></para>
+ </listitem>
+
+ <listitem>
+ <para><application>Red Alert</application></para>
+
+ <para><literal>nat port udp
+ <replaceable>internal</replaceable>:8675
+ 8675</literal></para>
+
+ <para><literal>nat port udp
+ <replaceable>internal</replaceable>:5009
+ 5009</literal></para>
+ </listitem>
+ </itemizedlist>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="fcs-errors">
+ <para>What are FCS errors?</para>
+ </question>
+
+ <answer>
+ <para>FCS stands for <literal>F</literal>rame
+ <literal>C</literal>heck <literal>S</literal>equence.
+ Each PPP packet has a checksum attached to ensure that the
+ data being received is the data being sent. If the FCS of
+ an incoming packet is incorrect, the packet is dropped and
+ the HDLC FCS count is increased. The HDLC error values
+ can be displayed using the <literal>show hdlc</literal>
+ command.</para>
+
+ <para>If your link is bad (or if your serial driver is dropping
+ packets), you will see the occasional FCS error. This is not
+ usually worth worrying about although it does slow down the
+ compression protocols substantially. If you have an external
+ modem, make sure your cable is properly shielded from
+ interference - this may eradicate the problem.</para>
+
+ <para>If your link freezes as soon as you have connected and you
+ see a large number of FCS errors, this may be because your link
+ is not 8 bit clean. Make sure your modem is not using software
+ flow control (XON/XOFF). If your datalink
+ <emphasis>must</emphasis> use software flow control, use the
+ command <literal>set accmap 0x000a0000</literal> to tell
+ &man.ppp.8; to escape the <literal>^Q</literal> and
+ <literal>^S</literal> characters.</para>
+
+ <para>Another reason for seeing too many FCS errors may be
+ that the remote end has stopped talking
+ <acronym>PPP</acronym>. You may want to enable
+ <literal>async</literal> logging at this point to
+ determine if the incoming data is actually a login or
+ shell prompt. If you have a shell prompt at the remote
+ end, it is possible to terminate &man.ppp.8; without
+ dropping the line by using the <literal>close
+ lcp</literal> command (a following <literal>term</literal>
+ command will reconnect you to the shell on the remote
+ machine.</para>
+
+ <para>If nothing in your log file indicates why the link might
+ have been terminated, you should ask the remote administrator
+ (your ISP?) why the session was terminated.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry id=PPPoEwithNAT>
+ <question id="macos-win98-pppoe-freeze">
+ <para>Why do &macos; and &windows; 98 connections freeze when
+ running PPPoE on the gateway?</para>
+ </question>
+
+ <answer>
+ <para>Thanks to Michael Wozniak
+ <email>mwozniak@netcom.ca</email> for figuring this out and
+ Dan Flemming <email>danflemming@mac.com</email> for the Mac
+ solution:</para>
+
+ <para>This is due to what is called a <quote>Black Hole</quote>
+ router. &macos; and &windows; 98 (and maybe other Microsoft OSs)
+ send TCP packets with a requested segment size too big to fit
+ into a PPPoE frame (MTU is 1500 by default for Ethernet)
+ <emphasis>and</emphasis> have the <quote>do not
+ fragment</quote> bit set (default of TCP) and the Telco router
+ is not sending ICMP <quote>must fragment</quote> back to the
+ www site you are trying to load. (Alternatively, the router is
+ sending the ICMP packet correctly, but the firewall at the www
+ site is dropping it.) When the www server is sending
+ you frames that do not fit into the PPPoE pipe the Telco router
+ drops them on the floor and your page does not load (some
+ pages/graphics do as they are smaller than a MSS.) This seems
+ to be the default of most Telco PPPoE configurations (if only
+ they knew how to program a router... sigh...)</para>
+
+ <para>One fix is to use regedit on your 95/98 boxes to add the
+ following registry entry...</para>
+
+ <programlisting>HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans\0000\MaxMTU</programlisting>
+
+ <para>It should be a string with a value
+ <quote>1436</quote>, as some ADSL routers are reported to
+ be unable to deal with packets larger than this. This
+ registry key has been changed to
+ <literal>Tcpip\Parameters\Interfaces\<replaceable>ID for
+ adapter</replaceable>\MTU</literal> in &windows; 2000 and
+ becomes a DWORD.</para>
+
+ <para>Refer to the Microsoft Knowledge Base documents <ulink
+ url="http://support.microsoft.com/support/kb/articles/Q158/4/74.asp">Q158474
+ - Windows TCPIP Registry Entries</ulink> and <ulink
+ url="http://support.microsoft.com/support/kb/articles/Q120/6/42.asp">Q120642
+ - TCPIP & NBT Configuration Parameters for &windowsnt;
+ </ulink> for more information on changing &windows; MTU to
+ work with a NAT router.</para>
+
+ <para>Another regedit possibility under &windows; 2000 is to
+ set the
+ <literal>Tcpip\Parameters\Interfaces\<replaceable>ID for
+ adapter</replaceable>\EnablePMTUBHDetect</literal> DWORD
+ to 1 as mentioned in the Microsoft document 120642
+ mentioned above.</para>
+
+ <para>Unfortunately, &macos; does not provide an interface for
+ changing TCP/IP settings. However, there is commercial software
+ available, such as OTAdvancedTuner (OT for OpenTransport, the
+ &macos; TCP/IP stack) by <ulink
+ url="http://www.softworks.com/">Sustainable Softworks</ulink>,
+ that will allow users to customize TCP/IP settings. &macos; NAT
+ users should select <literal>ip_interface_MTU</literal> from
+ the drop-down menu, enter <literal>1450</literal> instead of
+ <literal>1500</literal> in the box, click the box next to
+ <literal>Save as Auto Configure</literal>, and click
+ <literal>Make Active</literal>.</para>
+
+ <para>The latest version of &man.ppp.8;
+ (2.3 or greater) has an <command>enable tcpmssfixup</command>
+ command that will automatically adjust the MSS to an appropriate
+ value. This facility is enabled by default. If you are stuck
+ with an older version of &man.ppp.8;, you
+ may want to look at the <application>tcpmssd</application>
+ port.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="desperation">
+ <para>None of this helps - I am desperate! What can I do?</para>
+ </question>
+
+ <answer>
+ <para>If all else fails, send as much information as you can,
+ including your config files, how you are starting
+ &man.ppp.8;, the relevant parts of your
+ log file and the output of the <command>netstat -rn</command>
+ command (before and after connecting) to the &a.questions; or
+ the <ulink url="news:comp.unix.bsd.freebsd.misc">
+ comp.unix.bsd.freebsd.misc</ulink> news group, and someone
+ should point you in the right direction.</para>
+ </answer>
+ </qandaentry>
+ </qandaset>
+ </chapter>
+
+ <chapter id="serial">
+ <title>Σειριακές Επικοινωνίες</title>
+
+ <para>This section answers common questions about serial
+ communications with FreeBSD. PPP and SLIP are covered in the
+ <link linkend="networking">Networking</link> section.</para>
+
+
+ <qandaset>
+ <qandaentry>
+ <question id="found-serial">
+ <para>How do I tell if FreeBSD found my serial ports?</para>
+ </question>
+
+ <answer>
+ <para>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</para>
+
+ <screen>&prompt.user; <userinput>dmesg | grep sio</userinput></screen>
+
+ <para>after your system is up and running.</para>
+
+ <para>Here is some example output from the above command:</para>
+
+ <programlisting>sio0 at 0x3f8-0x3ff irq 4 on isa
+sio0: type 16550A
+sio1 at 0x2f8-0x2ff irq 3 on isa
+sio1: type 16550A</programlisting>
+
+ <para>This shows two serial ports. The first is on irq 4, is
+ using port address <literal>0x3f8</literal>, 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 <literal>0x2f8</literal>.
+ Internal modem cards are treated just like serial ports---except
+ that they always have a modem <quote>attached</quote> to the
+ port.</para>
+
+ <para>The <filename>GENERIC</filename> kernel includes support
+ for two serial ports using the same irq and port address
+ settings in the above example. If these settings are not
+ right for your system, or if you have added modem cards or have
+ more serial ports than your kernel is configured for, just
+ reconfigure your kernel. See section
+ <link linkend="make-kernel">about building a kernel</link> for
+ more details.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="found-modem">
+ <para>How do I tell if FreeBSD found my modem cards?</para>
+ </question>
+
+ <answer>
+ <para>Refer to the answer to the previous question.</para>
+
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="access-serial-ports">
+ <para>How do I access the serial ports on FreeBSD?</para>
+ </question>
+
+ <answer>
+ <para>The third serial port, <devicename>sio2</devicename>
+ (see &man.sio.4;, known as <devicename>COM3</devicename> in DOS), is on
+ <devicename>/dev/cuaa2</devicename> for dial-out devices,
+ and on <devicename>/dev/ttyd2</devicename> for dial-in
+ devices. What is the difference between these two classes
+ of devices?</para>
+
+ <para>You use
+ <devicename>ttyd<replaceable>X</replaceable></devicename>
+ for dial-ins. When opening
+ <devicename>/dev/ttyd<replaceable>X</replaceable></devicename>
+ in blocking mode, a process will wait for the
+ corresponding
+ <devicename>cuaa<replaceable>X</replaceable></devicename>
+ device to become inactive, and then wait for the carrier
+ detect line to go active. When you open the
+ <devicename>cuaa<replaceable>X</replaceable></devicename>
+ device, it makes sure the serial port is not already in
+ use by the
+ <devicename>ttyd<replaceable>X</replaceable></devicename>
+ device. If the port is available, it <quote>steals</quote>
+ it from the
+ <devicename>ttyd<replaceable>X</replaceable></devicename>
+ device. Also, the
+ <devicename>cuaa<replaceable>X</replaceable></devicename>
+ device does not care about carrier detect. With this
+ scheme and an auto-answer modem, you can have remote users
+ log in and you can still dial out with the same modem and
+ the system will take care of all the conflicts.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="enable-multiport-serial">
+ <para>How do I enable support for a multiport serial
+ card?</para>
+ </question>
+
+ <answer>
+ <para>Again, the section on kernel configuration provides
+ information about configuring your kernel. For a multiport
+ serial card, place an &man.sio.4; 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
+ <literal>COM_MULTIPORT</literal> option.</para>
+
+ <para>The following example is for an AST 4-port serial card on
+ irq 7:</para>
+
+ <programlisting>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</programlisting>
+
+ <para>The flags indicate that the master port has minor number 7
+ (<literal>0x700</literal>), diagnostics enabled during probe
+ (<literal>0x080</literal>), and all the ports share an irq
+ (<literal>0x001</literal>).</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="multiport-serial-share-irq">
+ <para>Can FreeBSD handle multiport serial cards sharing
+ irqs?</para>
+ </question>
+
+ <answer>
+ <para>Not yet. You will have to use a different irq for each
+ card.</para>
+
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="default-serial-params">
+ <para>Can I set the default serial parameters for a
+ port?</para>
+ </question>
+
+ <answer>
+ <para>The
+ <devicename>ttyd<replaceable>X</replaceable></devicename>
+ (or
+ <devicename>cuaa<replaceable>X</replaceable></devicename>)
+ device is the regular device you will want to open for
+ your applications. When a process opens the device, it
+ will have a default set of terminal I/O settings. You can
+ see these settings with the command</para>
+
+ <screen>&prompt.root; <userinput>stty -a -f /dev/ttyd1</userinput></screen>
+
+ <para>When you change the settings to this device, the settings
+ are in effect until the device is closed. When it is reopened,
+ it goes back to the default set. To make changes to the
+ default set, you can open and adjust the settings of the
+ <quote>initial state</quote> device. For example, to turn on
+ <acronym>CLOCAL</acronym> mode, 8 bits, and
+ <acronym>XON/XOFF</acronym> flow control by default for
+ ttyd5, do:</para>
+
+ <screen>&prompt.root; <userinput>stty -f /dev/ttyid5 clocal cs8 ixon ixoff</userinput></screen>
+
+ <para>A good place to do this is in
+ <filename>/etc/rc.serial</filename>. Now, an application
+ will have these settings by default when it opens
+ <filename>ttyd5</filename>. It can still change these
+ settings to its liking, though.</para>
+
+ <para>You can also prevent certain settings from being
+ changed by an application by making adjustments to the
+ <quote>lock state</quote> device. For example, to lock
+ the speed of <devicename>ttyd5</devicename> to 57600 bps,
+ do</para>
+
+ <screen>&prompt.root; <userinput>stty -f /dev/ttyld5 57600</userinput></screen>
+
+ <para>Now, an application that opens
+ <devicename>ttyd5</devicename> and tries to change the
+ speed of the port will be stuck with 57600 bps.</para>
+
+ <para>Naturally, you should make the initial state and lock
+ state devices writable only by
+ <username>root</username>. The &man.MAKEDEV.8; script does
+ <emphasis>NOT</emphasis> do this when it creates the
+ device entries.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="enable-dialup">
+ <para>How can I enable dialup logins on my modem?</para>
+ </question>
+
+ <answer>
+ <para>So you want to become an Internet service provider, eh?
+ First, you will 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
+ (<acronym>DTR</acronym>) line goes from on to off. It should
+ probably use <filename>RTS/CTS</filename> 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.</para>
+
+ <para>For many Hayes command-set--compatible modems, this
+ command will make these settings and store them in
+ nonvolatile memory:</para>
+
+ <programlisting>AT &amp;C1 &amp;D3 &amp;K3 &amp;Q6 S0=1 &amp;W</programlisting>
+
+ <para>See the section <link linkend="direct-at">on sending AT
+ commands</link> below for information on how to make these
+ settings without resorting to an &ms-dos; terminal program.</para>
+
+ <para>Next, make an entry in <filename>/etc/ttys</filename>
+ (see &man.ttys.5;) 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:</para>
+
+ <programlisting>ttyd1 "/usr/libexec/getty std.57600" dialup on insecure</programlisting>
+
+ <para>This line indicates that the second serial port
+ (<devicename>/dev/ttyd1</devicename>) has a modem
+ connected running at 57600 bps and no parity
+ (<literal>std.57600</literal>, which comes from the file
+ <filename>/etc/gettytab</filename>, see &man.gettytab.5;).
+ The terminal type for this port is
+ <literal>dialup</literal>. The port is
+ <literal>on</literal> and is
+ <literal>insecure</literal>---meaning
+ <username>root</username> logins on the port are not
+ allowed. For dialin ports like this one, use the
+ <devicename>ttyd<replaceable>X</replaceable></devicename>
+ entry.</para>
+
+ <para>It is common practice to use <literal>dialup</literal>
+ as the terminal type. Many users set up in their
+ <filename>.profile</filename> or
+ <filename>.login</filename> files a prompt for the actual
+ terminal type if the starting type is dialup. The example
+ shows the port as insecure. To become
+ <username>root</username> on this port, you have to login
+ as a regular user, then &man.su.1; to become
+ <username>root</username>. If you use
+ <literal>secure</literal> then <username>root</username>
+ can login in directly.</para>
+
+ <para>After making modifications to
+ <filename>/etc/ttys</filename>, you need to send a hangup
+ or <acronym>HUP</acronym> signal to the &man.init.8;
+ process:</para>
+
+ <screen>&prompt.root; <userinput>kill -HUP 1</userinput></screen>
+
+ <para>This forces the &man.init.8; process to reread
+ <filename>/etc/ttys</filename>. The init process will
+ then start getty processes on all <literal>on</literal>
+ ports. You can find out if logins are available for your
+ port by typing</para>
+
+ <screen>&prompt.user; <userinput>ps -ax | grep '[t]tyd1'</userinput></screen>
+
+ <para>You should see something like:</para>
+
+ <programlisting>747 ?? I 0:00.04 /usr/libexec/getty std.57600 ttyd1</programlisting>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="dumb-terminal">
+ <para>How can I connect a dumb terminal to my FreeBSD
+ box?</para>
+ </question>
+
+ <answer>
+ <para>If you are using another computer as a terminal into your
+ FreeBSD system, get a null-modem cable to go between the two
+ serial ports. If you are using an actual terminal, see its
+ accompanying instructions.</para>
+
+ <para>Then, modify <filename>/etc/ttys</filename> (see
+ &man.ttys.5;), like above. For example, if you are
+ hooking up a WYSE-50 terminal to the fifth serial port,
+ use an entry like this:</para>
+
+ <programlisting>ttyd4 "/usr/libexec/getty std.38400" wyse50 on secure</programlisting>
+
+ <para>This example shows that the port on
+ <devicename>/dev/ttyd4</devicename> has a wyse50 terminal
+ connected at 38400 bps with no parity
+ (<literal>std.38400</literal> from
+ <filename>/etc/gettytab</filename>, see &man.gettytab.5;)
+ and <username>root</username> logins are allowed
+ (<literal>secure</literal>).</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="cannot-tip">
+ <para>Why can I not run <command>tip</command> or
+ <command>cu</command>?</para>
+ </question>
+
+ <answer>
+ <para>On your system, the programs &man.tip.1; and
+ &man.cu.1; are probably executable only by
+ <username>uucp</username> and group
+ <groupname>dialer</groupname>. You can use the group
+ <groupname>dialer</groupname> to control who has access to
+ your modem or remote systems. Just add yourself to group
+ dialer.</para>
+
+ <para>Alternatively, you can let everyone on your system run
+ &man.tip.1; and &man.cu.1; by typing:</para>
+
+ <screen>&prompt.root; <userinput>chmod 4511 /usr/bin/cu</userinput>
+&prompt.root; <userinput>chmod 4511 /usr/bin/tip</userinput></screen>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="hayes-unsupported">
+ <para>My stock Hayes modem is not supported---what
+ can I do?</para>
+ </question>
+
+ <answer>
+ <para>Actually, the manual page for &man.tip.1; is out of
+ date. There is a generic Hayes dialer already built in.
+ Just use <literal>at=hayes</literal> in your
+ <filename>/etc/remote</filename> (see &man.remote.5;)
+ file.</para>
+
+ <para>The Hayes driver is not smart enough to recognize some of
+ the advanced features of newer modems---messages like
+ <literal>BUSY</literal>, <literal>NO DIALTONE</literal>, or
+ <literal>CONNECT 115200</literal> will just confuse it. You
+ should turn those messages off when you use &man.tip.1;
+ (using <literal>ATX0&amp;W</literal>).</para>
+
+ <para>Also, the dial timeout for &man.tip.1; is 60
+ seconds. Your modem should use something less, or else tip
+ will think there is a communication problem. Try
+ <literal>ATS7=45&amp;W</literal>.</para>
+
+ <para>Actually, as shipped &man.tip.1; does not yet
+ support it fully. The solution is to edit the file
+ <filename>tipconf.h</filename> in the directory
+ <filename>/usr/src/usr.bin/tip/tip</filename>. Obviously you
+ need the source distribution to do this.</para>
+
+ <para>Edit the line <literal>#define HAYES 0</literal>
+ to <literal>#define HAYES 1</literal>. Then
+ <command>make</command> and <command>make install</command>.
+ Everything works nicely after that.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="direct-at">
+ <para>How am I expected to enter these AT commands?</para>
+ </question>
+
+ <answer>
+ <para>Make what is called a <quote>direct</quote> entry in
+ your <filename>/etc/remote</filename> file (see
+ &man.remote.5;). For example, if your modem is hooked up
+ to the first serial port,
+ <devicename>/dev/cuaa0</devicename>, then put in the
+ following line:</para>
+
+ <programlisting>cuaa0:dv=/dev/cuaa0:br#19200:pa=none</programlisting>
+
+ <para>Use the highest bps rate your modem supports in the br
+ capability. Then, type <command>tip
+ <devicename>cuaa0</devicename></command> (see &man.tip.1;)
+ and you will be connected to your modem.</para>
+
+ <para>If there is no <devicename>/dev/cuaa0</devicename> on your
+ system, do this:</para>
+
+ <screen>&prompt.root; <userinput>cd /dev</userinput>
+&prompt.root; <userinput>sh MAKEDEV cuaa0</userinput></screen>
+
+ <para>Or use cu as <username>root</username> with the
+ following command:</para>
+
+ <screen>&prompt.root; <userinput>cu -l<replaceable>line</replaceable> -s<replaceable>speed</replaceable></userinput></screen>
+
+ <para>with <replaceable>line</replaceable> being the serial
+ port (e.g. <devicename>/dev/cuaa0</devicename>) and
+ <replaceable>speed</replaceable> being the speed
+ (e.g.<literal>57600</literal>). When you are done
+ entering the AT commands hit <literal>~.</literal> to
+ exit.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="gt-failure">
+ <para>Why does the <literal>&lt;@&gt;</literal> sign for the pn
+ capability not work?</para></question><answer>
+
+ <para>The <literal>&lt;@&gt;</literal> sign in the phone
+ number capability tells tip to look in
+ <filename>/etc/phones</filename> for a phone number. But
+ the <literal>&lt;@&gt;</literal> sign is also a special
+ character in capability files like
+ <filename>/etc/remote</filename>. Escape it with a
+ backslash:</para>
+
+ <programlisting>pn=\@</programlisting>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="dial-command-line">
+ <para>How can I dial a phone number on the command
+ line?</para>
+ </question><answer>
+
+ <para>Put what is called a <quote>generic</quote> entry in
+ your <filename>/etc/remote</filename> file (see
+ &man.remote.5;). For example:</para>
+
+ <programlisting>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:</programlisting>
+
+ <para>Then you can do something like <command>tip -115200
+ 5551234</command>. If you prefer &man.cu.1; over
+ &man.tip.1;, use a generic cu entry:</para>
+
+ <programlisting>cu115200|Use cu to dial any number at 115200bps:\
+ :dv=/dev/cuaa1:br#57600:at=hayes:pa=none:du:</programlisting>
+
+ <para>and type <command>cu 5551234 -s 115200</command>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="set-bps">
+ <para>Do I have to type in the bps rate every time I do
+ that?</para>
+ </question><answer>
+
+ <para>Put in an entry for <literal>tip1200</literal> or
+ <literal>cu1200</literal>, but go ahead and use whatever
+ bps rate is appropriate with the br capability.
+ &man.tip.1; thinks a good default is 1200 bps which is why
+ it looks for a <literal>tip1200</literal> entry. You do
+ not have to use 1200 bps, though.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="terminal-server">
+ <para>How can I more easily access a number of hosts through a
+ terminal server?</para>
+ </question>
+
+ <answer>
+ <para>Rather than waiting until you are connected and typing
+ <literal>CONNECT <replaceable>host</replaceable></literal>
+ each time, use tip's <literal>cm</literal> capability. For
+ example, these entries in
+ <filename>/etc/remote</filename> (see &man.remote.5;):</para>
+
+ <programlisting>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/cuaa2:br#38400:at=hayes:du:pa=none:pn=5551234:</programlisting>
+
+ <para>will let you type <command>tip pain</command> or
+ <command>tip muffin</command> to connect to the hosts
+ <hostid>pain</hostid> or <hostid>muffin</hostid>; and
+ <command>tip deep13</command> to get to the terminal
+ server.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="tip-multiline">
+ <para>Can tip try more than one line for each site?</para>
+ </question>
+
+ <answer>
+ <para>This is often a problem where a university has several
+ modem lines and several thousand students trying to use
+ them...</para>
+
+ <para>Make an entry for your university in
+ <filename>/etc/remote</filename> (see &man.remote.5;) and
+ use <literal>&lt;\@&gt;</literal> for the
+ <literal>pn</literal> capability:</para>
+
+ <programlisting>big-university:\
+ :pn=\@:tc=dialout
+dialout:\
+ :dv=/dev/cuaa3:br#9600:at=courier:du:pa=none:</programlisting>
+
+ <para>Then, list the phone numbers for the university in
+ <filename>/etc/phones</filename> (see &man.phones.5;):</para>
+
+ <programlisting>big-university 5551111
+big-university 5551112
+big-university 5551113
+big-university 5551114</programlisting>
+
+ <para>&man.tip.1;
+ will try each one in the listed order, then give
+ up. If you want to keep retrying, run &man.tip.1;
+ in a while loop.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="multi-controlp">
+ <para>Why do I have to hit <keycombo
+ action="simul"><keycap>CTRL</keycap><keycap>P</keycap></keycombo>
+ twice to send <keycombo
+ action="simul"><keycap>CTRL</keycap><keycap>P</keycap></keycombo>
+ once?</para>
+ </question>
+
+ <answer>
+ <para><keycombo
+ action="simul"><keycap>CTRL</keycap><keycap>P</keycap></keycombo>
+ is the default <quote>force</quote> character, used to
+ tell &man.tip.1; that the next character is literal data.
+ You can set the force character to any other character
+ with the <literal>~s</literal> escape, which means
+ <quote>set a variable</quote>.</para>
+
+ <para>Type <literal>~sforce=<replaceable>single-char
+ </replaceable></literal> followed by a newline.
+ <replaceable>single-char</replaceable> is any single
+ character. If you leave out
+ <replaceable>single-char</replaceable>, then the force
+ character is the nul character, which you can get by
+ typing <keycombo
+ action="simul"><keycap>CTRL</keycap><keycap>2</keycap></keycombo>
+ or <keycombo
+ action="simul"><keycap>CTRL</keycap><keycap>SPACE</keycap></keycombo>.
+ A pretty good value for
+ <replaceable>single-char</replaceable> is <keycombo
+ action="simul"><keycap>SHIFT</keycap><keycap>CTRL</keycap><keycap>6</keycap></keycombo>,
+ which I have seen only used on some terminal
+ servers.</para>
+
+ <para>You can have the force character be whatever you want
+ by specifying the following in your
+ <filename>$HOME/.tiprc</filename> file:</para>
+
+ <programlisting>force=<replaceable>single-char</replaceable></programlisting>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="uppercase">
+ <para>Why is everything I type suddenly in UPPER CASE?</para>
+ </question>
+
+ <answer>
+ <para>You must have pressed <keycombo
+ action="simul"><keycap>CTRL</keycap><keycap>A</keycap></keycombo>,
+ &man.tip.1; <quote>raise character</quote>, specially
+ designed for people with broken <keycap>Caps Lock</keycap>
+ keys. Use <literal>~s</literal> as above and set the
+ variable <quote>raisechar</quote> 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.</para>
+
+ <para>Here is a sample .tiprc file perfect for Emacs users
+ who need to type <keycombo
+ action="simul"><keycap>CTRL</keycap><keycap>2</keycap></keycombo>
+ and <keycombo
+ action="simul"><keycap>CTRL</keycap><keycap>A</keycap></keycombo>
+ a lot:</para>
+
+ <programlisting>force=^^
+raisechar=^^</programlisting>
+
+<para>The ^^ is <keycombo action="simul"><keycap>SHIFT</keycap><keycap>CTRL</keycap><keycap>6</keycap></keycombo>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="tip-filetransfer">
+ <para>How can I do file transfers with
+ <command>tip</command>?</para>
+ </question>
+
+ <answer>
+ <para>If you are talking to another &unix; system, you can
+ send and receive files with <literal>~p</literal> (put)
+ and <literal>~t</literal> (take). These commands run
+ &man.cat.1; and &man.echo.1; on the remote system to
+ accept and send files. The syntax is:</para>
+
+ <programlisting>~p &lt;local-file&gt; [&lt;remote-file&gt;]
+~t &lt;remote-file&gt; [&lt;local-file&gt;]</programlisting>
+
+ <para>There is no error checking, so you probably should use
+ another protocol, like zmodem.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="zmodem-tip">
+ <para>How can I run zmodem with
+ <application>tip</application>?</para>
+ </question>
+
+ <answer>
+ <para>First, install one of the zmodem programs from the
+ ports collection (such as one of the two from the comms
+ category, <application>lrzsz</application> or
+ <application>rzsz</application>.</para>
+
+ <para>To receive files, start the sending program on the
+ remote end. Then, press enter and type <literal>~C
+ rz</literal> (or <literal>~C lrz</literal> if you
+ installed <application>lrzsz</application>) to begin
+ receiving them locally.</para>
+
+ <para>To send files, start the receiving program on the
+ remote end. Then, press enter and type <literal>~C sz
+ <replaceable>files</replaceable></literal> (or <literal>~C
+ lsz <replaceable>files</replaceable></literal>) to send
+ them to the remote system.</para>
+ </answer>
+ </qandaentry>
+ </qandaset>
+ </chapter>
+
+ <chapter id="misc">
+ <title>Διάφορες Ερωτήσεις</title>
+
+ <qandaset>
+ <qandaentry>
+ <question id="more-swap">
+ <para>FreeBSD uses far more swap space than &linux;. Why?</para>
+ </question>
+
+ <answer>
+ <para>FreeBSD only appears to use more swap than &linux;. In
+ actual fact, it does not. The main difference between FreeBSD
+ and &linux; in this regard is that FreeBSD will proactively move
+ entirely idle, unused pages of main memory into swap in order
+ to make more main memory available for active use. &linux; tends
+ to only move pages to swap as a last resort. The perceived
+ heavier use of swap is balanced by the more efficient use of
+ main memory.</para>
+
+ <para>Note that while FreeBSD is proactive in this regard, it
+ does not arbitrarily decide to swap pages when the system is
+ truly idle. Thus you will not find your system all paged
+ out when you get up in the morning after leaving it idle
+ overnight.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="top-freemem">
+ <para>Why does <command>top</command> show very little free
+ memory even when I have very few programs running?</para>
+ </question>
+
+ <answer>
+ <para>The simple answer is that free memory is wasted
+ memory. Any memory that your programs do not actively
+ allocate is used within the FreeBSD kernel as disk
+ cache. The values shown by &man.top.1; labeled as
+ <literal>Inact</literal>, <literal>Cache</literal>, and
+ <literal>Buf</literal> are all cached data at different
+ aging levels. This cached data means the system does
+ not have to access a slow disk again for data it has
+ accessed recently, thus increasing overall performance.
+ In general, a low value shown for <literal>Free</literal>
+ memory in &man.top.1; is good, provided it is not
+ <emphasis>very</emphasis> low.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="chmod-symlinks">
+ <para>Why will <command>chmod</command> not change the
+ permissions on symlinks?</para>
+ </question>
+
+ <answer>
+ <para>Symlinks do not have permissions, and by default,
+ &man.chmod.1; will not follow symlinks to change the
+ permissions on the target file. So if you have a file,
+ <filename>foo</filename>, and a symlink to that file,
+ <filename>bar</filename>, then this command will always
+ succeed.</para>
+
+ <screen>&prompt.user; <userinput>chmod g-w bar</userinput></screen>
+
+ <para>However, the permissions on <filename>foo</filename> will
+ not have changed.</para>
+
+ <para>You have to use either <option>-H</option> or
+ <option>-L</option> together with the <option>-R</option>
+ option to make this work. See the &man.chmod.1; and
+ &man.symlink.7; manual pages for more info.</para>
+
+ <warning>
+ <para>The <option>-R</option> option does a
+ <emphasis>RECURSIVE</emphasis> &man.chmod.1;. Be
+ careful about specifying directories or symlinks to
+ directories to &man.chmod.1;. If you want to change
+ the permissions of a directory referenced by a
+ symlink, use &man.chmod.1; without any options and
+ follow the symlink with a trailing slash
+ (<filename>/</filename>). For example, if
+ <filename>foo</filename> is a symlink to directory
+ <filename>bar</filename>, and you want to change the
+ permissions of <filename>foo</filename> (actually
+ <filename>bar</filename>), you would do something
+ like:</para>
+
+ <screen>&prompt.user; <userinput>chmod 555 foo/</userinput></screen>
+
+ <para>With the trailing slash, &man.chmod.1; will follow
+ the symlink, <filename>foo</filename>, to change the
+ permissions of the directory,
+ <filename>bar</filename>.</para>
+ </warning>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="dos-binaries">
+ <para>Can I run DOS binaries under FreeBSD?</para>
+ </question>
+
+ <answer>
+ <para>Yes, you can use <filename
+ role="package">emulators/doscmd</filename>, a DOS emulation
+ program, available in the &os; Ports Collection.</para>
+
+ <note>
+ <para>The <application>doscmd</application> program used to be an
+ integrated part of &os;, but was removed before the release of
+ &os; 5.3.</para>
+ </note>
+
+ <para>If <application>doscmd</application> will not suffice,
+ the add-on utility <filename
+ role="package">emulators/pcemu</filename> emulates an 8088 and
+ enough BIOS services to run many DOS text mode
+ applications. It requires the X Window System.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="translation">
+ <para>What do I need to do to translate a FreeBSD document into
+ my native language?</para>
+ </question>
+
+ <answer>
+ <para>See the <ulink url="&url.books.fdp-primer;/translations.html">
+ Translation FAQ</ulink> in the FreeBSD Documentation Project
+ Primer.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="freebsd-mail-bounces">
+ <para>Why does my email to any address at FreeBSD.org bounce?</para>
+ </question>
+
+ <answer>
+ <para>The FreeBSD.org mail system implements some of the
+ stricter Postfix checks on incoming mail and rejects mail that is
+ either misconfigured or is potential spam. Your mail
+ might bounce for one of the following reasons:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>The email is being sent from a known spam
+ domain or IP block.</para>
+
+ <para>The FreeBSD mail servers reject email from known
+ spam sources. If you have service through a company
+ or domain who generates or relays spam, please switch
+ to a service provider who does not.</para>
+ </listitem>
+
+ <listitem>
+ <para>The body of the email only contains HTML.</para>
+
+ <para>Mail should be sent in plain text only. Please
+ configure your mail user agent to send plain
+ text.</para>
+ </listitem>
+
+ <listitem>
+ <para>The mailer at FreeBSD.org cannot resolve the IP
+ address of the connecting host back to a symbolic
+ name.</para>
+
+ <para>Working reverse DNS is a standard requirement for
+ accepting mail from a host. Set up reverse DNS for
+ your mail server's IP address. Many home services
+ (DSL, cable, dialup, etc.) will not give you this
+ option. In this case, relay your email through your
+ service provider's mail server.</para>
+ </listitem>
+
+ <listitem>
+ <para>The hostname given in the EHLO/HELO part of the SMTP
+ exchange cannot be resolved to an IP address.</para>
+
+ <para>A fully qualified, resolvable host name is necessary
+ in this part of the SMTP dialogue before mail will be
+ accepted. If you do not have a host name that is registered
+ in the DNS, then you should use your service provider's mail
+ server to relay your mail.</para>
+ </listitem>
+
+ <listitem>
+ <para>Your message had a message ID ending with the string
+ <quote>localhost</quote>.</para>
+
+ <para>Some mail user agents generate bad message IDs which will
+ not be accepted. You will need to persuade your mail user
+ agent to generate a valid message ID or else configure your
+ mail transfer agent to rewrite them.</para>
+ </listitem>
+ </itemizedlist>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="free-account">
+ <para>Where can I find a free FreeBSD account?</para>
+ </question>
+
+ <answer>
+ <para>While FreeBSD does not provide open access to any of their
+ servers, others do provide open access &unix; systems. The
+ charge varies and limited services may be available.</para>
+
+ <para><ulink url="http://www.arbornet.org/">Arbornet,
+ Inc</ulink>, also known as M-Net, has been providing open
+ access to &unix; systems since 1983. Starting on an Altos
+ running System III, the site switched to BSD/OS in 1991. In
+ June of 2000, the site switched again to FreeBSD. M-Net can be
+ accessed via telnet and SSH and provides basic access to the
+ entire FreeBSD software suite. However, network access is
+ limited to members and patrons who donate to the system, which
+ is run as a non-profit organization. M-Net also provides an
+ bulletin board system and interactive chat.</para>
+
+ <para><ulink url="http://www.grex.org/">Grex</ulink> provides a
+ site very similar to M-Net including the same bulletin board
+ and interactive chat software. However, the machine is a &sun;
+ 4M and is running &sunos;.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="sup-define">
+ <para>What is <command>sup</command>, and how do I use
+ it?</para>
+ </question>
+
+ <answer>
+ <para><ulink url="http://www.FreeBSD.org/cgi/ports.cgi?^sup">
+ SUP</ulink> 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.</para>
+
+ <para>SUP is not bandwidth friendly, and has been retired.
+ The current recommended method to keep your sources up to
+ date is <ulink url="&url.books.handbook;/synching.html#CVSUP">
+ CVSup</ulink></para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="daemon-name">
+ <para>What is the cute little red guy's name?</para>
+ </question>
+
+ <answer>
+ <para>He does not have one, and is just called <quote>the BSD
+ daemon</quote>. If you insist upon using a name, call him
+ <quote>beastie</quote>. Note that <quote>beastie</quote>
+ is pronounced <quote>BSD</quote>.</para>
+
+ <para>You can learn more about the BSD daemon on his <ulink
+ url="http://www.mckusick.com/beastie/index.html">home
+ page</ulink>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="use-beastie">
+ <para>Can I use the BSD daemon image?</para>
+ </question>
+
+ <answer>
+ <para>Perhaps. The BSD daemon is copyrighted by Marshall
+ Kirk McKusick. You will want to check his <ulink
+ url="http://www.mckusick.com/beastie/mainpage/copyright.html">Statement
+ on the Use of the BSD Daemon Figure</ulink> for detailed
+ usage terms.</para>
+
+ <para>In summary, you are free to use the image in a tasteful
+ manner, for personal use, so long as appropriate credit is
+ given. If you want to use him commercially, you must
+ contact Kirk McKusick. More details are available on the
+ <ulink
+ url="http://www.mckusick.com/beastie/index.html">BSD
+ Daemon's home page</ulink>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="daemon-images">
+ <para>Do you have any BSD daemon images I could use?</para>
+ </question>
+
+ <answer>
+ <para>You will find eps and Xfig drawings under
+ <filename>/usr/share/examples/BSD_daemon/</filename>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="glossary">
+ <para>I have seen an acronym or other term on the mailing
+ lists and I do not understand what it means. Where should
+ I look?</para>
+ </question>
+
+ <answer>
+ <para>Please see the <ulink
+ url="&url.books.handbook;/freebsd-glossary.html">
+ &os Glossary</ulink>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="bikeshed-painting">
+ <para>Why should I care what color the bikeshed is?</para>
+ </question>
+
+ <answer>
+ <para>The really, really short answer is that you should not.
+ The somewhat longer answer is that just because you are
+ capable of building a bikeshed does not mean you should stop
+ others from building one just because you do not like the
+ color they plan to paint it. This is a metaphor indicating
+ that you need not argue about every little feature just
+ because you know enough to do so. Some people have
+ commented that the amount of noise generated by a change is
+ inversely proportional to the complexity of the
+ change.</para>
+
+ <para>The longer and more complete answer is that after a very
+ long argument about whether &man.sleep.1; should take
+ fractional second arguments, &a.phk; posted a long
+ message entitled <quote><ulink
+ url="http://www.FreeBSD.org/cgi/getmsg.cgi?fetch=506636+517178+/usr/local/www/db/text/1999/freebsd-hackers/19991003.freebsd-hackers">A bike
+ shed (any color will do) on greener grass...</ulink></quote>.
+ The appropriate portions of that message are quoted
+ below.</para>
+
+ <blockquote>
+ <attribution>&a.phk; on freebsd-hackers, October
+ 2, 1999</attribution>
+
+ <para>
+ <quote>What is it about this bike shed?</quote> Some
+ of you have asked me.</para>
+
+ <para>It is a long story, or rather it is an old story, but
+ it is quite short actually. C. Northcote Parkinson wrote
+ a book in the early 1960s, called <quote>Parkinson's
+ Law</quote>, which contains a lot of insight into the
+ dynamics of management.</para>
+
+ <para>[snip a bit of commentary on the book]</para>
+
+ <para>In the specific example involving the bike shed, the
+ other vital component is an atomic power-plant, I guess
+ that illustrates the age of the book.</para>
+
+ <para>Parkinson shows how you can go into the board of
+ directors and get approval for building a multi-million or
+ even billion dollar atomic power plant, but if you want to
+ build a bike shed you will be tangled up in endless
+ discussions.</para>
+
+ <para>Parkinson explains that this is because an atomic
+ plant is so vast, so expensive and so complicated that
+ people cannot grasp it, and rather than try, they fall
+ back on the assumption that somebody else checked all the
+ details before it got this far. Richard P. Feynmann
+ gives a couple of interesting, and very much to the point,
+ examples relating to Los Alamos in his books.</para>
+
+ <para>A bike shed on the other hand. Anyone can build one
+ of those over a weekend, and still have time to watch the
+ game on TV. So no matter how well prepared, no matter how
+ reasonable you are with your proposal, somebody will seize
+ the chance to show that he is doing his job, that he is
+ paying attention, that he is
+ <emphasis>here</emphasis>.</para>
+
+ <para>In Denmark we call it <quote>setting your
+ fingerprint</quote>. It is about personal pride and
+ prestige, it is about being able to point somewhere and
+ say <quote>There! <emphasis>I</emphasis> did that.</quote>
+ It is a strong trait in politicians, but present in most
+ people given the chance. Just think about footsteps in
+ wet cement.</para>
+ </blockquote>
+ </answer>
+ </qandaentry>
+ </qandaset>
+ </chapter>
+
+ <chapter id="funnies">
+ <title>Χιούμορ και FreeBSD</title>
+
+ <qandaset>
+ <qandaentry>
+ <question id="very-very-cool">
+ <para>How cool is FreeBSD?</para>
+ </question>
+
+ <answer>
+ <para>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.</para>
+
+ <para>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 significant variances in
+ temperature. 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. We think most of the volunteers
+ are at Apple now, working on their new <quote>scratch and
+ sniff</quote> GUI. It is a funny old business we are in!</para>
+
+ <para>Seriously, both FreeBSD and &linux; use the
+ <acronym>HLT</acronym> (halt) instruction when the system is
+ idle thus lowering its energy consumption and therefore the
+ heat it generates. Also if you have APM (advanced power
+ management) configured, then FreeBSD can also put the CPU into
+ a low power mode.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="letmeoutofhere">
+ <para>Who is scratching in my memory banks??</para>
+ </question>
+
+ <answer>
+ <para>Q. Is there anything <quote>odd</quote> 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.</para>
+
+ <para>A. Yes! You will see frequent references to
+ <quote>daemons</quote> in the BSD documentation, and what most
+ people do not 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.</para>
+
+ <para>If the noise gets to you, a good
+ <command>fdisk /mbr</command> from DOS will get rid of them,
+ but do not 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 do not 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.
+ Now that you know, given a choice you would probably prefer to get
+ used to the scratchy noises, no?</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="changing-lightbulbs">
+ <para>How many FreeBSD hackers does it take to change a
+ lightbulb?</para>
+ </question>
+
+ <answer>
+ <para>One thousand, one hundred and sixty-nine:</para>
+
+ <para>Twenty-three to complain to -CURRENT about the lights
+ being out;</para>
+
+ <para>Four to claim that it is a configuration problem, and
+ that such matters really belong on -questions;</para>
+
+ <para>Three to submit PRs about it, one of which is misfiled
+ under doc and consists only of <quote>it's dark</quote>;</para>
+
+ <para>One to commit an untested lightbulb which breaks
+ buildworld, then back it out five minutes later;</para>
+
+ <para>Eight to flame the PR originators for not including
+ patches in their PRs;</para>
+
+ <para>Five to complain about buildworld being broken;</para>
+
+ <para>Thirty-one to answer that it works for them, and they
+ must have cvsupped at a bad time;</para>
+
+ <para>One to post a patch for a new lightbulb to -hackers;</para>
+
+ <para>One to complain that he had patches for this three years
+ ago, but when he sent them to -CURRENT they were just ignored,
+ and he has had bad experiences with the PR system; besides,
+ the proposed new lightbulb is non-reflexive;</para>
+
+ <para>Thirty-seven to scream that lightbulbs do not belong in
+ the base system, that committers have no right to do things
+ like this without consulting the Community, and WHAT IS
+ -CORE DOING ABOUT IT!?</para>
+
+ <para>Two hundred to complain about the color of the bicycle
+ shed;</para>
+
+ <para>Three to point out that the patch breaks &man.style.9;;</para>
+
+ <para>Seventeen to complain that the proposed new lightbulb is
+ under GPL;</para>
+
+ <para>Five hundred and eighty-six to engage in a flame war
+ about the comparative advantages of the GPL, the BSD
+ license, the MIT license, the NPL, and the personal hygiene
+ of unnamed FSF founders;</para>
+
+ <para>Seven to move various portions of the thread to -chat
+ and -advocacy;</para>
+
+ <para>One to commit the suggested lightbulb, even though it
+ shines dimmer than the old one;</para>
+
+ <para>Two to back it out with a furious flame of a commit
+ message, arguing that FreeBSD is better off in the dark than
+ with a dim lightbulb;</para>
+
+ <para>Forty-six to argue vociferously about the backing out
+ of the dim lightbulb and demanding a statement from
+ -core;</para>
+
+ <para>Eleven to request a smaller lightbulb so it will fit
+ their Tamagotchi if we ever decide to port FreeBSD to that
+ platform;</para>
+
+ <para>Seventy-three to complain about the SNR on -hackers and
+ -chat and unsubscribe in protest;</para>
+
+ <para>Thirteen to post <quote>unsubscribe</quote>,
+ <quote>How do I unsubscribe?</quote>, or <quote>Please
+ remove me from the list</quote>, followed by the usual
+ footer;</para>
+
+ <para>One to commit a working lightbulb while everybody is too
+ busy flaming everybody else to notice;</para>
+
+ <para>Thirty-one to point out that the new lightbulb would shine
+ 0.364% brighter if compiled with TenDRA (although it will have
+ to be reshaped into a cube), and that FreeBSD should therefore
+ switch to TenDRA instead of GCC;</para>
+
+ <para>One to complain that the new lightbulb lacks
+ fairings;</para>
+
+ <para>Nine (including the PR originators) to ask
+ <quote>what is MFC?</quote>;</para>
+
+ <para>Fifty-seven to complain about the lights being out two
+ weeks after the bulb has been changed.</para>
+
+ <para><emphasis>&a.nik; adds:</emphasis></para>
+
+ <para><emphasis>I was laughing quite hard at
+ this.</emphasis></para>
+
+ <para><emphasis>And then I thought, <quote>Hang on,
+ shouldn't there be '1 to document it.' in that list
+ somewhere?</quote></emphasis></para>
+
+ <para><emphasis>And then I was enlightened :-)</emphasis></para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="dev-null">
+ <para>Where does data written to <filename>/dev/null</filename>
+ go?</para>
+ </question>
+ <answer>
+ <para>It goes into a special data sink in the CPU where it
+ is converted to heat which is vented through the heatsink
+ / fan assembly. This is why CPU cooling is increasingly
+ important; as people get used to faster processors, they
+ become careless with their data and more and more of it
+ ends up in <filename>/dev/null</filename>, overheating
+ their CPUs. If you delete <filename>/dev/null</filename>
+ (which effectively disables the CPU data sink) your CPU
+ may run cooler but your system will quickly become
+ constipated with all that excess data and start to behave
+ erratically. If you have a fast network connection you
+ can cool down your CPU by reading data out of
+ <filename>/dev/random</filename> and sending it off
+ somewhere; however you run the risk of overheating your
+ network connection and <filename>/</filename> or angering
+ your ISP, as most of the data will end up getting
+ converted to heat by their equipment, but they generally
+ have good cooling, so if you do not overdo it you should be
+ OK.</para>
+
+ <para><emphasis>Paul Robinson adds:</emphasis></para>
+
+ <para>There are other methods. As every good sysadmin knows,
+ it is part of standard practice to send data to the screen
+ of interesting variety to keep all the pixies that make up
+ your picture happy. Screen pixies (commonly mis-typed or
+ re-named as <quote>pixels</quote> are categorized by the type of hat
+ they wear (red, green or blue) and will hide or appear
+ (thereby showing the color of their hat) whenever they
+ receive a little piece of food. Video cards turn data into
+ pixie-food, and then send them to the pixies - the more
+ expensive the card, the better the food, so the better
+ behaved the pixies are. They also need constant stimulation
+ - this is why screen savers exist.</para>
+
+ <para>To take your suggestions further, you could just throw
+ the random data to console, thereby letting the pixies
+ consume it. This causes no heat to be produced at all,
+ keeps the pixies happy and gets rid of your data quite
+ quickly, even if it does make things look a bit messy on
+ your screen.</para>
+
+ <para>Incidentally, as an ex-admin of a large ISP who
+ experienced many problems attempting to maintain a stable
+ temperature in a server room, I would strongly discourage
+ people sending the data they do not want out to the
+ network. The fairies who do the packet switching and
+ routing get annoyed by it as well.</para>
+ </answer>
+ </qandaentry>
+ </qandaset>
+ </chapter>
+
+ <chapter id="advanced">
+ <title>Προχωρημένα Θέματα</title>
+
+ <qandaset>
+ <qandaentry>
+ <question id="learn-advanced">
+ <para>How can I learn more about FreeBSD's internals?</para>
+ </question>
+
+ <answer>
+ <para>At this time, there is only one book on FreeBSD-specific OS
+ internals, namely <quote>The Design and Implementation of the
+ FreeBSD Operating System</quote> by Marshall Kirk McKusick and
+ George V. Neville-Neil, ISBN 0-201-70245-2, which
+ focuses on version 5.X of FreeBSD.</para>
+
+ <para>Additionally, much general &unix; knowledge is directly
+ applicable to FreeBSD.</para>
+
+ <para>For a list of relevant books, please check the Handbook's <ulink
+ url="&url.books.handbook;/bibliography-osinternals.html">Operating
+ System Internals Bibliography</ulink>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="how-to-contribute">
+ <para>How can I contribute to FreeBSD?</para>
+ </question>
+
+ <answer>
+ <para>Please see the article on <ulink
+ url="&url.articles.contributing;/article.html">Contributing
+ to FreeBSD</ulink> for specific advice on how to do this.
+ Assistance is more than welcome!</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="define-snap-release">
+ <para>What are SNAPs and RELEASEs?</para>
+ </question>
+
+ <answer>
+ <para>There are currently three active/semi-active branches
+ in the FreeBSD <ulink
+ url="http://www.FreeBSD.org/cgi/cvsweb.cgi"> CVS
+ Repository</ulink>. (Earlier branches are only changed
+ very rarely, which is why there are only three active
+ branches of development):</para>
+
+ <itemizedlist>
+ <listitem>
+ <para><literal>RELENG_5</literal> AKA
+ <emphasis>5-STABLE</emphasis></para>
+ </listitem>
+
+ <listitem>
+ <para><literal>RELENG_6</literal> AKA
+ <emphasis>6-STABLE</emphasis></para>
+ </listitem>
+
+ <listitem>
+ <para><literal>HEAD</literal> AKA
+ <emphasis>-CURRENT</emphasis> AKA
+ <emphasis>7.X-CURRENT</emphasis></para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para><literal>HEAD</literal> is not an actual branch tag,
+ like the other two; it is simply a symbolic constant for
+ <quote><emphasis>the current, non-branched development
+ stream</emphasis></quote> which we simply refer to as
+ <quote>-CURRENT</quote>.</para>
+
+ <para>Right now, <quote>-CURRENT</quote> is the 7.X development
+ stream; the <literal>5-STABLE</literal> branch,
+ <symbol>RELENG_5</symbol>, forked off from
+ <quote>-CURRENT</quote> in October 2004, and
+ the <literal>6-STABLE</literal> branch,
+ <symbol>RELENG_6</symbol>, forked off from
+ <quote>-CURRENT</quote> in November 2005.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="custrel">
+ <para>How do I make my own custom release?</para>
+ </question>
+
+ <answer>
+ <para>Please see the <ulink
+ url="&url.articles.releng;/article.html">
+ Release Engineering</ulink> article.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="makeworld-clobbers">
+ <para>Why does <command>make world</command> clobber my existing
+ installed binaries?</para>
+ </question>
+
+ <answer>
+ <para>Yes, this is the general idea; as its name might suggest,
+ <command>make world</command> 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).</para>
+
+ <para>If the environment variable <literal>DESTDIR</literal>
+ is defined while running <command>make world</command> or
+ <command>make install</command>, the newly-created binaries
+ will be deposited in a directory tree identical to the
+ installed one, rooted at <literal>${DESTDIR}</literal>.
+ Some random combination of shared libraries modifications and
+ program rebuilds can cause this to fail in <command>make
+ world</command> however.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="cvsup-round-robin">
+ <para>Why isn't cvsup.FreeBSD.org a round robin DNS entry to
+ share the load amongst the various CVSup servers?</para>
+ </question>
+
+ <answer>
+ <para>While CVSup mirrors update from the master CVSup
+ server hourly, this update might happen at any time during
+ the hour. This means that some servers have newer code
+ than others, even though all servers have code that is
+ less than an hour old. If <hostid role="fqdn">cvsup.FreeBSD.org</hostid> was a round
+ robin DNS entry that simply redirected users to a random
+ CVSup server, running CVSup twice in a row could download
+ code older than the code already on the system.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="bus-speed-defaulted">
+ <para>Why does my system say <quote>(bus speed
+ defaulted)</quote> when it boots?</para>
+ </question>
+
+ <answer>
+
+ <para>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
+ <symbol>TUNE_1542</symbol> 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 does not, your data could be corrupted.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="ctm">
+ <para>Can I follow -CURRENT with limited Internet access?</para>
+ </question>
+
+ <answer>
+ <para>Yes, you can do this <emphasis>without</emphasis>
+ downloading the whole source tree by using the <ulink
+ url="&url.books.handbook;/synching.html#CTM">CTM facility</ulink>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="split-240k">
+ <para>How did you split the distribution into 240k files?</para>
+ </question>
+
+ <answer>
+ <para>Newer BSD based systems have a <option>-b</option>
+ option to &man.split.1; that allows them to split files on arbitrary
+ byte boundaries.</para>
+
+ <para>Here is an example from
+ <filename>/usr/src/Makefile</filename>.</para>
+
+ <programlisting>bin-tarball:
+(cd ${DISTDIR}; \
+tar cf - . \
+gzip --no-name -9 -c | \
+split -b 240640 - \
+${RELEASEDIR}/tarballs/bindist/bin_tgz.)</programlisting>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="submitting-kernel-extensions">
+ <para>I have written a kernel extension, who do I send it
+ to?</para>
+ </question>
+
+ <answer>
+ <para>Please take a look at the article on <ulink
+ url="&url.articles.contributing;/article.html">Contributing
+ to FreeBSD</ulink> to learn how to submit code.</para>
+
+ <para>And thanks for the thought!</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="pnp-initialize">
+ <para>How are Plug N Play ISA cards detected and
+ initialized?</para>
+ </question>
+
+ <answer>
+ <para>By: Frank Durda IV
+ <email>uhclem@nemesis.lonestar.org</email></para>
+
+ <para>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, it asks if there
+ are any PnP boards present, and all the PnP boards respond with
+ their model # to a I/O read of the same port, so the probe
+ routine gets a wired-OR <quote>yes</quote> 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 <quote>off-line</quote>. It
+ then looks to see if any boards are still responding to the
+ query. If the answer was <literal>0</literal>, then there are
+ no boards with IDs above X. Now probe asks if there are any
+ boards below <literal>X</literal>. 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.</para>
+
+ <para>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.</para>
+
+ <para>The lower 32 bits are a serial #, 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.</para>
+
+ <para>The 32 bit groups can never be all zero. This allows the
+ wired-OR to show non-zero bits during the initial binary
+ search.</para>
+
+ <para>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.</para>
+
+ <para>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 do not 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.</para>
+
+ <para>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
+ cannot move them around whenever you want.</para>
+
+ <para>There is a lot of oversimplification above, but you
+ should get the general idea.</para>
+
+ <para>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
+ <quote>tough</quote>. So they do a write to the printer status
+ port for setting addresses, plus that use that address +
+ <literal>0x800</literal>, and a third I/O port for reading that
+ can be located anywhere between <literal>0x200</literal> and
+ <literal>0x3ff</literal>.</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="major-numbers">
+ <para>Can you assign a major number for a device driver I have
+ written?</para>
+ </question>
+
+ <answer>
+
+ <para>&os.current; after February 2003 has a facility for
+ dynamically and automatically allocating major numbers for
+ device drivers at runtime. This mechanism is highly
+ preferred to the older procedure of statically allocating
+ device numbers. Some comments on this subject can be
+ found in <filename>src/sys/conf/majors</filename>.</para>
+
+ <para>If you are forced for some reason to use a static
+ major number, the procedure for obtaining one 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
+ <filename>files.i386</filename>, a sample configuration
+ file entry, and the appropriate &man.MAKEDEV.8; 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 would appreciate hearing about your
+ driver on the &a.hackers;.</para>
+
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="alternate-directory-layout">
+ <para>What about alternative layout policies for
+ directories?</para>
+ </question>
+
+ <answer>
+ <para>In answer to the question of alternative layout policies
+ for directories, the scheme that is currently in use is
+ unchanged from what I wrote in 1983. I wrote that policy for
+ the original fast filesystem, and never revisited it. It works
+ well at keeping cylinder groups from filling up. As several of
+ you have noted, it works poorly for find. Most filesystems are
+ created from archives that were created by a depth first search
+ (aka ftw). These directories end up being striped across the
+ cylinder groups thus creating a worst possible scenario for
+ future depth first searches. If one knew the total number of
+ directories to be created, the solution would be to create
+ (total / fs_ncg) per cylinder group before moving on.
+ Obviously, one would have to create some heuristic to guess at
+ this number. Even using a small fixed number like say 10 would
+ make an order of magnitude improvement. To differentiate
+ restores from normal operation (when the current algorithm is
+ probably more sensible), you could use the clustering of up to
+ 10 if they were all done within a ten second window. Anyway, my
+ conclusion is that this is an area ripe for
+ experimentation.</para>
+
+ <para>Kirk McKusick, September 1998</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="kernel-panic-troubleshooting">
+ <para>How can I make the most of the data I see when my kernel
+ panics?</para>
+ </question>
+
+ <answer>
+ <para><emphasis>[This section was extracted from a mail
+ written by &a.wpaul; on the freebsd-current
+ <link linkend="mailing">mailing list</link> by &a.des;, who
+ fixed a few typos and added the bracketed comments]
+ </emphasis></para>
+
+ <programlisting>From: Bill Paul &lt;wpaul@skynet.ctr.columbia.edu&gt;
+Subject: Re: the fs fun never stops
+To: Ben Rosengart
+Date: Sun, 20 Sep 1998 15:22:50 -0400 (EDT)
+Cc: current@FreeBSD.org</programlisting>
+
+ <para><emphasis>Ben Rosengart posted the following
+ panic message]</emphasis></para>
+
+ <programlisting>&gt; Fatal trap 12: page fault while in kernel mode
+&gt; fault virtual address = 0x40
+&gt; fault code = supervisor read, page not present
+&gt; instruction pointer = 0x8:0xf014a7e5
+ ^^^^^^^^^^
+&gt; stack pointer = 0x10:0xf4ed6f24
+&gt; frame pointer = 0x10:0xf4ed6f28
+&gt; code segment = base 0x0, limit 0xfffff, type 0x1b
+&gt; = DPL 0, pres 1, def32 1, gran 1
+&gt; processor eflags = interrupt enabled, resume, IOPL = 0
+&gt; current process = 80 (mount)
+&gt; interrupt mask =
+&gt; trap number = 12
+&gt; panic: page fault</programlisting>
+
+ <para>[When] you see a message like this, it is not enough to just
+ reproduce it and send it in. The instruction pointer value that
+ I highlighted up there is important; unfortunately, it is also
+ configuration dependent. In other words, the value varies
+ depending on the exact kernel image that you are using. If
+ you are using a GENERIC kernel image from one of the snapshots,
+ then it is possible for somebody else to track down the
+ offending function, but if you are running a custom kernel then
+ only <emphasis>you</emphasis> can tell us where the fault
+ occurred.</para>
+
+ <para>What you should do is this:</para>
+
+ <procedure>
+ <step>
+ <para>Write down the instruction pointer value. Note that
+ the <literal>0x8:</literal> part at the beginning is not
+ significant in this case: it is the
+ <literal>0xf0xxxxxx</literal> part that we want.</para>
+ </step>
+
+ <step>
+ <para>When the system reboots, do the following:
+
+ <screen>&prompt.user; <userinput>nm -n /kernel.that.caused.the.panic | grep f0xxxxxx</userinput></screen>
+
+ where <literal>f0xxxxxx</literal> is the instruction
+ pointer value. The odds are you will not get an exact
+ match since the symbols in the kernel symbol table are
+ for the entry points of functions and the instruction
+ pointer address will be somewhere inside a function, not
+ at the start. If you do not get an exact match, omit the
+ last digit from the instruction pointer value and try
+ again, i.e.:
+
+ <screen>&prompt.user; <userinput>nm -n /kernel.that.caused.the.panic | grep f0xxxxx</userinput></screen>
+
+ If that does not yield any results, chop off another
+ digit. Repeat until you get some sort of output. The
+ result will be a possible list of functions which caused
+ the panic. This is a less than exact mechanism for
+ tracking down the point of failure, but it is better than
+ nothing.</para>
+ </step>
+ </procedure>
+
+ <para>I see people constantly show panic messages like this
+ but rarely do I see someone take the time to match up the
+ instruction pointer with a function in the kernel symbol
+ table.</para>
+
+ <para>The best way to track down the cause of a panic is by
+ capturing a crash dump, then using &man.gdb.1; to generate
+ a stack trace on the crash dump.</para>
+
+ <para>In any case, the method I normally use is this:</para>
+
+ <procedure>
+ <step>
+ <para>Set up a kernel config file, optionally adding
+ <literal>options DDB</literal> if you think you need
+ the kernel debugger for something. (I use this mainly
+ for setting breakpoints if I suspect an infinite loop
+ condition of some kind.)</para>
+ </step>
+
+ <step>
+ <para>Use <command>config -g
+ <replaceable>KERNELCONFIG</replaceable></command> to set
+ up the build directory.</para>
+ </step>
+
+ <step>
+ <para><command>cd /sys/compile/<replaceable>KERNELCONFIG</replaceable>; make</command></para>
+ </step>
+
+ <step>
+ <para>Wait for kernel to finish compiling.</para>
+ </step>
+
+ <step>
+ <para><command>make install</command></para>
+ </step>
+
+ <step>
+ <para>reboot</para>
+ </step>
+ </procedure>
+
+ <para>The &man.make.1; process will have built two kernels.
+ <filename>kernel</filename> and
+ <filename>kernel.debug</filename>.
+ <filename>kernel</filename> was installed as
+ <filename>/kernel</filename>, while
+ <filename>kernel.debug</filename> can be used as the
+ source of debugging symbols for &man.gdb.1;.</para>
+
+ <para>To make sure you capture a crash dump, you need edit
+ <filename>/etc/rc.conf</filename> and set
+ <literal>dumpdev</literal> to point to your swap
+ partition. This will cause the &man.rc.8; scripts to use
+ the &man.dumpon.8; command to enable crash dumps. You can
+ also run &man.dumpon.8; manually. After a panic, the
+ crash dump can be recovered using &man.savecore.8;; if
+ <literal>dumpdev</literal> is set in
+ <filename>/etc/rc.conf</filename>, the &man.rc.8; scripts
+ will run &man.savecore.8; automatically and put the crash
+ dump in <filename>/var/crash</filename>.</para>
+
+ <note>
+ <para>FreeBSD crash dumps are usually the same size as the
+ physical RAM size of your machine. That is, if you have
+ 64MB of RAM, you will get a 64MB crash dump. Therefore you
+ must make sure there is enough space in
+ <filename>/var/crash</filename> to hold the dump.
+ Alternatively, you run &man.savecore.8;
+ manually and have it recover the crash dump to another
+ directory where you have more room. It is possible to limit
+ the size of the crash dump by using <literal>options
+ MAXMEM=(foo)</literal> to set the amount of memory the
+ kernel will use to something a little more sensible. For
+ example, if you have 128MB of RAM, you can limit the
+ kernel's memory usage to 16MB so that your crash dump size
+ will be 16MB instead of 128MB.</para>
+ </note>
+
+ <para>Once you have recovered the crash dump, you can get a
+ stack trace with &man.gdb.1; as follows:</para>
+
+ <screen>&prompt.user; <userinput>gdb -k /sys/compile/KERNELCONFIG/kernel.debug /var/crash/vmcore.0</userinput>
+<prompt>(gdb)</prompt> <userinput>where</userinput></screen>
+
+ <para>Note that there may be several screens worth of
+ information; ideally you should use
+ &man.script.1; to capture all of them. Using the
+ unstripped kernel image with all the debug symbols should show
+ the exact line of kernel source code where the panic occurred.
+ Usually you have to read the stack trace from the bottom up in
+ order to trace the exact sequence of events that lead to the
+ crash. You can also use &man.gdb.1; to print out
+ the contents of various variables or structures in order to
+ examine the system state at the time of the crash.</para>
+
+ <para>Now, if you are really insane and have a second computer,
+ you can also configure &man.gdb.1; to do remote
+ debugging such that you can use &man.gdb.1; on
+ one system to debug the kernel on another system, including
+ setting breakpoints, single-stepping through the kernel code,
+ just like you can do with a normal user-mode program. I have not
+ played with this yet as I do not often have the chance to set up
+ two machines side by side for debugging purposes.</para>
+
+ <para><emphasis>[Bill adds: "I forgot to mention one thing: if
+ you have DDB enabled and the kernel drops into the debugger,
+ you can force a panic (and a crash dump) just by typing 'panic'
+ at the ddb prompt. It may stop in the debugger again during the
+ panic phase. If it does, type 'continue' and it will finish the
+ crash dump." -ed]</emphasis></para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="dlsym-failure">
+ <para>Why has dlsym() stopped working for ELF executables?</para>
+ </question>
+
+ <answer>
+ <para>The ELF toolchain does not, by default, make the symbols
+ defined in an executable visible to the dynamic linker.
+ Consequently <function>dlsym()</function> searches on handles
+ obtained from calls to <function>dlopen(NULL,
+ flags)</function> will fail to find such symbols.</para>
+
+ <para>If you want to search, using
+ <function>dlsym()</function>, for symbols present in the
+ main executable of a process, you need to link the
+ executable using the <option>-export-dynamic</option>
+ option to the ELF linker (&man.ld.1;).</para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry>
+ <question id="change-kernel-address-space">
+ <para>How can I increase or reduce the kernel address space?</para>
+ </question>
+
+ <answer>
+ <para>By default, the kernel address space is 256 MB on
+ FreeBSD 3.X and 1 GB on FreeBSD 4.X. If you run a
+ network-intensive server (e.g. a large FTP or HTTP server),
+ you might find that 256 MB is not enough.</para>
+
+ <para>So how do you increase the address space? There are two
+ aspects to this. First, you need to tell the kernel to reserve
+ a larger portion of the address space for itself. Second, since
+ the kernel is loaded at the top of the address space, you need
+ to lower the load address so it does not bump its head against
+ the ceiling.</para>
+
+ <para>The first goal is achieved by increasing the value of
+ <literal>NKPDE</literal> in
+ <filename>src/sys/i386/include/pmap.h</filename>. Here is what
+ it looks like for a 1 GB address space:</para>
+
+ <programlisting>#ifndef NKPDE
+#ifdef SMP
+#define NKPDE 254 /* addressable number of page tables/pde's */
+#else
+#define NKPDE 255 /* addressable number of page tables/pde's */
+#endif /* SMP */
+#endif</programlisting>
+
+ <para>To find the correct value of <literal>NKPDE</literal>,
+ divide the desired address space size (in megabytes) by four,
+ then subtract one for UP and two for SMP.</para>
+
+ <para>To achieve the second goal, you need to compute the
+ correct load address: simply subtract the address space size
+ (in bytes) from 0x100100000; the result is 0xc0100000 for a 1
+ GB address space. Set <symbol>LOAD_ADDRESS</symbol> in
+ <filename>src/sys/i386/conf/Makefile.i386</filename> to that
+ value; then set the location counter in the beginning of the
+ section listing in
+ <filename>src/sys/i386/conf/kernel.script</filename> to the
+ same value, as follows:</para>
+
+ <programlisting>OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
+OUTPUT_ARCH(i386)
+ENTRY(btext)
+SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/obj/elf/home/src/tmp/usr/i386-unknown-freebsdelf/lib);
+SECTIONS
+{
+ /* Read-only sections, merged into text segment: */
+ . = 0xc0100000 + SIZEOF_HEADERS;
+ .interp : { *(.interp) }</programlisting>
+
+ <para>Then reconfig and rebuild your kernel. You will
+ probably have problems with &man.ps.1; &man.top.1; and the
+ like; <command>make world</command> should take care of it
+ (or a manual rebuild of <filename>libkvm</filename>,
+ &man.ps.1; and &man.top.1; after copying the patched
+ <filename>pmap.h</filename> to
+ <filename>/usr/include/vm/</filename>.</para>
+
+ <para>NOTE: the size of the kernel address space must be a
+ multiple of four megabytes.</para>
+
+ <para>[&a.dg; adds: <emphasis>I think the kernel address space
+ needs to be a power of two, but I am not certain about that. The
+ old(er) boot code used to monkey with the high order address bits
+ and I think expected at least 256MB
+ granularity.]</emphasis></para>
+ </answer>
+ </qandaentry>
+ </qandaset>
+ </chapter>
+
+ <chapter id="acknowledgments">
+ <title>Ευχαριστίες</title>
+
+ <para>This innocent little Frequently Asked Questions document has
+ been written, rewritten, edited, folded, spindled, mutilated,
+ eviscerated, contemplated, discombobulated, cogitated,
+ regurgitated, rebuilt, castigated, and reinvigorated over the
+ last decade, by a cast of hundreds if not thousands.
+ Repeatedly.</para>
+
+ <para>We wish to thank every one of the people responsible, and we
+ encourage you to to <ulink
+ url="&url.articles.contributing;/article.html">join them</ulink>
+ in making this FAQ even better.</para>
+
+ </chapter>
+
+ &bibliography;
+</book>