diff options
Diffstat (limited to 'el_GR.ISO8859-7/books/faq')
-rw-r--r-- | el_GR.ISO8859-7/books/faq/Makefile | 32 | ||||
-rw-r--r-- | el_GR.ISO8859-7/books/faq/book.sgml | 11796 |
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; για τις αρχιτεκτονικές 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></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 >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>>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>>4T</entry> + </row> + + <row> + <entry>8K</entry> + + <entry>>32G</entry> + + <entry>32T-1</entry> + </row> + + <row> + <entry>16K</entry> + + <entry>>128G</entry> + + <entry>32T-1</entry> + </row> + + <row> + <entry>32K</entry> + + <entry>>512G</entry> + + <entry>64T-1</entry> + </row> + + <row> + <entry>64K</entry> + + <entry>>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 < /dev/ttyv0 > /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 < /dev/ttyv0 > /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 & 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 + µsoft; 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 >= 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 -> 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 MB + (<option>options VM_KMEM_SIZE_MAX=419430400</option>). + 400 MB appears to be sufficient for machines with up to + 6 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 <user@domain.net>... Local configuration error + + How can I solve this problem? + + You have asked mail to the domain (e.g., domain.net) to be + forwarded to a specific host (in this case, relay.domain.net) + by using an MX record, but the relay machine does not recognize + itself as domain.net. Add domain.net to /etc/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—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 -> 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 -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 > <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:\></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 > /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 — 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" >> /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: <PNP0303> + 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>…</entry> + <entry>…</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' < <replaceable>dos-text-file</replaceable> > <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; 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; (<= + 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> <userinput>flags psm0 0x100</userinput> +UserConfig> <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> <userinput>flags psm0 0x04</userinput> +UserConfig> <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; 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 && make && + 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 & 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>"</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= >>Makefile</userinput> +&prompt.user; <userinput>echo CFLAGS+=-g >>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 & 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 &C1 &D3 &K3 &Q6 S0=1 &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&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&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><@></literal> sign for the pn + capability not work?</para></question><answer> + + <para>The <literal><@></literal> sign in the phone + number capability tells tip to look in + <filename>/etc/phones</filename> for a phone number. But + the <literal><@></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><\@></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 <local-file> [<remote-file>] +~t <remote-file> [<local-file>]</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ˆ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 <wpaul@skynet.ctr.columbia.edu> +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>> Fatal trap 12: page fault while in kernel mode +> fault virtual address = 0x40 +> fault code = supervisor read, page not present +> instruction pointer = 0x8:0xf014a7e5 + ^^^^^^^^^^ +> stack pointer = 0x10:0xf4ed6f24 +> frame pointer = 0x10:0xf4ed6f28 +> code segment = base 0x0, limit 0xfffff, type 0x1b +> = DPL 0, pres 1, def32 1, gran 1 +> processor eflags = interrupt enabled, resume, IOPL = 0 +> current process = 80 (mount) +> interrupt mask = +> trap number = 12 +> 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> |